chriss@midas.UUCP (Chris Shirkoff) (03/19/85)
Just received my copy of the Roland Users Group (vol 3, No. 1 available by writing to RolandCorp US, 7200 Dominion Circle, Los Angeles, CA 90040) As usual, it has some useful information along with the obligatory marketing hype. Of interest to probably all MIDI users was the detailed description of MIDI. -- but first, one last comment on the subject of interfaces: MIDI is a current- loop interface with opto-isolators used in all the implementations I am familiar with. I saw a posting recently on net.micro.mac stating that the transfer rate for MIDI was 32000 baud. Not so -- I have seen it mentioned enough times in KEYBOARD and other sources -- yes folks, it's 31,250 bits per second. Now for the good stuff: (paraphrasing Roland, of course) GENERAL Any group of eight bits that starts with 1 is a "what to do" byte. In MIDI this is called status since it tells the sythesizer what it should be doing currently. A byte that begins with 0 is used by the synthesizer as data. It tells "how much" of the current status to do. If we send a status byte that says a key has been pressed, we follow that with information that tells which key and how fast. That is the data. The simple act of pushing a key will require three bytes: 1. The status byte to say that a note is being played; 2. The first data byte to say which note it is; 3. The second data byte to say how hard the key was hit. (if your synth doesn't have a velocity sensitive keyboard, default values are used for note-on and note-off velocity) SUMMARY OF MIDI STATUS BYTES Status No. of Data Description D7 to D0 Bytes -------- ----------- ------------------------------------ Channel Voice Messages ---------------------- 1000nnnn 2 Note-off event 1001nnnn 2 Note-on event (velocity=0: note off) 1010nnnn 2 Polyphonic key pressure/aftertouch 1011nnnn 2 Control change 1100nnnn 1 Program change 1101nnnn 1 Channel pressure/aftertouch 1110nnnn 2 Pitch wheel change Channel Mode Messages --------------------- 1011nnnn 2 Selects channel mode System Messages --------------- 11110000 **** System exclusive 11110sss 0 to 2 System common 11111ttt 0 System real time Notes: nnnn: N-1, where N = channel number (i.e., 0000 = channel 1; 0001 = channel 2 ... 1111 = channel 16.) ****: 0iiiiiii, data, ... , EOX iiii: Identification sss: 1 to 7 ttt: 1 to 7 Channel Voice Messages ---------------------- Status Data Bytes Description -------- ---------- ------------------------------------ 1000nnnn 0kkkkkkk Note off 0vvvvvvv vvvvvvv: note-off velocity 1001nnnn 0kkkkkkk Note on 0vvvvvvv vvvvvvv <> 0: velocity vvvvvvv = 0: note off 1010nnnn 0kkkkkkk Polyphonic key pressure (aftertouch) 0vvvvvvv vvvvvvv: pressure value 1011nnnn 0ccccccc Control change 0vvvvvvv ccccccc: control number (0 to 121) vvvvvvv: control value ccccccc = 122 through 127: reserved. 1100nnnn 0ppppppp Program change ppppppp: program number (0 to 127) 1101nnnn 0vvvvvvv Channel pressure (aftertouch) vvvvvvv: pressure value 1110nnnn 0vvvvvvv Pitch wheel change LSB 0vvvvvvv Pitch wheel change MSB --------------------------------------------------------------------------- Stay tuned for further updates. ________________________________________________________________________________ Chris Shirkoff USENET : ...!tektronix!midas!chriss Tektronix, Inc. CSnet : chriss.midas.tektronix PO Box 9600 MS 94-442 Beaverton, Oregon 97075 Tel : (503) 629-1157 -- --------------------------------------- UUCP: tektronix!midas!chriss USMAIL: Chris Shirkoff Tektronix, Inc., PO Box 4600 MS 94-442 Beaverton, Oregon 97075