CHD ELEKTROSERVIS
  ÚVOD
  KOMUNIKAČNÍ PROTOKOL
  PŘEHLED MIDI POVELŮ
  HARDWAROVÉ PROPOJENÍ MIDI ZAŘÍZENÍ
  STAŽENÍ

MIDI KOMUNIKACE


ÚVOD ^^^^^

Musical Instruments Digital Interface (MIDI) je standard komunikace mezi elektronickými zařízeními. Zpočátku šlo pouze o propojení elektronických hudebních nástrojů - syntezátorů - předávajících si navzájem jen základní data. Postupně se přidávaly další oblasti hudební elektroniky, takže dnes se norma MIDI zabývá téměř veškerou hudebníky využívanou technikou. Kromě základní komunikace mezi elektronickými a elektrifikovanými hudebními nástroji jsou standardizovány:

SDS - Sample Dump Standard (Přenos zvukových vzorků)
SMF - Standard MIDI File (Formát MIDI souborů)
MFD - MIDI File Dump (Přenos MIDI souborů)
MTS - MIDI Tune Standard (Mikrointervalové ladění)
MTC - MIDI Time Control (Absolutní časová synchronizace zařízení)
MMC - MIDI Machine Control (Řízení studiové techniky)
MSC - MIDI Show Control (Řízení jevištní techniky)
GM - General MIDI (Interní struktura elektronických nástrojů)
a další.

První oficiální verze norny byla publikována 5.8.1983 pod názvem MIDI 1.0 Specification. O rok později byla založena organizace MMA (Midi Manufacturers Association), která od té doby koordinuje veškeré dění v oblasti MIDI (v jejích publikacích mohou zájemci nalézt všechny podrobnosti o všech oblastech MIDI).

 

KOMUNIKAČNÍ PROTOKOL ^^^^^

Komunikační protokol MIDI vychází z doporučení CCITT V.24 pro rozhraní RS232C. Komunikace probíhá asynchronně, jednosměrně. Klidový stav sběrnice je reprezentován logickou jedničkou. Přenos vždy začíná start-bitem s úrovní logické nuly, následuje osm datových bitů s úrovní logické 0 nebo 1 v pořadí LSB (nejméně významný bit) -> MSB (nejvýznamnější bit) a přenos bytu je ukončen jedním stop-bitem s úrovní logické 1. Přenosová rychlost je 31250 Baudů, přenos jednoho byte tedy trvá 320 mikrosekund (start bit + 8x data bit + stop bit = 10x (1/31250) = 0,00032 [sec]).

Každá "zpráva" (Message) začíná tzv. stavovým bytem, po němž následuje žádný, jeden nebo dva datové byty. Výjimkou jsou zvláštní systémové zprávy (System Exclusive Messages), které obsahují libovolný počet datových bytů. Stavové a datové byty se odlišují v nejvýznamnějším bitu (MSB). Na jeho pozici je ve stavovém bytu vždy jednička, v datovém bytu vždy nula.

Datový tok na MIDI sběrnici

Zprávy a povely (MIDI Messages) se dělí na dvě základní skupiny (viz tabulka níže):

  • Kanálové zprávy - jsou určeny pouze pro přístroje, které mají na straně příjmu nastaveno číslo kanálu (1 až 16) shodné s číslem zakódovaným ve stavovém bytu zprávy. Jedno zařízení může reagovat i na více kanálech, např. u multitémbrových nástrojů je každý hlas ovládán jedním MIDI kanálem.
  • Společné systémové zprávy - jsou určeny pro všechny přístroje připojené do daného MIDI okruhu.

Na jednu MIDI sběrnici tedy může být připojeno až 16 zařízení (MIDI kanály 1 až 16) nezávisle ovládaných kanálovými povely, ale všechna tato zařízení budou současně reagovat i na společné systémové povely.

Kanálové zprávy
Stavový byte [hex] Počet datových bytů Význam
8n 2 Note Off
9n 2 Note On
An 2 Polyphonic (Key) Aftertouch
Bn 2 Control Change
Cn 1 Program Change
Dn 1 Channel Aftertouch
En 2 Pitch Wheel Change
n je číslo MIDI kanálu (0h až Fh)

 

Systémové zprávy
Stavový byte [hex] Počet datových bytů Význam
F0 x Start of System Exclusive
F1 1 MTC Qtr Frame
F2 2 Song Position Pointer
F3 1 Song Select
F4 - nedefinováno
F5 - nedefinováno
F6 0 Tune Request
F7 0 End of System Exclusive
F8 0 Timing Clock
F9 - nedefinováno
FA 0 Start
FB 0 Continue
FC 0 Stop
FD - nedefinováno
FE 0 Active Sensing
FF 0 Reset
x je libovolný počet datových bytů

Pro přenos MIDI zpráv a povelů platí některé výjimky:

  • Kanálové zprávy mohou být přijímány i vysílány v režimu "Running Status". To znamená, že po stavovém bytu může následovat více datových bloků, aniž by bylo nutné stavový byte opakovat. Například řetězec B0h 07h 64h 08h 40h 01h 00h je plně rovnocenný řetězci B0h 07h 64h B0h 08h 40h B0h 01h 00h, výsledkem využití "Running Status" je ušetření dvou bytů a tedy i zrychlení toku dat.
  • Má-li kanálová zpráva Note On ve druhém datovém bytu (tj. "Velocity") hodnotu 00h, znamená to vlastně povel k vypnutí "noty". Tím lze v režimu "Running Status" vynechat vysílání kanálových zpráv Note Off. Například řetězec 90h 3Ch 7Fh 80h 3Dh 64h je plně rovnocenný řetězci 90h 3Ch 7Fh 3Dh 00h, rozdíl je opět pouze v ušetření stavového bytu a tím zrychlení toku dat, činnost navazujícího zařízení bude v obou případech stejná.
  • Systémové zprávy reálného času mají absolutní prioritu a mohou být do toku dat vkládány naprosto kamkoliv, dokonce i mezi datové byty ostatních zpráv včetně SysEx Messages. Zprávy reálného času přitom nesmí narušit zprávy, do nichž jsou eventuálně vloženy, ani neruší režim "Running Status".
  • Zařízení nesmí reagovat na nedefinované stavové byty a na zprávy, jimž nerozumí (nejsou v zařízení implementovány).

 

PŘEHLED MIDI POVELŮ ^^^^^

Stručný přehled "MIDI Messages" je uveden v následujících tabulkách (převzato z publikací MMA):

=========================================================================

              Table 1: MIDI 1.0 Specification Message Summary
             Updated 1995 By the MIDI Manufacturers Association

-------------------------------------------------------------------------
Status       Data Byte(s)     Description
D7----D0     D7----D0
-------------------------------------------------------------------------
Channel Voice Messages [nnnn = 0-15 (MIDI Channel Number 1-16)]
-------------------------------------------------------------------------
1000nnnn     0kkkkkkk         Note Off event.
             0vvvvvvv         This message is sent when a
                              note is released (ended).
                              (kkkkkkk) is the key (note) number.
                              (vvvvvvv) is the velocity.

1001nnnn     0kkkkkkk         Note On event.
             0vvvvvvv         This message is sent when a
                              note is depressed (start).
                              (kkkkkkk) is the key (note) number.
                              (vvvvvvv) is the velocity.

1010nnnn     0kkkkkkk         Polyphonic Key Pressure (Aftertouch).
             0vvvvvvv         This message is most often sent by
                              pressing down on the key after it
                              "bottoms out". 
                              (kkkkkkk) is the key (note) number.
                              (vvvvvvv) is the pressure value.

1011nnnn     0ccccccc         Control Change.
             0vvvvvvv         This message is sent when a controller
                              value changes.  Controllers include devices
                              such as pedals and levers.
                              Controller numbers 120-127 are reserved
                              as "Channel Mode Messages" (below).
                              (ccccccc) is the controller number.
                              (vvvvvvv) is the new value (0-119).

1100nnnn     0ppppppp         Program Change.
                              This message sent when the patch number changes.
                              (ppppppp) is the new program number.

1101nnnn     0vvvvvvv         Channel Pressure (After-touch).
                              This message is most often sent by pressing down
                              on the key after it "bottoms out". This message
                              is different from polyphonic after-touch. Use
                              this message to send the single greatest
                              pressure value (of all the current depressed keys).
                              (vvvvvvv) is the pressure value.

1110nnnn     0lllllll         Pitch Wheel Change.
             0mmmmmmm         This message is sent to indicate a change in the
                              pitch wheel.  The pitch wheel is measured by a
                              fourteen bit value. Center (no pitch change) is
                              2000H.  Sensitivity is a function of the 
                              transmitter.
                              (llllll) are the least significant 7 bits.
                              (mmmmmm) are the most significant 7 bits.

-------------------------------------------------------------------------
Channel Mode Messages  (See also Control Change, above)
-------------------------------------------------------------------------
1011nnnn     0ccccccc         Channel Mode Messages.
             0vvvvvvv         This the same code as the Control
                              Change (above), but implements Mode
                              control and special message by using
                              reserved controller numbers 120-127.
                              The commands are:

                              All Sound Off.
                              When All Sound Off is received
                              all oscillators will turn off, and
                              their volume envelopes are set to
                              zero as soon as possible.
                              c = 120, v =   0: All Sound Off

                              Reset All Controllers.
                              When Reset All Controllers is received,
                              all controller values are reset to their
                              default values. (See specific Recommended
                              Practices for defaults).
                              c = 121, v =   x: Value must only be zero
                                                unless otherwise allowed
                                                in a specific Recommended
                                                Practice.

                              Local Control.
                              When Local Control is Off, all devices
                              on a given channel will respond only to
                              data received over MIDI. Played data, etc.
                              will be ignored.  Local Control On
                              restores the functions of the normal
                              controllers.
                              c = 122, v =   0: Local Control Off
                              c = 122, v = 127: Local Control On

                              All Notes Off.
                              When an All Notes Off is received,
                              all oscillators will turn off.
                              c = 123, v =   0: All Notes Off
                              (See text for description of actual
                              mode commands.)
                              c = 124, v =   0: Omni Mode Off
                              c = 125, v =   0: Omni Mode On
                              c = 126, v =   M: Mono Mode On (Poly Off)
                              where M is the number of channels
                              (Omni Off) or 0 (Omni On)
                              c = 127, v =   0: Poly Mode On (Mono Off)
                              (Note: These four messages also cause
                               All Notes Off)

-------------------------------------------------------------------------
System Common Messages
-------------------------------------------------------------------------
11110000     0iiiiiii         System Exclusive.
             0ddddddd         This message makes up for all that MIDI
                ..            doesn't support.  (iiiiiii) is usually a
                ..            seven-bit Manufacturer's I.D. code.  If the
             0ddddddd         synthesizer recognizes the I.D. code as
             11110111         its own, it will listen to the rest of
                              the message (ddddddd).  Otherwise, the
                              message will be ignored.  System Exclusive
                              is used to send bulk dumps such as patch
                              parameters and other non-spec data.
                              (Note: Real-Time messages ONLY may be
                               interleaved with a System Exclusive.)
                              This message also is used for extensions
                              called Universal Exclusive Messages.

11110001                      Undefined. (Reserved)

11110010     0lllllll         Song Position Pointer.
             0mmmmmmm         This is an internal 14 bit register that
                              holds the number of MIDI beats (1 beat=
                              six MIDI clocks) since the start of
                              the song.  l is the LSB, m the MSB.

11110011     0sssssss         Song Select.
                              The Song Select specifies which sequence 
                              or song is to be played.

11110100                      Undefined. (Reserved)

11110101                      Undefined. (Reserved)

11110110                      Tune Request.
                              Upon receiving a Tune Request, all analog
                              synthesizers should tune their oscillators.

11110111                      End of Exclusive.
                              Used to terminate a System Exclusive
                              dump (see above).

-------------------------------------------------------------------------
System Real-Time Messages
-------------------------------------------------------------------------
11111000                      Timing Clock.
                              Sent 24 times per quarter note when
                              synchronization is required (see text).

11111001                      Undefined.  (Reserved)

11111010                      Start.
                              Start the current sequence playing.
                              (This message will be followed with
                              Timing Clocks).

11111011                      Continue.
                              Continue at the point the sequence was
                              Stopped.

11111100                      Stop.
                              Stop the current sequence.

11111101                      Undefined.  (Reserved)

11111110                      Active Sensing.
                              Use of this message is optional.  When
                              initially sent, the receiver will expect
                              to receive another Active Sensing message
                              each 300ms (max), or it will be assume
                              that the connection has been terminated.
                              At termination, the receiver will turn off
                              all voices and return to normal (non-
                              active sensing) operation.

11111111                      Reset.
                              Reset all receivers in the system to
                              power-up status.  This should be used
                              sparingly, preferably under manual
                              control.  In particular, it should not
                              be sent on power-up.



==============================================================================

                 TABLE 2: Expanded Status Bytes List
  (adapted from "MIDI by the Numbers" by D. Valenti, Electronic Musician 2/88)
              Updated 1995 By the MIDI Manufacturers Association

            STATUS BYTE                        |          DATA BYTES
------------------------------------------------------------------------------
   1st Byte Value |  Function                  |    2nd        |    3rd     
 - - - - - - - - -|                            |    Byte       |    Byte
  Binary |Hex| Dec|                            |               |
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 10000000= 80= 128| Chan 1      Note off       |  Note Number  | Note Velocity
 10000001= 81= 129| Chan 2         "           |   (0-127)     |   (0-127)
 10000010= 82= 130| Chan 3         "           |     see       |      "
 10000011= 83= 131| Chan 4         "           |    Table      |      "
 10000100= 84= 132| Chan 5         "           |      4        |      "
 10000101= 85= 133| Chan 6         "           |      "        |      "
 10000110= 86= 134| Chan 7         "           |      "        |      "
 10000111= 87= 135| Chan 8         "           |      "        |      "
 10001000= 88= 136| Chan 9         "           |      "        |      "
 10001001= 89= 137| Chan 10        "           |      "        |      "
 10001010= 8A= 138| Chan 11        "           |      "        |      "
 10001011= 8B= 139| Chan 12        "           |      "        |      "
 10001100= 8C= 140| Chan 13        "           |      "        |      "
 10001101= 8D= 141| Chan 14        "           |      "        |      "
 10001110= 8E= 142| Chan 15        "           |      "        |      "
 10001111= 8F= 143| Chan 16        "           |      "        |      "
 10010000= 90= 144| Chan 1      Note on        |      "        |      "
 10010001= 91= 145| Chan 2         "           |      "        |      "
 10010010= 92= 146| Chan 3         "           |      "        |      "
 10010011= 93= 147| Chan 4         "           |      "        |      "
 10010100= 94= 148| Chan 5         "           |      "        |      "
 10010101= 95= 149| Chan 6         "           |      "        |      "
 10010110= 96= 150| Chan 7         "           |      "        |      "
 10010111= 97= 151| Chan 8         "           |      "        |      "
 10011000= 98= 152| Chan 9         "           |      "        |      "
 10011001= 99= 153| Chan 10        "           |      "        |      "
 10011010= 9A= 154| Chan 11        "           |      "        |      "
 10011011= 9B= 155| Chan 12        "           |      "        |      "
 10011100= 9C= 156| Chan 13        "           |      "        |      "
 10011101= 9D= 157| Chan 14        "           |      "        |      "
 10011110= 9E= 158| Chan 15        "           |      "        |      "
 10011111= 9F= 159| Chan 16        "           |      "        |      "
 10100000= A0= 160| Chan 1     Polyphonic      |      "        |  Aftertouch
 10100001= A1= 161| Chan 2     Aftertouch      |      "        |    amount
 10100010= A2= 162| Chan 3         "           |      "        |    (0-127)
 10100011= A3= 163| Chan 4         "           |      "        |      "
 10100100= A4= 164| Chan 5         "           |      "        |      "
 10100101= A5= 165| Chan 6         "           |      "        |      "
 10100110= A6= 166| Chan 7         "           |      "        |      "
 10100111= A7= 167| Chan 8         "           |      "        |      "
 10101000= A8= 168| Chan 9         "           |      "        |      "
 10101001= A9= 169| Chan 10        "           |      "        |      "
 10101010= AA= 170| Chan 11        "           |      "        |      "
 10101011= AB= 171| Chan 12        "           |      "        |      "
 10101100= AC= 172| Chan 13        "           |      "        |      "
 10101101= AD= 173| Chan 14        "           |      "        |      "
 10101110= AE= 174| Chan 15        "           |      "        |      "
 10101111= AF= 175| Chan 16        "           |      "        |      "
 10110000= B0= 176| Chan 1      Control/       |     See       |     See
 10110001= B1= 177| Chan 2     Mode change     |    Table      |    Table
 10110010= B2= 178| Chan 3         "           |      3        |      3
 10110011= B3= 179| Chan 4         "           |      "        |      "
 10110100= B4= 180| Chan 5         "           |      "        |      "
 10110101= B5= 181| Chan 6         "           |      "        |      "
 10110110= B6= 182| Chan 7         "           |      "        |      "
 10110111= B7= 183| Chan 8         "           |      "        |      "
 10111000= B8= 184| Chan 9         "           |      "        |      "
 10111001= B9= 185| Chan 10        "           |      "        |      "
 10111010= BA= 186| Chan 11        "           |      "        |      "
 10111011= BB= 187| Chan 12        "           |      "        |      "
 10111100= BC= 188| Chan 13        "           |      "        |      "
 10111101= BD= 189| Chan 14        "           |      "        |      "
 10111110= BE= 190| Chan 15        "           |      "        |      "
 10111111= BF= 191| Chan 16        "           |      "        |      "
 11000000= C0= 192| Chan 1      Program        |  Program #    |     NONE
 11000001= C1= 193| Chan 2       change        |   (0-127)     |      "
 11000010= C2= 194| Chan 3         "           |      "        |      "
 11000011= C3= 195| Chan 4         "           |      "        |      "
 11000100= C4= 196| Chan 5         "           |      "        |      "
 11000101= C5= 197| Chan 6         "           |      "        |      "
 11000110= C6= 198| Chan 7         "           |      "        |      "
 11000111= C7= 199| Chan 8         "           |      "        |      "
 11001000= C8= 200| Chan 9         "           |      "        |      "
 11001001= C9= 201| Chan 10        "           |      "        |      "
 11001010= CA= 202| Chan 11        "           |      "        |      "
 11001011= CB= 203| Chan 12        "           |      "        |      "
 11001100= CC= 204| Chan 13        "           |      "        |      "
 11001101= CD= 205| Chan 14        "           |      "        |      "
 11001110= CE= 206| Chan 15        "           |      "        |      "
 11001111= CF= 207| Chan 16        "           |      "        |      "
 11010000= D0= 208| Chan 1      Channel        |  Aftertouch   |      "
 11010001= D1= 209| Chan 2     Aftertouch      |    amount     |      "
 11010010= D2= 210| Chan 3         "           |   (0-127)     |      "
 11010011= D3= 211| Chan 4         "           |      "        |      "
 11010100= D4= 212| Chan 5         "           |      "        |      "
 11010101= D5= 213| Chan 6         "           |      "        |      "
 11010110= D6= 214| Chan 7         "           |      "        |      "
 11010111= D7= 215| Chan 8         "           |      "        |      "
 11011000= D8= 216| Chan 9         "           |      "        |      "
 11011001= D9= 217| Chan 10        "           |      "        |      "
 11011010= DA= 218| Chan 11        "           |      "        |      "
 11011011= DB= 219| Chan 12        "           |      "        |      "
 11011100= DC= 220| Chan 13        "           |      "        |      "
 11011101= DD= 221| Chan 14        "           |      "        |      "
 11011110= DE= 222| Chan 15        "           |      "        |      "
 11011111= DF= 223| Chan 16        "           |      "        |      "
 11100000= E0= 224| Chan 1       Pitch         |    Pitch      |    Pitch
 11100001= E1= 225| Chan 2       wheel         |    wheel      |    wheel
 11100010= E2= 226| Chan 3      control        |     LSB       |     MSB
 11100011= E3= 227| Chan 4         "           |   (0-127)     |   (0-127)
 11100100= E4= 228| Chan 5         "           |      "        |      "
 11100101= E5= 229| Chan 6         "           |      "        |      "
 11100110= E6= 230| Chan 7         "           |      "        |      "
 11100111= E7= 231| Chan 8         "           |      "        |      "
 11101000= E8= 232| Chan 9         "           |      "        |      "
 11101001= E9= 233| Chan 10        "           |      "        |      "
 11101010= EA= 234| Chan 11        "           |      "        |      "
 11101011= EB= 235| Chan 12        "           |      "        |      "
 11101100= EC= 236| Chan 13        "           |      "        |      "
 11101101= ED= 237| Chan 14        "           |      "        |      "
 11101110= EE= 238| Chan 15        "           |      "        |      "
 11101111= EF= 239| Chan 16        "           |      "        |      "
 11110000= F0= 240| System Exclusive           |      **       |      **
 11110001= F1= 241| MIDI Time Code Qtr. Frame  |  -see spec-   |  -see spec-   
 11110010= F2= 242| Song Position Pointer      |     LSB       |     MSB
 11110011= F3= 243| Song Select(Song #)        |   (0-127)     |     NONE
 11110100= F4= 244| Undefined                  |      ?        |      ?
 11110101= F5= 245| Undefined                  |      ?        |      ?
 11110110= F6= 246| Tune request               |     NONE      |     NONE
 11110111= F7= 247| End of SysEx (EOX)         |      "        |      "
 11111000= F8= 248| Timing clock               |      "        |      "
 11111001= F9= 249| Undefined                  |      "        |      "
 11111010= FA= 250| Start                      |      "        |      "
 11111011= FB= 251| Continue                   |      "        |      "
 11111100= FC= 252| Stop                       |      "        |      "
 11111101= FD= 253| Undefined                  |      "        |      "
 11111110= FE= 254| Active Sensing             |      "        |      "
 11111111= FF= 255| System Reset               |      "        |      "

 ** Note: System Exclusive (data dump) 2nd byte= Vendor ID (or Universal
          Exclusive) followed by more data bytes and ending with EOX.



==============================================================================

          Table 3: Control Changes and Mode Changes (Status Bytes 176-191) 
  (adapted from "MIDI by the Numbers" by D. Valenti-Electronic Musician 2/88)
              Updated 1995/1999 By the MIDI Manufacturers Association

------------------------------------------------------------------------------
    2nd Byte Value |              Function                  |  3rd Byte
  Binary  |Hex|Dec |                                        | Value  |  Use
 - - - - -|- -|- - | - - - - - - - - - - - - - - - - - - - -|- - - - | - - - - 
 00000000= 00=   0 | Bank Select                            | 0-127  |  MSB
 00000001= 01=   1 | Modulation wheel                       | 0-127  |  MSB
 00000010= 02=   2 | Breath control                         | 0-127  |  MSB
 00000011= 03=   3 | Undefined                              | 0-127  |  MSB
 00000100= 04=   4 | Foot controller                        | 0-127  |  MSB
 00000101= 05=   5 | Portamento time                        | 0-127  |  MSB
 00000110= 06=   6 | Data Entry                             | 0-127  |  MSB
 00000111= 07=   7 | Channel Volume (formerly Main Volume)  | 0-127  |  MSB
 00001000= 08=   8 | Balance                                | 0-127  |  MSB
 00001001= 09=   9 | Undefined                              | 0-127  |  MSB
 00001010= 0A=  10 | Pan                                    | 0-127  |  MSB
 00001011= 0B=  11 | Expression Controller                  | 0-127  |  MSB
 00001100= 0C=  12 | Effect control 1                       | 0-127  |  MSB
 00001101= 0D=  13 | Effect control 2                       | 0-127  |  MSB
 00001110= 0E=  14 | Undefined                              | 0-127  |  MSB
 00001111= 0F=  15 | Undefined                              | 0-127  |  MSB
 00010000= 10=  16 | General Purpose Controller #1          | 0-127  |  MSB
 00010001= 11=  17 | General Purpose Controller #2          | 0-127  |  MSB
 00010010= 12=  18 | General Purpose Controller #3          | 0-127  |  MSB
 00010011= 13=  19 | General Purpose Controller #4          | 0-127  |  MSB
 00010100= 14=  20 | Undefined                              | 0-127  |  MSB
 00010101= 15=  21 | Undefined                              | 0-127  |  MSB
 00010110= 16=  22 | Undefined                              | 0-127  |  MSB
 00010111= 17=  23 | Undefined                              | 0-127  |  MSB
 00011000= 18=  24 | Undefined                              | 0-127  |  MSB
 00011001= 19=  25 | Undefined                              | 0-127  |  MSB
 00011010= 1A=  26 | Undefined                              | 0-127  |  MSB
 00011011= 1B=  27 | Undefined                              | 0-127  |  MSB
 00011100= 1C=  28 | Undefined                              | 0-127  |  MSB
 00011101= 1D=  29 | Undefined                              | 0-127  |  MSB
 00011110= 1E=  30 | Undefined                              | 0-127  |  MSB
 00011111= 1F=  31 | Undefined                              | 0-127  |  MSB
 00100000= 20=  32 | Bank Select                            | 0-127  |  LSB
 00100001= 21=  33 | Modulation wheel                       | 0-127  |  LSB
 00100010= 22=  34 | Breath control                         | 0-127  |  LSB
 00100011= 23=  35 | Undefined                              | 0-127  |  LSB
 00100100= 24=  36 | Foot controller                        | 0-127  |  LSB
 00100101= 25=  37 | Portamento time                        | 0-127  |  LSB
 00100110= 26=  38 | Data entry                             | 0-127  |  LSB
 00100111= 27=  39 | Channel Volume (formerly Main Volume)  | 0-127  |  LSB
 00101000= 28=  40 | Balance                                | 0-127  |  LSB
 00101001= 29=  41 | Undefined                              | 0-127  |  LSB
 00101010= 2A=  42 | Pan                                    | 0-127  |  LSB
 00101011= 2B=  43 | Expression Controller                  | 0-127  |  LSB
 00101100= 2C=  44 | Effect control 1                       | 0-127  |  LSB
 00101101= 2D=  45 | Effect control 2                       | 0-127  |  LSB
 00101110= 2E=  46 | Undefined                              | 0-127  |  LSB
 00101111= 2F=  47 | Undefined                              | 0-127  |  LSB
 00110000= 30=  48 | General Purpose Controller #1          | 0-127  |  LSB
 00110001= 31=  49 | General Purpose Controller #2          | 0-127  |  LSB
 00110010= 32=  50 | General Purpose Controller #3          | 0-127  |  LSB
 00110011= 33=  51 | General Purpose Controller #4          | 0-127  |  LSB 
 00110100= 34=  52 | Undefined                              | 0-127  |  LSB
 00110101= 35=  53 | Undefined                              | 0-127  |  LSB
 00110110= 36=  54 | Undefined                              | 0-127  |  LSB
 00110111= 37=  55 | Undefined                              | 0-127  |  LSB
 00111000= 38=  56 | Undefined                              | 0-127  |  LSB
 00111001= 39=  57 | Undefined                              | 0-127  |  LSB
 00111010= 3A=  58 | Undefined                              | 0-127  |  LSB 
 00111011= 3B=  59 | Undefined                              | 0-127  |  LSB
 00111100= 3C=  60 | Undefined                              | 0-127  |  LSB
 00111101= 3D=  61 | Undefined                              | 0-127  |  LSB
 00111110= 3E=  62 | Undefined                              | 0-127  |  LSB
 00111111= 3F=  63 | Undefined                              | 0-127  |  LSB
 01000000= 40=  64 | Damper pedal on/off (Sustain)          | <63=off| >64=on
 01000001= 41=  65 | Portamento on/off                      | <63=off| >64=on
 01000010= 42=  66 | Sustenuto on/off                       | <63=off| >64=on
 01000011= 43=  67 | Soft pedal on/off                      | <63=off| >64=on
 01000100= 44=  68 | Legato Footswitch                      | <63=off| >64=on
 01000101= 45=  69 | Hold 2                                 | <63=off| >64=on
 01000110= 46=  70 | Sound Cont. 1 (Sound Variation)        | 0-127  | LSB
 01000111= 47=  71 | Sound Cont. 2 (Timbre/Harmonic Intens.)| 0-127  | LSB
 01001000= 48=  72 | Sound Cont. 3 (Release Time)           | 0-127  | LSB
 01001001= 49=  73 | Sound Cont. 4 (Attack Time)            | 0-127  | LSB
 01001010= 4A=  74 | Sound Cont. 5 (Brightness)             | 0-127  | LSB
 01001011= 4B=  75 | Sound Cont. 6 (Decay Time)             | 0-127  | LSB
 01001100= 4C=  76 | Sound Cont. 7 (Vibrato Rate)           | 0-127  | LSB
 01001101= 4D=  77 | Sound Cont. 8 (Vibrato Depth)          | 0-127  | LSB
 01001110= 4E=  78 | Sound Cont. 9 (Vibrato Delay)          | 0-127  | LSB
 01001111= 4F=  79 | Sound Cont. 10                         | 0-127  | LSB
 01010000= 50=  80 | General Purpose Controller #5          | 0-127  | LSB
 01010001= 51=  81 | General Purpose Controller #6          | 0-127  | LSB
 01010010= 52=  82 | General Purpose Controller #7          | 0-127  | LSB
 01010011= 53=  83 | General Purpose Controller #8          | 0-127  | LSB
 01010100= 54=  84 | Portamento Control                     | 0-127  | Source Note
 01010101= 55=  85 | Undefined                              | 0-127  | LSB
 01010110= 56=  86 | Undefined                              | 0-127  | LSB
 01010111= 57=  87 | Undefined                              | 0-127  | LSB
 01011000= 58=  88 | Undefined                              | 0-127  | LSB
 01011001= 59=  89 | Undefined                              | 0-127  | LSB
 01011010= 5A=  90 | Undefined                              | 0-127  | LSB
 01011011= 5B=  91 | Reverb Send Level                      | 0-127  | LSB
 01011100= 5C=  92 | Effects 2 Depth (Tremolo Depth)        | 0-127  | LSB
 01011101= 5D=  93 | Chorus Send Level                      | 0-127  | LSB
 01011110= 5E=  94 | Effects 4 Depth (Celeste/Detune Depth) | 0-127  | LSB
 01011111= 5F=  95 | Effects 5 Depth (Phaser Depth)         | 0-127  | LSB
                                                           -----------------
 01100000= 60=  96 | Data entry +1                          |       N/A
 01100001= 61=  97 | Data entry -1                          |       N/A
 01100010= 62=  98 | Non-Registered Parameter Number LSB    | 0-127  | LSB
 01100011= 63=  99 | Non-Registered Parameter Number MSB    | 0-127  | MSB
 01100100= 64= 100 | Registered Parameter Number LSB*       | 0-127  | LSB
 01100101= 65= 101 | Registered Parameter Number MSB*       | 0-127  | MSB
 01100110= 66= 102 | Undefined                              |        ?
 01100111= 67= 103 | Undefined                              |        ?
 01101000= 68= 104 | Undefined                              |        ?
 01101001= 69= 105 | Undefined                              |        ?
 01101010= 6A= 106 | Undefined                              |        ?
 01101011= 6B= 107 | Undefined                              |        ?
 01101100= 6C= 108 | Undefined                              |        ?
 01101101= 6D= 109 | Undefined                              |        ?
 01101110= 6E= 110 | Undefined                              |        ?
 01101111= 6F= 111 | Undefined                              |        ?
 01110000= 70= 112 | Undefined                              |        ?
 01110001= 71= 113 | Undefined                              |        ?
 01110010= 72= 114 | Undefined                              |        ?
 01110011= 73= 115 | Undefined                              |        ?
 01110100= 74= 116 | Undefined                              |        ?
 01110101= 75= 117 | Undefined                              |        ?
 01110110= 76= 118 | Undefined                              |        ?
 01110111= 77= 119 | Undefined                              |        ?
                                                           -----------------
 01111000= 78= 120 | All Sound Off                          |        0
 01111001= 79= 121 | Reset All Controllers                  |        0
 01111010= 7A= 122 | Local control on/off                   | 0=off    127=on   
 01111011= 7B= 123 | All notes off                          |        0
 01111100= 7C= 124 | Omni mode off (+ all notes off)        |        0
 01111101= 7D= 125 | Omni mode on (+ all notes off)         |        0
 01111110= 7E= 126 | Poly mode on/off (+ all notes off)     |       **
 01111111= 7F= 127 | Poly mode on                           |        0
                      (incl mono=off +all notes off)

 **Note: This equals the number of channels, or zero if the number of channels
         equals the number of voices in the receiver.


    *Table 3a: Registered Parameter Numbers [CC# 65H,64H] 
------------------------------------------------------------
 CC#65 (MSB) | CC#64 (LSB) | Function                  
  Hex|Dec|   |  Hex|Dec|   |                                 
 - - - - - - | - - - - - - |- - - - - - - - - - - - - - - -
  00 = 0     |  00 = 0     | Pitch Bend Sensitivity
  00 = 0     |  01 = 1     | Channel Fine Tuning
  00 = 0     |  02 = 2     | Channel Coarse Tuning
  00 = 0     |  03 = 3     | Tuning Program Change
  00 = 0     |  04 = 4     | Tuning Bank Select



HARDWAROVÉ PROPOJENÍ MIDI ZAŘÍZENÍ ^^^^^

Hardwarově probíhá MIDI komunikace prostřednictvím proudové smyčky 5 mA. Pro propojení přístrojů jsou použity kabely s pětipinovými vidlicemi DIN 180°, zapojeny jsou pouze piny č. 2, 4 a 5. Jeden kabel přenáší data vždy pouze jedním směrem. Maximální doporučená délka kabelu je 15 metrů.

Zařízení schopná komunikovat po MIDI sběrnici jsou vybavena většinou třemi DIN konektory, bývají označeny jako MIDI-IN (vstup dat), MIDI-OUT (výstup dat) a MIDI-THRU (průchod dat). Standardní interní zapojení těchto konektorů je na obrázku níže. Důležité je, že u konektoru MIDI-IN nesmí být připojen pin č. 2 (tj. stínění kabelu - zem). To proto, aby byly jednotlivé přístroje galvanicky odděleny a nedocházelo tak k poruchám přenosu dat a ke vzniku brumů díky jejich rozdílným zemním potenciálům. Ze stejného důvodu je vstup dat MIDI-IN galvanicky oddělen optočlenem.

K výstupu MIDI-OUT (resp. MIDI-THRU) jednoho zařízení lze připojit pouze jeden vstup (MIDI-IN) druhého zařízení! Potřebujete-li do jednoho MIDI výstupu připojit dvě navazující zařízení (tzn. rozbočit MIDI sběrnici), lze tolerovat zapojení podle obrázku níže. Ovšem podmínkou je, aby byla obě zařízení trvale připojena, i když je momentálně používáno pouze jedno z nich. Jinak by nebyla proudová smyčka uzavřena. Vzhledem k většímu napěťovému úbytku na dvou sériově zapojených optočlenech obou MIDI vstupů není ale zaručen normalizovaný proud smyčky - s některými přístroji toto zapojení fungovat bude a s některými ne.

Paralelní připojení dvou zařízení k jednomu MIDI výstupu je naprosto nepřípustné. Zde by MIDI výstup musel dodávat dvojnásobným proud (ten je ale omezen odpory ve výstupním obvodu) a navíc při paralelním řazení optočlenů na MIDI vstupech dochází k tomu, že optočlen s menším dynamickým odporem "přetáhne" většinu proudu smyčky na sebe a na druhém MIDI vstupu budou nepřijatelné výpadky dat. Zaručeně bezchybné rozdělení dat z jednoho MIDI výstupu do více MIDI vstupů zajistí pouze použití zařízení typu Thru Box, Patch Bay apod.

Ještě komplikovanější situace nastává při slučování dat ze dvou nebo více MIDI výstupů do jednoho MIDI vstupu. Tam už žádné provizorní řešení neexistuje, je bezpodmínečně třeba použít Merge Box nebo podobné zařízení. Při slučování sběrnic totiž nejde jen o impedanční a proudové vztahy, ale také o logiku procházejících dat - neporušenost a souvislost jednotlivých bloků zpráv, priorita zpráv, správné řazení dat v režimu "Running Status" atd. To může zaručit jen zpracování dat procesorem.

 

STAŽENÍ ^^^^^

Přehled MIDI zpráv a povelů (EN) PDF 239 kB    
Webové stránky MMA URL --- - Informace o MMA

 

^^^^^

| ÚVOD | KOMUNIKAČNÍ PROTOKOL | PŘEHLED MIDI POVELŮ | HARDWAROVÉ PROPOJENÍ MIDI ZAŘÍZENÍ | STAŽENÍ |

| Aktuality | Produkty | Ceník | Objednávky | Podpora | Archiv | Kontakty | English |
Last update: 17.05.2018, Copyright © 1996-2018 CHD Elektroservis