Esta secção tem como propósito concluir a exploração do reprodutor de simples do Sonic Pi. Vamos fazer uma pequena recapitulação. Até agora foca-mo-nos em possíveis abordagens com vista a disparar samples:
sample :loop_amen
Observamos então formas de mudar a velocidade de samples tais como tocá-los a a metade da sua velocidade:
sample :loop_amen, rate: 0.5
De seguida, ire-mo-nos focar em formas de introduzir um sample através de um fade in (vamos fazê-lo a metade da velocidade):
sample :loop_amen, rate: 0.5, attack: 1
Também olhámos a formas que nos permitem usar o começo de um sample percursivamente dando-lhe ‘sustain’: um valor explícito e definir tanto o ataque como a release (extinção do som), para valores relativamente curtos:
sample :loop_amen, rate: 2, attack: 0.01, sustain: 0, release: 0.35
Contudo, não seria interessante se nos não tivéssemos que começar no início do sample? Não também interessante se nós não tivesse que acabar sempre no fim do sample?
É possível escolher um ponto de começo arbitrário no samples como um valor entre 0 e 1 onde 0 é o início do sample, 1 é o final, e 0.5 é metade da duração do sample. Vamos tentar tocar apenas a última parte do amen break:
sample :loop_amen, start: 0.5
E que tal um quarto do sample:
sample :loop_amen, start: 0.75
Do mesmo modo, é possível escolher um ponto arbitrário no sample como um valor entre 0 e 1. Vamos concluir a reprodução do amen break a metade da sua duração:
sample :loop_amen, finish: 0.5
Claro está, podemos combinar estas duas formas de reproduzir segmentos arbitrários dos ficheiros de audio. E que tal uma pequena secção no meio:
sample :loop_amen, start: 0.4, finish: 0.6
O que acontece se escolhermos um ponto inicial depois da posição final?
sample :loop_amen, start: 0.6, finish: 0.4
Porreiro! Toca em sentido contrário!
É possível combinar esta possibilidade de tocar arbitrariamente segmentos do audio com o nosso amigo ‘velocidade:’. Por exemplo, podemos reproduzir um pequeno segmento do meio do amen break muito lentamente:
sample :loop_amen, start: 0.5, finish: 0.7, rate: 0.2
Finalmente, podemos combinar tudo isto com as nossas curvas de envolvente de ADSR para produzir resultados interessantes:
sample :loop_amen, start: 0.5, finish: 0.8, rate: -0.2, attack: 0.3, release: 1
Agora vamos e temos um mash up de samples em reprodução com todas estas coisas interessantes…