NoiseCraft基于瀏覽器的可視化音頻分析平臺
NoiseCraft 是一個基于瀏覽器的可視化編程語言和平臺,用于聲音合成和音樂制作,目的是創(chuàng)造一個開放的音樂思想交流社區(qū)。
其目標(biāo)是創(chuàng)建一個開放交流音樂思想的社區(qū)。該設(shè)計大致受到 PureData、Max/MSP 以及其他可視化編程語言的啟發(fā)。NoiseCraft 基于 Web Audio 和 Web MIDI API 等技術(shù)構(gòu)建,并在 Web 瀏覽器中運行。該計劃是讓該應(yīng)用程序在可預(yù)見的未來保持免費使用和無廣告。
可以在 noisecraft.app 試用 NoiseCraft ,并在 noisecraft.app/browse 瀏覽其他用戶共享的項目。目前,這在 Chrome、Firefox 和 Edge 中可以使用,但在 Safari 中由于其網(wǎng)絡(luò)音頻實現(xiàn)的問題而不能可靠地使用。
NoiseCraft 正在開發(fā)中。可能會存在一些 bug,而且目前還缺乏對移動設(shè)備的支持。
設(shè)計原則:
- NoiseCraft 遵循簡約的理念:
- 沒有 Web 框架,只有普通的 JS/HTML/CSS
- 有意將依賴關(guān)系降至最低
- 優(yōu)先考慮用戶需要的功能
- 避免冗余特征和特征蠕變
- 在用戶界面設(shè)計方面:
- 最小化學(xué)習(xí)曲線并減少摩擦
- 保持用戶界面簡單整潔
- 盡可能避免使用下拉菜單和隱藏選項
- 使用大多數(shù)用戶可能熟悉的組合鍵和控件
- 避免歧義,盡可能使用已知/現(xiàn)有的術(shù)語
- 可視化編程語言設(shè)計:
- 只有一種數(shù)據(jù)類型:浮點數(shù)
- 控制信號和音頻信號沒有區(qū)別
- Practical considerations:
- 避免圖像和聲音樣本以保持較低的帶寬/服務(wù)器成本
- 避免聲音樣本也迫使人們思考如何產(chǎn)生聲音
NoiseCraft 使用多頁設(shè)計,而不是單頁應(yīng)用程序。這意味著新建、幫助和瀏覽鏈接會打開新選項卡。這可以幫助用戶避免在單擊其他選項卡時意外丟失他們的工作,并使得能夠向新用戶發(fā)送指向/browse和/help頁面的直接鏈接。
用戶界面使用即時模式 GUI。也就是說,每次對模型執(zhí)行操作時,都會重新繪制 UI。這使得實現(xiàn)諸如撤消/重做之類的功能變得微不足道,因為可以簡單地存儲以前項目狀態(tài)的副本。它還減少了 UI 和模型之間的耦合。在實踐中,緩存用于避免為每個狀態(tài)更改重新繪制整個用戶界面。
音頻由AudioView類生成(參閱public/audioview.js),當(dāng)模型中發(fā)生狀態(tài)更改時會更新音頻。這會將音頻圖編譯成 JavaScript 代碼,然后可以在后臺進(jìn)程 (AudioWorklet) 中運行。只使用網(wǎng)絡(luò)音頻 API 來輸出聲音,而不是用于聲音合成。這有助于保證為給定項目產(chǎn)生的聲音在任何瀏覽器或設(shè)備上都是相同的。
項目文件以易于解析的 JSON 格式 (.ncft) 保存,最終可以構(gòu)建外部工具。例如,可以想象 NoiseCraft 項目可以編譯成 VST。
