MIDI is shareware. This means that you may copy it and give the copies to anyone you want. It also means that you are requested to send a contribution if you, or anyone you give it to, uses it. If you give MIDI to a friend, be sure you give him/her this text file with the program. Remember - if you're using it, then it is obviously worth something to you, and a contribution should be made. Eddy Reynolds 11214 Olde Mint House Lane Tomball, Texas 77375 If you have any comments or suggestions I'm EDDYR on PAN and BDQ855 on the Source. Oh, and how much? Whatever you think is appropriate. And we thank you for your support... MIDI Note: In order to write to the screen as fast as possible, MIDI writes data directly to the screen memory. This works fine with monochrome and color display adapters in all Compaq & compatible computers except the old IBM CGA color card. If you have one of these, the screen will "snow" badly. Sorry - I can only suggest upgrading to an EGA, VGA, or another brand of CGA card. Except for the Real Time Commands page in Send Mode, MIDI uses the hex numbering system. All midi data displayed on the screen is in hex, and all midi data entered at the keyboard must be done in hex. Most information in synth manuals about sys-ex messages is given in hex but be careful, SOME of it is not. At the end of this file is a conversion chart for your convenience. A memory resident program by Borland International called "Sidekick" has a calculator that converts numbers from decimal to hex or binary. Be sure to note the warnings for it's use in the following information about MIDI. MONITOR MODE Monitor Mode is used to look at the midi data coming from an instrument. The Mask Bytes option enables you to have the program ignore and not display bytes you don't want to see. To remove or enter a mask, press the "?" key - you do not have to press Shift when doing this. The arrow keys can be used to move around in the mask display area. Delete a mask by pressing "X" when the cursor is at the desired byte. You can mask up to five different bytes. When the masked byte is received, it is not displayed, and all following data bytes are also masked. When the next status byte is received, if it is not masked, it and it's associated data bytes will be displayed. Pressing "E" or "8" is a shorthand way of entering "FE" or "F8". If you make a mistake in entering the first digit of the byte, the Backspace key can be used to start again. If the mistake is made on the second digit, you will have to press the "?" key, arrow over to the byte, and then reenter it. To clear all masks, press "C". To make the display of data more readable, any byte higher than 7F is displayed in reverse video (to identify it as a status byte), and 2 spaces are inserted before it. Pressing "L" will display a list of MIDI status bytes and what they mean. The "K" key clears the screen and also clears the history buffer. Pressing "H" calls up the history buffer, which holds 30,000 bytes max. After the buffer shows 30,000, it is still being updated - so it will always contain the last 30K received. The History Buffer can be written to disk as an ASCII file which can then be printed. Don't call up any memory resident programs like Sidekick while in the monitor screen. If you need to do so, press "L" to call up the MIDI list, or "H" for the history buffer display, and THEN call up Sidekick. SEND MODE Send Mode is used to find out how equipment will respond to various midi data. The loop repeat can be used to constantly send a small sequence for trouble shooting and testing. Use spaces for delays. You can enter up to two lines of data. The "G" key retypes the last line(s) that were entered. The "U" key allows you to send a "dump request" and then view the response in Monitor Mode. Just type in the request, complete with F0 at the beginning and F7 at the end, and then press "U". The request will be sent and you will be immediately put in Monitor Mode to view the response, with FE and F8 masked. Of course the response can then be viewed in the history buffer and printed if desired. Some synths will respond to a dump request without the F7 at the end. It takes two hex characters to make a complete byte. If an odd number of hex characters is entered, the last single character won't be sent. If you press "U", the entry area will be blanked and you won't be put in Monitor Mode. If this happens, press "G" to retype the entry, correct it, and then try again. Don't call up any memory resident programs while in this screen either. Press "L" first. The Real Time Commands screen has more options for sending data, including MIDI clock and associated commands. The only time the MPU is allowed to send MIDI clock bytes is when you are in this screen. PATCH MODE Patch Mode consists of several subsections for dealing with saving and transmitting bulk patch or sequence data that is in the standard "System Exclusive" format. When you first enter Patch Mode the screen shows an alphabetical listing of all the files on the disk or current subdirectory. The maximum number of files that can be displayed is 114. If there are more, they will not be displayed and a message will appear to inform you of this condition. As files are added, deleted, or renamed, the directory will be updated. You will notice that the name of this program (MIDI.EXE) is not displayed. This is done on purpose to save space for voice bank listings. DO NOT use this name for any bank names. Memory resident programs can be called up when in Patch Mode except when receiving or transmitting data. The "Receive" option will save System Exclusive dumps from midi instruments. When you press "R", you are given the choice of initiating the dump from the instrument or sending a "dump request". Some common dump requests are listed on the screen along with instructions for entering the request. If you elect not to send a dump request, the computer is immediately put in sys-ex receive mode and is waiting for data. As data comes in, small musical notes will appear between the braces in the upper left portion of the screen. When the notes are gone, the "W" key should be pressed to write the data to the disk. This is a separate operation so that separate bulk dumps from one or more instruments can be saved to one file. Just keep initiating bulk dumps until you are done, then press the "W" key. The buffer in memory that holds the data before writing to disk can hold 131,070 bytes. A switch in the SPX-90 has to be changed which makes the thru jack an out jack in order to use the special SPX-90 dump request. The "Transmit" option transmits the system exclusive files back to the instruments. You have a "block-at-a-time" choice here in case you have saved several instruments to one file and need time between each "send" to connect the proper instrument to the computer. If the instruments are all different, they can be fed the file non stop. Each instrument will respond only to it's particular sys-ex message. The "Rename" and "Delete" options are self explanatory. Delete does not ask if you are sure before deleting so be careful. The "File Size" command lists sizes of sys-ex dumps of various instruments. This is for checking data integrity after a patch dump is received. The "Echo ->" toggle turns the "thru" function of the midi interface on or off for the patch mode only. Whenever you enter this screen, it is initially turned off. Enjoy !! NUMBER CONVERSION ~~~~~~~~~~~~~~~~~ ****** Data Bytes ****** ~~~~ ~~~~~ HEX DECIMAL BINARY HEX DECIMAL BINARY HEX DECIMAL BINARY ~~~ ~~~~~~~ ~~~~~~ ~~~ ~~~~~~~ ~~~~~~ ~~~ ~~~~~~~ ~~~~~~ 0 0 00000000 2B 43 00101011 56 86 01010110 1 1 00000001 2C 44 00101100 57 87 01010111 2 2 00000010 2D 45 00101101 58 88 01011000 3 3 00000011 2E 46 00101110 59 89 01011001 4 4 00000100 2F 47 00101111 5A 90 01011010 5 5 00000101 30 48 00110000 5B 91 01011011 6 6 00000110 31 49 00110001 5C 92 01011100 7 7 00000111 32 50 00110010 5D 93 01011101 8 8 00001000 33 51 00110011 5E 94 01011110 9 9 00001001 34 52 00110100 5F 95 01011111 A 10 00001010 35 53 00110101 60 96 01100000 B 11 00001011 36 54 00110110 61 97 01100001 C 12 00001100 37 55 00110111 62 98 01100010 D 13 00001101 38 56 00111000 63 99 01100011 E 14 00001110 39 57 00111001 64 100 01100100 F 15 00001111 3A 58 00111010 65 101 01100101 10 16 00010000 3B 59 00111011 66 102 01100110 11 17 00010001 3C 60 00111100 67 103 01100111 12 18 00010010 3D 61 00111101 68 104 01101000 13 19 00010011 3E 62 00111110 69 105 01101001 14 20 00010100 3F 63 00111111 6A 106 01101010 15 21 00010101 40 64 01000000 6B 107 01101011 16 22 00010110 41 65 01000001 6C 108 01101100 17 23 00010111 42 66 01000010 6D 109 01101101 18 24 00011000 43 67 01000011 6E 110 01101110 19 25 00011001 44 68 01000100 6F 111 01101111 1A 26 00011010 45 69 01000101 70 112 01110000 1B 27 00011011 46 70 01000110 71 113 01110001 1C 28 00011100 47 71 01000111 72 114 01110010 1D 29 00011101 48 72 01001000 73 115 01110011 1E 30 00011110 49 73 01001001 74 116 01110100 1F 31 00011111 4A 74 01001010 75 117 01110101 20 32 00100000 4B 75 01001011 76 118 01110110 21 33 00100001 4C 76 01001100 77 119 01110111 22 34 00100010 4D 77 01001101 78 120 01111000 23 35 00100011 4E 78 01001110 79 121 01111001 24 36 00100100 4F 79 01001111 7A 122 01111010 25 37 00100101 50 80 01010000 7B 123 01111011 26 38 00100110 51 81 01010001 7C 124 01111100 27 39 00100111 52 82 01010010 7D 125 01111101 28 40 00101000 53 83 01010011 7E 126 01111110 29 41 00101001 54 84 01010100 7F 127 01111111 2A 42 00101010 55 85 01010101 ****** Status Bytes ****** ~~~~~~ ~~~~~ HEX DECIMAL BINARY HEX DECIMAL BINARY HEX DECIMAL BINARY ~~~ ~~~~~~~ ~~~~~~ ~~~ ~~~~~~~ ~~~~~~ ~~~ ~~~~~~~ ~~~~~~ 80 128 10000000 AB 171 10101011 D6 214 11010110 81 129 10000001 AC 172 10101100 D7 215 11010111 82 130 10000010 AD 173 10101101 D8 216 11011000 83 131 10000011 AE 174 10101110 D9 217 11011001 84 132 10000100 AF 175 10101111 DA 218 11011010 85 133 10000101 B0 176 10110000 DB 219 11011011 86 134 10000110 B1 177 10110001 DC 220 11011100 87 135 10000111 B2 178 10110010 DD 221 11011101 88 136 10001000 B3 179 10110011 DE 222 11011110 89 137 10001001 B4 180 10110100 DF 223 11011111 8A 138 10001010 B5 181 10110101 E0 224 11100000 8B 139 10001011 B6 182 10110110 E1 225 11100001 8C 140 10001100 B7 183 10110111 E2 226 11100010 8D 141 10001101 B8 184 10111000 E3 227 11100011 8E 142 10001110 B9 185 10111001 E4 228 11100100 8F 143 10001111 BA 186 10111010 E5 229 11100101 90 144 10010000 BB 187 10111011 E6 230 11100110 91 145 10010001 BC 188 10111100 E7 231 11100111 92 146 10010010 BD 189 10111101 E8 232 11101000 93 147 10010011 BE 190 10111110 E9 233 11101001 94 148 10010100 BF 191 10111111 EA 234 11101010 95 149 10010101 C0 192 11000000 EB 235 11101011 96 150 10010110 C1 193 11000001 EC 236 11101100 97 151 10010111 C2 194 11000010 ED 237 11101101 98 152 10011000 C3 195 11000011 EE 238 11101110 99 153 10011001 C4 196 11000100 EF 239 11101111 9A 154 10011010 C5 197 11000101 F0 240 11110000 9B 155 10011011 C6 198 11000110 F1 241 11110001 9C 156 10011100 C7 199 11000111 F2 242 11110010 9D 157 10011101 C8 200 11001000 F3 243 11110011 9E 158 10011110 C9 201 11001001 F4 244 11110100 9F 159 10011111 CA 202 11001010 F5 245 11110101 A0 160 10100000 CB 203 11001011 F6 246 11110110 A1 161 10100001 CC 204 11001100 F7 247 11110111 A2 162 10100010 CD 205 11001101 F8 248 11111000 A3 163 10100011 CE 206 11001110 F9 249 11111001 A4 164 10100100 CF 207 11001111 FA 250 11111010 A5 165 10100101 D0 208 11010000 FB 251 11111011 A6 166 10100110 D1 209 11010001 FC 252 11111100 A7 167 10100111 D2 210 11010010 FD 253 11111101 A8 168 10101000 D3 211 11010011 FE 254 11111110 A9 169 10101001 D4 212 11010100 FF 255 11111111 AA 170 10101010 D5 213 11010101