Ruby comme outil de composition : Sonic Pi
(bhmt.dev)-
Sonic Pi : utiliser Ruby comme outil de composition
-
Contexte
- L’auteur avait à l’origine suivi une formation en musique
- En travaillant comme développeur web, il s’est passionné pour le travail technique
- Il a tenté de se lancer dans la musique électronique, car il lui était difficile de pratiquer plusieurs instruments, mais sans succès
- Récemment, il a recommencé à combiner musique et code grâce à Sonic Pi
-
Présentation de Sonic Pi
- Sonic Pi, créé par Sam Aaron, est un synthétiseur logiciel contrôlé par le code
- Il utilise un langage spécifique au domaine (DSL) étendant Ruby afin de faire correspondre des concepts musicaux et audio
- Par exemple, il représente les notes avec des symboles comme
:c4et utilise des générateurs d’accords commechord(:d3, :maj7)
-
Objectif du projet
- L’objectif était de composer une démo en utilisant uniquement Sonic Pi
- La composition a été réalisée entièrement en code, sans MIDI ni échantillons externes
-
Exemples de code de base
use_bpm 70sert à définir le BPM, etuse_synth :pulseà configurer le synthétiseur- Des lignes comme
play :c2,sleep 0.25permettent de jouer des notes et de définir les intervalles de temps play_pattern_timed [ :c3, :d3, :e3, :g3 ], 0.25permet de jouer un motif
-
Optimisation du code
- Des fonctions sont définies pour réduire le code répétitif
- La fonction
def arpeggiate(root, is_minor = false)génère un motif d’arpège - Des blocs
in_thread dosont utilisés pour exécuter du code en parallèle
-
Exécution en parallèle
- Les blocs
in_thread dopermettent d’exécuter deux « instruments » en parallèle - Par exemple, un thread exécute l’arpège tandis qu’un autre joue la mélodie
- Les blocs
-
Implémentation des chœurs
ringsert à combiner plusieurs notes dans une seule liste- Des notes sont jouées et leur durée est définie avec
play_pattern_timed [ring(:c5, :e5)], 4, sustain: 3.8 - La fonction
def choral_rings(notes, sus)est définie pour simplifier les motifs de chœur
-
Boucles live
live_looppermet de créer des boucles répétées à l’infini- Une boucle est définie avec
live_loop :harp do, puis le code est écrit à l’intérieur
-
Conclusion
- La programmation n’est pas seulement une science, c’est aussi un art
- Écrire du code est un acte créatif et une manière de communiquer avec les autres
- Sonic Pi permet de combiner musique et code pour créer de manière créative
Résumé de GN⁺
- Sonic Pi est un outil qui permet de composer de la musique avec du code, en utilisant un DSL qui étend Ruby
- Ce projet a pour objectif de composer une démo en utilisant uniquement Sonic Pi
- La programmation n’a pas seulement une dimension scientifique, elle a aussi une dimension artistique, et Sonic Pi l’illustre bien
- C’est un bon exemple de combinaison entre musique et code au service d’un travail créatif
- Parmi les outils offrant des fonctions similaires, on peut citer TidalCycles et SuperCollider
1 commentaires
Avis Hacker News