User Guide
Starting Transmission
./transmission
This launches the GTK graph editor. The launcher sets GDK_BACKEND=x11 and TRANSMISSION_ROOT, and suppresses the auto-spawned live server (run transmission-live.js separately if needed).
To start the live HTTP/MCP server alongside:
node scripts/transmission-live.js
Graph editing
The graph editor shows nodes as boxes and connections as directed edges.
| Action | How |
|---|---|
| Add a node | Right-click on the canvas → select plugin |
| Move a node | Drag its title bar |
| Connect two nodes | Drag from an output port to an input port |
| Remove a connection | Right-click the connection line |
| Remove a node | Right-click the node → Remove |
| Open plugin editor | Double-click the node |
Port colours indicate signal type: orange = MIDI, blue = audio.
Connections are validated against real port counts read from each VST3 binary. A connection to an out-of-range port is silently rejected; check port counts with:
native/build-ui-jack-vst3/transmission_vst3_inspect ~/.vst3/<name>.vst3 \
| grep -E 'audioInputs|audioOutputs|midiInputs|midiOutputs'
Transport
The toolbar provides Play, Stop, and BPM controls. Changes to tempo or loop range require audio to be stopped first.
Console commands
Type commands into the console text entry at the bottom of the window.
| Command | Output |
|---|---|
lsp | All available JACK input/output ports |
connections | Current JACK output connections |
peaks | Current output peak levels |
status | Runtime state and last connection error |
diag | Full engine diagnostics: timing, block counts, underruns |
reconnect | Retry JACK connections without restarting audio |
Audio setup
Transmission routes its output to JACK. JACK port names that include a numeric suffix change each session; use the suffix-free form so fuzzy matching resolves them automatically:
Good: "UMC404HD 192k:playback_FL"
Bad: "system:playback_1"
Configure output connections in ~/.config/transmission/config.ttl:
:config :defaultOutputConnections (
"UMC404HD 192k:playback_FL"
"UMC404HD 192k:playback_FR"
) .
Saving and loading projects
Projects are Turtle files (*.ttl) in the projects/ directory.
| Action | How |
|---|---|
| Save | File → Save (or MCP project_save) |
| Open | File → Open (or MCP project_open) |
| New | File → New (or MCP project_new) |
Offline rendering
Export a project to WAV without a running JACK server:
node scripts/probe-project.js projects/<name>.ttl
For full offline export:
node scripts/offline-render.js projects/<name>.ttl output.wav
Convert to MP3 with ffmpeg:
ffmpeg -i output.wav -q:a 2 output.mp3
Configuration
GTK editor: ~/.config/transmission/config.ttl
Live server: config.ttl in the project root (see config.defaults.ttl for all options)
Key live-server settings:
:config :port 7878 ;
:bindAddress "127.0.0.1" ;
:renderAheadBlocks 24 ;
:processingThreads 4 .
Diagnosing audio problems
-
Run the headless probe first — confirms the graph initialises and plugins produce signal without JACK:
node scripts/probe-project.js projects/<name>.ttlLook for
AUDIO node=guardian totalRms=...at the bottom. If the probe fails, a plugin likely hasaudioOutputs 0in the TTL — add the correct:audioOutputs Ndeclaration. -
Check JACK output:
jack_lsp | grep playback -
Use the
peaksconsole command —(silence — check connections)means no signal at the output. -
Run
diagfor full engine timing and underrun counts.
See Architecture → Diagnostics for more detail.
MCP usage
When transmission-live.js is running, any MCP client can connect and control the graph. See the MCP Reference for the full tool and API listing.
Quick example — list installed plugins and add a node:
# Via HTTP
curl http://127.0.0.1:7878/plugins | jq '.[] | .name'
# Via MCP (Claude or other client)
# tools: node_add, connection_add, graph_apply_changes, transport_play