12个版本 (稳定版)
1.3.1 | 2023年9月8日 |
---|---|
1.2.1 | 2023年7月30日 |
1.2.0 | 2023年5月22日 |
1.1.0 | 2023年4月30日 |
0.1.0 | 2023年1月15日 |
#33 在 音频
1,758 每月下载量
用于 5 个crate (2个直接使用)
195KB
4.5K SLoC
RustySynth
RustySynth是一个纯Rust编写的SoundFont MIDI合成器,从MeltySynth移植而来。
特性
- 适用于实时和离线合成。
- 支持标准MIDI文件,包括动态速度变化等附加功能。
- 除了标准库外,没有其他依赖项。
示例
合成简单和弦的示例代码
// Load the SoundFont.
let mut sf2 = File::open("TimGM6mb.sf2").unwrap();
let sound_font = Arc::new(SoundFont::new(&mut sf2).unwrap());
// Create the synthesizer.
let settings = SynthesizerSettings::new(44100);
let mut synthesizer = Synthesizer::new(&sound_font, &settings).unwrap();
// Play some notes (middle C, E, G).
synthesizer.note_on(0, 60, 100);
synthesizer.note_on(0, 64, 100);
synthesizer.note_on(0, 67, 100);
// The output buffer (3 seconds).
let sample_count = (3 * settings.sample_rate) as usize;
let mut left: Vec<f32> = vec![0_f32; sample_count];
let mut right: Vec<f32> = vec![0_f32; sample_count];
// Render the waveform.
synthesizer.render(&mut left[..], &mut right[..]);
合成MIDI文件的另一个示例代码
// Load the SoundFont.
let mut sf2 = File::open("TimGM6mb.sf2").unwrap();
let sound_font = Arc::new(SoundFont::new(&mut sf2).unwrap());
// Load the MIDI file.
let mut mid = File::open("flourish.mid").unwrap();
let midi_file = Arc::new(MidiFile::new(&mut mid).unwrap());
// Create the MIDI file sequencer.
let settings = SynthesizerSettings::new(44100);
let synthesizer = Synthesizer::new(&sound_font, &settings).unwrap();
let mut sequencer = MidiFileSequencer::new(synthesizer);
// Play the MIDI file.
sequencer.play(&midi_file, false);
// The output buffer.
let sample_count = (settings.sample_rate as f64 * midi_file.get_length()) as usize;
let mut left: Vec<f32> = vec![0_f32; sample_count];
let mut right: Vec<f32> = vec![0_f32; sample_count];
// Render the waveform.
sequencer.render(&mut left[..], &mut right[..]);
待办事项
- 波形合成
- SoundFont读取器
- 波形发生器
- 包络发生器
- 低通滤波器
- 颤音LFO
- 调制LFO
- MIDI消息处理
- 音符开启/关闭
- 选择银行
- 调制
- 音量控制
- 声像
- 表情
- 保持踏板
- 程序更改
- 音高弯折
- 调音
- 效果
- 混响
- 合唱
- 其他事物
- 支持标准MIDI文件
- 支持MIDI文件循环扩展
- 性能优化
许可证
RustySynth可在MIT许可证下使用。