mlua-pulse 0.1.0

Lua-friendly music composition and audio export bindings built on tunes and mlua
Documentation
#![doc = include_str!("../README.md")]
//!
//! ## Rust API 入口
//!
//! 大多数最终用户会通过 Lua 使用本 crate。Rust 侧通常只需要创建
//! [`mlua::Lua`],调用 [`register_package_loader`],然后执行 Lua 编曲脚本。
//!
//! ```
//! let lua = mlua::Lua::new();
//! mlua_pulse::register_package_loader(&lua)?;
//! lua.load(
//!     r#"
//!     local pulse = require("pulse")
//!     assert(math.abs(pulse.note("A4") - 440.0) < 0.01)
//!     "#
//! ).exec()?;
//! # Ok::<(), mlua::Error>(())
//! ```
//!
//! 需要直接在 Rust 中构造作品时,可以使用 [`composition`]、[`export`]、
//! [`files`]、[`effects`]、[`synthesis`] 和 [`generators`] 模块。

/// Lua DSL 背后的作品、段落、旋律序列和采样片段构建器。
pub mod composition;
/// 鼓声目录、步进鼓网格、分层鼓别名和 808 鼓机便捷构建器。
pub mod drums;
/// 可应用到轨道或 master 的离线效果链。
pub mod effects;
/// crate 内部错误类型和统一结果别名。
pub mod error;
/// WAV/FLAC 导出选项、响度标准化和导出辅助函数。
pub mod export;
/// 按文件扩展名分派导出、FLAC/MIDI 辅助函数和 MIDI 导入包装。
pub mod files;
/// `tunes::sequences` 的 Lua 友好生成器目录和选项解析。
pub mod generators;
/// `tunes` 乐器预置到 Lua 稳定别名的映射。
pub mod instruments;
mod lua;
/// MIDI 音符号与频率之间的安全转换函数。
pub mod midi;
/// 基于 `tunes::engine::AudioEngine` 的简单播放预览层。
pub mod playback;
/// 欧几里得节奏、命名节奏和鼓模式字符串解析。
pub mod rhythm;
/// FM、加法、波表、Karplus-Strong 和颗粒合成配置。
pub mod synthesis;
/// 音名、音阶、和弦、调式目录和移调工具。
pub mod theory;

pub use error::{PulseError, PulseResult};
pub use lua::{register, register_package_loader};

#[cfg(feature = "module")]
#[mlua::lua_module(name = "pulse")]
fn pulse(lua: &mlua::Lua) -> mlua::Result<mlua::Table> {
    register(lua)
}