- MIDI 音符映射:通过枚举类将 MIDI 音高值与音名绑定。
- 多种波形支持:包括正弦波、方波、三角波和锯齿波。
- 基本鼓组支持:Kick、Snare、Hi-hat 等常见打击乐器模拟。
- 通道生成器:支持旋律和鼓声分别生成独立通道。
- 后处理与播放:混音、音量控制、裁剪与播放功能。
- ️参数配置系统:灵活定义采样率、BPM 和时长等音频参数。
from chippymu.models import Note, WaveType, Melody
from chippymu.configs import BasicParams
from chippymu.channelgen import generate_wave
from chippymu.sound import post_processing, play
from numpy import ndarray
params = BasicParams(sample_rate=16000, bpm=90, length=4)
melody = Melody()
basic_melody: list[tuple[float, Note, float]] = [(0.0, Note.C4, 1.0), (2.0, Note.E4, 1.0), (3.0, Note.G4, 1.0)]
melody.apm(basic_melody, 0.0)
wave: ndarray = generate_wave(melody=melody, wave_type=WaveType.SINE, params=params)
channels: list[ndarray] = [wave,]
volumes: list[float] = [0.8,]
mixed: ndarray = post_processing(channels=channels, volumes=volumes, params=params)
play(data=mixed, params=params)
from chippymu.models import DrumType
from chippymu.configs import BasicParams
from chippymu.channelgen import generate_drums
from chippymu.sound import post_processing, play
from numpy import ndarray
params = BasicParams(sample_rate=16000, bpm=90, length=4)
drums: list[tuple[float, DrumType, float]] = [(0.0, DrumType.KICK, 0.1), (1.0, DrumType.HIHAT, 0.2), (2.0, DrumType.SNARE, 0.2)]
drum_audio: ndarray = generate_drums(drums=drums, params=params)
channels: list[ndarray] = [drum_audio,]
volumes: list[float] = [0.8,]
mixed = post_processing(channels=channels, volumes=volumes, params=params)
play(data=mixed, params=params)
-
models 模块:定义了 MIDI 音符映射、波形类型和鼓点类型。
- WaveType:波形类型,包括
SINE、SQUARE、SAWTOOTH 和 TRIANGLE。
- DrumType:鼓点类型,包括
KICK、SNARE、HIHAT 和 NOISE。
- Note:MIDI 音高枚举,将音名映射到 MIDI 音符编号。
-
configs 模块:定义了参数配置,包括采样率、每分钟节拍数、总时长。
- sample_rate:采样率,默认为 16000 Hz。
- bpm:每分钟节拍数,默认为 90。
- length:总时长(以拍数为单位)。
-
utils 模块:工具函数集合。
note_to_freq:将音符对象转换为频率。
basic_wave_gen:生成基本波形。
basic_drum_gen:生成基本鼓声。
-
channelgen模块:通道生成器。
generate_wave: 生成波形通道。
generate_drums: 生成鼓声通道。
-
sound模块:后处理与播放。
post_processing: 混音、裁剪、量化等。
play: 使用sounddevice播放音频。
- 将noise从波形移动至鼓声,保持一致的创建方式。
- 更新README.md以符合类型标注。
- 修改了混音基准长度的计算方法。
- 将sound模块的函数改为不能传位置参数
- 增加了Melody类,用于按开始位置拼接短音片段。
Note 枚举改为标准 MIDI 命名并扩展至 C0~B7。
post_processing 输出改为 float32(内部仍为 8-bit 量化风格)。
- 新增包级公共 API 导出与 CLI 入口
chippymu。
- 修复
NOICE → NOISE 拼写错误。
- 修复
Melody.apm 追加类型不一致。
generate_wave / generate_drums 增加越界与负时间保护。