note libere

la casa di c-3PO e squeezelite-R2

Tag: Upsampling e DSP

C-3PO LMS Plugin e Squeezelite-R2: obiettivi e limiti del progetto

Come già anticipato,  lo scopo di tutto è poter fare decode in PCM e resampling sul server (Logitech media server) e di conseguenza alimentare il player (Squeezelite-R2) con uno stream già nel formato desiderato, così da renderne realmente leggerissimo il carico.

Questo perchè sono personalmente convinto che è quello che sta vicino all’impianto (il player) a dover essere curato maggiormente in modo da evitare ‘inquinamenti’ di qualsiasi sorta, mentre – sempre a mio avviso – ciò che avviene su un server a decine di metri di distanza, in un’altra stanza e possibilmente alimentato su un’altra linea elettrica è sicuramente ordini di grandezza meno influente, ammesso che lo sia in alcun modo.

Applicando la forma del dialogo con un (nemmeno troppo) ipotetico audiofilo, spero di chiarirne le caratterisiche.

L’audiofilo: Ma… non si poteva già fare?

No, LMS non trasmette ai client informazioni attendibili sullo stream quando il formato è PCM (raw, wav o aif che sia). Squeezelite in versione originale, si adegua e di conseguenza non è in grado di riprodurre correttamente stream ricampionati.

Fino a ieri si era costretti a scegliere:

a. Usare Flac o altri formati non PCM.
b. Lasciare il compito del resampling al client.

La modifica a Squeezelite consente proprio di ‘analizzare’ lo stream in ingresso per determinarne – quando possibile – in autonomia il formato e riprodurlo correttamente.

L’audiofilo: Ma non è una novità, Daphile lo fa gia.

Kimmo, mantainer di Daphile, è stato uno dei primi a capire le potenzialità della modifica ed adottarla. Le versioni di Daphile dal 4 di ottobre in poi la integrano.

L’audiofilo: Non lo sapevo, non lo si legge da nessuna parte

Già, è’ così…

L’audiofilo: E C-3PO, il plugin,  a cosa serve?

Per ‘comandare’ il server era fino ad oggi necessario modificare manualmente alcuni files di configurazione, con risultato spesso catastrofici o almeno non certi (spesso ci si illude di aver modificato il comportamento del server, ma non è così).

ll plugin C-3PO in prima battuta realizza un’interfaccia grafica più intuitiva per impostare i parametri necessari per gestire le operazioni di decodifica e ricampionamento sul server, eliminando la necessità di intervenire a livello di file di configurazione.

Oltre a questo, permette di configurare e metter in atto opzioni di ricampionamento in funzione del formato (non solo il ‘tipo’, ma anche la frequenza di campionamento originale, ad esempio) del file o stream in ingresso, cosa prima non possibile sul server.

L’audiofilo: Anche questo Daphile lo fa gia, usa lo stesso plugin?

Al momento non mi risulta che Daphile sia in grado di fare ricampionamento selettivo sul server, lo ha sempre fatto ma solo usando squeezelite. Usa un meccanismo esterno a Logitech media server e proprietario, non C-3PO plugin, che io sappia.

Chiunque può adottare il mio plugin nel rispetto delle regole imposte dalla licenca GNU GPL v2 che regola l’utilizzo, la modifica, integrazione e distribuzione di Logitech Media Server e Squeezelite (open source / free software), non è lo stesso per le componenti proprietarie di Daphile o altri sistemi.

L’audiofilo: Quali formati sono supportati?

Al momento AIF, FLAC e WAV (pcm), il piano è di aggiungere tuttii formati lossless significativi supportati da LMS, nessuna previsione per i formati lossy, ma non sarebbe un problema farlo.

L’audiofilo: Non supporta DSD?

Esiste già un plugin analogo (DSDPlayer) realizzato da Kimmo Taskinen (Daphile) e modificato da Adrian Smith (Triode, squeezelite) che lo fa, ho ritenuto corretto non sovrappormici, dato che possono tranquillamente convivere. Non ci sono incompatibilità o limiti tecnologici, se si evidenzia una necessità, è fattibile senza problemi.

L’audiofilo: Ma, alla fine, perchè dovrei utilizzare C-3PO e Squeezelite-R2?

Sono strumenti open source, multipiattaforma e perfettamente integrati nell’ecosistema squeezebox, il che abilita alla fruizione di tantissime altre funzionalità che altri hanno reso o renderanno via via disponibili secondo la migliore tradizione della squeezebox community, senza scopi di lucro ne intenti commerciali.

Rispeto a soluzioni proprietarie, sono estremamente più indipendenti da me e dalla mia disponibilità futura di tempo per mantenerli

L’audiofilo: Esiste una ISO da scaricare?

No, si tratta d componenti, non di un sistema completo.

Spero e credo ne saranno rese disponibili a breve, al momento esistono delle ottime guide di riferimento e di installazaione cui fare riferimento.

L’audiofilo: Come faccio ad averli?

Sono gratuiti oltre che liberi, la guida all’installazione riporta i link dove recuperare le versioni necessarie. Il codice sorgente, i termini di licenza e le versioni eseguibili per le diverse piattaforme sono in gitHub. C-3PO si installa direttamente da LMS come qualsiasi altro plugin, fare riferimento alla guida per ulteriori informazioni

Upsampling in Squeezebox server

Ho già spiegato che personalmente non sono convinto dell’utilità dell’upsampling, ma circa un anno fa sono stato coinvolto in una serie di discussioni su diversi forum che vertevano sul ‘come’ fare upsampling usando Squeezebox server.

Da queste discusioni e dal parziale fallimento è nata l’idea di realizzare Squeezelite-R2 e C-3PO che presenterò più diffusamente nei prossimi articoli.

In modo nativo, è possibile usare sostanzialmente due metodi per fare decodifica di formato ed upsampling con LMS e Squeezelite:

Il primo praticato fino al rilascio di Squeezelite-R2 anche da Daphile è di farlo fare a Squeezelite, che utilizza al suo interno la libreria libsox0 ed è in grado di impostarne i parametri via riga di comando.

Vantaggi: funziona, minimo utilizzo di banda.

Svantaggi: alto carco di CPU sul client, è in contrasto con l’approccio minimalista.

il secondo è in LMS e prevede l’utilizzo di SOX (applicazione) passandogli gli opportuni parametri mediante files di configurazione (custom-convert.conf)

La rete è piena di guide su come fare ed è ancora possibile vedere quanto da noi allora prodotto, rileggendo la seguente discusione (sconsigliato).

Purtroppo, dopo mesi di fatiche, ci scontrammo con una …caratteristica… di LMS tale per cui non era possibile inviare ai lettori stream oggetto di upsampling e conversione PCM. O l’uno  o l’altro.

In pratica, partendo da files FLAC 44100/16 era necessario prima decodificarli in WAV, quindi farne l’upsample e di nuovo la conversione in FLAC, prima di poterli passare a squeezelite che li riconvertiva in WAV e inoltrava al DAC.

Vantaggi: funziona, carico di rete medio, carico di lavoro del player medio.

Svantaggi: alto carco di lavoro sul server (doppia conversione), utilizzo di banda medio, carco del player medio.

I fautori dell’upsampling comunque, ritenevano già allora di avvertire un miglioramanenti significativo nella seconda configurazione.

A settembre 2015, ho rilasciato Squeezelite-R2 che aggira l’ostacolo mettendosi in condizione di poter ricevere lo stream oggetto di upsampling già in formato PCM, così da limitare il suo compito al minimo assoluto. Viene adottato per primo da Daphile già dalle versioni di ottobre, anche il lavoro del server si semplifica.

A Novebre 2015 vede la luce anche la prima versione di C-3PO, un plugin di LMS il cui principale scopo è ‘liberare’ l’utente dalla necessità di utilizzare complicate impostazioni nei files di configurazione.

Ad oggi lo scopo è raggiunto, non tutto in C-3PO è semplice come potrebbe e dovrebbe essere ma funziona.

Grazie a Squeezelite-R2 ed a C-3PO è certamente possibile usare LMS per fare upsampling e transcoding in altissima qualità, usando un interfaccia web e non più files di configurazione.

Obiettivo raggiunto.

Powered by WordPress & Theme by Anders Norén