Skip to main content
Glama
levinelson

bigskymx-mcp

by levinelson

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

症状

原因または修正

portsBigSkyMX を表示しない

ケーブルまたは接続の問題

ports で検出されるが、state がブロードキャストしていないと報告する

Nixie 2 が開かれていない

動作後にストリームが停止する

bigsky preset 0 で再開する

Nixieを開いたままでも停止したまま

Nixie を終了する

Related MCP server: midi-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 で、ペダルからチャンネルを読み取ります。

オフライン(ペダル不要)

コマンド

動作

bigsky show FILE.syx

プリセットバンクをデコード

bigsky export FILE.syx DIR/

バンクを編集可能なJSONファイルに変換

bigsky build DIR/ FILE.syx

JSONファイルからバンクに戻す

bigsky diff A.syx B.syx

2つのバンクのバイトレベル差分を表示

プロトコル作業

コマンド

動作

bigsky probe

SysExオペコード空間をスイープ(--yes が必要)

bigsky dump

1つのSysExリクエストを送信し、応答を保存(--yes が必要)

bigsky discover-cc

ペダルを監視してCCマップを再構築

bigsky verify-types

すべてのリバーブマシンを順に見ていく

bigsky emulate

ペダルになりすましてNixieが送信する内容をキャプチャ

bigsky proxy

Nixieとペダルの間で仲介

scripts/full_review.py は、両エンジンの全マシンの全パラメータを設定し、ペダルの報告を確認します。299/303が合格します。失敗する4つは INF MIX で、これにはCCがありません。

Claudeでの使用

claude mcp add bigsky -- /full/path/to/.venv/bin/bigsky-mcp

Claude Desktopの claude_desktop_config.json に記述:

{
  "mcpServers": {
    "bigsky": {
      "command": "/full/path/to/.venv/bin/bigsky-mcp"
    }
  }
}

パスは絶対パスである必要があります。クライアントがサーバーを起動し、シェルは継承しません。

ツール

動作

読み取り専用

破壊的

bigsky_get_state

ロードされたプリセットと両エンジンを読み取る

はい

いいえ

bigsky_list_machines

12のリバーブマシン

はい

いいえ

bigsky_describe_machine

1つのマシンのパラメータ、範囲、選択肢

はい

いいえ

bigsky_set_params

任意の数のパラメータをどちらかのエンジンに設定

いいえ

いいえ

bigsky_recall_preset

スロットを呼び出す(0-299)

いいえ

はい(未保存の編集を破棄)

bigsky_list_preset_files

保存されたサウンドファイル

はい

いいえ

bigsky_load_preset_file

1つを編集バッファに復元

いいえ

はい(未保存の編集を破棄)

bigsky_save_preset_file

現在のサウンドをファイルに書き込む

いいえ

はい(ファイルを置き換える可能性あり)

bigsky_set_params は変更全体を一度に受け取り、ペダルが必要とする順序で適用します:

  1. 共有グローバル(DUALPERSIST はプリセットを再読み込みするため)

  2. マシンタイプ

  3. そのマシンのパラメータ

  4. OUTPUT LEVELPANINF MODE(タイプ変更後も維持される)

  5. 連続ノブ

bigsky_save_preset_file は、2回確認を求められない限り既存のファイルを置き換えません。

サーバーの envBIGSKY_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

ON, OFF

INF LATCH

98

MOMENTARY, LATCHING

DUAL

99

OFF, PARALLEL, SERIES 1 >> 2, SERIES 1 << 2, SPLIT 1L * 2R, SPLIT 1R * 2L

ハードウェアコントロール

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 を返します。

オペコード

応答

説明

0x21

14 bytes

ESNの読み取り。Nixieのデバイスプローブ。

0x32

00 01 00 00

未識別。バージョンまたは機能ワード。

0x39

(無音)

データ。無音は「ペイロードを送信」を意味します。

0x56

0x45 (ACK)

受け入れられ実行されました。フロントパネルに変化はありません。未識別。

0x00

(無音)

認識されました。ペイロードが必要です。

その他

0x46

未実装。

第1世代のコマンドセットは廃止されました。以下はすべてNAKします:

オペコード

かつての機能

0x62

パッチの書き込み

0x63

パッチの要求

0x64

保存モードに入る

0x22

現在の状態の取得

引き継がれたのは 0x21 のみです。4つすべては、Strymonの公式ライブラリアン strymon/splspl/DcMidiDevDefs.h に、TimeLine、Mobius、第1世代BigSky用として文書化されています。

0x4A はスロットを選択します。保存ではなく、Nixieがリスト内のプリセットをクリックしたときに同じメッセージを送信します。

注意点

  • ペダルは自身のMIDIチャンネル以外のすべてのメッセージをエラーなしで無視します。間違ったチャンネルは正常な接続とまったく同じように見えます。

  • 書き込みはCC経由で行われます。ペダルに自身の状態フレームを送り返すことも機能し、完全な内部解像度に達しますが、しばらくすると適用が停止し、静かに元に戻ります。live.set_param はそれをまだ公開しています。

  • JSON状態書き込みは値 0 を無視し、古い値を残します。

  • マシンタイプはJSON書き込みでは変更できません。CC 1/2が必要です。

  • DUALPERSIST はペダルにプリセットを再読み込みさせ、その前に行われた編集を元に戻します。最初にグローバルを設定してください。

  • ペダルは自身の制限を適用する前に送信された内容をエコーバックするため、あまりに早く確認すると、後でクランプされる値に対して成功を報告します。

  • ドレインせずにストリームを読み取ると、古いスナップショットが返されます。

  • 現在のプリセットに対してプログラムチェンジを再送信しても、再読み込みされません。

  • DecayとPre-Delayは非線形のマシンごとのカーブ上のミリ秒であるため、CC値は計算ではなく検索されます。Mix、Tone、Modはリクエストの1CCステップ以内に収まります。

安全性

ファームウェアアップデートはオペコード 0x43 を使用します。ここでのすべての操作は 0x39 に留まるため、フラッシュをトリガーすることはありません。probedump は文書化されていないオペコードを送信する可能性があり、--yes で保護されています。

実験前に bigsky backup out/ を実行してください。

自分で作ったサウンド

presets/ は空で出荷され、gitignoreされています。そこに配置したものはすべて bigsky load およびMCPプリセットツールで認識されます。

Strymonとの提携はありません

これは独立した相互運用性に関する作業であり、Strymonによる承認や推奨を受けたものではありません。Strymon、BigSky、Nixieは各権利者の商標です。ここにあるすべての情報は、私が所有するペダルの観察と公開マニュアルから得たものです。ただし、bigsky/schema.jsonはNixie 2バイナリから派生したものです。

Claude Codeによって作成されました。

ライセンス

MIT。 LICENSE を参照してください。

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    An MCP server that enables AI models to control electronic music instruments by sending MIDI messages to hardware synths and drum machines. It supports various MIDI commands including notes, control changes, and system exclusive messages through USB or DIN MIDI interfaces.
    10
  • A
    license
    -
    quality
    C
    maintenance
    Enables LLMs like Claude to control Elektron Digitone synthesizers via MIDI, supporting sound design with Wavetone engine and various filters, envelopes, effects, and LFOs.
    97
    MIT

View all related MCP servers

Related MCP Connectors

  • Generate AI music via the Lacuna Music API from MCP clients like Claude Desktop & Code.

  • Manage SRG+ hubs, channels, content, assets, users, and workspaces from any MCP-aware AI agent.

  • MCP connector that lets ChatGPT list, search, and run your Apple Shortcuts via a local Mac agent

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/levinelson/bigskymx-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server