summaryrefslogtreecommitdiff
path: root/README.md
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/` - 設計書