Bit perfect audio in Windows

Ascoltando musica da computer, bisogna essere al corrente che il flusso di dati subisce alterazioni, causate sia da componenti hardware, che software.
Come un musicista che cura la qualità della sua catena (cavo, effetti, ampli, cassa, …), noi ascoltatori di musica liquida dobbiamo fare altrettanto.
In questa guida ci occuperemo della parte software: otterremo una riproduzione audio bit perfect (non alterata) utilizzando foobar2000 con WASAPI.

IntroduzioneWindows Mixer

In Windows 98 e XP, il componente software che gestiva l’audio era KMixer (Windows Kernel Audio Mixer).
In Vista e successivi è stato rimpiazzato da WASAPI (Windows Audio Session API) in modalità non esclusiva.
I flussi audio provenienti da diversi programmi quindi, vengono mixati insieme, causando:

  • Disturbo: i suoni di altri programmi disturbano la riproduzione;
  • Alterazione: il flusso audio mixato non corrisponde qualitativamente all’originale;
  • Rumore di fondo.

In questa guida faremo lavorare foobar2000 con WASAPI in modalità esclusiva, eliminando i problemi appena elencati.

Installazione foobar2000 e WASAPI

  • Scaricare ed installare foobar2000;
  • Scaricare il componente WASAPI;
  • Installare WASAPI copiando il file foo_out_wasapi.dll in C:Program Files (x86)foobar2000components;
  • Riavviare foobar2000.

Configurazione WASAPI in foobar2000

Dopo aver aperto foobar2000, dirigersi in File -> Preferences (CTRL+P) -> Playback -> Output e selezionare l’output WASAPI del proprio dispositivo audio.

Differenza tra Event e PushSelezione foobar2000 WASAPI Device

Tra le due modalità non c’è nessuna differenza qualitativa. Differiscono solamente per il modo in cui operano:

Push:

  • Supportato da più hardware;
  • Il flusso viene “spinto” attivamente da WASAPI verso la scheda audio;
  • Più latenza con i segnali di riproduzione (play, pause, stop, ecc).

Event:

  • Non pienamente supportato da tutti gli hardware;
  • Il flusso proveniente da WASAPI viene “preso” dalla scheda audio (gestione tramite eventi);
  • Meno latenza e dimensioni del buffer minori;
  • Tutte le sessioni WASAPI (creazione, uso e distruzione) sono gestite in una singola istanza.

Ricapitolando, la modalità Event offre più vantaggi e risulta più conveniente in termini di prestazioni, a discapito della compatibilità.

Dimensione del buffer (buffer lenght)

Buffer dello stream audioLa grandezza del buffer varia da caso a caso e serve a garantire un flusso continuo ed ininterrotto di dati.
La sua dimensione può variare da caso a caso (nel mio vanno bene i default 4420 ms).

Grandezza del buffer troppo bassa:

  • Interruzione del flusso multimediale;
  • Disco impegnato con più frequenza ma con poco carico di lavoro (file recuperato in molti piccoli pezzi).

Grandezza del buffer troppo alta:

  • Latenza con i comandi di playback (play, pause, stop, ecc);
  • Disco impegnato con meno frequenza ma con molto carico di lavoro (file recuperato in pochi pezzi più grandi).

Foobar2000 esprime la grandezza del buffer in ms (e non in KB), indicando i ms di musica che dovrà caricare in memoria.

Profondità di bit (output format)

La profondità di bit (risoluzione) indica il numero di bit presenti in ogni campione.
Essa va configurata a seconda della profondità di bit dei file da riprodurre, infatti il valore di default 16 bit è perfetto per la maggior parte della musica in circolazione, campionata appunto a 44.1KHz/16bit.
Impostarla su un valore non corrispondente a quello dei file sorgenti, non risulterà altro che in degrado di qualità.

Dither

Durante l’editing audio la profondità di bit cresce; al termine di questa fase, essa deve essere riportata al valore originale (es. 16 bit).
A questo punto i bit in eccesso vengono eliminati o arrotondati a seconda dell’algoritmo usato.
In ogni caso si generano delle distorsioni che non dovrebbero occorrere durante l’ascolto di un brano musicale.
Per questo si utilizza il Dithering, una tecnica che aggiunge un fondo di rumore bianco al brano, rendendo i comportamenti non lineari (distorsioni) meno evidenti per l’orecchio umano.
È comunque consigliato lasciare questa opzione disabilitata.

Fine della configurazione

Foobar2000 è ora pronto per far lavorare WASAPI in modalità esclusiva, per una riproduzone audio bit perfect. Quando foobar2000 è aperto, non si riceverà output sonoro da nessun altro programma e il mixer di Windows verrà completamente scavalcato.
Per ascoltare l’audio da un altro programma, occorre chiudere foobar2000 e riavviare il programma in questione.

Davide

Fondatore ed Autore at FortyZone
Diplomato nel 2015 in Informatica. Studio Informatica alla Sapienza di Roma. Ho diversi interessi e passioni, tra cui musica, cinema, sviluppo software e web, SEO e digital marketing. Ah, suono il basso.
  • Giuliano

    Ho configurato Foobar come descritto e invio il flusso al d/a converter a sua vota collegato all’amplificatore.
    Mi aspettavo che il volume fosse regolabile solo tramite l’amplificatore e, invece, mi sono accorto che è possibile modificare il volume anche tramite il cursore di Foobar. Come si può evitare questo intervento di Foobar sul flusso dei dati?
    Io uso anche Winamp (con il plugin Maiko Wasapi) e il suo cursore del volume non influisce sul volume del suono che è modificabile solo tramite l’amplificatore.

    • Ciao Giuliano e grazie per il commento.

      Con questa configurazione, foobar2000 utilizza WASAPI in modo esclusivo, quindi diventa l’unico programma in grado di controllare la scheda audio.

      Noti questo comportamento perchè il plugin WASAPI sviluppato per foobar2000 permette la modifica del volume in uscita.
      Quindi mixer di Windows e filtri della scheda vengono bypassati, ma foobar2000 ti permette comunque di controllare il volume.

      Spero di esserti stato utile 🙂

      • francesco izzo

        Ciao Davide e grazie innanzi tutto per il bel post sulle impostazioni di Foobar. Volevo precisare, a beneficio di tutti gli eventuali fruitori di questo programma, che un controllo di volume a livello software è assimilabile ad un qualsiasi DSP, e quindi per evitare le sue nefaste influenze basta … non utilizzarlo, quindi è sufficiente lasciarlo al massimo.In questo modo il flusso dei bit genera un segnale audio alla massima risoluzione, il migliore possibile compatibilmente con la qualità del file sorgente. Volevo invece porti la seguente domanda, in riferimento al fatto che la profondità di bit da utilizzare deve essere uguale a quella del file sorgente, pena un probabile degrado: come fare per impostare Foobar in modo da adeguare automaticamente la profondità di bit al file che voglio riprodurre ? Cioè, nel caso si abbiano in archivio (come nel mio) file a standard CD (16/44.1) e file ad alta risoluzione (tipo 24/196), si puo’ fare in modo che Foobar cambi in automatico la profondità di bit da utilizzare (spero di essere stato chiaro)… ?

        • Ciao Francesco.

          Grazie per l’aggiunta utilissima che hai dato a questo articolo 🙂
          Per la tua domanda sei stato chiarissimo.

          Anche io ho degli album ad alta risoluzione, e per quelli sono costretto a cambiare la profondità di bit manualmente.
          Quindi un plugin per cambiare automaticamente la profondità di bit sarebbe molto richiesto e utile.

          Il problema è che al momento non esiste.
          Puoi trovare diverse discussioni sul forum di head-fi.com, di utenti che chiedono la stessa cosa.

          Un membro del forum, però, afferma che puoi impostarlo a 24 bit, e alla riproduzione di 16 bit, WASAPI aggiunge automaticamente altri 8 bit 0, per raggiungere i 24.
          In questo modo non c’è nessun impatto sulla qualità dell’audio.

          Bisognerebbe fare dei test per vedere se effettivamente l’audio rimane bit perfect.

  • Simona Moretto

    Ciao Davide, il tuo post è stato per me illuminante. Ho acquistato da poco il lettore Creek Evolution 50cd (insieme all’amplificatore Creek Evolution 50a e alle Kef LS50) ed ho scoperto che il suo dac interno Wolfson 24 bit 192 kHz con uscita usb posteriore può essere sfruttato per ascoltare i miei file su pc in alta definizione con Foobar (grazie alla tua guida). Il risultato è più che buono. Tuttavia, come posso migliorare ancora (se possibile) la qualità sonora? Ad esempio, acquistando un ottimo cavo usb, si può ottenere un suono ancora più stabile e pulito? Ne vale la pena? Oppure per il livello di impianto mi consigli altra soluzione? (ad esempio un dac esterno più prestante o addirittura un lettore di rete come il cambridge cx n?). Grazie mille. Un saluto 🙂