This page covers inbound control plus Controller Output for current parameter
values. To send Baryon’s audio-derived modal structure to TouchDesigner, use
OSC Structure Export.
127.0.0.1:9001 by default. Visual controls use
/baryon/control/<key>. Camera orbit uses
/baryon/camera/orbit/<axis>. MIDI maps one selected MIDI input at a time. The
recommended Orbit XY learn target guides a two-axis pad through X and then
Y while keeping the stored mappings independent.
When OSC is enabled, Baryon also serves an OSCQuery discovery endpoint on the
next local port: http://127.0.0.1:9002 by default. If you change the OSC port,
the OSCQuery port follows as OSC port + 1. Use Copy Ref in the control
I/O panel to copy the current OSC/OSCQuery reference.
OSCQuery is discovery only. It tells external tools what Baryon can control,
what OSC host and port to use, and how each value should be shaped. Control
values are still sent over OSC UDP.
MIDI Setup
Baryon’s MIDI input is for MIDI control-change messages. A MIDI keyboard can work if its knobs, faders, or pads send CC messages; piano notes, pitch bend, and aftertouch do not control Baryon in this first automation surface. Use a physical MIDI controller like this:- Connect the MIDI controller to the computer running Baryon.
- In Baryon Desktop, open Control I/O, turn on Enable, and enable MIDI.
- If the app asks for MIDI access, allow it.
- Choose the controller under Input.
- Choose the Baryon parameter under Target. For an XY pad, choose Orbit XY.
- For a color target, leave Color mapping on Hue Sweep for normal color-wheel control, or choose Saturation or Brightness for an independent advanced mapping.
- Press Learn, then move the requested control. Orbit XY asks for X first, then requires you to release the pad before moving Y.
- Move that same control again. Baryon should update the mapped parameter and
the
okcounter should increase.
- Open Audio MIDI Setup.
- Choose Window > Show MIDI Studio.
- Open IAC Driver, enable Device is online, and add or select a bus.
- In Baryon, open Control I/O, turn on Enable, enable MIDI, then select the IAC bus under Input.
- In a DAW, TouchDesigner, Max, or another MIDI source, send MIDI CC messages to that same IAC bus.
- In Baryon, choose a Target, press Learn, and move or send the CC control once to bind it.
MIDI Connection Recovery
Baryon opens the selected MIDI input only while MIDI control is enabled. It releases that port when you disable MIDI, choose another input, or quit the app, and it reconnects when the selected device is unplugged and returned. If MIDI In says Unavailable, Baryon could not open that input. Check that the controller is connected and working, and whether another app has exclusive access, then press Retry. Baryon cannot identify or force-close another process. If the card says Disconnected, reconnect the controller and wait for Baryon to reopen it. Press Retry if the driver does not publish a reconnect event. Your learned mappings remain saved during either condition.Learn and Remove Mappings
The Learn button binds physical MIDI controls to the selected Baryon target:- Choose a Baryon parameter in Target.
- Press Learn. The button changes to Learning.
- Move one knob, fader, or CC-capable pad on the selected MIDI input.
- Baryon records that input, MIDI channel, CC controller number, and target.
- For Orbit XY, follow the live prompt: move X, then move Y. A controller may emit both axis CCs on every drag; Baryon ignores the unchanged axis and requires a short quiet gap between steps so one gesture cannot learn both axes.
- Move the same physical control again to drive the mapped Baryon parameter.
Camera Orbit
Baryon exposes three absolute axes and two momentary camera actions. The Orbit XY learn target creates the horizontal and vertical mappings together; the runtime still keeps one independent CC per axis. MIDI CC messages do not identify a physical X or Y axis. During learning, the first control you deliberately move is assigned to Orbit Horizontal. If you move the wrong axis, cancel learning, remove that mapping, and run Orbit XY learning again.
Horizontal and vertical values orbit around the current camera target. Distance
moves toward or away from that target; it is not a third rotation axis. Incoming
motion is smoothed and treated as continuous camera movement, so it does not
reset temporal rendering on every sample. The viewport’s Lock camera option
only blocks pointer dragging; deliberate MIDI and OSC camera input remains
active.
For horizontal and vertical MIDI mappings, CC
64 is exactly 0°. Therefore:
- the XY-pad center is the neutral
0° / 0°side view; - bottom-left remains the minimum
-180° / -85°extreme; - Camera Home restores Baryon’s default diagonal pose at approximately
45° / 35.26°; - Orbit Center returns both angles to
0°while preserving distance.
Keep an external controller in sync
Controller output returns Baryon’s current values so compatible faders, buttons, color controls, and XY markers stay aligned when values change inside Baryon or from another control source. MIDI returns mapped controls; OSC returns every current-valued automatable control. Actions have no value to return. For MIDI:- In MIDI In, choose Controller Output. Select No output to disable return messages.
- The output may differ from Input, especially with virtual MIDI buses.
- Configure the controller to receive the same channel/CC pairs it sends. Orbit XY uses its mapped horizontal and vertical CCs.
- Leave Takeover on Immediate for a synchronized TouchOSC surface. Use Pickup for fixed physical faders that cannot move themselves.
- In OSC In, enable Controller Output.
- Set Output Host and Output Port; TouchOSC commonly receives on
127.0.0.1:9000when it runs on the same computer. - Configure each OSC control to receive its Baryon address. Visual controls use
/baryon/control/<key>. Orbit XY uses/baryon/camera/orbit/azimuthand/baryon/camera/orbit/elevation; distance uses its matching address.
TouchDesigner Control Surface
Download the smart TouchDesigner component: baryon_osc.tox Use it like this:- In Baryon Desktop, open Control I/O, turn on Enable, and enable OSC.
- For local TouchDesigner on the same machine, leave OSC at
127.0.0.1:9001. OSCQuery will be available at127.0.0.1:9002. - Under Baryon’s OSC In, enable Controller Output and set it to
127.0.0.1:9003. - Drag
baryon_osc.toxinto a TouchDesigner network. Its Controller Output Port defaults to9003. - Select the parent
baryon_osccomponent and pulse Refresh Query. - Confirm the parent status reads
Loaded 32 OSCQuery controls. - Select
baryon_osc/controlsand tune the generated custom parameters. - Use Send All on the parent component to push the current TouchDesigner values to Baryon.
baryon_osc component owns Baryon’s input address, the Controller
Output receive port, OSCQuery address, Bonjour discovery, refresh, active
state, and Send All. The child
baryon_osc/controls component is the control surface. It is regenerated from
Baryon’s OSCQuery metadata, so its Performance, Camera, Volume, Appearance,
Motion, and Logo pages track the Baryon build you are running. Every live public
visual control and camera target on the Performer surface is discovered
automatically when its value contract is supported. Debug, audit, lifecycle,
and explicitly excluded controls stay private.
Values changed in Baryon return to the same generated TouchDesigner controls.
Those mirrored updates are not retransmitted as commands. If Controller Output
was already enabled before loading the component, switch it off and back on
once so Baryon replays its current values.
Conditional controls keep stable OSC addresses. For example, Logo Rotation
Speed remains discoverable while Logo Rotation is off; its value takes effect
when Logo Rotation returns to manual.
Before OSCQuery is reachable, the component starts with a small Shape, Motion,
and Bloom fallback surface. After Refresh Query succeeds, the fallback is
replaced by the discovered Baryon controls.
For a second computer on the same network, turn on LAN in Baryon. LAN mode
binds OSC/OSCQuery to the local network and advertises OSCQuery over Bonjour as
_oscjson._tcp / Baryon Parameter Automation. In TouchDesigner, pulse
Discover if Bonjour is available, or enter the Baryon machine’s LAN address
as OSCQuery Host and then pulse Refresh Query.
Manual OSC
Query/?HOST_INFO for the OSC receiver details, /baryon/control for the
writable visual-control tree, /baryon/camera/orbit for the camera tree, or a
specific address such as /baryon/control/densityGain for type, range,
description, tags, label, and default metadata.
Example OSC messages:
0 is off and any non-zero value is on. Enum controls take one
string argument matching the control value. Color controls take three numeric
RGB arguments from 0 to 1. MIDI scalar mappings scale CC values (0..127)
into the target control range. MIDI color mappings replace the selected HSV
component of the current color and emit the result as one canonical color
update.
Scalar values are clamped to the published range. Fractional UI steps such as
0.05 for Pattern Persistence or 0.01 for Logo Rotation Speed do not
quantize incoming OSC values. Integer-step controls such as Max Samples remain
integer-quantized.
To verify the Shape, persistence, and logo additions in TouchDesigner, play active audio and change
Shape and Pattern Persistence. Stop the audio to reveal the idle logo,
set Logo Rotation to
Off, and confirm it stops. Return it to Manual, set
Logo Rotation Speed to +4 and then -4, and confirm the direction
reverses. Each accepted action should increase ok without increasing rej.
Notes, pitch bend, aftertouch, relative encoders, camera pan/roll,
camera-motion recording and looping, multi-device profiles, and remote hardware
profiles remain outside this automation surface.