home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / gendoc / midi.doc < prev    next >
Internet Message Format  |  1994-07-13  |  28KB

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