Comece aqui
O Untzel é um instrumento musical que roda no navegador. Um toque e um loop começa, escolhido numa biblioteca de templates por estilo musical; depois você muda tudo com os dedos ou editando um texto curto, e a música nunca para enquanto isso.
O que é o Untzel
Cada som que você ouve é uma linha de uma pequena linguagem de texto. Os blocos das faixas, a linha do tempo da música e o editor de código editam esse mesmo texto: o que você monta pelo toque aparece como código, e o que você escreve como código aparece nos blocos.
O som é feito no seu aparelho: um motor de som escrito em Rust roda como WebAssembly dentro da thread de áudio do navegador, e a luz do palco segue os mesmos eventos que o motor toca. Nada é transmitido pela rede e não é preciso conta.
O texto é analisado, nunca executado. Não há JavaScript dentro dele, nem funções, nem importações, então é seguro colar um texto que outra pessoa escreveu, ou que um assistente escreveu para você (Usar IA).
Tocar para começar
Abra app.untzel.com e toque em Toque para tocar. O navegador só libera som depois de um gesto, e esse primeiro toque é o que liga o áudio. A música começa no próximo compasso, em modo loop.
Este é o texto que o app toca primeiro, exatamente como este build o traz:
// template: Midnight Bloom// order: 1// default: truetitle "Midnight Bloom"tempo 124key a minorkick: kick boom x... x... x... x... | gain 0.9sub: sub warm a1 . . . a1 . . . / f1 . . . f1 . . . / d1 . . . d1 . . . / e1 . . . e1 . . . | duck 0.8bass: bass rolling . a2 a2 a2 . a2 c3 a2 / . f2 f2 f2 . f2 a2 f2 / . d2 d2 d2 . d2 f2 d2 / . e2 e2 e2 . g2 e2 b2 | duck 0.7 | comp 0.3 | pan 0.1 | gain 1.48hat: hat tight . x x?0.6 x . x x?0.6 x . x x?0.6 x . x x?0.7 x | gain 0.6 | swing 0.1 | pan -0.15ohat: hat open ..x. ..x. ..x. ..x. | pan 0.15 | gain 0.85shaker: shaker bright x x?0.7 x x?0.8 x x?0.7 x x?0.8 x x?0.7 x x?0.8 x x?0.7 X x?0.8 | swing 0.16 | gain 0.35 | pan 0.3conga: conga open . . x . x . . x . . x . x . x?0.4 x?0.5 | swing 0.16 | pan -0.35 | reverb roomrim: rim click .... ..x. .... .x.x | pan 0.4 | delay 3/16 | gain 1perc: perc ping .... .... ..x. .x.. | pan -0.2 | delay 1/8 | reverb roomclap: clap tight .... x... .... x... | reverb room | gain 1pad: pad noir Am9 ~ ~ ~ / Fmaj9 ~ ~ ~ / Dm9 ~ ~ ~ / Em7 ~ ~ ~ | voicing spread | brightness sine(16) 0.3..0.7 | duck 0.5 | reverb hall | gain 0.48pluck: pluck muted Am9 ~ ~ ~ / Fmaj9 ~ ~ ~ / Dm9 ~ ~ ~ / Em7 ~ ~ ~ | arp updown | arp-rate 1/16 | arp-octaves 2 | highpass 300 | delay 3/16 | gain 0.6keys: epiano soft . Am7 . . Am7 . . . / . Fmaj7 . . Fmaj7 . . . / . Dm7 . . Dm7 . . . / . Em7 . . Em7! . . . | voicing open | chorus 0.25 | reverb wide | gain 0.5lead: lead noir e4 ~ ~ . c4 ~ d4 ~ / a3 ~ ~ ~ ~ ~ . . / c4 ~ ~ . d4 ~ e4 ~ / g4 ~ ~ ~ e4 ~ ~ . | legato | glide 0.08 | delay 1/4 | reverb plate | gain 0.53answer: square hollow . . e5 . . . c5 . / . . a4 . . . . . / . . d5 . . . f5 . / . . e5 . . . b4 . | delay 3/16 | reverb hall | pan -0.25 | gain 0.4choir: choir monk Am ~ ~ ~ / F ~ ~ ~ / Dm ~ ~ ~ / Em ~ ~ ~ | vowel sine(8) 0.2..0.6 | eq-high 3 | reverb hall | gain 0.5rise: noise white x~~~ ~~~~ ~~~~ ~~~~ | cutoff saw(8) 300..9000 | gain saw(8) 0.15..0.5riser: riser noise x... / .... / .... / .... / .... / .... / .... / .... | length 15.5 | gain 0.6down: downlifter noise x~~~ ~~~~ ~~~~ ~~~~ / .... / .... / .... / .... / .... / .... / .... | reverb wide | gain 0.8impact: impact deep x... / .... / .... / .... / .... / .... / .... / .... | reverb sea | gain 0.9section intro kick hat shaker conga rim padsection groove kick sub bass hat ohat shaker conga rim perc clap pad keys | loopsection build kick sub hat ohat shaker conga perc clap pad pluck risesection break pad pluck keys choir downsection lift hat pad pluck choir risersection drop kick sub bass hat ohat shaker conga rim perc clap pad pluck lead answer choir impactsection groove2 kick sub bass hat ohat shaker conga rim perc clap keys plucksection break2 pad keys choir lead downsection drop2 kick sub bass hat ohat shaker conga rim perc clap pad pluck keys lead answer choir impactsection outro kick hat shaker conga rim padsong intro 16, groove 32, build 8, break 16, lift 8, drop 32, groove2 16, break2 16, lift 8, drop2 32, outro 16O primeiro loop em 2 minutos
- Toque em Code, ao lado do Drop. No celular o código abre numa folha; no computador, no painel lateral.
- Selecione todo o texto e troque por este:
// my first looptempo 124key a minorkick: kick x... x... x... x...hat: hat ..x. ..x. ..x. ..x. | swing 0.1bass: bass a1 . . a1 . . e2 . | cutoff 500- Pare de digitar. No próximo compasso o texto novo toca.
- Mude um número, por exemplo
cutoff 500paracutoff 1200. A mudança de um número simples soa na hora; a mudança de um padrão espera o próximo compasso. - Quebre algo de propósito: apague uma letra de
kick. A linha ganha uma marca de erro com a mensagem, e a versão anterior continua tocando. Código inválido nunca para a música.
Para onde ir depois
- Usar o app: cada tela, gesto e atalho de teclado.
- Guia da linguagem: a linguagem, uma ideia por vez, cada uma com um exemplo para colar.
- Receitas: grooves, subidas e uma música inteira com os instrumentos que existem hoje.
- Usar IA: um prompt pronto que ensina um assistente a escrever Untzel para você.
Conteúdo da documentação do Untzel, sob a licença CPAL-1.0. Ler a licença