Skip to main content

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

Project description

一个用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 增加越界与负时间保护。

Project details


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.1.tar.gz (23.7 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.1-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: chippymu-0.5.1.tar.gz
  • Upload date:
  • Size: 23.7 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.1.tar.gz
Algorithm Hash digest
SHA256 b75a3c626209faefb888b9c335bc75fbd3b0a7a8fe14d9d6d721f50e77f2aa80
MD5 cdc9d92b401ad3cc302798e7f70bdd08
BLAKE2b-256 8ee0a70951ec1d205ba0f779047c6513edbe902617419bc0e2e68a98dde3fa1c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chippymu-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 8.6 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9df4aa045c54117650b524dffade9c074c5b013dd5a53a8d301288845fa2c8c9
MD5 0beb1220dba4c9594418782c4d6682a7
BLAKE2b-256 4da496a56f7844a13502f65a9290459abd15f2d4d7185fdf9b910af1ebad5603

See more details on using hashes here.

Supported by

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