bigskymx-mcp
bigskymx-mcp
通过 USB MIDI 控制 Strymon BigSky MX,可从命令行或从 Claude 使用。
入门
您需要:
Nixie 2,Strymon 的免费编辑器
Python 3.10 或更新版本
git
在 macOS 上开发并测试。它应该可以在任何 python-rtmidi 支持的系统上运行;在 Linux 上,如果 pip 需要从源代码构建,则需要 ALSA 开发头文件。
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"
}
}
}路径必须是绝对路径。客户端启动服务器,不会继承您的 shell。
工具 | 功能 | 只读 | 破坏性 |
| 读取加载的预设和两个引擎 | 是 | 否 |
| 列出 12 个混响机型 | 是 | 否 |
| 描述一个机型的参数、范围和选项 | 是 | 否 |
| 在任一引擎上设置任意数量的参数 | 否 | 否 |
| 调用一个插槽,0-299 | 否 | 是,丢弃未保存的编辑 |
| 列出现有的音色文件 | 是 | 否 |
| 将音色恢复到编辑缓冲区 | 否 | 是,丢弃未保存的编辑 |
| 将当前音色写入文件 | 否 | 是,可以替换文件 |
bigsky_set_params 一次性接收整个更改,并按踏板要求的顺序应用:
共享全局参数,因为
DUAL和PERSIST会重新加载预设机型
该机型自身的参数
OUTPUT LEVEL、PAN和INF MODE,这些在机型更改后保留连续旋钮
bigsky_save_preset_file 拒绝替换已存在的文件,除非被要求两次。
在服务器的 env 中设置 BIGSKY_PRESETS,以将音色保存在 presets/ 之外的其他位置。
它不能做什么
存储到编号插槽。 我还没有找到执行此操作的 MIDI 消息。调好音色后,在踏板上或 Nixie 中手动保存。
设置
INF MIX。 它出现在 Strymon 的模式中,但不在任何 CC 表中。分配 PARAM 1 和 PARAM 2。 CC 19-22 驱动已经分配的内容;没有任何内容寻址分配本身。预设将其存储为一个名称,因此看似可设置。
load将这些与真正的失败分开列出。
CC 映射表
从手册(Rev B,第 70-76 页)转录到 cc.py 中。缩放 表示 CC 0-127 覆盖更广的内部范围;直接 表示 CC 值就是值本身,并在最大值处钳制。
参数 | 引擎 1 | 引擎 2 | 范围 | 类型 |
类型 (Type) | 1 | 2 | 0-11 | 直接,机型索引 |
衰减 (Decay) | 3 | 4 | 0-127 | 缩放,内部以毫秒为单位 |
预延迟 (Pre-Delay) | 5 | 6 | 0-127 | 缩放,内部以毫秒为单位 |
输出电平 (Output Level) | 7 | 8 | 0-16 | 直接 |
声像 (Pan) | 9 | 10 | 0-16 | 直接 |
音色 (Tone) | 11 | 12 | 0-127 | 缩放到 0-255 |
调制 (Mod) | 13 | 14 | 0-127 | 缩放到 0-255 |
混合 (Mix) | 15 | 16 | 0-127 | 缩放到 0-255 |
无限模式 (INF MODE) | 17 | 18 | 0-2 | 直接,freeze / infinite / off |
参数1 (Param1) | 19 | 20 | 0-127 | 缩放,驱动已分配的旋钮 |
参数2 (Param2) | 21 | 22 | 0-127 | 缩放,驱动已分配的旋钮 |
低频端 (Low End) | 23 | 24 | 0-20 | 直接 |
MIDI 时钟 (Magneto) | 31 | 32 | 0-1 | 直接 |
机型特定参数位于 cc.MACHINE_CC。
共享控制 | CC | 取值 |
Boost | 79 | 0-60 |
Persist | 84 |
|
INF LATCH | 98 |
|
DUAL | 99 |
|
硬件控制 | CC | 说明 |
库上/下 | 80 / 81 | 也是 A 和 B 脚钉开关 |
无限脚钉开关 | 82 | 充当物理开关 |
数值编码器 | 83 | 更改已加载的预设 |
无限开/关 | 97 | |
表情踏板 | 100 | |
打点 (Tap) | 101 | |
旁通 (Bypass) | 102 |
陷阱:盲目扫描 CC 会命中 83,并悄然将预设从您正在测试的内容下换出。
针对手册的两处修正,均在硬件上确认:
Persist 是反向的。 手册说 0 = 关闭。踏板报告 CC 84 = 0 为 ON。
Shimmer Shift 2 是 CC 73/74,而非印刷的 72/73,后者与 Shift 1 冲突。
帧格式
预设和状态是 SysEx 内的 UTF-8 JSON。
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 {,因此搜索会从字节 13 开始,导致解析失败。当总长度模 128 为 123 时就会发生这种情况。请使用 sysex.payload_json。
两个方向使用不同的头部长度。 踏板到主机:JSON 之前有 14 个字节。主机到踏板:10 个字节,没有长度字节:00 01 55 18 01 39 00 01 01 01 后接 JSON。
状态帧可以是部分,一次一个参数:
{ "state": { "channel": [{ "TYPE": "CLOUD", "LOW END": 10 }, {}] } }操作码
对于它未实现的内容,踏板回复 0x46。
操作码 | 回复 | 含义 |
| 14 个字节 | 读取 ESN。Nixie 的设备探测。 |
|
| 未识别。版本或能力字。 |
| (静默) | 数据。静默意味着“发送有效载荷”。 |
|
| 已接受并执行,前面板无变化。未识别。 |
| (静默) | 已识别,需要有效载荷。 |
其他任何操作码 |
| 未实现。 |
第一代命令集已消失。以下全部返回 NAK:
操作码 | 原来是 |
| 写入预制音色 |
| 请求预制音色 |
| 进入保存模式 |
| 获取当前状态 |
只有 0x21 被保留。这四个命令都在 Strymon 自己的库 strymon/spl 中为 TimeLine、Mobius 和第一代 BigSky 记录在 spl/DcMidiDevDefs.h 中。
0x4A 选择一个插槽。它不是保存,Nixie 在您点击其列表中的预设时发送相同的消息。
注意事项
踏板会忽略其自身 MIDI 通道以外的任何消息,无错误提示。错误的通道看起来就像正常连接一样。
写入通过 CC 完成。将踏板自身的状态帧发回也可以工作,并达到完整的内部分辨率,但一段时间后会停止应用并悄然恢复。
live.set_param仍然暴露了这一点。JSON 状态写入会忽略值为
0的情况,保留旧值。无法通过 JSON 写入更改机型。需要使用 CC 1/2。
DUAL和PERSIST会使踏板重新加载预设,恢复之前所做的编辑。请先设置全局参数。踏板在应用自身限制之前会回显您发送的内容,因此过于快速的验证会报告成功,但该值随后会被钳制。
读取流而不清空会返回过时的快照。
为当前预设重新发送程序更改不会重新加载它。
衰减和预延迟是基于每个机型的非线性曲线上的毫秒值,因此 CC 值是通过搜索而非计算得出的。Mix、Tone 和 Mod 落在请求值的 ±1 CC 步长内。
安全
固件更新使用操作码 0x43。此处所有内容都停留在 0x39,因此不会触发闪存。probe 和 dump 可以发送未记录的操作码,并通过 --yes 进行保护。
在实验前运行 bigsky backup out/。
您自己的音色
presets/ 初始为空,并且被 git 忽略。您放在里面的任何内容都会被 bigsky load 和 MCP 预设工具识别。
与 Strymon 无关
这是独立的互操作性工作,未经 Strymon 授权或认可。Strymon、BigSky 和 Nixie 是其各自所有者的商标。这里的所有内容均来自对我自己拥有的踏板以及已发布手册的观察,除了 bigsky/schema.json,它源自 Nixie 2 binary。
Written by Claude Code.
License
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