Il secondo post nerd: ripping di CD efficiente con Perl Audio Converter

Come avrete capito se seguite questo blog io sono contemporaneamente appassionato di musica e di informatica. Molto spesso tento di far convivere le due cose in modo pacifico, ad esempio tento di usare la seconda passione per rendere più facile usufruire della prima. Ad esempio uno dei problemi che mi si era posto ultimamente era quello di trovare un modo efficiente di salvare i miei CD sul computer, in modo da poterli poi ascoltare anche in giro sul lettore mp3.

In giro si trovano vari programmi che fanno questi servizi, sotto GNU/Linux il programma più quotato pare essere Perl Audio Converter, comando da shell

pacpl

un programma che nasce sostanzialmente come convertitore di file audio da un formato all’altro (cosa altrettanto utile in media), ma offre anche l’opzione di fare il ripping di un CD audio. Per un’introduzione generale al programma rimandoqua dove è possibile trovare un’overview generica sul programma, il modo d’utilizzo e i principali comandi.

L’uso da shell è come al solito conveniente, ho provato anche ad installare la GUI, ma vigliacca se voleva funzionare, quindi sempre meglio rivolgersi alla shell per ogni problema. Adesso il problema è il seguente. Supponiamo di voler fare il ripping di un disco, in una cartella che porti il suo nome in mp3 in qualità massima e gli mp3 chiamati secondo numero e titolo traccia. Allora per usare pacpl dovremmo prima creare una cartella con il nome desiderato e poi digitare

pacpl --rip all --to mp3 --nscheme "%tr - %ti" --bitrate 320
--outdir "nostra cartella"

Senza contare che questo tipo di ripping numera le tracce minori di 10 senza uno 0 davanti, che in alcuni sistemi operativi può causare di vedersele ordinate come 1,10,11, eccetera, che indubbiamente non è molto umanamente leggibile. Impostare il numero delle tracce a mano risulta poi un’operazione lunga e noiosa.

Quindi per evitare tutta questa macchinosità, soprattutto se si hanno più CD di cui fare il rip, mi sono messo giù di buzzo buono a scrivere uno scriptino in bash che potesse ovviare a questo problema. Per prima cosa mi sono fissato degli standard, che mi dovrebbero andare bene per ogni disco del modo in cui fare il rip:

  1. i CD rippati vanno messi nella cartella ~/Scaricati/ ordinati per dentro una sottocartella con il nome del disco preceduto dall’anno di pubblicazione,
  2. la codifica dei file in uscita deve essere in mp3, non la migliore, ma certamente la più versatile,
  3. la qualità deve essere a 320kb/s per evitare troppi danni,
  4. per evitare problemi la forma delle tracce deve contenere lo 0 se il numero è minore di 10.

Il risultato è il seguente script bash da intitolato pacplrip

#!/bin/sh
#script pacprip
cdinfo=`pacpl --cdinfo`
#
#computing info about album
#
album=`echo "$cdinfo" | head -n 4 | tail -n 1`
lengthalbum=`echo $album | wc -c | tr -d ' '`
album=`echo "$album" | cut -c10-"$lengthalbum"`
#
#computing information about artist
#
artist=`echo "$cdinfo" | head -n 3 | tail -n 1`
lengthartist=`echo $artist | wc -c | tr -d ' '`
artist=`echo "$artist" | cut -c10-"$lengthartist"`
#
#computing information about year
#
year=`echo "$cdinfo" | head -n 7 | tail -n 1`
lengthyear=`echo $year | wc -c | tr -d ' '`
lengthyear=`echo $lenghtyear | bc`
year=`echo "$year" | cut -c10-"$lengthyear"`
#
#checking the number of traks
#
track=`echo "$cdinfo" | head -n 6 | tail -n 1`
lengthtrack=`echo $track | wc -c | tr -d ' '`
lengthyear=`echo $lenghttrack | bc`
track=`echo "$track" | cut -c10-"$lengthtrack"`

echo "Will be ripped the $album ($year) album by $artist. There are $track tracks"

#make a directory named after the artist and one named after the album
#with the year before the title, so if you have the discography
#it will be ordered from the older to the newer
#In order to do this first we have to make the artist
#and the album title in a way such that they could be accepted by
#mkdir
#
mkdir ~/Scaricati/"$artist"
mkdir ~/Scaricati/"$artist"/"$year - $album"

if [ $track -gt 10 ]; then
pacpl -v --rip 1,2,3,4,5,6,7,8,9 --to mp3 --bitrate 320
--nscheme "0%tr - %ti" --outdir ~/Scaricati/"$artist"/
"$year - $album";
counter=10
while [ $counter -le $track ];do
pacpl -v --rip $counter --to mp3 --bitrate 320
--nscheme "%tr - %ti" --outdir ~/Scaricati/
"$artist"/"$year - $album";
counter=`echo $counter+1 | bc`
done
else
pacpl -v --rip all --to mp3 --bitrate 320 --nscheme
"0%tr - %ti" --outdir ~/Scaricati/"$artist"/
"$year - $album";
fi

e questo permette di avere le caratteristiche elencate sopra. Il prossimo step sarebbe di cercare un modo di far agire l’utente iterativamente se il disco non ha metadati, consentendo di inserirli nel mentre, ma ancora ci sto lavorando!

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...