bigskymx-mcp
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 enginesSymptom | Ursache oder Lösung |
| Kabel oder Verbindung |
| Nixie 2 ist nicht geöffnet |
Der Stream stoppt nach dem Arbeiten |
|
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 MIDIAuswahlparameter verwenden Namen, nicht Nummern. --channel ist standardmäßig auto und liest den Kanal vom Pedal.
Offline, ohne Pedal
Befehl | Funktion |
| Ein Preset-Bank dekodieren |
| Bank in bearbeitbare JSON-Dateien exportieren |
| JSON-Dateien zurück in eine Bank konvertieren |
| Byte-Diff zweier Bänke |
Arbeit am Protokoll
Befehl | Funktion |
| Den SysEx-Opcode-Bereich durchsuchen (erfordert |
| Eine SysEx-Anfrage senden, die Antwort speichern (erfordert |
| Die CC-Tabelle durch Beobachten des Pedals neu erstellen |
| Jede Hallmaschine durchgehen |
| Das Pedal imitieren, um zu erfassen, was Nixie sendet |
| 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-mcpClaude 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 |
| Das geladene Preset und beide Engines auslesen | ja | nein |
| Die 12 Hallmaschinen auflisten | ja | nein |
| Parameter, Bereiche und Auswahl einer Maschine | ja | nein |
| Beliebige Anzahl Parameter auf beiden Engines setzen | nein | nein |
| Einen Slot abrufen, 0-299 | nein | ja, verwirft ungespeicherte Änderungen |
| Gespeicherte Sounddateien auflisten | ja | nein |
| Eine Datei in den Bearbeitungspuffer laden | nein | ja, verwirft ungespeicherte Änderungen |
| 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:
Gemeinsame globale Parameter, da
DUALundPERSISTdas Preset neu ladenDer Maschinentyp
Die eigenen Parameter dieser Maschine
OUTPUT LEVEL,PANundINF MODE, die einen Typwechsel überlebenDie 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 MIXsetzen. 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.
loadlistet 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 |
|
INF LATCH | 98 |
|
DUAL | 99 |
|
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 MXDie 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 |
| 14 Bytes | ESN auslesen. Nixies Geräteabfrage. |
|
| Unbekannt. Versions- oder Fähigkeitswort. |
| (stumm) | Daten. Stumm bedeutet "sende eine Nutzlast". |
|
| Akzeptiert und ausgeführt, keine Frontplattenänderung. Unbekannt. |
| (stumm) | Erkannt, möchte eine Nutzdaten. |
alles andere |
| Nicht implementiert. |
Die Gen-1-Befehle sind verschwunden. Diese alle NAK:
Opcode | war |
| Patch schreiben |
| Patch anfordern |
| Speichermodus betreten |
| 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_paramsetzt dies immer noch aus.Ein JSON-Status-Schreibvorgang ignoriert einen Wert von
0und belässt den alten Wert.Der Maschinentyp kann nicht durch einen JSON-Schreibvorgang geändert werden. Dafür wird CC 1/2 benötigt.
DUALundPERSISTveranlassen 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.
This server cannot be installed
Maintenance
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
- Flicense-qualityCmaintenanceEnables control of the Elektron Digitakt II drum machine through MIDI commands. Supports triggering drum sounds, adjusting parameters, switching patterns, and sending note sequences programmatically.7
- FlicenseAqualityDmaintenanceAn 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
- Flicense-qualityCmaintenanceEnables natural language control of Ableton Live through Claude, including session management, track and clip creation, device parameter adjustment, and browser browsing.1
- Alicense-qualityCmaintenanceEnables LLMs like Claude to control Elektron Digitone synthesizers via MIDI, supporting sound design with Wavetone engine and various filters, envelopes, effects, and LFOs.97MIT
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
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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