Sonic Pi est un logiciel open source de live coding, on l'utilise pour générer de la musique à partir de code. Il a été conçu dans le but d'être assez simple pour un enfant de 10 ans, d'etre assez joyeux pour qu'on s'y perde en s'amusant, et d'etre assez puissant pour nos experiences. Le créateur, Sam Aaron a pensé Sonic Pi de façon à proner l'art en nous donnant un outils permettant de nous exprimer, L'education en essayant de faire aimer le code de manière ludique au plus jeune, et la technologie en explorant des questions liées à la viacité, le temps et la simultanéité des language de programmation.
Sonic Pi a son propre language, c'est assez facile à apprendre, d'autant plus qu'il est très bien documenté, tout les tutoriels sont presque entierment traduits et dans plusieurs langues. Il n'est meme pas nécessaire d'ouvrir une autre fenetre tout est integré dans Sonci Pi.
Je cherchais à travailler avec le son, donc pour débuter je me suis tourner vers lmms, j'ai touché un peu à tout, créé quelques boucles mais ça n'a pas été très interessant car le logiciel ne diffère pas beaucoup de FL studio ou Ableton dans son principe... Je me suis alors tourner vers la représention de la musique sur un logiciel d'animation image par image. Et un soir chez moi en parcourant internet j'ai decouvert ce qu'etais le live coding, qui alie la création de musique ansi que sa representation (en code ducoup), j'ai donc compraré les differents logiciels et me suis penché sur Sonic PI.
Il est disponible Sur linux, Mac et Windows et il est pré-installé sur RasperryPi.
Au niveau de l'interface on y trouve :
- (1) l'interface avec les bouton pour jouer et arreter la musique, changer la taille du texte, afficher ou masquer la zone (3), afficher la fenetre d'aide, la fenetre d'info ou la fenetre pour régler les préferences.
- (2) la zone des buffers, la où l'on pose notre code, ila plusieurs onglet on peut passer d'un code à un autre.
- (3) le scope , qui nous affiche la representation de l'onde joué.
- (4) la partie documentation où l'on trouve tous les tutoriel. (à lire imperativement si vous comptez essayer.)
- (5) la trace qui vous affiche en live les action effectuées.
Une petite entrevue du code Sonic Pi.
La fonction play
permet de jouer une note en y ajoutant la valeur midi d'une note. exemple: play 12
jouera la note do de l'octave 0 ce sera une note très basse.
La fonction sleep
suivi d'une valeur en temps de mesure ( 1 mesure = 4 temps) permet de placer une pause de la durée de cette valeur. exemple sleep 1
marquera une pause d'un temps soit 1/4 mesure, sleep 4
marquera une pause d'une mesure.
avec:
play 62 sleep 2
vous jouerais la note ré de la quatrième octave suivi immédiatement d'une pause d'1/2 mesure soit 2 temps.
la fonction
live_loop
permet de creer des boucles.
précédemment avec
play 62
sleep 2
SonicPi n'aurais jouer votre code qu'une seule fois.
ici en tapant :
live_loop :nomdelaboucle do play 62 sleep 2 end
il jouera tout ce qui se trouve entre do
et end
en bloucle.
il est possible d'ecrire des commentaire en ajoutant #
devant votre texte. Ce texte ne sera donc pas interpreter par le programme.
stop
placé au debut de votre boucle permet qu'elle ne soit pas jouée, il est donc utile de placer #stop
qui ne sera pas lu, afin de pouvoir rapidement arreter la boucle en retirant #
la fonction use_synth
permet d'utiliser un autre synthtizer que celui par default et donc d'avoir un son différent.
live_loop :nomdelaboucle do
use_synth :blade
play 62
sleep 2
end
la note sera jouée avec le synthtizer blade.
avec rrand
vous pouver randomiser vos valeur
play rrand(30, 32)
jouera une note aleatoire comprise entre 30 et 32.
choose
donne le choix au programme entre plusieurs valeurs.
play choose([32, 72, 48])
demande au logiciel de choisir l'une de ces trois valeurs.
avec sample
vous jouer un echantillon de musique. un fichier présent sur votre ordinateur et non pas un son générer par votre ordinateur.
sample :bd_haus
jouera un bruit de grosse caisse.
il est possible d'ajouter des fonctions attibuts au sample comme "amp" et "rate"
sample :bd_haus, amp: 2 rate: 0.5
jouera le meme sample avec une ampleur de 2 (elle sera jouer plus forte qu'avec lamp par defaut qui est 1) et une vitesse de 0.5 soit la moitié de sa vitesse.
with_fx
permet d'ajouter des effets comme une reverberation par exemple :
live_loop :kickavecreverb do use_synth :beep with_fx :reverb, room: 1 do play 30 sleep 1 end endjouera un la note 30, avec le synthétiseur
beep
en ajoutant un effet de reverberation parametré avec room: 1
with_fx
fonctionne comme live loop et prendra effet sur tout ce qui sera compris entre do
et end
Deux exemples de boucle plus ou moins complete :
live_loop :touuum do #stop with_fx :reverb, room: 1 do sleep 0.75 sample :tabla_tun1, amp: 0.5 sleep 1 sample :tabla_tun1, amp: 1, rate: 0.5 sleep 0.25 end end live_loop :kick1 do #stop sample :bd_haus, amp: 2, rate: 0.75 sleep 0.5 end live_loop :melody do stop use_synth :blade with_fx :reverb, room: 1 do play 64 sleep 2 play 65 sleep 0.75 play 65 sleep 0.75 play 67 sleep 0.5 end end live_loop :aigu do #stop use_synth :blade with_fx :reverb, room: 1, amp: 0.5 do 2.times do play 84 sleep 0.25 play 74 sleep 0.25 play 72 sleep 0.75 play 84 sleep 0.25 play 76 sleep 0.5 end 2.times do play 84 sleep 0.25 play 77 sleep 0.25 play 72 sleep 0.75 play 84 sleep 0.25 play 76 sleep 0.5 end end end live_loop :bass do stop with_fx :distortion, amp: 0.5, distort: 0.75 do use_synth :beep sleep 0.25 play 48 sleep 0.25 end end
donne :
live_loop :beat do #stop #with_fx :reverb, room: 1 do sample :bd_haus sleep 0.5 sample :drum_cymbal_closed sleep 0.5 sample :elec_hi_snare sleep 0.5 sample :drum_cymbal_closed sleep 1 sample :drum_cymbal_closed sleep 0.5 sample :elec_hi_snare sleep 0.5 sample :drum_cymbal_closed sleep 0.5 #end end live_loop :melody do #stop sample :ambi_piano, rate: 1, amp: 2 sleep 0.75 sample :ambi_piano, rate: 0.75 sleep 0.75 sample :ambi_piano, rate: 0.5 sleep 0.5 sample :ambi_piano, rate: 1, amp: 2 sleep 1 sample :ambi_piano, rate: 0.75 sleep 1 end live_loop :basssin do stop play 40 sleep 0.5 play 41 sleep 0.25 end live_loop :snareeplue do with_fx :reverb, room: 1 do #stop sleep 1.25 sample :elec_mid_snare sleep 2.75 end end
donne :