Zum Inhalt springen
MusicStation – Start

Fernbedienung für das iPad

Plattform: Die Fernbedienungs-App dieser Version, MusicStationRemote, ist für das iPad gebaut. Die Oberfläche der Fernbedienung und die Bibliothek dahinter sind ein iOS-Paket, das auch auf dem iPhone laufen soll; eine Ansicht für das iPhone folgt in einer späteren Version. Bis dahin wird die App auf einem iPad installiert.

Die MusicStation-Fernbedienung ist die iPad-App, die den Transport und die Clips einer laufenden MusicStation über das lokale Netzwerk steuert. Sie ist ein normaler Client desselben Steuerprotokolls, das auch die Oberfläche verwendet: Die Bridge (msh-bridge) läuft auf dem Mac neben der Engine, verbindet sich mit ihr über die Loopback-Adresse und ist der einzige Teil von MusicStation, der im Netzwerk sichtbar ist. Die Fernbedienung spricht nie direkt mit der Engine und berührt nie den Audio-Pfad.

Was die Fernbedienung braucht:

  • MusicStation und die Bridge, beide laufend auf dem Mac und im selben Netzwerk wie das iPad.
  • Den Kopplungsschlüssel der Bridge - ein gemeinsames Geheimnis, das die Bridge selbst anzeigt (siehe Kopplungsschlüssel).
  • Die Adresse der Bridge. Die Fernbedienung findet Bridges über Bonjour selbst (_msh-remote._tcp, Port 47900) und zeigt sie unter dem Namen an, den sie veröffentlichen (siehe Bridges im Netzwerk); die WebSocket-Verbindung, die sie öffnet, lautet ws://<Host>:47900/ws.

Das Fenster der Fernbedienung besteht aus drei Teilen: der Kopfzeile mit der Bridge, mit der sie spricht, dem Verbindungszustand, Trennen und dem Sprachmenü; dem Verbindungsbildschirm mit der Liste der gefundenen Bridges, dem Adressfeld, dem Kopplungsschlüssel, der Sprachauswahl und Verbinden; und, sobald die Verbindung gekoppelt ist, dem Session-Raster der laufenden MusicStation zusammen mit dem Transport, den das Kapitel Transport beschreibt. Die Texte der Fernbedienung gibt es auf Deutsch und Englisch; sie folgen der Sprache des Geräts (siehe Sprache).

Bridges im Netzwerk

Die Liste oben auf dem Verbindungsbildschirm, überschrieben mit Bridges im Netzwerk: jede MusicStation-Bridge, die sich in Ihrem Netzwerk über Bonjour ankündigt (_msh-remote._tcp, Port 47900). Jede Zeile zeigt den Hostnamen, den die Bridge veröffentlicht, ihre Adresse als Host:Port, die Protokollversion, die sie spricht, und - wenn sie einen braucht - das Kennzeichen Kopplung erforderlich. Die Fernbedienung sucht, solange der Verbindungsbildschirm offen ist, und beendet die Suche, wenn die App in den Hintergrund geht; sie beginnt wieder, sobald die App im Vordergrund ist.

  • Tippen Sie eine Zeile an, um diese Bridge auszuwählen; die gewählte Zeile trägt die Akzentfarbe. Ein erneutes Antippen der gewählten Zeile hebt die Auswahl wieder auf, dann gilt die unten eingetippte Adresse (siehe Bridge-Adresse).
  • Solange die Liste leer ist, sagt die Fernbedienung, warum: Suche nach Bridges im Netzwerk …, während die Suche läuft, Noch keine Bridge gefunden., wenn keine geantwortet hat, und eine Meldung, dass die Suche fehlgeschlagen ist, wenn die Suche selbst einen Fehler gemeldet hat - die häufigste Ursache ist, dass die App keinen Zugriff auf das lokale Netzwerk hat. Prüfen Sie, ob Mac und iPad im selben Netzwerk sind und ob die Bridge auf dem Mac läuft.
  • Eine gefundene Bridge ist noch nicht gekoppelt: Der Kopplungsschlüssel ist nicht Teil der Ankündigung, Sie müssen ihn also eingeben (siehe Kopplungsschlüssel).

Die Liste dient nur dem Anzeigen und Auswählen: Die Verbindung öffnet Verbinden (siehe Verbinden).

Bridge-Adresse

Das Textfeld unter der Hostliste (Bridge-Adresse): die Bridge, mit der die Fernbedienung sprechen soll, wenn die gefundenen Zeilen nicht passen. Es akzeptiert den Namen des Macs, wie er im Netzwerk bekannt ist, eine IP-Adresse oder eine vollständige WebSocket-Adresse:

  • studio-mac - ein Hostname; die Fernbedienung ergänzt den Standardport 47900 und den Pfad /ws.
  • studio-mac:47900 oder 192.168.1.20:47900 - Host und Port.
  • ws://192.168.1.20:47900/ws - eine vollständige Adresse; ein angegebener Port und Pfad bleiben erhalten, ein fehlender wird mit den Standardwerten ergänzt.
  • [fe80::1] - eine IPv6-Adresse in eckigen Klammern, ebenfalls mit Port 47900 und /ws ergänzt.

Der Hinweis im Feld zeigt die beiden Kurzformen (studio-mac, 192.168.1.20). Das Feld schreibt nie automatisch groß und korrigiert nie automatisch, weil Hostname und Adresse zwischen Groß- und Kleinschreibung unterscheiden; auf dem iPad startet die Tastatur im URL-Modus. Eine in der Hostliste ausgewählte Bridge hat Vorrang vor dem, was Sie hier eintippen, das Feld wird also ignoriert, solange eine Zeile gewählt ist; heben Sie die Auswahl auf, um die eingetippte Adresse zu verwenden. Lässt sich die gewählte Bridge nicht mehr auflösen, bleibt Verbinden gesperrt, bis Sie eine andere Bridge wählen oder die Auswahl aufheben. Die Adresse wird aufgelöst, wenn Sie Verbinden drücken.

Kopplungsschlüssel

Das Feld für den Kopplungsschlüssel der Bridge (englisch: pairing token), das gemeinsame Geheimnis, das eine Fernbedienung berechtigt, diese MusicStation zu steuern. Ein Schlüssel besteht aus genau 32 kleingeschriebenen Hexadezimalzeichen, zum Beispiel 0123456789abcdef0123456789abcdef; die Bridge erzeugt beim ersten Start einen solchen Schlüssel und legt ihn in einer Datei ab, die nur Ihr Benutzerkonto lesen kann (auf dem Mac ~/Library/Application Support/musicstation/bridge-token, Dateirechte 0600).

Wo Sie ihn ablesen:

  • Die Bridge druckt den Schlüssel beim Start einmal aus: bridge token: <Schlüssel>.
  • msh-bridge --print-token gibt den gespeicherten Schlüssel erneut aus und beendet sich (er erzeugt oder verändert ihn nicht).
  • msh-bridge --rotate-token schreibt einen neuen Zufallsschlüssel, hält die Datei weiterhin privat, gibt ihn aus und beendet sich. Bereits gekoppelte Verbindungen bleiben bestehen; jede spätere Kopplung braucht den neuen Schlüssel.

Tragen Sie den Schlüssel in das Feld der Fernbedienung ein und koppeln Sie damit (siehe Verbinden). Der Schlüssel wird bei jedem Kopplungsversuch verglichen und verlässt Ihr Netzwerk nicht: Er ist nicht Teil der Bonjour-Ankündigung, eine gefundene Bridge muss also trotzdem von Ihnen den Schlüssel bekommen. Das Feld ist nur für das Koppeln nötig, und jede neue Verbindung koppelt erneut - der Schlüssel muss also der sein, den die Bridge gerade annimmt. Einen abgelehnten Schlüssel beantwortet die Bridge mit auth_failed (und schließt die Verbindung mit 4003); die Bibliothek der Fernbedienung meldet diesen Fehler, damit die App Sie nach dem aktuellen Schlüssel fragen kann.

Sprache

Die Sprache der Fernbedienungs-App: Systemsprache (der Sprache des iPad folgen), Englisch oder Deutsch. Die Auswahl steht auf dem Verbindungsbildschirm und in der Kopfzeile der App, die Sprache lässt sich also vor und nach dem Koppeln ändern; beide Stellen sind dasselbe Bedienelement. Eine gewählte Sprache wird auf dem Gerät gespeichert und gilt auch ab dem nächsten Start; Systemsprache entfernt diese Festlegung wieder.

Die Einstellung ändert nur die Texte der Fernbedienungs-App: Die Desktop-Anwendung, ihre eigene Einstellung Sprache und der Inhalt der Sitzung bleiben unberührt. Meldungen von Engine und Bridge werden mit derselben Einstellung übersetzt, weil die Engine stabile Fehlercodes sendet und nie Fließtext.

Verbinden

Verbindet die Fernbedienung mit der ausgewählten Bridge und koppelt sie. Wählen Sie einen Host aus der Liste der gefundenen Bridges (oder den von Ihnen eingetippten) und drücken Sie Verbinden: Die Fernbedienung öffnet ws://<Host>:47900/ws und sendet den Kopplungsbefehl mit dem Schlüssel aus dem Feld darüber. Antwortet die Bridge, ist die Fernbedienung gekoppelt und das Session-Raster der laufenden MusicStation erscheint.

Was dabei geschieht:

  • Unmittelbar nach dem Öffnen der Verbindung meldet die Bridge, dass diese Verbindung noch nicht gekoppelt ist; die Fernbedienung zeigt Verbinde ….
  • Nach erfolgreicher Kopplung bestätigt die Bridge den Schlüssel und sendet ihren zwischengespeicherten Transport; die Fernbedienung zeigt Verbunden. Von da an lassen sich der Transport und das Session-Raster bedienen.
  • Eine abgebrochene Verbindung wird von selbst erneut versucht, mit wachsendem Abstand (beginnend bei etwa 250 ms, verdoppelt bis auf 30 s, jeder Abstand um bis zu 20 Prozent variiert). Eine Verbindung, die mindestens 5 s bestanden hat, setzt den Abstand wieder auf seinen kleinsten Wert.
  • Getrennt bedeutet, dass gerade keine Verbindung besteht; die Fernbedienung versucht es weiter von selbst.
  • Inkompatible Version bedeutet, dass die Bridge eine andere Protokollversion spricht. Ein neuer Versuch könnte daran nichts ändern, die Fernbedienung bricht deshalb ab - bringen Sie MusicStation und die App auf denselben Stand.
  • Verbindung fehlgeschlagen bedeutet, dass die Bridge die Verbindung mit einem Fehler beendet hat, auf den Sie reagieren müssen. Der häufigste Fall ist ein abgelehnter Schlüssel (auth_failed, Close-Code 4003); er wird nicht wiederholt: Prüfen Sie den Schlüssel, den die Bridge ausgibt, und koppeln Sie mit ihm erneut. Die Meldung des Fehlers wird in die Sprache der Fernbedienung übersetzt.

Befehle, die vor der erfolgreichen Kopplung gesendet werden, werden mit not_paired beantwortet und ändern nichts; die Verbindung bleibt offen, eine Kopplung kann also weiterhin gelingen.

Eine Meldung ausblenden

Die Meldung des letzten fehlgeschlagenen Versuchs. Sie erscheint direkt unter der Schaltfläche Verbinden auf dem Verbindungsbildschirm und, sobald gekoppelt, als Banner über dem Session-Raster. Ihr Text ist die übersetzte Meldung des Fehlers, den die Bridge oder die Engine gemeldet hat - ein abgelehnter Kopplungsschlüssel, ein Befehl, der verworfen wurde, weil zu viele auf einmal liefen, oder eine Verbindung, die nicht zustande kam.

Tippen Sie die Meldung an, um sie zu schließen (der Hinweis daneben heißt Meldung ausblenden oder Fehler ausblenden). Schließen ist nur Schließen: Es wird nichts erneut versucht und kein Zustand dadurch geändert. Ist eine Kopplung fehlgeschlagen, bleibt die Verbindung ungekoppelt, bis Sie erneut Verbinden drücken; wurde ein Befehl abgelehnt, hat das Raster diese Aktion bereits zurückgenommen, und der nächste Schnappschuss zeigt den Zustand der Engine. Der nächste Fehler zeigt eine neue Meldung.

Trennen

Schließt die Verbindung zur Bridge und beendet das automatische Wiederverbinden. Drücken Sie Trennen, wenn Sie das iPad weitergeben oder auf eine andere MusicStation wechseln möchten; die Liste der Hosts bleibt verfügbar, sodass Sie sich jederzeit erneut mit einer Bridge koppeln können (siehe Kopplungsschlüssel).

Das Trennen ist ein normales Schließen der Verbindung (Close-Code 1001). Auf dem Mac ändert sich dadurch nichts: Die Wiedergabe läuft weiter, andere Fernbedienungen oder ein OSC-Controller bleiben unberührt. Die Fernbedienung vergisst den zuletzt angezeigten Transportzustand, die nächste Verbindung beginnt deshalb mit dem aktuellen Zustand der Engine.

Transport der Fernbedienung

Nach dem Verbinden steuert die Fernbedienung denselben Transport wie die Desktop-Anwendung; die Bedienelemente sind im Kapitel Transport einmal beschrieben, die Fernbedienung zeigt sie in ihrer eigenen Anordnung:

  • Wiedergabe und Stopp - identisch zu den Schaltflächen auf dem Desktop, einschließlich der Rastung und Hervorhebung (Wiedergabe, Stopp).
  • Tempo - derselbe Bereich von 20 bis 999 BPM und derselbe Standardwert 120.00 BPM; ein Wert außerhalb des Bereichs wird begrenzt, bevor er gesendet wird (Tempo).
  • Position - dieselbe Anzeige im Format Takt.Schlag.Tick (4/4-Takt, 480 Ticks pro Schlag, Projektanfang 1.1.1), die zwischen den Zuständen der Engine mit einem 20-Hz-Timer weiterläuft (Position). Sie dient nur dem Lesen: Das Springen zu einem Takt ist die Tastenkombination Eingabetaste auf dem Desktop und hat noch keine Entsprechung in der Fernbedienung.
  • Testton - derselbe Ton mit 440 Hz bei -20 dBFS auf dem Master-Ausgang, umschaltbar auch von der Fernbedienung (Testton).

Ein Befehl ändert die Anzeige sofort und wird im Hintergrund gesendet; maßgeblich bleibt die Engine. Lehnt die Engine einen Befehl ab - zum Beispiel, weil ein anderer Client den Wert geändert hat -, nimmt die Fernbedienung ihre Anzeige auf die Antwort der Engine zurück und zeigt die übersetzte Fehlermeldung.

Session-Raster

Sobald die Bridge gekoppelt ist, zeigt die App das Session-Raster der laufenden MusicStation - dasselbe Raster wie der Desktop, live gespiegelt. Die Fernbedienung erhält den gesamten Zustand session als Schnappschuss (höchstens 30-mal pro Sekunde) und zeichnet genau diesen: Das Raster ist der Zustand der Engine und keine eigene Kopie. In dieser Version ist das Raster auf 16 Spuren und 16 Szenen festgelegt; gezeichnet wird die Größe, die der Schnappschuss meldet.

  • Die fixierte Spurenzeile oben und die fixierte Szenenspalte links bleiben im Blick, während die Matrix darunter scrollt. Spur- und Szenennamen wandern nie zwischen Engine und Fernbedienung, die Überschriften sind deshalb die Nummern (Spur 1, Szene 1).
  • Jede Zelle ist ein Clip-Slot einer Spur und Szene und mindestens 56 Punkt groß - deutlich mehr als die 44 Punkt, die ein bequemes Tippziel haben sollte.
  • Tippen Sie einen gestoppten Slot an, um seinen Clip zu starten: Die Fernbedienung sendet clip.launch, der Slot wird vorgemerkt und startet an der Quantisierungsgrenze der Sitzung (siehe Quantisierung).
  • Tippen Sie einen laufenden oder wartenden Slot an, um ihn zu stoppen: Die Fernbedienung sendet clip.stop. Ein wartender Slot ist ein Start, der noch nicht stattgefunden hat, das Antippen hebt ihn deshalb auf; ein laufender Clip blendet an seiner nächsten Grenze über 5 ms aus. Hier unterscheidet sich die Fernbedienung vom Desktop, wo ein Klick auf den Slot den Clip erneut startet (siehe Clip-Slot).
  • Tippen Sie die Schaltfläche einer Szene in der Szenenspalte an (das Wiedergabe-Symbol mit der Szenennummer), um die ganze Zeile zu starten: Jeder Slot dieser Szene, der einen Clip enthält, wird an derselben Grenze vorgemerkt (siehe Szene starten).
  • Die Quantisierungsauswahl in der Kopfzeile des Rasters führt dieselben sieben Werte wie der Desktop und ändert die Start- und Stopp-Quantisierung der Sitzung, gilt also für alle Clients (siehe Quantisierung).
  • Ein leerer Slot hat nichts zu starten, ein Antippen tut nichts; dasselbe gilt für eine Zelle außerhalb des Rasters, das der Schnappschuss gemeldet hat.

Die Statusmarkierung einer Zelle zeigt, was ihr Slot gerade tut: einen gefüllten Punkt, solange der Clip läuft, und einen blinkenden Punkt, solange der Slot auf seine Quantisierungsgrenze wartet (der Punkt ist 250 ms sichtbar und 250 ms unsichtbar; das Blinken ist die Art der Fernbedienung zu sagen, dass der Start noch unterwegs ist). Ein leerer oder gestoppter Slot trägt gar keine Markierung. Die Markierung ist nie ein eigenes Bedienelement: Sie gehört zur Zelle, und die ganze Zelle ist das Tippziel.

Jede Aktion ist ein Befehl, das Raster reagiert deshalb sofort und die Antwort der Engine entscheidet: Ein vorgemerkter Slot wird unmittelbar als wartend markiert, ein laufender Slot, der erneut vorgemerkt wird, läuft bis zu seiner Grenze weiter, und ein abgelehnter Befehl nimmt die Änderung zurück und zeigt die übersetzte Meldung (siehe Eine Meldung ausblenden).

Was das Raster der Fernbedienung bewusst nicht tut:

  • Kein Laden von Dateien. Ein Clip wird über einen Pfad auf dem Rechner geladen, auf dem die Engine läuft; eine Fernbedienung kann also keine Datei benennen. Das Ziehen einer Datei auf das Raster bleibt eine Aktion des Desktops (siehe Dateien: Ziehen und Ablegen).
  • Kein Loop-Schalter. Das Loop-Kennzeichen eines Clips stellen Sie auf dem Desktop ein; die Fernbedienung zeigt und ändert es nicht (siehe Loop).

Grenzen der Fernbedienung

  • Die Fernbedienung steuert in dieser Version den Transport und die Clips: Sie startet und stoppt Clips, startet Szenen und ändert die Start-Quantisierung. Alles Weitere - Aufnahme, Arrangement, Mischpult, Plug-ins, das Laden von Dateien und das Loop-Kennzeichen eines Clips - gehört noch nicht zur Fernbedienung; diese Kapitel des Handbuchs beschreiben die Desktop-Anwendung.
  • Die Bridge drosselt, was sie sendet: den Transportzustand höchstens 30-mal pro Sekunde und die laufende Abspielposition höchstens 20-mal pro Sekunde und Client. Eine Fernbedienung, die nicht mitkommt, verliert ganze Zustandsbilder und nie einen Teil davon; sie zeigt also immer einen stimmigen Zustand.
  • Die Bridge begrenzt, wie viele Befehle ein Client senden darf. Ein Befehl über diesem Budget wird verworfen und mit rate_limited beantwortet; ein Client, der es wiederholt überschreitet, wird getrennt und muss mindestens 30 s warten, bevor er sich erneut verbindet. Die Fernbedienung zeigt die Meldung und pausiert, danach arbeitet sie von selbst weiter.
  • Pro Client-Adresse sind innerhalb einer Minute 5 fehlgeschlagene Kopplungsversuche erlaubt; danach schließt die Bridge die Verbindung mit dem Fehlercode für die Ratenbegrenzung. Warten Sie eine Minute, prüfen Sie den Schlüssel und versuchen Sie es erneut.
  • Die Fernbedienung hat genau eine eigene Einstellung, ihre Sprache; Sprache und Erscheinungsbild der Desktop-Anwendung werden von ihr nicht verändert (siehe Einstellungen).
  • Die Fernbedienungs-App läuft in dieser Version auf einem iPad (siehe den Hinweis am Anfang dieses Kapitels), und eigene Fenster für "Über MusicStation" und "Neuerungen" gibt es dort noch nicht: Die Versionshinweise der laufenden Version lesen Sie in der Desktop-Anwendung (siehe Über MusicStation und Neuerungen).

Arbeitsablauf: das iPad mit dem Mac koppeln

  1. Starten Sie MusicStation und die Bridge auf dem Mac. Notieren Sie die Zeile bridge token: <Schlüssel>, die die Bridge beim Start ausgibt (siehe Kopplungsschlüssel).
  2. Öffnen Sie die Fernbedienungs-App auf dem iPad. Sie sucht das Netzwerk ab und listet die gefundenen Bridges unter ihren Hostnamen auf (siehe Bridges im Netzwerk). Erscheint Ihr Mac nicht, tippen Sie seine Adresse in das Feld Bridge-Adresse ein.
  3. Wählen Sie Ihren Mac aus der Liste und tragen Sie den Schlüssel in das Feld Kopplungsschlüssel ein (siehe Kopplungsschlüssel).
  4. Drücken Sie Verbinden (siehe Verbinden). Der Status wechselt zu Verbinde … und dann zu Verbunden; das Session-Raster der laufenden MusicStation erscheint.
  5. Drücken Sie Wiedergabe, um die Wiedergabe auf dem Mac zu starten, und Stopp, um sie zu beenden; stellen Sie das Tempo ein und schalten Sie den Testton wie auf dem Desktop (siehe Transport).
  6. Drücken Sie Trennen, wenn Sie fertig sind (siehe Trennen) - oder verlassen Sie einfach die App; die Bridge beendet die Verbindung, wenn die App schließt.

Arbeitsablauf: eine Szene vom iPad starten

  1. Koppeln Sie die App wie oben beschrieben mit dem Mac. Das Session-Raster der laufenden MusicStation erscheint (siehe Session-Raster).
  2. Prüfen Sie die Quantisierung in der Kopfzeile des Rasters und wählen Sie den Wert, den der Song erwartet - eine neue Sitzung meldet Aus, die meisten Songs werden mit 1 Takt gespielt (siehe Quantisierung).
  3. Tippen Sie das Wiedergabe-Symbol der Szene an, die Sie starten möchten, zum Beispiel Szene 1. Die stillen Slots dieser Zeile beginnen zu blinken: Sie sind vorgemerkt und warten auf ihre Grenze.
  4. An der Grenze starten die Clips gemeinsam; aus den blinkenden Punkten werden gefüllte Punkte, während die Clips laufen. Ein Clip derselben Spur, der vorher lief, stoppt an derselben Grenze (siehe Session-Raster).
  5. Tippen Sie einen laufenden Slot an, um ihn an der nächsten Grenze zu stoppen, oder drücken Sie Stopp im Transport, um den Transport und alle klingenden Clips gemeinsam zu stoppen.
  6. Ein Clip, der noch nicht geladen ist, muss zuerst auf dem Mac in seinen Slot gebracht werden - die Fernbedienung kann keine Dateien laden (siehe Dateien: Ziehen und Ablegen).