Initialement conçu pour être intégré dans le curriculum des profs de musique au Royaume-Uni, Sonic Pi est un synthétiseur d’un nouveau genre, entièrement basé sur la programmation via un langage dédié. L’objectif ? Apprendre aux enfants le goût du code et la musique numérique, d’une manière ludique et innovante.
fenêtre d'ouverture de Sonic Pi
Sonic pi : Ruby en musique
Développé par Sam Aaron, chercheur en informatique à l’Université de Cambridge, Sonic Pi propose une approche inédite dans l’apprentissage de la programmation, par le biais de la musique. Surnommé « The Live Coding Synth For Everyone » (le synthétiseur live à programmer pour tous), le soft propose une interface qui peut, de prime abord, sembler particulièrement austère. Mais derrière cette apparence trompeuse se cache en réalité un outil vraiment fun pour faire du bon son et découvrir les fondements de la programmation d’une manière originale.
Le langage de programmation est Ruby. Indéniablement, Ruby devient de plus en plus populaire. Les « rubyistes » qualifient ce langage d’élégant, voire lui prêtent des qualités artistiques ; ils soulignent dans le même temps qu’il est pratique à utiliser et facile d’accès, car il suffit de le lire pour le comprendre.
La fenêtre
Voici à quoi ressemble Sonic Pi :
L'interface de Sonic Pi
Les différentes fenêtres :
la ligne de commandes (lecture, stop, enregistrer...) ;
le panneau de programmation ;
le panneau d'informations ;
en dessous, la console où s'exécute le programme;
le panneau d'aide ;
Le contenu de l'aide, c'est ici qu'on accède aux tutoriels.
On peut changer d'apparence en choississant le mode sombre dans Prefs.
Un exemple
Voici un exemple parmi tant d'autres que l'on peut trouver sur internet :
Voici le code à saisir dans Sonic pi :
live_loop :beat do
sample :loop_industrial, beat_stretch:1, amp: 1
use_synth :blade
[1,3,4,5].each do |d|
sample :drum_heavy_kick, amp: 2
(range -2,2).each do |i|
play_chord (chord_degree d, :c, :minor, 1, invert:i)
sleep 0.25
end
end
end
live_loop :cymbal do
sample :drum_cymbal_soft
play 1
sleep 1
end
live_loop :lead do
use_synth :chiplead
[1,1,3,1,6,6,5,7].each do |d|
(range -1,1).each do |i|
play_chord (chord_degree d, :c, :minor, 1, invert:i)
sleep 0.25
end
end
end