mlua-pulse 0.1.0

Lua-friendly music composition and audio export bindings built on tunes and mlua
Documentation
# 性能


## 你会学到什么


- 为什么示例强烈建议使用 release 构建。
- 哪些因素会拉长导出耗时。
- 如何使用 `gpu` 特性请求上游 GPU 路径。
- 如何为长曲、FLAC 和生成式作品安排验证流程。

## 适合谁读


当 `kawaii_bass_3min`、管弦示例、颗粒合成或 FLAC 导出很慢时读本章。

## 前置知识


- [WAV、FLAC、MIDI]wav-flac-midi.md
- [Cargo 特性]../05-rust-integration/features.md

## 心智模型


`mlua-pulse` 的导出是离线渲染。耗时主要来自合成、效果、采样处理、响度扫描、编码和文件写入。debug 构建保留调试信息和较少优化,release 构建会大幅降低示例运行时间。

播放不是性能基准。最终交付应以离线导出和自动测试为准。

## 最小可运行例子


```powershell
cargo run --release --example foundation_loop
cargo run --release --example kawaii_bass_3min
cargo run --release --example moonlight_golden_hall
```

请求 GPU 特性:

```powershell
cargo run --release --features gpu --example foundation_loop
```

Lua 侧:

```lua
song:export_wav("output/gpu.wav", { gpu = true })
```

## 参数和边界


长曲耗时与时长、轨道数、效果数量、采样率、标准化方式和编码格式相关。RMS 标准化需要统计整体能量,FLAC 编码需要额外压缩,颗粒合成和复杂效果会增加计算。

`gpu = true` 只有在 crate 启用 `gpu` 特性时有效。未启用却请求 GPU 会返回 `gpu feature is not enabled`。GPU 是加速请求,不改变音乐语义,也不保证所有机器都更快。

## 常见陷阱


不要用 debug 构建评价示例耗时。用户已经观察到 release 可以大幅降低运行时间,因此文档和示例命令都应优先使用 `--release`。

不要为了快而跳过最终导出验证。尤其是响度、FLAC、PCM 和 MIDI 路径,必须用测试和实际导出命令确认。

不要用 `cargo check --all-features`。`mlua` 特性组合需要分别验证。

## 进阶用法


开发阶段可以只导出 WAV 草稿,等编曲和混音稳定后再导出 FLAC 和 MIDI。长曲可以先缩短 section repeat 数量测试结构,再恢复完整长度。

如果要批量渲染,建议宿主层组织队列,每首歌使用 release 二进制运行,并把输出放进独立目录。Lua 脚本内保持音量和标准化选项一致,避免后期手动拉平响度。

## 相关章节


- [故障排查]troubleshooting.md
- [响度标准化]loudness.md
- [Cargo 特性]../05-rust-integration/features.md
- [示例索引]../06-reference/examples.md