MIDI Packet Master © 1993 WareSoft All rights reserved by Antonio J. Pomar Rosselló DISTRIBUTION This program is FreeWare. The program can be freely distributed provided that all the associated files are distributed with the program itself. Neither the program nor their associated files must be modified in any way. The complete distribution package can be compressed with LHA, LHarc or similar for distribution convenience. No charge must be made for use or distribution of this package. The complete English distribution package contains: MPMaster Executable program. MPMaster.DOC This file. MPMaster.HISTORY History of versions released since v1.0. MPMaster.SCHEME Electronic scheme of a very simple MIDI interface. This software is provided 'AS IS' without warranty of any kind, either expressed or implied. By using this package you agree to accept the entire risk as to the quality and performance of the program and of the MIDI interface described in MPMAster.SCHEME. All trademarks and Copyrights of products mentioned in this document are acknowledged by the author. As you can see, within the package there is an IFF screen that shows the scheme of a very simple MIDI interface that you can build to use with your computer. This interface was developed originally 6 years ago for a sequencer programmed in assembler for my Sinclair Spectrum +3. This circuit is so small that can be placed inside the case of the DB-25 connector (the Spectrum version of the interface fitted inside a DB-9 case). Is strictly prohibited the use of this circuit for commercial purposes, that means that the interface must be built for personal use only. REQUIREMENTS This program needs WorkBench 2.04 (version 37) or higher to run. Eventually you will need a MIDI interface and one or more MIDI devices to connect with the computer. INTRODUCTION This program is called MIDI Packet Master (MPMaster for short) and its main purpose is to transmit/receive samples between an Amiga computer an a MIDI device that supports this kind of transference (originally programmed for use with a Yamaha SY85 synthesizer). MIDI STANDARD The MIDI Sample Dump Standard splits the sample in small packets (127 bytes) that are transmitted sequentially to the destination MIDI device. This slows down the transference but allows error correction without repeating the whole sample. The main characteristics of this standard are: - Maximum sample size: 2 million sample units - Sample resolution: 8, 12 or 16 bits - Any MIDI channel can be used (1 to 16). - Transmission of loop parameters. - Control over placing of sample over the keyboard (period). Actually I don't know how works the 'Period' parameter, and the SY85 manual is not very explicit about the subject. If you know how it works please send me the information for a better implementation of the standard in the program. Consult the user's manual of your MIDI equipment for details about implementation and use of MIDI Sample Dump Standard. THE STANDARD IN THE PROGRAM The program can transmit and receive samples via MIDI. The main characteristics are: Reception: - Reception channel selectable (1-16) - Any sample resolution from 8 to 21 bits. - The program only saves in RAW 8 bits format. - Display all characteristics of sample received. - Detect receive errors, but don't support error retrieval yet. - Reception can be aborted. Transmission: - Transmission channel selectable (1-16), independent of receive channel. - Manual adjustment of loop parameters (start, end and type). - Sample is transmitted always in 8 bits format. - Transmission can be aborted. The implementation of the standard in the program is very basic, due to the limited information that I have about this standard. USE OF PROGRAM The program must be launched from WorkBench, because of the options saved inside the program's icon. If you run it from SHELL any of those options will be loaded. Anyway, the program will detach itself from the SHELL window and will run with the internal default values. Any hardware resource used by the program is allocated through the OS, that means, 'legally'. Be careful about multi-tasking with programs that access to the hardware directly, like the Dr T's KCS sequencer, because can interfere the use of this hardware. Usually this turns crazy the MIDI device connected with the computer. Anyway this case is not very usual. Even not 'professional' programs like Protracker 2.3 allocates correctly the serial hardware. Any kind of problem while starting the program will be reported with a requester and then the program will exit. The ToolTypes that can be placed in the icon are: WB_REQUESTER With this the program will open the filerequester in the WorkBench. PATTERN= Here we can put a pattern for the filerequester. DIR= This is the default path where will be opened the filerequester. FREC= Sets de default play speed for RAW samples. MAXFREC= Sets the maximum play speed allowed. Initially is 28867 but this may change in future chip sets. The WB_REQUESTER option is suitable for filerequesters that are AppWindows, that is, icons can be dropped inside the filerequester. PROGRAM'S SCREEN The program's screen is divided in 4 main parts: TRANSMISSION: Here we can control the parameters transmitted to the MIDI device. The gadgets are: Select.- Open the filerequester for select a RAW or IFF sample for transmission. When selected the sample all other gadgets will be set at the proper values. Frequency.- This is the playing speed of sample when we click over the 'Play' gadget. Waveform.- This must set the number assigned to the sample inside of the MIDI device. In the SY85 this sets the WAVEFORM where the sample will be placed. Loop start, Loop end, Loop Type.- This is the loop margin and type. Transmit.- Sends the sample currently selected. The sample is transmitted directly from disk. That means that you are not limited by the memory you have. X.- Clears the TRANSMISSION zone. RECEPTION: Here we can see the details about the sample received. The 3 gadgets are: Receive.- The program waits for a sample to receive. Can de aborted with the stop gadget or with the space bar. The sample is placed in memory, so here you are limited to the amount of memory available in one continuous block. Save sample.- If a sample have been received you can save it in RAW8 format. X.- Clears the reception zone and frees the memory allocated for sample. CHANNELS: Here you can set the IN/OUT channels. The 'omni' receive channels means that all input channels will be read. LOWER ZONE: This is the message zone. There are two gadgets that allows to play the sample selected. MENUS AND KEYBOARD All gadgets with an underlined character means that pressing that character on the keyboard is equal to press the gadget itself. The space bar is equivalent to the STOP!! gadget. The HELP key will show the 'About' requester and the 'Esc' key will quit the program. With the TAB key you can move from one Integer gadget to the next, and Shift+TAB will move to the previous Integer gadget. In the menu you can find the 'About...' and 'Quit' options, that don't have equivalent gadget. TECHNICAL DATA Program written in assembler and accessing 'legally' to the hardware. Is stable and allows complete multi-tasking, even when transmitting/receiving. Programmed in an Amiga 500 Plus with 2 Meg of RAM, 3 disk drives and Devpac 3.02 assembler. This is my first program that does multi-task and the second that I write in assembler. Initially developed for use with a friend's Yamaha SY85 synthesizer. FUTURE IMPROVEMENTS These are the improvements that I would like to do: - Transmit/receive simultaneously. - Receive direct to hard disk, avoiding the memory limitations. - AREXX port for control of other programs from MPMaster or vice versa. - Option for change the transmit/receive speed (currently 31250) for transfers between computers or with high speed MIDI interfaces. - Labels for each IN/OUT channel. This is for better using in MIDI environments with lots of different devices, each one using one MIDI channel. - Use of powerpacker.library for compress/decompress samples. - Allocate of serial hardware only during transmit/receive. - Support for different sample formats (8 or more bits). - Support of Fibonacci compression in reading of IFF samples. - Save icons with the sample containing the received parameters. - On line help (if anyone thinks that the program is difficult to use). - Separate filerequesters for Load and Save, storing the last path used in each one. - Batch sending of samples from scripts. - Optional use of error retrieval messages. - Graphical edit of loop margin. - Multilingual support with locale.library. Anyway I don't know if I will implement these improvements in the program, depending of the information that I can get about MIDI standard and system libraries. Actually I don't use this program because I am not a musician nor I have a synthesizer. ACKNOWLEDGMENTS I wish to thank to: - Fco Javier Cocaña Galán, Leonardo Cocaña Galán and Juan A. Estela Valín for their friendship and suggestions. - Commodore-Amiga Inc for create the very best computer in the world. - Motorola for their powerful and flexible microprocessors. - Nico François for create the wonderful reqtools.library. - IBM and Atari for create so bad computers, making very easy my choosing for the Amiga. CONTACTS If you have some kind of information about the MIDI standard, different sample formats or any other interesting information related with the program then please send it to me to the address below. Anyway, if you use the program please let me know, because I would like to know if anyone is using it and in what MIDI devices the program works well, or not so well. For sending suggestions, bugs, information interchange, etc., contact me at the following address: Antonio J. Pomar Rosselló C/ Alférez Cerdá nº 13-bajos Palma de Mallorca 07014 Baleares (Spain) Palma de Mallorca (Palma of Majorca) 24-November-1993 NOTE: my knowledge of English is VERY limited, and this text is a good sample of this fact. Moreover, this DOC was wrote, in a hurry, based in the Spanish version. If you know Spanish, I recommend you to read the Spanish version of this DOC. Its much more detailed and accurate.