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.
"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.
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