logic_osc
Control Logic Pro over OSC: bind the LogicPad surface, then drive transport, mixer, plug-ins and EQ with read-back confirmation of every change.
Instructions
Drive Logic through its built-in TouchOSC "LogicPad" control surface over OSC (UDP), with feedback.
We advertise a Bonjour service in the TouchOSC Mk1 format, Logic binds it as a control surface (one-time
alert "OSC app TouchOSC wants to connect" -> Connect, pressed automatically), then Logic streams its state
(track names of the current 8-strip bank, select/mute/solo, volumes, meters, bar, SMPTE time, transport)
and accepts the fixed LogicPad address map. Faster and more reliable than Mackie emulation for transport,
selection and mixer moves; every result is read back from Logic's own OSC echo.
connect bind the device (idempotent). status snapshot of everything Logic last sent.
transport command=play|stop|record|cycle|rewind|forward|click|soloreset (record starts recording on
armed tracks -- only on explicit request).
bank command=bank+|bank-|track+|track- (move the 8-strip window; strips are 1..8 inside it).
select|mute|solo strip=1..8 (mute/solo toggle; readback says the new state).
volume strip=1..8 value=0..1 (fader, 0.75 ~ 0 dB). master_volume value=0..1.
send address=/1/... args=[...] raw message; feedback returns what Logic sent in the last `wait` s.
Selected-track pages (select a track first):
strip inserts (slot, name, bypassed), focused plug-in name + its 16 parameters (name, 0..1, display),
sends, pan, mute/solo/arm of the SELECTED track.
eq the Channel EQ on the selected track: 8 bands (1 high-pass, 2 low shelf, 3-6 peaks, 7 high shelf,
8 low-pass) with on/gain/freq/q (+slope on 1 and 8), each as 0..1 and Logic's display value.
present=false means the track has no Channel EQ (insert one via logic_plugins first).
eq_set band=1..8 param=gain|freq|q|slope|on, then EITHER value=0..1 (raw) OR target=<number in
Logic's units: dB, Hz, Q> which is reached by bisection on Logic's display value
("cut the mud": band=4 param=freq target=300; param=gain target=-3; param=q target=1).
plugin command=slot+|slot-|page+|page-|bypass|open (bypass/open take slot=1..12) on the selected track.
param list the focused plug-in's parameters (same as strip.params).
param_set param=<n or exact name> + value=0..1 or target=<number in the display unit>; read back.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | ||
| band | No | ||
| slot | No | ||
| wait | No | ||
| param | No | ||
| strip | No | ||
| value | No | ||
| action | Yes | ||
| target | No | ||
| address | No | ||
| command | No |