bigskymx-mcp
bigskymx-mcp
Controla un Strymon BigSky MX mediante USB MIDI, desde la línea de comandos o desde Claude.
Primeros pasos
Necesitas:
Nixie 2, el editor gratuito de Strymon
Python 3.10 o superior
git
Desarrollado y probado en macOS. Debería funcionar en cualquier lugar donde funcione python-rtmidi; en Linux eso significa los encabezados de desarrollo de ALSA si pip tiene que compilarlo desde el código fuente.
1. Conecta el pedal a tu computadora
2. Abre Nixie 2 y déjalo ejecutándose
Un pedal recién conectado no envía MIDI hasta que exista una sesión de editor. Nixie no interfiere con esta herramienta.
3. Instalación
git clone https://github.com/levinelson/bigskymx-mcp.git
cd bigskymx-mcp
python3 -m venv .venv
.venv/bin/pip install -e ".[mcp]"Omite [mcp] si solo quieres la línea de comandos. Esto coloca bigsky en .venv/bin, no en tu PATH; uv tool install . o pipx install . te da un bigsky simple en cualquier lugar. Los ejemplos a continuación usan el nombre simple.
4. Verifica que funciona
.venv/bin/bigsky ports # BigSkyMX should be listed and auto-detected
.venv/bin/bigsky state # prints the loaded preset and both enginesSíntoma | Causa o solución |
| cable o conexión |
| Nixie 2 no está abierto |
el flujo se detiene después de funcionar |
|
sigue detenido con Nixie abierto | cierra Nixie |
Related MCP server: midi-mcp
Comandos
Uso diario
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 MIDILos parámetros de opción toman nombres, no números. --channel por defecto es auto y lee el canal del pedal.
Sin conexión, sin necesidad de pedal
Comando | Función |
| decodificar un banco de presets |
| banco a archivos JSON editables |
| archivos JSON de vuelta a un banco |
| diff de bytes entre dos bancos |
Trabajando en el protocolo
Comando | Función |
| explorar el espacio de opcodes SysEx (necesita |
| enviar una solicitud SysEx, guardar la respuesta (necesita |
| reconstruir el mapa CC observando el pedal |
| recorrer cada máquina de reverberación |
| suplantar al pedal para capturar lo que Nixie envía |
| situarse entre Nixie y el pedal |
scripts/full_review.py establece cada parámetro de cada máquina en ambos motores y verifica el informe del pedal. Pasa 299/303; los cuatro fallos son INF MIX, que no tiene CC.
Uso con Claude
claude mcp add bigsky -- /full/path/to/.venv/bin/bigsky-mcpClaude Desktop, en claude_desktop_config.json:
{
"mcpServers": {
"bigsky": {
"command": "/full/path/to/.venv/bin/bigsky-mcp"
}
}
}La ruta debe ser absoluta. El cliente inicia el servidor y no hereda tu shell.
Herramienta | Función | Solo lectura | Destructivo |
| leer el preset cargado y ambos motores | sí | no |
| las 12 máquinas de reverberación | sí | no |
| parámetros, rangos y opciones de una máquina | sí | no |
| establecer cualquier número de parámetros en cualquier motor | no | no |
| recuperar un slot, 0-299 | no | sí, descarta ediciones no guardadas |
| archivos de sonido guardados | sí | no |
| restaurar uno al búfer de edición | no | sí, descarta ediciones no guardadas |
| escribir el sonido actual en un archivo | no | sí, puede reemplazar un archivo |
bigsky_set_params toma todo el cambio de una vez y lo aplica en el orden que requiere el pedal:
Variables globales compartidas, porque
DUALyPERSISTrecargan el presetEl tipo de máquina
Los parámetros propios de esa máquina
OUTPUT LEVEL,PANeINF MODE, que sobreviven a un cambio de tipoLos potenciómetros continuos
bigsky_save_preset_file se niega a reemplazar un archivo existente a menos que se le pida dos veces.
Establece BIGSKY_PRESETS en el env del servidor para mantener los sonidos en otro lugar que no sea presets/.
Lo que no puede hacer
Guardar en un slot numerado. No he encontrado un mensaje MIDI que haga esto. Marca un sonido y luego guárdalo manualmente en el pedal o en Nixie.
Establecer
INF MIX. Está en el esquema de Strymon y en ninguna tabla CC.Asignar PARAM 1 y PARAM 2. CC 19-22 controlan lo que ya esté asignado; nada aborda la asignación. Los presets lo almacenan como un nombre, por lo que parece configurable.
loadlos lista por separado de los fallos reales.
El mapa CC
Transcrito en cc.py del manual (Rev B, páginas 70-76). Escalado significa que CC 0-127 abarca un rango interno más amplio; directo significa que el valor CC es el valor y se limita al máximo.
Parámetro | Motor 1 | Motor 2 | Rango | Tipo |
Tipo | 1 | 2 | 0-11 | directo, índice de máquina |
Decaimiento | 3 | 4 | 0-127 | escalado, ms internamente |
Pre-Retardo | 5 | 6 | 0-127 | escalado, ms internamente |
Nivel de Salida | 7 | 8 | 0-16 | directo |
Panorámica | 9 | 10 | 0-16 | directo |
Tono | 11 | 12 | 0-127 | escalado a 0-255 |
Modulación | 13 | 14 | 0-127 | escalado a 0-255 |
Mezcla | 15 | 16 | 0-127 | escalado a 0-255 |
MODO INF | 17 | 18 | 0-2 | directo, congelar / infinito / apagado |
Param1 | 19 | 20 | 0-127 | escalado, controla el potenciómetro asignado |
Param2 | 21 | 22 | 0-127 | escalado, controla el potenciómetro asignado |
Graves | 23 | 24 | 0-20 | directo |
Reloj MIDI (Magneto) | 31 | 32 | 0-1 | directo |
Los parámetros específicos de la máquina están en cc.MACHINE_CC.
Control compartido | CC | Toma |
Boost | 79 | 0-60 |
Persistir | 84 |
|
INF LATCH | 98 |
|
DUAL | 99 |
|
Control de hardware | CC | Notas |
Banco arriba / abajo | 80 / 81 | también los interruptores de pie A y B |
Interruptor de pie infinito | 82 | actúa como el interruptor físico |
Codificador de valor | 83 | cambia el preset cargado |
Infinito encendido / apagado | 97 | |
Expresión | 100 | |
Tap | 101 | |
Bypass | 102 |
Trampa: barrer CCs a ciegas golpea 83 e intercambia silenciosamente el preset debajo de lo que sea que estés probando.
Dos correcciones al manual, ambas confirmadas en hardware:
Persistir está invertido. El manual dice 0 = Apagado. El pedal reporta CC 84 = 0 como ENCENDIDO.
Shimmer Shift 2 es CC 73/74, no el impreso 72/73, que choca con Shift 1.
El formato de trama
Los presets y el estado son UTF-8 JSON dentro de 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 MXEl orden de bytes es producto, luego dispositivo, luego opcode.
El JSON comienza en el byte 14, siempre. No busques el primer {: los bytes 12-13 llevan la longitud, y un byte bajo de 0x7B es en sí mismo un { ASCII, por lo que la búsqueda comienza un byte antes y el análisis falla. Esto sucede cada vez que la longitud total módulo 128 es 123. Usa sysex.payload_json.
Las dos direcciones usan diferentes longitudes de encabezado. Pedal-a-anfitrión tiene 14 bytes antes del JSON. Anfitrión-a-pedal tiene 10, sin bytes de longitud: 00 01 55 18 01 39 00 01 01 01 luego el JSON.
Las tramas de estado pueden ser parciales, un parámetro a la vez:
{ "state": { "channel": [{ "TYPE": "CLOUD", "LOW END": 10 }, {}] } }Opcodes
El pedal responde 0x46 a cualquier cosa que no implemente.
Opcode | Respuesta | Qué es |
| 14 bytes | Leer ESN. Sonda de dispositivo de Nixie. |
|
| No identificado. Palabra de versión o capacidad. |
| (silencio) | Datos. Silencio significa "enviar un payload". |
|
| Aceptado y ejecutado, sin cambio en el panel frontal. No identificado. |
| (silencio) | Reconocido, quiere un payload. |
cualquier otra cosa |
| No implementado. |
El conjunto de comandos de primera generación ha desaparecido. Todos estos responden NAK:
Opcode | Era |
| escribir parche |
| solicitar parche |
| entrar en modo guardar |
| obtener estado actual |
Solo 0x21 se mantuvo. Los cuatro están documentados para TimeLine, Mobius y BigSky de primera generación en el propio librero de Strymon, strymon/spl, en spl/DcMidiDevDefs.h.
0x4A selecciona un slot. No es un guardado, y Nixie envía el mensaje idéntico cuando haces clic en un preset en su lista.
Trampas
El pedal ignora cada mensaje en un canal MIDI que no sea el suyo, sin error. Un canal incorrecto se ve exactamente como una conexión que funciona.
Las escrituras se realizan a través de CC. Enviar al pedal su propia trama de estado también funciona y alcanza la resolución interna completa, pero deja de aplicarse después de un tiempo y se revierte silenciosamente.
live.set_paramaún lo expone.Una escritura JSON de estado ignora un valor de
0, dejando el valor anterior.El tipo de máquina no se puede cambiar mediante una escritura JSON. Necesita CC 1/2.
DUALyPERSISThacen que el pedal recargue el preset, revirtiendo las ediciones realizadas antes de ellos. Establece las variables globales primero.El pedal repite lo que enviaste antes de aplicar sus propios límites, por lo que verificar demasiado rápido reporta éxito para un valor que luego se recorta.
Leer el flujo sin vaciarlo devuelve una instantánea obsoleta.
Reenviar un cambio de programa para el preset actual no lo recarga.
Decaimiento y Pre-Retardo son milisegundos en una curva no lineal por máquina, por lo que el valor CC se busca en lugar de calcularse. Mezcla, Tono y Modulación caen dentro de un paso CC de la solicitud.
Seguridad
Las actualizaciones de firmware usan el opcode 0x43. Todo aquí se mantiene en 0x39, por lo que nada de esto puede desencadenar un flasheo. probe y dump pueden enviar opcodes no documentados y están protegidos por --yes.
Ejecuta bigsky backup out/ antes de experimentar.
Tus propios sonidos
presets/ se envía vacío y está en gitignore. Cualquier cosa que pongas allí es recogida por bigsky load y por las herramientas de preset MCP.
No afiliado con Strymon
Este es un trabajo independiente de interoperabilidad, no autorizado ni respaldado por Strymon. Strymon, BigSky y Nixie son marcas comerciales de su propietario. Todo aquí proviene de observar un pedal que poseo y del manual publicado, excepto bigsky/schema.json, que se derivó del binario de Nixie 2.
Escrito por Claude Code.
Licencia
MIT. Ver 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