FX en pratique

Bien qu’ils paraissent trompeusement simples extérieurement, les FX sont réellement des bêtes plutôt complexes à l’intérieur. Leur simplicité incite souvent les gens à en abuser dans leurs morceaux. Ce peut être sympathique si vous avez une machine puissante, mais si - comme moi - vous utilisez un Raspberry Pi pour improviser, vous devez prendre garde à la somme de travail que vous lui demandez de faire si vous voulez vous assurer que la cadence reste fluide.

Considérez ce code :

loop do
  with_fx :reverb do
    play 60, release: 0.1
    sleep 0.125
  end
end

Dans ce code, nous jouons la note 60 avec une durée d’extinction très courte, c’est donc une note courte. Nous voulons aussi de la réverbération, alors nous l’avons imbriqué dans un bloc de réverbération. Jusqu’à maintenant, tout est bon. Sauf que…

Regardons ce que fait le code. En premier lieu, nous avons une boucle (loop), ce qui signifie que tout ce qui est à l’intérieur est répété sans fin. Ensuite, nous avons un bloc with_fx. Ceci veut dire que nous allons créer un nouvel FX de réverbération chaque fois que nous bouclons. C’est comme si nous disposions d’une pédale de réverbération distincte à chaque fois que nous pincions une corde sur une guitare. C’est super de pouvoir faire ça, mais ce n’est pas toujours ce que vous voulez. Par exemple, ce code va avoir du mal à s’exécuter comme il faut sur un Raspberry Pi. Tout le travail de création de la réverbération puis d’attente jusqu’à ce qu’elle doive être stoppée et enlevée est complètement pris en charge par with_fx pour vous, mais ceci prend de la puissance du microprocesseur (CPU) qui peut être précieuse.

Comment le faire d’une manière plus proche d’une installation traditionnelle où notre guitariste n’a qu’une pédale de réverbération dans laquelle passent tous les sons ? Simple :

with_fx :reverb do
  loop do
    play 60, release: 0.1
    sleep 0.125
  end
end

Nous mettons notre boucle à l’intérieur du bloc with_fx. De cette façon, nous créons seulement une unique réverbération pour toutes les notes jouées dans notre boucle. Ce code est beaucoup plus efficace et fonctionnerait bien sur un Raspberry Pi.

Un compromis est d’utiliser with_fx sur une itération à l’intérieur d’une boucle :

loop do
  with_fx :reverb do
    16.times do
      play 60, release: 0.1
      sleep 0.125
    end
  end
end

De cette façon, nous avons remonté le with_fx en dehors de la partie la plus intérieure de la boucle, et nous créons maintenant une nouvelle réverbération toutes les 16 notes.

Rappelez-vous, il n’y a pas de fautes, juste des possibilités. Toutefois, chacune de ces approches donnera un son différent et aura des caractéristiques de performance différentes. Donc, jouez et utilisez l’approche qui sonne le mieux pour vous tout en restant dans les contraintes de performance de votre plateforme.