Dual-channel

音频 + 视频
双渲染管线

Lumino 渲染器不是单一模块,而是由音频输出子系统与视频可视化子系统协同构成的完整渲染管线。编辑器的每一次修改都能通过音频通道即时聆听、通过视频通道实时反馈。

Editor
音频渲染 xsynth · KDMAPI · winmm
视频渲染 wgpu · iced · Canvas

音频渲染

多后端 MIDI 音频输出,根据场景自由切换:KDMAPI 专为 Black MIDI 极限事件吞吐优化,xsynth 提供跨平台一致 SoundFont 音色,winmm 作为通用兼容保底方案。

  • xsynth — 纯软件 SoundFont 合成
  • KDMAPI — Black MIDI 极限低延迟输出
  • winmm — 系统原生兼容回放

视频渲染

基于 wgpu 的跨平台 GPU 渲染管线,iced 数据驱动框架与 Canvas 级自定义绘制相结合。音符、网格、视口滚动的渲染批次经过合并优化,显著降低 CPU 开销,在高密度工程下依旧保持流畅帧率。

  • wgpu GPU 加速绘制管线
  • iced 数据驱动声明式 UI
  • Canvas 自定义钢琴卷帘渲染
  • 跨平台统一 GPU 抽象
Data Layout

SoA 批量存储,多线程并行

当音符数量超过阈值时自动切换到结构体数组存储,结合多线程并行处理,确保渲染线程永不阻塞。

8 线程
并行批量移动
10,000+
SoA 音符阈值
< 1ms
目标音频延迟
wgpu
跨平台 GPU 抽象
note_store.rs
// 当音符数超过阈值时启用 SoA 批量操作
pub const NOTE_STORE_THRESHOLD: usize = 10_000;

// 批量移动:8 线程并行,16M 音符 50% 18ms
note_store.batch_move_parallel(offset, selected);

// 批量删除:O(N) 单次遍历
note_store.delete_selected(indices);

// 批量插入:无 realloc,1ms/1000 音符
note_store.insert_bulk(notes);