Skip to content

MidiControl

Overview

The MidiControl device connects Onlyview to MIDI hardware: a fader bank, a pad controller, a keyboard.

The device works in both directions:

Incoming notes can fire QuickKeys, incoming Control Change messages can drive the play state and grandmaster of timelines, and every note, controller and program value is readable from the ActionGraph.

Outgoing MIDI is sent as device actions from timelines and cue lists, and the device also sends automatic feedback, so a motorised fader or a lit button reflects what the show is doing. The MIDI In port is read as a MIDI Timecode source too, so the same device can slave the show to external timecode.

Setup

  • Midi In: The MIDI input port to listen on. MIDI hardware will send notes, program changes and MIDI Timecode on it.
  • Midi Out (feedback): See the Feedback section below. If enabled, choose the output port. It is needed both for the feedback described below and for any MIDI action sent from a timeline (otherwise, actions are silently ignored).
  • Link Notes to QuickKeys: When ticked, every Note On triggers the QuickKey of the same number: note 1 triggers QuickKey 1, note 2 triggers QuickKey 2, and so on. This is a quick way to turn a pad controller into show triggers.
  • Sliders to timelines: Twelve rows, Slider 1 to Slider 12. Each holds the number of the timeline that slider controls, and an Enabled tick box; an unticked row is ignored on input and on feedback. Slider n defaults to timeline n.

Sliders to timelines

The twelve sliders react to incoming Control Change messages. The controller number selects the slider — controller 1 is Slider 1, up to controller 12 — and the MIDI channel selects what is changed:

  • Channel 1: Grandmaster of the timeline. The value 0–127 is scaled to 0–100 %.
  • Channel 2: Play/pause. 127 plays the timeline, 0 pauses it. Other values are ignored.
  • Channel 3: On/off. 127 switches the timeline on, 0 switches it off.

Nothing happens if the row is not enabled, or if the timeline number does not exist. The mapping is fixed: set a surface to send controllers 1 to 12 on channel 1 for its faders and on channels 2 and 3 for the buttons above, and you have twelve timeline strips.

MIDI feedback

When Midi Out (feedback) is enabled, the device sends the state of the enabled sliders back out on the same channels and controllers. Values are only sent when they change, and everything is re-sent when the show is loaded so the surface starts in sync. With motorised faders and lit buttons the hardware then follows the show: fading a timeline from a UserScreen moves the fader, and a timeline stopping by itself turns the button light off.

Timecode

The MIDI In port can also read MIDI Timecode, at 24, 25, 29.97 drop frame or 30 fps, so the device can be used as a timecode source.

MIDI Timecode doesn't contain pause/jump information, so this needs to be guessed, which implies a little bit of delay before detecting a pause or a jump (100ms)

Device Widget

The MidiControl device widget can be placed on a UserScreen. Its Midi In Monitor shows the last message received — Message (Note On, Note Off, Program Change, AfterTouch or Control Change), Channel, and the two data bytes as Value 1 and Value 2. A small indicator by the device name shows the timecode state: greyed out while none has been seen, green while timecode arrives, red when it stops. Below it, a send section offers the same action list as the actions below, with a send ... button to fire a message by hand while patching the show.

Actions

MidiControl actions can be placed in a timeline Command Cue or a cue list. Pick the action, then fill in its parameters:

  • Note On, Note Off, Program Change, Control Change: a Channel and two values, Value 1 and Value 2.
  • Stop, Play, Deffered Play, Fast Forward, Rewind, Punch In, Punch Out, Pause: MMC transport commands, taking only the Channel of the target device.
  • Locate: an MMC locate, taking a Channel and the time to locate to, At.

All of them require Midi Out (feedback) to be enabled and an output port to be selected.

ActionGraph Nodes

Three nodes are available under Devices/MIDI in the node palette. All three have a Device property selecting the MidiControl device, and a Channel property. The received state is synchronised to every machine of the show, so the nodes work on a Media Server as well as on the Producer.

Get MIDI Note

Properties:

  • Note: The note number, 0 to 127, in addition to Device and Channel.

Output Slots:

  • On: Boolean — whether the note is currently held.
  • Velocity: Integer — the note velocity, 0 to 127. AfterTouch messages update it while the note is held.

Output Events:

  • Note On: Fired when the note is pressed.
  • Note Off: Fired when the note is released.
  • Changed: Fired on either of those, and on a velocity change.

Get MIDI Control

Properties:

  • Control: The controller number, 0 to 127, in addition to Device and Channel.

Output Slots:

  • Value: Integer — the last value received for that controller, 0 to 127.

Output Events:

  • Changed: Fired whenever a value is received for that controller.

Get MIDI Program

Output Slots:

  • Program: Integer — the last program number selected on that channel.

Output Events:

  • Changed: Fired whenever a Program Change is received.

Outputs stay invalid until the selected device exists and a first value has been received.

Info

Reading a controller in a node does not disable the fixed slider mapping. To take full control of a fader from the ActionGraph, leave its slider row unticked.