Montanasoft

Midi

Midi ist ein Datenformat, mit dem elektronische Musikinstrumente und −geräte untereinander sowie mit Computern kommunizieren können. Die Bezeichnung 'MIDI' steht für 'Musical Instrument Digital Interface' (Digitale Schnittstelle für Musikinstrumente). Es werden keine Klangdaten sondern ausschließlich Steuerdaten übertragen, wodurch Midi-Dateien im Verhältnis zu z.B. Wav-Dateien sehr klein sind. Das hat allerdings auch einen Nachteil: die Qualität der Tonausgabe kann vom Erzeuger einer Midi-Datei nicht beeinflusst werden. Weiterhin werden nicht von allen Keyboards und Soundkarten alle Messages, die der Midi-Standard bereitstellt, unterstützt.

Für jemanden, der noch nie mit dem Midiformat zu tun hatte ist es am einfachsten, sich Midi als eine Band mit 16 Musikern und einem Dirigenten vorzustellen. Jedem Musiker ist ein Techniker zugeordnet, der dem Musiker das erforderliche Instrument reicht und alle Einstellungen wie Lautstärke oder Effekte einstellt. Die Musiker haben statt Namen Nummern von 1 bis 16. Außer Nummer 10 können alle Musiker jedes verfügbare Instrument spielen. Nummer 10 ist der Schlagzeuger, der kann nur Schlagzeug. Anders als in der wirklichen Welt gibt der 'Dirigent' (Midi-Interpreter) auch bekannt, welches Instrument welcher Musiker zu spielen hat und welche Einstellungen vorzunehmen sind; das 'sagt' er aber dem 'Techniker' des Musikers. Jedem Musiker teilt er genau mit, wann er einen Ton beginnen und wann er ihn wieder beenden soll. 'Vergisst' er mitzuteilen, dass ein Ton wieder beendet werden soll, spielt der Musiker ihn solange weiter, bis zufällig der gleiche Ton an einer späteren Stelle wieder ausgeschaltet werden soll. Das nennt man dann 'Notenhänger'. Dabei können die Musiker während ein Ton noch gespielt wird, weitere Töne anspielen (Polyphonie), was im wirklichen Leben einem Saxophonisten schwer fallen dürfte.

Die einfachste Art, Midis abzuspielen, ist die Nutzung der MCI-Funktionen. Damit ist jedoch ein Eingreifen zum Beispiel auf Spurparameter wie die Lautstärke eines einzelnen Instruments oder die Realisierung von Pegelanzeigen, die auf die Anschlagdynamik gespielter Noten reagieren sollen, nicht möglich.

Auch wenn wir in der heutigen Zeit mit 64-Bit-Rechnern arbeiten, ist Midi nach wie vor ein 8-Bit-Format, wovon ein Datenbyte nur 7 Bits nutzt. Bei Channel-Messages wird so erkannt, dass bei gesetztem Bit 7 ein Status-Byte vorliegt und bei Daten-Bytes bedeutet ein gesetztes Bit 7, dass noch mindestens ein Datenbyte folgt. Werden Werte benötigt, die den Zahlenbereich von 7 Bit (also 0 bis 127) überschreiten, werden die Bytes zusammengesetzt (genibbelt), um den Wert zu erhalten. Das gilt nicht unbedingt für Meta- und Sysex-Messages, da hier die Werte herstellerspezifisch ausgewertet werden und für die Header.

Diese Seiten sollen Einsteigern in die Midi-Programmierung etwas Starthilfe geben. Ich möchte den Aufbau von Midi-Dateien und Möglichkeiten der Verarbeitung und Manipulation von Midi-Daten in Echtzeit aufzeigen. In den Beschreibungen von Messages wird wie üblich die hexadezimale Schreibweise angewendet.