home *** CD-ROM | disk | FTP | other *** search
/ MIDICraft's MIDINET CD-ROM / MIDICraft's MIDINET CD-ROM.iso / DOCS / MIDISPEC.ZIP / MIDISPEC.DOC next >
Encoding:
Text File  |  1994-12-09  |  28.0 KB  |  637 lines

  1. The official MIDI 1.0 specification is available from:
  2. IMA
  3. the International MIDI Association
  4. 11857 Hartsook St.
  5. North Holllywoood, CA  91607
  6. (818) 505-8964
  7.  
  8. The complete MIDI spec as developed by the Japanese manufacturers
  9. and adopted by the "World" at the Summer '85 NAMM show
  10. is available to IMA members ($40/yr) foor $30 non-members $35.
  11.  
  12. The sketchy hardware and byte definitions are free with membership.
  13.  
  14. The following is an expanded MIDI definition (sort of in-between
  15. IMA MIDI 1.0 and the new $35 booklet) entered into the public
  16. domain on USENET net.musi.synth by an altruistic musically 
  17. inclined engineer:
  18.  
  19. Bob McQueer
  20. 22 Bcy, 3151
  21.  
  22. All rites reversed.  Reprint what you like.
  23.  
  24.  
  25.                        The USENET MIDI Primer
  26.                             Bob McQueer
  27.  
  28. PURPOSE
  29.  
  30. It seems as though many people in the USENET community have an interest
  31. in the Musical Instrument Digital Interface (MIDI), but for one reason
  32. or another have only obtained word of mouth or fragmentary descriptions
  33. of the specification.  Basic questions such as "what's the baud rate?",
  34. "is it EIA?" and the like seem to keep surfacing in about half a dozen
  35. newsgroups.  This article is an attempt to provide the basic data to
  36. the readers of the net.
  37.  
  38. REFERENCE
  39.  
  40. The major written reference for this article is version 1.0 of the MIDI
  41. specification, published by the International MIDI Association, copyright
  42. 1983.  There exists an expanded document.  This document, which I have not
  43. seen, is simply an expansion of the 1.0 spec. to contain more explanatory
  44. material, and fill in some areas of hazy explanation.  There are no
  45. radical departures from 1.0 in it.  I have also heard of a "2.0" spec.,
  46. but the IMA claims no such animal exists.  In any event, backwards
  47. compatibility with the information I am presenting here should be
  48. maintained.
  49.  
  50. CONVENTIONS
  51.  
  52. I will give constants in C syntax, ie. 0x for hexadecimal.  If I
  53. refer to bits by number, I number them starting with 0 for the low
  54. order (1's place) bit.  The following notation:
  55.  
  56. >>
  57.  
  58. text
  59.  
  60. <<
  61.  
  62. will be used to delimit commentary which is not part of the "bare-
  63. bones" specification.  A sentence or paragraph marked with a question
  64. mark in column 1 is a point I would kind of like to hear something
  65. about myself.
  66.  
  67. OK, let's give it a shot.
  68.  
  69. PHYSICAL CONNECTOR SPECIFICATION
  70.  
  71. The standard connectors used for MIDI are 5 pin DIN.  Separate sockets
  72. are used for input and output, clearly marked on a given device.  The
  73. spec. gives 50 feet as the maximum cable length.  Cables are to be
  74. shielded twisted pair, with the shield connecting pin 2 at both ends.
  75. The pair is pins 4 and 5, pins 1 and 3 being unconnected:
  76.  
  77.                               2
  78.                           5       4
  79.                         3           1
  80.  
  81.  
  82. A device may also be equipped with a "MIDI-THRU" socket which is used
  83. to pass the input of one device directly to output.
  84.  
  85. >>
  86.         I think this arrangement shows some of the original conception
  87.         of MIDI more as a way of allowing keyboardists to control
  88.         multiple boxes than an instrument to computer interface.  The
  89.         "daisy-chain" arrangement probably has advantages for a performing
  90.         musician who wants to play "stacked" synthesizers for a desired
  91.         sound, and has to be able to set things up on the road.
  92. <<
  93.  
  94. ELECTRICAL SPECIFICATION
  95.  
  96. Asynchronous serial interface.  The baud rate is 31.25 Kbaud (+/- 1%).
  97. There are 8 data bits, with 1 start bit and 1 stop bit, for 320 microseconds
  98. per serial byte.
  99.  
  100. MIDI is current loop, 5 mA.  Logic 0 is current ON.  The specification
  101. states that input is to be opto-isolated, and points out that Sharp
  102. PC-900 and HP 6N138 optoisolators are satisfactory devices.  Rise and
  103. fall time for the optoisolator should be less than 2 microseconds.
  104.  
  105. The specification shows a little circuit diagram for the connections
  106. to a UART.  I am not going to reproduce it here.  There's not much
  107. to it - I think the important thing it shows is +5 volt connection
  108. to pi 4 of the MIDI out with pin 5 going to the UART, through 220
  109. ohm load resisors. It also shows that you're supposed to connect
  110. to the "in" side of the UART through an optoisolator, and to the
  111. MIDI-THRU on the UART side of the isolator.
  112.  
  113.         
  114. >>
  115.         I'm not much of a hardware person, and don't really know what
  116.         I'm talking about in paragraphs like the three above.  I DO
  117.         recognize that this is a "non-standard" specification, which
  118.         won't work over serial ports intended for anything else.  People
  119.         who do know about such things seem to either have giggling
  120.         or gagging fits when they see it, depending on their dispos-
  121.         itions, saying things like "I haven't seen current loop since
  122.         the days of the old teletypes".  I also know the fast 31.25
  123.         Kbaud pushes the edge for clocking commonly available UART's.
  124. <<
  125.  
  126. DATA FORMAT
  127.  
  128. For standard MIDI messages, there is a clear concept that one device
  129. is a "transmitter" or "master", and the other a "receiver" or "slave".
  130. Messages take the form of opcode bytes, followed by data bytes.
  131. Opcode bytes are commonly called "status" bytes, so we shall use
  132. this term.
  133.  
  134. >>
  135.         very similar to handling a terminal via escape sequences.  There
  136.         aren't ACK's or other handshaking mechanisms in the protocol.
  137.  
  138. <<
  139.  
  140. Status bytes are marked by bit 7 being 1.  All data bytes must
  141. contain a 0 in bit 7, and thus lie in the range 0 - 127.
  142.  
  143. MIDI has a logical channel concept.  There are 16 logical channels,
  144. encoded into bits 0 - 3 of the status bytes of messages for
  145. which a channel number is significant.  Since bit 7 is taken over
  146. for marking the status byte, this leaves 3 opcode bits for message
  147. types with a logical channel.  7 of the possible 8 opcodes are
  148. used in this fashion,  reserving the status bytes containing all
  149. 1's in the high nibble for "system" messages which don't have a
  150. channel number.  The low order nibble in these remaining messages
  151. is  eelly ffuther  pcodee
  152.  
  153. >>
  154.         II you are  nterested in rrceiving MIDI input, look over the
  155.         SYSTEM messages even if you wish to ignore them.  Especially the
  156.         "system exclusive" and "real time" messages.  The real time
  157.         messages may be legally inserted in the middle of other data,
  158.         and you should be aware of them, even though many devices won't
  159.         use them.
  160. <<
  161.  
  162. VOICE MESSAGES
  163.  
  164. I will cover the message with channel numbers first.  The opcode determines
  165. the number of data bytes for a single message (see "running status byte",
  166. below).  The specification divides these into "voice" and "mode" messages.
  167. The "mode" messages are for control of the logical channels, and the control
  168. opcodes are piggybacked onto the data bytes for the "parameter" message.  I
  169. will go into this after describing the "voice messages".  These messages are:
  170.  
  171. status byte   meaning        data bytes
  172.  
  173. 0x80-0x8f     note off       2 - 1 byte pitch, followed by 1 byte velocity
  174. 0x90-0x9f     note on        2 - 1 byte pitch, followed by 1 byte velocity
  175. 0xa0-0xaf     key pressure   2 - 1 byte pitch, 1 byte pressure (after-touch)
  176. 0xb0-0xbf     parameter      2 - 1 byte parameter number, 1 byte setting
  177. 0xc0-0xcf     program        1 byte program selected
  178. 0xd0-0xdf     chan. pressure 1 byte channel pressure (after-touch)
  179. 0xe0-0xef     pitch wheel    2 bytes giving a 14 bit value, least
  180.                                    significant 7 bits first
  181.  
  182. Many explanations are necessary here:
  183.  
  184. For all of these messages, a convention called the "running status
  185. byte" may be used.  If the transmitter wishes to send another message
  186. of the same type on the same channel, thus the same status byte, the
  187. status byte need not be resent.
  188.  
  189. Also, a "note on" message with a velocity of zero is to be synonymous
  190. with a "note off".  Combined with the previous feature, this is intended
  191. to allow long strings of notes to be sent without repeating status bytes.
  192.  
  193.  
  194. >>
  195.         From what I've seen, the "zero velocity note on" feature is very
  196.         heavily used.  My six-trak sends these, even though it sends
  197.         status bytes on every note anyway.  Roland stuff uses it.
  198. <<
  199.  
  200. The pitch bytes of notes are simply number of half-steps, with
  201. middle C = 60.
  202.  
  203. >>      
  204.         On keyboard synthesizers, this usually simply means which
  205.         physical key corresponds, since the patch selection will
  206.         change the actual pitch range of the keyboard.  Most keyboards
  207.         have one C key which is unmistakably in the middle of the
  208.         keyboard.  This is probably note 60.
  209. <<
  210.  
  211. The velocity bytes for velocity sensing keyboards are supposed
  212. to represent a logarithmic scale.  "advisable" in the words
  213. of the spec.  Non-velocity sensing devices are supposed to
  214. send velocity 64.
  215.  
  216. The pitch wheel value is an absolute setting, 0 - 0x3FFF.  The
  217. 1.0 spec. says that the increment is determined by the receiver.
  218. 0x2000 is to correspond to a centered pitch wheel (unmodified
  219. notes)
  220.  
  221. >>
  222.         I believe standard scale steps are one of the things discussed
  223.         in expansions.  The six-trak pitch wheel is up/down about a third.
  224.         I believe several makers have used this value, but I may be wrong.
  225.  
  226.         The "pressure" messages are for keyboards which sense the amount
  227.         of pressure placed on an already depressed key, as opposed to
  228.         velocity, which is how fast it is depressed or released.
  229.  
  230. ?       I'm not really certain of how "channel" pressure works.  Yamaha
  231.         is one maker that uses these messages, I know.
  232. <<
  233.  
  234. Now, about those parameter messages.
  235.  
  236. Instruments are so fundamentally different in the various controls
  237. they have that no attempt was made to define a standard set, like
  238. say 9 for "Filter Resonance".  Instead, it was simply assumed that
  239. these messages allow you to set "controller" dials, whose purposes
  240. are left to the given device, except as noted below.  The first data
  241. bytes correspond to these "controllers" as follows:
  242.  
  243. data byte
  244.  
  245. 0 - 31       continuous controllers 0 - 31, most significant byte
  246. 32 - 63      continuous controllers 0 - 31, least significant byte
  247. 64 - 95      on / off switches
  248.  
  249. 96 - 121     unspecified, reserved for future.
  250. 122 - 127    the "channel mode" messages I alluded to above.  See
  251.              below.
  252.  
  253. The second data byte contains the seven bit setting for the controller.
  254. The switches have data byte 0 = OFF, 127 = ON with 1 - 126 undefined.
  255. If a controller only needs seven bits of resolution, it is supposed to
  256. use the most significant byte.  If both are needed, the order is
  257. specified as most significant followed by least significant.  With a
  258. 14 bit controller, it is to be legal to send only the least significant
  259. byte if the most significant doesn't need to be changed.
  260.  
  261. >>
  262.         This may of, course, wind up stretched a bit by a given manufacturer.
  263.         The Six-Trak, for instance, uses only single byte values (LEFT
  264.         justified within the 7 bits at that), and recognizes >32 parameters
  265. <<
  266.  
  267. Controller number 1 IS standardized to be the modulation wheel.
  268.  
  269. ?       Are there any other standardizations which are being followed by most
  270.         manufacturers?
  271.  
  272. MODE MESSAGES
  273.  
  274. These are messages with status bytes 0xb0 through 0xbf, and leading data
  275. bytes 122 - 127.  In reality, these data bytes function as further
  276. opcode data for a group of messages which control the combination of
  277. voices and channels to be accepted by a receiver.
  278.  
  279. An important point is that there is an implicit "basic" channel over which
  280. a given device is to receive these messages.  The receiver is to ignore
  281. mode messages over any other channels, no matter what mode it might be in.
  282. The basic channel for a given device may be fixed or set in some manner
  283. outside the scope of the MIDI standard.
  284.  
  285. The meaning of the values 122 through 127 is as follows:
  286.  
  287. data byte                   second data byte
  288. 122       local control     0 = local control off, 127 = on
  289. 123       all notes off     0
  290. 124       omni mode off     0
  291. 125       omni mode on      0
  292. 126       monophonic mode   number of monophonic channels, or 0
  293.                             for a number equal to receivers voices
  294. 127       polyphonic mode   0
  295.  
  296. 124 - 127 also turn all notes off.
  297.  
  298. Local control refers to whether or not notes played on an instruments
  299. keyboard play on the instrument or not.  With local control off, the
  300. host is still supposed to be able to read input data if desired, as
  301. well as sending notes to the instrument.  Very much like "local echo"
  302. on a terminal, or "half duplex" vs. "full duplex".
  303.  
  304.  
  305. The mode setting messages control what channels / how many voices the
  306. receiver recognizes.  The "basic channel" must be kept in mind. "Omni"
  307. refers to the ability to receive voice messages on all channels.  "Mono"
  308. and "Poly" refer to whether multiple voices are allowed.  The rub is
  309. that the omni on/off state and the mono/poly state interact with each
  310. other.  We will go over each of the four possible settings, called "modes"
  311. and given numbers in the specification:
  312.  
  313. mode 1 - Omni on / Poly - voice messages received on all channels and
  314.          assigned polyphonically.  Basically, any notes it gets, it
  315.          plays, up to the number of voices it's capable of.
  316.  
  317. mode 2 - Omni on / Mono - monophonic instrument which will receive
  318.          notes to play in one voice on all channels.
  319.  
  320. mode 3 - Omni off / Poly - polyphonic instrument which will receive
  321.          voice messages on only the basic channel.
  322.  
  323. mode 4 - Omni off / Mono - A useful mode, but "mono" is a misnomer.
  324.          To operate in this mode a receiver is supposed to receive
  325.          one voice per channel.  The number channels recognized will be
  326.          given by the second data byte, or the maximum number of possible
  327.          voices if this byte is zero.  The set of channels thus defined
  328.          is a sequential set, starting with the basic channel.
  329.  
  330. The spec. states that a receiver may ignore any mode that it cannot
  331. honor, or switch to an alternate - "usually" mode 1.  Receivers are
  332. supposed to default to mode 1 on power up.  It is also stated that
  333. power up conditions are supposed to place a receiver in a state where
  334. it will only respond to note on / note off messages, requiring a
  335. setting of some sort to enable the other message types.
  336.  
  337. >>
  338.         I think this shows the desire to "daisy-chain" devices for
  339.         performance from a single master again.  We can set a series
  340.         of instruments to different basic channels, tie 'em together,
  341.         and let them pass through the stuff they're not supposed to
  342.         play to someone down the line.
  343.  
  344.         This suffers greatly from lack of acknowledgement concerning
  345.         modes and usable channels by a receiver.  You basically have
  346.         to know your device, what it can do, and what channels it can
  347.         do it on.
  348.  
  349.         I think most makers have used the "system exclusive" message
  350.         (see below) to handle channels in a more sophisticated manner,
  351.         as well as changing "basic channel" and enabling receipt of
  352.         different message types under host control rather than by
  353.         adjustment on the device alone.
  354.  
  355.         The "parameters" may also be usurped by a manufacturer for
  356.         mode control, since their purposes are undefined.
  357.  
  358.         
  359.         Another HUGE problem with the "daisy-chain" mental set of MIDI
  360.         is that most devices ALWAYS shovel whatever they play to their
  361.         MIDI outs, whether they got it from the keyboard or MIDI in.
  362.         This means that you have to cope with the instrument echoing
  363.         input back at you if you're trying to do an interactive session
  364.         with the synthesizer.  There is DRASTIC need for some MIDI flag
  365.         which specifically means that only locally generated data is to
  366.         go to MIDI out.  From device to device there are ways of coping
  367.         with this, none of them good.
  368. <<
  369.  
  370. SYSTEM MESSAGES
  371.  
  372. The status bytes 0x80 - 0x8f do not have channel numbers in the
  373. lower nibble.  These bytes are used as follows:
  374.  
  375. byte    purpose              data bytes
  376.  
  377. 0xf0    system exclusive     variable length
  378. 0xf1    undefined
  379. 0xf2    song position        2 - 14 bit value, least significant byte
  380.                                  first
  381. 0xf3    song select          1 - song number
  382. 0xf4    undefined
  383. 0xf5    undefined
  384. 0xf6    tune request         0
  385. 0xf7    EOX (terminator)     0
  386.  
  387. The status bytes 0xf8 - 0xff are the so-called "real-time" messages.
  388. I will discuss these after the accumulated notes concerning the
  389. first bunch.
  390.  
  391. Song position / song select are for control of sequencers.  The
  392. song position is in beats, which are to be interpreted as every
  393. 6 MIDI clock pulses.  These messages determine what is to be played
  394. upon receipt of a "start" real-time message (see below).
  395.  
  396. The "tune request" is a command to analog synthesizers to tune their
  397. oscillators.
  398.  
  399. The system exclusive message is intended for manufacturers to use
  400. to insert any specific messages they want to which apply to their
  401. own product.  The following data bytes are all to be "data" bytes,
  402. that is they are all to be in the range 0 - 127.  The system exclusive
  403. is to be terminated by the 0xf7 terminator byte.  The first data byte
  404. is also supposed to be a "manufacturer's id", assigned by a MIDI
  405. standards committee.  THE TERMINATOR BYTE IS OPTIONAL - a system
  406. exclusive may also be "terminated" by the status byte of the next
  407. message.
  408.  
  409. >>
  410.         Yamaha, in particular, caused problems by not sending terminator
  411.         bytes.  As I understand it, the DX-7 sends a system exclusive
  412.         at something like 80 msec. intervals when it has nothing better
  413.         to do, just so you know it's still there, I guess.  The messages
  414.         aren't explicitly terminated, so if you want to handle the
  415.         protocol (esp. in hardware), you should be aware that a DX-7
  416.  
  417.         will leave you in "waiting for EOX" state a lot, and be sending
  418.         data even when it isn't doing anything.  This is all word of
  419.         mouth, since I've never personally played with a DX-7.
  420. <<
  421.  
  422. some MIDI ID's:
  423.  
  424.         Sequential Circuits   1      Bon Tempi     0x20     Kawai     0x40
  425.         Big Briar             2      S.I.E.L.      0x21     Roland    0x41
  426.         Octave / Plateau      3                             Korg      0x42
  427.         Moog                  4      SyntheAxe     0x23     Yamaha    0x43
  428.         Passport Designs      5
  429.         Lexicon               6
  430.  
  431.     PAIA                  0x11
  432.     Simmons               0x12
  433.     Gentle Electric       0x13
  434.     Fairlight             0x14
  435.  
  436. >>
  437.         Note the USA / Europe / Japan grouping of codes.  Also note
  438.         that Sequential Circuits snarfed id number 1 - Sequential
  439.         Circuits was one of the earliest participators in MIDI, some
  440.         people claim its originator.
  441.  
  442.         Two large makers missing from the original lineup were Casio
  443.         and Oberheim.  I know Oberheim is on the bandwagon now, and
  444.         Casio also, I believe.  Oberheim had their own protocol previous
  445.         to MIDI, and when MIDI first came out they were reluctant to
  446. ?       go along with it.  I wonder what we'd be looking at if Oberheim
  447.         had pushed their ideas and made them the standard.  From what I
  448.         understand they thought THEIRS was better, and kind of sulked
  449.         for a while until the market forced them to go MIDI.
  450.  
  451. ?       Nobody seems to care much about these ID numbers.  I can only
  452.         imagine them becoming useful if additions to the standard message
  453.         set are placed into system exclusives, with the ID byte to let
  454.         you know what added protocol is being used.  Are any groups of
  455.         manufacturers considering consolidating their efforts in a
  456.         standard extension set via system exclusives?
  457. <<
  458.  
  459. REAL TIME MESSAGES.
  460.  
  461. This is the final group of status bytes, 0xf8 - 0xff.  These bytes
  462. are reserved for messages which are called "real-time" messages
  463. because they are allowed to be sent ANYPLACE.  This includes in
  464. between data bytes of other messages.  A receiver is supposed to
  465. be able to receive and process (or ignore) these messages and
  466. resume collection of the remaining data bytes for the message
  467. which was in progress.  Realtime messages do not affect the
  468. "running status byte" which might be in effect.
  469.  
  470.         
  471. ?       Do any devices REALLY insert these things in the middle of
  472.         other messages?
  473.  
  474.  
  475. All of these messages have no data bytes following (or they could
  476. get interrupted themselves, obviously).  The messages:
  477.  
  478. 0xf8   timing clock
  479. 0xf9   undefined
  480. 0xfa   start
  481. 0xfb   continue
  482. 0xfc   stop
  483. 0xfd   undefined
  484. 0xfe   active sensing
  485. 0xff   system reset
  486.  
  487. The timing clock message is to be sent at the rate of 24 clocks
  488. per quarter note, and is used to sync. devices, especially drum
  489. machines.
  490.  
  491. Start / continue / stop are for control of sequencers and drum
  492. machines.  The continue message causes a device to pick up at the
  493. next clock mark.
  494.  
  495. >>
  496.         These things are also designed for performance, allowing control
  497.         of sequencers and drum machines from a "master" unit which
  498.         sends the messages down the line when its buttons are pushed.
  499.  
  500.         I can't tell you much about the trials and tribulations of drum
  501.         machines.  Other folks can, I am sure.
  502. <<
  503.  
  504. The active sensing byte is to be sent every 300 ms. or more often,
  505. if it is used.  Its purpose is to implement a timeout mechanism
  506. for a receiver to revert to a default state.  A receiver is to
  507. operate normally if it never gets one of these, activating the
  508. timeout mechanism from the receipt of the first one.
  509.  
  510. >>
  511.         My impression is that active sensing is largely unused.
  512. <<
  513.  
  514. The system reset initializes to power up conditions.  The spec. says
  515. that it should be used "sparingly" and in particular not sent
  516. automatically on power up.
  517.  
  518. AND NOW, CLIMBING TO THE PULPIT ....
  519.  
  520. >> - from here on out.
  521.  
  522. There are many deficiencies with MIDI, but it IS a standard.  As such,
  523. it will have to be grappled with.
  524.  
  525. The electrical specification leaves me with only one question - WHY?
  526. What was wanted was a serial interface, and a perfectly good RS232
  527. specification was to be had.  WHY wasn't it used?  The baud rate is
  528. too fast to simply convert into something you can feed directly to
  529.  
  530. your serial port via fairly dumb hardware, also.  The "standard"
  531. baud rate step you would have to use would be 38.4 Kbaud which very
  532. few hardware interfaces accept.  The other alternative is to buffer
  533. messages and send them out a slower baud rate - in fact buffering
  534. of characters by some kind of I/O processor is very helpful.  Hence
  535. units like the MPU-401, which does a lot of other stuff, too of
  536. course.
  537.  
  538. The fast baud rate with MIDI was set for two reasons I believe:
  539.  
  540.         1) to allow daisy-chaining of a few devices with no noticeable
  541.                 end to end lag.
  542.  
  543.         2) to allow chords to be played by just sending all the notes down
  544.                 the pipe, the baud rate being fast enough that they will
  545.                 sound simultaneous.
  546.  
  547. It doesn't exactly work - I've heard gripes concerning end to end lag
  548. on three instrument chains.  And consider chords - at two bytes (running
  549. status byte being used) per note, there will be a ten character lag
  550. between the trailing edges of the first and last notes of a six note
  551. chord.  That's 3.2 ms., assumiEg no "dead air" between  haracctrss  It''
  552. still pretty ffst, buttoo laarg ccordd with voiies possesssng disttnctive
  553. attacc characteristics, you may hear separate note beginnings.
  554.  
  555. I think MIDI could have used some means of packetizing chords, or having
  556. transaction markers.  If a "chord" message were specified, you could easily
  557. break even on byte count with a few notes, given that we assume all notes
  558. of a chord at the same velocity.  Transaction markers might be useful in
  559. any case, although I don't know if it would be worth taking over the
  560. remaining system message space for them.  I would say yes.  I would
  561. see having "start" and "end" transaction bytes.  On receipt of a "start"
  562. a receiver buffers up but does not act on messages until receipt of the
  563. "end" byte.  You could then do chords by sending the notes ahead of time,
  564. and precisely timing the "end" marker.  Of course, the job of the hardware
  565. in the receiver has been complicated considerably.
  566.  
  567. The protocol is VERY keyboard oriented - take a look at the use of TWO
  568. of the opcodes in the limited opcode space for "pressure" messages,
  569. and the inability to specify semitones or glissando effects except
  570. through the pptchhwweee (which took  p yettANOTHER offthe  pcodess..
  571. AAl keeyoards I know of modify ALL playing notes when they receive
  572. pitch wheel data.  Also, you have to use a continuous stream of
  573. pitch wheel messages to effect a slide, the pitch wheel step isn't
  574. standardized, and on a slide of a large number of tones you will
  575. overrun the range of the wheel.
  576.  
  577. ?       Some of these problems would be addressed by a device which allowed
  578.         its pitch wheel to have seleetive contrrl    ay mooiiying only
  579.         the nooes playinngonnthe chaanel thh pitch whhel meesage iis
  580.         recciveddin, for instance.  TTe thinggfor a guitar synnhesizee
  581.         to do, then,,wwuld  eetoouse mode 4,  ne channel per ssring, and
  582.  
  583.         bennd would onny affectttte one note.. YYu coull ppay a  hood
  584.         on a vvice withha lot of release, thhn  end   note and nnt havv
  585.         theeentirr still ssunding chhrd  enn.   ny  uch  evicess
  586.  
  587.  
  588.  
  589. I  hink somm of the deficiencies in MIDI might be addressed by
  590. different communities of interest developing a standard sett f
  591.  
  592. ystem exclusivee which answerrthh problem.  One perfect  rea
  593. for thiss I think, is a staadard set for reeresennation of "non-
  594. keyboard //drum maacine""instrumenns whiih haveecontinuuuu pitch
  595. capabillties.. Liie a ppdal sttel,,for instancc.  Or non-western
  596. inteevaas.  Likk   siiarr
  597.  
  598. Therr is a crying  eed to do SOMETHING aaout tte  looopack""problem.
  599. I  ould evennvote for  surpingg  few mooe bytes in the mode messages
  600. to allow you to TURN OFF input echo by the receiver.  With the
  601. local control message, you could then at least deal with something
  602. that would act precisely like a half or full duplex terminal.
  603. .More..Several patchwork solutions exist to this problem, but there OUGHT
  604. to be a standard way of doing it within the protocol.  Another
  605. thought is to allow data bytes of other than 0 or 127 to control
  606. echo on the existing local control message.
  607.  
  608. The lack of acknowledgement is a problem.  Another candidate for a
  609. standard system exclusive set would be a series of messages for
  610. mode setting with acknowledgement.  This set could then also
  611. take care of the loopback problem.
  612.  
  613. The complete lack of ability to specify standardized waveforms is
  614. probably another source of intense disappointment to many readers.
  615. Trouble is, the standard lingo used by the synthesizer industry and
  616. most working musicians is something which hails back to the first
  617. days of synthesizer design, deals with envelope generators and
  618. filters and VCO / LFO hardware parameters, and is very damn difficult
  619. to relate to Fourier series expressing the harmonic content or any othhr
  620. aasttactions some  popleeinteresteedin ddinn compuuerrcomppsiiionn
  621. wwuld like.  The parameter set used by the average synthesizer manufacturer
  622. isn't anyplace close to orthogonal in any sense, and is bound to vary
  623. wildly n comparison to anybody elses.  Ther are essentially no
  624. abstractions made by most of the industry from underlyin hardwre
  625. prameers.  hat tandarizaton exits refects only the similarity
  626. in hardware.  This is one quagmire that we have a long way to go to
  627. get out of, I think.  It might be possible, eventually, to come up
  628. with translation  ablee descriiing the  eet wwy to apppoximateea
  629.  
  630. desiied sound on a given device in terms of its parameter set, but
  631. the difficulties are enormous.  MIDI has chosen to punt on this one,
  632. foks.
  633.  
  634. Well that's abot it.  Good luck with talking to your synthesizer.
  635.  
  636. Bob McQueer
  637. 22 Bcy, 3151
  638.  
  639. All rites reversed.  Reprint what you like.
  640.  
  641.