Skip to main content
Glama
levinelson

bigskymx-mcp

by levinelson

bigskymx-mcp

Steuere ein Strymon BigSky MX über USB-MIDI, von der Kommandozeile oder von Claude aus.

Erste Schritte

Du benötigst:

  • Nixie 2, Strymons kostenloser Editor

  • Python 3.10 oder neuer

  • git

Entwickelt und getestet auf macOS. Es sollte überall funktionieren, wo python-rtmidi läuft; unter Linux sind ALSA-Entwicklungsheader erforderlich, falls pip es aus dem Quellcode bauen muss.

1. Schließe das Pedal an deinen Computer an

2. Öffne Nixie 2 und lasse es laufen

Ein frisch verbundenes Pedal sendet keine MIDI-Daten, bis eine Editorsitzung existiert. Nixie beeinträchtigt dieses Tool nicht.

3. Installation

git clone https://github.com/levinelson/bigskymx-mcp.git
cd bigskymx-mcp
python3 -m venv .venv
.venv/bin/pip install -e ".[mcp]"

Füge [mcp] hinzu, wenn du nur die Kommandozeile benötigst. Dadurch wird bigsky in .venv/bin abgelegt, nicht in deinem PATH; uv tool install . oder pipx install . installiert bigsky systemweit. Beispiele unten verwenden den einfachen Namen.

4. Prüfe die Funktion

.venv/bin/bigsky ports      # BigSkyMX should be listed and auto-detected
.venv/bin/bigsky state      # prints the loaded preset and both engines

Symptom

Ursache oder Lösung

ports listet BigSkyMX nicht

Kabel oder Verbindung

ports findet es, state sagt, es sendet nicht

Nixie 2 ist nicht geöffnet

Der Stream stoppt nach dem Arbeiten

bigsky preset 0 startet neu

Immer noch gestoppt bei geöffnetem Nixie

Nixie beenden

Related MCP server: midi-mcp

Befehle

Tägliche Nutzung

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

Auswahlparameter verwenden Namen, nicht Nummern. --channel ist standardmäßig auto und liest den Kanal vom Pedal.

Offline, ohne Pedal

Befehl

Funktion

bigsky show DATEI.syx

Ein Preset-Bank dekodieren

bigsky export DATEI.syx VERZ/

Bank in bearbeitbare JSON-Dateien exportieren

bigsky build VERZ/ DATEI.syx

JSON-Dateien zurück in eine Bank konvertieren

bigsky diff A.syx B.syx

Byte-Diff zweier Bänke

Arbeit am Protokoll

Befehl

Funktion

bigsky probe

Den SysEx-Opcode-Bereich durchsuchen (erfordert --yes)

bigsky dump

Eine SysEx-Anfrage senden, die Antwort speichern (erfordert --yes)

bigsky discover-cc

Die CC-Tabelle durch Beobachten des Pedals neu erstellen

bigsky verify-types

Jede Hallmaschine durchgehen

bigsky emulate

Das Pedal imitieren, um zu erfassen, was Nixie sendet

bigsky proxy

Zwischen Nixie und dem Pedal sitzen

scripts/full_review.py setzt jeden Parameter jeder Maschine auf beiden Engines und prüft den Bericht des Pedals. Es besteht 299/303; die vier Fehlschläge sind INF MIX, das kein CC hat.

Verwendung mit Claude

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

Claude Desktop, in claude_desktop_config.json:

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

Der Pfad muss absolut sein. Der Client startet den Server und erbt nicht deine Shell.

Tool

Funktion

Schreibgeschützt

Zerstörend

bigsky_get_state

Das geladene Preset und beide Engines auslesen

ja

nein

bigsky_list_machines

Die 12 Hallmaschinen auflisten

ja

nein

bigsky_describe_machine

Parameter, Bereiche und Auswahl einer Maschine

ja

nein

bigsky_set_params

Beliebige Anzahl Parameter auf beiden Engines setzen

nein

nein

bigsky_recall_preset

Einen Slot abrufen, 0-299

nein

ja, verwirft ungespeicherte Änderungen

bigsky_list_preset_files

Gespeicherte Sounddateien auflisten

ja

nein

bigsky_load_preset_file

Eine Datei in den Bearbeitungspuffer laden

nein

ja, verwirft ungespeicherte Änderungen

bigsky_save_preset_file

Den aktuellen Sound in eine Datei schreiben

nein

ja, kann eine Datei ersetzen

bigsky_set_params nimmt eine gesamte Änderung auf einmal und wendet sie in der vom Pedal geforderten Reihenfolge an:

  1. Gemeinsame globale Parameter, da DUAL und PERSIST das Preset neu laden

  2. Der Maschinentyp

  3. Die eigenen Parameter dieser Maschine

  4. OUTPUT LEVEL, PAN und INF MODE, die einen Typwechsel überleben

  5. Die kontinuierlichen Regler

bigsky_save_preset_file verweigert das Überschreiben einer vorhandenen Datei, es sei denn, es wird zweimal gefragt.

Setze BIGSKY_PRESETS in der env-Umgebung des Servers, um Sounds an einem anderen Ort als presets/ zu speichern.

Was es nicht kann

  • In einem nummerierten Slot speichern. Ich habe keine MIDI-Nachricht gefunden, die dies tut. Wähle einen Sound ein und speichere ihn manuell auf dem Pedal oder in Nixie.

  • INF MIX setzen. Es ist in Strymons Schema, aber in keiner CC-Tabelle.

  • PARAM 1 und PARAM 2 zuweisen. CC 19-22 steuern das, was bereits zugewiesen ist; nichts adressiert die Zuweisung. Presets speichern sie als Namen, daher erscheint es einstellbar. load listet diese separat von echten Fehlschlägen auf.

Die CC-Tabelle

Transkribiert in cc.py aus dem Handbuch (Rev B, Seiten 70-76). Skaliert bedeutet, dass CC 0-127 einen größeren internen Bereich abdeckt; direkt bedeutet, dass der CC-Wert der Wert ist und am Maximum begrenzt wird.

Parameter

Engine 1

Engine 2

Bereich

Art

Type

1

2

0-11

direkt, Maschinenindex

Decay

3

4

0-127

skaliert, ms intern

Pre-Delay

5

6

0-127

skaliert, ms intern

Output Level

7

8

0-16

direkt

Pan

9

10

0-16

direkt

Tone

11

12

0-127

skaliert auf 0-255

Mod

13

14

0-127

skaliert auf 0-255

Mix

15

16

0-127

skaliert auf 0-255

INF MODE

17

18

0-2

direkt, freeze / infinite / off

Param1

19

20

0-127

skaliert, steuert den zugewiesenen Regler

Param2

21

22

0-127

skaliert, steuert den zugewiesenen Regler

Low End

23

24

0-20

direkt

MIDI Clock (Magneto)

31

32

0-1

direkt

Maschinenspezifische Parameter sind in cc.MACHINE_CC.

Gemeinsame Steuerung

CC

Werte

Boost

79

0-60

Persist

84

EIN, AUS

INF LATCH

98

MOMENTARY, LATCHING

DUAL

99

AUS, PARALLEL, SERIE 1 >> 2, SERIE 1 << 2, SPLIT 1L * 2R, SPLIT 1R * 2L

Hardwaresteuerung

CC

Anmerkungen

Bank hoch / runter

80 / 81

auch die Fußschalter A und B

Infinite-Fußschalter

82

fungiert als physischer Schalter

Wertegeber

83

ändert das geladene Preset

Infinite ein / aus

97

Expression

100

Tap

101

Bypass

102

Falle: Das blinde Durchsuchen von CCs trifft auf 83 und tauscht das Preset stillschweigend aus, während du etwas testest.

Zwei Korrekturen am Handbuch, beide hardware-seitig bestätigt:

  • Persist ist invertiert. Das Handbuch sagt 0 = Aus. Das Pedal meldet CC 84 = 0 als EIN.

  • Shimmer Shift 2 ist CC 73/74, nicht das gedruckte 72/73, was mit Shift 1 kollidiert.

Das Frame-Format

Presets und Status sind UTF-8-JSON in SysEx.

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

Die Bytereihenfolge ist Produkt, dann Gerät, dann Opcode.

Das JSON beginnt immer bei Byte 14. Suche nicht nach der ersten {: Die Bytes 12-13 enthalten die Länge, und ein niederwertiges Byte von 0x7B ist selbst ein ASCII {, daher beginnt die Suche ein Byte zu früh und die Analyse schlägt fehl. Dies tritt auf, wenn die Gesamtlänge modulo 128 123 beträgt. Verwende sysex.payload_json.

Die beiden Richtungen verwenden unterschiedliche Header-Längen. Pedal-zu-Rechner sind 14 Bytes vor dem JSON. Rechner-zu-Pedal sind 10, ohne Längenbytes: 00 01 55 18 01 39 00 01 01 01 dann das JSON.

Status-Frames können partiell sein, ein Parameter nach dem anderen:

{ "state": { "channel": [{ "TYPE": "CLOUD", "LOW END": 10 }, {}] } }

Opcodes

Das Pedal antwortet mit 0x46 auf alles, was es nicht implementiert.

Opcode

Antwort

Was es ist

0x21

14 Bytes

ESN auslesen. Nixies Geräteabfrage.

0x32

00 01 00 00

Unbekannt. Versions- oder Fähigkeitswort.

0x39

(stumm)

Daten. Stumm bedeutet "sende eine Nutzlast".

0x56

0x45 (ACK)

Akzeptiert und ausgeführt, keine Frontplattenänderung. Unbekannt.

0x00

(stumm)

Erkannt, möchte eine Nutzdaten.

alles andere

0x46

Nicht implementiert.

Die Gen-1-Befehle sind verschwunden. Diese alle NAK:

Opcode

war

0x62

Patch schreiben

0x63

Patch anfordern

0x64

Speichermodus betreten

0x22

Aktuellen Status abrufen

Nur 0x21 wurde übernommen. Alle vier sind für TimeLine, Mobius und Gen-1 BigSky in Strymons eigenem Bibliothekar strymon/spl dokumentiert, in spl/DcMidiDevDefs.h.

0x4A wählt einen Slot aus. Es ist kein Speichervorgang, und Nixie sendet die identische Nachricht, wenn du auf ein Preset in seiner Liste klickst.

Fallstricke

  • Das Pedal ignoriert jede Nachricht auf einem anderen MIDI-Kanal als dem eigenen, ohne Fehler. Ein falscher Kanal sieht genauso aus wie eine funktionierende Verbindung.

  • Schreibvorgänge erfolgen über CC. Das Zurücksenden des eigenen Status-Frames an das Pedal funktioniert ebenfalls und erreicht die volle interne Auflösung, hört aber nach einer Weile auf zu wirken und kehrt stillschweigend zurück. live.set_param setzt dies immer noch aus.

  • Ein JSON-Status-Schreibvorgang ignoriert einen Wert von 0 und belässt den alten Wert.

  • Der Maschinentyp kann nicht durch einen JSON-Schreibvorgang geändert werden. Dafür wird CC 1/2 benötigt.

  • DUAL und PERSIST veranlassen das Pedal, das Preset neu zu laden, wodurch vorherige Änderungen rückgängig gemacht werden. Setze zuerst globale Parameter.

  • Das Pedal spiegelt das Gesendete zurück, bevor es seine eigenen Grenzen anwendet. Eine zu schnelle Überprüfung meldet daher Erfolg für einen Wert, der dann begrenzt wird.

  • Das Auslesen des Streams ohne Leeren liefert eine veraltete Momentaufnahme.

  • Das erneute Senden einer Programmänderung für das aktuelle Preset lädt es nicht neu.

  • Decay und Pre-Delay sind Millisekunden auf einer nichtlinearen, maschinenspezifischen Kurve, daher wird der CC-Wert gesucht und nicht berechnet. Mix, Tone und Mod landen innerhalb eines CC-Schritts der Anfrage.

Sicherheit

Firmware-Updates verwenden Opcode 0x43. Alles hier bleibt bei 0x39, daher kann nichts einen Flash auslösen. probe und dump können undokumentierte Opcodes senden und sind hinter --yes geschützt.

Führe bigsky backup out/ vor Experimenten aus.

Eigene Sounds

presets/ wird leer ausgeliefert und ist in .gitignore. Alles, was du dort ablegst, wird von bigsky load und den MCP-Preset-Tools erkannt.

Nicht mit Strymon verbunden

Hierbei handelt es sich um unabhängige Interoperabilitätsarbeit, die weder von Strymon autorisiert noch gebilligt wurde. Strymon, BigSky und Nixie sind Markenzeichen ihrer Eigentümer. Alles hier stammt aus der Beobachtung eines Pedals, das mir gehört, sowie aus dem veröffentlichten Handbuch, mit Ausnahme von bigsky/schema.json, das aus der Nixie 2-Binärdatei abgeleitet wurde.

Geschrieben von Claude Code.

Lizenz

MIT. Siehe 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