28 gennaio 2011

Karaoke fatto in casa...

Di neccessità virtù. Volendo fare un pò di Karaoke (dal giapponese "vuota orchestra") in breve tempo, ho rispolverato gli appunti del Laboratorio Sperimentale di Matematica Computazonale, la cui terza parte è dedicata all'elaborazione audio digitale. Quello che descrivo è -in pratica- come costruire un cannone per sparare alle mosche, ma spesso funziona, e può far comodo. Ovviamente se volete fare Karaoke con GNU\Linux avete a disposizione strumenti professionali, ma questa soluzione è interessante a prescindere.

Ci sono sostanzialmente due modi di togliere la voce principale da una canzone, così da poterci cantare sopra:

* Eliminare le frequenze che corrispondono alla voce umana (si applica una trasformata discreta di Fourier ~oppure una trasformata discreta wavelet~ si diminuiscono le frequenze dove cade la voce, che cambia da uomo a donna, ed in base al timbro del cantante, e poi di anti-trasforma)

[i CD hanno come parametri standard: 2 canali a 16 bit, si memorizzano interi, a freq 44100]

* Si fa la differenza fra il canale destro e quello sinistro (per le canzoni pop viene -spesso- prima registrata la base musicale -dove ogni strumento risulta maggiormente su un canale o su l'altro- e poi la voce viene equamente distribuita sui due canali) in questo modo la voce si abbassa drasticamente, e si danneggia poco la base musicale

Per mettere in pratica questo, ho preso un programmino scritto dal prof. Steffè

http://www.dm.unipi.it/pages/steffe/public_html/DIDA/LSMC-2010/parte3/program1/mono.f90

ed ho modificato la riga "soundds=(soundds+soundsn)/2.0" con "soundds=soundds-soundsn"

Questo programmino legge file in formato cdr, cioè da CD, dunque se volete lavorare con gli MP3 potete scrippettare come segue:

mpg123 --cdr file.cdr NomeFile.mp3

f95 mono.f90 -o mono (o compilare con altri compilatori, possibilmente liberi, come gfortran)

./mono (inserite file.cdr e poi elaborato.cdr)

sox elaborato.cdr elaborato.wav

lame elaborato.wav karaoke.mp3

ed ecco fatto.

Ho sperimentato questo approccio con qualche canzone, e i risultati sono buoni.

AVVERTENZE:

Con canzoni registrate in mono, ovviamente, questo trucchetto non funziona (neanche con canzoni registrate in mono, messe in stereo per essere commercializzate su CD od in MP3)

Con RAP a due (o simil) funziona male perché il "botta e risposta" è basato anche sulla differenziazione dei canali.

Potrebbe capitare che i due canali siano talmente simili da rendere il risultato molto basso di volume.

Con canzoni dalla base musicale elaborata possono presenzarsi sgradevoli rumori (tanto a noi interessava lavorare su canzoni pop :)

4 gennaio 2011