Chaînes d’effets

Appliquer un effet

Sonic-Pi propose un certain nombre d’effets audios. Tous ne sont pas d’une excellente qualité, et vous leur préfererez parfois des effets externes. Toutefois, ils sont assez convaincants, et pourront vous servir quotidiennement sans que vous ne ressentiez de gêne. Leur basse résolution convient plus à certaines esthétiques musicales. Au cours d’une improvisation, il est essentiel de les privilégier et de savoir les manier avec habileté, car ce seront souvent vos seules ressources disponibles dans l’immédiat, sur le moment, sans configuration préalable. Il sont tout aussi utiles dès qu’il s’agit de réaliser de la synthèse sonore plus avancée dans Sonic-Pi. Bien manipulés, les effets vous permettront de travailler le son dans le détail et de produire des sons très particuliers.

Leur utilisation repose sur le même principe de portée ou scope que nous avions vu auparavant. Un effet ne s’applique que sur une portion limitée de code, délimitée par des balises textuelles.

Voici une percussion :


sample :perc_snap

La voici à nouveau agrémentée d’un effet d’écho :


with_fx :echo do sample :perc_snap end

with_fx permet d’appliquer un effet sur tout ce qui se trouve entre sa déclaration et sa balise de fin, end. Les effets sont cumulables en chaîne en s’imbriquant l’un dans l’autre. Un grand nombre d’effets appliqués simultanément peuvent alourdir considérablement la syntaxe. Utilisez-les avec parcimonie, soyez précis dans vos intentions. Essayez plusieurs combinaisons, retenez vos favorites pour les avoir réellement en main. En voici une que j’apprécie, un effet d’echo conjoint à un effet de réverbération. Classique mais toujours appréciable :


with_fx :echo do with_fx :gverb, depth: 0.9 do sample :perc_snap end end

Chaque effet peut recevoir une série de paramètres qu’il est possible de modifier de manière dynamique. Au point ou vous en êtes dans votre apprentissage de Sonic-Pi, j’ose à espérer que vous aurez déjà eu l’idée d’essayer. Voici quelques exemples de manipulation dynamique des effets, comme cette cloche qui passe un sale quart d’heure :


live_loop :percu do ; tick with_fx :flanger, feedback: [0.1, 1].choose, depth: (line 1, 10, steps: 5).look do sample :perc_bell, rate: 0.05, finish: 0.1 end sleep 0.5 end

Ou ce qui fut autrefois une note de basse :


live_loop :mmhh do with_fx :bitcrusher, sample_rate: [1000, 500, 200].choose, bits: [4, 2, 1, 0.5, 0.2, 0.1].choose do sample :bass_woodsy_c, finish: 0.05 ; sleep 0.125 end end

 

Vous trouverez certainement une meilleure utilisation des effets que celle que j’en fait. Rappellez-vous toutefois que la qualité des effets est très variable. N’utilisez pas un effet inconnu si vous êtes tenus d’assurés ou si vous êtes enregistré en train d’improviser. Les résultats sont parfois imprévisibles et le volume d’un son peut varier drastiquement selon les paramètres choisis.

Fonctionnement des effets / Le moteur audio

Utiliser les effets de Sonic-Pi revient à passer un peu sous la carapace du logiciel. Lorsque vous téléchargez Sonic-Pi, vous téléchargez également, en réalité, une version particulière de SuperCollider configurée pour Soni-Pi. Les deux logiciels sont inséparables. Toute instruction que vous écrivez dans Sonic-Pi communique en réalité avec ce moteur situé à un niveau inférieur. Les synthétiseurs, les effets, les instructions play ou sample, sont autant de portes vers SuperCollider que vous empruntez à l’aide de la syntaxe de Sonic-Pi. Lorsqu’on a l’oeil, il est facile de remarquer que la syntaxe du logiciel est relativement similaire à celle employée par un live-coder à l’ancienne qui coderait directement dans SuperCollider.

Si nous prenions le temps d’entrer dans les détails, de décortiquer chaque fonction de Sonic-Pi, nous serions confrontés très rapidement, dans le code source du logiciel, à une série de fichiers nommés SynthDefs, pour Synthesis Definitions. Ces fichiers sont rédigés à l’aide du langage de programmation propre à SuperCollider : ScLang. N’hésitez pas à aller consulter la documentation de ce moteur audio, vous y trouverez peut-être des fonctions que vous souhaitez implémenter dans Sonic-Pi dès que vous serez plus à l’aise. Observez cet exemple d’effet de Delay-Reverb :

( SynthDef(“someGrains”, { arg centerFreq = 777, freqDev = 200, grainFreq = 2; var gate; gate = Impulse.kr(grainFreq); Out.ar( 0, SinOsc.ar( LFNoise0.kr(4, freqDev, centerFreq), 0, EnvGen.kr(Env.sine(0.1), gate, 0.1) ) ) }).add; SynthDef(“aDelay”, { arg delay = 0.25; Out.ar( 1, DelayN.ar( In.ar(0, 1), delay, delay ) ) }).add; )

Décortiquons la syntaxe austère de cette SynthDef. “someGrains” est son nom, et aurait été certainement pris la forme de :someGrains si celle-ci avait été l’une des SynthDefs utilisée dans la bibliothèque intégrée de Sonic-Pi. Les différents arguments qui suivent la déclaration de cette définition sont reproduits par Sonic-Pi et sont les paramètres que vous modifiez dynamiquement.

Sonic-Pi vous simplifie donc la tâche. Il constitue une interface commode et agréable pour interargir de manière dynamique avec un grand nombre de SynthDefs, pour réaliser de la synthèse sans avoir à plonger dans les détails les plus sordides du moteur audio. L’architecture est bien pensée et vous permet réellement d’atteindre une précision assez convaincante dans la synthèse de vos sons.

Les effets de Sonic-Pi sont puissants. Si ceux-ci sont mal utilisés, ils peuvent se montrer très capricieux. Dépasser certaines valeurs revient parfois à noyer complètement le moteur audio sous un gigantesque larsen, à déclencher une saturation digitale incontrôlable. Avec la liberté de faire ce que vous voulez vient aussi la possibilité de faire absolument n’importe quoi. Vous pouvez jouer avec cet état limite du logiciel si vous le souhaitez, mais vous chercherez presque toujours à éviter ce type de réaction.

Il faut veiller au maximum à respecter les valeurs limites définies par Sonic-Pi dans sa documentation. Si vous ne vous y conformez pas, le logiciel aura généralement l’une ou l’autre de ces réactions :

  • arrêt de la lecture, message affiché dans la console d’erreur.
  • artefacts audios et parasitage de votre performance.

Pour éviter cela, veillez durant les premiers mois de votre utilisation de Sonic-Pi à tester tout les effets avec délicatesse. Les paramètres par défaut sont en général stables et fiables, sauf bug. Tout paramétrage doit commencer par observer chaque valeur à son minimum, ou au taux auquel elle a le moins d’incidence.

Dès que l’on prend conscience que Sonic-Pi n’est en réalité qu’une interface de communication pour SuperCollider, on a tout de suite envie de découvrir ce nouveau langage, d’ajouter ses propres effets et synthétiseurs. C’est tout à fait possible et c’est ce que ferait un utilisateur avancé passionné de synthèse. Mais la vie est brève, votre temps limité, et Sonic-Pi suffisamment puissant pour vous permettre de réaliser un grand nombre de types de synthèse. Jouez avec ce que le logiciel vous permet de faire, avant de chercher à le dépasser. Franchir la frontière avec SuperCollider revient à apprendre dans le dur la synthèse audio et vous demande des compétences en programmation.

Il est tout aussi possible de créer vos propres synthétiseurs directement depuis l’interface de Sonic-Pi et de leur assigner un nombre indéfini de paramètres. Nous verrons bien entendu comment réaliser ceci dans un chapitre ultérieur.

Sonic-Pi, le son et le moteur

La gestion de l’audio dans Sonic-Pi est également assurée par une série de SynthDefs. Ctrl + S n’est autre qu’une automatisation d’un paramètre du volume général. Le coeur du logiciel prend également en charge un limiteur, une compression, un équaliseur, certains filtres audio standards. Sonic-Pi vous permet à tout moment de savoir ce qui se passe du côté du moteur audio, et même de modifier certains paramètres. Observez plutôt :

status

Cette commande vous donne quelques informations sur le nombre d’UGens (unit generators) utilisés par Sonic-Pi. Vous verrez ainsi à quel point votre système est sollicité. Cela revient à ouvrir le moteur pour y jeter un oeil.

set_volume! 2

Cette valeur est toujours comprise entre 0 et 5. Le point d’exclamation indique que ce paramètre est un peu spécial. Pour cause, nous sommes un peu dans le côté sombre de Sonic-Pi. Toute modification entraîne une modification générale du son produit par le logiciel.

set_audio_latency!

Le réglage de la latence audio peut être utile si vous avez à imbriquer Sonic-Pi dans un dispositif artistique plus complexe, si vous avez à synchroniser plusieurs systèmes différents, ou pour toute une série de raisons particulières. Le réglage de la latence s’effectue en milli-secondes.

set_mixer_control!

Le contrôle du mixage est utile, et vous rappellera certainement une table de mixage standard, avec différents filtres passe-haut et passe-bas, un contrôle du volume, de l’amplification. Attention, car la modification de ces paramètres aura une incidence sur l’intégralité des sons joués par Sonic-Pi. Il s’agit, pour ceux qui sont plus familiers des DAW, de votre piste master.

set_recording_bit_depth! 24

L’enregistrement se fait par défaut en 24 bits, et l’enregistrement génère un fichier .wav. Il est possible d’utiliser 8, 16, 24 ou 32 bits de résolution. L’enregistrement par défaut est plutôt propre. Vous pouvez aller plus loin si vous nécessitez plus de précision dans votre rendu. En pratique, un utilisateur avancé aura tendance à faire passer le son sortant de Sonic-Pi au travers d’un logiciel tiers, afin d’affiner encore le contrôle du son.

Vous en savez largement assez pour cette première approche des effets. N’hésitez pas à explorer et à tester tout les effets disponibles. La rédaction d’articles plus détaillés consacrés à la synthèse est prévue !