Metadata-Version: 2.4
Name: wav_music_gen
Version: 1.0.0
Summary: 纯标准库 WAV 音乐生成器（零依赖，含 Tkinter GUI）
Author: siwpan
License-Expression: MIT
Project-URL: Homepage, https://gitee.com/siwpan/wav_music_gen
Project-URL: Repository, https://gitee.com/siwpan/wav_music_gen
Project-URL: Changelog, https://gitee.com/siwpan/wav_music_gen/blob/master/CHANGELOG.md
Keywords: music,wav,generator,synthesis,markov,midi
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# AutoWav — 随机 WAV 音乐生成器

> 仓库：<https://gitee.com/siwpan/wav_music_gen> ｜ 许可：MIT（见 [LICENSE](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** — 图形界面，零外部依赖

## 快速开始

```bash
# 零依赖！仅需 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  # 生成的音乐文件
```
