Skip to main content
Glama
levinelson

bigskymx-mcp

by levinelson

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 engines

Síntoma

Causa o solución

ports no lista BigSkyMX

cable o conexión

ports lo encuentra, state dice que no está emitiendo

Nixie 2 no está abierto

el flujo se detiene después de funcionar

bigsky preset 0 lo reinicia

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 MIDI

Los 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

bigsky show FILE.syx

decodificar un banco de presets

bigsky export FILE.syx DIR/

banco a archivos JSON editables

bigsky build DIR/ FILE.syx

archivos JSON de vuelta a un banco

bigsky diff A.syx B.syx

diff de bytes entre dos bancos

Trabajando en el protocolo

Comando

Función

bigsky probe

explorar el espacio de opcodes SysEx (necesita --yes)

bigsky dump

enviar una solicitud SysEx, guardar la respuesta (necesita --yes)

bigsky discover-cc

reconstruir el mapa CC observando el pedal

bigsky verify-types

recorrer cada máquina de reverberación

bigsky emulate

suplantar al pedal para capturar lo que Nixie envía

bigsky proxy

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-mcp

Claude 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

bigsky_get_state

leer el preset cargado y ambos motores

no

bigsky_list_machines

las 12 máquinas de reverberación

no

bigsky_describe_machine

parámetros, rangos y opciones de una máquina

no

bigsky_set_params

establecer cualquier número de parámetros en cualquier motor

no

no

bigsky_recall_preset

recuperar un slot, 0-299

no

sí, descarta ediciones no guardadas

bigsky_list_preset_files

archivos de sonido guardados

no

bigsky_load_preset_file

restaurar uno al búfer de edición

no

sí, descarta ediciones no guardadas

bigsky_save_preset_file

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:

  1. Variables globales compartidas, porque DUAL y PERSIST recargan el preset

  2. El tipo de máquina

  3. Los parámetros propios de esa máquina

  4. OUTPUT LEVEL, PAN e INF MODE, que sobreviven a un cambio de tipo

  5. Los 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. load los 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

ON, OFF

INF LATCH

98

MOMENTARY, LATCHING

DUAL

99

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

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 MX

El 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

0x21

14 bytes

Leer ESN. Sonda de dispositivo de Nixie.

0x32

00 01 00 00

No identificado. Palabra de versión o capacidad.

0x39

(silencio)

Datos. Silencio significa "enviar un payload".

0x56

0x45 (ACK)

Aceptado y ejecutado, sin cambio en el panel frontal. No identificado.

0x00

(silencio)

Reconocido, quiere un payload.

cualquier otra cosa

0x46

No implementado.

El conjunto de comandos de primera generación ha desaparecido. Todos estos responden NAK:

Opcode

Era

0x62

escribir parche

0x63

solicitar parche

0x64

entrar en modo guardar

0x22

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_param aú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.

  • DUAL y PERSIST hacen 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.

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