#emulation #ay-3-8910 #zx-spectrum #ym2149 #yamaha

psg

快速且精确的 AY-3-8910 和 YM2149 音频芯片模拟

2 个稳定版本

1.0.1 2023 年 1 月 25 日
1.0.0 2023 年 1 月 24 日

#151模拟器

Download history 6/week @ 2024-03-13 10/week @ 2024-03-27 11/week @ 2024-04-03 12/week @ 2024-06-05 93/week @ 2024-06-12 13/week @ 2024-06-19 25/week @ 2024-06-26

143 每月下载量
fbd_sequencer_cli 中使用

MIT 许可证

50KB
670

PSG - Rust 中的 AY-3-8910 和 YM2149 模拟

PSG 包提供对通用仪器 AY-3-8910 可编程声音发生器芯片及其最受欢迎的克隆芯片 Yamaha YM2149 的快速且高度精确的模拟。

这些 PSG 芯片被用于 20 世纪 80 年代和 90 年代初一些最受欢迎的家用电脑中,例如 MSX 系列、Sinclair ZX Spectrum 和 Atari ST。

这个 PSG 芯片的特定实现专门为模拟和音乐制作(例如 tracker)软件而构建,并附带许多有用的额外功能,以帮助编写此类应用程序。这些包括易于进行周期/频率转换的数学函数、MIDI 音符的转换,以及直接设置寄存器值的 API,以及公开 PSG 芯片每个单独属性的 API。

使用方法

要在您的项目中开始使用 PSG 模拟器,请将以下行添加到您的 Cargo 依赖项中

psg = "1.0.0"

之后,只需初始化一个新的 PSG 结构体,设置一些寄存器,并在循环中开始渲染

// Initialize a new PSG with a clock rate of an MSX machine and a sampling rate of 44100 Hz.
let mut psg = PSG::new(1789772.5, 44100)?;

// Set some registers.
let channel = psg.channel_mut(0);
channel.set_period(100);
channel.set_amplitude(8);
channel.set_tone_disabled(false);

// Render a second of audio.
for _ in 0..44100 {
    let (left, right) = psg.render();

    // Do something useful with the samples here, such as writing to a file or playing on an
    // audio device.
}

有关如何使用该包的更详细信息,请参阅 PSG 结构体的文档,它是该包的工作马。

致谢

该包基于 Peter Sovietov 的优秀 Ayumi,并包括几个错误修复和改进,同时在与原始实现相比时保持样本精确。

许可证

与原始 Ayumi 实现一样,该模拟器和本包中的所有其他代码均在 MIT 许可证下发布。

无运行时依赖