Petites explications sur l'une des application les plus fascinante du module Ornament&Crimes : Pigeons.

Le module Ornament&Crime (O_c) est issu d'un projet open-source développé par Patrick Dowling, mxmxmx et Tim Churches autour de la plateforme Teensy 3 entre 2015 et 2016.
Le concept initial est simple : 4 entrées CV, 4 entrées trig/gates et 4 sorties CV. L'ensemble est piloté par deux molettes cliquables et par deux boutons de sélection.

Les premiers firmwares officiels proposent dès le départ de multiples possibilités : quantizer, machine de Turing, séquenceurs multipistes, générateur d'accords... une veritable boite à outils à l'ergonomie facilitée par l'écran OLED.
Le projet étant entièrement ouvert, l'usage du module est révolutionné en 2020 par la publication du firmware alternatif Hemisphère, permettant d'afficher simultanément deux applets indépendantes, chacune partageant la moitié du module.
Une communauté de développeurs s'empare rapidement de l'idée et les applets se multiplient considérablement. En moins d'un an, le firmware Hemisphère propose une cinquantaine d'outils pour générer des signaux et les modifier.
Rapidement, les limites techniques de la plateforme sont atteintes et chaque nouveau firmware doit trouver sa place dans la mémoire limitée du Teensy 3.
En 2023, le fabricant PJRC cesse la production de la version 3 et la communauté décide de poursuivre le développement sur la version 4 du Teensy. De nouveaux firmwares apparaissent, avec de nouvelles applets. L'un d'eux, Phazerville, qui descend directement d'Hemisphère, devient rapidement la suite d'outils par défaut des modules proposés par de nombreux fabricants.
C'est cette version qui est installée sur mon exemplaire fabriqué par la marque TLM Audio (que je recommande fortement).
Pigeons
Parmi les 76 applications actuellement proposées actuellement par Phazerville, l'une d'elle nommée Pigeons mérite un coup d'oeil un peu particulier, ne serait-ce que par le principe utilisé pour générer des séquences semi-aléatoires.
Développé par Stolen Ornament pour l'O_c, Pigeons reprend l'idée mathématique expliquée par Marc Evanstein dans cette excellente vidéo et qui consiste, de manière très schématique, à utiliser une double suite de Fibonnaci pour générer des hauteurs de notes.
Pour cela, l'algorithme utilise trois paramètres :
- [Seed 1]
- [Seed 2]
- [Modulus]
[Seed 1] et [Seed 2] peuvent être représentées comme des coordonnées sur une grille carrée dont les côtés ont autant d'emplacement que la valeur [Modulus].
Pour mieux visualiser ce concept un peu abstrait, voici une représentation graphique issue du Fibonnacci Music Box disponible en ligne et qui permet d'expérimenter (et de comprendre) le fonctionnement de Pigeons.

Ici nous avons une grille avec un [Modulus] de 7.
[Seed 1] est représentée en Ordonnée et [Seed 2] en Abscisse.
Le principe de Pigeons est le suivant : à chaque fois qu'un signal d'horloge est reçu, l'applet recalcule une nouvelle position/valeur de [Seed 1].
Pour cela, l'algorithme
- Additionne [Seed 1] et [Seed 2]
- Divise le résultat par la valeur de [Modulus]
- Remplace alternativement la valeur [Seed] par le reste de la division.
La valeur [Seed] représente une hauteur de note et le CV correspondant est généré pouvoir être utilisé, par exemple, en entrée Pitch d'un oscillateur.
Chaque valeur [Seed 1] et [Seed 2] est modifiée alternativement à chaque cycle, la valeur étant recalculée en fonction du [Modulus] pour générer une nouvelle note.
Il apparait que cette méthode a deux étonnantes propriétés :
- Elle est parfaitement déterministe. Les mêmes conditions de départ pour les trois paramètres donneront toujours la même séquence de valeurs [Seed 1].
- Quelques soient les paramètres, il y aura toujours un moment où les paramètres [Seed 1] et [Seed 2] retrouveront leur position de départ. La mélodie générée est donc obligatoirement cyclique.
C'est d'ailleurs cette seconde propriété qui a inspiré le nom de l'applet. Marc Evanstein, dans sa démonstration, a en effet utilisé une analogie mettant en scène des pigeons qui finissent toujours par retrouver le même trou pour y picorer.
L'applet Pigeons permet en outre de fixer le mode musical utilisé. Cette contrainte va définir les intervalles, en demi-tons, entre chaque valeur de [Seed 1].
Par exemple, pour une gamme Majeure, les intervalles seront 2,4,5,7,9,11,12.
En prenant un C pour [Seed 1]=0, on obtient les notes suivantes pour chaque valeur de [Seed 1] : 0=C 1=D 2=E 3=F 4=G et ainsi de suite..
En gamme Mineure, avec des intervalles 2,3,5... la valeur 2 sera plus basse d'un demi ton (2=Eb pour une valeur 0=C).
Ainsi, si la valeur Modulo est réduite, la mélodie générée ne couvrira pas l'ensemble des notes et restera contrainte par la valeur maximale de [Seed 1].
Par exemple, voici le tracé graphique obtenu avec les paramètres :
- [Seed 1] = 0
- [Seed 2] = 4
- [Modulo] = 6
Les notes générées vont suivre la séquence 0,4,4,2,0,2,2,4.
Soit une boucle répétitive très simple de 8 notes.
En prenant C comme référence et une gamme majeure, la séquence obtenue est C, G, G, E, C, E, E, G.

Avec les mêmes valeur [Seed 1] et [Seed 2] initiales mais en passant le modulo à 7, on obtient alors une mélodie complètement différente qui boucle toutes les 16 notes avant de revenir aux valeurs de départ.
Ce simple changement de paramètre permet en outre de jouer des notes qui n'apparaissaient pas dans la séquence précédente (D, F, A et B).

On constate que le nombre de mélodies possibles dépend en grandes partie du Modulo et, donc, du nombre de positions de départs.
Le Modulo définit aussi l'amplitude entre la note la plus basse ([Seed 1] =0) et la plus haute ([Seed 1] = [Modulo]-1).
Suite dans le prochain article avec des exemples audio...
Ajouter un commentaire
Commentaires