Skip to main content
Glama
levinelson

bigskymx-mcp

by levinelson

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

증상

원인 또는 해결책

portsBigSkyMX가 나열되지 않음

케이블 또는 연결 문제

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 opcode 공간 스위핑 (--yes 필요)

bigsky dump

SysEx 요청 하나를 보내고 응답 저장 (--yes 필요)

bigsky discover-cc

페달을 관찰하여 CC 맵 재구축

bigsky verify-types

모든 리버브 머신 순회

bigsky emulate

페달을 가장하여 Nixie가 보내는 내용 캡처

bigsky proxy

Nixie와 페달 사이에 위치

scripts/full_review.py는 두 엔진의 모든 머신에 대해 모든 매개변수를 설정하고 페달의 보고를 확인합니다. 299/303 통과; 4개의 실패는 CC가 없는 INF MIX입니다.

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. 공유 전역, DUALPERSIST는 프리셋을 다시 로드하기 때문

  2. 머신 유형

  3. 해당 머신의 자체 매개변수

  4. OUTPUT LEVEL, PANINF MODE (유형 변경 후에도 유지)

  5. 연속 노브

bigsky_save_preset_file은 두 번 요청하지 않으면 기존 파일을 덮어쓰지 않습니다.

서버의 envBIGSKY_PRESETS를 설정하여 사운드를 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

범위

종류

Type

1

2

0-11

direct, 머신 인덱스

Decay

3

4

0-127

scaled, 내부적으로 ms

Pre-Delay

5

6

0-127

scaled, 내부적으로 ms

Output Level

7

8

0-16

direct

Pan

9

10

0-16

direct

Tone

11

12

0-127

scaled to 0-255

Mod

13

14

0-127

scaled to 0-255

Mix

15

16

0-127

scaled to 0-255

INF MODE

17

18

0-2

direct, freeze / infinite / off

Param1

19

20

0-127

scaled, 할당된 노브 제어

Param2

21

22

0-127

scaled, 할당된 노브 제어

Low End

23

24

0-20

direct

MIDI Clock (Magneto)

31

32

0-1

direct

머신별 매개변수는 cc.MACHINE_CC에 있습니다.

공유 컨트롤

CC

Boost

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

참고

Bank up / down

80 / 81

A 및 B 풋스위치도 포함

Infinite 풋스위치

82

물리적 스위치 역할

값 인코더

83

로드된 프리셋을 변경

Infinite on / off

97

Expression

100

Tap

101

Bypass

102

주의사항: CC를 무차별 스위핑하면 83을 건드려 테스트 중인 프리셋이 조용히 교체됩니다.

매뉴얼에 대한 두 가지 수정 사항, 하드웨어에서 확인됨:

  • Persist가 반전됨. 매뉴얼에는 0 = Off라고 되어 있지만, 페달은 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

바이트 순서는 제품, 장치, 그 다음 opcode입니다.

JSON은 항상 14번째 바이트에서 시작합니다. 첫 번째 {를 찾지 마십시오: 바이트 12-13은 길이를 전달하며, 낮은 바이트가 0x7B이면 그 자체가 ASCII {이므로 검색이 한 바이트 일찍 시작되어 구문 분석이 실패합니다. 이는 총 길이 mod 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 }, {}] } }

Opcode

페달은 구현되지 않은 모든 것에 0x46으로 응답합니다.

Opcode

응답

설명

0x21

14바이트

ESN 읽기. Nixie의 장치 검색.

0x32

00 01 00 00

미확인. 버전 또는 기능 워드.

0x39

(조용함)

데이터. 조용함은 "페이로드 전송"을 의미합니다.

0x56

0x45 (ACK)

수락 및 실행됨, 전면 패널 변경 없음. 미확인.

0x00

(조용함)

인식됨, 페이로드 필요.

다른 모든 것

0x46

구현되지 않음.

1세대 명령어 세트는 사라졌습니다. 다음은 모두 NAK입니다:

Opcode

이전 기능

0x62

패치 쓰기

0x63

패치 요청

0x64

저장 모드 진입

0x22

현재 상태 가져오기

0x21만 유지되었습니다. 네 가지 모두 Strymon의 자체 라이브러리 strymon/splspl/DcMidiDevDefs.h에 TimeLine, Mobius 및 1세대 BigSky에 대해 문서화되어 있습니다.

0x4A는 슬롯을 선택합니다. 저장이 아니며, Nixie가 목록에서 프리셋을 클릭할 때 동일한 메시지를 보냅니다.

주의사항

  • 페달은 자신의 MIDI 채널이 아닌 모든 메시지를 무시하며 오류도 없습니다. 잘못된 채널은 작동하는 연결과 똑같이 보입니다.

  • 쓰기는 CC를 통해 이루어집니다. 페달에 자체 상태 프레임을 다시 보내는 것도 작동하며 전체 내부 해상도에 도달하지만, 잠시 후 적용이 중단되고 조용히 되돌아갑니다. live.set_param은 여전히 이를 노출합니다.

  • JSON 상태 쓰기는 값이 0이면 무시하고 이전 값을 유지합니다.

  • 머신 유형은 JSON 쓰기로 변경할 수 없습니다. CC 1/2가 필요합니다.

  • DUALPERSIST는 페달이 프리셋을 다시 로드하게 하여 이전에 수행한 편집 내용을 되돌립니다. 먼저 전역을 설정하세요.

  • 페달은 자체 제한을 적용하기 전에 보낸 내용을 에코하므로, 너무 빨리 확인하면 나중에 클램프되는 값이 성공한 것으로 보고됩니다.

  • 스트림을 비우지 않고 읽으면 오래된 스냅샷이 반환됩니다.

  • 현재 프리셋에 대한 프로그램 변경을 다시 보내도 다시 로드되지 않습니다.

  • Decay 및 Pre-Delay는 비선형 머신별 곡선의 밀리초이므로 CC 값은 계산되지 않고 검색됩니다. Mix, Tone 및 Mod는 요청의 CC 한 단계 이내에 위치합니다.

안전

펌웨어 업데이트는 opcode 0x43을 사용합니다. 여기서는 모든 것이 0x39에 머물므로 플래시를 트리거할 수 없습니다. probedump는 문서화되지 않은 opcode를 보낼 수 있으며 --yes 뒤에 게이트됩니다.

실험하기 전에 bigsky backup out/을 실행하세요.

나만의 사운드

presets/는 비어서 제공되며 gitignore 처리됩니다. 거기에 넣은 모든 것은 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