Della serie “Il potere della Linea di Comando” o anche “May the force (of the Command Line) be with you” vediamo come manipolare file audio da linea di comando tramite le utility che si possono trovare sui sistemi GNU/Linux.
In particolare, i tool utilizzati oggi sono:
- cuetools: “set of utilities for working with Cue Sheet (cue) and Table of Contents (toc) files“.
- shntool: “multi-purpose tool for manipulating and analyzing WAV files”
- vorbis-tools: comandi vari per la generazione e manipolazione di file OGG
Obiettivo: dato un album contenuto in un unico file in formato FLAC e indicizzato tramite un file CUE, generare un file OGG per ogni traccia.
L’operazione è composta da due fasi:
- Dividere il file FLAC in tanti file, uno per traccia
- Convertire i file ottenuti in OGG cercando di inserire anche qualche tag estratto dal CUE
Prima proposta di soluzione (semplice ma sbagliata)
Passo (1): Generazione di tanti file WAV uno per traccia dandogli come nome split-trackNN.wav
dove NN è il numero della traccia.
$ cuebreakpoints cue_file.cue | shnsplit audio_file.flac
Passo (2): conversione in formato OGG.
$ oggenc *.wav
Per fare tutto con un unico comando è anche possibile dire a shnsplit
di effettuare direttamente la conversione in OGG:
$ cuebreakpoints cue_file.cue | shnsplit -o 'cust ext=ogg oggenc - -o %f' audio_file.flac
con questo comando si creano direttamente i file split-trackNN.ogg
.
Seconda soluzione (leggermente più complicata, ma migliore)
Un metodo alternativo per leggere il file CUE consiste nel farlo leggere direttamente al comando shnsplit
tramite l’opzione -f
. In questo modo il comando cuebreakpoints
non è più necessario e soprattutto, come vedremo, sarà facile dare ai file generati un nome più significativo.
Il comando è:
$ shnsplit -o 'cust ext=ogg oggenc - -o %f' -f cue_file.cue audio_file.flac
NOTA: Un problema minore di questo modo di lavorare è che, almeno in alcuni casi, viene creato anche un file di indice 00 che contiene un “pre-gap”. Di fatto è un file molto breve senza audio. Non ho trovato un modo per evitare di generarlo, per cui se viene creato va semplicemente cancellato dopo la conversione.
Il grosso vantaggio dell’opzione -f
è invece che leggendo il file CUE direttamente è possibile nominare i file che vengono creati in modo automatico utilizzando le informazioni di traccia presenti nel file CUE. L’opzione da utilizzare è -t
.
Per esempio per creare i file nel formato NN_-_TrackTitle.ogg
(NN = track number) si può utilizzare il seguente comando:
$ shnsplit -o 'cust ext=ogg oggenc - -o %f' -t "%n_-_%t" -f cue_file.cue audio_file.flac
Se si vuole, si può anche utilizzare l’opzione -m
per evitare l’uso di caratteri speciali nei nomi di file. Per esempio, per utilizzare il carattere underscore al posto degli spazi si può dare il seguente comando:
$ shnsplit -o 'cust ext=ogg oggenc - -o %f' -t "%n_-_%t" -m \ _ -f cue_file.cue audio_file.flac
Come inserire i tag nei file OGG
Vediamo infine come inserire le informazioni di album e traccia (tag) nei file OGG generati. E’ tutto molto semplice, basta utilizzare il comando cuetag
:
$ cuetag cue_file.cue *.ogg
N.B: per evitare di avere errori ricordarsi di cancellare il file pregap di indice 00 eventualmente creato da shnsplit
.
Per controllare il valore dei tag inserito nei file OGG si può utilizzare il comando vorbiscomment
.
$ vorbiscomment file_ogg.ogg
CREDITS: Siti consultati:
- un articolo su tuxarena.com
- uno su blackpanther.hu
- e uno su linuxreviews.org