Wie man MIDI spricht
Ich habe diesen Artikel ursprünglich im Mai 2019 geschrieben, ihn aber hierher verschoben, nachdem ich meine alte Website eingestellt hatte. Genießen!
Inhalt
- Was MIDI ist
1.1 Was MIDI nicht ist - Wie es funktioniert
2.1 Meldungen trennen
2.2 Statusbytes und Datenbytes - Meldungstypen
3.1 Note Off / Note On (0x8n, 0x9n)
→ 3.1.1 Über MIDI-Tonhöhennummern
3.2 Control Change (0xBn)
3.3 Pitch Bend (0xEn)
3.4 Polyphonic Key Pressure und Channel Pressure (0xAn, 0xDn)
3.5 Program Change (0xCn )
3.6 System (0xFn) - Über Hexadezimal
- Anwendungsbeispiel: Beethovens Fünfte Symphonie
- Bonuslektion: Laufstatus
Anhang I: Kanalmodusmeldungen
Anhang II: MIDI-Tonhöhentabelle
Anhang III: Standard-CC-Zuweisungen
Anhang IV: Bankwechselmeldungen
Anhang V: Zusätzliche Ressourcen
MIDI ist uralt, aber höllisch nützlich. Es steuert die Keyboards, die Sie im Guitar Center sehen, steuert Dinge wie Beleuchtung und Pyrotechnik bei Konzerten¹ und wurde in den letzten Jahrzehnten für praktisch jeden Film verwendet.
Wenn Sie ein moderner Musiker sind, sind MIDI-Kenntnisse unerlässlich. Wenn Sie die Art von Person sind, die Blogbeiträge wie diese liest, stehen die Chancen gut, dass Sie bereits etwas Erfahrung damit haben; Ich denke jedoch, dass es hilfreich ist, nicht nur zu wissen, wie man es benutzt, sondern wie man es Bit für Bit liest. Das Übersetzen und Zusammenstellen Ihrer eigenen MIDI-Meldungen mag zunächst entmutigend klingen, aber es ist eigentlich wirklich einfach, und ich denke, es ist eine wichtige Fähigkeit für jeden modernen Komponisten. Es ist so, als würde man als Toningenieur wissen, wie Mikrofone funktionieren.
Dieser Artikel dient als umfassende Einführung und Anleitung zu MIDI-Meldungen, wie sie für die Musikproduktion gelten. Was dieses Handbuch nicht ist , ist ein Tutorial zur MIDI-Komposition oder zur Verwendung des MIDI-Editors in Ihrer DAW. Dieses Handbuch ist jedoch absolut auf Komponisten ausgerichtet, da Sie feststellen werden, dass grundlegende MIDI-Kenntnisse beim Erlernen Ihrer fortgeschritteneren (und komplizierteren) MIDI-Tools sehr hilfreich sind. Lass uns anfangen.
1. Was MIDI ist
Ich fange gerne an, Dinge von Anfang an zu unterrichten. Wenn Ihnen jedoch bereits klar ist, was MIDI ist und was es tut, können Sie gerne zu „Wie es funktioniert“ springen , wo wir uns direkt mit den Grundlagen befassen. Ansonsten lassen Sie uns überprüfen.
MIDI ist ein Akronym, das für „Musical Instrument Digital Interface“ steht. Im Wesentlichen ist es eine Möglichkeit für Computer, musikalische Darbietungen zu beschreiben und einander zu übermitteln. Eigentlich ist es der Weg. Wenn Sie nach den 80ern geboren wurden, dann verwendet wahrscheinlich jedes Keyboard oder jede Drum-Maschine, die Sie jemals gesehen haben, MIDI. Während im Laufe der Jahre viele Versuche unternommen wurden, MIDI zu überarbeiten oder zu ersetzen, scheinen sich Instrumentenhersteller und -entwickler einfach nicht darum zu kümmern, etwas anderes zu verwenden.
Mit MIDI können Sie:
- Nehmen Sie Musikdarbietungen auf und bearbeiten Sie sie mit chirurgischer Präzision
- Patchen Sie eine Performance mit wenig oder gar keinem Aufwand an jedes Instrument
- Generieren oder resequenzieren Sie Performances prozedural
- Arrangieren Sie Ensemble-Auftritte mit einer einzigen Verbindung
- Führen Sie rudimentäres Mischen durch, komplett mit „Automatisierung“
Und das ist, wenn die Partitur überhaupt aufgeführt wird . Während die virtuellen Orchester der 80er lächerlich falsch klangen, klingen moderne Instrumente so gut, dass gelegentliche Zuhörer nicht einmal den Unterschied erkennen können. Und das hat alles verändert. In Low-Budget-Filmen und Fernsehsendungen verwendet der Soundtrack in der endgültigen Version oft MIDI-Orchester, und das Publikum ist nicht klüger. Und erstaunlicherweise stehen solche Tools Musikern fast jeder Einkommensstufe zur Verfügung.
1.1 Was MIDI nicht ist
Bevor ich fortfahre, möchte ich mit ein paar Missverständnissen aufräumen, die Neuankömmlinge manchmal haben. Es wird nicht lange dauern.
Erstens macht MIDI keine Musik: Es sagt anderen Geräten nur, wie sie Musik machen sollen. Aber es kann auch andere Dinge tun. Beispielsweise werden in professioneller Videosoftware MIDI-Meldungen verwendet, um Dinge wie Animationsparameter zu steuern. Viele Studio-Bedienoberflächen verwenden MIDI zur Steuerung von Mixing-Software, und dieses schicke Player-Piano verwendet es, um Roboter-Aktuatoren auszulösen. Der Punkt, den ich zu machen versuche, ist, dass MIDI-Daten zwar hauptsächlich zur Steuerung virtueller Instrumente verwendet werden, sie aber wirklich für alles Mögliche verwendet werden können und für sich genommen nicht nach irgendetwas „klingen“.
Zweitens sind MIDI-Daten nicht nur „Noten für Computer“, so nützlich die Analogie auch sein mag. Während westliche Noten das Medium sind, das die ausdrucksstärkste Musik der Geschichte kodiert hat, lässt sie in Wahrheit einen beträchtlichen Raum für Interpretationen – und Computer können nicht sehr gut mit Mehrdeutigkeiten umgehen.
Stattdessen stellt man sich MIDI wahrscheinlich am besten als Programmiersprache und Ihren MIDI-Editor als visuelle Programmierumgebung vor. MIDI-Editoren stellen MIDI-Befehle als Formen auf Klavierrollen dar, anstatt das, was sie eigentlich sind: verherrlichte digitale Anweisungen. Und wie alle Programmiersprachen ist MIDI allen Arten von Fehlern und Störungen ausgesetzt. Wenn zum Beispiel eine „Note on“-Meldung nicht richtig mit einer „Note off“-Meldung gekoppelt ist, spielt die Note einfach ewig weiter, weil Computern der gesunde Menschenverstand fehlt, um anzuhalten.
Wie auch immer, ich bin es leid, diese Einführung zu schreiben. Lassen Sie uns all diese Abstraktionsschichten auflösen und auf einer grundlegenden Ebene lernen, wie man MIDI spricht.
2. Wie es funktioniert
Wie so ziemlich alles in Computern läuft MIDI auf eine Reihe von Einsen und Nullen hinaus. Jede Ziffer wird Bit genannt (kurz für „Binärziffer“) und acht davon bilden ein Byte . Wenn Sie auf einem Digitalpiano spielen, werden MIDI-Meldungen intern generiert und an den Tongenerator des Instruments gesendet, wo sie interpretiert und in hörbaren Klang umgewandelt werden. Wenn Sie einen Blick auf das Signal geworfen haben, könnten die generierten Nachrichten in etwa so aussehen:
Dies ist die binäre Form einer einfachen MIDI-Performance: die ersten vier Noten von Beethovens Fünfter. Wenn Sie diese Sequenz aufnehmen und genau so auf einem anderen MIDI-Instrument wiederholen würden, wäre das Ergebnis eine identische Kopie der Darbietung. Wenn Sie mit dem Timing herumspielten, würden Sie das Tempo der Aufführung ändern. Alles andere über die Leistung ist in den Daten selbst kodiert.
Es ist irgendwie interessant zu erkennen, dass Komponisten heutzutage im Wesentlichen ihre Zeit damit verbringen, etwas zu erstellen, zu bearbeiten und zu optimieren, was auf eine zeitgesteuerte Lieferung von Nummern hinausläuft. Wie auch immer, lassen Sie uns die Aufgabe, dieses Durcheinander zu interpretieren, Schritt für Schritt aufschlüsseln.
2.1 Nachrichten trennen
Das Erste, was man über MIDI-Meldungen wissen sollte, ist, dass sie fast immer mehr als ein Byte umfassen. Dies ist sinnvoll, wenn man bedenkt, dass es nur 256 eindeutige 8-Bit-Zahlen gibt und wir wahrscheinlich viel mehr Informationen codieren müssen, um etwas so Ausdrucksstarkes wie ein musikalisches Ereignis zu beschreiben.
Wenn Sie also eine Nachricht in mehreren kleinen Paketen erhalten, möglicherweise alle auf einmal, woher wissen Sie dann, wo eine Nachricht endet und die nächste beginnt? Wenn Sie wissen, wie viele Bytes pro Nachricht zu erwarten sind, und ganz oben beginnen, sollten Sie sie realistischerweise unterscheiden können, solange keines davon bei der Übertragung verloren geht. MIDI bietet uns jedoch einen sicheren Weg, um jede Nachricht zu analysieren: indem das erste Bit jedes Bytes der Ursache gewidmet wird.
REGEL 1: Wenn das erste Bit eines MIDI-Bytes eine 1 ist , dann ist das Byte ein Status-Byte , das den ersten Teil einer MIDI-Nachricht markiert. Wenn das erste Bit eine 0 ist , dann ist es ein Datenbyte , das den Nachrichtentext bildet.
Einfach. Jedes Mal, wenn ein Byte mit einer 1 beginnt , wissen wir, dass wir den Anfang einer neuen Nachricht lesen, und wir können die folgenden Bytes zusammen mit dem ersten interpretieren. Lassen Sie uns diese Regel verwenden, um die obige MIDI-Performance in diskrete Nachrichten zu zerlegen.
Jetzt, wo wir uns etwas Ordentlicheres ansehen, werden Sie vielleicht bemerken, dass ein paar Muster auftauchen. Zum einen gibt es nur zwei eindeutige Versionen jedes Bytes. Da Sie wissen, dass diese Nachrichten die ersten vier Noten von Beethovens Fünfter Symphonie darstellen, können Sie erraten, was sie bedeuten?
2.2 Statusbytes und Datenbytes
Das Statusbyte einer MIDI-Nachricht dient als Header und ist damit der wichtigste Teil. Es sagt uns, was die Nachricht tut und wie die folgenden Datenbytes zu interpretieren sind. Was die Datenbytes codieren, hängt von der Nachricht ab, aber sie liefern typischerweise Informationen, die für die Ausführung der Nachricht wichtig sind. Wenn das Statusbyte "Sprung" sagt, können die Datenbytes Ihnen sagen, wie hoch.
Da das erste Bit jedes Bytes reserviert ist, um die beiden Byte-Typen voneinander zu unterscheiden, können beide nur sieben Bits verwenden. So werden sie verwendet:
REGEL 2: Die Bits 2, 3 und 4 eines Statusbytes identifizieren seinen Nachrichtentyp . Die Bits 5–8 identifizieren den MIDI-Kanal, den es adressiert. Datenbytes erfüllen je nach Nachrichtentyp unterschiedliche Funktionen.
Drei Bits zur Bestimmung des Nachrichtentyps und vier für die Kanalnummer bedeuten, dass es acht unterschiedliche Nachrichtentypen und 16 mögliche Kanäle gibt. Datenbytes können jeden Wert von 0 bis 127 enthalten . Während die überwältigende Mehrheit der Nachrichten zwei Datenbytes verwendet, kann diese Anzahl tatsächlich je nach den Anforderungen der Nachricht abweichen. Beispielsweise benötigen „Program Change“-Meldungen nur ein Datenbyte und „System Exclusive“-Meldungen können eine beliebige Anzahl haben.
Wenn Sie schon einmal mit MIDI gearbeitet haben, sind Sie wahrscheinlich bereits mit MIDI-Kanälen vertraut. Aber falls Sie es nicht sind, kann jede MIDI-Verbindung bis zu 16 Stimmen steuern. Das Statusbyte gibt in seinen vier niederwertigsten Bits an, welchen dieser Kanäle die Nachricht adressiert.³
3. Nachrichtentypen
Die folgende Tabelle identifiziert die verschiedenen MIDI-Meldungstypen und wie sie Datenbytes verwenden. Wir werden jeden in den folgenden Unterabschnitten untersuchen.
3.1 Note aus / Note ein (0x8n, 0x9n)
Dies sind die elementarsten MIDI-Meldungen und am einfachsten zu verstehen. Wenn Sie eine Note spielen möchten, senden Sie eine „Note On“-Nachricht, und wenn Sie sie beenden möchten, senden Sie eine „Note Off“-Nachricht. Diese Meldungen verwenden zwei Datenbytes: Das erste identifiziert die Tonhöhe , die Sie steuern möchten, und das zweite identifiziert eine Velocity. ⁴ Ein „Note On“ mit einer Velocity von 0 erzeugt keinen Ton und entspricht einer „Note Off“-Meldung.
Überlegungen:
- Das Vorhandensein von Null-Geschwindigkeits-„Note-on“-Meldungen bedeutet, dass „Note-off“-Meldungen völlig unnötig sind. Der MIDI-Standard legt ausdrücklich fest, dass „Note Off“- und Zero Velocity „Note On“-Meldungen äquivalent sind und identisch behandelt werden müssen. Infolgedessen kann es vorkommen, dass ein Gerät Noten anders auslöst als ein anderes.
- Während Sender nur eine Methode zum Untriggern von Noten verwenden müssen, müssen Empfänger in der Lage sein, mit beiden umzugehen.
- Während ein Velocity-Wert in einer „Note Off“-Nachricht nicht viel Sinn macht, ist er dennoch Teil der Nachricht und sollte gesendet werden. Der Wert ist unbenutzt und wird verworfen.
Tonhöhennummern werden Klaviertasten im Wesentlichen eins zu eins zugeordnet. Da es jedoch 128 mögliche Werte und nur 88 Klaviertasten gibt, unterstützt MIDI tatsächlich 40 Halbtöne, die auf dem Klavier nicht zu finden sind. 19 davon befinden sich über der höchsten Note, C7, und die anderen 21 unter der tiefsten Note, A-1. Der MIDI-Tonhöhenbereich ist mehr oder weniger um das mittlere C zentriert, was der Note Nummer 60 entspricht.
Beachten Sie, dass sich nicht alle Hersteller auf Oktavzahlen einigen. Die wissenschaftliche Tonhöhennotation, die von analogen Musikern verwendet wird, identifiziert das tiefste C auf dem Klavier als C1 , was das mittlere C zu C4 macht . Programmierer hingegen beginnen oft mit 0 zu zählen, daher ist für sie das niedrigste C C0 und das mittlere C C3 . Dies ist die Notation, die ich normalerweise verwende, da alle meine MIDI-Tools diese Notation verwenden. Unabhängig davon, welches System Sie verwenden, ist das mittlere C jedoch immer die Notennummer 60.
In Anhang II stelle ich eine Tabelle zur Umwandlung in und aus MIDI-Tonhöhennummern bereit.
3.2 Kontrollwechsel (0xBn)
„Control Change“-Meldungen werden verwendet, um die Continuous Controller eines Kanals zu ändern . Ein Continuous Controller ist analog zu einer Automation Lane; Es ermöglicht die laufende Kontrolle über verschiedene Aspekte der Leistung eines Kanals.
Das erste Datenbyte identifiziert die CC-Nummer (0–119) und das zweite weist ihr einen Wert zu (0–127) .
Überlegungen:
- Anders als der Name schon sagt, sind kontinuierliche Controller-Daten nicht kontinuierlich. Anstatt wie bei der Automatisierung reibungslos zwischen den Werten zu interpolieren, kann sich der aktuelle Wert einer CC-Spur nur in diskreten Schritten ändern. Um reibungslos zu einem anderen Wert hochzufahren, müssen Sie eine große Anzahl von „Control Change“-Nachrichten senden, um den Wert mit einer kontrollierten Rate zu erhöhen oder zu verringern.
- Die MIDI-Spezifikation definiert, wofür die meisten 120 CCs verwendet werden sollen, obwohl nur sehr wenige Geräte mehr als eine Handvoll erfüllen. Ich stelle eine Tabelle aller CCs in Anhang III zur Verfügung .
- Die letzten acht CC-Nummern (120–127) repräsentieren eigentlich überhaupt keine CCs. Stattdessen stellen sie eine spezielle Kategorie von Nachrichten dar, die Kanalmodusnachrichten genannt werden . Kanalmodusnachrichten sind spezialisierte Befehle, die sich auf das gesamte Gerät auswirken, das sie empfängt. In der Praxis müssen Sie sich nicht allzu viele Gedanken darüber machen, aber ich liefere weitere Informationen darüber in Anhang I.
- Die CC-Nummern 0 und 32 werden von vielen Geräten zur Patch-Auswahl verwendet. Lesen Sie mehr darüber in Anhang IV .
Beugt die Tonhöhe nach oben oder unten. Duh.
Pitch Bend verhält sich ein bisschen wie ein CC. Tatsächlich behandeln die meisten MIDI-Editoren Pitch Bend, als wäre es nur ein weiteres CC. Ein 7-Bit-CC-Wert mit 128 möglichen Werten bietet jedoch nicht genügend Auflösung, um einen Pitch-Bend-Effekt zu verkaufen. Unsere Ohren sind erstaunlich darin, Tonhöhen aufzulösen, und selbst wenn wir uns einer neuen Tonhöhe jeweils um 1/128 nähern, klingt sie nicht glatt und organisch.
Um eine feinere Auflösung zu erhalten, verwenden „Pitch Bend“-Meldungen zwei Datenbytes, um einen einzelnen großen Wert zu übertragen. Wenn Sie sieben Bits einer Nachricht und sieben Bits einer anderen Nachricht zusammenquetschen, können Sie im Grunde genommen einen einzigen 14-Bit-Wert zusammenstellen und Ihre Auflösung um den Faktor 2⁷ oder 128 erhöhen.
Anstelle von 128 möglichen Werten für unsere Tonhöhenbeugung haben wir jetzt satte 16.384 – mehr als genug Schritte, um einen sanften Tonhöhenbeugungseffekt zu erzielen. Die rechte Hälfte wird durch das erste Datenbyte (das niedrigstwertige Byte oder LSB) und die linke Hälfte durch das zweite (das höchstwertige Byte oder MSB) bereitgestellt.
Überlegungen:
- Die Stärke der Tonhöhenverschiebung (wie viele Halbtöne nach oben oder unten eine maximale Tonhöhenverschiebung darstellt) ist von Instrument zu Instrument unterschiedlich. Es ist oft konfigurierbar.
- Pitch Bend ist bei 8192 „zentriert“ (wo es keine Tonhöhenänderung gibt).
- Pitch Bends wirken sich auf alle gespielten Noten auf einem Kanal aus, genau wie CCs.
- Die Programmierung mit MSBs und LSBs erfolgt am besten mit bitweisen Operatoren. Ich werde diese hier nicht durchgehen, aber ich habe einige Ressourcen in Anhang V bereitgestellt , falls Sie mehr erfahren möchten.
Einige MIDI-Controller, wie z. B. der Akai MPK225 , verfügen über eine sogenannte Aftertouch- Funktion . Aftertouch-Controller reagieren nicht nur auf die Geschwindigkeit jedes Tastendrucks, sondern auch kontinuierlich auf den Druck, mit dem die Tasten gehalten werden.
Aftertouch gibt es in zwei Varianten: Kanal-Aftertouch und polyphoner Aftertouch . Channel Aftertouch, auch bekannt als Mono Pressure , misst den Druck über die gesamte Tastatur, während polyphoner Aftertouch den Druck für jede Taste unabhängig misst. Aufgrund der geringeren Hardwarekosten ist Kanal-Aftertouch die üblichere der beiden. Kanaldrucknachrichten verwenden nur ein Datenbyte, das den Gesamtdruckpegel darstellt. Polyphone Tastendruckmeldungen verwenden zwei: Die erste meldet die Tonhöhe (unter Verwendung der Standardtonhöhennummern) und die zweite meldet ihren Druck.
Überlegungen:
- Polyphonic Aftertouch ist die einzige Steuerung, die für jede Tonhöhe unabhängig eingestellt werden kann. Alle anderen Regler (außer Note On oder Off) wirken sich auf den gesamten Kanal aus.
- Eine MIDI-Erweiterung namens „MIDI Polyphonic Expression“ (MPE) soll es ermöglichen, CCs und Pitch Bend auch polyphon anzuwenden. MPE ist nicht sehr verbreitet, wurde aber durch Geräte wie das ROLI Seaboard populär gemacht . Ich habe Links zu Ressourcen bereitgestellt, die es in Anhang V behandeln .
Wenn Sie nicht viel externe MIDI-Hardware verwenden, werden Sie diesen Nachrichtentyp wahrscheinlich nicht allzu oft verwenden. Eine „Program Change“-Meldung befiehlt einem Gerät, ein neues Programm (ein neues Patch oder Preset) zu laden. Es verwendet nur ein Datenbyte, das den Index des Patches angibt.
Dieser Nachrichtentyp ist beim Komponieren mit externen MIDI-Geräten sehr hilfreich. Solange Ihre Hardware Presets unterstützt, kann Ihr Projekt oder Ihre Session damit umgehen, sie auszuwählen und zu laden: Ordnen Sie einfach die entsprechenden „Programmwechsel“-Meldungen am Anfang an.
Überlegungen:
- Instrumente mit mehr als 128 Presets speichern ihre Patches im Allgemeinen über mehrere Bänke hinweg . Um Programme abzurufen, die in anderen Bänken gespeichert sind, werden CCs 0 und 32 in „Bank Select“-Meldungen umfunktioniert. In Anhang IV gehe ich darauf ein, wie das funktioniert.
- Durch die clevere Planung von Programmwechselmeldungen ist es für ein einzelnes Gerät möglich, mehr als 16 verschiedene Patches in einem Stück zu verwenden, solange sie nicht gleichzeitig spielen. Um ehrlich zu sein, sollten Sie die Dinge wahrscheinlich in separate Aufnahmen aufteilen, wenn Sie so viele Stimmen aus einem einzigen Gerät melken müssen.
- Cubase und Nuendo bieten native Unterstützung für Programmwechselmeldungen im MIDI-Spurinspektor. Ich bin mir nicht sicher, wie viele andere DAWs dies unterstützen.
Systemmeldungen sind ein fortgeschrittenes Thema, das ich hier nicht behandeln werde. Sie verdienen wirklich einen eigenen Artikel. Sie werden für alle möglichen Dinge verwendet; riesige Datenübertragungen (sogenannte „ Dumps “), Synchronisierung von Uhren, Übertragung von Timecode und mehr.
In Zukunft werde ich vielleicht einen Leitfaden für Systemmeldungen schreiben, aber im Moment machen Sie sich darüber keine Sorgen. Beachten Sie jedoch, dass sie existieren und im Allgemeinen nicht in der MIDI-Komposition verwendet werden.
4. Über Hexadezimal
Bevor wir fortfahren, sollten wir über all die 0x sprechen, die ich im vorherigen Abschnitt verwendet habe. Das Präfix 0x sagt Ihnen, dass eine Zahl hexadezimal ist.⁵ Wenn Sie in Ihre erweiterten MIDI-Tools und Gerätehandbücher eintauchen, werden Sie feststellen, dass MIDI-Befehle fast immer hexadezimal statt binär oder zur Basis zehn dargestellt werden. Das mag auf den ersten Blick kontraintuitiv erscheinen – ich meine, wenn Sie überhaupt eine Binärzahl umwandeln wollen, warum nicht einfach in eine für Menschen lesbare Basis zehn umwandeln?
Die Antwort ist, dass es einfach praktischer ist. Während ich denke, dass Binärdateien der beste Weg sind, MIDI zu lernen , ist es ziemlich umständlich, damit zu arbeiten. Jedes Byte auf acht Stellen zu verteilen, macht das Lesen und Schreiben zu einer lästigen Pflicht, und da alles im Binärformat nur aus Einsen und Nullen besteht, kann man beim Lesen langer Sequenzen leicht seinen Platz verlieren.
Daher arbeiten bitweise Programmierer normalerweise hexadezimal. Es reduziert jedes Byte auf nur zwei Ziffern, und da 16 eine Potenz von 2 ist, wirkt sich jedes Bit, das Sie ändern, nur auf eine Hexadezimalziffer aus. Dadurch können Sie sich jede hexadezimale Ziffer als eine eigene Vier-Bit-Zahl vorstellen. Wenn Sie bitweise mit einer Dezimaldarstellung arbeiten wollten, müssten Sie das gesamte Byte in binär und wieder zurück konvertieren.
Es gibt nur ein paar Dinge zu beachten, wenn Sie mit MIDI im Hexadezimalformat arbeiten.
- Aufgrund der hexadezimalen Gruppierung der Bits können Sie erkennen, welchen MIDI-Kanal ein Statusbyte anspricht, indem Sie nur auf die rechte Hex-Ziffer schauen.
- Wenn die linke Ziffer eines Bytes
0x7kleiner oder gleich ist, wissen Sie, dass es sich um ein Datenbyte handelt, und ebenso wissen Sie, dass ein Byte, das mit0x8oder höher beginnt, ein Statusbyte ist. - Der maximale Datenbytewert, 127, ist
0x7Fhexadezimal.
5. Anwendungsbeispiel: Beethovens Fünfte Symphonie
Als wir zuletzt mit diesem Beispiel aufgehört haben, hatten wir gerade die rohe Binärdatei in diskrete Nachrichten zerlegt. Das sah so aus:
Um dies einfacher zu handhaben, wandeln wir es in Hexadezimal um. Ich lasse die Statusbytes rot und die Datenbytes blau.
Wenn wir wissen, was wir jetzt wissen, erkennen wir, dass die 0x9 und 0x8, die den Statusbytes vorangehen, die Nachrichten als „note on“ bzw. „note off“ identifizieren. Die rechte Ziffer des Bytes sagt uns, dass sie auf MIDI-Kanal 1.⁶ abzielen
So sieht die Leistung mit übersetzten Statusbytes aus.
Bei den Nachrichtentypen „Note On“ und „Note Off“ codiert das erste Datenbyte eine Tonhöhe und das zweite eine Anschlagstärke. Der Velocity-Wert ist nur eine Zahl. Um die Tonhöhe herauszufinden, müssen wir uns auf eine MIDI-Notentabelle beziehen . Und denken Sie daran, dass „Note Off“-Velocitys nicht verwendet werden.
Lassen Sie uns die Übersetzung beenden:
Das ist es! Das sind die übersetzten MIDI-Anweisungen, die die ersten vier Noten von Beethovens Fünfter codieren. Dum dum duum!
Wenn Sie wissen, was Sie jetzt wissen, können Sie gängige MIDI-Meldungen von Hand erstellen und dekodieren. Fortgeschrittenere Tools wie MIDI-Transformer und logische Editoren stehen Ihnen jetzt offen. Es gibt jedoch immer mehr zu lernen. Wenn Sie ein Wissenshunger sind, habe ich in Anhang V einige Ressourcen bereitgestellt, die Sie verwenden können, um MIDI weiter zu studieren .
6. Bonuslektion: Laufstatus
Es gibt eine praktische Abkürzung, die MIDI bietet, die ich bis jetzt nicht erwähnt habe, um die Dinge einfach zu halten. So funktioniert es: Sobald Sie ein Statusbyte gesendet haben, müssen Sie kein weiteres senden, bis es sich vom letzten unterscheidet. Das zuletzt empfangene Statusbyte bleibt gewissermaßen „on“ und wird zur Interpretation aller folgenden Datenbytes verwendet. Dies wird als Laufstatus bezeichnet .
Betrachten Sie die folgende Bytefolge:
Was Sie sehen, ist genau die gleiche Aufführung von Beethovens Fünfter, die wir im angewandten Beispiel übersetzt haben, aber mit fast allen fehlenden Statusbytes. Aufgrund des laufenden Status ist diese Leistung jedoch genauso gültig wie die erste. Sobald wir das Statusbyte gesendet haben 0x90, wird es zum laufenden Status, und jedes folgende Bytepaar kann so behandelt werden, als ob ihm ein eigenes „ 0x90“ vorangestellt wäre.
Dadurch können wir viele wiederholte Statusbytes ausschneiden, was unsere MIDI-Streams dramatisch verkürzen kann. Damals, als Computer langsamer und Baudraten restriktiver waren, war dies unglaublich hilfreich. Heutzutage sind Computer jedoch so schnell, dass die Verwendung des Ausführungsstatus keine wirkliche Leistungssteigerung bewirkt. Ich erwähne es dennoch, denn wenn Sie MIDI-Programmierungen vornehmen, sollten Sie damit rechnen, dass hier und da Statusbytes ausgelassen werden.
Beachten Sie, dass wir Noten sowohl beginnen als auch beenden können, ohne den laufenden Status zu unterbrechen, da „Note On“ mit Null-Velocity als „Note Off“ zählt. zumindest, bis wir eine Steuerungsänderung oder eine Nachricht an einen anderen Kanal senden müssen.
- Dies geschieht mit einer MIDI-Erweiterung namens MIDI Show Control.
- "Was du siehst ist was du kriegst".
- MIDI-Kanalnummern beginnen mit 1, während ihre Darstellung hier mit 0 beginnt. Ein Wert von 0 bedeutet Kanal 1 und ein Wert von 15 bedeutet Kanal 16.
- Velocity kann man sich vorstellen wie „hart“ eine Note angeschlagen wird.
- Eine andere gebräuchliche Schreibweise besteht darin, der Zahl einen Großbuchstaben „H“ folgen zu lassen, wie in „78H“.
- Denken Sie daran, dass die Zahl in der Nachricht zwar eine Null ist, aber Kanal 1 entspricht, da wir mit dem Zählen von Zahlen bei 0 und Kanälen bei 1 beginnen.
Anhang I: Meldungen im Kanalmodus
„Kanalmodus“-Meldungen sind spezielle Befehle, die das Verhalten eines gesamten Geräts ändern, indem sie seinen MIDI-Modus ändern . Naja, so ungefähr.
In der Praxis werden „Kanalmodus“-Nachrichten nur verwendet, um bestimmte Funktionen ein- oder auszuschalten und bestimmte Befehle zu senden. Was MIDI als „Modi“ aufzählt, sind im Wesentlichen nur unterschiedliche Konfigurationen der Omni- und Poly-Umschalter. Um ehrlich zu sein, denke ich nicht, dass „Modi“ eine super passende Art sind, über diese Befehle nachzudenken; aber ich werde zumindest erklären, was die Befehle tun.
Nachrichten im Kanalmodus haben keinen eigenen Nachrichtentyp. Stattdessen werden die letzten acht kontinuierlichen Controller-Nummern (CCs 120–127) umfunktioniert. Die Kanalmodusmeldungen lauten wie folgt:
Damit ein Gerät auf Kanalmodusnachrichten antworten kann, muss es diese auf seinem Basiskanal empfangen . Der Basiskanal eines Geräts ist der einzige MIDI-Kanal, auf dem Kanalmodusmeldungen als gültig betrachtet werden. Bei vielen Geräten ist dieser Kanal konfigurierbar. Auf diese Weise können Nachrichten im Kanalmodus auf bestimmte Geräte innerhalb einer Daisy-Chain abzielen.
Was folgt, ist eine kurze Zusammenfassung jeder Kanalmodusmeldung. Anhang V enthält Ressourcen für weitere Studien.
- All Sound Off („CC“ 120): Schaltet alle Sounds aus, die das Instrument gerade erzeugt, einschließlich Noten-Decay- und Reverb-Effekten.
- Alle Controller zurücksetzen („CC“ 121): Setzt alle CCs, Switch-Controller, Pitch-Bend- und Aftertouch-Effekte auf ihre Standardwerte zurück. Auf welchen Wert jeder Controller zurückkehrt, hängt vom Controller ab und ist in der MIDI-Spezifikation definiert.
- Local Control („CC“ 122): Trennt die Tastatur eines Synthesizers von seinem Tongenerator. Auf diese Weise können Sie einen Synthesizer als MIDI-Controller verwenden und gleichzeitig für ihn sequenzieren. Stellen Sie auf ein
0x00, um die lokale Steuerung auszuschalten und0x7Fwieder einzuschalten. - Alle Noten aus („CC“ 123): Die „Paniktaste“. All Notes Off entspricht dem Senden von „Note Off“-Meldungen für jede Tonhöhe auf jedem Kanal. Es ist praktisch, um festsitzende Notizen zu lösen. Lokal getriggerte Noten sind davon nicht betroffen.
- Omni-Modus aus/ein („CCs“ 124, 125): Wenn der Omni-Modus eingeschaltet ist, antwortet jeder Kanal auf jede eingehende Nachricht, egal welcher Kanal im Statusbyte angegeben ist.
- Mono-Modus / Poly-Modus („CCs“ 126, 127): Zwingt eine oder mehrere Stimmen zu monophonem oder polyphonem Verhalten. Wenn der „Mono-Modus ein“-Wert auf eingestellt ist
0x00, werden der Basiskanal und alle darüber liegenden Kanäle in den Mono-Modus versetzt. Für jeden anderen Wert n werden die Kanäle n bis n+m-1 in den Monomodus versetzt (wobei m der Wert des zweiten Datenbytes ist). Eine „Poly-Modus ein“-Meldung setzt alle Kanäle zurück in den Poly-Modus.
Anhang III: Standard-CC-Aufgaben
Die MIDI-Spezifikation definiert standardisierte Verwendungen von CCs, die ich hier kopiert habe. Alle CC-Nummern sind definiert, außer: 3, 9, 14, 15, 20–31, 85–90 und 102–119 . Die am häufigsten unterstützten CCs sind Modulation ( 0x01), Foot Controller ( 0x04), Channel Volume ( 0x07), Pan ( 0x0A), Expression ( 0x0B) und Sustain ( 0x40).
Sehen Sie sich die Ressourcen in Anhang V an , wenn Sie mehr über diese CCs erfahren möchten.
Anhang IV: Bankwechselmeldungen
Moderne Synthesizer können viel, viel mehr Presets speichern und abrufen, als durch eine einzige Programmwechselnachricht adressiert werden können. Um dies zu umgehen, sortieren Hersteller ihre Programme oft in Banken ein . Jede Bank hat maximal 128 Presets und eine eindeutige 7-Bit- oder 14-Bit-Adresse.
Um ein Patch von einer anderen Bank abzurufen, müssen Sie zuerst eine „Bank Select“-Nachricht mit seiner Adresse senden. Senden Sie danach wie gewohnt eine Programmwechselnachricht, und das geladene Patch kommt von der neuen Bank.
Wie Sie vielleicht bemerkt haben, handelt es sich dabei eigentlich um „Control Change“-Meldungen für CCs 0 und 32 . Für 7-Bit-Adressen wird nur CC 0 verwendet. Bei 14-Bit-Adressen repräsentiert CC 0 ein MSB und 32 ein LSB. Wenn Sie eine Einführung in MSBs und LSBs benötigen, finden Sie eine im Pitch Bend- Abschnitt des Hauptartikels.
Ob ein Gerät 7-Bit- oder 14-Bit-Adressen verwendet, ist irgendwie willkürlich, und Sie müssen in Ihrem Handbuch nachsehen, welche Adresse Sie verwenden müssen, wenn Sie mit Ihrem Gerät kommunizieren.
Anhang V: Zusätzliche Ressourcen
- Die MIDI Association : Die MIDI Association ist die primäre Quelle für Informationen über oder im Zusammenhang mit der MIDI-Technologie. Die Registrierung ist kostenlos, und sobald Sie dies getan haben, können Sie The Complete MIDI 1.0 Detaillierte Spezifikation hier herunterladen .
- Bitwise Operation (Wikipedia) : Ich weiß, ich weiß, Wikipedia ist keine gute primäre Ressource, aber ich mag diesen Artikel, weil er sprachneutral ist und keine Werbung hat. Informieren Sie sich über arithmetische Bitverschiebungen und bitweises ODER, die bei der Arbeit mit MSBs und LSBs nützlich sind.
- Was ist MPE? : Ein Artikel in der Support-Datenbank von ROLI über MIDI Polyphonic Expression, der in multidimensionalen Controllern wie den Seaboard-Produkten verwendet wird. MPE wurde im Januar 2018 offiziell von der MIDI Manufacturer's Association angenommen, und ein Download-Link zur Spezifikation ist hier verfügbar .
- MIDI-Modi (Electronic Music Interactive v2, University of Oregon): Diese Seite bietet einen guten, kompakten Überblick über die vier Standard-MIDI-Modi. Es ist Teil eines längeren Online-Kurses über elektronische Musik.
- MIDI-CC-Liste (Nick Fever) : Eine Liste der Standard-CCs mit ausführlicheren Erklärungen. Wenn Sie noch weitere Informationen benötigen, nachdem Sie Nicks Liste durchgesehen haben, lesen Sie The Complete MIDI 1.0 Detailed Specification, das Sie hier herunterladen können .
- MIDI System Common Messages , MIDI System Realtime Messages und MIDI System Exclusive Message (RecordingBlogs Wiki): Hervorragende Einführungen in jede Art von Systemmeldung.
- MIDI Registered Parameter Number (RecordingBlogs Wiki): Eine Übersicht über registrierte Parameternummern, die als Erweiterung der CCs betrachtet werden können. Sobald Sie RPNs verstanden haben, stehen Ihnen auch NRPNs (Non-Registered Parameter Numbers) zur Verfügung.

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































