User Tools

Site Tools


doc:appunti:linux:audio:start

Elaborazione audio

Estrazione (ripping) audio CD

Il programma ripit unito a cdparanoia e oggenc (rispettivamente dai pacchetti Debian ripit, cdparanoia e vorbis-tools) consente di estrarre le tracce audio da un CD e salvarle in formato .ogg con un unico comando. Se possibile titoli e altre informazioni sul brano sono recuperate dal database on-line freedb.org.

Ecco la ricetta:

ripit --ripper 1 --coder 1 --quality 6 --outputdir $HOME/music --playlist 0 --archive

La qualità 6 per oggenc significa circa 192 kbit/s.

Confronto fra tracce audio

Il comando shncmp dal pacchetto Debian shntool consente di confrontare due tracce audio. Dovrebbe permettere anche di compensare eventuali shift fra una traccia e l'altra. In caso di differenza tuttavia non indica quanta differenza esiste.

Con audacity è possibile inevece vedere la differenza fra due tracce. Ecco il procedimento:

  • Aprire la prima traccia.
  • Dal menu File, Import, Audio aprire la seconda traccia.
  • Se le due tracce non sono allineate tagliare lo shift; per farlo è necessario che le due tracce non sia collegate: Tracks, Link Tracks.
  • Selezionare la prima traccia e dal menu Effect scegliere Invert.
  • Selezionare entrambe le tracce e dal menu Tracks scegliere Mix and Render.

La traccia risultate è la differenza tra le due.

Database freedb.org

Il database di titoli di CD http://www.freedb.org/ è liberamente consultabile ed aggiornabile.

Ogni disco viene identificato da un genere e da un ID, tale classificazione è salvata localmente nella directory $HOME/.cddb/ da programmi tipo ripit o analoghi che usano la libreria libcddb2.

Se localmente abbiamo un file di nome $HOME/.cddb/classical/82102618, dovrebbe esistere lo stesso file anche all'URL http://www.freedb.org/freedb/classical/82102618.

È possibile inviare una nuova entry per posta elettronica, basta scrivere a freedb-submit@freedb.org, mettendo come Subject: cddb classical 82102618, usando come corpo del messaggio il file cddb.

Formato APE

Per decodificare il formato lossless Monkey's Audio (APE) si può usare il programma ffmpeg (dall'omonimo pacchetto Debian), ad esempio:

ffmpeg -i cd_image.ape cd_image.wav

Dividere un file audio in base ad un file CUE

Articolo originale.

Un file .cue contiene le informazioni sulle tracce di un CD-Audio in questo formato:

PERFORMER "Unknown Artist"
TITLE "Unknown Title"
FILE "CDImage.wav" WAVE
  TRACK 01 AUDIO
    TITLE "Track01"
    PERFORMER "Unknown Artist"
    INDEX 00 00:00:00
    INDEX 01 00:00:33
  TRACK 02 AUDIO
    TITLE "Track02"
    PERFORMER "Unknown Artist"
    INDEX 00 11:26:10
    INDEX 01 11:27:60

Il tag INDEX indica una posizione nel file audio nel formato mm:ss:ff, cioè minuti, secondi e frame. Nella struttura di un CD-Audio ci sono 75 frame per ogni secondo. La prima traccia utile è INDEX 01 (vedi Cue sheet (computing).

Installando i pacchetti Debian cuetools e shntool è possibile dividere un unico file nelle singole tracce:

cuebreakpoints CDImage.cue | shnsplit -o wav CDImage.wav 

I file risultanti saranno nominati a partire da split-track01.wav.

Il tool cuebreakpoints produce una lista di posizioni nel formato mm:ss.ff. Per N posizioni verranno estratti N+1 file. Se la fine del file non viene rilevata automaticamente può capitare un errore nell'estrazione dell'ultima traccia; si può in quel caso aggiungere un breakpoint che indica (fittiziamente) l'ultima posizione utile del file.

ATTENZIONE: a volte vengono distribuiti CUE file sbagliati, dove l'INDEX è nel formato mm:ss:dd (minuti, secondi e decimi di secondo); un indizio è quando la terza componente assume valori maggiori o uguali a 74. Si può in questo caso dare in pasto a shnsplit una lista di breakpoints nel formato mm:ss.ddd (minuti, secondi e decimi di secondo). Oppure si converte i decimi di secondo in frame usando la formula ff = dd / 100 * 75.

ATTENZIONE: se il formato del file non è in qualità CD (44.1 kHz, 16 bit) il tool shnsplit non accetta i breakpoints nel formato mm:ss.ff, bisogna fornirli piuttosto nel formato mm:ss.ddd.

Il programma shnsplit può leggere direttamente anche il formato ape, bisogna installare il pacchetto monkeys-audio (disponibile nel repository deb-multimedia.org) che contiene il codec mac, lo split in questo caso si fa con:

shnsplit -f CDImage.cue CDImage.ape

È possibile nello stesso modo gestire anche il formato WavPack Lossless Audio; è sufficiente installare il pacchetto Debian wavpack ed eseguire il comando:

cuebreakpoints file.wv.cue | shnsplit -o wav file.wv

File originale in formato FLAC

A volte viene distribuito un file FLAC senza il corrispondente .cue, ma le informazioni sulla suddivisione in tracce sono conenute al suo interno come CUESHEET block oppure come semplici metadati di testo, provare ad estrarre le informazioni con questi comandi:

metaflac --export-cuesheet-to=- file.flac
metaflac --list file.flac

Eventualmente con un editor di testo si deve ottenere un CUESHEET del tipo:

FILE "CDImage.wav" WAVE
  TRACK 01 AUDIO
    INDEX 01 00:00:00
  TRACK 02 AUDIO
    INDEX 01 05:14:73
  TRACK 03 AUDIO
    INDEX 01 11:07:58

Come descritto sopra per i file WAV, si può procedere alla suddivisione in singole tracce:

cuebreakpoints file.cue | shnsplit -o flac file.flac

I pacchetti Debian necessari sono flac, cuetools e shntool.

I file generati saranno del tipo split-track01.wav, è possibile generare i file anche in altro formato, ad esempio FLAC:

shnsplit -f CDImage.cue -o flac CDImage.ape

Qualità eccessiva nei file audio

Capita di trovare file audio in qualità superiore a quella del CD-Audio (44.1 kHz, 16 bit), sia in formato lossy che lossless. Per vari motivi può essere utile la conversione (con ovvia perdita, ad esempio per poter masterizzare un normale CD-Audio). Ecco una ricetta che utilizza sox per convertire un FLAC in WAV, facendo contemporaneamente il downsampling:

sox input_file.flac -r 44100 -b 16 output_file.wav

Suddivisione di un file mp3

Estrarre una parte di un file ,mp3 può essere fatto senza fare il deconding e successivo encoding, che altrimenti introducono una perdita di qualità. In Debian GNU/Linux (dalla versione Squeeze) c'è il pacchetto mp3splt che contiene l'omonimo comando. Si deve indicare il punto di inizio e il punto di fine in minuti.secondi:

mp3splt file.mp3 110.57 127.23

Amplificazione senza ricodifica di un file mp3 o aac

Alcuni player supportano speciali tag che indicano a che volume deve essere riprodotto un brano. Esistono programmi che modificano tale tag dopo aver analizzato il singolo brano o una intera collezione, in modo che suoni a un volume normalizzato.

ATTENZIONE: Il pacchetto mp3gain è stato rimosso da Debian 9 perché privo di manutenzione (ultima versione in cui era disponibile: Debian 8 Jessie). In alternativa esiste il pacchetto aacgain, che aggiunge il supporto ai file audio AAC contenuti nel formato MP4. È disponibile nel repository Deb-Multimedia, non in quello ufficiale.

In teoria basterebbe un editor di tag per aggiungere il tag replaygain_track_gain, ma al momento (marzo 2018) né Kid3 né EasyTAG consentono l'aggiunta di tag custom.

Il programma mp3gain (dall'omonimo pacchetto Debian) consente di alterare il parametro “global gain” di un file mp3 senza effettuare la ricodifica. Usato in maniera automatica cerca il massimo guadagno applicabile senza raggiungere il clipping (taglio dei punti più alti) del segnale sonoro, ma nella maggior parte dei casi è accettabile il clipping per avere un volume mediamente più alto.

Il programma può lavorare su più di un file contemporaneamente, ad esempio per normalizzare tutti i brani di uno stesso album musicale. Vediamo invece come modificare una singola traccia.

mp3gain file.mp3

con questo comando viene analizzato il file e i risultati vengono scritti in alcuni tag all'interno del file stesso. Nelle successive eleborazioni vengono usate tali informazioni, a meno che non si usi l'opzione -s r che obblica a calcolarle di nuovo.

mp3gain -a file.mp3

con l'opzione -a si applica il massimo guadagno possibile evitando però il clipping del segnale.

mp3gain -g 1.2 file.mp3

con -g si applica il guadagno indicato, anche se questo comporterà un clipping del segnale audio.

Aprendo il file con Audacity si può notare l'esito dell'amplificazione, perché il programma applica il parametro “global gain” quando apre e decodifica il file.

In ogni caso le modifiche apportate al file sono salvate in un tag all'interno del file stesso, è possibile quindi annullarle lanciando il programma con l'opzione -u.

Conversione da M4A a MP3 o OGG/Vorbis

C'è una insana abitudine a distribuire file musicali in contenitori MPEG-4, con audio codificato AAC e l'aggiunta di iTunes info, che si traduce in un flusso audio/video magari con un solo frame still-video. Il file con estensione .m4a viene solitamente interpretato (e convertito) appunto in un flusso audio/video, con evidente inutile sovraccarico.

Ecco una ricetta per convertire il file in un più classico MP3 oppure OGG/Vorbis, con l'opportuna qualità:

ffmpeg -i file.m4a -vn -q:a 1 file.mp3
ffmpeg -i file.m4a -vn -c:a libvorbis -qscale:a 9 file.ogg

Per il formato MP3 la qualità massima è -q:a 0 (da 10 a 0), mentre per il formato Vorbis la qualità massima è -qscale:a 10 (da 0 a 10).

doc/appunti/linux/audio/start.txt · Last modified: 2023/12/20 14:39 by niccolo