#music #psg #audio #sequencer #ay-3-8910 #source

无std fbd_sequencer

使用PSG或AY-3-8910声音源播放音乐的序列器。支持播放.fbd序列文件。

3个不稳定版本

0.2.1 2024年8月13日
0.2.0 2024年7月1日
0.1.0 2024年6月16日

多媒体中排名85

Download history 125/week @ 2024-06-10 59/week @ 2024-06-17 15/week @ 2024-06-24 220/week @ 2024-07-01 4/week @ 2024-07-22 124/week @ 2024-08-12

每月下载量128
用于fbd_sequencer_cli

MIT/Apache

50KB
951

FBD序列器库

Crates.io Documentation Build Status Crates.io License

概述

此crate实现了一个使用PSG或AY-3-8910声音源播放音乐的序列器(.fbd)。该库本身不生成PSG波形。PSG波形的生成委托给实现了PsgTrait的外部实现。

关于.fbd文件

序列文件是扩展名为.fbd的二进制文件。它们是为PSG声音源设计的,有三个独立的通道。"FBD"这个术语没有任何特定的含义。

仓库中有几个.fbd文件,模拟使用PSG声音芯片的游戏音乐。它们都是为了模仿在PC(MSX)上使用PSG声音芯片的游戏音乐而设计的。

音乐版权:©日本Falcom公司。

目前,没有可用的工具可以从头创建.fbd文件。我们正在考虑开发将MML等格式转换为的工具。

功能

  • 软件包络(AL、AR、DR、SR、SL、RR)
  • 软件LFO(颤音)
  • 噪声周期设置
  • 输出模式设置(音调、噪声、音调 & 噪声)
  • 音调周期偏移(也称为失真)
  • 嵌套循环
  • 连接和滑音
  • 以1/60秒为单位进行精细控制

PsgTrait

此库通过以下trait生成PSG波形。

#[derive(PartialEq)]
pub enum OutputMode {
    None,
    Tone,
    Noise,
    ToneNoise,
}

pub trait PsgTrait {
    fn sample_rate(&self) -> u32;
    fn clock_rate(&self) -> u32;
    fn set_tone_period(&mut self, channel: usize, period: u16);
    fn set_volume(&mut self, channel: usize, volume: u8);
    fn set_output_mode(&mut self, channel: usize, mode: OutputMode);
    fn set_noise_period(&mut self, period: u8);
    fn next_sample_i16(&mut self) -> i16;
    #[cfg(feature = "float")]
    fn next_sample_f32(&mut self) -> f32;
}

许可证

许可在以下任一项之下

贡献

除非您明确说明,否则您有意提交的任何贡献,根据Apache-2.0许可证定义,都应如上所述双许可,不附加任何额外条款或条件。

依赖关系

~215KB