Automatic Cinema bedient sich eines Client-Server-Konzepts. Der Server bietet eine Steuerschnittstelle an und stellt die zentrale Berechnung der Narration an. Nebst dem Server bestehen Clients zur Dateneingabe, Zielformulierung und Medienanzeige. Die Berechnung der Narration ist Kern und zugleich die grösste Herausforderung des gesamten Projektes.
Als typischer Hintergrundprozess wird der Server automatisch beim Systemstart oder manuell von der Kommandozeile eines Linux-Rechners gestartet. Der Server verfügt nicht über eine Benutzerschnittstelle, er kann bloss gestartet und gestoppt werden. Die Kommunikation geschieht über das Netzwerk nach einem genau spezifizierten Protokoll. Man könnte in diesem Sinn auch von einer Steuersprache sprechen.
Der Steuer-Client meldet sich beispielsweise beim Server an und fragt mit dem Befehl getShows die verfügbaren Inszenierungen ab. Darauf teilt er mit setShow:[Nr] die entsprechende Wahl dem Server mit. Weiter lädt der Client mit getEnds und getStyles die verfügbaren Zielmaterialien und Stilvorlagen vom Server und konfiguriert im Gegenzug den Server mit den Befehlen setEnd und setStyle. Stile und Zielmaterialien können jeweils direkt, unter Verwendung einer eindeutigen Id oder parametrisch über die Konfiguration bestimmter Werte gewählt werden. Für den parametrischen Fall errechnet der Server ein passendes Zielmaterial bzw. einen Stil. Wird beim Steuer-Client die Play-Taste gedrückt, wird ein PlaybackInit:[Sec] Befehl ausgelöst. Damit wird der Algorithmus zur Berechnung der Narration in Gang gesetzt. Ist die Berechnung einmal erfolgt, kann der Steuer-Client ein playback-Befehl geben, und alle Wiedergabe-Clients erhalten die Signale zur Darstellung ihrer zugeordneten Medien.
Abspiel-Clients sind verantwortlich für die korrekte Darstellung von Medien. Man kann sich dabei kleine Skripte vorstellen, die ein Programm fernsteuern. Für die Audio und Video-Wiedergabe könnte unter Linux der Mplayer eingesetzt werden, der sich sehr gut mit einer Skriptsprache wie PERL kontrollieren lässt. Der Code hierzu wurde in einem älteren Projekt schon weitgehend entwickelt und muss nur noch angepasst werden. Abspiel-Clients müssen sich beim Server anmelden. Mittels getChannels kann ein Client in Erfahrung bringen, ob der Server überhaupt für ihn passende Daten anbieten kann. Ist dies der Fall, wird der Client mit addChannel:[Nr] seinen Kanal reservieren. Danach ist der Client in Warteposition und spielt, wenn er einen Befehl vom Server bekommt, zu gegebener Zeit das für ihn bestimmte Medium.
Downloads:

