SonicPi.md

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 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
        end
     
    jouera 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 :