Audiozeugs
Hier finden sich verschiedene Dinge, die alle mit Audio zu tun haben. Ich arbeite mit Ableton, Reason, MaxMSP, pureData und ein paar anderen Dinge mehr. Immer wenn mir irgendwas unklar war und ich länger nachforschen musste, werde ich es hier niederschreiben :)
MIDI Clock über LAN mit Max/MSP
Warum das ganze?
Um zwei Rechner per Ethernet zu verbinden braucht es nichts weiter, als ein Ethernetkabel (wer hätte das gedacht??? ;) ).
Doch was passiert, wenn man zwei Applikationen auf zwei Rechnern laufen hat, die synchron zueinander Sound generieren sollen? In diesem Beispiel geht es konkret darum, Reason auf zwei Rechnern laufen zu lassen, und den Output in einen DJ-Mixer zu geben und somit die Möglichkeit zu haben, seine Reason-Tracks in einem Live-DJ-Set unterzubringen.
Reason selbst bietet nicht die Möglichkeit eine MIDI-Clock (ein Geschwindigkeitsgeber über MIDI-Signale) für externe Applikationen bereit zu stellen - somit ist ein Umweg über eine andere Applikation nötig.
Hier bieten sich sowohl pureData, als auch Max/MSP an.
Da ich mit Max/MSP noch nicht so viel gearbeitet habe, wollte ich diese Herausforderung in Max meistern.
MIDI-Clock Server

- Aufbau des MIDI-Clock Servers in Max/MSP
Obiges Bild zeigt den Patch für den Server in Max/MSP. Das sync~-Objekt bildet hier die eigentliche MIDI-Clock.
Sie wird von start und stop gesteuert und über den float-Input mit der geforderten BPM-Zahl versorgt.
Über den rechten Output kommt das generierte MIDI-Clock-Signal raus und wird einmal per udp an den entfernten Rechner geschickt (192.168.178.67) und mit einer Verzögerung von 4ms (siehe pipe-Objekt) an den eigenen Rechner geschickt wird (192.168.178.68). Diese 4ms sind ein Wert, der bei mir normalerweise 2ms ist und ist die Verzögerung über die Ethernetverbindung.
MIDI-Clock Client

- Aufbau des MIDI-Clock Clients in Max/MSP
In dieser Grafik ist der Client-Patcher aufgeführt. Über Port 2000 wird hier auf UDP-Nachrichten gewartet, die dann direkt in den C(ontrol)C(hange)-Input vom midiformat-Objekt geleitet wird. Daraus wird aus der übertragenen Nachricht wieder eine MIDI-Clock-Nachricht, die direkt nach midiout geleitet wird.
Reason als MIDI-Clock-Slave
Zunächst muss man dafür sorgen, dass in Max/MSP die gewünschte MIDI-Schnittstelle eingestellt ist.
Dazu klickt man im gelockten Zustand in Max/MSP auf das midiout-Objekt im Client und selektiert den entsprechenden Output, über den man das Clock-Signal anschließend in Reason einspeist.
Unter Mac OS X
sollten from MaxMSP-MIDI Outputs sicht- und wählbar sein und man kann gleich zu den Reason Einstellungen springen.
Unter Windows
funktioniert das nicht so einfach, wie unter Mac OS X, da hier schon Max/MSP keine from MaxMSP-MIDI-Outputs hat.
Diese können allerdings über MIDIYoke nachinstalliert werden.
Unter Windows 7 muss man dazu zunächst in der Systemsteuerung→‘Benutzerkonten und Jugendschutz’→‘Benutzerkonten’→‘Einstellungen der Benutzerkontensteuerung ändern’ den niedrigsten Punkt (nie benachrichtigen) auswählen und das System neustarten.
Anschließend kann man MidiYoke installieren und die Einstellungen in der Systemsteuerung nach einem weiteren Neustart wieder zurücksetzen.
Nun kann man auch unter Windows virtuelle MIDI-Ports nutzen.
Reason Einstellungen
Man muss Reason zunächst sagen, welcher Port für die MIDI-Clock als Eingang genutzt werden soll. Das passiert über ‘Bearbeiten’ → ‘Voreinstellungen’ → ‘Experten-Einstellungen’ bzw. unter Mac OS X über ‘Reason’ → ‘Voreinstellungen’ → ‘Experten-Einstellungen’ mit dem Punkt Port.
Anschließend muss noch unter ‘Optionen’ → ‘Synchronisation’ der Punkt MIDI Clock ausgewählt werden und schließlich und endlich in dem Max/MSP Server Patcher die Start-Message angetriggern.