Componenti di Foobar2000 – HDCD decoder

Eccoci col primo appuntamento dedicato ai componenti di Foobar2000.

Non so se ve lo ricordate ma qualche tempo fa ho scritto un articolo sugli HDCD e sul fatto che, non avendo più un lettore in grado di decodificare tale formato, stavo studiando un modo per effettuare la decodifica in fase di ripping dei CD così da ottenere un file FLAC contenente tutte le informazioni già pronte da dare in pasto al DAC senza preoccuparmi di null’altro.

Facendo 2+2, dando per scontato che seguiate il blog e avete letto il titolo del post, avrete capito che ho risolto il mio cruccio tramite Foobar2000 ed il suo componente dedicato al decoder HDCD che potete scaricare, nella sua ultima versione, a questa pagina.

Una volta scaricato, installato e reso operativo (riavviando Foobar2000) il plugin non vedrete assolutamente nulla di diverso a livello di interfaccia né avrete alcuna indicazione sul fatto che il decoder sia o meno attivo in fase di riproduzione di quei brani provvisti di tale codifica per cui, come me, vi troverete spiazzati senza sapere che pesci pigliare.
Non preoccupatevi che adesso vedrò di darvi una mano a capire e sfruttare bene il componente appena installato.

La prima cosa da fare, ovviamente, è verificare la presenza di tracce HDCD nella nostra libreria. Per fare ciò è sufficiente:

  • selezionare la voce “All Music” nella scheda di visualizzazione della libreria (la prima voce in alto)
  • cliccare col tasto destro del mouse
  • andare alla voce “Utilities”
  • selezionare l’opzione “Scan for HDCD Tracks”

Il processo richiederà un po’ di tempo in base all’estensione della vostra libreria musicale. Nel mio caso la scansione è stata completata in circa 20 minuti.
Nel riquadro “Processing”, che nello screenshot è vuoto, vengono visualizzati i file attualmente in elaborazione; l’elaborazione stessa è effettuata in ordine casuale (o almeno così mi è parso di intuire).

A scansione ultimata, portate pazienza nel caso in cui la vostra libreria sia pesante, Foobar2000 visualizzerà una finestra che elenca tutte le tracce HDCD presenti nell’archivio e le varie “opzioni” di codifica presenti.


Se adesso provate a riprodurre una delle tracce HDCD rilevate vedrete, con piacere, che non avete ancora modo di capire se il decoder sta lavorando né come sta lavorando… E questa è una cosa che a me ha fatto un po’ innervosire.
Il sistema rileva gli HDCD, in teoria li gestisce, e decodifica correttamente ma non ho modo di sapere se lo stia facendo veramente o meno.

Fortunatamente da questo punto di vista ci viene in aiuto la completa personalizzazione dell’interfaccia grafica di Foobar2000 e delle informazioni visualizzabili a schermo.
Interpellando le giuste variabili e visualizzando le giuste informazioni saremo in grado di far visualizzare tutto ciò che ci interessa sapere in modo davvero chiaro e trasparente.

Ecco come:

  • Aprite le preferenze dell’applicazione (File/Preferences)
  • Espandete la voce “Display”
  • Selezionate la voce “Default User Interface”

A questo punto la finestra vi mostrerà una finestra in due sezioni: la parte in alto riguarda la gestione del “Tema” per cui dell’aspetto generale del software mentre la seconda, quella che ci interessa, riguarda la personalizzazione delle informazioni di riproduzione “Playback state display formatting”.

L’area si divide in tre parti:

  • “Window Title”: come si insuisce è l’insieme di informazioni visualizzate come titolo della finestra di Foobar2000 (in alto a SX)
  • “Status bar”: sono le informazioni visualizzate nella barra di stato del riproduttore (in basso a SX)
  • “Notification area icon tooltip”: sono le informazioni che verranno rese disponibili puntando il mouse sull’icona di notifica che viene visualizzata, nell’area di notifica appunto, quando si “minimizza” il software.

A titolo di esempio di seguito vedete le mie impostazioni e le informazioni che visualizzo a schermo:

Come vedete nella barra del titolo ho inserito un flag che mi avvisa quando il decoder è attivo aggiungendo la voce “HDCD: ON” in testa al titolo stesso.

La barra di stato, invece, visualizza più informazioni e in dettaglio:

  • Se la traccia in riproduzione viene abilitata la sezione “HDCD” che si compone di tre elementi:
    • Peak Extender: restituisce valore “yes” se codificato all’interno della traccia, e quindi decodificato dal componente, oppure “no” se assente
    • Low Level Eq: riporta il valore in dB inserito all’interno della codifica per quanto riguarda l’estensione dinamica, o la compressione dinamica, inscritta nei bit aggiuntivi
    • Transient Filter: si comporta analogamente alla voce “Peak Extender”

Le informazioni legate alla decodifica del formato HDCD, però, non si fermano solamente qui per quanto riguarda la barra di stato: il file in riproduzione è un FLAC a 16 bit (come indicato nella scheda in alto a DX) ma, come si può vedere dalla barra di stato, il software sta gestendo un input a 24 bit. Questa è un’ulteriore conferma dell’attivazione del plugin nonché un’altra cosa da “inserire manualmente” nel sistema perché non prevista di default.

Per facilitarvi un po’ il lavoro vi riporto qui di seguito le stringhe da inserire per visualizzare le info così come le ho impostate io (copiate ed incollate SOLO la parte in grassetto e corsivo):

  1. $if($info(hdcd),’HDCD: ON – ‘) Visualizza la stringa “HDCD: ON – “
  2. $if($info(hdcd),’HDCD:’) $if(%__hdcd%,Peak Extender:%__hdcd_peak_extend%’ ‘ Low Level Eq:%__hdcd_gain%’ ‘Transient Filter:%__hdcd_transient_filter%’ ‘) Visualizza tutte le informazioni di codifica presenti nel file impaginate come spiegato poco sopra.
  3. %__bitspersample% bits / %samplerate% Hz Visualizza le informazioni di profondità di bit e frequenza di campionamento del flusso dati in riproduzione. Si tratta dei dettagli “in ingresso” ai DSP e non “in uscita” dagli stessi. Ergo: non vedrete ricampionamenti o resampling vari; vedrete le proprietà del file così come viene decodificato.

Per rendervi ancora più facile e pronto il tutto queste sono esattamente le mie impostazioni di visualizzazione:

  • Window title
    $if($info(hdcd),’HDCD: ON – ‘)[%album artist% – ][%album%: %tracknumber% -] %title%
  • Status bar
    $if($info(hdcd),’HDCD:’) $if(%__hdcd%,Peak Extender:%__hdcd_peak_extend%’ ‘ Low Level Eq:%__hdcd_gain%’ ‘Transient Filter:%__hdcd_transient_filter%’ ‘)| %codec% | %bitrate% kbps | %__bitspersample% bits / %samplerate% Hz | %channels% | %playback_time%[ / %length%]
  • Notification area icon tooltip
    $if($info(hdcd),’HDCD: ON – ‘)%artist% – %title%

Spero di esservi stato utile. Se avete dubbi o domande chiedete nella sezione commenti che vedrò di aiutarvi per quanto possibile.

Buoni ascolti!

Foobar2000 – Step 4.2: Configuriamo Foobar2000! Pt.2

Se sei arrivato fino a qui è perché non ti basta poter ascoltare la tua musica da Foobar2000 con le impostazioni di default.
Anche perché, a volerla dire tutta, non stai nemmeno ascoltando esattamente la tua musica ma stai facendo rielaborare i tuoi file dal mixer di Windows che si sta occupando di prendere lo stream originale, se così possiamo definirlo, e riconvertirlo (non so con che tipo di algoritmo/approssimazione/fedeltà) a quella che è la configurazione impostata per il dispositivo audio in uso.

Come fare per risolvere questo problema e passare al cosiddetto Bit-Perfect?
La risposta è abbastanza semplice e, almeno in teoria, funziona per tutti i DAC riconosciuti dal sistema: bisogna installare un componente di Foobar2000 (e quindi iniziare ad apprezzare appieno la modularità del sistema) per bypassare il mixer di Windows e fare in modo che il flusso dati sia portato ad un livello macchina che sia il più basso possibile.
Microsoft stessa ha sviluppato una serie di API utili a tale scopo che rientrano nel cosiddetto WASAPI o, per esteso, “Windows Audio Session API” e, fortunatamente per noi, qualcuno si è preso la briga di studiarsi tali istruzioni ed integrarle in un componente che ha l’esatto compito di rendere Foobar in grado di interfacciarsi direttamente con il nostro dispositivo USB: tale componente si chiama “WASAPI Output Support” ed è arrivato alla sua versione 3.3.

Per scaricare il componente in questione cliccare QUI e cliccare Download. Una volta terminato il download del file dovrete, molto semplicemente, lanciarlo e seguire le istruzioni a video per procedere con l’installazione. Vi sarà chiesto di riavviare Foobar2000 e, come per magia, vi comparirà nell’elenco dei componenti installati assieme a quelli già presenti di default (l’elenco è visibile dal menù Preferences).

Bene, ora che abbiamo scaricato ed installato il componente non ci resta altro da fare se non attivarlo in tutto e per tutto.

Per fare ciò dobbiamo andare al pannello di gestione dell’Output (Playback/Output) e selezionare come dispositivo di uscita WASAPI (event o push): Nome del nostro DAC. Vi consiglio di iniziare selezionando la voce con funzionamento PUSH perché maggiormente compatibile; spiegherò più avanti le differenze tra le due modalità di esecuzione.
Una volta selezionato il nostro dispositivo vedrete che le opzioni riportate sotto alla gestione del buffer (di default impostato a 1000 ms) sono diventate accessibili e modificabili: impostate la profondità di bit, come suggerito anche da Foobar stesso, alla massima dichiarata per il vostro DAC mentre per quanto riguarda la voce “Buffer Lenght” dovrete sperimentare un po’, più avanti, per adeguare tale “riserva di musica” al vostro setup definitivo.
Considerate, però, che un buffer troppo corto può risultare in una riproduzione intermittente e un buffer troppo lungo può causare (anzi causa) ritardi di risposta del sistema.

Se provate ad avviare la riproduzione di un qualsiasi brano adesso, SENZA ATTIVARE nessun DPS (anche perché non ne abbiamo ancora parlato), vedrete che il vostro DAC aggancia il segnale alla frequenza di campionamento del pezzo in riproduzione. State ascoltando in “Bit-Perfect”.

Ora vediamo quali sono le differenze tra le due modalità operative del componente WASAPI:

  • In modalità Push, in sostanza, è il PC a gestire il flusso dei dati indipendentemente dallo stato del DAC e dell’effettiva capacità dello stesso di immagazzinare e, soprattutto, elaborare e decodificare i dati stessi. Nonostante questi “inconvenienti” vi consiglio comunque di iniziare con questa impostazione perché è quella compatibile con praticamente tutti i DAC in commercio (o meglio con i ricevitori USB installati sugli stessi)
  • In modalità Event, invece, inverte la gestione del flusso e il carico di lavoro passa direttamente al controller USB del DAC in uso. Di fatto, se supportata dal dispositivo, rende l’approvvigionamento dei dati realmente asincrono e completamente slegato dal PC per cui potenzialmente migliore.

All’atto pratico i due sistemi, se correttamente implementati e funzionanti, non hanno alcuna differenza all’ascolto ma differiscono a livello di bilanciamento del carico di lavoro.

Bisogna, però, tenere conto che con la modalità Push il PC gestisce il flusso, e quindi lo subordina all’eventuale elaborazione dei dati (sovracampionamento, filtraggio, equalizzazioni e così via) rischiando di saturare il buffer del DAC (che a sua volta attua elaborazioni del segnale) qualora l’elaborazione dei dati fosse troppo veloce (eventualità veramente difficile perché “regolata” dallo stream/durata del bano); d’altro canto la modalità Event potrebbe fare in modo che il DAC richieda dei dati non ancora disponibili, perché non ancora elaborati dal PC, causando dei vuoti di memoria (eventualità assai più probabile perché il controller USB integrato nel DAC non sa a che ritmo deve gestire il flusso dei dati).

Per ovviare a questi problemi bisogna intervenire modificando la dimensione del buffer di uscita di Foobar2000 che ha lo scopo di uniformare il flusso dei dati in uscita dal sistema. Sia che questi siano spinti fuori dal PC sia che questi siano tirati dentro il DAC.
Ogni combinazione PC/DAC trova il suo equilibrio in un valore differente impostato per tale cuscinetto. Valore che può essere trovato solo sperimentalmente, e da voi, in base alle configurazioni in uso sul vostro sistema.
Io, nel mio caso, utilizzo la modalità Push e vivo sereno.

Ribadisco però il concetto fondamentale:

LE DUE IMPOSTAZIONI NON HANNO NESSUNA DIFFERENZA ALL’ASCOLTO A PATTO CHE LA RIPRODUZIONE SIA CONTINUA E PERFETTAMENTE FLUIDA.

E con questa pagina si conclude la nostra vventura circa la configurazione di Foobar2000 intesa alla riproduzione Bit-Perfect, e quindi pienamente fedele al flusso dati originale.

Nei prossimi capitoli ci concentreremo sull’installazione e utilizzo delle componenti necessarie, a mio modo di vedere, al fine di sfruttare appieno il software; allo stesso tempo vedremo anche come modificare l’interfaccia utente così da poter verificare il corretto funzionamento del sistema.
Vedremo, inoltre, come aggiungere delle webradio alla libreria.

Ovviamente arriveremo anche al nocciolo della questione: rendere remotabile il sistema.

Finalmente posso scriverlo:

Buona musica!

Foobar2000 – Step 3: Configuriamo il Sistema

Piccolo riassunto delle puntate precedenti:

A questo punto dovremmo avere tra le mani un PC Windows 10 Pro pulito, impostato per poter essere posizionato a piacere anche nel rack dell’impianto, e davvero pronto ad essere reso operativo come Sistema di riproduzione musicale.

Iniziamo:

La prima cosa da fare, strano a dirsi, è quella di verificare i collegamenti e accendere, almeno inizialmente, DAC e PC.

Effettuiamo il login alla macchina e, dal nostro fidato pannello di impostazione, accediamo alla scheda relativa al “Sistema” e da qui andiamo alla scheda “Audio”.
Grazie al fatto che, finalmente, Windows 10 supporta nativamente il protocollo USB Audio Class 2, non dovrebbe essere necessario installare alcun driver e dovremmo vedere visualizzato il nostro DAC come periferica audio attualmente attiva.
ATTENZIONE: lo standard USB AC2 supporta nativamente segnali fino a un massimo di 24 bit / 192 kHz. In realtà lavora anche a 32 bit ma la combinazione 32 bit / 192 kHz non è universamente riconosciuta come standard.

Se così non fosse sarà necessario reperire i driver dal sito del produttore, installarli e fare in modo che il sistema riconosca il nostro DAC come dispositivo di output.

Una volta fatto ciò apriamo il menù di configurazione cliccando la voce “Proprietà dispositivo“. Da qui potremo fare diverse cose, tra cui cambiare il nome che il sistema assegnerà alla periferica (cosa utile nel caso in cui abbiate più DAC USB connessi), ma a noi adesso interessa accedere alle “Proprietà aggiuntive dispositivo” accessibili dal menù a DX.
Una volta aperta tale menù selezioniamo la scheda “Formati supportati” e andiamo ad agire come segue:

  • Dalla sezione “Formati codificati” possiamo selezionare i bitstream che potremo inviare direttamente al DAC senza alcun tipo di conversione in PCM e far lavorare il decoder interno al DAC stesso. Se non sapete se il vostro DAC è in grado di fare qualche tipo di decodifica in modo nativo la cosa più semplice è selezionare una codifica alla volta e premere il tasto “Prova”.
    Molto probabilmente il dispositivo non sarà in grado di effettuare la decodifica in modo nativo, la prova fallirà e la voce verrà disabilitata in automatico.
  • Dalla sezione “Frequenza di campionamento” possiamo selezionare le varie frequenza di campionamento, appunto, e testare l’effettiva capacità di riproduzione del DAC. Il mio consiglio è di verificare, indipendentemente dai dati di targa dichiarati dal costruttore, che il nostro DAC (o meglio il ricevitore USB integrato) sia in grado di operare a tutte le frequenze previste.
    Ci sono dispositivi che lavorano tranquillamente a 192 kHz ma non riescono ad agganciare segnali a 176,4 kHz.

Passiamo ora alla scheda “Avanzate” e prepariamoci a sentire un bel po’ di suoni: partendo dalla qualità inferiore proviamo tutte le voci così da capire qual’è il vero limite di decodifica del nostro DAC. Il mio RC-1570, ad esempio, riproduce tranquillamente anche segnali con profondità di campionamento 32 bit fino a 192 kHz. Vezzo inutile ma differente dal dichiarato (anche perché il Wolfson WM8740 montato non lavora comunque a 32 bit). Indipendentemente da ciò selezioniamo come “Formato predefinito” la massima combinazione di profondità di bit e frequenza di campionamento dichiarata dal costruttore (o la massima riproducibile qualora differente).
Sempre dalla stessa scheda attiviamo entrambe le voci riportate nella sezione “Modalità esclusiva“.

A questo punto abbiamo, finalmente, un PC in grado di comunicare con il nostro DAC e pronto ad essere reso operativo al nostro scopo.

I passi successivi NON sono necessari SOLO per chi intende configurare un PC totalmente “remotato” come il sottoscritto.
Vi consiglio di leggere fino in fondo perché potreste trovare spunti utili anche al vostro caso.

Ricordate quanto detto all’inizio della configurazione di Windows?
Siamo loggati nel PC, anche da remoto, con un utente con privilegi di amministratore.
Cosa non buona in ottica di avere un sistema che, per alcuni di noi, sarà acceso 24/7 e collegato alla rete domestica. Per cui come prima cosa andiamo a creare un utente “base”, che quindi non ha alcun privilegio sulla macchina (e potenzialmente sul resto della rete) da utilizzare d’ora in avanti come “utente unico” sul sistema.

Per fare ciò, stranamente, bisogna partire dal nostro amico ingranaggio. I passaggi da fare sono i seguenti:

  • Selezioniamo la voce “Account
  • Andiamo alla scheda “Famiglia e altri utenti” dal menù di SX
  • Alla voce “Altri utenti” facciamo click su “Aggiungi un altro utente a questo PC
  • Opzionale: selezioniamo “Non ho le informazioni di accesso di questa persona” e successivamente “Aggiungi un utente senza account Microsoft”
  • Assegnamo un nome ed una password al nostro “utente unico” – banalmente io uso “Foobar2000” come nome utente. La password è indispensabile in ottica di accesso remoto al sistema.

Una volta terminata la procedura dovrebbe comparirci l’account appena creato identificato come “Account locale“.

Se siete collegati in remoto al PC e tentate di accedere utilizzando tale utenza non riuscirete nell’operazione perché, come detto, bisogna abilitare gli utenti non amministratori all’accesso remoto.
Per fare ciò torniamo al menù relativo al “Desktop remoto” e aggiungere l’account all’elenco degli abilitati tramite la voce “Seleziona gli utenti che possono accedere da remoto a questo PC“.

  • Clicchiamo “Aggiungi
  • Digitiamo il nome dell’utente appena creato
  • Clicchiamo il tasto “Controlla nomi” – l’operazione dovrebbe riconoscere l’utente locale e completare le informazioni mancanti restituendo la voce “NOMEPC\Utente
  • Facciamo click su OK per confermare l’operazione

Disconnettiamoci dal sistema e riconnettiamoci utilizzando l’utente appena creato.

Se tutto va a buon fine iniziamo a vedere la luce in fondo al tunnel.
Ma non è ancora finita…

Il problema di base è uno solo: se spegnete il PC e poi lo riaccendete questo resta sulla schermata di login e, di conseguenza, non è in grado di eseguire alcuna applicazione fino a quando un utente non si connette alla macchina.
Il nostro obiettivo, però, è quello di fare in modo che il computer si avvii e sia pronto alla riproduzione senza nessun intervento esterno sul fronte del sistema operativo.
Noi vogliamo solamente avviare un App sul telefono/tablet e fare in modo di controllare Foobar2000, e la riproduzione da lì… Per cui ci serve che il sistema si avvii e che, soprattutto, login e avvio di Foobar2000 siano automatizzati.

Andiamo con ordine e facciamo tutto quanto.

Accediamo da remoto alla macchina ed occupiamoci, anzitutto, di rendere il login della nostra utenza base automatico.

Per fare ciò premiamo “Win+R“, o clicchiamo su Start, e digitiamo “netplwiz“. Se siamo loggati con un profilo “base” il sistema ci chiederà di inserire le credenziali di un account amministratore per procedere, facciamolo e dovrebbe aprirsi un pannello di configurazione chiamato “Account utente” che riporta, al centro, l’elenco degli utenti registrati a sistema. A noi, però, interessa la spunta alla voce “Per utilizzare questo computer è necessario che l’utente immetta il nome e la password“.
Togliamo la spunta e clicchiamo su “Applica“.
Comparirà una finestra di dialogo in cui viene chiesto di indicare l’utente per cui intendiamo rendere automatico il login. Non dobbiamo fare altro che compilare i campi con i dati dell’utente da noi creato allo scopo di riprodurre musica.
Clicchiamo OK due volte e il gioco è fatto.

Se adesso riavviate il sistema il PC farà tutto da solo e il login al nostro account “Foobar2000” sarà del tutto automatico.

Ora, che ci crediate o no, possiamo finalmente scaricare ed installare Foobar2000 e iniziare a preoccuparci anche della sua gestione a livello di sistema. Non ancora, però, della sua configurazione.

Una volta completata l’operazione di installazione di Foobar2000 non ci resta che rendere la sua attivazione contestuale all’avvio del sistema. Questa è, forse, la cosa più complicata e stupida da fare:

  • Apriamo una finestra di “Esplora risorse
  • Selezioniamo la scheda “Visualizza” e abilitiamo la voce “Elementi nascosti
  • Andiamo alla cartella “Esecuzione automatica” seguendo il seguente percorso:
    • Windows C: (o comunque il disco radice di Windows)
    • Utenti
    • Utente base
    • AppData
    • Roaming
    • Microsoft
    • Windows
    • Menu Start
    • Programmi
    • Esecuzione automatica

Ora non dobbiamo fare altro che creare un collegamento all’applicazione Foobar2000 (trascinare l’icona di Foobar2000 presente sul Desktop è il modo più semplice e immediato per farlo). Inserite le credenziali di un account amministratore per confermare l’operazione e il gioco è fatto.

Riavviate la macchina e, come per magia, al prossimo login avrete la finestra di Foobar2000 già a schermo e pronta per essere configurata.