‹ Plugin Player docs

MIDI controllers and OSC (TouchOSC, a phone, other software)

Plugin Player listens to MIDI (any USB MIDI controller: a nanoKONTROL, a Launchpad, an APC, a keyboard) and to OSC (TouchOSC or any OSC app on a phone or tablet, Resolume, TouchDesigner, Wire…). They do exactly what the game controller does, plus knobs and faders on the scene's sliders. Everything is set up on the CONTROLS tab (F3).

Plug in a MIDI controller and learn a knob

  1. Plug the controller in (before or after starting Plugin Player).
  2. Open CONTROLS (F3). In the MIDI · OSC card, click MIDI: OFF so it says ON. Your controller appears under it (a dot blinks when it sends something). The MIDI chip at the top of the window says how many controllers are connected.
    • Windows lets one program at a time use a MIDI controller. Turning MIDI on in Plugin Player takes it; if Resolume or your DAW needs it, turn MIDI OFF here (or quit Plugin Player) and it is free again. Plugin Player remembers your choice.
  3. Find the row you want in the table:
    • THIS SCENE rows: the scene's buttons (random look, spin…).
    • THIS SCENE · SLIDERS: the scene's dials (speed, glow…). ALL shows every one.
    • MIDI · OSC · EVERY SCENE: next / previous scene, next preset, SAVE PRESET, TAP TEMPO, AUDIO ON / OFF, camera in / out, the Effect Layer and its intensity.
    • GLOBAL · NAVIGATION: the L2 / R2 / + / − rows (a controller or key on them acts exactly like that controller button: tap, hold…).
  4. Click EDIT on the row, then turn the knob, move the fader or hit the pad / key. The row now shows what it learned, for example CC 16 · CH1. A toast offers UNDO.
    • A knob or fader needs to move a little (two messages), so a jittery fader never grabs a row by accident.
    • If that knob already did something else, it moves to the new row and the old row is left without it; the toast offers SWAP INSTEAD (the old row takes the new row's previous control).
    • Sliders need a knob, a fader or pitch bend; buttons and the scene / preset rows take pads, keys, buttons, CC buttons or program changes.
  5. Click the learned tag on a row (for example CC 16 · CH1) for its options: CHANNEL any / one, DEVICE any / one, and for a knob: ABSOLUTE (a normal knob or fader) or RELATIVE (an endless encoder that sends +1 / −1 clicks: try the three relative kinds until it moves smoothly). REMOVE forgets it. × CLEAR on the row does the same.

Scene buttons and sliders you learn belong to that scene (another scene can use the same knob for its own dial); the EVERY SCENE rows work everywhere. A learned scene button follows its action even if you remap the game controller. An action that says NO BUTTON needs a pad button first.

Your MIDI and OSC learns are saved with your controls: in SAVE LAYOUT, EXPORT / IMPORT (.ppcontrols files) and the LAYOUT dropdown (button layouts). Default and RESET EVERYTHING TO DEFAULT forget them (UNDO brings them back).

OSC from a phone (TouchOSC) on the same Wi-Fi

  1. Put the phone and the computer on the same Wi-Fi (or the phone's hotspot with the computer joined to it).
  2. CONTROLS › MIDI · OSC: click OSC: OFF so it says ON. The card shows the address to send to, for example SEND TO 192.168.1.20:9000. The port (9000) can be changed in the box next to it.
    • The first time, Windows may ask whether Plugin Player may use the network: allow it on private networks. If you clicked Cancel, open Windows Security › Firewall & network protection › Allow an app through firewall, and tick Plugin Player for Private.
  3. In TouchOSC (or any OSC app): set the connection to OSC / UDP, host = the address shown (192.168.1.20), send port = 9000.
  4. Either learn (EDIT on a row, then move the phone's fader or tap its button), or use the fixed addresses below; each row also shows its fixed address on the right.
AddressValueWhat it does
/pp/scene/next, /pp/scene/prev, /pp/scene/back(none) or 1next / previous scene, back to where you were
/pp/scene/gonumber 1, 2…that scene of the show
/pp/look/next, /pp/look/prev, /pp/look/save, /pp/look/reset(none) or 1favorite presets, SAVE PRESET, the scene's own preset
/pp/look/gonumber 1, 2…that favorite preset
/pp/param/<name>0 … 1a slider of the playing scene (the name is on its SLIDERS row)
/pp/button/a … /pp/button/right, /pp/button/l2, /pp/button/r2, /pp/button/start, /pp/button/select1 = press, 0 = releasea game-controller button (the same names as on the CONTROLS tab)
/pp/fx/channel, /pp/fx/1 … /pp/fx/4, /pp/fx/off(none) or 1the Effect Layer
/pp/fx/intensity0 … 1Effect Layer intensity
/pp/tap, /pp/audio, /pp/camera/in, /pp/camera/out(none) or 1TAP TEMPO, AUDIO ON / OFF, camera to / off the scene
/pp/camera/toggle, /pp/fx/toggle(none) or 1one button, two states: camera to the scene / off it · Effect Layer on / off
/pp/blackout, /pp/blackout/on, /pp/blackout/off(none) or 1BLACKOUT: the output fades to black (about 1 second) and stays black until you turn it off; the scene keeps playing underneath, so it comes back in time. /pp/blackout flips it, /on and /off set it. Same as the BLACKOUT button and the B key

A look in an address (/pp/look/…, and the MIDI / OSC action ids such as look.save) means a preset: the addresses kept their first name, so a TouchOSC layout made earlier keeps working.

A TouchOSC push button sends 1 when pressed and 0 when released: that is exactly right. For a fader, use the 0 … 1 range.

Checking it works

The EVERY SCENE list also has four dials a knob can ride anywhere: LIGHT (0.5× … 2.5×), FADE TIME (0 … 5 s), AUDIO AMOUNT (0 … 200 %) and FX INTENSITY, plus LEARN BACKGROUND as a button (OSC: /pp/light, /pp/fade, /pp/audio/amount, /pp/fx/intensity with 0 … 1; /pp/camera/learn).

Have a Midi Fighter Twister? Two ready-made button layouts map all 16 knobs and pushes (Dials, and Pad layout, laid out like your game controller): TWISTER.md.

Values back to the controller: a controller with LED rings or motor faders can follow Plugin Player: click SEND VALUES BACK (RINGS / MOTOR FADERS) next to it in the MIDI · OSC card. Each knob you learned on a slider then gets the slider's value sent back whenever it changes (a preset, a scene, the pad, OSC). It is on by itself for a Midi Fighter Twister (TWISTER.md), off for everything else.

Not yet: sending OSC out, ring colours, high-resolution (14-bit) knobs, MIDI clock as the tempo (the MIDI line shows the clock's BPM).