Packages et extension de Sonic-Pi

Utilisation de packages

Il est possible d’écrire et de sauvegarder des buffers de texte entiers dans un fichier .rb et de l’appeler ensuite manuellement dans un buffer de texte. La commande pour ce faire est très simple :


load_buffer “/le/chemin/vers/mon/fichier.rb”

Un tel fichier pourrait éventuellement vous servir si vous ne souhaitez pas tout sauvegarder dans votre fichier init.rb ou si vous souhaitez appeler manuellement un package que vous n’utilisez pas en permanence. Typiquement, vous vous servirez de cette commande pour utiliser les packages créés par la communauté. Ceux-ci sont peu nombreux, et ne sont pas toujours partagés publiquement. Dès que je prendrai connaissance de l’un d’entre eux, je l’incluerai dans cet article et je donnerai une brève idée de son fonctionnement et de ce qu’il permet.

Petal

Petal introduit une partie de la syntaxe du langage de live-coding Tidal Cycles. Ce dernier est avec Sonic-Pi le langage le plus populaire. Crée par Alex MacLean – l’un des promoteurs les plus actifs du live-coding – Tidal Cycles diffère de Sonic-Pi par sa philosophie. Tidal est codé en Haskell, un langage de programmation fonctionnelle (autre paradigme de programmation). Il excelle dans la manipulation rapide des données, dans la gestion des boucles et des superpositions rythmiques complexes. Beaucoup d’utilisateurs voient Tidal comme un séquenceur fait langage. Il permet très facilement d’obtenir des boucles complexes et évolutives.

Tidal est réputé pour être plus sec et moins accueillant que Sonic-Pi, et ne propose pas ou peu de synthétiseurs. Il s’utilise principalement avec des échantillons sonores, et excelle tout autant dans leur manipulation. Je vous encourage à essayer de l’utiliser pour découvrir un paradigme de live-coding tout à fait différent.

Tidal propose également une conception du temps différente de celle de Sonic-Pi [0]. Pour Sonic-Pi, le temps est linéaire, pour Tidal Cycles, il est cyclique. Cela se traduit par une conception particulière de la subdivision rythmique. Tidal se base sur un système de cycle qui prédétermine la longueur des boucles. Le temps sera subdivisé également entre évènements musicaux :

Dans l’exemple ci-dessus, nous n’avons que quatre évènements musicaux principaux, quatre fois bd. Lorsque l’on subdivise cet évènement en quatre à nouveaux, la division ne s’applique que sur l’espace temporel occupé originellement par un seul de ces évènements. Cela permet donc de mettre facilement en place des subdivisions rythmiques très complexes.

Lorsque vous utilisez Tidal Cycles, votre première préoccupation est la manipulation du temps. Sonic-Pi, quant à lui, est plus généraliste et ne privilégie aucune approche par rapport à une autre. Cela amène à des différences considérables lorsque l’on cherche à exprimer certaines idées rythmiques. Jugez par vous même en observant la différence entre ces deux extraits de code, qui remplissent la même fonction et ont exactement le même résultat.

La version Sonic-Pi :


live_loop :boots_and_cats do ; tick sample :drum_bass_hard, amp: 1 if spread(2, 4).look sample :drum_cymbal_closed, amp: 0.7 if spread(4, 4).look sample :drum_snare_hard, amp: 0.5 if spread(2, 8).look sleep 0.25 end

Et la version Tidal Cycles :


p “boots_and_cats” $ sound “bd hh sn hh”

Vous devriez vous sentir floués. Pourquoi est-ce que c’est aussi long sur Sonic-Pi et si court et simple sur Tidal Cycles ? La réponse est simple : Tidal Cycles est beaucoup plus spécifique. Il est spécialisé uniquement dans les boucles et la manipulation rapide de samples. En dehors de cela, il est souvent un peu plus difficile d’utiliser un grand nombre d’autres fonctionnalités. Imaginez maintenant pouvoir utiliser cette syntaxe dans Sonic-Pi, vous comprendrez l’esprit de Petal.

Le téléchargement de Petal s’effectue à partir du GitHub qui lui est dédié : lien. Je vous encourage également à vous renseigner sur les auteurs pour comprendre les raisons qui les ont poussé à développer ce package : du live-coding par satellite.

L’installation est simple : extrayez l’archive dans le répertoire de votre choix. Chargez ensuite le fichier petal.rb en renseignant correctement son emplacement sur votre système. Vous pouvez désormais l’utiliser ! Quelques conseils :

  • si vous placez cette ligne de code dans votre init.rb, vous n’aurez plus jamais à le faire.
  • même conseil sous la forme d’un snippet de type petal+TAB.

Petal inclut également sa propre librairie d’échantillons sonores. Il vous faudra copier les sons que vous souhaitez employer dans le dossier Dirt-Samples. Ce nom est hérité directement du nom d’une classe SuperCollider utilisée par Tidal Cycles : SuperDirt. Vous devriez pouvoir jouer avec une grande partie des échantillons mentionnés dans la liste suivante : lien. Il y aura quelques inédits propres à Petal.

Vous trouverez le guide d’utilisation — très court — à cette adresse. Petal n’inclut pas toutes les fonctionnalités de Tidal Cycles, mais conserve l’essentiel. Notez qu’il existe une syntaxe un peu spéciale pour gérer les différents paramètres des samples et que toutes les manipulations ne sont pas possibles.

Il s’agit toutefois d’une très bonne extension permettant de simplifier la création de nappes rythmiques.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[0] Musique indienne : du peu que j’ai pu comprendre, Alex Mac Lean ne connaît pas la théorie musicale européenne mais s’inspire de concepts musicaux issus de la musique carnatique indienne.