# Samples controlados por curvas de envolvente

Também é possível modificar a duração e amplitude de um sample usando uma curva de envolvente do tipo ADSR. Contudo, isto funciona de forma ligeiramente diferente para curvas de envolvente ADSR disponíveis em sintetizadores. As curvas de envolvente dos samples apenas permitem reduzir a amplitude e duração de um sample - e acabam por não permitir aumenta-la. O sempre irá parar quando tanto o sample tiver terminado de tocar e a envolvente estiver concluída - que acaba por ser primeiro. Portanto, usa um valor de ‘release’ longo, e acabarás por não estender a duração do sample.

## Curvas de Envolvente do Amen Sample

Vamos voltar ao nosso sample de eleição Amen Break:

    sample :loop_amen

Sem opts, ouvimos o sample completo, com toda a sua amplitude. Se quisermos fazer um fade durante 1 segundo usamos o parâmetro ‘ataque’:

    sample :loop_amen, attack: 1

Para um fade in mais curto, escolha um valor de ataque mais curto:

    sample :loop_amen, attack: 0.3

## Sustain Automático

As curvas de envolvente do comportamento do ADSR difere da envolvente do sintetizar standard, ou pre-definido, no valor de sustain. Na envolvente do sintetizador pré-definida, o sustain é 0 por pré-definição a não ser que seja manualmente definido. Com samples, o valor de sustain é definido como default, para um valor automático - o tempo que demora a tocar o resto do sample. É por isto que nós ouvimos o sample completo quando passamos sem pré-definições. Se os valores de ataque, decay, sustain, e release forem todos 0 nós acabamos por nunca ouvir um peep. O Sonic Pi, acaba então por calcular a duração do sample que super-impõe qualquer ataque decay, e tempos de release e usa o resultado como valor de sustain. Se o valor de ataque, decay e release for superior à duração do sample, o sustain é simplesmente definido como 0.

## Fade Outs

Para explorar isto, vamos considerar o Amen Break para mais detalhe. Se perguntarmos ao Sonic Pi durante quanto tempo sample se mantém activo

    print sample_duration :loop_amen

Isto irá imprimir o valor de `1.753310657596372` que possui a duração de um sample em segundos. Vamos agora arrendondá-lo para 1.75 para conveniência neste preciso momento. Agora, se definirmos a o valor do release para ‘0.75’, also surpreendente acabará por acontecer:

    sample :loop_amen, release: 0.75

Irá tocar durante o primeiro segundo do sample num nível de amplitude/pressão sonora/intensidade dinâmica/SPL total, antes de fazer um fade de um período de cerca de 0.75 segundos. Isto é o sustain automático, em acção. Por pré-definição, o tempo de release, outra extinção do som, funciona sempre a partir do fim do sample. Se o nosso sempre tiver 10.75 segundos de duração, este irá tocar durante os primeiro s dez segundos da sua execução em amplitude total antes de fazer um fade out durante cerca de. 0.75s.

Lembre-se: por pré-definição, o valor de ‘release:’ diminui até ao fim do sample.

## Fade In e Fade Out

Podemos usar tanto o valor de ‘ataque:’ e ‘release:’ juntos com o comportment de auto sustain para fazer tanto fade in como fade out durante a duração do sample:

    sample :loop_amen, attack: 0.75, release: 0.75

Como a duração completamente do sample é 1.75s o nosso ataque e release (tempo de extinsão do som), demora cerca de 1.5s, sendo o sustain automaticamente definido para 0.25s. isto permite facilmente fazer fazer fade in e out do sample

## Sustain explicito

Podemos facilmente voltar ao valor normal de ADSR do comportamento do sintetizador definindo manualmente o ‘sustain’ para um valor como 0:

    sample :loop_amen, sustain: 0, release: 0.75

Agora, o nosso sample apenas reproduz durante 0.75 segundos no total. Por pré-definição o ‘ataque:’ e ‘decay:’ é 0, o sample salta automaticamente para a amplitude completa, adiciona ai os 0s e extinguindo-se então para 0 durante o perigo de release - 0.75s.

## Címbalos percussivos

É possível usar este comportamento para afectar positivamente e tornar sons mais longos em sons mais pequenos, e versões mais permissivas. Considere por exemplo o sample ‘:drum_cymbal_open’

    sample :drum_cymbal_open

É possível ouvir o som dos pratos (cymbal), a tocar durante um determinado período de tempo. Contudo, podemos usar a nossa curva de envolvente para o tornar, enfim, mais percussivo:

    sample :drum_cymbal_open, attack: 0.01, sustain: 0, release: 0.1

É então possível emular o ataque de um prato (cymbal) e mantê-lo activo, aumentado o período de sustain

    sample :drum_cymbal_open, attack: 0.01, sustain: 0.3, release: 0.1

Dedica-te agora a colocar curvas de envolvente nos samples. Tenta mudar a velocidade de sobremaneira para resultados realmente interessantes