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çãoExemploO 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ódigoO que você ouveIdeia demonstrada
sound("bd hh sd hh")Um backbeat básico: bumbo, chimbal, caixa, chimbal, uma vez por cicloQuatro 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 colcheiasUma 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 cicloOs 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 8Ritmos 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 cicloTransformações encadeiam da esquerda para a direita: inverta o padrão e depois dobre a velocidade.

Como começar com live coding

  1. Clique em um padrão inicial — Bateria, Melodia, Linha de baixo ou Polirritmia — para carregar seu código no editor Strudel incorporado.
  2. Pressione o botão de reproduzir dentro do editor (navegadores exigem um clique antes de qualquer som começar).
  3. 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.
  4. Sobreponha mais padrões com stack() e molde-os com fast, slow, rev ou euclid usando a tabela de referência rápida.
  5. 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.