Strudel live coding: crie música com código online
Escreva padrões musicais como código e ouça-os instantaneamente no editor Strudel incorporado — TidalCycles para o navegador.
Escolha um padrão inicial abaixo, pressione reproduzir dentro do editor e altere o código enquanto ele toca. Isso é live coding: a música se atualiza no momento em que você reavalia.
Strudel live coding: crie música com código online
Escreva padrões musicais como código e ouça-os instantaneamente no editor Strudel incorporado — TidalCycles para o navegador.
Padrões iniciais
Padrão: Bateria
sound("bd hh sd hh")O som só começa depois que você pressiona reproduzir no editor. Quer o ambiente completo com navegador de samples e visuais? Abrir no Strudel completo
Referência rápida de mini-notação do Strudel
As dez construções que liberam a maior parte da linguagem de padrões. Tudo entre aspas duplas é mini-notação; uma sequência entre aspas dura exatamente um ciclo.
| Construção | Exemplo | O que faz |
|---|---|---|
| sound() / s() | sound("bd hh sd hh") | Toca samples ou sintetizadores nomeados: bd = bumbo, sd = caixa, hh = chimbal. Os quatro eventos dividem um ciclo igualmente. |
| note() | note("c4 e4 g4").sound("piano") | Toca alturas pelo nome (c4, eb3) ou número MIDI e as envia ao som encadeado depois. |
| * (repetir) | sound("hh*8") | Comprime 8 chimbais no espaço de um evento — a maneira padrão de escrever subdivisões rápidas. |
| ~ (pausa) | sound("bd ~ sd ~") | Um espaço silencioso. A grade de eventos mantém o tempo; o til apenas não toca nada. |
| [ ] (grupo) | sound("bd [sd sd] bd sd") | Colchetes colocam vários eventos em um único espaço e subdividem seu tempo; aqui duas caixas rápidas compartilham o tempo 2. |
| < > (alternar) | note("<c2 eb2 g2>") | Sinais de menor e maior tocam uma entrada por ciclo, alternando entre elas — uma progressão de acordes instantânea. |
| stack() | stack(sound("bd*4"), sound("hh*8")) | Sobrepõe padrões para tocarem simultaneamente — como criar uma bateria completa ou adicionar baixo sob a bateria. |
| fast() / slow() | sound("bd sd").fast(2) | Acelera ou estica um padrão: fast(2) encaixa duas repetições por ciclo; slow(2) espalha uma por dois ciclos. |
| rev() | note("c4 e4 g4 b4").rev() | Inverte o padrão dentro de cada ciclo — uma variação melódica de uma palavra. |
| .euclid(k, n) | sound("bd").euclid(3, 8) | Distribui k ataques o mais uniformemente possível em n passos. euclid(3,8) é o ritmo tresillo por trás de incontáveis grooves dançantes e latinos. |
Sobre Strudel e live coding
Live coding é tocar música escrevendo e reescrevendo código enquanto ela toca. Em vez de organizar notas numa linha do tempo, você descreve padrões — um bumbo a cada semínima, um acorde que muda a cada ciclo, chimbais comprimidos em tercinas — e a linguagem transforma essas descrições em som imediatamente. Mude uma linha, reavalie, e a música se transforma no próximo ciclo sem nunca parar. A cena em torno da prática se tornou as algoraves, noites de clube nas quais o código dos artistas é projetado para o público ler enquanto dança.
Strudel é a encarnação em JavaScript do TidalCycles, a linguagem de padrões criada por Alex McLean em Haskell por volta de 2009 e que se tornou a língua franca da música feita com código ao vivo. Strudel reimplementa as ideias do Tidal para rodarem inteiramente numa aba do navegador: sem cadeia de ferramentas Haskell, servidor de áudio SuperCollider ou instalação. Esta página incorpora o REPL oficial do Strudel, do strudel.cc, em um quadro; assim você tem o editor genuíno — flash ao avaliar, mensagens de erro e sons internos — dentro da página, e os botões iniciais carregam padrões funcionais. O link para abrir o Strudel completo leva seu padrão atual ao ambiente com navegador de samples e visualizações.
O coração das linguagens da família Tidal é o ciclo: uma extensão de tempo repetida, de cerca de dois segundos por padrão, contra a qual todos os padrões são medidos. A mini-notação entre aspas duplas divide esse ciclo. Escreva bd hh sd hh e terá quatro eventos iguais por ciclo: bumbo, chimbal, caixa, chimbal. Pequenas edições produzem grandes mudanças musicais: um asterisco multiplica eventos, um til insere silêncio, colchetes subdividem um espaço e sinais de menor e maior alternam valores em ciclos sucessivos; assim, uma edição de dois caracteres vira uma progressão de acordes.
O que torna linguagens de padrões tão viciantes é que transformações se compõem. Encadeie rev() para inverter uma melodia, fast(2) para dobrar sua velocidade ou euclid(3,8) para redistribuir ataques no tresillo cubano. Todas se aplicam a padrões inteiros, não a notas individuais, então uma edição muda toda a textura. Comece com Bateria, troque um nome de sample, adicione um asterisco e você estará fazendo live coding.
Receitas de padrões para testar no editor
Copie qualquer um deles no editor incorporado, pressione reproduzir e transforme-os um token de cada vez.
| Código | O que você ouve | Ideia demonstrada |
|---|---|---|
| sound("bd hh sd hh") | Um backbeat básico: bumbo, chimbal, caixa, chimbal, uma vez por ciclo | Quatro eventos dividem um ciclo igualmente — o hello world da mini-notação. |
| sound("bd*4, hh*8") | Bumbo four-on-the-floor sob um fluxo de chimbais em colcheias | Uma vírgula dentro das aspas sobrepõe sequências, como um stack() compacto. |
| note("<c2 eb2 g1 bb1>").sound("sawtooth").lpf(500) | Uma linha de baixo escura e filtrada que muda para uma nova fundamental a cada ciclo | Os sinais de menor e maior alternam por ciclo; lpf(500) é um filtro passa-baixas de 500 Hz que doma a onda dente de serra. |
| sound("bd").euclid(3, 8) | O tresillo: ataques nos passos 1, 4 e 7 de 8 | Ritmos euclidianos distribuem 3 ataques o mais uniformemente possível em 8 passos — do son cubano ao EDM. |
| note("c4 e4 g4 b4").rev().fast(2) | Um arpejo descendente tocado duas vezes por ciclo | Transformações encadeiam da esquerda para a direita: inverta o padrão e depois dobre a velocidade. |
Como começar com live coding
- Clique em um padrão inicial — Bateria, Melodia, Linha de baixo ou Polirritmia — para carregar seu código no editor Strudel incorporado.
- Pressione o botão de reproduzir dentro do editor (navegadores exigem um clique antes de qualquer som começar).
- Edite o código enquanto ele toca: mude um nome de sample, adicione *2 a um evento ou troque uma nota; depois pressione Ctrl+Enter (Cmd+Enter no Mac) para reavaliar.
- Sobreponha mais padrões com stack() e molde-os com fast, slow, rev ou euclid usando a tabela de referência rápida.
- Quando um padrão ultrapassar um esboço, abra no Strudel completo para usar o ambiente com navegador de sons e visuais.
Perguntas frequentes sobre live coding no Strudel
Qual é a diferença entre Strudel e TidalCycles?
TidalCycles é a linguagem de padrões original, escrita em Haskell e geralmente combinada ao mecanismo de síntese SuperCollider. Strudel é um projeto irmão oficial que porta o mesmo sistema de padrões para JavaScript e a Web Audio API, portanto roda em qualquer navegador moderno sem instalação. Padrões e conceitos são transferidos quase diretamente entre os dois.
Por que os botões iniciais recarregam o editor?
Strudel aceita um programa inteiro pela URL: a fonte do padrão é codificada em base64 no endereço após o símbolo #. Cada botão inicial aponta o editor incorporado para uma nova URL que contém aquele padrão, e é por isso que o link para abrir no Strudel completo também leva seu padrão atual.
Por que não há som até eu pressionar reproduzir no editor?
Os navegadores bloqueiam todo áudio até que o usuário interaja com a página que o produz, como proteção contra reprodução automática. O quadro do Strudel é sua própria página, então o primeiro clique de reprodução precisa ocorrer no editor. Depois disso, reavaliar o código atualiza a música sem interrompê-la.
O que é um ciclo?
O ciclo é a unidade de tempo musical do Tidal e do Strudel: uma extensão repetida de aproximadamente dois segundos no tempo padrão, contra a qual todos os padrões são medidos. Uma sequência entre aspas como bd hh sd hh divide um ciclo em partes iguais; fast(2) coloca dois ciclos em um, e sinais de menor e maior fornecem um valor por ciclo.
O que é uma algorave?
Uma algorave é um evento musical em que artistas geram música, e frequentemente visuais, ao vivo escrevendo código; a tela costuma ser projetada para o público assistir à mudança do código-fonte. O termo foi cunhado por volta de 2012 na comunidade TidalCycles, e hoje há algoraves no mundo inteiro.
Strudel é gratuito? Por que está incorporado em um quadro?
Sim. Strudel é software livre e de código aberto, lançado sob a licença AGPL-3.0 pela comunidade Strudel/TidalCycles. Incorporar o editor oficial do strudel.cc mantém essa base de código em sua própria origem, claramente separada deste site, enquanto oferece o REPL real e sempre atualizado em vez de uma cópia.