mGB MIDI Sequencer
April 5, 2025 · View on GitHub
概要
mGB MIDI Sequencerは、ゲームボーイ用のMIDIシーケンサーアプリケーションです。Arduinoboyを介してmGBを操作、またはMIDIルーティングを通じてRetroPlugをコントロール可能です。 また、APIを提供しており、mGB-MCP (GitHub: mGB-MCP)と連携して使用することを前提としています。
主な特徴:
- 5トラックのシーケンサー(PU1、PU2、WAV、NOISE、POLY)
- 16ステップシーケンス
- 2連符、3連符などのノート分割設定
- パルス幅やエンベロープなどのCCパラメータコントロール
- WebSocket APIによるリモートコントロール
- HTMLクライアントによるブラウザベースのインターフェース
- MIDIクロック同期
インストール方法
必要条件
- Python 3.7以上
- 以下のPythonパッケージ:
- mido
- python-rtmidi
- websockets
- asyncio
- MIDI対応のGameBoyインターフェース(Arduinoboy、midiboy等)
インストール手順
-
ZIPファイルをダウンロードして任意の場所に解凍します。
-
必要なパッケージをインストールします:
pip install -r requirements.txt
使用方法
アプリケーションの実行
推奨される起動方法:
-
Windows:
run.bat -
Mac/Linux:
./run.sh
または、Pythonから直接実行する場合:
python wrapper.py
これによりWebSocketサーバーが起動し、シーケンサーUIとHTMLクライアントが開きます。
基本的な操作
-
シーケンスの作成:
- 各ステップをクリックしてオン/オフを切り替えます
- Shift+クリックでノート設定ダイアログを開きます
- ノート値と分割設定(1、2連符、3連符)を設定できます
-
再生コントロール:
- 再生/停止ボタンでシーケンスを開始/停止します
- BPM値を変更してテンポを調整します
-
MIDI設定:
- MIDI出力デバイスを選択します(Arduinoboyなど)
- MIDIクロック同期を有効/無効にできます
-
パラメータ調整:
- CCスライダーでパルス幅、エンベロープなどを調整できます
- 各トラックごとに異なるパラメータを設定できます
ノート分割設定
各ステップには「分割設定」があり、通常の再生(1)、2連符(2)、3連符(3)から選択できます:
- 1(通常):標準的な再生間隔
- 2(2連符):1ステップを2つに分割
- 3(3連符):1ステップを3つに分割
WebSocket API
mGB MIDI シーケンサーはWebSocket APIを提供し、外部アプリケーションからの制御が可能です。
詳細な API ドキュメントは api_documentation.md を参照してください。
WebSocket接続
ws://localhost:8765
基本的なコマンド例
// 再生/停止の切り替え
ws.send(JSON.stringify({
command: 'toggle_play'
}));
// BPMの設定
ws.send(JSON.stringify({
command: 'set_bpm',
bpm: 120
}));
// ノート設定
ws.send(JSON.stringify({
command: 'set_note',
row: 0,
col: 4,
note: 60,
divide: 2 // 2連符
}));
// CCパラメータの更新
ws.send(JSON.stringify({
command: 'update_cc',
track: 'PU1',
cc: 'cc1',
value: 64
}));
HTMLクライアント
アプリケーション起動時に自動的にHTMLクライアントがブラウザで開きます。このクライアントを使用すると、ブラウザ上でシーケンサーを制御できます。
別のデバイスからアクセスする場合は、以下のURLを使用します:
http://<サーバーのIPアドレス>:8000/midi_sequencer_client.html
トラブルシューティング
-
MIDIデバイスが見つからない場合:
- MIDIデバイスが接続されていることを確認してください
- ドライバが正しくインストールされていることを確認してください
-
WebSocket接続エラー:
- サーバーが実行されていることを確認してください
- ファイアウォールの設定を確認してください
-
パラメータ変更が効かない場合:
- api_documentation.mdの指示に従って正確なパラメータ名と値を使用してください
- CC値の範囲(0~127)を超えていないか確認してください
-
HTML/ブラウザUIが開かない場合:
- 手動でブラウザを開き、
http://localhost:8000/midi_sequencer_client.htmlにアクセスしてください - ブラウザのコンソールでエラーがないか確認してください
- 手動でブラウザを開き、
ライセンス
MIT License
謝辞
このプロジェクトは Arduinoboy および mGB 、 RetroPlug と連携して動作します。オリジナルの開発者に感謝いたします。