This is an extended version of Controller Tracker and Snapshots, which is in turn an extension of Controller Feedback and Restore. It adds support for relative/incremental encoders, PLUS support for Take Over (A.K.A. Pick Up) mode.
CONTROLLER BUDDY
This script focuses on two tasks: Adapting relative encoder ouput to apps that don’t support them, and preserving the state of controls between saved host sessions so that the controller and session can be as closely in sync as possible. Througout these notes “relative” and “incremental” are used interchangably.
BASIC OPERATION
• There are two available screens. The main view is for setting up the type of controller. The Snapshots view will be explained later. Pressing SHIFT toggles these views.
• Tapping the first pad cycles through the controller schemes supported.
• ABSOLUTE is for knobs and faders that send absolute values from 0-127.
• TAKE OVER is the same as ABSOLUTE but will wait until any previous stored value has been crossed before sending MIDI. You can force a new pick up check with the Reset Pick Up button.
• The remaining INCREMENTAL types select between various schemes encoders may use. You may have to experiment and/or observe the output from the controller to find the best scheme. “Jog (-)” and “Jog(+)” are likely to work with most encoders.
• As messages are received from incremental encoders, they are converted to absolute values, appearing as basic absolute controller knobs and faders to receiving apps.
• By default Bank Select messages are not supported. They use absolute values for CC0 and CC32. If Bank Select is needed it can be set with the second button. This will block conversion of CC0 and CC32.
• The third pad cycles through SCALE factors. Higher values reduce the number of rotations needed from the encoder, at the expense of accuracy.
CHECK THE @SETTINGS SECTION NEAR THE TOP OF THE CODE FOR CUSTOMIZABLE DEFAULTS. READ THE COMMENTS BEFORE MAKING CHANGES.
STATE SAVING
• In both Absolute and Incremental modes, the LAST value of every CC, Program Change, and Pitch Bend message is saved. When the host session is saved, these values are too. When the host session is restored, these values are written out from the script to synchronize whatever received them with the script if possible.
• The current values can also be sent in bulk whenever the DUMP button is set at 64 or greater. Double-tap on the knob will also do this.
SNAPSHOTS
Snapshots are an optional feature. You can ignore them entirely unless you have a use for saving and recalling sets of values for later use, such as for A-B comparisons, or to manage settings for different parts of songs.
• Pressing SHIFT from the main view brings up the Snapshots view. Here you can save and recall up to sixteen snapshots of the current values at any time.
• The Save, Recall, and Erase buttons work on the currently selected (colored) pad. NOTE: Tapping a pad doesn’t act on it. It only arms the pad for the knobs to act upon.
• Rotate a knob past the middle position, or double-tap it to execute the knob’s function. The status of the pad will update to show if there are values stored in it.
• STORE writes the current values to the pad.
• RECALL retrieves values, if there are any on a pad, replaces the current buffer, and sends the values out of the script.
• ERASE removes values from a pad. It doesn’t send anything out and doesn’t affect the current buffer.
• DUMP ignores snapshots, it always re-sends whatever is in the current buffer.
RELEASE NOTES
• v0.10 Initial Release
• v0.20 Add takeover/pickup for absolute controllers. 😎
• v0.21 Reset pickup on Dump and Recall Snapshot
• v1.0
• Don’t show pickup feedback in snapshots view
• Show correct pending pickup value
• Restore pad color for last selected snapshot on view switch
• Add takeover slop value in @Settings
Version 0.20 adds a Take Over (sometimes called Pick Up) mode for absolute value controllers!
I’ve struggled to get this right in the past, so I really hope I got it right this time.
v0.21 Added a reset of pickup status when recalling a snapshot or dumping the controllers.
• v1.0
• Don’t show pickup feedback in snapshots view
• Show correct pending pickup value
• Restore pad color for last selected snapshot on view switch
• Add takeover slop value in @Settings