View on GitHub

mmlabc-to-smf

mmlabc-to-smf

mmlabc-to-smf

Music Macro Language (MML) から Standard MIDI File (SMF) への変換ツール

Japanese English

概要

このプロジェクトは、Music Macro Language形式の文字列を、包括的なデバッグ出力を備えた4パスアーキテクチャを使用してStandard MIDI Fileに変換します。

特徴

必要要件

インストール

pip install -r requirements.txt

使い方

基本的な使い方

python mml_to_smf.py "cde"

これにより、MML文字列”cde”(音符C、D、E)が以下のように変換されます:

カスタム出力ファイル

python mml_to_smf.py "cde" -o my_song.mid

サポートされる音符

現在、基本的な音符名をサポートしています:cdefgab

実行例

$ python mml_to_smf.py "cde"
Converting MML: cde
Pass 1: Parsing MML...
  Generated 3 tokens → pass1_tokens.json
Pass 2: Creating AST...
  Generated AST with 3 notes → pass2_ast.json
Pass 3: Creating MIDI events...
  Generated 6 events → pass3_events.json
Pass 4: Creating MIDI file...
  Generated MIDI file → output.mid

Conversion complete!
Output files:
  - pass1_tokens.json (debug)
  - pass2_ast.json (debug)
  - pass3_events.json (debug)
  - output.mid (final output)

プロジェクト構成

mmlabc-to-smf/
├── src/
│   ├── pass1_parser.py    # パス1: MML解析
│   ├── pass2_ast.py        # パス2: AST作成
│   ├── pass3_events.py     # パス3: イベント生成
│   └── pass4_midi.py       # パス4: MIDIファイル作成
├── tests/
│   ├── test_pass1.py       # パス1のユニットテスト
│   ├── test_pass2.py       # パス2のユニットテスト
│   ├── test_pass3.py       # パス3のユニットテスト
│   ├── test_pass4.py       # パス4のユニットテスト
│   └── test_integration.py # 統合テスト
├── mml_to_smf.py          # メインCLIスクリプト
├── requirements.txt        # Python依存関係
└── README.md              # このファイル

テスト

すべてのテストを実行:

python -m unittest discover -s tests -p "test_*.py" -v

特定のテストファイルを実行:

python -m unittest tests.test_integration

開発

このプロジェクトはテスト駆動開発(TDD)の原則に従っています:

  1. 各モジュールは約100行以下に抑えられています
  2. 各パスには対応するユニットテストがあります
  3. 統合テストは完全なパイプラインを検証します
  4. トラブルシューティングのために各段階でデバッグJSON出力があります

ライセンス

詳細はLICENSEファイルを参照してください。

※英語版README.mdは、README.ja.mdを元にGeminiの翻訳でGitHub Actionsにより自動生成しています