# Live Coding

Um dos aspectos mais emocionantes do Sonic Pi é que podes escrever e modificar o código em tempo real para fazer música, tal como é possível em uma guitarra ao vivo. Isto significa que após alguma prática é possível levar o Sonic Pi para o palco e tocar.

## Abra a sua mente

Antes de entrarmos nos detalhes de como o Sonic Pi funciona no resto deste tutorial, queria dar-te uma ideia de como é programar em tempo real. Não te preocupes se não perceberes muito (ou nada) disto. Tenta só segurar-te à cadeira e aproveita…

## Um Live Loop

Vamos começar, faça uma cópia do seguinte código para um buffer vazio:

    live_loop :flibble do
      sample :bd_haus, rate: 1
      sleep 0.5
    end

Agora, aperte o botão `Run` e você ouvirá uma batida de bombo. Se a qualquer momento desejar parar o som basta pressionar o botão `Stop`. Mas não pressione ainda… Em vez disso, segue estes passos:

1. Tenha certeza de que o som do bombo ainda está tocando
2. Muda o valor do `sleep` de `0,5` para algo maior, como `1`.
3. Pressione o botão `Run` outra vez
4. Nota como a velocidade do bombo mudou.
5. Por fim, lembra-se deste momento, esta foi a primeira vez que você programou ao vivo com o Sonic Pi e é provável que não seja a última…

Ok, isso foi simples. Vamos adicionar algo mais à mistura. Acima de `sample :bd_haus` adiciona a linha `sample :ambi_choir, rate: 0.3`. O teu código deve estar algo parecido com o seguinte:

    live_loop :flibble do
      sample :ambi_choir, rate: 0.3
      sample :bd_haus, rate: 1
      sleep 1
    end

Sinta-se agora à vontade para testar aquilo que aprendeu. Mude parâmetros, como o rate - preste atenção no que acontece quando usa valores mais altos, valores mais baixos, ou até valores negativos. Repare no que acontece quando você muda o parâmetro ‘rate’ pelo sample ‘:ambi_choir’ (para, por exemplo ‘0.29’). O que acontece quando você escolhe um valor pequeno para o `step`? Veja se você consegue fazer ele ir tão rápido que seu computador vai parar com um erro porque não consegue alcançá-lo (se isso acontecer, escolha um valor mais alto para o tempo de `sleep`, e aperte em `Run` de novo).

Experimenta comentar uma das linhas `sample` adicionando um `#` no início:

    live_loop :flibble do
      sample :ambi_choir, rate: 0.3
    #  sample :bd_haus, rate: 1
      sleep 1
    end

Nota como o computador ignora aquela linha, e por isso não a ouvimos. Isto se chama um comentário. No Sonic Pi podemos usar comentários para adicionar ou remover coisas da música.

Finalmente, vou te mostrar algo divertido. Copia o código abaixo para um buffer vazio. Não faça muito esforço compreendê-lo, além de ver que existem dois loops (ciclos) – duas coisas a tocar ao mesmo tempo. Agora, faz o que você faz melhor – experimente e mude. Aqui estão algumas sugestões:

- Experimenta mudar os valores do `rate:` azul para ouvir o som a mudar.
- Experimenta mudar o valor de `sleep` e nota que os loops tocam a velocidades diferentes.
- Experimenta remover o comentário da linha `sample` (remover o `#`) e desfruta do som da guitarra tocado ao contrário.
- Experimenta mudar um dos valores de `mix:` para números entre `0` (não entra na música) e `1` (entra na música com efeito completo).

Lembra de clicar em `Run` e ouvir as mudanças da próxima vez que o loop tocar. Se o seu código não ficar como deseja, não se preocupe – pressione `Stop`, apaga o código e cola uma cópia nova e você está pronto para voltar à tocar. É errando o jeito mais fácil de se aprender…

    live_loop :guit do
      with_fx :echo, mix: 0.3, phase: 0.25 do
        sample :guit_em9, rate: 0.5
      end
    #  sample :guit_em9, rate: -0.5
      sleep 8
    end
    live_loop :boom do
      with_fx :reverb, room: 1 do
        sample :bd_boom, amp: 10, rate: 1
      end
      sleep 8
    end

Agora, continua a tocar e a experimentar até a sua curiosidade sobre como tudo isto funciona entrar em cena e você começar a se perguntar o que mais é possível no Sonic Pi. Agora você está apto à ler o resto do tutorial.

Então o que você está esperando?