3.3 Aplicar time stretching nos Samples

# Aplicar time stretching em Samples

Agora que sabemos como tocar uma variedade de sintetizadores e samples para criar música, está na hora de aprender a modificar tanto sintetizadores como samples para criar música com um som mais pessoal e  consequentemente interessante. Primeiro, vamos explorar a possibilidade de aplicar time-stretching em samples.

## Representação de Samples

Samples são sons pré-gravados, guardados como números que representam como o diafragma da coluna em movimento com vista a gerar som. O diafragma da coluna pode mover-se para dentro ou fora, e então, os números representam o quão dentro ou fora tem de estar o cone para cada momento no tempo. Um sample normalmente tem de guardar vários milhares de números por segundo para para poder ser reproduzido com qualidade e precisão. O Sonic Pi pega nesses números e dá-os à velocidade certa para mover a coluna para dentro e fora e reproduzir o som. Mas também é divertido mudar a velocidade a que os números são alimentam o processo de conversão de sinal digital analógico para que as colunas gerem som.

## Mudar a Velocidade (Rate)

Vamos brincar com um dos sons de ambiente: `:ambi_choir`. Para tocá-la à velocidade (rate) normal, podes passar a opt `rate:` com o valor `1`:

```
sample :ambi_choir, rate: 1
```

Isto toca o sample à velocidade normal (1), nada de especial para já. Mas, podemos mudar esse valor para outro qualquer. Que tal `0.5`:

```
sample :ambi_choir, rate: 0.5
```

Wow! Que é que se passou aqui? Bem, duas coisas. Primeiro, o sample demora o dobro do tempo a ser reproduzido. segundo, o som está uma oitava abaixo. Vamos explorar estas coisas com um bocado mais de detalhe.

## Vamos aplicar time-stretching ao som

Um sample que resulta muito bem com time-stretching é o "Amen Break". À velocidade normal, poderiamos pô-la numa música de *drum 'n' bass*:

```
sample :loop_amen
```

Contudo, ao mudar a velocidade podemos eventualmente entrar em domínios estéticos, e consequentemente géneros musicais diferentes. Tenta, transpor o sample para metade da velocidade, para obter uma espécie de "hip-hop old school":

```
sample :loop_amen, rate: 0.5
```

Se aumentarmos a velocidade entramos no território *jungle*:

```
sample :loop_amen, rate: 1.5
```

Agora para o nosso truque final -- vamos ver o que acontece se usarmos um valor de rate (velocidade) negativo:

```
sample :loop_amen, rate: -1
```

Wow! Toca em sentido contrário! Agora experimenta samples diferentes com rates diferentes. Experimenta rates muito altas e muito lentas. Vê até que ponto consegues obter sons interessantes.

## Uma Explicação simples do Termo Sample Rate

Uma maneira de pensar em samples é como molas. Mudar a rate é como esticar ou encolher um mola. Se tocarmos a sample com `rate: 2`, estamos a encolher a mola para metade do seu comprimento normal, e então o sample demora metade do tempo a tocar por ser mais curta. Se tocarmos a sample com `rate: 0.5`, estamos a esticar a mola para o dobro do seu comprimento e, portanto, a sample demora o dobro do tempo a tocar por ser mais longa. Quanto a encolhermos (rate mais alta), esta fica mais curta, quanto mais a esticares (rate mais baixa), mais longa fica.

Ao comprimir uma mola a sua densidade aumenta (número de voltas por cm) -- isto faz com que o sample soe *mais agudo*. Ao esticar a mola a sua densidade diminui e isso faz com que o sample acabe por soar *mais grave*.


## Vamos perceber o conceito de Sample Rate de um Ponto de Vista Matemático

(Esta parte é para aqueles interessados nos detalhes. Podes passar à frente se não for o teu caso...)

Como vimos anteriormente, um sample é representada por uma lista grelha de representação de valores ao nível das suas coordenadas polares e cartesianas e consequentemente na sua representação através de pfft (fast Fourier transform) e que acabam por ter uma correlação com a fase do som e indicar-nos o ponto onde a coluna se deve encontrar ao longo do tempo. Podemos pegar nessa lista de números e usá-la para desenhar um gráfico que seria parecido com este:

![gráfico do sample](../../../etc/doc/images/tutorial/sample.png)
 Copiar →↵…«»“”-–—

Já deve ter visto imagens parecidas com esta anteriormente. Esta imagem consiste basicamente na forma de onda de um sample. É só uma gráfico de números. Normalmente, uma onda como esta terá 44100 pontos de informação por segundo (isto deve-se ao Teorema de Nyquist-Shannon), apesar de poder ter mais ou menos (48000, 96000, 192000, etc., resultando daí a necessidade de mais capacidade processamento, e consequentemente um nível superior de qualidade de audio, especialmente em processos de manipulação do áudio como time-stretching). Se o sample tiver a duração de 2 segundos, a onde vai ser representada por 88200 números, e iremos dar à coluna a uma velocidade de 44100 pontos por segundo. Claro, podíamos dá-los ao dobro da velocidade, que seria 88200 pontos por segundo. Levaria, portanto, apenas 1 segundo a tocar. Também podemos tocá-la a metade da velocidade, correspondente a 22050 pontos por segundo, demorando 4 segundos a tocar.

A duração de um sample sample é afectada pela velocidade (rate):

* O Dobro do rate diminui a duração para metade,
* Metade do rate aumenta a duração para o dobro,
* Um rate de 1/4 multiplica a duração por quatro,
* Com um rate de 1/10 o sample acaba por durar 10 vezes mais.

Podemos representar isto com a seguinte fórmula:

```
new_sample_duration = (1 / rate) * sample_duration 
```

Mudar o rate também afecta a altura (não confundir com volume!) da sample. A frequência, ou altura, de uma onda é determinada pela velocidade com que esta se move para cima ou para baixo. O nosso cérebro, de alguma forma, transforma o movimento rápido das colunas em notas agudas e movimento lento em notas graves. É por isso que às vezes conseguimos ver as colunas a mexer.

Se pegarmos numa onda e a encolhermos, ela vai mover-se para cima e para baixo mais vezes durante o nosso período de tempo, que corresponde  a um segundo (uma vibração por segundo corresponde. a um hz). Isto faz com que o som soe mais agudo. Acontece que  ao duplicar o número de oscilações (movimentos para cima e para baixo) duplica a frequência. Então, *tocar uma sample ao dobro do rate e isto duplica também a frequência a que esta é ouvida*. Do mesmo modo, *diminuir o rate para metade vai diminuir a frequência para metade*. Outros rates vão afectar a frequência da mesma maneira.
