A source-grounded Agent Skill for Midas M32 and Behringer X32 digital consoles
Exact OSC lookup · Console workflows · Effects · MIDI · Diagnostics · Offline packet tooling · Risk-gated planning
Overview · Capabilities · Install · Examples · Architecture · Validation · Security
x32-m32-osc-expert is a standalone, progressively loaded Agent Skill for technical work involving Midas M32 and Behringer X32 digital mixing consoles.
It combines console-operation knowledge with an exact, source-traceable OSC reference layer. The Skill can explain hardware and control-surface workflows, resolve documented OSC addresses and parameter types, inspect effects and MIDI mappings, encode or decode OSC packets offline, diagnose communication faults, and prepare risk-classified dry-run change plans.
The repository contains the Skill and its offline validation assets only. It does not contain an MCP server, a live console transport, a hosted API, a schema registry, or an autonomous execution service.
Core rule: Never invent undocumented commands. Never derive OSC addresses from UI labels, screenshots, menu paths, MIDI mappings, signal-flow labels, or common conventions.
X32/M32 integrations fail most often when three different concerns are mixed together:
- Console operation: what the hardware and UI actually do.
- Protocol knowledge: the exact OSC address, type, range, direction, and firmware context.
- Execution authority: whether a state-changing action is permitted, verified, and reversible.
This Skill separates those concerns. It gives an agent a dependable knowledge and validation layer without granting it network access to a console.
| Area | What the Skill provides |
|---|---|
| Console hardware | Control surface, channel strips, banks, layers, faders, encoders, rear-panel I/O, monitoring, talkback, USB, AES50, Ultranet, MIDI and power references |
| Main display and UI | Screen navigation, editable fields, meters, routing pages, setup, libraries, effects, utility functions and contextual behaviour |
| Signal flow | Inputs, buses, matrices, mains, inserts, effects, tap points, routing, monitoring and documented performance limits |
| OSC protocol | Exact address and node lookup, parameter types, argument order, ranges, units, read/write direction, replies and subscriptions |
| OSC codec | Offline encoding and decoding for documented int32, float32, string and blob forms |
| Effects | Effect inventory, slot restrictions, parameter tables, enums and documented control ranges |
| MIDI | MIDI operation, assignments, DAW-control notes and OSC-over-MIDI SysEx references |
| Diagnostics | Layered troubleshooting for identity, firmware, UDP behaviour, padding, type tags, subscriptions, client contention and state divergence |
| Safety policy | Read-before-write discipline, four-tier risk classification, dry-run planning and fail-closed handling |
| Traceability | Source file, page, section, classification, confidence, conflict and parse notes where available |
The Skill is grounded in two source families:
- The M32 manufacturer user manual for console hardware, UI, routing, effects, MIDI, specifications and block-diagram information.
- The unofficial X32/M32 OSC Remote Protocol reference for firmware 4.0 and later.
The OSC reference is operationally useful, but it is not vendor-authored and explicitly acknowledges possible inaccuracies. The Skill therefore preserves EXPLICIT, DERIVED, UNCERTAIN, CONFLICT, NOT FOUND and UNREADABLE classifications rather than silently repairing or completing the source.
See Data provenance and Licence scope.
| Dataset | Included |
|---|---|
| OSC catalogue rows | 753 |
| Explicit OSC rows | 724 |
| Quarantined uncertain rows | 29 |
| X32node paths | 337 |
| Effect inventory rows | 95 |
| Unique effect codes | 61 |
| Effect parameter rows | 705 |
| Unified data-dictionary rows | 1,906 |
| MIDI rows | 16 |
| Console signal-flow edges | 24 |
| Engineering risk entries | 10 |
| Documentation gaps | 12 |
Machine-readable catalogues are under skill/x32-m32-osc-expert/data/.
The protocol reference describes the X32/M32 family across Standard, Compact, Rack, Producer and Core variants. Coverage is not identical for every model.
| Family or model | Coverage position |
|---|---|
| Midas M32 Standard | Strongest hardware, UI and operating coverage from the manufacturer manual |
| Midas M32 Compact / M32C | Protocol-family coverage; verify model-specific surface and I/O differences |
| Midas M32 Rack / M32R | Protocol-family coverage; no full physical-surface equivalence implied |
| Behringer X32 Standard | Protocol-family and surface-control reference coverage |
| Behringer X32 Compact / X32C | Protocol-family coverage with model-specific verification required |
| Behringer X32 Producer / X32P | Protocol-family coverage with model-specific verification required |
| Behringer X32 Rack / X32RACK | Protocol-family coverage with model-specific verification required |
| Behringer X32 Core / X32CORE | Historical protocol coverage; the source notes that the model was discontinued |
Always establish the console model and firmware before preparing a state-changing plan.
flowchart LR
U[User request] --> A[AI agent]
A --> S[SKILL.md control plane]
S --> R1[Hardware and UI references]
S --> R2[OSC and node catalogues]
S --> R3[Effects, MIDI and scaling references]
S --> P[Risk and safety policy]
R1 --> O[Source-grounded answer]
R2 --> O
R3 --> O
P --> O
S --> T[Offline deterministic scripts]
T --> L[Lookup]
T --> C[Encode or decode]
T --> V[Validate dry-run plan]
L --> O
C --> O
V --> O
O --> D[Explanation, diagnosis or dry-run plan]
D -. no live transport included .-> X[External authorised executor]
The dotted boundary is deliberate. This repository does not send UDP packets, alter console state, or claim that a transmitted packet was applied.
.
├── README.md
├── LICENSE
├── LICENSE_SCOPE.md
├── SECURITY.md
├── SCOPE_BOUNDARY.md
├── NOTICE.md
├── BUILD_REPORT.md
├── CHANGELOG.md
├── docs/
│ ├── installation.md
│ ├── usage.md
│ ├── publishing.md
│ ├── data-provenance.md
│ └── scope-and-integration.md
├── scripts/
│ ├── verify_repository.py
│ ├── build_release.py
│ ├── publish_github.sh
│ └── publish_github.ps1
├── skill/
│ └── x32-m32-osc-expert/
│ ├── SKILL.md
│ ├── agents/
│ ├── references/
│ ├── data/
│ ├── scripts/
│ ├── tests/
│ ├── evals/
│ └── adapters/
└── dist/
├── skill.zip
└── SHA256SUMS
Download dist/skill.zip, then upload it through the Skills interface.
Copy the canonical Skill directory:
mkdir -p .claude/skills
cp -R skill/x32-m32-osc-expert .claude/skills/Copy the Skill to a supported project-level skills directory:
mkdir -p .github/skills
cp -R skill/x32-m32-osc-expert .github/skills/Use the platform-specific instructions under:
skill/x32-m32-osc-expert/adapters/
See the complete Installation guide.
Find the documented OSC schema for channel 1 fader.
Return the address as printed, type tag, range, unit, direction,
firmware scope, source status and evidence. Do not infer missing fields.
Explain how Sends on Fader changes the M32 control surface.
Separate fixed controls, context-sensitive behaviour and display feedback.
Diagnose why /xremote updates stop after several seconds.
Begin with read-only checks and distinguish timeout, client-limit,
packet-loss and state-reconciliation causes.
Decode this OSC packet and compare it with the documented X32/M32 type rules.
Flag alignment, null-padding, endianness and type-tag problems.
Prepare a dry-run plan to change a documented parameter.
Read the current state first, classify risk, show exact bytes,
define expected verification and provide rollback steps.
Do not send anything.
Run tools from the canonical Skill directory:
cd skill/x32-m32-osc-expertpython scripts/lookup_osc.py --query "/ch/01/mix/fader" --jsonpython scripts/lookup_node.py --query "/ch/01" --jsonpython scripts/lookup_effect.py --query "Hall Reverb" --jsonpython scripts/encode_osc.py \
--address "/ch/01/mix/fader" \
--types f \
--args 0.5python scripts/decode_osc.py --hex "2f696e666f0000002c000000"python scripts/validate_write.py \
--address "/ch/01/mix/fader" \
--value 0.5These scripts do not open a socket or transmit to a console.
Run the complete repository validation:
python scripts/verify_repository.pyExpected result:
{
"status": "PASS",
"errors": []
}Build a fresh distributable:
python scripts/build_release.pyVerify its checksum:
shasum -a 256 dist/skill.zip
cat dist/SHA256SUMSThe validation workflow covers:
- external-reference audit
- dataset coverage
- Skill structure and frontmatter
- deterministic unit tests
- clean-extraction validation
- scope-boundary enforcement
- absence of public schema identifiers
- absence of bundled MCP or live-transport implementation
Detailed results are recorded in BUILD_REPORT.md.
This repository is intentionally offline-first.
It does not include:
- a live UDP or OSC sender
- an MCP server
- a cloud API or hosted endpoint
- authentication or secret management
- firmware-update tooling
- autonomous scene recall
- phantom-power execution
- media-format or destructive operations
- a public JSON Schema registry
Any external execution system must independently provide console identity checks, firmware compatibility, current-state reads, operator approval, rate limits, post-write verification, rollback, audit and a physical override.
Read SECURITY.md and SCOPE_BOUNDARY.md before integrating the Skill into a control system.
| Tier | Meaning | Default policy |
|---|---|---|
| Tier 0 | Observe and read-only operations | No write approval required |
| Tier 1 | Bounded, reversible, allow-listed changes | Dry run, current-state read, limits and verification |
| Tier 2 | High operational impact | Explicit human approval and recovery plan |
| Tier 3 | Critical, destructive or uncertain | Fail closed; no autonomous execution |
Unknown, undocumented, UNCERTAIN, CONFLICT or unreadable write operations never qualify as Tier 0 or Tier 1.
Contributions are welcome when they preserve source traceability and the no-invention rule.
Before opening a pull request:
python scripts/verify_repository.pyA contribution that adds or changes a technical fact should include:
- the source document and edition
- PDF and printed page where applicable
- the exact source form
- status and confidence
- a conflict or parse note when needed
- updated tests and coverage data
See CONTRIBUTING.md.
Publishing scripts require an explicit owner, repository name and visibility. They perform a safe validation pass before any Git mutation.
Dry run:
./scripts/publish_github.sh \
--owner DXBMARK \
--repo x32-m32-osc-skill \
--visibility private \
--dry-runReal publishing requires an exact typed confirmation and verifies the existing origin before creating a commit or pushing.
See Publishing guide.
The original scripts, tests, repository automation and authored Skill framework are licensed under the MIT License.
Third-party manuals, trademarks, product names, protocol facts and supplied source documents remain under their original rights. Midas and Behringer are trademarks of their respective owners. This project is independent and is not endorsed by, affiliated with or supported by the equipment manufacturers.
See LICENSE_SCOPE.md, NOTICE.md and CITATION.cff.
- Report reproducible problems through GitHub Issues.
- Review known limitations in BUILD_REPORT.md.
- Read SECURITY.md before reporting a security concern.
- General project information: dxbmark.com.
