Das Problem
Wir haben auf einer Spielstätte einen Panasonic PT-RZ990 Beamer mit integriertem Shutter. Das Bild bekommt der Beamer von einem alten Mac Pro mit unterschiedlicher Software. Je nach Bedarf wird Garage Cube Modul8, QLab 3 oder VDMX5 eingesetzt.
Natürlich möchte man den Shutter innerhalb einer Vorstellung (im Idealfall in der Ablaufsteuerung vollautomatisiert) öffnen und schließen können. Klar kann man die Fernbedienung des Beamers mit einem Kabel an das Gerät anschließen und dann den Shutter jederzeit öffnen und schließen. Doch das geht bestimmt auch komfortabler.
Der Beamer hängt im LAN und alle möglichen Funktionen kann man mit einem simplen TCP Paket auslösen. Sendet man dem Beamer ein Paket mit dem Inhalt "%1AVMT 31" wird der Shutter geschlossen. Erhält er ein Paket mit "%1AVMT 30" wird der Shutter geöffnet. Das Protokoll, dass diese Befehle definiert heißt übrigens PJLink.
Diesen Weg wollte ich gerne nutzen.
Zunächst hatte ich große Hoffnungen, weil QLab eine Funktion hat mit der man ein Script auslösen kann. Leider kann diese Funktion nur AppleScript und ich habe es nicht gechafft ein Paket an den Beamer zu senden. Der Fehler saß bestimmt vor dem Bildschirm. Außerdem hätte diese Lösung auch nur in QLab funktioniert.
Die eigentliche Ablaufsteuerung während einer Vorstellung läuft auf einem zweiten Rechner, einem iMac mit Ableton Live. Der iMac spielt aus Ableton Live die Musik für die Vorstellung aus und sendet MIDI Kommandos an den MacPro und die entsprechende Videosoftware reagiert darauf.
Der zweite naheliegende Gedanke war irgendwie aus dem iMac aus Live heraus das TCP Paket ins LAN zu senden. Dazu habe ich im Netz mehrere Beispiele auf Basis von Max/MSP bzw. Max for Live gefunden. Diese brauchten jedoch alle eine Java Umgebung um zu funktionieren. Da ich aber Produktivsysteme ungerne mit unnötiger Software belaste und dann auch noch mit irgendeinem Java Runtime Kram, wurde die Idee auch wieder schnell verworfen.
Und da kommt Python ins Spiel. Ableton Live sendet ja MIDI Noten an den MacPro. Wenn nun im Hintergrund auf dem MacPro ein Programm läuft und auf spezielle MIDI Noten wartet um dann die nötigen TCP Pakete zu senden, habe ich eine Lösung gefunden, die auch unabhängig von der verwendeten Zuspielsoftware ist.
Auf geht's zur ersten Lösung
Natürlich möchte man den Shutter innerhalb einer Vorstellung (im Idealfall in der Ablaufsteuerung vollautomatisiert) öffnen und schließen können. Klar kann man die Fernbedienung des Beamers mit einem Kabel an das Gerät anschließen und dann den Shutter jederzeit öffnen und schließen. Doch das geht bestimmt auch komfortabler.
Der Beamer hängt im LAN und alle möglichen Funktionen kann man mit einem simplen TCP Paket auslösen. Sendet man dem Beamer ein Paket mit dem Inhalt "%1AVMT 31" wird der Shutter geschlossen. Erhält er ein Paket mit "%1AVMT 30" wird der Shutter geöffnet. Das Protokoll, dass diese Befehle definiert heißt übrigens PJLink.
Diesen Weg wollte ich gerne nutzen.
Zunächst hatte ich große Hoffnungen, weil QLab eine Funktion hat mit der man ein Script auslösen kann. Leider kann diese Funktion nur AppleScript und ich habe es nicht gechafft ein Paket an den Beamer zu senden. Der Fehler saß bestimmt vor dem Bildschirm. Außerdem hätte diese Lösung auch nur in QLab funktioniert.
Die eigentliche Ablaufsteuerung während einer Vorstellung läuft auf einem zweiten Rechner, einem iMac mit Ableton Live. Der iMac spielt aus Ableton Live die Musik für die Vorstellung aus und sendet MIDI Kommandos an den MacPro und die entsprechende Videosoftware reagiert darauf.
Der zweite naheliegende Gedanke war irgendwie aus dem iMac aus Live heraus das TCP Paket ins LAN zu senden. Dazu habe ich im Netz mehrere Beispiele auf Basis von Max/MSP bzw. Max for Live gefunden. Diese brauchten jedoch alle eine Java Umgebung um zu funktionieren. Da ich aber Produktivsysteme ungerne mit unnötiger Software belaste und dann auch noch mit irgendeinem Java Runtime Kram, wurde die Idee auch wieder schnell verworfen.
Und da kommt Python ins Spiel. Ableton Live sendet ja MIDI Noten an den MacPro. Wenn nun im Hintergrund auf dem MacPro ein Programm läuft und auf spezielle MIDI Noten wartet um dann die nötigen TCP Pakete zu senden, habe ich eine Lösung gefunden, die auch unabhängig von der verwendeten Zuspielsoftware ist.
Auf geht's zur ersten Lösung