Samedie #35

*Futur

- rentrer dossier en programmation: quoi? qui?
Python? est trop suimple (Steph peut nous donner intro un jour)
C++ (object oriented): est la base de plein de logiciels (PD/Processing/objscrs)
C  travailler en structure sans les outils qui ont été créé après (en C++)
-> nouvelle Scribusienne (femme); développeuse de logiciel VOIP en Roumanie Diane anglophone (Juliane)
-> pendant 1 semaine
-> subvention par la francophonie? est-ce que 'femme' est un critère pour rentrer dans le programme
-> faire un stage sur quel langage? PHP, C, C++ vers septembre/octobre -> le plus simple reste le langage python.
wendy: 2/3 des participants doivent etre de nationalités étrangères ET venir de l'étranger (Grundtvig/éducation permanente - demander à Wendy)

Préparation prochains samedies : 

-> inscrire sarah sur la mailing-list (mot de passe)

-> prochain samedi :  23 avril : Agnez et Julianne, idée d'inviter  Denis

-> préparer le samedi du 4 juin  : proposition de Stéphanie de faire une session CMS en python (pour intégrer des mini scpites en pyton dans des sites) - il faudra installer django sur Amaya. 

Il faut d'abord commencer par Python :  faire une page web pour afficher des automatisations, (les exemples de Steph sont très funky :)
(API : application Programmatoin Interface : permet de faire de la programmation dans des sites, chaque logiciel à sa propre API)
(Faire du CGI : Common Gateway Interface)
-> 17 juillet??? 

Aujourd'hui : faire un script en bash

-> Radio Panik: 
script pour:
- normalizer le son: prend la référence du son le plus haut (si tu as une claque dans ton son, ça ne changera presque rien)
- compresser le son (post-production - autra façon de valoriser ce qui est fort/doux)
- rajouter un petit son au début et à la fin
- un petit fade entre petit son et enregistrement
- convertir le .wav en .ogg qualité
- rajouter meta-data à chaque son: 'radio panik' + 'logo radio panik'
- envoyer le son sur le serveur ftp de Radio Panik

sox est un logiciel en ligne de commande de montage audio.

exemple d'un scipt en sox pour rajouter 1sec de silence avant et après le son:
http://activearchives.org/wiki/Padding_an_audio_file_with_silence_using_sox#Putting_the_steps_together_as_a_script


--> simplifier la syntaxe:
Commencer à "factoriser", on ajoute SON (pour symboliser le l'objet  sur lequel  on travaille)
# pour commenter (rendre inactive une ligne)

#! /bin/bash [pour Python /user/bin/python]
# pour chaque son SON:
    # normaliser SON
    # sox --norm infile -b 16 outfile rate 44100
    # 16 bits, 44100 hertz
    # rajouter un petit son au début et à la fin de SON
    # sox fichier1 fichier 2 fichier_final
    # un petit fade entre petit son et SON
    # sox f1.wav f2.wav out.wav splice -q $(soxi -D f1.wav),3
(splice pour faire un cross-fade. -q $(soxi -D f1.wav),1
$ (commande): commande éxécuté avant la commande globale.  $(...)
    # ici 3 = 3 secondes avant et 3 secondes après la jonction des deux fichiers (de cross-fade)
    # convertir SON de .wav en .ogg
    # ajouter des métadonnées à SON (auteur, producteur, genre...)
 pour ajouter des métadonnées, on va utiliser ne commande de vorbis-tools, qui s'appelle oggenc, et on va profiter pour utiliser la même commande pour convertir en ogg et mettre des métadonnées. Les métadonnées correspondent au champs "comments". On essait avec sox quand même, avec 
 sox 1.wav --add-comment "Artist=Samedies, genre=test" 1.ogg
 Mais on va quand même utiliser oggenc, parceque ses commentaires ont l'air d'être mieux intégrés.
 donc : oggenc --artist "Samedies" --genre "Test" fichier.ogg
 pour changer la qualité avec oggenc, c'est oggenc -q 4
    # accompagner SON du logo de radiopanik (on va juste jouer sur les fils RSS pour ça)
    # envoyer SON sur le ftp de radiopanik (on va utiliser scp : copie sécurisée, on fait un essai sur Samedies) -> scp SON nom_utilisateur@samedies.be:
    
    gh espeak : permet d'avoir un historique de la commande
    !espeak : affiche la dernière commande avec espeak
    stdin : standart input -> ce qu'on rentre comme donnée dans le bash / standart output : ce qu'il renvoie / et standart error : une erreur.
    après, il faut mettre le script dans le fichier /bin qui se trouve à la racine de home. ~ permet d'aller dans ma maison personnelle. (alors que / signifie "être à la racine)
    rehash -> permet de "rafraîchir" la mémoire de l'ordinateur
 
    
    pour faire marcher le script, on va créer un son avec e-speak (e-speak est un logiciel de synthèse vocale en ligne de commande): 
    espeak -v fr -a 20 "Je suis un son un peu plus fort" (version française, amplitude 20 )
    pour enregistrer : 
    espeak -v fr -a 20 "Je suis un son un peu plus fort" -w fort (il enregistre d'office en .wav)
        
    Pour trouver une commande, on peut taper "man sox"  dans sa console (il faut au préalable avoir installé sox sur son ordinateur. 
    rate 44100 -> taux d'échantillonage
    --norm : sert à normaliser
    -b : nombre de bits pour le codage du résultat 
    grammaire de la commande sox : sox  commande nomdufichierdedépart  nomdufichierdarrivée.
    
    sox -infile nomdufichier   
    soxi : sox excnahe information
    par exemple : soxi -D : on cherche des informations de durée sur le son
    ! sox ne prend pas les mp3 
    

http://www.radiopanik.org/spip/IMG/ogg/good-morning-stallman-20081210.ogg
voici un exemple de son ogg qui a des métadonnées 

BRAVO Stéphanie!  on s'est bien battues!
C'était super

le script final!!! à améliorer encore (s'il n'y a pas de fichier wav, quitter le programme | mettre des valeurs par défaut, ou des choix par défaut [ex. Radio Panik, Good Morning Stallman]...)
--------------------------------------------------------------------------------
#! /bin/bash

intro="jingle.WAV"

# Pour chaque son SON:
for son in *.wav
do \
    # normaliser SON (harmoniser le volume de tous les fichiers sons d'un dossier)
    # 16 bits, 44100 hertz
    echo "NORMALISATION DE ${son}" 
    sox --norm $son -b 16 /tmp/${son}norm.wav rate 44100

    # ajouter une piste d'introduction au début de SON
    # avec un fondu entre le son d'introduction et SON
    # ici 3 = 3 secondes avant et 3 secondes après la jonction des 2 fichiers
    # $(commande): commande exécutée avant la commande globale 
    # soxi -D fichier = obtenir la durée d'un fichier son
    sox $intro /tmp/${son}norm.wav /tmp/${son}intro.wav splice -q $(soxi -D $intro),3 \

    # convertir SON du format wav en ogg
    # ajouter des métadonnées à SON (auteur, producteur, genre...) avec oggenc (installer vorbis-tools)
    echo "OGG + METADONNEES"

    # Remplir des infos propres au fichier
    title=
    echo "Quel est le titre de la piste?"
    read title

    oggenc -q 4 --artist "Good Morning Stallman" --title "$title" /tmp/${son}intro.wav -o ${son}.ogg
    # pour lire/vérifier les métadonnées d'un fichier son
    soxi ${son}.ogg



done

# envoyer les ogg sur Amaya
scp *.ogg latsami@samedies.be:

--------------------------------------------------------------------------------




    # effacer tous les fichiers intermédiaires
    echo "EFFACE LES FICHIERS INTERMEDIAIRES"
    rm ${son}norm.wav ${son}intro.wav