Solo Électrique
Cet article fait partie de la série Aerodynamic.
On passe à présent au solo
guitare, dont voici l’extrait une fois
importé dans Sonic Visualizer :
Là encore c’est un spectrogramme avec en abcisse le temps, et en ordonnée les fréquences sonores. On voit des bandes horizontales composées de tâches (les fréquences sonores actives) : ce sont les différentes notes. Elles sont regroupées en plusieurs phases, chaque phase étant composée de 3 lignes horizontables ayant une durée de 16 temps. En zoomant sur une de ces phases, on se rend compte qu’il s’agit d’une répétition de notes de la manière suivante:
On peut récupérer la note derrière chaque bande de fréquence active avec Sonic Visualizer et recomposer ainsi le premier temps :
- joue la note
Ré
pendant 1/4 de temps - joue la note
Fa majeur
pendant 1/4 de temps - joue la note
Mi
pendant 1/4 de temps - joue la note
Fa majeur
pendant 1/4 de temps
Ce qui donne dans Sonic Pi, avec un instrument ayant un timbre electrique :
use_bpm 123
use_synth :zawa
use_synth_defaults attack: 0.05, sustain: 0.15, release: 0.125
live_loop :solo do
play :D4
sleep 0.25
play :Fs3
sleep 0.25
play :B3
sleep 0.25
play :Fs3
sleep 0.25
end
Comme précedemment, on exprime les notes en notation anglaise :
- Ré devient D4
- Fa majeur devient Fs3
- Si devient B3
Aussi, on configure l’instrument zawa avec les paramètres attack
,
sustain
et release
. Ces paramètres forment ce que l’on apelle plus
couramment l'enveloppe sonore d’une note (ou ADSR
) ; ils
définissent la manière dont évolue le volume de la note au cours du
temps :
Chaque lettre correspond à une de ces phases (Attack, Decay,
que nous n’utilisons pas ici, Sustain, et Release). Pour
mieux comprendre l’impact de ces valeurs, le plus simple est de les
éditer en live et d’écouter la différence (en modifiant le code et en
faisant un Run
à chaque fois).
Factorisation
Plutôt que de demander à Sonic Pi de jouer une note, puis de faire une pause, puis d’en jouer une seconde, puis de faire à nouveau une pause, …, on peut le formuler de manière plus courte ainsi :
use_bpm 123
use_synth :zawa
use_synth_defaults attack: 0.05, sustain: 0.15, release: 0.125
notes = [:D4, :Fs3, :B3, :Fs3]
live_loop :solo do
notes.each do |n|
play n
sleep 0.25
end
end
Cela se lit de la manière suivante :
- utilise un BPM de 123, utilise l’instrument zawa, configure l'ADSR de l’instrument
- met dans la liste
notes
les 4 notes D4, Fs3, B3 et Fs3 - crée une boucle live dans laquelle…
- pour chaque note
n
de la listenotes
… - joue la note
n
, puis attend 0.25 temps
On obtient ainsi la même chose et on peut faire évoluer en live le morceau en éditant directement les notes, sans avoir à se soucier de la partie logique.
Un peu plus loin
En suivant la même approche, on peut récupérer les 32 temps de la
partie solo
:
Phase | Note 1 | Note 2 | Note 3 | Note 4 |
---|---|---|---|---|
#1 | D4 | Fs3 | B3 | Fs3 |
#2 | D4 | Gs3 | B3 | Gs3 |
#3 | G4 | B3 | E4 | B3 |
#4 | E4 | A3 | Cs4 | A3 |
#5 | D4 | Fs4 | B3 | Fs4 |
#6 | D4 | Gs4 | B3 | Gs4 |
#7 | G4 | B3 | E4 | B3 |
#8 | E4 | A3 | Cs4 | A3 |
De la même manière que pour les notes, on peut itérer sur un tableau comprenant chacune de ces phases, puis les jouer 4 fois :
live_loop :solo do
use_synth :zawa
use_synth_defaults attack: 0.05, sustain: 0.15, release: 0.125
phases = [
[:D4, :Fs3, :B3, :Fs3],
[:D4, :Gs3, :B3, :Gs3],
[:G4, :B3, :E4, :B3],
[:E4, :A3, :Cs4, :A3],
[:D4, :Fs4, :B3, :Fs4],
[:D4, :Gs4, :B3, :Gs4],
[:G4, :B3, :E4, :B3],
[:E4, :A3, :Cs4, :A3],
]
phases.each do |notes|
4.times do
notes.each do |n|
play n
sleep 0.25
end
end
end
end
Cet article fait partie de la série Aerodynamic.