Dieser Beitrag ist laengst ueberfaellig. Eigentlich ist er ueberfaellig: Ich habe MIDI Aid fuer Mac und MIDI Aid fuer iPad, iPhone und iPod touch veroeffentlicht.

Wir haben Code zum Empfangen von MIDI-Nachrichten (siehe [diesen Beitrag]({% post_url 2015-03-10-on-coremidi-callbacks %})), aber wir wissen noch nicht, wie diese Nachrichten aussehen. Lass uns das in diesem Beitrag herausfinden.

Die MIDI Manufacturers Association hat eine Spezifikation fuer MIDI-Nachrichten, aber sie kann anfangs etwas schwer zu verstehen sein.

Im Allgemeinen hat jede Nachricht maximal drei Bytes. Es gibt eine grosse Ausnahme namens “SysEx”-Nachricht, aber diese sind vorerst nicht wichtig und werden hier nicht im Detail behandelt. Das allererste Byte ist das Status-Byte und bestimmt die Art der Nachricht und auf welchem Kanal sie empfangen wurde. Diesem ersten Byte folgen ein oder zwei Daten-Bytes.

Als Beispiel verwenden wir die “Note On”-Nachricht. Diese wird ausgeloest, wenn eine Taste auf einem MIDI-Controller gedrueckt wird; im folgenden Beispiel wird es das mittlere C sein, gedrueckt mit mittlerer Anschlagstaerke - genau zwischen mezzo piano und mezzo forte.

Erstes Byte: Die ersten vier Bits zeigen den Typ der Nachricht an und die zweiten vier Bits sagen uns, auf welchem Kanal sie empfangen wurde. Dein MIDI-Geraet kann maximal 16 Kanaele haben. In diesem Beispiel haben wir ein Note On Event (1001 9) auf Kanal 0 (0000 0).

Zweites Byte: Notennummer von 0-127; 60 ist C4 (mittleres C).

Drittes Byte: 0-127: Noten-Anschlagstaerke - wie stark die Taste gedrueckt wurde.

Wir koennen auch alle Nachrichten nach ihrem Zweck gruppieren. Ich verwende das in MIDI Aid fuer den Filtermechanismus, um einen besseren Ueberblick in der GUI zu geben.

  • Channel: Events, die kanalspezifisch sind, wie das obige “Note On”-Event.
  • System Common: Unabhaengig von einem bestimmten Kanal.
  • System Exclusive: Herstellerspezifische Nachrichten.

Bei der Implementierung von MIDI Aid habe ich mich hauptsaechlich auf diese Uebersicht bezogen. Das hat mir wirklich sehr geholfen!

Fertig fuer heute!