audiodan ha scritto:Mettere in piedi un sistema simile per la riproduzione audio non e' complicatissimo.
Ma Clementine Music Player potrebbe andare gia' bene???
scusa ma... non capisco. Volete un sistema che segua la filosofia del "cMP²" (utilizzo dell'hardware ridotto al minimo indispensabile, preload in memoria per evitare accessi al disco, ecc) oppure una bella GUI piena di funzionalità più o meno (in)utili, grafica, lucette e bottoncini?
Per la seconda cosa va benissimo anche una Ubuntu desktop standard, tanto con "
clementine" quanto anche con i suoi eccellenti player di default ("
banshee" a partire dalla 11.04 oppure "
rhythmbox" nelle versioni precedenti), con l'unica accortezza di configurare adeguatamente "
PulseAudio" per fare l'upsampling desiderato (e.g. SRC-sync-best a 192K) oppure toglierlo di mezzo del tutto (disinstallando il pacchetto "pulseaudio") ed utilizzare direttamente ALSA (da configurare adeguatamente per mezzo del file ~/.asoundrc, che è quello che ho fatto sul tuo sistema).
In effetti, da oltre due anni a questa parte io uso normalmente proprio una configurazione del genere (niente pulseaudio o simili, upsampling con alsa o sox configurato via ~/.asoundrc, un player qualsiasi) e suona benissimo.
Ma una cosa simile non si può certo definire un sistema "simil-cMP²". Se poi all'ascolto ci siano o meno differenze percepibili tra le due opzioni non lo so' (non ho ancora avuto il tempo e la voglia per fare delle prove di ascolto approfondite in tal senso e d'altronde il mio hardware non segue in alcun modo i dettami di un sistema cMP², per cui la cosa non avrebbe neanche troppo senso).
In effetti, uno degli scopi principali del semplice setup di test proposto è proprio quello di verificare se/quanta differenza ci sia tra le varie opzioni minimaliste qui proposte nonché (soprattutto) tra queste ed un sistema "normale" (Linux desktop con un player qualsiasi). Last but not least, tra le diverse possibilità Linux-based ed il cMP² originale (ovviamente il tutto a parità di configurazione per quanto riguarda upsampling e hardware).
audiodan ha scritto:Sorgono pero' due problematiche: usabilita' e interfacciamento.
Usabilita':
* La gestione della libreria/database e' un aspetto essenziale - tipo JRiver, MusiCHI Suite,...
* Possibilita' di essere remotato, anche con un client tipo Android
* Facililita' di utilizzo sia nella libreria che nel player
come detto in precedenza, a questo si penserà in un secondo momento.
Prima si tratta di stabilire se/cosa/quanto le varie attività di sistema influiscano sulla qualità della riproduzione (il fatto che eventualmente ciò sia vero con sistemi windows NON significa necessariamente che lo stesso sia vero anche con Linux, che ha una architettura e caratteristiche completamente diverse).
Un'altra possibilità da esplorare, che secondo me può dare risultati ottimali senza dover creare nulla di nuovo (è già tutto sostanzialmente bello e pronto) è quella di usare
MPD, che è perfetto allo scopo.
Un modo semplice per farlo è quello di provare ad utilizzare "
Voyage MPD", che è un sistema già ottimizzato allo scopo. Istruzioni dettagliate sono già disponibili in rete.
Unica cosa che forse non è scritta nelle istruzioni di Voyage è come utilizzare sox per l'upsampling in luogo del resampler interno di MPD (che se non ricordo male usa "libsamplerate" con le sue varie opzioni, tra cui c'è anche l'algoritmo "SRC"). Per farlo (non ho ancora provato), direi che si tratta di configurare MPD per NON fare il resampling ma uscire invece attraverso una "pipe" che esegue sox (con le opzioni opportune).
In una ottica "xMP²", utilizzando (almeno) due sistemi separati (connessi via rete) si può anche implementare un sistema che dovrebbe essere sostanzialmente equivalente al "lMP-extreme.sh", senza però averne la scomodità ne i problemi.
L'architettura del sistema potrebbe essere grosso modo questa:
Codice: Seleziona tutto
{[file server]<-(1)->[stream transmitter]}-(2)->[stream receiver]-(3)->[audio system]
Procedendo all'indietro, lo "stream receiver" ha la sola funzione di ricevere uno stream audio (già convertito alla risoluzione finale desiderata) e convertirlo nel segnale audio analogico.
Se si utilizza una interfaccia USB asincrona, lo stream receiver potrebbe essere costituito direttamente da tale interfaccia, nel qual caso il link indicato con (2) sarebbe quindi il link USB.
In alternativa, se ad es. si utilizza una scheda audio interna, lo "stream receiver" può essere un piccolo sistema dedicato (in cui è montata la scheda audio) ed il link (2) sarà su ethernet (LAN).
Il carico di CPU e le richieste di memoria di un tale sistema dedicato sono ridotte praticamente a zero. In sostanza tutto quello che deve fare è gestire un piccolo buffer FIFO. Si tratta quindi di un sistema embedded (e praticamente diskless, tranne eventualmente per una piccola memoria a stato solido, anche USB, da cui caricare il sistema e che non viene più utilizzata dopo l'avvio). Non serve neanche che abbia monitor o altre interfacce utente. Può essere realizzato anche utilizzando schede a bassissimo consumo pensate per sistemi embedded (non necessariamente con architettura Intel/PC-compatibile). Va bene qualsiasi cosa sia in grado di far girare un Linux minimale con i driver ALSA ed un qualche sistema per ricevere i dati via rete (forse anche un server custom minimalista fatto banalmente con "netcat" oppure uno dei vari sound server capaci di comunicare via rete, incluso lo stesso "pulseaudio").
A "monte" dello "stream receiver" c'è il sistema principale. Questo si occupa di accedere ai files audio, gestire in qualche modo l'interfaccia utente (nonché archivi, playlist e quant'altro) e preparare adeguatamente lo stream che sarà inviato allo "stream receiver" (già convertito con sox o altro alla risoluzione -fissa- desiderata in uscita).
Il sistema principale potrebbe essere realizzato con un server MPD, così da poter essere installato anche in luoghi diversi da quello dov'è l'impianto audio e permettere l'uso dei più disparati client remoti (MPD dispone di numerosi client che girano sui più disparati dispositivi inclusi palmari, smartphone, ecc oltre che ovviamente su computer di ogni genere e tipo).
In alternativa però può anche essere un normale sistema desktop configurato in modo da redirigere la propria uscita audio su un opportuno stream indirizzato al "receiver". In tal caso, la gestione di librerie, playlist, interfaccia utente e quant'altro sarà affidata ad uno qualunque degli innumerevoli player disponibili (ogni utente è libero di scegliere quello che preferisce).
In entrambi i casi il file server (l'archivio con la musica) può essere ospitato in un ulteriore sistema separato (e.g. un NAS) oppure più semplicemente i dischi con la musica possono essere connessi direttamente alla macchina principale.
Ma, torno a ripetere, parlare adesso di tutto ciò è a dir poco prematuro.
Provate prima il sistema minimale descritto in precedenza (nelle sue varie varianti) ed un sistema standard e valutatene potenzialità ed eventuali differenze da un punto di vista della qualità audio. A quel punto - possibilmente dopo aver raccolto un numero significativo di esperienze con sistemi audio diversi - potremo cominciare a ragionare su come procedere oltre. Discuterne prima non ha alcun senso.
audiodan ha scritto:
Interfacciamento:
* Massima possibilita' d'interfacciamento con DAC attraverso schede int., FW e USB
da questo punto di vista il problema al solito sta' nella disponibilità dei produttori di hardware di supportare Linux, partecipando direttamente allo sviluppo dei driver o almeno mettendo a disposizione degli sviluppatori l'hardware e le specifiche tecniche necessarie. Cosa che purtroppo ben pochi fanno. La maggior parte dei driver sono stati sviluppati in proprio, in molti casi senza alcun supporto da parte dei produttori (dovendo ricorrere a tecniche di reverse-engineering).
Per quanto riguarda il FireWire, ci sono problemi ancora maggiori dovuti a clausole legali che in molti casi rendono impossibile lo sviluppo di driver open-source. In pratica, se volete usare Linux, scordatevi delle interfacce audio FW. Tranne qualche eccezione (potete verificare sul sito del
progetto ALSA), in generale molte delle schede audio FW NON sono supportate ne mai lo saranno. Per fortuna, con l'avvento dello standard UAC2, ai nostri fini la cosa è diventata pressoché irrilevante.
audiodan ha scritto:Come stiamo messi sotto Linux con il riconoscimento automatico di periferiche USB Audio 2.0?"
ottimamente per tutte quelle che seguono il nuovo standard UAC2, che è supportato nativamente da tutti i kernel recenti (ad es. con una Ubuntu 11.04 le colleghi e funzionano, senza dover fare nulla). In generale male per quelle che invece utilizzano protocolli proprietari (come ad es. le m2tech), a meno che il produttore non fornisca il supporto necessario (*).
(*) NON è questo il caso di m2tech: Manunta ha più volte promesso che avrebbe rilasciato anche i driver per Linux, ma è dalla presentazione in anteprima della prima hiFace che numerosi utenti Linux stanno aspettando invano. Ed a quanto pare finora si è anche rifiutato di fornire le specifiche tecniche necessarie ad una eventuale implementazione indipendente da parte degli sviluppatori di ALSA. Trattandosi di un prodotto di nicchia, che oltretutto ha numerose alternative, tra cui anche la ottima (ed economica) "
Audio-Widget", è altamente improbabile che qualcuno si prenda la briga di farne il reverse-engineering per poterla supportare (in altre parole: NON comprate interfacce m2tech!).
Edit. Aggiornamento: finalmente il driver Linux è stato rilasciato, per giunta Open-Source (inoltre, per i nuovi prodotti m2tech ha abbandonato il suo protocollo proprietario in favore dello standard UAC2). Decadono quindi tutte le remore e le controindicazioni che erano state espresse qui sopra.
Qualora il produttore non lo specifichi espressamente, per capire se una interfaccia funziona o meno con Linux ci si può riferire al supporto per Mac: se la scheda funziona nativamente (anche
senza alcun driver aggiuntivo) sulle ultime versioni di MacOS/X, allora segue lo standard UAC2 e funziona nativamente anche con Linux.