Live coding in Ableton Live

Le live coding : taper des lignes de code qui se transforment immédiatement en musique. Effrayant. Mais vous, utilisateur d’Ableton Live, vous cherchez une nouvelle manière d’être créatif musicalement. Vous voulez un outil unique à ajouter à votre boîte à outils pour faire plaisir et surprendre vos fans — à la maison comme sur scène (#algorave). Alors, réveillez vite le geek qui sommeille en vous et faites entrer Sonic Pi dans Ableton. L’auteur invité Hens Zimmerman vous montre le chemin.

Live coding in Ableton Live

Illustration 1 : Ableton Link. Nous y reviendrons tout à l’heure.

Sonic Pi : complet et gratuit

Sonic Pi est l’un des programmes les plus populaires pour faire du live coding musical. Il est en plus gratuit, et son développement est en amélioration constante. La version actuelle 4.5.0 est disponible pour MacOS (avec différentes versions pour les microprocesseurs ARM et Intel), Windows, Linux et Raspberry Pi OS.

Qui a envie de tout taper ?

Programmer de la musique peut, au début, susciter une certaine résistance : qui a envie de tout taper pour faire de la musique ? Et pourtant, c’est une manière étonnamment expressive de créer. De petites modifications dans un bout de code peuvent entraîner des différences radicales. En ajoutant ou en supprimant des lignes, vous pouvez aussi construire votre morceau de façon très progressive. La documentation et la communauté de Sonic Pi sont également excellentes. Un tutoriel fait partie du programme Sonic Pi et, sans même vous en rendre compte, vous ferez vous aussi de la musique. Il est temps de voir un exemple. Vous pouvez copier ce petit bout de code et le coller dans Sonic Pi. Ensuite, cliquez sur Run : Sonic Pi se mettra à jouer de la musique :

live_loop :bax do   # willekeurige melodie.   use_random_seed 101   use_synth :prophet   notes = (scale :d2, :phrygian, num_octaves: 3)   16.times do     play notes.choose, release: 0.3, cutoff: rrand(70, 120)     sleep 0.25   end end

Ruby, c’est vous ?

Bien sûr, nous n’allons pas passer en revue toute la syntaxe de Sonic Pi dans cet article, mais nous pouvons en dire quelques mots. Si vous avez déjà programmé, vous vous direz peut-être que cela ressemble au langage Ruby (connu notamment via Ruby on Rails). C’est exact. Le langage de Sonic Pi est effectivement basé sur Ruby, et de nombreux concepts de Ruby sont donc aussi utilisables dans Sonic Pi.

Expérimenter musicalement

Le bout de code ci-dessus génère une mélodie aléatoire. Sonic Pi est un langage qui vous invite à expérimenter avec la musique. La ligne use_synth :prophet laisse entendre que Sonic Pi utilise des synthétiseurs intégrés. En effet, un grand nombre de synthés virtuels sont disponibles dans Sonic Pi. Mais vous pouvez aussi utiliser des samples. Sonic Pi est livré avec une sélection de samples. Le code suivant, par exemple, joue le célèbre « Amen break » en boucle :

use_bpm 134

live_loop :bax2 do   sample :loop_amen, beat_stretch: 4   sleep 4 end

Mais rien ne nous empêche d’utiliser nos propres samples et boucles :

use_bpm 70

live_loop :bax3 do   sample "/Users/henszimmerman/Loop_003.wav", beat_stretch: 8   sleep 8 end

Pour vous aussi

Sonic Pi est un programme exceptionnellement complet. Sur l’illustration 2 ci-dessous, vous voyez à quoi ressemble Sonic Pi lorsqu’il exécute du code. Sur l’écran principal, vous voyez à la fois votre code et les résultats de ce que vous faites. En haut à gauche de l’interface de Sonic Pi, nous tapons notre code. C’est très pratique de pouvoir modifier le code, et de n’entendre le résultat qu’au moment où vous appuyez sur Run (ou que vous faites Commande + R). Cela signifie aussi que vous pouvez « deejayer » avec Sonic Pi et faire évoluer votre musique dans le temps. Plusieurs boucles peuvent s’exécuter en parallèle et rester parfaitement synchronisées. Et le concept de boucle est très large : cela peut être un sample qui joue par exemple 1 ou 2 mesures, mais aussi un morceau de code plus complexe qui utilise plusieurs synthés.

Live coding in Ableton Live Illustration 2 : Sonic Pi

Essayer Sonic Pi avant de continuer ?

Si le live coding est un concept entièrement nouveau pour vous, il est peut-être judicieux de commencer par essayer Sonic Pi dès maintenant. Dans la suite de cet article, nous allons voir ensemble différentes manières d’échanger des informations entre Ableton Live et Sonic Pi. Sans connaissances de base des deux programmes, le reste de l’article peut sembler un peu abstrait. Ne vous laissez pas décourager : même des enfants apprennent à utiliser Sonic Pi, donc vous le pouvez aussi. Avant de courir, il faut d’abord apprendre à marcher.

Ouvrir la porte à Sonic Pi

Comment laisser la magie de Sonic Pi entrer dans votre Live adoré ? C’est parti. Il suffit de cliquer.

Audio de Sonic Pi vers Ableton Live

Vous souhaitez peut-être utiliser Sonic Pi et Ableton Live sur scène. Ou bien enregistrer votre algorave Sonic Pi dans Ableton Live. Dans ce cas, il est pratique de faire entrer Sonic Pi dans Ableton Live comme source audio. Même si Sonic Pi prend en charge les interfaces audio multicanal, une petite astuce est plus simple pour faire arriver la sortie audio de Sonic Pi dans Ableton Live. Pour cela, installez le pilote MacOS Blackhole. Blackhole est, en quelque sorte, un câble virtuel entre différents programmes. Si vous envoyez le son de votre Mac vers Blackhole, vous pouvez enregistrer dans Ableton Live tous les programmes qui utilisent Blackhole. Sur l’illustration 3 ci-dessous, vous voyez comment configurer, en haut à droite de MacOS, Blackhole comme sortie audio de votre Mac.

Live coding in Ableton Live

Illustration 3 : Blackhole comme sortie audio de votre Mac.

Si vous lancez maintenant Sonic Pi, le programme utilisera automatiquement Blackhole. Vous pouvez aussi le voir dans les préférences de Sonic Pi (voir illustration 4).

Live coding in Ableton Live

Illustration 4 : Sonic Pi utilise Blackhole.

Il ne nous reste plus qu’à dire à Ableton Live que Blackhole est l’entrée de tout l’audio. Comme alternative, vous pouvez créer un périphérique agrégé dans Audio MIDI Setup (Commande + Maj + U) qui inclut à la fois Blackhole et votre matériel audio standard. Vous conservez ainsi la possibilité de choisir, dans Ableton Live, les entrées de votre interface audio en plus de Blackhole. Mais pour cet article, nous allons employer une méthode radicale : Blackhole sera la seule entrée d’Ableton Live.

Live coding in Ableton Live

Illustration 5 : Blackhole comme entrée dans Ableton Live (Live – Settings… – Audio).

Si vous créez maintenant une piste audio dans Ableton Live et que vous choisissez Ext. In comme entrée, Sonic Pi arrive comme source sonore. Parfois, il est pratique de régler Monitor sur In sur la piste audio. Et gardez à l’esprit que des effets comme Beat Repeat ne fonctionnent dans Ableton Live que si le transport tourne.

MIDI d’Ableton Live vers Sonic Pi

Nous pouvons bien sûr aussi considérer Sonic Pi comme un instrument virtuel. Si taper des notes et des accords vous semble un peu fastidieux, sachez que Sonic Pi accepte aussi des commandes MIDI externes. À quoi cela ressemble-t-il ?

Tout d’abord, il nous faut un « pont » vers lequel Ableton Live peut envoyer du MIDI et que Sonic Pi peut lire. Le plus évident est d’utiliser pour cela le pilote IAC de MacOS. Ouvrez Audio MIDI Setup (dans le Finder : Applications – Utilities). Sous MIDI Studio, vous verrez probablement aussi d’autres appareils MIDI que vous possédez déjà. Sur l’illustration 6, vous voyez l’état de ma configuration à l’instant.

Live coding in Ableton Live

Illustration 6 : MIDI Studio dans MacOS Audio MIDI Setup.

Si nous double-cliquons sur IAC Driver, une nouvelle fenêtre s’ouvre. Nous y cochons la case Device is online (voir illustration 7).

Live coding in Ableton Live

Illustration 7 : IAC Driver est en ligne.

Dans Sonic Pi, sous Preferences – IO, nous pouvons voir que Sonic Pi écoute désormais, entre autres, IAC Driver comme entrée MIDI. L’illustration 8 montre à quoi cela ressemble sur mon ordinateur, mais vous aurez peut-être une configuration différente. Tant que IAC Driver apparaît dans la liste.

Live coding in Ableton Live

Illustration 8 : Sonic Pi voit le pilote MIDI IAC. Yay !

Il faut maintenant configurer Ableton Live pour envoyer des notes MIDI à Sonic Pi. Là encore, cela passe évidemment par IAC Driver. Dans les préférences de Live, sous Link Tempo MIDI, nous cochons MIDI Ports – Out: IAC Driver dans la colonne Track. Sur l’illustration 9, vous voyez à quoi cela ressemble.

Live coding in Ableton Live

Illustration 9 : Préférences d’Ableton Live et sortie IAC MIDI activée.

Nous créons une piste MIDI dans Ableton Live et choisissons IAC Driver comme MIDI out. Nous laissons le canal MIDI sur la valeur par défaut 1. Sur l’illustration 10, vous voyez que j’ai aussi créé un clip avec quelques notes, en boucle en continu.

Live coding in Ableton Live

Illustration 10 : Ableton Live envoie des notes MIDI vers IAC Driver.

J’espère que Sonic Pi est encore ouvert. Nous pouvons voir immédiatement, dans la fenêtre Cues à droite de l’interface de Sonic Pi, que des informations MIDI entrent. Tant qu’Ableton Live tourne, les événements MIDI défilent dans la fenêtre Cues. Sur l’illustration 11, vous voyez à quoi cela ressemble. Les fenêtres Log et Cues de Sonic Pi sont très pratiques pour résoudre des problèmes et voir ce qui se passe. Cela dépasse un peu le cadre de cet article, mais Sonic Pi prend aussi en charge OSC (Open Sound Control) : si c’est votre truc, vous allez vous régaler avec Sonic Pi.

Live coding in Ableton Live

Illustration 11 : Événements MIDI entrants dans Sonic Pi, dans la fenêtre Cues.

Les événements MIDI que Sonic Pi reçoit ont à peu près la forme suivante :

/midi:iac_driver_bus_1:1/note_on [53, 127]

Entre crochets, vous voyez respectivement le numéro de note MIDI (53 dans ce cas) et la vélocité (127 dans ce cas). La communication entre les deux programmes est en place. Il ne nous reste plus qu’à écrire le code qui écoute la bonne entrée MIDI et la traduit en une musique merveilleuse. Par exemple :

live_loop :bax6 do   # Minder latency!   use_real_time

note, velocity = sync "/midi:iac_driver_bus_1:1/note_on"   synth :rhodey, note: note, amp: velocity / 127.0 end

La commande use_real_time permet à notre synthé dans Sonic Pi de jouer avec un minimum de latence. À la ligne suivante, nous lisons respectivement les informations de note et de vélocité depuis le pilote IAC :

note, velocity = sync "/midi:iac_driver_bus_1:1/note_on"

Ensuite, nous pouvons utiliser les variables note et velocity comme nous le souhaitons. Ici, nous créons un synthé de type Fender Rhodes, dans lequel nous pouvons utiliser directement l’information de note comme valeur de 0 à 127 inclus. Pour la vélocité de la note, nous devons encore diviser la valeur lue par 127.0, car Sonic Pi attend une valeur de vélocité comprise entre 0 et 1. Et comme vous le savez peut-être, la vélocité MIDI (comme les MIDI CC) est une valeur entre 0 et 127 inclus.

synth :rhodey, note: note, amp: velocity / 127.0 

Si nous cliquons sur Run, Sonic Pi rejoue correctement les informations MIDI provenant d’Ableton Live avec le synthé intégré :rhodey. Sur l’illustration 12, vous voyez où se trouve le bouton Run dans Sonic Pi. Il est important que le nom de l’événement MIDI (/midi:iac_driver_bus_1:1/note_on) soit parfaitement exact dans votre code. Heureusement, vous pouvez copier-coller les événements depuis la fenêtre Cues dans votre éditeur de code. 😅

Live coding in Ableton Live

Illustration 12 : Nous exécutons notre code dans Sonic Pi.

MIDI de Sonic Pi vers Ableton Live ?

Et si l’on inversait les rôles ? Cela veut dire que nous voulons envoyer des informations MIDI de Sonic Pi vers Ableton Live. C’est possible aussi ! Et il y a une raison intéressante de le faire : Sonic Pi peut créer des mélodies « aléatoires » de façon très contrôlée, dans de nombreuses gammes connues… et aussi plus exotiques. Sur l’illustration 13, vous voyez que Sonic Pi aide à choisir l’une des nombreuses gammes grâce à la complétion de code. À quel point serait-ce pratique de pouvoir enregistrer ces notes MIDI et les réutiliser ensuite dans Ableton Live ?

Live coding in Ableton Live

Illustration 13 : Complétion de code et gammes dans Sonic Pi.

Commençons par une boucle simple qui joue une mélodie uniquement avec Sonic Pi :

live_loop :bax7 do   use_random_seed 1   use_synth :dsaw   notes = (scale :d2, :phrygian, num_octaves: 2)   16.times do     play notes.choose, release: 0.1     sleep 0.25   end end

Une fois satisfaits après quelques ajustements (essayez un autre nombre après use_random_seed), nous pouvons envoyer cette mélodie sous forme d’événements MIDI vers Ableton Live. Comme nous voulons à la fois entendre la note dans Sonic Pi et l’envoyer comme événement MIDI, nous allons la stocker temporairement dans une variable n.

live_loop :bax8 do   use_random_seed 1   use_synth :dsaw   notes = (scale :d2, :phrygian, num_octaves: 2)   16.times do     # Sla de volgende noot op in een variabele.     n = notes.choose     play n, release: 0.1     midi_note_on n, 100     sleep 0.25     midi_note_off n   end end

Ableton Live doit maintenant simplement écouter IAC Driver. Une fois de plus, ouvrons les préférences d’Ableton Live. Nous devons activer IAC Driver comme entrée MIDI. Sur l’illustration 14, vous voyez à quoi cela ressemble. Au passage, vous pouvez tout à fait laisser IAC Driver coché à la fois en entrée MIDI et en sortie MIDI.

Live coding in Ableton Live

Illustration 14 : Ableton Live écoute l’entrée MIDI depuis IAC Driver.

Vous pouvez à juste titre vous demander où, dans le code ci-dessus, il est indiqué que nous envoyons nos notes MIDI vers IAC Driver. En effet, ce n’est pas précisé. Sonic Pi envoie nos notes MIDI vers tous les appareils MIDI disponibles. Pour un exemple aussi simple, ce n’est pas très important, mais dans la vraie vie vous voudrez peut-être piloter plusieurs appareils MIDI de façon spécifique. Heureusement, ce n’est pas un problème non plus. Dans le code ci-dessous, nous jouons une basse dans la première boucle sur le canal MIDI 1 (bax9) et une mélodie plus aiguë dans la seconde boucle sur le canal MIDI 2 (bax10). Comme les deux boucles partent de graines aléatoires différentes, elles jouent chacune toujours les mêmes notes, mais différemment entre elles. Et comme nous piochons tous les deux dans la gamme de D phrygian, cela sonne forcément très bien ensemble. Nous avons aussi défini un BPM dès la première ligne. Tout à l’heure, nous verrons à quoi cela sert d’autre. Vous pouvez également voir que Sonic Pi ne produit plus de son. Nous envoyons uniquement les informations de notes MIDI vers IAC Driver.

use_bpm 110

live_loop :bax9 do   use_random_seed 1   notes = (scale :d2, :phrygian, num_octaves: 2)   16.times do     # Sla de volgende noot op in een variabele.     n = notes.choose     midi_note_on n, port: "iac_driver_bus_1", channel: 1     sleep 0.25     midi_note_off n, port: "iac_driver_bus_1", channel: 1     sleep 0.25   end end

live_loop :bax10 do   use_random_seed 42   notes = (scale :d3, :phrygian, num_octaves: 3)   16.times do     # Sla de volgende noot op in een variabele.     n = notes.choose     midi_note_on n, port: "iac_driver_bus_1", channel: 2     sleep 0.25     midi_note_off n, port: "iac_driver_bus_1", channel: 2     sleep 0.25   end end

Dans Ableton Live, nous créons maintenant deux pistes MIDI contenant chacune un instrument. Pour la basse sur le canal MIDI 1, vous pouvez par exemple utiliser un preset Analog Bass, et pour la mélodie sur le canal MIDI 2 un instrument de type Analog Guitar & Plucked. Mais si vous préférez Serum ou Massive X… ne vous en privez pas. Sur l’illustration 15, vous voyez que la piste de gauche écoute MIDI From IAC Driver channel 1 et celle de droite MIDI From IAC Driver channel 2. Nous réglons aussi le BPM d’Ableton Live sur 110, afin que les effets de Live se synchronisent au tempo.

Live coding in Ableton Live

Illustration 15 : Deux pistes MIDI avec des instruments virtuels dans Ableton Live jouent des notes issues de Sonic Pi.

Mais il y a un autre avantage à ce que Sonic Pi et Ableton Live soient d’accord sur le BPM. Si vous enregistrez maintenant un passage, les notes MIDI arrivent au bon tempo dans l’Arrangement View. Sur l’illustration 16, vous voyez comment l’information de note MIDI est arrivée dans Ableton Live. Les notes sont bien synchronisées, puisque les deux programmes tournent à 110 BPM. Mais les notes dans la piano roll ne tombent pas parfaitement sur la grille. Cela se corrige vite avec la commande Quantize, mais ce n’est pas vraiment idéal…

Live coding in Ableton Live

Illustration 16 : Notes MIDI enregistrées dans l’arrangement view. Synchro, mais pas sur la grille.

Fini le “boitement” grâce à Ableton Link

Une solution est Ableton Link, car oui : Sonic Pi prend aussi en charge Ableton Link. Ableton Link est une technologie open source qui permet à des appareils et des programmes de rester parfaitement ensemble. Aujourd’hui, de nombreux fabricants d’équipements et de logiciels musicaux prennent en charge Ableton Link. Tant que ces programmes (« peers ») sont sur le même réseau, ils peuvent rester synchronisés. Beaucoup de programmes compatibles Ableton Link prennent aussi en charge les commandes start et stop provenant d’autres peers Link sur le réseau. Sonic Pi prend actuellement en charge la commande start, mais pas la commande stop. Si nous ajoutons la ligne link_sync dans notre script Sonic Pi, Sonic Pi attend (par exemple) Ableton Live, afin que les programmes démarrent synchronisés.

Avec Ableton Link, nous pouvons caler notre mélodie parfaitement sur Ableton Live. Il faut encore configurer quelques réglages dans les deux programmes pour activer la fonctionnalité Ableton Link. Commençons par Ableton Live. Dans les préférences, activez Show Link Toggle et Start Stop Sync. Sur l’illustration 17, vous voyez où se trouvent ces réglages.

Live coding in Ableton Live

Illustration 17 : Activer la fonctionnalité Link dans Ableton Live.

À partir de maintenant, un bouton Link apparaît en haut à gauche de l’écran d’Ableton Live. Nous activons Ableton Link en cliquant sur ce bouton, qui s’allume. Sur l’illustration 18, vous voyez à quoi cela ressemble.

Live coding in Ableton Live

Illustration 18 : Link activé dans Ableton Live.

Dans Sonic Pi, nous trouvons une fenêtre intitulée Link Metronome & Global Time Warp. Si vous ne la voyez pas, vous pouvez l’activer dans les préférences de Sonic Pi (onglet Editor). Sur l’illustration 19, vous voyez que nous avons activé Link et que Sonic Pi indique joyeusement que Link connected, et qu’un peer a été trouvé sur le réseau : Ableton Live. Si vous ajoutez plusieurs appareils Ableton Link à la session, le nombre de peers augmentera.

Live coding in Ableton Live

Illustration 19 : Link activé dans Sonic Pi.

Ableton Live indique maintenant lui aussi dans le bouton bleu que nous avons activé plus tôt qu’il y a « 1 Link ». Hourra ! Ableton Live et Sonic Pi peuvent désormais se synchroniser via Ableton Link. Si vous collez maintenant le script ci-dessous dans Sonic Pi et que vous cliquez sur Run, Sonic Pi attendra correctement le signal de départ d’Ableton Live.

use_bpm 110

Sonic Pi wacht tot Ableton Live gaat lopen.
link_sync

4 beats in een maat.
quantum = 4

proefondervindelijk bepaalde waarde
om sync strakker te trekken.
phase = -0.034

Deze loop speelt een melodie in D Phrygian.
live_loop :bax11 do   # De volgende regel synchroniseert deze loop   # met Ableton Live.   link quantum, phase

use_random_seed 1

notes = (scale :d2, :phrygian, num_octaves: 2)

16.times do     # Sla de volgende noot op in een variabele.     n = notes.choose     midi_note_on n, port: "iac_driver_bus_1", channel: 1     sleep 0.25     midi_note_off n, port: "iac_driver_bus_1", channel: 1     sleep 0.25   end end

Deze loop speelt de Amen break.
live_loop :bax12 do   # De volgende regel synchroniseert deze loop   # met Ableton Live.   link quantum, phase

sample :loop_amen, beat_stretch: 4 end

Si nous mettons Ableton Live en enregistrement, Sonic Pi commence proprement à jouer sur le premier temps de la mesure. Les notes MIDI entrent et se placent parfaitement sur la grille de Live. Sur l’illustration 20, vous voyez à quoi cela ressemble chez moi. Si tout va bien, vous entendez aussi l’Amen break tourner en synchro. Ce n’est pas Ableton Live mais Sonic Pi qui joue cette boucle, donc assurez-vous que Sonic Pi utilise votre interface audio et qu’il n’est plus routé vers Blackhole. Bien sûr, vous pouvez tout de même utiliser Blackhole dans une situation comme celle-ci, et l’utiliser comme entrée d’une piste audio dans Ableton Live.

Live coding in Ableton Live

Illustration 20 : Ableton Live reste parfaitement calé avec Sonic Pi.

Que peut faire d’autre Ableton Link ?

Dans certains langages de programmation, comme C++, Max, Lua et Python, il existe également des modules ou des repositories GitHub capables de gérer Ableton Link. Si Ableton Link vous a enthousiasmé, regardez si vous avez déjà des apps ou des programmes qui le prennent en charge. Par exemple, le fantastique Patterning 2 sur iPad supporte Link. Pour le synthé modulaire, vous pouvez utiliser le module eurorack ML:2, qui ne fait que 2 HP de large. Avid Pro Tools, Bitwig et Logic Pro prennent aussi en charge Ableton Link. Et si vous êtes DJ, vous pouvez également utiliser Link. La Denon SC6000 Prime, par exemple, peut se synchroniser via Ableton Link. Ableton tient d’ailleurs une liste de produits compatibles Ableton Link.

Happy live coding!

Pas de réponse

Pas encore de commentaires ...

Laisser un commentaire