Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Zdalne sterowanie

Fauste Player można odczytywać i obsługiwać przez sieć za pomocą API HTTP, z aktualizacjami na żywo, oraz przez OSC. Mogą z nich korzystać strona WWW, aplikacja na telefon, automatyka stacji lub powierzchnia sterująca. Jest wyłączone, dopóki go nie włączysz, a na początku odpowiada tylko na tym komputerze.

Włączanie

Otwórz Ustawienia → Zdalne i zaznacz Zezwalaj na sterowanie zdalne przez HTTP (lub Zezwalaj na sterowanie przez OSC). Wiersz pod każdym przełącznikiem mówi, czy serwer nasłuchuje i gdzie, albo dlaczego nie wystartował. Zmiany działają od razu; restart nie jest potrzebny. Pole tekstowe (adres, token, lista) jest stosowane, gdy je opuścisz, otworzysz inną sekcję lub zamkniesz Ustawienia; wartość, która jeszcze nie jest prawidłowa, zachowuje tę używaną, a Esc anuluje to, co wpisałeś.

Możesz też edytować config.json, gdy Fauste Player jest zamknięty (gdzie jest, zob. Dane i kopie zapasowe). W obiekcie "config" ustaw remote.http.enabled na true:

{
  "schema_version": 1,
  "config": {
    …
    "remote": {
      "http": { "enabled": true }
    }
  }
}

Nasłuchuje na http://127.0.0.1:7380. Jego uruchomienie nigdy niczego nie odtwarza; działają tylko żądania.

Nasłuch w sieci studia

Aby dotrzeć do niego z innych komputerów, ustaw bind na 0.0.0.0 (albo jeden z adresów tego komputera) i ustaw token o długości co najmniej 16 znaków. W Ustawienia → Zdalne Generuj tworzy długi losowy token. Jest ukryty, dopóki nie naciśniesz Pokaż, a Kopiuj umieszcza go w schowku dla klienta. Bez tokenu serwer odmawia startu, a log mówi dlaczego.

"remote": {
  "http": {
    "enabled": true,
    "bind": "0.0.0.0",
    "port": 7380,
    "token": "a-long-random-secret-of-your-own"
  }
}

Klienci wysyłają token jako Authorization: Bearer <token>. API nie jest szyfrowane. Trzymaj je w zaufanej sieci studia albo umieść za zwrotnym proxy z HTTPS.

Strony WWW

Strona WWW serwowana z innego adresu może używać API tylko wtedy, gdy jej origin (na przykład https://studio.example) jest wymieniony w cors_origins. Żądania z innych stron są odrzucane, nawet na tym komputerze, więc strona, którą akurat masz otwartą, nie może sterować odtwarzaczem. "*" (dowolny origin) jest akceptowane tylko razem z tokenem.

Co może zrobić klient

Klient może:

  • odczytywać odtwarzacze, playlisty, utwory (z okładką i przebiegiem) oraz cartwall;
  • odtwarzać, wstrzymywać, zatrzymywać, wyciszać, uruchamiać od początku i cofać się;
  • wybrać następną pozycję (także tę na antenie: zagra jeszcze raz), odsłuchiwać wstępnie i przewijać (w zatrzymanym odtwarzaczu przewinięcie wybiera, skąd Play uruchomi następną pozycję, a przewinięcie przed jej cue-in zaczyna w cue-in);
  • ustawiać głośności, tryby, stop po bieżącym oraz oznaczenia powtarzania i stopu po pozycji;
  • odpalać, zatrzymywać i odsłuchiwać wstępnie carty oraz zmieniać pokazywaną stronę cartów;
  • edytować: tworzyć, zmieniać nazwy i usuwać playlisty; dodawać utwór, który jest już wczytany, oraz usuwać, przenosić lub duplikować pozycje; tworzyć, zmieniać nazwy, zmieniać rozmiar i usuwać strony cartów oraz konfigurować cart wczytanym utworem; ustawiać lub resetować markery.

Usunięcie tego, co jest na antenie, jest odrzucane, tak jak na ekranie. Plików, które nie są jeszcze wczytane, nie można dodawać zdalnie: leżą na tym komputerze, więc najpierw dodaj je tutaj.

Przycisk wyszarzony na ekranie jest odrzucany także zdalnie. Pełna dokumentacja jest w dokumentacji technicznej.

Wypróbuj z terminala:

curl -s http://127.0.0.1:7380/api/v1/players
curl -s -X POST http://127.0.0.1:7380/api/v1/players/<id>/play

Aktualizacje na żywo

Klient może śledzić zmiany na bieżąco, zamiast pytać w kółko. GET /api/v1/events to strumień zdarzeń: najpierw cały stan, potem każda zmiana odtwarzacza, playlisty, utworu lub cartwalla oraz czasy tego, co gra, kilka razy na sekundę.

curl -sN http://127.0.0.1:7380/api/v1/events

Strona WWW używa EventSource. Przeglądarki nie mogą tam wysłać tokenu jako nagłówka, więc idzie w adresie: /api/v1/events?token=<token>.

OSC

OSC to zwykły protokół powierzchni sterujących, pulpitów oświetleniowych i oprogramowania do sterowania pokazami. Włącz go przez remote.osc.enabled. Nasłuchuje na porcie UDP 7381 tego komputera. Aby przyjmować pakiety z innych komputerów, ustaw remote.osc.bind na 0.0.0.0 i wypisz ich adresy lub podsieci w remote.osc.allowed_sources (na przykład "192.168.1.0/24"). OSC nie ma hasła, więc trzymaj go w zaufanej sieci studia.

Odtwarzacze są numerowane 1, 2, 3… tak, jak pojawiają się na ekranie. Carty są numerowane na pokazywanej stronie.

oscsend localhost 7381 /fauste/player/1/play
oscsend localhost 7381 /fauste/player/2/volume f 0.8
oscsend localhost 7381 /fauste/cart/3/fire

Powierzchnia, która chce pokazywać stan (diody, nazwy, odliczania), subskrybuje, a potem otrzymuje każdą wartość raz, a następnie tylko to, co się zmienia. Gdy odtwarzacz lub przycisk carta znika (mniej odtwarzaczy, mniejsza strona), jego adresy otrzymują raz pustą wartość, aby powierzchnia je wyczyściła. Musi subskrybować ponownie w ciągu minuty (subscription_ttl_secs), aby dalej otrzymywać:

oscdump 9000 &
oscsend localhost 7381 /fauste/subscribe i 9000

Subskrybent może wskazać dowolny port własnego adresu, a zachowywanych jest do max_subscribers. Każdy, kto może wysyłać, może więc też subskrybować. To kolejny powód, by trzymać OSC w zaufanej sieci.

oscsend i oscdump pochodzą z liblo (liblo-tools w Debianie i Ubuntu). Pełna lista adresów jest w dokumentacji technicznej.

Wszystkie ustawienia

UstawienieDomyślnieZnaczenie
remote.http.enabledfalseWłącza API
remote.http.bind127.0.0.1Adres nasłuchu (adres IP)
remote.http.port7380Port (1024–65535)
remote.http.tokenpusteWymagany poza tym komputerem; co najmniej 16 znaków
remote.http.cors_originsbrakOriginy WWW, które mogą wywoływać API
remote.http.request_timeout_ms10000Najdłuższy czas, jaki może zająć żądanie
remote.http.max_body_bytes65536Największe ciało żądania
remote.http.max_event_clients16Strumienie zdarzeń na żywo naraz
remote.osc.enabledfalseWłącza OSC
remote.osc.bind127.0.0.1Adres nasłuchu
remote.osc.port7381Port UDP (1024–65535)
remote.osc.allowed_sourcesten komputerAdresy lub podsieci, których pakiety są przyjmowane
remote.osc.max_subscribers16Subskrybenci naraz
remote.osc.subscription_ttl_secs60Subskrypcja nieodnowiona w tym czasie wygasa
remote.events.position_interval_ms250Jak często czasy są publikowane podczas odtwarzania

Wartości spoza zakresu są poprawiane przy wczytywaniu pliku, a poprawka jest zapisywana w logu.