Skip to main content

mlua_pulse/
lib.rs

1#![doc = include_str!("../README.md")]
2//!
3//! ## Rust API 入口
4//!
5//! 大多数最终用户会通过 Lua 使用本 crate。Rust 侧通常只需要创建
6//! [`mlua::Lua`],调用 [`register_package_loader`],然后执行 Lua 编曲脚本。
7//!
8//! ```
9//! let lua = mlua::Lua::new();
10//! mlua_pulse::register_package_loader(&lua)?;
11//! lua.load(
12//!     r#"
13//!     local pulse = require("pulse")
14//!     assert(math.abs(pulse.note("A4") - 440.0) < 0.01)
15//!     "#
16//! ).exec()?;
17//! # Ok::<(), mlua::Error>(())
18//! ```
19//!
20//! 需要直接在 Rust 中构造作品时,可以使用 [`composition`]、[`export`]、
21//! [`files`]、[`effects`]、[`synthesis`] 和 [`generators`] 模块。
22
23/// Lua DSL 背后的作品、段落、旋律序列和采样片段构建器。
24pub mod composition;
25/// 鼓声目录、步进鼓网格、分层鼓别名和 808 鼓机便捷构建器。
26pub mod drums;
27/// 可应用到轨道或 master 的离线效果链。
28pub mod effects;
29/// crate 内部错误类型和统一结果别名。
30pub mod error;
31/// WAV/FLAC 导出选项、响度标准化和导出辅助函数。
32pub mod export;
33/// 按文件扩展名分派导出、FLAC/MIDI 辅助函数和 MIDI 导入包装。
34pub mod files;
35/// `tunes::sequences` 的 Lua 友好生成器目录和选项解析。
36pub mod generators;
37/// `tunes` 乐器预置到 Lua 稳定别名的映射。
38pub mod instruments;
39mod lua;
40/// MIDI 音符号与频率之间的安全转换函数。
41pub mod midi;
42/// 基于 `tunes::engine::AudioEngine` 的简单播放预览层。
43pub mod playback;
44/// 欧几里得节奏、命名节奏和鼓模式字符串解析。
45pub mod rhythm;
46/// FM、加法、波表、Karplus-Strong 和颗粒合成配置。
47pub mod synthesis;
48/// 音名、音阶、和弦、调式目录和移调工具。
49pub mod theory;
50
51pub use error::{PulseError, PulseResult};
52pub use lua::{register, register_package_loader};
53
54#[cfg(feature = "module")]
55#[mlua::lua_module(name = "pulse")]
56fn pulse(lua: &mlua::Lua) -> mlua::Result<mlua::Table> {
57    register(lua)
58}