这个项目能做什么

NoiseCraft 是一个开源的、基于浏览器的可视化编程语言和平台,用于声音合成和音乐创作。其设计大致受 PureData 和 Max/MSP 启发,旨在促进一个交流音乐想法的社区。该项目仍在开发中,README 明确邀请贡献者帮助构建和调试。 您可以在 noisecraft.app 试用,并在 noisecraft.app/browse 浏览共享项目。它目前可在 Chrome、Firefox 和 Edge 中运行,但由于 Web Audio 实现问题,在 Safari 中运行不可靠。移动端支持被描述为缺乏,且存在预期中的错误。 设计原则: - 极简主义哲学:使用纯 JS/HTML/CSS,无 Web 框架,有意保持最小依赖,专注于所需功能,避免功能蔓延。 - UI 设计:最小化学习曲线和摩擦,保持界面简单整洁,尽可能避免下拉菜单和隐藏选项,使用熟悉的快捷键,避免歧义。 - 语言设计:仅有一种数据类型(浮点数),不区分控制信号和音频信号。 - 实际考虑:避免使用图像和声音样本以降低带宽和服务器成本;避免样本也促使用户思考声音生成。 架构说明: - 采用多页面设计而非单页应用,因此“新建”、“帮助”和“浏览”会打开新标签页,减少意外丢失工作的风险,并允许直接链接到 /browse 和 /help。 - 即时模式 GUI:UI 在模型操作时重绘,通过存储先前项目状态简化撤销/重做,并使用缓存避免完全重绘。 - 音频由 AudioView 类(public/audioview.js)生成,它将音频图编译为在 AudioWorklet 中运行的 JavaScript。Web Audio API 仅用于输出,而非合成,以确保跨浏览器和设备的声音一致性。 - 项目保存为易于解析的 JSON(.ncft),这可能允许外部工具使用,README 中推测了将项目编译为 VST 的可能性。 贡献:欢迎修复错误,但项目对新功能和重大更改持保守态度;贡献者被要求先打开一个问题来讨论提议的更改。 开发设置:推荐使用 Chrome。安装 Node.js 和 npm,运行 npm install,然后运行 node server.js;应用可在 http://localhost:7773/ 访问。测试通过 node tests.js 运行。提供了 Docker 说明(docker build . -t noisecraft; docker run -p 7773:7773 -d noisecraft)。服务器配置使用环境变量 DB_FILE_PATH(默认 ./database.db)和 HTTP_PORT_NO(默认 7773)。