Sobre o projeto
NoiseCraft é uma linguagem de programação visual de código aberto, baseada no navegador, e uma plataforma para síntese sonora e criação musical. Seu design é vagamente inspirado em PureData e Max/MSP, e visa fomentar uma comunidade para troca de ideias musicais. O projeto está em desenvolvimento e o README convida explicitamente contribuidores a ajudar a construí-lo e depurá-lo.
Você pode experimentá-lo em noisecraft.app e navegar por projetos compartilhados em noisecraft.app/browse. Atualmente funciona no Chrome, Firefox e Edge, mas não de forma confiável no Safari devido a problemas de implementação de web audio. O suporte móvel é descrito como deficiente, e bugs são esperados.
Princípios de design:
- Filosofia minimalista: JS/HTML/CSS puro sem frameworks web, dependências intencionalmente mínimas, foco nos recursos necessários e evitação de excesso de funcionalidades.
- Design de UI: minimizar a curva de aprendizado e o atrito, manter a interface simples e limpa, evitar menus suspensos e opções ocultas sempre que possível, usar combinações de teclas familiares e evitar ambiguidade.
- Design da linguagem: apenas um tipo de dado (números de ponto flutuante), e nenhuma distinção entre sinais de controle e sinais de áudio.
- Considerações práticas: evitar imagens e amostras de som para manter baixos o consumo de banda e os custos de servidor; evitar amostras também incentiva os usuários a pensar sobre geração de som.
Notas de arquitetura:
- Design multipágina em vez de aplicativo de página única, de modo que New, Help e Browse abrem novas abas, reduzindo a perda acidental de trabalho e permitindo links diretos para /browse e /help.
- GUI em modo imediato: a UI é redesenhada nas ações do modelo, o que simplifica desfazer/refazer ao armazenar estados anteriores do projeto, com cache para evitar redesenhos completos.
- O áudio é produzido pela classe AudioView (public/audioview.js), que compila o grafo de áudio em JavaScript executado em um AudioWorklet. A Web Audio API é usada apenas para saída, não para síntese, para manter o som consistente entre navegadores e dispositivos.
- Os projetos são salvos como JSON facilmente analisável (.ncft), o que poderia permitir ferramentas externas, com o README especulando sobre compilar projetos em VSTs.
Contribuição: correções de bugs são bem-vindas, mas o projeto é conservador quanto a novos recursos e mudanças importantes; pede-se aos contribuidores que abram uma issue para discutir mudanças propostas primeiro.
Configuração de desenvolvimento: o Chrome é recomendado. Instale Node.js e npm, execute npm install, depois node server.js; o aplicativo fica disponível em http://localhost:7773/. Os testes são executados com node tests.js. Instruções para Docker são fornecidas (docker build . -t noisecraft; docker run -p 7773:7773 -d noisecraft). A configuração do servidor usa as variáveis de ambiente DB_FILE_PATH (padrão ./database.db) e HTTP_PORT_NO (padrão 7773).
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.