Skip to main content

AutoWav — 随机 WAV 音乐生成器

仓库:https://gitee.com/siwpan/wav_music_gen | 许可:MIT(见 LICENSE)

纯 Python 标准库实现,零外部依赖的 WAV 音乐生成器。

功能

  • 12 种调式 — 大调 / 自然小调 / 和声小调 / 旋律小调 / 五声大调 / 五声小调 / 布鲁斯 / 多利安 / 弗里吉亚 / 利底亚 / 混合利底亚 / 全音阶 / 半减七 / 比波普属七
  • 13 种和弦进行 — 流行 / 蓝调 / 爵士 ii-V-I / 模态 / 比波普 等
  • 6 种音色 — 钢琴 / 管风琴 / 正弦波 / 方波 / 三角波 / 锯齿波
  • ADSR 包络 — 标准起音-衰减-保持-释放曲线,自动适应极短音符
  • 混响效果 — 简单反馈延迟混响
  • 低通滤波 — RC 一阶 IIR 低频滤波
  • 动态压缩 — 音频动态范围压缩器(可配置阈值/比率/启动/释放)
  • 低音声部 — 根音 + 五音交替的自动低音轨
  • 琶音轨(Arpeggio) — 和弦分解琶音,支持上行/下行/上下行/随机模式
  • 鼓点节奏(Drum Beat) — 合成底鼓/军鼓/踩镲的简易鼓机
  • 加权马尔可夫旋律 — 音程转移按音乐理论加权,小音程概率更高,方向持续性
  • 按时长生成 — --duration N 指定目标时长(秒)
  • GZIP 压缩 — --compress 选项将 WAV 压缩为 .wav.gz
  • 批量生成 — --batch N 批量生成 N 首
  • Tkinter GUI — 图形界面,零外部依赖

快速开始

# 零依赖!仅需 Python 标准库

# 图形界面(推荐)
python gui.py

# 交互式 CLI
python autowav.py

# 随机生成一首
python autowav.py --random

# 生成约 60 秒的音乐
python autowav.py --random --duration 60

# 批量生成 5 首
python autowav.py --batch 5

命令行参数

用法:
  python autowav.py                        # 交互式模式(CLI)
  python autowav.py --random               # 随机生成
  python autowav.py --random --duration N  # 指定时长
  python autowav.py --random --compress    # GZIP 压缩
  python autowav.py --random --bars N      # 指定小节数
  python autowav.py --batch N              # 批量生成

GUI 使用说明

运行 python gui.py 启动图形界面:

  1. 左侧参数区 — 设置 BPM、小节数、调式、音色
  2. 音效选项 — 勾选低音声部/混响/动态压缩/琶音轨/鼓点节奏
  3. 鼓点复杂度 — 滑块控制(0.0 极简 → 1.0 复杂),仅勾选"鼓点节奏"时可用
  4. 右侧日志区 — 实时显示生成进度和参数
  5. 按钮 — 「生成音乐」→「播放」→「另存为」

输出

  • .wav — 标准 WAV 格式,16-bit,44100Hz,单声道
  • .wav.gz — GZIP 压缩版,体积约减少 50%

增强记录

基于乐理资料和程序生成音频技术研究进行增强(2025):

  1. 音阶扩展:从 6 个扩展到 12 个(加入和声小调、旋律小调、弗里吉亚、利底亚等)
  2. 和弦进行扩展:从 6 条扩展到 13 条(加入爵士 ii-V-I、比波普、模态进行)
  3. 旋律生成算法改进:加权马尔可夫转移概率,音程趋向更符合人类听觉习惯
  4. 琶音轨:和弦分解功能,支持多种排列模式
  5. 鼓点节奏轨:合成底鼓/军鼓/踩镲的简易鼓机
  6. Tkinter GUI:完整的图形界面,参数可视化,一键生成+播放

依赖

  • Python >= 3.8(纯标准库,零外部依赖)
  • GUI 需要 tkinter(Python 标准库自带,Windows 通常已安装)

文件结构

wav_music_gen/
├── autowav.py    # 核心:音乐生成引擎
├── gui.py         # Tkinter 图形界面
├── README.md      # 本文件
├── requirements.txt
└── music_*.wav  # 生成的音乐文件

Metadata

Release files for wav-music-gen 1.0.0

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

Source distribution (sdist)

Source distribution for wav-music-gen 1.0.0
File Size Uploaded Provenance
wav_music_gen-1.0.0.tar.gz 51.4 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for wav-music-gen 1.0.0
File Interpreter ABI Platform
wav_music_gen-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 108.3 kB

Release files / wav_music_gen-1.0.0.tar.gz

Download URL wav_music_gen-1.0.0.tar.gz
Size 51.4 kB
Tags Source
SHA-256 checksum
How to use checksums
c695649b86e5f6e35cda33dbcd7d0fcb7a03838cc4c5f2646bcd3dff91ac8e49
BLAKE2b-256 checksum
How to use checksums
035ce21129a53fc5ac5945d2f650f8b61ea034ba9cac27daa6892dd27f0be2eb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / wav_music_gen-1.0.0-py3-none-any.whl

Download URL wav_music_gen-1.0.0-py3-none-any.whl
Size 56.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ba9233f433c2e97087afe5a9aad3074dc0083b171ce5d64a904cb293b71ef9c4
BLAKE2b-256 checksum
How to use checksums
969fe73164e0085920402e43a9adf4168d42cdd22215e72a57a298b309ce5358
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Security for wav-music-gen 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files No provenance

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