6.12.2007

Musique

J'ai ajouter une nouvelle section musique. C'est des extraits de quelques chansons sous plusieurs style musicaux. Disont que pour le moment j'ai pas grand chose, mais j'espère pouvoir vous mettre une bonne collection de ce que j'aime. Ils vont bien sûr disparaitre et se rajouter au fil du temps.

Pour ceux qui aiment Linux et Perl, j'ai fait un script qui me permet de couper la chanson, faire un fade-in/out de 3 secondes, normaliser le tout, réencrypter dans un bitrate plus petit, copier le morceau sur mon serveur Linux/Apache et me pondre le code HTML pour le mettre sur le blog. Que voulez-vous, je suis un peu vache. Pourquoi ce forcer le derrière quand un ordi peut le faire pour vous?

Voici le code source :

#!/usr/bin/perl -w
#Variable Global
$j = 0;

while($ARGV[$j]){
#print "$j - $ARGV[$j]\n";

$sound = $ARGV[$j]; #Fichier à traité
$time = ""; #Temps total du fichier
$time1 = "00:00:00+00"; #Temps du début
$time2 = "00:00:00+00"; #Temps de la fin
$output = "temp.mp3"; #Fichier de sortie
$title = ""; #Titre de la chanson
$artist = ""; #Artiste de la chanson
$album = ""; #Album de la chanson


#$home = $ENV{HOME}; #Variable d'environnement

#Récupération de certaines données contenu dans le fichier original
#Clip info:
# Title: Rise Up (Original Mix)
# Artist: Yves Larock
# Album: clubKAOS 02 Unmixed CDJ Format
# Year: 2007
# Comment:
# Genre: House
if ( -e $sound ){
@config = `mplayer -vo null -ao fast "$sound" 2>&1`;
$i = 0;
while($config[$i]){
$title = $1 if "$config[$i]" =~ /Title: (.+)/;
$artist = $1 if "$config[$i]" =~ /Artist: (.+)/;
$album = $1 if "$config[$i]" =~ /Album: (.+)/;
$i++;
}
}
$output = "$artist - $title (Version Blog)";

#print "$output\n$title - $artist - $album\n";

#Trouver les temps de coupure d'avant et après
#mp3length
#Length of Yves Larock - Rise Up (Original Mix).mp3: 00:07:32+493
#Décidés le temps de coupure approx 75 sec
#Décidés le temps du départ approx 1/3 de la chanson

$ajout = 75; # par défaut la longueur est de 75 sec
$facteur = 3; # par défaut on pars la chanson dans son tiers
$time = $2*60 + $3 if `mp3length "$sound" 2>&1` =~ /(\d\d):(\d\d):(\d\d)/;
if($time >= 270){$ajout = 90;$facteur = 4} # si on une chanson de plus de 5 minutes (Dance mix entre autres)
$time1 = int($time / $facteur);
$time2 = $time1 + $ajout;
$time1S = $time1 % 60;
$time1M = ($time1 - $time1S) / 60;
$time2S = $time2 % 60;
$time2M = ($time2 - $time2S) / 60;

$time1 = "00:$time1M:$time1S+00";
$time2 = "00:$time2M:$time2S+00";
#print "$time1 $time2\n";

# mp3cut -o outputfile -T title -A artist -N album-name -t [hh:]mm:ss[+ms]-[hh:]mm:ss[+ms] mp3file -t ... mp3file1
#print "mp3cut -o $output.mp3 -t $time1-$time2 $sound\n";

`mp3cut -o "$output.mp3" -t $time1-$time2 "$sound" 2>&1`;

#Ajouter un fade-in/out avec SoX

#--$ajout;
#print "sox $output.mp3 $output.wav fade t 3 $ajout 3";
`sox "$output.mp3" "$output.wav" fade t 3 $ajout 3`;

#Normalizer le fichier
`normalize-audio "$output.wav" 2>&1`;

#On enleve les espaces pour la version blog
$outputmp3 = $output;
while ($outputmp3 =~ s/\s//){$outputmp3 =~s/\s//;}

#Réencoder le tout en 128Kbits avec lame
print "Création de $output.mp3\n";
`lame -h -b 128 --tt "$title" --ta "$artist" --tl "$album" "$output.wav" "$outputmp3.mp3"`;

#Déplace le fichier mp3 sur le serveur web
`mv "$outputmp3.mp3" /media/homes/public_html/blog/musique/.`;

#On enleve le fichier wav
`rm "$output.wav" "$output.mp3"`;

#Pondre le code html pour le blog
$html = "---------- Couper ici ----------\n\n";
$html .= "<div style=\"font-family:Verdana;font-size:7pt;\">$artist - $title</div>\n";
$html .= "<object data=\"http://doum.homelinux.com/~dominique/blog/dewplayer.swf?
son=http://doum.homelinux.com/~dominique/blog/musique/$outputmp3.mp3\"
width=\"200\" height=\"20\" bgcolor=\"FFFFFF\" type=\"application/x-shockwave-flash\">\n";
$html .= "</object>\n\n";
$html .= "---------- Couper ici ----------\n";
print $html;

$j++;
}


Et voici le résultat que ça donne :

dominique@dominique-bureau:~/Desktop$ ./sound-cut "Classé/Umbrella - Rihanna feat. Jay Z.mp3"
Création de Rihanna - Umbrella (Feat. Jay Z) (Version Blog).mp3
LAME version 3.96.1 (http://lame.sourceforge.net/)
CPU features: MMX (ASM used), 3DNow! (ASM used), SSE
Using polyphase lowpass filter, transition band: 17249 Hz - 17782 Hz
Encoding Rihanna - Umbrella (Feat. Jay Z) (Version Blog).wav
to Rihanna-Umbrella(Feat.JayZ)(VersionBlog).mp3
Encoding as 44.1 kHz 128 kbps j-stereo MPEG-1 Layer III (11x) qval=2
Frame | CPU time/estim | REAL time/estim | play/CPU | ETA
2870/2873 (100%)| 0:09/ 0:09| 0:10/ 0:10| 7.7530x| 0:00
average: 128.0 kbps LR: 8 (0.2785%) MS: 2865 (99.72%)

---------- Couper ici ----------

<div style="font-family:Verdana;font-size:7pt;">Rihanna - Umbrella (Feat. Jay Z)</div>
<object data="http://doum.homelinux.com/~dominique/blog/dewplayer.swf?
son=http://doum.homelinux.com/~dominique/blog/musique/
Rihanna-Umbrella(Feat.JayZ)(VersionBlog).mp3" width="200" height="20" bgcolor="FFFFFF" type="application/x-shockwave-flash">
</object>

---------- Couper ici ----------
dominique@dominique-bureau:~/Desktop$


Si vous comprenez quelque chose vous me le dites, moi j'y comprends plus rien... (joke) ! :)

5 commentaires:

viviane a dit...

oui, c'est très clair que je n'y comprends rien,....

Eve-Lyne a dit...

T'es trop hot! Je vais montrer ça à Christian, y'en aura peut-être un qui comprendra quelque chose! Moi, ma question c'est: Est-ce qu'il est possible de mettre un extrai sonore sur mon blog sans que ce soit trop compliqué???

Anonyme a dit...

qui me trouvait pas pire avec mes codes html.... m'a ravaller ma fierté lol

Kh3o a dit...

woo! du code.. laisse moi jouer dedans ma comprendre p-e qqch! sinon... copy paste ca fait toujours dla bonne job!

jaime mieux le 3d! haha

comme ca ou ca.. une belle wii en mega low-resolution! LETS PLAY!

Dominique a dit...

Eve-lyne : C'est sûrement possible de mettre du son sur ton blog, suffit juste de trouver un endroit pour mettre DewPlayer (c'est le lecteur mp3 en flash que j'utilise) et de mettre l'extrait à quelque part sur le net. Ensuite reste un peu de code à faire pour qu'on puisse l'écouter.

kyu : Le code est tout présent, il dépend par exemple de plusieurs programmes, comme mplayer, mp3cut, mp3lenght et sox. Et surtout la moitié du code est fait pour mon environnement, comme la copie du fichier vers mon serveur web et surtout faut que sa tourne sous une base Linux, je croirais que ça pourrait marcher dans Mac OS X aussi. Les images 3d sont très belles en passant, quelque chose que je doit laisser à d'autre !