Sonic Pi

Présentation du logiciel

Sonic Pi est un logiciel de "live coding" c'est à dire que l'on tape du code qui se "transforme" en musique. Il est basé sur le langage Ruby qui est assez facile à comprendre car il est très proche du langage parlé.

Vous trouverez de super cours sur le Ruby ici

 

 

Ce logiciel est gratuit et développé par Sam Aaron, pour Windows, MacOS et Raspberry Pi.


Quelques codes et astuces pour Sonic Pi


De très bon tutos se trouvent intégrés dans le logiciel. Ils sont traduit en français ... profitez-en !!

 

Les commentaires seront écrits en bleu pour faire la différence entre "code" et "commentaires"


use_bpm 140
# En début de code donne le tempo général du morceau.

live_loop :choose do
use_synth :dpulse
play [69, 70, 72, 71, 74].choose
sleep 1
end

# .choose "choisi" aléatoirement une note entre [], à chaque retour de boucle la
valeur change.

3.times do
play rrand_i(69, 74)
sleep 1
end

# 3.times, la boucle va être jouée 3 fois seulement
# rrand_i : joue de façon aléatoire les notes en (), c'est à dire entre 69 et 74.
# On peut juste écrire : play rrand(69,74) mais vous aurez des notes avec virgule.
# Vous entendrez donc de la musique microtonale.

live_loop :beat do
4.times do
play sample :bd_soft
sleep 0.5
end
end


live_loop :sample do
sync :beat
sample :guit_e
sleep 1
end

# sync :beat
# grâce à cette ligne, la seconde boucle (:sample) va se synchroniser
# à la 1ère (:beat)
# Les deux vont donc commencer en même temps.

sleep sample_duration :sn_dub
# L'arrêt (sleep) dure exactement le temps du sample, ce qui crée une boucle exacte.

run_file "Users/Me/Desktop/SonicSet/midi_config.rb"
# Cette ligne de code (Mac OSX) permet d'exécuter un fichier éditer en ruby dans Sonic Pi.
Ici midi_config.rb est la configuration midi d'un clavier maître mais cela pourrait être chose.

Si comme moi vous aimez jouer avec des interfaces midi, voici un code pour le Midi control continu  :

Merci à Emlyn pour le coup de main sur le forum de Sonic Pi

live_loop :midicc do # création d'une boucle pour le controle continu
  use_real_time # temps réel pour utiliser le midi cc
  knob, value = sync "/midi/nanokontrol2/something/control_change" 
# ligne ci-dessus récupère le numéro de contrôle et sa valeur
if knob == 1 # mettre votre numéro de contrôle Midi de votre bouton rotatif set :knob1, value # :knob1 est le nom que vous allez récupérer dans une autre boucle elsif knob == 2 set :knob2, value end end

# Pour récupérer les valeurs, il faut créer une autre boucle :

live_loop :midi_piano do synth :piano, note: :e3, amp: get[:knob1] / 127.0 # diviser par 127.0 pour aller de 0. à 1.
# note: :e3 joue le mi 3
sleep 1 end

Insertion de sons dans le logiciel :

 

Sur mac :

Applications/Sonic Pi/click droit sur l'application : Afficher le contenu du paquet/etc/samples

 

Sur PC:

C:/Programmes/Sonic Pi/etc/samples

 

A priori Sonic Pi supporte .aiff, .wav et .flac, je n'ai pas testé d'autres formats.