bigskymx-mcp
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Симптом | Причина или исправление |
| кабель или подключение |
| Nixie 2 не открыт |
поток останавливается после работы |
|
все еще остановлен при открытом 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 и считывает канал с педали.
Офлайн, педаль не нужна
Команда | Делает |
| декодировать банк пресетов |
| банк в редактируемые JSON-файлы |
| JSON-файлы обратно в банк |
| побайтовое сравнение двух банков |
Работа с протоколом
Команда | Делает |
| просканировать пространство кодов операций SysEx (требуется |
| отправить один запрос SysEx, сохранить ответ (требуется |
| перестроить карту CC, наблюдая за педалью |
| пройтись по каждой реверберационной машине |
| выдать себя за педаль, чтобы захватить то, что отправляет Nixie |
| сидеть между Nixie и педалью |
scripts/full_review.py устанавливает каждый параметр каждой машины на обоих движках и проверяет отчет педали. Проходит 299/303; четыре сбоя — это INF MIX, у которого нет CC.
Использование с Claude
claude mcp add bigsky -- /full/path/to/.venv/bin/bigsky-mcpClaude Desktop, в claude_desktop_config.json:
{
"mcpServers": {
"bigsky": {
"command": "/full/path/to/.venv/bin/bigsky-mcp"
}
}
}Путь должен быть абсолютным. Клиент запускает сервер и не наследует вашу оболочку.
Инструмент | Делает | Только чтение | Разрушительное |
| прочитать загруженный пресет и оба движка | да | нет |
| 12 реверберационных машин | да | нет |
| параметры одной машины, диапазоны и варианты | да | нет |
| установить любое количество параметров на любом движке | нет | нет |
| вызвать слот, 0-299 | нет | да, отбрасывает несохраненные изменения |
| сохраненные звуковые файлы | да | нет |
| восстановить один в буфер редактирования | нет | да, отбрасывает несохраненные изменения |
| записать текущий звук в файл | нет | да, может заменить файл |
bigsky_set_params принимает всё изменение сразу и применяет его в порядке, требуемом педалью:
Общие глобалы, потому что
DUALиPERSISTперезагружают пресетТип машины
Собственные параметры этой машины
OUTPUT LEVEL,PANиINF MODE, которые переживают смену типаНепрерывные ручки
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 |
|
INF LATCH | 98 |
|
DUAL | 99 |
|
Аппаратное управление | 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 на все, что не реализовано.
Код операции | Ответ | Что это |
| 14 байт | Чтение ESN. Зонд устройства Nixie. |
|
| Неопознано. Слово версии или возможностей. |
| (тишина) | Данные. Тишина означает "отправить полезную нагрузку". |
|
| Принято и выполнено, без изменения передней панели. Неопознано. |
| (тишина) | Распознано, хочет полезную нагрузку. |
все остальное |
| Не реализовано. |
Набор команд gen-1 исчез. Все эти NAK:
Код операции | Был |
| записать патч |
| запросить патч |
| войти в режим сохранения |
| получить текущее состояние |
Только 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.
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