digico-session
Skill8 starsChanged 13 days agoMITView on GitHub
Read, build and edit DiGiCo SD and Quantum sessions (.ses) by bytes, on a baseline saved by the DiGiCo offline editor - build a new session from an input list or a plain description (channel count, order, stereo, names, per-instrument starting processing, buses, SD FX units, IEM and wedge mixes, sends, input patch and preamps), edit any session (processing, names, moves, stereo, patch, sends, FX, buses) from edit ops or plain-English commands, check a session (what console and software it loads on, structure, problems). Built for agents creating session files from the command line. Trigger on "DiGiCo", ".ses", "Quantum", "SD12", "SD9", "Q225", "Q338", "session file", "build a DiGiCo session from this input list", "check this session", "Mustard", "Spice Rack", or any request to make or change a DiGiCo show file.
In this repository4 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- samplySkill
- yamaha-showfileSkill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 1 is distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 14
Write new files only. Never overwrite the baseline or the engineer's session.
- Very specific: line 18
Read the report next to the output (<out>.md).
- Very specific: line 46
Write the request: console key, build, channels, processing: templates (or none), and the option blocks you need (mixes, fx, sends, buses, …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
DiGiCo sessions
DiGiCo sessions are always patched in place on a baseline: a session the DiGiCo offline editor saved for the console and software build you will load it on. The tools never write a session from nothing. The console rebuilds its caches on load.
Safety rules
- Write new files only. Never overwrite the baseline or the engineer's session.
- Open every generated session in the DiGiCo offline editor for that console and build, check it, then Files > Save As a new file. Only the editor's save goes to a console.
- First load on a real console happens at prep or rehearsal, never at the show.
- Read the report next to the output (
<out>.md). Every approximation and warning is listed. - A session saved by a newer build does not load on an older console. Build on the console's own build.
Set up once
- Baselines:
references/baselines.md. Default sessions go inscripts/baselines/<key>_v<build>.ses(or the folderSM_BASELINESnames). - Python 3.9+, standard library only. Run everything from
scripts/.
Tools
Command (from scripts/) | Does |
python3 ses.py <file.ses> | Summary: console, build, inputs, stereo, auxes, groups. ses.py is also the reader/writer library: slots by (module, param, band), renames every name copy in place, strip views. |
python3 -m sessionmaker.inspect <file.ses> | Checker: what it loads on, channels, patch, mixes, FX, structure problems. --json for the full model. |
python3 -m sessionmaker.consoles | Consoles and builds the baselines folder supports. |
python3 -m sessionmaker.listparse <list> --table | Read an input list (CSV, XLSX, XLS, DOCX, PDF, HTML, text). |
python3 -m sessionmaker.intake <list or "description"> | Channel plan with instrument categories. |
python3 -m sessionmaker.build <req.json> <out.ses> | New session from a request. Writes <out>.md (report) and <out>.json (read-back, checks). |
python3 -m sessionmaker.edit <in.ses> '<ops json>' <out.ses> | Apply edit ops. Refused ops say why and leave the file as it was. |
python3 -m sessionmaker.commands <in.ses> "<text>" | Turn plain English into edit ops (prints them; apply with edit). |
python3 -m sessionmaker.validate <file.ses> | Structural invariants. Run after every write. |
The request format is in the build.py docstring, the op format in edit.py. Overview: references/sessionmaker.md.
New session from an input list (the recipe)
intakethe list. Check every category and stereo pair against the list; fix names to 8 characters.- Write the request: console key, build, channels,
processing: templates(ornone), and the option blocks you need (mixes,fx,sends,buses,patch). Seeexamples/build_request.json. build. Read the report and the warnings.validateandinspectthe result.- Changes:
commandsto draft ops, read them, thenedit. Validate again. - Open in the editor, check, Save As.
Levels and filters (read before writing values by hand)
- Thresholds are dBFS and stop at 0.
- The strip shows the -3 dB cutoff. Stored HPF = shown / 1.25, stored LPF = shown / 0.8. EQ is stored as shown.
- Times are stored in seconds.
Details:
references/filters-and-thresholds.md.
Format notes
references/FORMAT.md (container, section table, module records, slot keys, stereo, Mustard, Spice Rack, FX units,
sends, buses, patch, surface banks), references/CHANNEL_MODEL.md (the input channel signal flow and what is
mapped), references/engine-findings.md (editor-proven limits, load rules and the guards these scripts still lack),
references/scope-and-recall.md (snapshot scope, Global Scope, safes, and what a recall changes and leaves).
Key by (module, param, band), never by offset: the channel stride changes with the session structure.
references/snapshots.md: the snapshot pool, the snapshot record and its options, snapshot groups, setlists, and how
to add, update and delete a snapshot by bytes.
The same file has the settings of one snapshot, the editor's own Delete and Insert New, and what a Restructure does to
section 210 (editor-verified on the Quantum 225 and the SD12).
references/session-structure.md: header, sections, objects, strip kinds, ports, and the 48kHz and 96kHz keys (header
0x77 and 0x87, the I/O device table and the Copy Audio prompt).
references/io-patch.md: racks (add, swap, remove), the input patch with gain, 48V and pad, the output patch, and what a
recall does to a patch change.
references/bus-processing.md: the EQ, compressor, gate, delay, trim and insert switch of aux, group and matrix output
strips, with the editor's clamps.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

