This section will conclude our exploration of Sonic Pi’s sample player. Let’s do a quick recap. So far we’ve looked at how we can trigger samples:
sample :loop_amenWe then looked at how we can change the rate of samples such as playing them at half speed:
sample :loop_amen, rate: 0.5Next, we looked at how we could fade a sample in (let’s do it at half speed):
sample :loop_amen, rate: 0.5, attack: 1We also looked at how we could use the start of a sample percussively by giving sustain: an explicit value and setting both the attack and release to be short values:
sample :loop_amen, rate: 2, attack: 0.01, sustain: 0, release: 0.35However, wouldn’t it be nice if we didn’t have to always start at the beginning of the sample? Wouldn’t it also be nice if we didn’t have to always finish at the end of the sample?
It is possible to choose an arbitrary starting point in the sample as a value between 0 and 1 where 0 is the start of the sample, 1 is the end and 0.5 is half way through the sample. Let’s try playing only the last half of the amen break:
sample :loop_amen, start: 0.5How about the last quarter of the sample:
sample :loop_amen, start: 0.75Similarly, it is possible to choose an arbitrary finish point in the sample as a value between 0 and 1. Let’s finish the amen break half way through:
sample :loop_amen, finish: 0.5Of course, we can combine these two to play arbitrary segments of the audio file. How about only a small section in the middle:
sample :loop_amen, start: 0.4, finish: 0.6What happens if we choose a start position after the finish position?
sample :loop_amen, start: 0.6, finish: 0.4Cool! It plays it backwards!
We can combine this new ability to play arbitrary segments of audio with our friend rate:. For example, we can play a very small section of the middle of the amen break very slowly:
sample :loop_amen, start: 0.5, finish: 0.7, rate: 0.2Finally, we can combine all of this with our ADSR envelopes to produce interesting results:
sample :loop_amen, start: 0.5, finish: 0.8, rate: -0.2, attack: 0.3, release: 1Now go and have a play mashing up samples with all of this fun stuff…