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!

HDCD: Questo sconosciuto

Avete presente quando, all’improvviso, vi si accende una lampadina nel cervello?

Ecco. Mi è successo esattamente questo mentre ero in ufficio (laboratorio di taratura in realtà; sono un metrologo): mi è venuto in mente che, quando ancora utilizzavo il Philips BDP9500 come lettore CD capitava, ogni tanto, che il lettore stesso riconoscesse i dischi come HDCD e che, di conseguenza, abilitava una serie di processamenti del segnale utili rendere la riproduzione, di fatto, una via di mezzo tra un CD e un file ad alta risoluzione. Il segnale PCM veniva rimodulato, in soldoni, da 16/44.1 a 20/44.1 con incremento di dinamica disponibile e, apparentemente, anche una miglior risposta ai transienti e, di conseguenza, un miglior contrasto dinamico.

Avevo approfindito la questione all’epoca ma poi, col passare del tempo e col passaggio alla musica liquida, ho completamente dimenticato questa magia per cui sacrificando uno dei 16 bit di campionamento veniva creato un codice di decodifica utile ad attivare un DSP all’interno del circuito di elaborazione del segnale che, un po’ come avviene quando si decomprime un file, andava ad inserire dei dati “nascosti” all’interno dell’uscita facendo vincere al sistema 5 bit di risoluzione aggiuntiva.

Una sorta di MQA dei tempi che furono e che, attualmente, è in mano a Microsoft.

Il problema, vero, di questo tipo di codifica del segnale PCM è uno soltanto: non è minimamente sponsorizzato sui dischi e, di conseguenza, non ricordo su quanti (né quali) è implementato.

Teoricamente il ripping effettuato con XLD non è distruttivo ed il file FLAC (o ALAC, o AIFF, o WAV, o come esportate voi) generato dal convertitore mantiene la “traccia nascosta” utile alla decodifica completa del messaggio sonoro registrato. Il problema è che, mentre Foobar2000 dovrebbe essere in grado di decodificare l’HDCD, in ambiente NON Windows tale procedura è, in un certo senso, inibita dal fatto che l’algoritmo di conversione è di proprietà di Microsoft e, di conseguenza, non implementato in piattaforme differenti. Oltretutto l’unico software di riproduzione ufficiale risulta essere Windows Media Player

Dove voglio andare a parare vi chiederete voi…
La risposta a questa domanda è semplice: come posso fare per evitare di perdere queste informazioni nascoste e svincolarmi dalla piattaforma di conversione e/o dal fatto che il DAC in mio possesso sia “HDCD compliant” e quindi in grado di digerire tale formato?
In sostanza sto vivendo, in prima persona, ciò che alcuni vivono con la codifica MQA ma con un formato di qualche decennio fa, caduto totalmente in disuso e che, sulla carta, prometteva risultati a metà strada tra un CD Red Book e un DVD Audio.