Midi aus der Konsole
Die MIDI-Technologie ist sehr alt. Noch bevor man überhaupt daran dachte mit normalen PCs Musik zu machen lief die digitale Kommunikation zwischen den Elementen eines Tonstudios über den MIDI-Standard. Die wichtigste Eigenschaft von MIDI: Es werden nur ausschließlich Steuer- und Interpretationsinformationen verarbeitet. Darunter befindet sich nicht ein einziges Bit “Klang” im herkömmlichen Sinne. Zur Klangerzeugung braucht man immer noch herkömmliche Geräte. Wie steuert man die aber mit der guten alten Shell?
Welche Tools gibt es?
Für Fehlerdiagnose, aber auch für die produktive Praxis finde ich den Umgang mit MIDI aus der Shell wichtig. Für jeden der 3 großen Bereiche gibt es ein Tool. Aplaymidi für das Abspielen, arecordmidi für das Aufnehmen und amidi für das senden von Steuerdaten. Alle Programme haben gemeinsam, dass sie immer einen Midi-Port wissen möchten, an den sie senden oder empfangen. Diese Midi-Ports werden von ALSA verwaltet.
aplaymidi -l zeigt die Ausgänge an; dorthin kann man Daten schicken zum abspielen. arecordmidi -l zeigt die Eingänge an; von dort kommen Midisignale, die man aufnehmen kann. amidi -l zeigt die Hardware-Ausgänge an; dorthin kann man die Steuersignale senden.
Und wer macht jetzt die Musik?
Für die Erzeugung der Musik braucht man noch einen Synthesizer, Sampler oder irgend ein anderes virtuelles oder echtes Gerät, das Geräusche machen kann. Für das Abspielen gewöhnlicher Midi-Daten ist Timidity++ bestens geeignet. Jede Distribution sollte den als Paket anbieten. Einmal installiert (und als Dienst gestartet) erscheint er als Midi-Port, bei mir sogar gleich dreimal:
$ aplaymidi -l
Port Client name Port name
72:0 MidiSport 2x2 MidiSport 2x2 MIDI 1
72:1 MidiSport 2x2 MidiSport 2x2 MIDI 2
128:0 TiMidity TiMidity port 0
128:1 TiMidity TiMidity port 1
128:2 TiMidity TiMidity port 2
128:3 TiMidity TiMidity port 3
Wenn man jetzt zum Beispiel den ersten Satz der aplaymidi --port=client:port angegeben. Also:
wget http://upload.wikimedia.org/wikipedia/commons/0/0f/KdF1.mid
aplaymidi --port=128:0 KdF1.mid
Aus den Lautsprechern sollte jetzt eine kleine Fuge mit Cembalo-Klang ertönen.
Daten an die Hardware
Um wichtige Daten wie Betriebssystem oder Presets von und auf externe Geräte zu bekommen, muss man amidi. Mit der Option -l holt man sich den richtigen Hardware-Aus-/Eingang, mit -r oder -s empfängt oder sendet man die Daten. Ein Beispiel:
$ amidi -l
Device Name
hw:1,0,0 MidiSport 2x2 MIDI 1
hw:1,0,1 MidiSport 2x2 MIDI 2
$ amidi -p hw:1,0,0 -s Factory\ Program\ Library\ v2.00.syx
Hiermit sendet man etwa eine Preset-Datei an ein Gerät an Anschluss 1 meines MidiSport 2×2.
Es gibt ein grafisches Tool namens SysExxer das viele übersichtliche Funktionen und eine einfache Handhabung für Sysex-Daten bietet. Leider wird daran aber nicht mehr weiterentwickelt. Der Autor schreibt aber gerade an einem neuen Programm, das schon recht gut funktioniert (ich hab’s schon getestet) und wohl bald veröffentlicht wird.
WikiCommons, GFDL

