Skip to main content
Glama
levinelson

bigskymx-mcp

by levinelson

bigskymx-mcp

Управляйте Strymon BigSky MX через USB MIDI из командной строки или из Claude.

Начало работы

Вам потребуется:

  • Nixie 2, бесплатный редактор Strymon

  • Python 3.10 или новее

  • git

Разработано и протестировано на macOS. Должно работать везде, где работает python-rtmidi; на Linux для этого нужны заголовки разработки ALSA, если pip придется собирать из исходников.

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 в любом месте. Примеры ниже используют просто имя.

4. Проверьте, что работает

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

Симптом

Причина или исправление

ports не показывает BigSkyMX

кабель или подключение

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

побайтовое сравнение двух банков

Работа с протоколом

Команда

Делает

bigsky probe

просканировать пространство кодов операций SysEx (требуется --yes)

bigsky dump

отправить один запрос SysEx, сохранить ответ (требуется --yes)

bigsky discover-cc

перестроить карту CC, наблюдая за педалью

bigsky verify-types

пройтись по каждой реверберационной машине

bigsky emulate

выдать себя за педаль, чтобы захватить то, что отправляет Nixie

bigsky proxy

сидеть между Nixie и педалью

scripts/full_review.py устанавливает каждый параметр каждой машины на обоих движках и проверяет отчет педали. Проходит 299/303; четыре сбоя — это 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

параметры одной машины, диапазоны и варианты

да

нет

bigsky_set_params

установить любое количество параметров на любом движке

нет

нет

bigsky_recall_preset

вызвать слот, 0-299

нет

да, отбрасывает несохраненные изменения

bigsky_list_preset_files

сохраненные звуковые файлы

да

нет

bigsky_load_preset_file

восстановить один в буфер редактирования

нет

да, отбрасывает несохраненные изменения

bigsky_save_preset_file

записать текущий звук в файл

нет

да, может заменить файл

bigsky_set_params принимает всё изменение сразу и применяет его в порядке, требуемом педалью:

  1. Общие глобалы, потому что DUAL и PERSIST перезагружают пресет

  2. Тип машины

  3. Собственные параметры этой машины

  4. OUTPUT LEVEL, PAN и INF MODE, которые переживают смену типа

  5. Непрерывные ручки

bigsky_save_preset_file отказывается заменять существующий файл, если не попросить дважды.

Установите BIGSKY_PRESETS в env сервера, чтобы хранить звуки не в presets/.

Что он не может сделать

  • Сохранить в пронумерованный слот. Я не нашел MIDI-сообщения, которое это делает. Настройте звук и затем сохраните его вручную на педали или в Nixie.

  • Установить INF MIX. Он есть в схеме Strymon, но нет в таблице CC.

  • Назначить PARAM 1 и PARAM 2. CC 19-22 управляют тем, что уже назначено; ничто не адресует назначение. Пресеты хранят это как имя, так что это выглядит устанавливаемым. load перечисляет их отдельно от реальных сбоев.

Карта CC

Транскрибировано в cc.py из руководства (Rev B, страницы 70-76). Scaled означает, что CC 0-127 охватывает более широкий внутренний диапазон; direct означает, что значение CC является значением и фиксируется на максимуме.

Параметр

Движок 1

Движок 2

Диапазон

Вид

Тип

1

2

0-11

direct, индекс машины

Затухание

3

4

0-127

scaled, мс внутри

Предзадержка

5

6

0-127

scaled, мс внутри

Выходной уровень

7

8

0-16

direct

Панорама

9

10

0-16

direct

Тон

11

12

0-127

scaled до 0-255

Модуляция

13

14

0-127

scaled до 0-255

Микс

15

16

0-127

scaled до 0-255

РЕЖИМ INF

17

18

0-2

direct, freeze / infinite / off

Парам1

19

20

0-127

scaled, управляет назначенной ручкой

Парам2

21

22

0-127

scaled, управляет назначенной ручкой

Низкие частоты

23

24

0-20

direct

MIDI Clock (Magneto)

31

32

0-1

direct

Машинно-специфические параметры находятся в cc.MACHINE_CC.

Общий контроль

CC

Принимает

Усиление

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

Примечания

Банк вверх / вниз

80 / 81

также ножные переключатели A и B

Бесконечный ножной переключатель

82

действует как физический переключатель

Энкодер значения

83

изменяет загруженный пресет

Infinite вкл/выкл

97

Экспрессия

100

Tap

101

Обход

102

Подвох: слепое сканирование CC попадает на 83 и молча заменяет пресет под тем, что вы тестируете.

Два исправления к руководству, оба подтверждены на оборудовании:

  • Persist инвертирован. Руководство говорит 0 = Выкл. Педаль сообщает CC 84 = 0 как ВКЛ.

  • Shimmer Shift 2 это CC 73/74, а не напечатанные 72/73, которые конфликтуют с Shift 1.

Формат фрейма

Пресеты и состояние — это UTF-8 JSON внутри 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

Порядок байт: продукт, затем устройство, затем код операции.

JSON всегда начинается с байта 14. Не ищите первый {: байты 12-13 содержат длину, и младший байт 0x7B сам по себе является ASCII {, поэтому поиск начинается на один байт раньше и разбор не удается. Это происходит, когда общая длина mod 128 равна 123. Используйте sysex.payload_json.

Два направления используют разную длину заголовка. От педали к хосту — 14 байт перед JSON. От хоста к педали — 10, без байтов длины: 00 01 55 18 01 39 00 01 01 01 затем JSON.

Фреймы состояния могут быть частичными, по одному параметру за раз:

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

Коды операций

Педаль отвечает 0x46 на все, что не реализовано.

Код операции

Ответ

Что это

0x21

14 байт

Чтение ESN. Зонд устройства Nixie.

0x32

00 01 00 00

Неопознано. Слово версии или возможностей.

0x39

(тишина)

Данные. Тишина означает "отправить полезную нагрузку".

0x56

0x45 (ACK)

Принято и выполнено, без изменения передней панели. Неопознано.

0x00

(тишина)

Распознано, хочет полезную нагрузку.

все остальное

0x46

Не реализовано.

Набор команд gen-1 исчез. Все эти NAK:

Код операции

Был

0x62

записать патч

0x63

запросить патч

0x64

войти в режим сохранения

0x22

получить текущее состояние

Только 0x21 перешел. Все четыре документированы для TimeLine, Mobius и gen-1 BigSky в собственной библиотеке Strymon, strymon/spl, в spl/DcMidiDevDefs.h.

0x4A выбирает слот. Это не сохранение, и Nixie отправляет такое же сообщение, когда вы нажимаете на пресет в его списке.

Подводные камни

  • Педаль игнорирует любое сообщение на MIDI-канале, отличном от ее собственного, без ошибок. Неправильный канал выглядит как рабочее соединение.

  • Запись идет через CC. Отправка педали ее собственного фрейма состояния также работает и достигает полного внутреннего разрешения, но через некоторое время перестает применяться и молча возвращается. live.set_param все еще это предоставляет.

  • Запись состояния JSON игнорирует значение 0, оставляя старое значение.

  • Тип машины нельзя изменить записью JSON. Для этого нужны CC 1/2.

  • DUAL и PERSIST заставляют педаль перезагрузить пресет, отменяя изменения, сделанные до них. Сначала установите глобалы.

  • Педаль повторяет то, что вы отправили, прежде чем применить свои собственные ограничения, поэтому слишком быстрая проверка сообщает об успехе для значения, которое затем ограничивается.

  • Чтение потока без очистки возвращает устаревший снимок.

  • Повторная отправка смены программы для текущего пресета не перезагружает его.

  • Затухание и Предзадержка — это миллисекунды на нелинейной кривой для каждой машины, поэтому значение CC ищется, а не вычисляется. Mix, Tone и Mod попадают в пределах одного шага CC от запроса.

Безопасность

Обновления прошивки используют код операции 0x43. Все здесь остается на 0x39, так что ничто не может вызвать прошивку. probe и dump могут отправлять недокументированные коды операций и защищены флагом --yes.

Запустите bigsky backup out/ перед экспериментами.

Ваши собственные звуки

presets/ поставляется пустым и игнорируется git. Все, что вы туда поместите, подхватывается 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