Sign in

    miniaudio

    miniaudio的moonbit封装

    Download zip
    Version
    0.5.1
    License
    Apache-2.0
    Last updated
    8 hours ago
    Downloads
    62

    #CorvusCinereus/miniaudio

    miniaudio的moonbit封装

    #Example

    test "total" {
    let engine = @miniaudio.MaEngine::new()
    match engine {
    Err(err) => println(err)
    Ok(engine) => match engine.load_sound("test.mp3", @miniaudio.MA_SOUND_FLAG_ASYNC | @miniaudio.MA_SOUND_FLAG_DECODE) {
    Err(err) => {
    println(err)
    engine.free()
    }
    Ok(sound) => {
    println("pos: \{sound.get_position().unwrap()}\nlength: \{sound.get_length().unwrap()}")
    let res = sound.seek_to_second(1.0)
    if res is Err(err) {
    println(err)
    }
    let _ = sound.play()
    let _ = sound.stop()
    let _ = sound.play()
    while sound.playing() {}
    sound.free()
    engine.free()
    }
    }
    }
    }

    MaEngine

    pub struct MaEngine {
    // private fields
    }

    miniaudio 播放引擎的封装,负责音频设备初始化与声音加载。 使用完毕后应调用 free 释放底层资源。

    MaEngine::free

    fn MaEngine::free(engine : MaEngine) -> Unit

    释放引擎占用的底层资源。

    应先释放由该引擎加载的所有声音,再释放引擎。

    MaEngine::load_sound

    fn MaEngine::load_sound(engine : MaEngine, file : String, flags : Int) -> Result[MaSound, String]

    从文件加载一个声音对象。

    • file:音频文件路径,支持 mp3、wav、flac、ogg 等常见格式。
    • flags:加载标志,可由 MA_SOUND_FLAG_* 常量按位或组合。

    加载失败时返回 Err,错误信息包含 miniaudio 的错误描述。

    MaEngine::new

    fn MaEngine::new() -> Result[MaEngine, String]

    创建并初始化一个新的播放引擎。

    底层初始化失败时返回 Err,错误信息包含 miniaudio 的错误描述。

    MaSound

    pub struct MaSound {
    // private fields
    }

    声音对象的封装,通过 MaEngine::load_sound 加载得到。 使用完毕后应调用 free 释放底层资源。

    MaSound::free

    fn MaSound::free(sound : MaSound) -> Unit

    释放声音占用的底层资源,调用后不应再使用该声音对象。

    应在释放所属引擎 MaEngine::free 之前调用。

    MaSound::get_length

    fn MaSound::get_length(sound : MaSound) -> Result[Float, String]

    获取声音总时长(单位:秒)。

    长度未知(例如流式播放或未知长度标志)或获取失败时返回 Err。

    MaSound::get_position

    fn MaSound::get_position(sound : MaSound) -> Result[Float, String]

    获取当前播放位置(单位:秒),获取失败时返回 Err。

    MaSound::get_volume

    fn MaSound::get_volume(sound : MaSound) -> Float

    获取当前音量(线性增益,1.0 为默认值,允许大于 1.0 进行放大)。

    MaSound::play

    fn MaSound::play(sound : MaSound) -> Result[Unit, String]

    开始播放声音,失败时返回 Err。

    MaSound::playing

    fn MaSound::playing(sound : MaSound) -> Bool

    判断声音当前是否正在播放。

    MaSound::seek_to_second

    fn MaSound::seek_to_second(sound : MaSound, pos : Double) -> Result[Unit, String]

    跳转到指定播放位置(单位:秒)。

    pos 必须为非负数,否则返回 Err;跳转失败时同样返回 Err。

    MaSound::set_volume

    fn MaSound::set_volume(sound : MaSound, volume : Float) -> Result[Unit, String]

    设置音量(线性增益,1.0 为默认值,允许大于 1.0 进行放大)。

    volume 必须为非负数,否则返回 Err;底层设置失败时同样返回 Err。

    MaSound::stop

    fn MaSound::stop(sound : MaSound) -> Result[Unit, String]

    停止播放声音,失败时返回 Err。

    停止后再次调用 play 会从停止位置继续播放。

    MA_SOUND_FLAG_ASYNC

    let MA_SOUND_FLAG_ASYNC : Int

    异步加载标志:在后台线程完成加载,load_sound 会尽快返回。

    MA_SOUND_FLAG_DECODE

    let MA_SOUND_FLAG_DECODE : Int

    预解码标志:加载时将整个音频解码进内存,之后播放不再消耗解码开销。

    MA_SOUND_FLAG_LOOPING

    let MA_SOUND_FLAG_LOOPING : Int

    循环播放标志:声音加载后即处于循环播放状态。

    MA_SOUND_FLAG_NO_DEFAULT_ATTACHMENT

    let MA_SOUND_FLAG_NO_DEFAULT_ATTACHMENT : Int

    禁止默认挂接标志:不将声音自动挂接到资源管理器的默认终点,需自行处理输出。

    MA_SOUND_FLAG_NO_PITCH

    let MA_SOUND_FLAG_NO_PITCH : Int

    禁用变调标志:关闭 set_pitch 相关的变调支持,以减少处理开销。

    MA_SOUND_FLAG_NO_SPATIALIZATION

    let MA_SOUND_FLAG_NO_SPATIALIZATION : Int

    禁用空间化标志:关闭 3D 空间化处理,以减少处理开销。

    MA_SOUND_FLAG_STREAM

    let MA_SOUND_FLAG_STREAM : Int

    流式播放标志:边解码边播放,不将整个音频加载进内存,适合较大的音频文件。

    MA_SOUND_FLAG_UNKNOWN_LENGTH

    let MA_SOUND_FLAG_UNKNOWN_LENGTH : Int

    未知长度标志:声明声音长度未知(例如网络电台等无限流)。

    MA_SOUND_FLAG_WAIT_INIT

    let MA_SOUND_FLAG_WAIT_INIT : Int

    等待初始化标志:加载时阻塞等待声音完成初始化后再返回。

    Source Files