DokumentaceLeader/member model

Leader/member model

Relace má jedno vedoucí zařízení a až čtyřicet devět následujících. Leader určuje, co se hraje a kde v tom kdo je.

Role v relaci

Role se volí ručně při startu — není žádná automatická volba ani hlasování.
RoleJak vznikneCo dělá
LeaderSpustí relaci na obrazovce synchronizaceOhlašuje se v síti, běží na něm server, vysílá příkazy
ČlenPřipojí se k nalezené relaciPřijímá příkazy a vykonává je
Do relace se vejde až 50 členů. Leader vidí seznam připojených včetně jména, nástroje a odezvy a může kohokoli z relace vyhodit.

Leader zůstává i po připojení členů ve stavu „ohlašuje se" — pořád naslouchá dalším příchozím. Stav „připojeno" ukazuje jen člen.

Co leader řídí

AkceCo se stane u členů
Změna písněČlenové přejdou na stejnou píseň
Vynucená změna písněTotéž, ale i u členů, kteří mají sledování vypnuté
Posun v textuPozice scrollu se srovná
Spuštění autoscrolluČlenům se rozjede autoscroll ze stejné pozice a stejnou rychlostí
Pauza autoscrolluZastaví se na společné pozici
Změna rychlosti autoscrolluRychlost se propíše všem
TranspoziceČlenům se aplikuje stejný posun o půltóny
Změna sekcePřeskok na sekci se rozešle dál
Start a stop metronomuČlenům se rozjede metronom ve stejném tempu a na stejnou dobu
Pokyn kapeleNa displejích ostatních se objeví překryv — „SÓLO", „POSLEDNÍ REFRÉN", „KONEC"

Členové, kteří sledování vypnou, zůstanou stát a mohou si listovat po svém. Vynucená změna písně je nástroj leadera, jak je vrátit zpátky.

Dohánění pozice

Když člen dostane pozici, která se liší od jeho vlastní, nescvakne se tam skokem — pozice se dorovná plynulým doběhem během zhruba dvou desetin sekundy. Na projekci ani na tabletu to nevypadá jako trhnutí.

Metronom v kapele

Když leader spustí metronom, členům se rozjede ve stejném tempu a na stejnou dobu.
Neposílá se přitom nic periodického. Odejde jediná zpráva s tempem, počtem dob v taktu a kotvou — absolutním okamžikem, kdy padla doba nula. Každé zařízení si z kotvy dopočítá, kde přesně je, podle rozdílu hodin naměřeného při připojení.

Praktický důsledek: kdo se připojí uprostřed písně, dostane tu samou kotvu a nasadí na správnou dobu. Nemusí čekat na další takt ani se „chytat".

Pokyny kapele

Leader může během písně poslat krátký pokyn, který se ostatním zobrazí jako překryv přes text — „SÓLO", „POSLEDNÍ REFRÉN", „KONEC".

Na rozdíl od ostatních příkazů se neplánuje na společný okamžik; doručí se, jakmile dorazí. Je to pokyn pro lidi, ne synchronizovaná akce.

Posílat je může jen leader.

Co se nesynchronizuje

Dvě věci, které se často očekávají a v protokolu nejsou:
  • Otáčení stránek PDF. Přes relaci se posílá pozice scrollu, ne číslo stránky. Swipe do stran navíc v živém režimu mění píseň, ne stránku.
  • MIDI příkazy u písní. Aparaturu má každý svou, takže MIDI zůstává na zařízení.
Dále se nesynchronizují všechna osobní pole — transpozice se sice dá vyslat jako příkaz, ale uložená hodnota u písně zůstává tvoje. Detaily v Architektuře.

Průběh připojení

Když se člen připojí, nedostane jednu velkou zprávu se stavem, ale sérii zpráv:

  1. welcome — přidělení identity
  2. sessionInfo — informace o relaci a jejích členech
  3. Po ohlášení nového člena mu leader pošle aktuální píseň, případně běžící autoscroll, aktivní setlist a nabídku písní z něj

Člen si o kompletní stav může kdykoli říct i sám.

Načasování příkazů

Každý vysílaný příkaz nese:

PoleVýznam
leaderEpochMsČas leaderových hodin v okamžiku odeslání
executeAtKdy se má akce provést — standardně o 300 ms později
vVerze protokolu
idUnikátní identifikátor zprávy
Zařízení si mezi sebou průběžně měří rozdíl hodin párem zpráv, takže executeAt znamená na všech zařízeních stejný okamžik. Tím se sjednotí i zařízení s různě velkou odezvou.

Člen, který chce něco poslat ostatním, to nepošle přímo — pošle to leaderovi s příznakem „přepošli". Leader zprávu přerazítkuje vlastními hodinami a rozešle ji. Díky tomu existuje jediná časová osa.

Vyžádání obsahu

Vedle řídicích příkazů umí protokol přenášet i samotný obsah. Iniciátorem je vždy ten, komu něco chybí:

CoJak to probíhá
PíseňČlen si vyžádá píseň podle identifikátoru, leader pošle její sdílená pole
SetlistČlen si vyžádá aktivní setlist se seznamem písní
Hromadný přenosLeader nabídne metadata všech písní v setlistu, člen si řekne jen o ty, které nemá, a dostane je po jedné s pořadovým číslem
PDF, MusicXML, obrázkyPřenášejí se na vyžádání, ne automaticky
Pokud máš v nastavení zapnuté automatické stahování chybějících písní (výchozí stav), člen si o chybějící píseň řekne sám. Jinak se nabídne tlačítkem.

Limity přenosů

TypLimit
PDFNad 3 MB se automaticky zmenší, nad 10 MB se nepřenese
MusicXML10 MB
Balík obrázků25 MB

U každého binárního přenosu se počítá kontrolní součet SHA-256, aby se poznal poškozený soubor.

Sdílení mezi členy

Když leader požadovanou přílohu nemá, relace se nezasekne. Spustí se zprostředkované sdílení mezi členy:

  1. Leader se zeptá ostatních, kdo soubor má.
  2. Ti, kdo ho mají, se přihlásí.
  3. Žadatel si vybere zdroj.
  4. Soubor se přenese od vybraného člena přes leadera.
Vlastník souboru přitom dostane dotaz na svolení („Petr žádá o noty k této písni. Sdílet?"). Schvalování se dá vypnout v nastavení, ve výchozím stavu je zapnuté.

Kontrola před koncertem

Než se začne hrát, může se leader jednou zeptat a celá kapela odpoví. Výsledek je seznam toho, co se za chvíli pokazí:

NálezCo znamená
Chybějící písněNěkdo nemá píseň z aktivního setlistu
Chybějící přílohyPíseň má, ale bez not nebo PDF
Jiný setlistNěkdo má nastavený jiný setlist než leader
Žádný setlistNěkdo nemá aktivní žádný
Slabá baterieZařízení nedojede koncert
Vysoká odezvaSlabé spojení
Bez odpovědiZařízení se neozvalo
Spouští se ze Synchronizace na straně leadera. Na odpovědi se čeká 6 sekund; kdo se neozve, je v přehledu vedený jako bez odpovědi.

Vyplatí se to pustit hned po příchodu do klubu, ne pět minut před začátkem. Chybějící přílohy se dají doplnit jen dokud jsou všichni na stejné síti.

Omezení modelu

Předání leadershipu neexistuje. Roli nelze za běhu přenést na jiné zařízení. Když má leader vybitou baterii nebo musí odejít, relace se ukončí a nový leader ji musí založit znovu — ostatní se připojují od začátku.

Další věci, se kterými je dobré počítat:

  • Relaci nelze rozdělit ani spojit; jedna kapela = jedna relace = jeden leader.
  • Když leader zmizí, členové nezvolí náhradu — přejdou do režimu opětovného připojování k témuž leaderovi.
  • Členové mezi sebou nekomunikují přímo; i sdílení příloh jde přes leadera.