NoiseCraft基于浏览器的可视化音频分析平台
NoiseCraft 是一个基于浏览器的可视化编程语言和平台,用于声音合成和音乐制作,目的是创造一个开放的音乐思想交流社区。
其目标是创建一个开放交流音乐思想的社区。该设计大致受到 PureData、Max/MSP 以及其他可视化编程语言的启发。NoiseCraft 基于 Web Audio 和 Web MIDI API 等技术构建,并在 Web 浏览器中运行。该计划是让该应用程序在可预见的未来保持免费使用和无广告。
可以在 noisecraft.app 试用 NoiseCraft ,并在 noisecraft.app/browse 浏览其他用户共享的项目。目前,这在 Chrome、Firefox 和 Edge 中可以使用,但在 Safari 中由于其网络音频实现的问题而不能可靠地使用。
NoiseCraft 正在开发中。可能会存在一些 bug,而且目前还缺乏对移动设备的支持。
设计原则:
- NoiseCraft 遵循简约的理念:
- 没有 Web 框架,只有普通的 JS/HTML/CSS
- 有意将依赖关系降至最低
- 优先考虑用户需要的功能
- 避免冗余特征和特征蠕变
- 在用户界面设计方面:
- 最小化学习曲线并减少摩擦
- 保持用户界面简单整洁
- 尽可能避免使用下拉菜单和隐藏选项
- 使用大多数用户可能熟悉的组合键和控件
- 避免歧义,尽可能使用已知/现有的术语
- 可视化编程语言设计:
- 只有一种数据类型:浮点数
- 控制信号和音频信号没有区别
- Practical considerations:
- 避免图像和声音样本以保持较低的带宽/服务器成本
- 避免声音样本也迫使人们思考如何产生声音
NoiseCraft 使用多页设计,而不是单页应用程序。这意味着新建、帮助和浏览链接会打开新选项卡。这可以帮助用户避免在单击其他选项卡时意外丢失他们的工作,并使得能够向新用户发送指向/browse
和/help
页面的直接链接。
用户界面使用即时模式 GUI。也就是说,每次对模型执行操作时,都会重新绘制 UI。这使得实现诸如撤消/重做之类的功能变得微不足道,因为可以简单地存储以前项目状态的副本。它还减少了 UI 和模型之间的耦合。在实践中,缓存用于避免为每个状态更改重新绘制整个用户界面。
音频由AudioView
类生成(参阅public/audioview.js
),当模型中发生状态更改时会更新音频。这会将音频图编译成 JavaScript 代码,然后可以在后台进程 (AudioWorklet
) 中运行。只使用网络音频 API 来输出声音,而不是用于声音合成。这有助于保证为给定项目产生的声音在任何浏览器或设备上都是相同的。
项目文件以易于解析的 JSON 格式 (.ncft) 保存,最终可以构建外部工具。例如,可以想象 NoiseCraft 项目可以编译成 VST。