35 Scheda informativa sul MIDI

Congiuntamente al lavoro sul motore audio, Ableton ha riservato un duro lavoro anche all’analisi della temporizzazione MIDI di Live e ad apportare miglioramenti dove necessario. Abbiamo redatto questa scheda informativa per aiutare gli utenti a comprendere i problemi implicati nella creazione di un affidabile e accurato ambiente MIDI basato su computer e per illustrare l’approccio di Live alla risoluzione di questi problemi.

Nota: i problemi di temporizzazione MIDI trattati in questo documento non sono generalmente riscontrabili dagli utenti dotati di hardware audio e MIDI di alta qualità. Se avete già investito tempo e denaro per l’ottimizzazione di questi fattori nel vostro studio e non riscontrate problemi di temporizzazione MIDI, probabilmente non avete bisogno di queste informazioni.

35.1 Comportamento MIDI ideale

Per capire come il MIDI funzioni all’interno di una workstation audio digitale (DAW), è utile introdurre alcuni termini e concetti comuni. Una DAW deve essere in grado di ospitare tre distinti scenari connessi al MIDI:

  1. Per Registrazione si intende l’invio di informazioni di note e controller MIDI da un dispositivo hardware (per esempio una tastiera MIDI) a una DAW per la loro memorizzazione. Un ambiente di registrazione ideale catturerebbe queste informazioni in arrivo con una precisione di temporizzazione perfetta rispetto alla linea temporale della song — con la stessa precisione di una registrazione audio.
  2. Per Riproduzione (o Playback) nel contesto di una DAW si fa riferimento a due scenari correlati. Il primo riguarda l’invio di informazioni di note e controller MIDI dalla DAW a un dispositivo hardware (per esempio un sintetizzatore). Il secondo riguarda la conversione all’interno del computer delle informazioni MIDI memorizzate in dati audio, come suonati da un dispositivo plug-in (per esempio il sintetizzatore Operator). In entrambi i casi, un ambiente di riproduzione ideale genererebbe una perfetta riproduzione delle informazioni memorizzate.
  3. L’Esecuzione passante (o Esecuzione con rilancio o Playthrough) comprende l’invio di informazioni di note e controller MIDI da un dispositivo hardware (per esempio una tastiera MIDI) a una DAW e poi, in tempo reale, il rilancio verso un sintetizzatore hardware (esterno) o verso un dispositivo plug-in all’interno della DAW. Un ambiente di esecuzione passante ideale avrebbe un “feeling” preciso e sensibile come quello di uno strumento fisico (per esempio un pianoforte).

35.2 Problemi di temporizzazione MIDI

La realtà del MIDI basato su computer è complessa e implica così tante variabili che i sistemi ideali sopra descritti sono impossibili da ottenere. Ci sono due problemi fondamentali:

  1. La Latenza è il ritardo costante intrinseco di un sistema. E’ un problema, particolarmente in una DAW, perché l’audio digitale non può essere trasferito in tempo reale all’interno o all’esterno di una interfaccia audio, ma deve essere invece “bufferizzato” (cioè deve passare attraverso una sorta di memoria tampone). Ma anche gli strumenti acustici presentano un certo grado di latenza: in un pianoforte, ad esempio, intercorre un certo ritardo tra il momento in cui un tasto viene premuto e il momento in cui il meccanismo del martelletto attiva effettivamente la corda. Dal punto di vista esecutivo, piccoli tempi di latenza in genere non costituiscono un problema, perché gli esecutori sono generalmente in grado di adattare la temporizzazione della propria esecuzione per compensare i ritardi — sempre che i ritardi rimangano costanti.
  2. Il Jitter è il ritardo incostante o casuale di un sistema. In una DAW può costituire un particolare problema, in quanto diverse funzioni all’interno del sistema (ad esempio MIDI, audio e interfaccia utente) sono processate separatamente. Spesso le informazioni devono essere spostate da uno di questi processi a un altro — per esempio quando i dati MIDI vengono convertiti in riproduzione audio di un plug-in. Una temporizzazione MIDI esente da jitter richiede precisione nella conversione tra i diversi clock dei componenti del sistema — interfaccia MIDI, interfaccia audio e la stessa DAW. L’accuratezza di questa conversione dipende da una serie di fattori, che comprendono anche il sistema operativo e l’architettura dei driver utilizzati. Il jitter, molto più della latenza, crea la sensazione che la temporizzazione MIDI sia “fluttuante” o “approssimativa”.

35.3 Soluzioni MIDI di Live

L’approccio di Ableton alla temporizzazione MIDI si basa su due presupposti chiave:

  1. In tutti i casi, la latenza è preferibile al jitter. Poiché la latenza è costante e prevedibile, può essere trattata molto più facilmente sia dai computer sia dalle persone.
  2. Utilizzando il playthrough (o esecuzione passante) durante la registrazione, vorrete registrare ciò sentite — anche se, a causa della latenza, questo avviene leggermente più tardi di quando suonate.

Live affronta i problemi inerenti la registrazione, il playback e il playthrough in modo che la temporizzazione MIDI sia reattiva, precisa e costantemente affidabile. Per registrare gli eventi in arrivo nelle corrette posizioni della linea temporale di un Live Set, Live ha bisogno di sapere esattamente quando tali eventi siano stati ricevuti dalla tastiera MIDI. Ma Live non può riceverli direttamente: devono prima essere processati dai driver dell’interfaccia MIDI e dal sistema operativo. Per risolvere questo problema, i driver dell’interfaccia associano una marcatura temporale a ogni evento MIDI nel momento in cui lo ricevono e questo riferimento temporale viene passato a Live assieme all’evento; così Live sa esattamente quando aggiungere gli eventi alla clip.

Durante il playthrough, una DAW deve costantemente far fronte a eventi che dovrebbero essere sentiti il più presto possibile, ma che inevitabilmente si sono verificati nel passato a causa della latenza e dei ritardi insiti nel sistema. Quindi deve essere fatta una scelta: gli eventi devono essere eseguiti nel momento in cui vengono ricevuti (condizione che può determinare del jitter, se si verifica quando il sistema è occupato) oppure devono essere ritardati (condizione che aggiunge latenza)? La scelta di Ableton è quella di aggiungere latenza, in quanto riteniamo che sia più facile per gli utenti adattarsi a una latenza costante piuttosto che a un jitter casuale.

Quando si attiva il monitoraggio durante la registrazione, Live aggiunge nella marcatura temporale dell’evento un ulteriore ritardo, basato sulla dimensione del buffer del vostro hardware audio. Questa latenza aggiuntiva consente di registrare gli eventi nella clip nel momento in cui li sentite — non nel momento in cui li suonate.

Live genera marcature temporali anche per il playback dei dispositivi hardware e cerca di comunicarle ai driver delle interfacce MIDI, per la pianificazione degli eventi MIDI in uscita. I driver Windows MME, però, non sono in grado di processare le marcature temporali, perciò, per i dispositivi che utilizzano questi driver, Live pianifica internamente gli eventi in uscita.

Live continuerà a ricevere eventi MIDI in ingresso persino durante i forti carichi del sistema che causano interruzioni audio (dropout). In caso di interruzioni audio, si possono verificare errori di temporizzazione e distorsione audio durante il playthrough, ma Live dovrebbe comunque continuare a registrare correttamente gli eventi MIDI nelle clip. Successivamente, una volta che il sistema abbia recuperato la propria stabilità, la riproduzione di questi eventi registrati dovrebbe essere precisa.

35.4 Variabili non controllabili da Live

In genere, le marcature temporali sono un meccanismo estremamente affidabile per la gestione della temporizzazione degli eventi MIDI. Ma le marcature temporali sono applicabili solo ai dati all’interno del computer stesso. I dati MIDI al di fuori del computer possono non fare alcun uso di queste informazioni, perciò le informazioni di temporizzazione da/verso un hardware esterno vengono processate dall’hardware non appena arrivano, anziché secondo una pianificazione. Inoltre, i cavi MIDI sono seriali, nel senso che possono inviare solo un pezzo di informazione alla volta. In pratica, ciò significa che più note suonate simultaneamente non possono essere trasmesse simultaneamente attraverso i cavi MIDI, ma devono essere inviate una dopo l’altra. A seconda della densità degli eventi, questo può causare problemi di temporizzazione MIDI.

Un altro problema che può sorgere, in particolare usando sintetizzatori hardware degli albori MIDI, è che il tempo di scansione del dispositivo avvenga con una cadenza relativamente bassa. Per tempo di scansione si intende quanto frequentemente il sintetizzatore controlli la propria tastiera per rilevare l’input (esecuzione di note). Se questa cadenza è troppo blanda, è possibile che si introduca del jitter.

Naturalmente, questi problemi di temporizzazione presenti a livello hardware possono essere moltiplicati dall’aggiunta di attrezzatura supplementare alla catena.

Persino in un computer la precisione delle marcature temporali (timestamps) può variare notevolmente a seconda della qualità dell’hardware MIDI, degli errori nella programmazione dei driver, etc. Live deve presupporre che tutte le marcature temporali allegate agli eventi MIDI in arrivo siano precise e che gli eventi in uscita vengano gestiti in modo appropriato da qualsiasi hardware esterno. Ma per Live è impossibile verificare entrambi i casi.

Test e Risultati

La nostra procedura per testare la temporizzazione degli eventi MIDI in entrata è rappresentata nello schema seguente:

Configurazione del test sugli eventi MIDI in entrata.

L’uscita di una sorgente MIDI (una tastiera o un’altra DAW che suoni lunghe sequenze di eventi MIDI casuali) viene inviata a uno Splitter MIDI (divisore MIDI) hardware a latenza zero. Un’uscita dello splitter viene registrata in Live in una nuova clip MIDI. L’altra uscita viene inviata a un Convertitore MIDI->Audio. Questo dispositivo converte il segnale elettrico della sorgente MIDI in semplice rumore audio. Poiché il dispositivo non interpreta i dati MIDI, effettua questa conversione a latenza zero. L’uscita del convertitore viene poi registrata in Live in una nuova clip audio. In un sistema ideale, ogni evento della clip MIDI dovrebbe verificarsi contemporaneamente al corrispondente evento della clip audio. Pertanto, la differenza di temporizzazione tra eventi MIDI e audio delle due clip può essere misurata per determinare la precisione di Live.

Per valutare le prestazioni MIDI in diverse condizioni, abbiamo eseguito i test con tre diverse interfacce combo audio/MIDI di fasce di prezzo diverse, tutte di noti produttori. Tutti i test sono stati eseguiti con un carico di CPU di circa il 50%, sia con macchine macOS che con macchine Windows, sia a 44.1 sia a 96 kHz e con tre diverse dimensioni di buffer audio, per un totale di 36 configurazioni di test distinte.

Windows:

  • Interfaccia A: il jitter massimo è stato +/- 4 ms, con la maggior parte del jitter che si è verificata a +/- 1 ms.
  • Interfaccia B: nella maggior parte dei test il jitter massimo è stato +/- 3 o 4 ms. A 96 kHz e 1024 campioni di buffer è stato riscontrato un piccolo numero di eventi con +/- 5 ms di jitter. A 44.1 kHz e 512 campioni di buffer si sono verificati eventi occasionali con +/- 6 ms di jitter. In tutti i casi la maggior parte del jitter si è verificata a +/- 1 ms.
  • Interfaccia C: nella maggior parte dei test il jitter massimo è stato +/- 5 ms. A 96 kHz e 512 campioni di buffer è stato riscontrato un piccolo numero di eventi compresi tra +/- 6 e 8 ms di jitter. A 44.1 kHz e 1024 campioni di buffer è stato riscontrato un piccolo numero di eventi fino a +/- 10 ms di jitter. In tutti i casi la maggior parte del jitter si è verificata a +/- 1 ms.

macOS:

  • Interfaccia A: a 44.1 kHz e 1152 campioni di buffer il jitter è stato abbastanza equamente distribuito tra +/- 4 e 11 ms. Per tutte gli altri test, il jitter massimo è stato +/- 5 ms. In tutti i test la maggior parte del jitter si è verificata a +/- 1 ms.
  • Interfaccia B: nella maggior parte dei test il jitter massimo è stato +/- 4 o 5 ms. A 44.1 kHz e 1152 campioni di buffer il jitter è stato abbastanza equamente distribuito tra +/- 2 e 11 ms. In tutti i casi la maggior parte del jitter si è verificata a +/- 1 ms.
  • Interfaccia C: in tutti i test, il jitter massimo è stato +/- 1 ms, con la maggior parte degli eventi che non ha presentato alcun jitter.

Abbiamo eseguito una procedura simile anche per testare la temporizzazione degli eventi MIDI in uscita, illustrata nello schema seguente:

Configurazione del test sugli eventi MIDI in uscita.

In tutti i casi, i test di uscita hanno prodotto risultati paragonabili a quelli dei test di entrata.

35.5 Suggerimenti per ottenere prestazioni MIDI ottimali con Live

Per aiutare gli utenti a ottenere prestazioni MIDI ottimali con Live, abbiamo stilato un elenco di pratiche raccomandate e di suggerimenti sulle impostazioni del programma.

  • Usate la più piccola dimensione del buffer praticabile sul vostro hardware audio, tenendo così la latenza al minimo. I controlli del buffer audio si trovano nella sezione Audio delle Preferenze di Live e variano a seconda del tipo di hardware che state utilizzando. Per maggiori informazioni, ved. la lezione “Impostazione di Ingressi/Uscite Audio”.
  • Utilizzate un’interfaccia MIDI di alta qualità con i driver più aggiornati, per assicurarvi che le marcature temporali MIDI siano generate e processate con la massima precisione possibile.
  • Non attivate il monitoraggio di traccia se state registrando il MIDI mentre ascoltate direttamente un dispositivo hardware, ad esempio un sintetizzatore esterno (anziché ascoltare l’audio del dispositivo hardware attraverso Live, tramite il dispositivo External Instrument). Analogamente, disattivate il monitoraggio di traccia durante la registrazione di dati MIDI generati da un altro dispositivo MIDI (ad esempio una drum machine). Quando il monitoraggio è attivato, Live aggiunge della latenza per compensare il jitter del playthrough. Pertanto, è importante attivare il monitoraggio solo quando suonate effettivamente in playthrough.

35.6 Riepilogo e Conclusioni

Ableton ha redatto questo documento per aiutare gli utenti a comprendere una serie di argomenti correlati:

  • i problemi inerenti ai sistemi MIDI basati su computer;
  • il nostro approccio alla soluzione di questi problemi in Live;
  • le ulteriori variabili di cui non possiamo rendere conto.

Come già accennato, il modo migliore per risolvere i problemi di temporizzazione MIDI nel vostro studio è quello di utilizzare componenti hardware della massima qualità disponibile. Per gli utenti dotati di tali componenti, tutti i sistemi MIDI software dovrebbero funzionare senza problemi di rilievo. Per gli utenti dotati di hardware meno ottimizzato, comunque, Live offre un grado di precisione supplementare minimizzando il jitter, anche se a scapito di una piccola quantità di latenza aggiuntiva.

Vi invitiamo a fare riferimento a questo documento per i chiarimenti sull’approccio di Live alla temporizzazione MIDI, ma vi incoraggiamo anche a contattarci (ved. https://www.ableton.com/help/) qualora abbiate domande o dubbi su argomenti che non abbiamo trattato.