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:波形类型,包括 SINESQUARESAWTOOTHTRIANGLE
    • DrumType:鼓点类型,包括 KICKSNAREHIHATNOISE
    • 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
  • 修复 NOICENOISE 拼写错误。
  • 修复 Melody.apm 追加类型不一致。
  • generate_wave / generate_drums 增加越界与负时间保护。

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

chippymu-0.5.2.tar.gz (23.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

chippymu-0.5.2-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file chippymu-0.5.2.tar.gz.

File metadata

  • Download URL: chippymu-0.5.2.tar.gz
  • Upload date:
  • Size: 23.8 kB
  • Tags: Source
  • Uploaded using 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}

File hashes

Hashes for chippymu-0.5.2.tar.gz
Algorithm Hash digest
SHA256 fb8ed921837e326ea802b053dfe3a21bcf584f6220030854f9e051c49490fe7b
MD5 8357fd7f433e54d767f4bf732ecd801e
BLAKE2b-256 fb94a4585cd4c9dd5ae96c9928b17d36379954557b1044f5100d1d438d8f0b2e

See more details on using hashes here.

File details

Details for the file chippymu-0.5.2-py3-none-any.whl.

File metadata

  • Download URL: chippymu-0.5.2-py3-none-any.whl
  • Upload date:
  • Size: 8.8 kB
  • Tags: Python 3
  • Uploaded using 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}

File hashes

Hashes for chippymu-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b932a3085cb397c7e834ac6ebd78decbecfd8233add3dddb61c3b23e138c964d
MD5 2ea662fdbfe0b55e6eea391f7022cd87
BLAKE2b-256 02b2fc2df076e140d37054822cb740f7fdb8df28080f8245db185f1ffe50864c

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.5.2 This release

2 files

0.5.1

2 files

0.5.0

2 files

0.4.0

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page