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).