18 个版本 (7 个稳定版本)
1.1.1 | 2022 年 8 月 7 日 |
---|---|
1.1.0 | 2022 年 7 月 3 日 |
1.0.4 | 2019 年 12 月 2 日 |
1.0.3 | 2019 年 7 月 5 日 |
0.4.2 | 2017 年 12 月 28 日 |
#36 在 仿真器 中
每月 31 次下载
在 5 个包中使用 (通过 zinc64-emu)
415KB
7K SLoC
resid-rs
概述
将 reSID(一个 MOS6581 SID 仿真引擎)移植到 Rust。
故事
此项目始于 2017 年 1 月左右的 zinc64(一个 Commodore 64 仿真器)。它发展到了可以供其他人使用的程度,因此被打包并作为一个独立的包发布。
使用方法
将 SID 寄存器读/写连接到 resid 后,剩下的工作就是生成音频样本并将它们推送到音频输出缓冲区。
while delta > 0 {
let (samples, next_delta) = self.resid.sample(delta, &mut buffer[..], 1);
let mut output = self.sound_buffer.lock().unwrap();
for i in 0..samples {
output.write(buffer[i]);
}
delta = next_delta;
}
组件
组件 | 状态 |
---|---|
包络 | 完成 |
外部滤波器 | 完成 |
滤波器 | 完成 |
采样器 | 完成 |
样条 | 完成 |
波形 | 完成 |
Sid | 完成 |
变更日志
- 0.3 - 与原始 resid 兼容
- 0.4 - 完全采样器支持
- 0.5 - 由于重采样而大大缩小了性能差距
- 0.6 - SIMD 优化
- 0.7 - 持续集成和 GPLv3
- 0.8 - 文档和 API 优化/内部清理
- 0.9 - 迁移到 Rust 2018
- 1.0 - 支持 no_std
- 1.1 - 更符合 Rust 习惯的实现,移除了内部可变性并改进了对 async rust 的支持
致谢
- 感谢 Dag Lem 提供的 reSID 实现
- 感谢 Daniel Collin 鼓励我发布这个项目并帮助优化代码
- Commodore 的人们为构建标志性的 8 位机器
- Rust 开发者为提供了一个令人难以置信的开发语言