(sorry this chapter actual only in german - we try to translate it soon)

daMIDIdivasteh - Bayerisch fuer Musikelektroniker

von Florian Anwander http://www.camelot.de/~fa/

MIDI ist eine Norm zur Uebertragung verschiedener Informationen zwischen elektronischen Musikinstrumenten. Der Name bedeutet "M"usic "I"nstruments "D"igital "I"nterface.
MIDI uebertraegt kein Klangsignale.
Es ist nicht zu vergleichen mit einem Kabel, das zB. aus einem Plattenspieler elektrische Audiosignale an einen Verstaerker uebertraegt. Wir erklaeren nun zunaechst mal gar nicht, was MIDI aus technischer Sicht ist, sondern beschreiben kurz einen ganz typischen Praxisfall.


Der ganz normale Wahnsinn - Notenbefehle

Nehmen wir an, wir haben ein Alleinunterhalter-Keyboard, dessen Sequenzer eine Komposition abspielt.
Der gute Mann auf der Buehne hat eine UmhaengeTastatur umhaengen und will der Umhaengetastatur eine Melodie zu seinem Sequenzersong spielen.
Die Umhaengetastatur selbst erzeugt keine Klaenge (man kann also keinen Kopfhoerer daranhaengen), sondern sie sagt dem Keyboard, welche Klaenge es erzeugen soll.
Diese Tatsache betrachten wir noch etwas genauer:
Vom MIDI-Ausgang der Umhaengetastatur fuehrt ein MIDI-Kabel zum MIDI-Eingang des Keyboards. Wenn wir nun einen Taste auf der Umhaengetastatur druecken, uebertraegt das MIDI-Kabel folgende Information von der Umhaengetastatur an das Keyboard: "Achtung, Solostimme! Es passiert was" - "Es passiert mit der Taste Fis3" - "Sie wurde mit voller Lautstaerke angeschlagen". Wenn wir die Taste loslassen, dann lautet die Information folgendermassen: "Achtung, Solostimme! Es passiert was" - "Es passiert mit der Taste Fis3" - "Die Taste wurde losgelassen".
An diesem Beipiel kann man einige Dinge erkennen. Das MIDI-System teilt einen Vorgang, den wir eigentlich als ein Ganzes verstehen (eine Note-Spielen), in mehrere Ereignisse auf (oft auch mit englisch: Event bezeichnet).
Eine Gruppe von Ereignissen nennt man einen Befehl, in unserem Beispiel haben wir zwei MIDI-Befehle kennengelernt:
Den Note-On-Befehl und den Note-Off- Befehl.
Die beiden Befehle bestehen aus fast den gleichen Ereignissen. Nur das jeweils dritte Ereignis unterscheidet sie.

Sechzehn auf einen Streich - die MIDI-Kanaele

Die Aufteilung von Befehlen in einzelne Ereignisse ermoeglicht es nun ueber ein Kabel verschiedene Klaenge gleichzeitig zu steuern. Die Unterscheidung wird dabei im Ereignis "Achtung, Stimme soundso! Es passiert was" gemacht.
Dieses Ereignis kann zwischen sechzehn verschiedenen Klaengen unterscheiden.
Wir sprechen von den MIDI-Kanaelen auf denen gesendet wird (Man kann das mit einem Antennenkabel vergleichen, auf dem ja auch gleichzeitig mehrere Rundfunksendungen uebertragen werden; mit dem Senderknopf des Radios entscheidet man dann, welchen der Sender man hoeren will).
Ein Masterkeyboard, Sequencer oder Regelwerk kann also kurz hintereinander die folgenden Informationen senden: "Auf Kanal 3, Note Fis3, volle Lautstaerke anschlagen" - "Auf Kanal 9, Note C1, halbe Lautstaerke anschlagen" - "Auf Kanal 3, Vibrato veraendern, auf Vibratostaerke 32" - "Auf Kanal 9, Note C1, loslassen" - ... und so weiter.

Es wird also waehrend die Note Fis3 fuer die Solostimme gedrueckt wurde, die Note C1 fuer einen Bass gedrueckt und wieder losgelassen, und zudem wird eine Vibratoinformation fuer die Solostimme gesendet, die allerdings den Bass nicht beruehrt. Das MIDI-System kuemmert sich also nicht um den Zusammenhang der Vorgaenge, den wir als Musiker sehen (etwa eine Taste druecken und loslassen) sondern uebertraegt unterschiedlichste Informationen. Die MIDI- Uebertragung kuemmert sich nicht darum, ob alle Tasten, die gedrueckt wurden, auch wieder losgelassen werden. Das ist Aufgabe der sendenden Geraete. Bei der Umhaengetastatur kein Problem. Ein Sequencer hingegen muss in dem Moment, in dem er gestoppt wird, wissen, welche Noten derzeit gedrueckt sind, und dann fuer diese einen Note-Off-Befehl senden. Doch das soll nicht unser Problem sein, dafuer bekommen schliesslich die Programmierer Geld.

(Anmerkung des Programmierers: Leider viel zu wenig ;-) )

Weitere Befehle

Im letzten Beispiel haben wir einen Befehl kennengelernt, der keine Noten uebertraegt:
die Aenderung der Vibratostaerke. Nun gibt es eine ganze Reihe solcher Befehle: Programmwechsel-, Pitchbender-, Tastaturdruck,- und sogenannte Controller-Befehle.
Mit den Notenbefehlen haben sie gemeinsam, dass sie getrennt fuer jeden Kanal uebertragen werden koennen. Die Notenbefehle bestehen aus einem Kanalevent ("Achtung Solo!..."), der Notennummer ("Note Fis3") und der Anschlagsstaerke (auch Velocity-Wert). Note-On-Befehle haben immer einen Anschlagswert zwischen 1 und 127. Das Loslassen der Taste (Note-Off-befehl) wird durch einen Anschlagswert 0 ausgedrueckt.

Controller

Die Vibratoinformation gehoert zur Gruppe der Controller-Befehle.
Ein Controller-Befehl besteht aus dem Kanal-Event ("Achtung Solostimme!..."), aus der Nummer des Controllers (die Nummer 1 entspricht zB.: "...,Vibrato aendern,...") und dem Wert, den der Controller haben soll ("...,Vibratostaerke auf 32"). Der Controllerbefehl fuer das Vibrato auf Kanal drei sieht in vereinfachter Form also so aus: "Ctrl_Ch3, 1, nn" wobei "nn" eine Zahl zwischen 0 und 127 fuer die Staerke des Vibratos ist.
Die MIDI-Norm kennt 128 Controller (von Control0 bis Control127), von denen etwa zwanzig fuer bestimmte Zwecke festgelegt sind.
Das Vibrato-Rad entspricht z.B. dem Controller Nummer 1; und als weiteres Beispiel: die Ausgangslautstaerke eines Geraetes oder einer Klanggruppe entspricht dem Controller Nummer 7 (Achtung, nicht mit der Lautstaerke einer individuellen Note, also dem Velocitywert verwechseln!).
Ebenso ueber Controller kann man das Sustain Pedal (Control 64), die Effektbalance (Control 8) oder die Panoramaposition am Stereoausgang (Control 10) bestimmen. Die Controller koennen ueber 128 Werte veraendert werden. Bei Schaltbefehlen (etwa dem Sustainpedal) entspricht meist der Wert "null" dem ausgeschalteten Zustand, alle anderen Werte dem eingeschalteten Zustand; andere Geraete schalten beim Wert 64 um.

Pitchbend und Aftertouch

Die Information des Pitchbenders (das Wort "Tonhoehenbeugungsrad" ist mir nun doch etwas zu verquer) koennte natuerlich auch als Controller gesendet werden, doch hat man bei der Normierung des MIDI-Systems klugerweise bedacht, dass fuer das menschliche Gehoer die Aufloesung von 128 Schritten bei einer Oktave nach oben und unten viel zu grob waere. Deshalb gibt es einen speziellen Pitchbend-Befehl, der jeden Halbtonschritt in minimal 500 Stufen unterteilen kann.
Die Tastaturdruckinformationen werden nur von speziellen Tastaturen ausgegeben. Nach dem Anschlagen einer Taste kann man die Taste nachdruecken (daher der engl. Name "Aftertouch") und so zB. schon angeschlagene Klaenge nachtraeglich veraendern, etwa Blaeser anschwellen lassen. Dabei unterscheidet man zwischen dem "monophonem Aftertouch", der sich auf alle Noten gleichermassen auswirkt, und dem selteneren "polyphonen Aftertouch", der jeweils nur die Note aendert, an deren Taste gerade 'nachgedrueckt' wird.

Programmwechsel GM-Standard

Ein aeusserst wichtige Gruppe von Befehlen sind die Programmwechselbefehle.
Damit kann man ueber MIDI bestimmen, welches Klangprogramm die Noten des jeweiligen Kanals spielt. Also: man schaltet zwischen verschiedenen Klaengenum. Dabei sagt MIDI natuerlich nicht: "Klavier" oder "Bass" sondern nur "Programmnummer 17". Welcher Klang dabei im jeweiligen Geraet auf Nummer 17 abgespeichert ist, haengt vom Geraet ab.
Da es fuer viele Leute interessant waere, sich darauf verlassen zu koennen, unter einer bestimmten Programmnummer einen bestimmten Klang erreichen zu koennen haben sich die Hersteller auf einen Standard geeinigt, nach dem bei bestimmten Geraeten die Klaenge angeordnet sind. Diese Geraete duerfen dann von sich behaupten dem "General MIDI Standard" zu entsprechen (kurz GM- Standard). Man kann sich also dann darauf verlassen, dass die Programme 1, 2 und 3 eine Variante von Akustischem Klavier enthalten, der Klang 43 eine Geige usw...

MIDI-Modes

Die meisten modernen MIDI-Geraete sind in der Lage gleichzeitig unterschiedliche Klaenge zu erzeugen und diese auch unterschiedlichen MIDI- Kanaelen zuzuordnen (Wir erinnern uns: "Achtung, Solostimme!...") und jeden dieser Klaenge mehrstimmig zu spielen. Diese Faehigkeit beschreibt die MIDI- Norm mit dem englischen Begriff Multi-Mode (sprich: Mohd). Es gibt noch den Poly-Mode (ein ausgewaehlter MIDI-Kanal und mehrstimmiges Spiel), den Mono-Mode (ein ausgewaehlter MIDI-Kanal aber nur einstimmiges Spiel) und den Omni-Mode. Letzterer unterscheidet nicht mehr zwischen verschiedenen MIDI-Kanaelen, sondern spielt "alles, was durch die Leitung kommt".

System exklusives und nochmals Programmwechsel

Neben den Musikorientierten Informationen (Noten, Vibrato....) kann das MIDI- System auch beliebige andere Informationen uebertragen.
Sie muessen nur als "nichtmusikalische Daten" gekennzeichnet sein. Diese Informationen nennt man System-Exclusiv-Daten oder kurz SysEx-Daten.
Die MIDI-Instrumente bedienen sich dieser Informationsart, um geraetespezifische Informationen zu uebertragen. Beispielsweise kann heute fast jedes MIDI-Geraet seine internen Programmeinstellungen als SysEx-Daten uebertragen. Diese Informationen koennen an ein anderes Geraet gleicher Bauart gehen oder an ein Datenaufzeichnungssystem. Und ein Sequencer ist nichts anderes als ein Datenaufzeichner. Man kann also saemtliche Klangeinstellungen eines Geraetes zur Sicherheit abspeichern, oder sich fuer verschiedene Gelegenheiten verschiedene Grundeinstellungen seiner Geraete abspeichern, und bei Bedarf einladen. Diesen Vorgang nennt man Daten-Dump.
Jedoch Vorsicht: Diese Form der Klangspeicherung hat nichts mit dem Programmwechsel-Befehl zu tun! Ein Programmwechselbefehl sagt nur: "Jetzt sollen alle Noten mit dem Klang im Bank 08 Programm 15 gespielt werden". Ob der Klang in Bank8-Programm15 ein Blaeser oder ein Streicher ist, ist dem Programmwechselbefehl voellig egal.
Wie der individuelle Klang 08/15 nun tatsaechlich klingt, das kann man mit den SysEx-Daten uebertragen.


Audiosignale ueber MIDI: Samplestandardfiles

"Ja was jetzt?" werden sie sich fragen. Zuerst erzaehlen wir Ihnen, MIDI uebertrage keine Audiosignale und jetzt diese Ueberschrift? Manche Geraete, die mit gesampleten Klaengen arbeiten, koennen diese Klaenge als digitale Daten in der MIDI-Leitung uebertragen. Doch das hat nichts mit Audiouebertragung zu tun. Die Uebermittlung von einer Sekunde Sampleklang dauert ca. 12 Sekunden. Zudem werden die Daten in einem Format uebertragen, mit dem kein anderes Geraet etwas anfangen koennte - ausser wieder einem Sampler.


Wie funktioniert die verfluchte NRPN-Programmierung?

Ich werde ein wenig ausfuehrlich, aber letztlich vertieft das meines Erachtens das Verstaendnis fuer NRPN sehr:

Im Prinzip ist NRPN die rudimentaerste Art der MIDI-Steuerung, denn sie entspricht am meisten der Computer-eigenen Kommunikation.

Die zentralen Bausteine im Computer sind der Mikroprozessor und der Speicher. Im Speicher liegen auf zB. 16.384 Speicherplaetzen jeweils unterschiedliche Daten (Zahlenwerte). Die Hauptarbeit des Computers besteht nun darin, die Daten, die im Speicher liegen, dort abzuholen zu bearbeiten, wieder im Speicher abzulegen oder nach aussen (zB Bildschirm oder MIDI-Schnittstelle) abzugeben.

Der Mikroprozessor kommuniziert nun mit dem Speicher im Prinzip auf drei Leitungssystemen:

- dem Adressbus,

- dem Datenbus und

- der Read/Write-Leitung.

Auf dem Adressbus sagt der Prozessor dem Speicher, auf welchen Speicherplatz eine Aktivitaet stattfinden soll;

mit der Read/Write-Leitung sagt der Prozessor dem Speicher, ob er von diesem Speicherplatz eine Zahl holen will, oder ob er sie dort hinschreiben will; auf dem Datenbus schickt nun entweder (im Fall dass ein Zahlenwert geschrieben werden soll) der Mikroprozessor den Zahlenwert an den Speicher, oder es schickt (im Fall, dass ein Wert vom Prozessor aus dem Speicher gelesen werden soll) der Speicher die Zahl an den Prozessor.

Soweit das Prinzip von Adresse und Daten im Computer.

Bei NRPN ist es nun so, dass eigentlich nur Prozessor und Speicher an getrennten Plaetzen liegen. Zum Beispiel, der Prozessor im Computer mit dem Sequenzerprogramm und der Speicher im Synthesizer (es kan nauch genauso umgekehrt sein). Da zwischen den beiden Geraeten keine drei Leitungen laufen muss man also die verschiedenen Informationen zunaechst irgendwie kenntlich machen und dann ueber die eine MIDI-Leitung schicken.
Das Kenntlichmachen ist eben die Verteilung auf verschiedene MIDI-Controller- Werte.
Die Controller Nr. 98 und 99 fuehren als Wert die Adresse, der Controller 6 fuehrt als Wert die Datenzahl (die Read-Write-Leitung innerhalb des Computers eruebrigt sich bei der MIDI-Uebertragung, da es eine MIDI-Leitung Computer->Synthi und eine Synthi->Computer gibt). Dass die Adresse auf zwei Controllernummern (98 und 99) verteilt ist hat eigentlich nur damit zutun, dass es in einem durchschnittlichen Speicher weitaus mehr Speicherplaetze gibt, als die 128 Adressen, die sich mit den Werten eines Controllers darstellen liessen. Man kann mit zwei Controller-Werten 128 mal 128, also 16384 Speicherplaetze unterscheiden. Die Unterscheidung MSN (Most significant Bit) und LSB (Least Significant Bit) ist fuer Dich eigentlich unerheblich. Du musst nur wissen, welche Adresse welchen Parameter bestimmt.

Beim XP-10 geht das dann so:
Nehmen wir an, Du willst auf MIDI-Kanal 3 die Filtereckfrequenz veraendern.

Du schickst zunaechst auf dem MIDI-Kanal 3 den Controller-99 mit Wert 1 und
ebenfalls auf Kanal 3 den Controller-98 mit Wert 32.
Wenn Du nun auf Kanal 3 den Controller-6 mit irgend einem Wert schickst, wird die Filtercutoff-Frequenz entsprechend dem Wert des Controllers-6 eingestellt.

Wenn Du verschiedene Filtereinstellungen ausprobieren willst, musst Du nicht jedesmal eine neue Adresse (also Ctrl 99 und 98) schicken, sondern nur den neuen Wert von Controller-6.
Erst wenn Du einen anderen Parameter veraendern willst, schickst Du die entsprechende neue Adresse mit den beiden Controllern 99 und 98.

Die wesentlichsten Adressen sind:

Ctrl 99 Ctrl 98 Wertebereich: Ctrl 6

Min. Norm. Max.

Vibrato Rate 1 8 14 - 64 - 114

Vibrato Depth 1 9 14 - 64 - 114

Vibrato Delay 1 10 14 - 64 - 114

Filter Freq 1 32 14 - 64 - 80

Filter Resonanz 1 33 14 - 64 - 114

Attack 1 99 14 - 64 - 114

Decay 1 100 14 - 64 - 114

Release 1 102 14 - 64 - 114

 

Darueberhinaus kann man noch in den Drum-Parts jedes einzelne Instrument veraendern. Das XX in der Spalte Ctrl 98 ist die Notennummer des betreffenden Drum-Instrumentes, also fuer die Bassdrum 36, Rimshot 37, 1.Snare 38 u.s.w.:

Ctrl 99 Ctrl 98 Wertebereich: Ctrl 6

> Min. Norm. Max.

> Tonhoehe grob 24 XX 0 64 127

> Lautstaerke 26 XX 0 127

> Panorama 28 XX links mitte rechts

> Hallanteil 29 XX 0 127

> Chorusanteil 30 XX 0 127

back to overview