Skip to main content

一个用numpy实现的8bit音乐生成器

功能特性

  • MIDI 音符映射:通过枚举类将 MIDI 音高值与音名绑定。
  • 多种波形支持:包括正弦波、方波、三角波和锯齿波。
  • 基本鼓组支持:Kick、Snare、Hi-hat 等常见打击乐器模拟。
  • 通道生成器:支持旋律和鼓声分别生成独立通道。
  • 后处理与播放:混音、音量控制、裁剪与播放功能。
  • ️参数配置系统:灵活定义采样率、BPM 和时长等音频参数。

安装方式

pip install chippymu

示例用法

播放一段旋律

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)

核心模块说明

  1. models 模块:定义了 MIDI 音符映射、波形类型和鼓点类型。

    • WaveType:波形类型,包括 SINE、SQUARE、SAWTOOTH 和 TRIANGLE。
    • DrumType:鼓点类型,包括 KICK、SNARE、HIHAT 和 NOISE。
    • Note:MIDI 音高枚举,将音名映射到 MIDI 音符编号。
  2. configs 模块:定义了参数配置,包括采样率、每分钟节拍数、总时长。

    • sample_rate:采样率,默认为 16000 Hz。
    • bpm:每分钟节拍数,默认为 90。
    • length:总时长(以拍数为单位)。
  3. utils 模块:工具函数集合。

    • note_to_freq:将音符对象转换为频率。
    • basic_wave_gen:生成基本波形。
    • basic_drum_gen:生成基本鼓声。
  4. channelgen模块:通道生成器。

    • generate_wave: 生成波形通道。
    • generate_drums: 生成鼓声通道。
  5. sound模块:后处理与播放。

    • post_processing: 混音、裁剪、量化等。
    • play: 使用sounddevice播放音频。

更新记录

0.3.0

  • 将noise从波形移动至鼓声,保持一致的创建方式。
  • 更新README.md以符合类型标注。

0.3.1

  • 修复了音符与midi音符的映射错误。

0.3.2

  • 修改了混音基准长度的计算方法。
  • 将sound模块的函数改为不能传位置参数

0.4.0

  • 增加了Melody类,用于按开始位置拼接短音片段。

0.5.0

  • Note 枚举改为标准 MIDI 命名并扩展至 C0~B7。
  • post_processing 输出改为 float32(内部仍为 8-bit 量化风格)。
  • 新增包级公共 API 导出与 CLI 入口 chippymu。
  • 修复 NOICE → NOISE 拼写错误。
  • 修复 Melody.apm 追加类型不一致。
  • generate_wave / generate_drums 增加越界与负时间保护。

Metadata

Release files for chippymu 0.5.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for chippymu 0.5.2
File Size Uploaded
chippymu-0.5.2.tar.gz 23.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for chippymu 0.5.2
File Interpreter ABI Platform
chippymu-0.5.2-py3-none-any.whl Python 3 none any Details

Total release size: 32.5 kB

Release files / chippymu-0.5.2.tar.gz

Download URL chippymu-0.5.2.tar.gz
Size 23.8 kB
Tags Source
SHA-256 checksum
How to use checksums
fb8ed921837e326ea802b053dfe3a21bcf584f6220030854f9e051c49490fe7b
BLAKE2b-256 checksum
How to use checksums
fb94a4585cd4c9dd5ae96c9928b17d36379954557b1044f5100d1d438d8f0b2e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / chippymu-0.5.2-py3-none-any.whl

Download URL chippymu-0.5.2-py3-none-any.whl
Size 8.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b932a3085cb397c7e834ac6ebd78decbecfd8233add3dddb61c3b23e138c964d
BLAKE2b-256 checksum
How to use checksums
02b2fc2df076e140d37054822cb740f7fdb8df28080f8245db185f1ffe50864c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.5.2 This release

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page