# 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 podes tocar numa guitarra ao vivo. Isto significa que após alguma prática podes levar o Sonic Pi para o palco e tocar.

## Liberta a tua 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, copia o código seguinte para um buffer vazio:

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

Agora, carrega no botão `Run` e vais ouvir uma boa e rápida batida de bombo. Se a qualquer momento quiseres parar o som basta carregar no botão `Stop`. Mas não carregues para já… Em vez disso, segue estes passos:

1. Certifica-te de que o som do bombo ainda está a tocar
2. Muda o valor do `sleep` de `0,5` para algo maior, como `1`.
3. Carrega no botão `Run` outra vez
4. Nota como a velocidade do bombo mudou.
5. Por fim, lembra-te deste momento, esta foi a primeira vez que programaste 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 algos, 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 chama-se um comentário. No Sonic Pi podemos usar comentários para adicionar ou remover coisas da música.

Finalmente, vou deixar-te uma coisa para brincar. Copia o código abaixo para um buffer vazio. Não tentes demasiado compreendê-lo, além de ver que existem dois loops (ciclos) – duas coisas a tocar ao mesmo tempo. Agora, faz o que fazes melhor – experimenta e brinca. 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-te de clicar em `Run` e ouvirás as mudanças da próxima vez que o loop tocar. Se ficares com o código estragado, não te preocupes – carrega em `Stop`, apaga o código e cola uma cópia nova e estás de volta à ação. É a errar que aprendes mais rápido…

    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 tua curiosidade sobre como tudo isto funciona entrar em cena e começares a questionar que mais podes fazer no Sonic Pi. Agora estás pronto para ler o resto do tutorial.

Então de que estás à espera…