Lorsque les personnes découvrent Sonic Pi, l’une des premières choses qu’ils apprennent est combien il est facile de jouer des sons pré-enregistrés en utilisant la fonction sample
. Par exemple, vous pouvez faire jouer une boucle de batterie industrielle, entendre le bruit d’une chorale ou même écouter le “scratch” d’un vinyle, tout ça via une seule ligne de code. Cependant, plusieurs personnes ne réalisent pas que vous pouvez varier la vitesse à laquelle l’échantillon est joué pour ajouter des effets puissants et un tout nouveau niveau de contrôle sur vos sons enregistrés. Alors, lancez une copie de Sonic Pi et commençons à étirer quelques échantillons !
Pour modifier la vitesse à laquelle joue un échantillon, nous devons utiliser l’option rate:
:
sample :guit_em9, rate: 0.5
Si nous spécifions un rate:
de 1
, alors l’échantillon sera joué à une vitesse normale. Si nous voulons le jouer à une vitesse réduite de moitié, nous utilisons tout simplement un rate:
de 0.5
:
sample :guit_em9, rate: 0.5
Notez comme cela a deux effets sur l’audio. Premièrement l’échantillon sonne plus bas et deuxièmement il prend deux fois plus de temps à jouer (voir la barre latérale pour une explication). Nous pouvons même choisir des vitesses de plus en plus basses jusqu’à 0
, donc un rate:
de 0.25
est un quart de la vitesse, 0.1
un dixième de la vitesse, etc. Essayez de jouer avec des vitesses lentes et de voir si vous pouvez transformer le son en un grondement.
En plus de rendre le son plus long et grave en utilisant une petite vitesse, nous pouvons utiliser des vitesses plus rapides pour rendre le son plus court et aigu. Jouons avec une boucle de batterie pour cette fois-ci. Premièrement, écoutez comment cela sonne à la vitesse par défaut de 1
:
sample :loop_amen, rate: -1
Maintenant, accélérons un peu les choses :
sample :loop_amen, rate: 1.5
Ha! We just moved musical genres from old-skool techno to jungle. Notice how the pitch of each drum hit is higher as well as how the whole rhythm speeds up. Now, try even higher rates and see how high and short you can make the drum loop. For example, if you use a rate of 100
, the drum loop turns into a click!
A présent, je suis sûr que beaucoup d’entre vous pensent la même chose… “qu’est-ce qu’il se passe si j’utilise une valeur négative pour la vitesse ?”. Excellente question ! Réfléchissons-y un court instant. Si notre rate:
désigne la vitesse à laquelle l’échantillon est joué, 1
étant la vitesse normale, 2
étant deux fois plus rapide, 0.5
étant deux fois plus lent, -1
doit vouloir dire à l’envers ! Essayons ça sur une caisse claire. Pour commencer, rejouez à la vitesse normale :
sample :elec_filt_snare, rate: 1
Maintenant, jouez le à l’envers :
sample :elec_filt_snare, rate: -1
Bien entendu, vous pouvez le jouer à l’envers deux fois plus vite avec un rate:
de -2
ou à l’envers deux fois plus lentement avec un rate:
de -0.5
. Maintenant, amusez-vous à jouer avec différentes valeurs négatives. C’est particulièrement amusant avec l’échantillon :misc_burp
!
L’un des effets de la modification de la vitesse sur les échantillons est que plus la vitesse est importante plus l’échantillon sonne aigu, et plus la vitesse est basse plus l’échantillon sonne grave. Un autre endroit où vous avez pu entendre cet effet est dans la vie de tous les jours lorsque vous faites du vélo ou que vous passez près d’un passage piéton qui émet un bip sonore - lorsque vous vous approchez de la source sonore le son est plus aigu que lorsque vous vous en éloignez - c’est ce que l’on appelle l’effet Doppler. Pourquoi cela ?
Considérons un simple bip qui est représenté par une onde sinusoïdale. Si nous utilisons un oscilloscope pour tracer ce bip, nous verrons quelque chose comme la figure A. Si nous traçons le bip une octave plus aiguë, nous verrons la figure B et une octave plus grave ressemblera à la figure C. Remarquez que les ondes des notes aiguës sont plus compactes tandis que celles des notes graves sont plus étendues.
A sample of a beep is nothing more than a lot of numbers (x, y, coordinates) which when plotted onto a graph will re-draw the original curves. See figure D where each circle represents a coordinate. To turn the coordinates back into audio, the computer works through each x value and sends the corresponding y value to the speakers. The trick here is that the rate at which the computer works through the x numbers does not have to be the same as the rate with which they were recorded. In other words, the space (representing an amount of time) between each circle can be stretched or compressed. So, if the computer walks through the x values faster than the original rate, it will have the effect of squashing the circles closer together which will result in a higher sounding beep. It will also make the beep shorter as we will work through all the circles faster. This is shown in Figure E.
Finalement, une dernière chose à savoir est qu’un mathématicien appelé Fourier a prouvé que tout son est beaucoup d’ondes sinusoïdales combinées toutes ensemble. Donc, quand nous compressons et étirons quelconque son enregistré, nous étirons et compressons plusieurs ondes sinusoïdales ensemble en même temps de cette manière exactement.
As we’ve seen, using a faster rate will make the sound higher in pitch and a slower rate will make the sound lower in pitch. A very simple and useful trick is to know that doubling the rate actually results in the pitch being an octave higher and inversely halving the rate results in the pitch being an octave lower. This means that for melodic samples, playing it alongside itself at double/half rates actually sounds rather nice:
sample :bass_trance_c, rate: 1
sample :bass_trance_c, rate: 2
sample :bass_trance_c, rate: 0.5
However, what if we just want to alter the rate such that the pitch goes up one semitone (one note up on a piano)? Sonic Pi makes this very easy via the rpitch:
opt:
sample :bass_trance_c
sample :bass_trance_c, rpitch: 3
sample :bass_trance_c, rpitch: 7
Si vous regardez le journal à droite, vous remarquerez qu’un rpitch:
de 3
correspond en fait à un rythme de 1.1892
et qu’un rpitch:
de 7
correspond à un rythme de 1.4983
. Finalement, nous pouvons même combiner les options rate:
et rpitch:
:
sample :ambi_choir, rate: 0.25, rpitch: 3
sleep 3
sample :ambi_choir, rate: 0.25, rpitch: 5
sleep 2
sample :ambi_choir, rate: 0.25, rpitch: 6
sleep 1
sample :ambi_choir, rate: 0.25, rpitch: 1
Let’s take a look at a simple piece which combines these ideas. Copy it into an empty Sonic Pi buffer, hit play, listen to it for a while and then use it as a starting point for your own piece. See how much fun it is to manipulate the playback rate of samples. As an added exercise try recording your own sounds and play around with the rate to see what crazy sounds you can make.
live_loop :beats do
sample :guit_em9, rate: [0.25, 0.5, -1].choose, amp: 2
sample :loop_garzul, rate: [0.5, 1].choose
sleep 8
end
live_loop :melody do
oct = [-1, 1, 2].choose * 12
with_fx :reverb, amp: 2 do
16.times do
n = (scale 0, :minor_pentatonic).choose
sample :bass_voxy_hit_c, rpitch: n + 4 + oct
sleep 0.125
end
end
end