bigskymx-mcp
bigskymx-mcp
USB MIDI経由でStrymon BigSky MXを、コマンドラインまたはClaudeから制御します。
はじめに
必要なもの:
Nixie 2、Strymonの無料エディタ
Python 3.10以降
git
macOSで開発・テスト済みです。python-rtmidiが動作する環境であればどこでも動作するはずです。Linuxの場合は、pipがソースからビルドする必要がある場合、ALSA開発用ヘッダーが必要です。
1. ペダルをコンピュータに接続する
2. Nixie 2を開き、起動したままにする
新しく接続されたペダルは、エディタセッションが存在するまでMIDIを送信しません。Nixieはこのツールに干渉しません。
3. インストール
git clone https://github.com/levinelson/bigskymx-mcp.git
cd bigskymx-mcp
python3 -m venv .venv
.venv/bin/pip install -e ".[mcp]"コマンドラインのみが必要な場合は [mcp] を省略します。これにより bigsky が .venv/bin に配置されますが、PATHには追加されません。uv tool install . または pipx install . を実行すると、システム全体でプレーンな bigsky コマンドが利用可能になります。以下の例では、単に bigsky と記述しています。
4. 動作確認
.venv/bin/bigsky ports # BigSkyMX should be listed and auto-detected
.venv/bin/bigsky state # prints the loaded preset and both engines症状 | 原因または修正 |
| ケーブルまたは接続の問題 |
| Nixie 2 が開かれていない |
動作後にストリームが停止する |
|
Nixieを開いたままでも停止したまま | Nixie を終了する |
Related MCP server: rc505mk2-mcp
コマンド
日常使用
bigsky ports # list MIDI ports, show auto-detect
bigsky state # read the loaded preset
bigsky state --config # read global settings
bigsky param TYPE NONLINEAR --engine 1 # switch reverb machine
bigsky param SHAPE BOUNCE --engine 1 # machine-specific, by name
bigsky param Decay 100 --engine 1 # 0-127, scaled to the full range
bigsky param DUAL "SERIES 1 >> 2" # routing
bigsky param "INF MODE" INFINITE --engine 1
bigsky preset 42 # recall a slot, 0-299
bigsky load "presets/PAD.json" # restore a sound to the edit buffer
bigsky backup out/ # every slot to JSON plus a .syx
bigsky machines # every machine and its parameters
bigsky monitor # print incoming MIDI選択パラメータは数値ではなく名前を取ります。--channel のデフォルトは auto で、ペダルからチャンネルを読み取ります。
オフライン(ペダル不要)
コマンド | 動作 |
| プリセットバンクをデコード |
| バンクを編集可能なJSONファイルに変換 |
| JSONファイルからバンクに戻す |
| 2つのバンクのバイトレベル差分を表示 |
プロトコル作業
コマンド | 動作 |
| SysExオペコード空間をスイープ( |
| 1つのSysExリクエストを送信し、応答を保存( |
| ペダルを監視してCCマップを再構築 |
| すべてのリバーブマシンを順に見ていく |
| ペダルになりすましてNixieが送信する内容をキャプチャ |
| Nixieとペダルの間で仲介 |
scripts/full_review.py は、両エンジンの全マシンの全パラメータを設定し、ペダルの報告を確認します。299/303が合格します。失敗する4つは INF MIX で、これにはCCがありません。
Claudeでの使用
claude mcp add bigsky -- /full/path/to/.venv/bin/bigsky-mcpClaude Desktopの claude_desktop_config.json に記述:
{
"mcpServers": {
"bigsky": {
"command": "/full/path/to/.venv/bin/bigsky-mcp"
}
}
}パスは絶対パスである必要があります。クライアントがサーバーを起動し、シェルは継承しません。
ツール | 動作 | 読み取り専用 | 破壊的 |
| ロードされたプリセットと両エンジンを読み取る | はい | いいえ |
| 12のリバーブマシン | はい | いいえ |
| 1つのマシンのパラメータ、範囲、選択肢 | はい | いいえ |
| 任意の数のパラメータをどちらかのエンジンに設定 | いいえ | いいえ |
| スロットを呼び出す(0-299) | いいえ | はい(未保存の編集を破棄) |
| 保存されたサウンドファイル | はい | いいえ |
| 1つを編集バッファに復元 | いいえ | はい(未保存の編集を破棄) |
| 現在のサウンドをファイルに書き込む | いいえ | はい(ファイルを置き換える可能性あり) |
bigsky_set_params は変更全体を一度に受け取り、ペダルが必要とする順序で適用します:
共有グローバル(
DUALとPERSISTはプリセットを再読み込みするため)マシンタイプ
そのマシンのパラメータ
OUTPUT LEVEL、PAN、INF MODE(タイプ変更後も維持される)連続ノブ
bigsky_save_preset_file は、2回確認を求められない限り既存のファイルを置き換えません。
サーバーの env に BIGSKY_PRESETS を設定すると、presets/ 以外の場所にサウンドを保存できます。
できないこと
番号付きスロットへの保存。 これを行うMIDIメッセージは見つかっていません。サウンドを調整したら、ペダルまたはNixieで手動で保存してください。
INF MIXの設定。 Strymonのスキーマにはありますが、どのCCテーブルにもありません。PARAM 1とPARAM 2の割り当て。 CC 19-22は既に割り当てられているものを制御しますが、割り当て自体を操作するものはありません。プリセットは名前として保存するため、設定可能に見えます。
loadはこれらを実際の失敗とは別にリストします。
CCマップ
cc.py にマニュアル(Rev B、70-76ページ)から転記されています。スケーリング はCC 0-127がより広い内部範囲をカバーすることを意味し、直接 はCC値がそのまま値として使用され、最大値でクリップされることを意味します。
パラメータ | エンジン1 | エンジン2 | 範囲 | 種類 |
Type | 1 | 2 | 0-11 | 直接、マシンインデックス |
Decay | 3 | 4 | 0-127 | スケーリング、内部ではms |
Pre-Delay | 5 | 6 | 0-127 | スケーリング、内部ではms |
Output Level | 7 | 8 | 0-16 | 直接 |
Pan | 9 | 10 | 0-16 | 直接 |
Tone | 11 | 12 | 0-127 | 0-255にスケーリング |
Mod | 13 | 14 | 0-127 | 0-255にスケーリング |
Mix | 15 | 16 | 0-127 | 0-255にスケーリング |
INF MODE | 17 | 18 | 0-2 | 直接、freeze / infinite / off |
Param1 | 19 | 20 | 0-127 | スケーリング、割り当てられたノブを駆動 |
Param2 | 21 | 22 | 0-127 | スケーリング、割り当てられたノブを駆動 |
Low End | 23 | 24 | 0-20 | 直接 |
MIDI Clock (Magneto) | 31 | 32 | 0-1 | 直接 |
マシン固有のパラメータは cc.MACHINE_CC にあります。
共有コントロール | CC | 値 |
Boost | 79 | 0-60 |
Persist | 84 |
|
INF LATCH | 98 |
|
DUAL | 99 |
|
ハードウェアコントロール | CC | 備考 |
Bank up / down | 80 / 81 | A/Bフットスイッチでもある |
Infinite footswitch | 82 | 物理スイッチとして機能 |
Value encoder | 83 | ロードされたプリセットを変更 |
Infinite on / off | 97 | |
Expression | 100 | |
Tap | 101 | |
Bypass | 102 |
注意点:CCを盲目的にスイープすると83にヒットし、テスト中のプリセットが静かにすり替わります。
マニュアルに対する2つの修正事項(両方ともハードウェアで確認済み):
Persistは反転しています。 マニュアルでは0 = Offとされていますが、ペダルはCC 84 = 0をONとして報告します。
Shimmer Shift 2はCC 73/74であり、記載されている72/73ではありません(Shift 1と衝突します)。
フレームフォーマット
プリセットと状態はSysEx内のUTF-8 JSONです。
F0 00 01 55 18 01 39 00 01 01 01 00 00 LL LL {"...json..."} F7
|________| | | | | | | |___|
Strymon | | | | | | total length, 7-bit big endian
mfr ID | | | | | payload type: 01=state 02=config 06=preset
| | | | verb: 01=data 02=request 4A=select a slot
| | | 7F on a preset, 00 on state/config
| | opcode 0x39 = data (0x43 = firmware update; avoid)
| device id 0x01
product 0x18 = BigSky MXバイト順は製品、デバイス、オペコードです。
JSONは常に14バイト目から始まります。 最初の { を検索しないでください。12-13バイト目に長さが格納されており、0x7B の下位バイトはそれ自体がASCIIの { であるため、検索が1バイト早く始まりパースに失敗します。これは全長 mod 128 が123の場合に発生します。sysex.payload_json を使用してください。
双方向で異なるヘッダ長を使用します。 ペダル→ホストはJSONの前に14バイト。ホスト→ペダルは10バイトで、長さバイトはありません。00 01 55 18 01 39 00 01 01 01 の後にJSONが続きます。
状態フレームは部分的で、一度に1パラメータの場合があります:
{ "state": { "channel": [{ "TYPE": "CLOUD", "LOW END": 10 }, {}] } }オペコード
ペダルは実装されていないものに対して 0x46 を返します。
オペコード | 応答 | 説明 |
| 14 bytes | ESNの読み取り。Nixieのデバイスプローブ。 |
|
| 未識別。バージョンまたは機能ワード。 |
| (無音) | データ。無音は「ペイロードを送信」を意味します。 |
|
| 受け入れられ実行されました。フロントパネルに変化はありません。未識別。 |
| (無音) | 認識されました。ペイロードが必要です。 |
その他 |
| 未実装。 |
第1世代のコマンドセットは廃止されました。以下はすべてNAKします:
オペコード | かつての機能 |
| パッチの書き込み |
| パッチの要求 |
| 保存モードに入る |
| 現在の状態の取得 |
引き継がれたのは 0x21 のみです。4つすべては、Strymonの公式ライブラリアン strymon/spl の spl/DcMidiDevDefs.h に、TimeLine、Mobius、第1世代BigSky用として文書化されています。
0x4A はスロットを選択します。保存ではなく、Nixieがリスト内のプリセットをクリックしたときに同じメッセージを送信します。
注意点
ペダルは自身のMIDIチャンネル以外のすべてのメッセージをエラーなしで無視します。間違ったチャンネルは正常な接続とまったく同じように見えます。
書き込みはCC経由で行われます。ペダルに自身の状態フレームを送り返すことも機能し、完全な内部解像度に達しますが、しばらくすると適用が停止し、静かに元に戻ります。
live.set_paramはそれをまだ公開しています。JSON状態書き込みは値
0を無視し、古い値を残します。マシンタイプはJSON書き込みでは変更できません。CC 1/2が必要です。
DUALとPERSISTはペダルにプリセットを再読み込みさせ、その前に行われた編集を元に戻します。最初にグローバルを設定してください。ペダルは自身の制限を適用する前に送信された内容をエコーバックするため、あまりに早く確認すると、後でクランプされる値に対して成功を報告します。
ドレインせずにストリームを読み取ると、古いスナップショットが返されます。
現在のプリセットに対してプログラムチェンジを再送信しても、再読み込みされません。
DecayとPre-Delayは非線形のマシンごとのカーブ上のミリ秒であるため、CC値は計算ではなく検索されます。Mix、Tone、Modはリクエストの1CCステップ以内に収まります。
安全性
ファームウェアアップデートはオペコード 0x43 を使用します。ここでのすべての操作は 0x39 に留まるため、フラッシュをトリガーすることはありません。probe と dump は文書化されていないオペコードを送信する可能性があり、--yes で保護されています。
実験前に bigsky backup out/ を実行してください。
自分で作ったサウンド
presets/ は空で出荷され、gitignoreされています。そこに配置したものはすべて bigsky load およびMCPプリセットツールで認識されます。
Strymonとの提携はありません
これは独立した相互運用性に関する作業であり、Strymonによる承認や推奨を受けたものではありません。Strymon、BigSky、Nixieは各権利者の商標です。ここにあるすべての情報は、私が所有するペダルの観察と公開マニュアルから得たものです。ただし、bigsky/schema.jsonはNixie 2バイナリから派生したものです。
Claude Codeによって作成されました。
ライセンス
MIT。 LICENSE を参照してください。
This server cannot be deployed
Maintenance
Related MCP Connectors
Use your Mac, Windows or Linux computer from ChatGPT, Claude or Codex: files, commands, documents.
Generate AI music via the Lacuna Music API from MCP clients like Claude Desktop & Code.
Work on your own computers from Claude or ChatGPT: run commands, edit and search files.
Hosted BigQuery MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables LLMs like Claude to control Elektron Digitone synthesizers via MIDI, supporting sound design with Wavetone engine and various filters, envelopes, effects, and LFOs.25 PyPI97MIT
- AlicenseNot gradedqualityCmaintenanceEnables controlling a Roland RC-505mk2 loop station via natural language, allowing creation and upload of FX rack presets to the device over USB.4MIT
- FlicenseNot gradedqualityBmaintenanceEnables controlling a Behringer FLOW 8 mixer via Claude Code chat using USB MIDI, with tools for channels, buses, FX, snapshots, tap tempo, aliases, and audio-hotkeys slots, while tracking shadow state since the mixer does not report status back.-
- AlicenseNot gradedqualityBmaintenanceLets AI assistants control a NUX MG-30 guitar processor over USB MIDI by picking amp, cab, drive, modulation, delay and reverb models, toggling blocks, and setting knobs by name. It can also read, save, rename, back up and restore presets on the device, and apply whole tone recipes from JSON patch files.36 PyPIMIT