在Coni WASM中构建40Hz认知专注应用
浏览器中的WebAssembly一直承诺提供令人难以置信的性能,但将其与WebAudio和WebGL等Web API顺畅连接有时感觉像是在解谜。今天,我们非常高兴地展示Coni生态系统如何通过引入两个专为认知专注而设计的全新Web应用来优雅地解决这个问题。
这两个应用程序使用双耳节拍生成40Hz伽马频率——一种与深度专注、记忆唤起和认知提升相关的特定脑波频率。但真正的魔力在底层:它们完全是用Coni WASM编写的。
40Hz伽马波的科学
在深入探讨技术之前,为什么选择40Hz?伽马波是脑波频率中最快的。研究表明,当大脑在40Hz范围内运作时,它与敏锐的感知、问题解决能力和巅峰的注意力相关联。
通过在左耳播放60Hz的正弦波,在右耳播放100Hz的正弦波,大脑会感知到恰好40Hz的频率差“节拍”。这个过程被称为脑波同步(brainwave entrainment),它会温和地将您的认知状态推入伽马频率。
为了展示Coni架构在提供这种体验方面的灵活性,我们构建了该应用的两个截然不同的版本:
1. Canvas版本: deep-focus-40hz

我们的第一个应用程序依赖于传统的2D Canvas和DOM API。我们利用自定义的reframe_wasm库,直接通过WebAssembly以Hiccup风格的DOM生成来处理UI状态和渲染。
音频引擎完全以接近原生的速度细致地管理振荡器。我们甚至构建了一个自动生成铃声系统,它可以实时调制包络——完全避免了JS的开销:
;; 无需JS绑定的富有表现力的WebAudio包络!
(doto (.-gain gain)
(.linearRampToValueAtTime 0.15 (+ now 2.0))
(.exponentialRampToValueAtTime 0.001 (+ now 8.0)))
这是在纯Coni中构建一个响应式、高性能音频引擎的完美例子。
2. WebGL性能怪兽: deep-focus-webgl

虽然Canvas版本很棒,但我们想看看我们能将Coni的原生处理能力推到多远。于是deep-focus-webgl(内部代号为Amplifocus)诞生了。
这个版本不再依赖2D Canvas,而是使用纯WebGL渲染一个由80,000个粒子组成的脑矩阵。 是什么让这真正令人兴奋?
- 100%纯Coni: GPU加速的顶点变换和海量粒子数组逻辑都在Coni WASM中原生处理。
- 零JS数学开销: 通过使用Coni的数学库(
libs/math),我们计算了数万个顶点的复杂三角函数变换,而无需跨越昂贵的JS-WASM桥梁。
下面看看我们在原生浮点缓冲中塑造3D几何体并将其发送给GPU是多么毫不费力:
;; 在WASM内存中处理8万个顶点,一次性发送给GPU!
(f32-set! *base-points* idx final-x)
(f32-set! *base-points* (+ idx 1) final-sy)
(f32-set! *base-points* (+ idx 2) (* z 1.1))
;; 一次性上传静态几何体
(gl/upload-static-data @*gl-state* (js/float32-buffer *base-points*))
我们只需分配一次浮点数组,原生处理几何数据,然后通过单一缓冲操作将其瞬间送至GPU。
3. 冥想版本: restore-inner-peace-432hz

除了40Hz的专注应用外,我们还应用了相同的架构来构建一个宁静的432Hz双耳冥想合成器,旨在恢复平衡与平静。它利用了相同的原生WebAudio生成技术,但目标是完全不同的心智状态。
Coni WASM的优势
构建这些应用程序恰好凸显了我们为何以这种方式设计Coni。无论您是使用reframe操作DOM、合成音频包络,还是编排80,000个WebGL顶点,Coni都允许您编写干净、类似Lisp的代码,并将其编译为极速的WebAssembly。
没有样板代码。没有笨重的绑定。只有纯粹的性能。
这两个应用程序现已在我们的实验性WASM游乐场上线。带上您的耳机,集中注意力,体验Coni WASM的力量吧!