Salta al contenuto
Ascoltare insieme

Come funziona l'ascolto sincronizzato, tecnicamente

Far partire due canzoni insieme è facile. Tenerle insieme per tre minuti, su venti dispositivi diversi, è un problema interessante.

6 min di lettura Pubblicato il a cura della redazione Sintony

Questo articolo è più tecnico degli altri. Serve a chi si chiede perché una cosa che sembra semplice — «partiamo insieme» — richieda tanto lavoro, e a chi sta costruendo qualcosa di simile.

Il problema, in tre pezzi

1. Gli orologi divergono

Ogni dispositivo ha un oscillatore al quarzo che segna il tempo. Nessuno di questi è perfetto: la deriva tipica è dell'ordine di decine di parti per milione, il che significa qualche decimo di secondo di scarto accumulato nell'arco di ore.

Per la musica, dove uno scarto di 50 millisecondi è già percepibile come sfasamento, questo basta a rovinare tutto. Serve quindi un orologio comune: non l'ora locale di ciascuno, ma un riferimento condiviso.

2. La rete ritarda in modo diverso per ciascuno

Se il server manda «parti adesso», quel messaggio arriva a chi è in fibra in 15 millisecondi e a chi è su rete mobile in 200. Se tutti obbediscono all'arrivo, sono già sfasati di 185 millisecondi prima di cominciare.

Il ritardo, inoltre, non è costante: varia da un messaggio all'altro. È la ragione per cui non basta misurarlo una volta.

3. Il suono esce dopo

Fra il momento in cui il programma decide di riprodurre e quello in cui il suono raggiunge l'orecchio passa altro tempo: il buffer audio, il sistema operativo, e — se ci sono — le cuffie senza filo. Quest'ultimo pezzo è il più grande e il meno prevedibile.

L'ordine di grandezza da tenere a mente

Sotto i 20-30 millisecondi due suoni sono percepiti come simultanei. Fra i 30 e i 100 si sente un'imprecisione. Sopra i 100 si sentono due eventi distinti. Il Bluetooth, da solo, può introdurne fino a 300 — cioè più di tutto il resto messo insieme.

La soluzione: non «parti», ma «dove dovresti essere»

Il cambio di prospettiva che risolve il problema è questo: invece di dare un comando di avvio, il server dichiara continuamente lo stato: quale brano, e a che punto dovrebbe essere in un dato istante dell'orologio comune.

Ogni dispositivo riceve questa informazione, calcola dove lui è arrivato, e corregge. Il vantaggio è che il ritardo di rete smette di contare: se il messaggio arriva in ritardo, il dispositivo sa comunque quanto tempo è passato e si posiziona di conseguenza.

Sincronizzare gli orologi

La tecnica è la stessa usata dai protocolli di sincronizzazione oraria di internet, e si può riassumere così:

  1. Il dispositivo segna l'ora e chiede «che ore sono?»
  2. Il server risponde con la sua ora
  3. Il dispositivo segna l'ora di arrivo Adesso conosce il tempo totale di andata e ritorno.
  4. Stima lo scarto Assumendo che andata e ritorno siano simmetrici, il ritardo di sola andata è metà del totale.
  5. Ripete più volte e tiene la misura migliore Quella con il tempo di andata e ritorno più basso, perché è la meno inquinata da code e congestioni.

L'assunzione di simmetria non è sempre vera — su rete mobile spesso non lo è — ed è la principale fonte di errore residuo. Ripetere la misura e scartare i valori anomali è quello che rende il risultato utilizzabile.

Correggere senza far sentire la correzione

Una volta che il dispositivo sa di essere indietro di 80 millisecondi, cosa fa? Qui sta la parte delicata, perché la correzione brusca si sente più dell'errore.

ScartoCosa conviene fare
Sotto 20-30 msNiente. È sotto la soglia percettiva.
30-150 msCorrezione graduale: riprodurre impercettibilmente più veloce o più lento finché non si rientra
Oltre 150-200 msSalto diretto al punto giusto. Si sente, ma meno di un errore persistente.

La correzione graduale è il pezzo più elegante: variando la velocità di riproduzione di una frazione di punto percentuale, il dispositivo recupera decine di millisecondi nell'arco di qualche secondo, e l'orecchio non se ne accorge — perché la variazione di intonazione è sotto la soglia di percezione.

Chi entra a metà

Un partecipante che si aggiunge dopo due minuti non deve far ripartire niente: deve entrare al punto in cui sono gli altri. È tecnicamente lo stesso problema — sa quale brano e a che secondo — ma richiede che il contenuto sia accessibile a partire da un punto arbitrario, non solo dall'inizio.

È anche la differenza esperienziale più grande: una stanza in cui entri e trovi la musica già in corso somiglia a una radio, una in cui il brano riparte per te somiglia a un lettore. Sono due sensazioni diverse, e la prima è quella che fa sentire che c'è qualcun altro.

Il problema della riconnessione

Una cosa che si scopre solo mettendo in mano il sistema a persone vere: le connessioni cadono continuamente. Si entra in galleria, si passa dal Wi-Fi alla rete mobile, si blocca lo schermo.

Quando la connessione torna, non basta riaprirla: bisogna rientrare nella stanza e rileggere tutto lo stato. Un sistema che ripristina il collegamento ma non ripete l'iscrizione alla stanza continua a sembrare connesso e non riceve più niente — e il guasto è silenzioso, che è la categoria peggiore.

Il buffer, e il compromesso che impone

Nessun sistema riproduce l'audio nell'istante in cui lo riceve: accumula un po' di dati in anticipo, per avere di che suonare se la rete ha un'incertezza. Quel margine si chiama buffer, e la sua dimensione è un compromesso puro.

BufferVantaggioSvantaggio
Piccolo (decine di ms)Reattività, sincronia più facileBasta un'incertezza di rete e il suono si interrompe
Grande (secondi)Riproduzione robustaRitardo maggiore, correzioni più lente

Per l'ascolto condiviso la scelta ragionevole è un buffer generoso, perché il ritardo assoluto non conta — conta che tutti abbiano lo stesso ritardo. È il contrario di quello che serve per suonare, dove il ritardo assoluto è tutto.

La conseguenza non ovvia

Un sistema di ascolto condiviso può permettersi un ritardo di due secondi rispetto al server e restare perfettamente sincronizzato, purché il ritardo sia uguale per tutti e stabile. La sincronia è una proprietà relativa, non assoluta — ed è per questo che è un problema molto più trattabile del suonare insieme.

Le tre cose che decidono la qualità percepita

  1. Chi entra deve entrare a metà Se il brano riparte per il nuovo arrivato, la stanza smette di essere un luogo e torna a essere un lettore.
  2. Nessuno deve poter saltare per tutti O si decide insieme, o solo un ruolo può farlo. Il salto individuale rompe l'unica cosa che rende l'ascolto condiviso diverso dall'ascolto parallelo.
  3. La coda deve essere visibile Sapere cosa viene dopo trasforma l'ascolto in un'attesa condivisa. È un dettaglio di interfaccia e cambia completamente l'esperienza.

Cosa resta impossibile

Un limite onesto: tutto quanto sopra sincronizza l'ascolto. Non permette di suonare insieme, perché per suonare servono meno di 25-30 millisecondi complessivi e su internet quel margine non c'è quasi mai. È un problema diverso, con vincoli fisici, ed è raccontato in fare musica in due a distanza.

Domande frequenti

Quanto deve essere precisa una sincronizzazione audio?

Sotto i 20-30 millisecondi due suoni sono percepiti come simultanei. Fra 30 e 100 si avverte un'imprecisione; oltre i 100 si sentono come eventi distinti. Per l'ascolto condiviso l'obiettivo realistico è stare sotto i 50 millisecondi fra i partecipanti.

Perché il Bluetooth rovina la sincronia?

Perché la codifica e la trasmissione introducono un ritardo che può arrivare a due o trecento millisecondi, variabile per modello e per codec. È spesso maggiore di tutti gli altri ritardi messi insieme, ed è il motivo per cui due persone «sincronizzate» a volte non lo sembrano.

Come si corregge uno sfasamento senza farlo sentire?

Variando impercettibilmente la velocità di riproduzione — una frazione di punto percentuale — finché non si rientra. La variazione di intonazione che ne deriva è sotto la soglia di percezione, mentre un salto secco si sentirebbe. Il salto si usa solo per scarti grandi, oltre i 150-200 millisecondi.

Continua a leggere