blob: 351c9c97b8c3f9119a3654b162ef3a6c1b79c086 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# mml-composemusic-mcp
ファミコン音源(2A03 APU)風のMMLをLLMに作曲させるためのMCPサーバ。
## 機能
- `compose_mml` ツールを提供
- ppmck 形式と pyxel 形式のMMLを解析・合成
- MIDIノート番号に変換後、NES APU風の矩形波/三角波/ノイズでWAV出力
- バリデーション、テンプレート生成に対応
## ツール引数
| 引数 | 説明 |
|------|------|
| `action` | `compose`, `validate`, `template` のいずれか |
| `mml` | MML文字列(compose/validate時必須) |
| `mode` | `ppmck` または `pyxel`(compose/validate時必須) |
| `template` | `basic`, `melody`, `chord`, `drum`, `empty`(action=template時) |
| `sample_rate` | WAV出力サンプリングレート(デフォルト44100) |
| `normalize` | 出力振幅の正規化(デフォルトtrue) |
## 実行
```bash
uv run mml-composemusic-mcp --output-dir ./data
```
または
```bash
uv run python -m mml_composemusic_mcp.server --output-dir ./data
```
## テスト
```bash
uv run pytest
uv run ruff check .
uv run ruff format .
```
## ディレクトリ構成
- `src/mml_composemusic_mcp/`
- `server.py` - MCPサーバ
- `lexer.py` - MML字句解析
- `parser_ppmck.py`, `parser_pyxel.py` - 構文解析
- `ir.py` - 中間表現・エラー型
- `synthesizer.py` - APU風合成・WAV出力
- `templates.py` - テンプレート
- `tests/` - テスト
- `doc/` - 設計書
|