2个稳定版本

1.0.1 2022年8月30日

#10 in #奇幻

自定义许可

2.5MB
424

包含 (WOFF字体,680KB) docs/NanumBarunGothic.ttf.woff,(WOFF字体,400KB) docs/NanumBarunGothic.ttf.woff2,(WOFF字体,190KB) docs/FiraSans-Medium.woff,(WOFF字体,135KB) docs/FiraSans-Medium.woff2,(WOFF字体,185KB) docs/FiraSans-Regular.woff,(WOFF字体,130KB) docs/FiraSans-Regular.woff2 以及 12 个更多文件

LSynth是一个虚拟声卡,旨在作为LIKO-12奇幻控制台的APU。

这里是维基。

这里是文档。

尽情发挥。


lib.rs:

这个库用于生成L-Synth音频流。

以下是一个LSynth芯片的基本设置的示例。你使用的任何播放此音频的库都应该为L-Synth提供一个音频缓冲区,这里用buffer参数的audio_sample_request表示。

use lsynth::*;

let mut chip = ChipState::new(4, ChipParameters::new(44_100, 0.5, 120.0));

chip.send_command(Command::SetAmplitude(0.5), 0);
chip.send_command(Command::SetFrequency(110.0), 0);

let mut frequency = 110.0;
let mut beat = 0;

let mut request_callback = move |chip: &mut ChipState| {
    beat += 1;
    while beat >= 4 {
        frequency += 110.0;

        chip.send_command(Command::SetFrequency(frequency), 0);
        beat -= 4;
    }
};

let mut audio_sample_request = move |buffer: &mut [f32]| {
    let mut sample_index = 0;
    
    while sample_index < buffer.len() {
        let generated_data = chip.generate(&mut buffer[sample_index..]).unwrap();
        sample_index += generated_data.generated;
        
        assert!(generated_data.generated != 0);
    
        if generated_data.remaining_samples == 0 { request_callback(&mut chip); }
    }
};
#

依赖项