Files
virtual-controller/plugin-reaper-relearn/resources/controller-presets/factory/softube/console1-mk2-midi-absolute.preset.luau
T
Paul Lipscomb 7ecc718f5d Reorganize top-level directories with clearer naming convention
app -> app-desktop-macos, presets -> app-presets, server -> remote-server,
daw-config-reaper -> osc-config-daw, plugin-reaper-realearn -> plugin-reaper-relearn.
Updated run.py and presets.py path references accordingly.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-15 17:51:05 -04:00

52 lines
2.6 KiB
Lua

--- name: Console 1 mk2 - MIDI absolute mode
--- realearn_version: 2.16.12
--- author: helgoboss
--- device_manufacturer: Softube
--- device_name: Console 1 mk2
--- description: |
--- This controller preset implements support for the Softube Console 1 controller in MIDI mode, enabling absolute control.
---
--- Pros:
--- * LED feedback without glitches
--- * Button "On" is available and can be customized
---
--- Cons:
--- * Buttons can't be turned into momentary buttons (because Console1 doesn't send any message on release)
--- * True relative control is not possible (no user-defined step sizes and no wrap)
--- * Without pressing "Fine Adjust", encoder control is very coarse
--- * Button "Fine Adjust" can't be customized (it just switches to fine control on hardware side)
--- * In order to avoid parameter jumps with the encoders, feedback must be enabled (alternatively, you can use
--- ReaLearn's takeover modes)
---
--- setup_instructions: |
--- 1. Connect the controller
--- 2. Ensure that the Console 1 On-Screen Display software is **not** running!
---
--- provided_schemes: [softube/console1-mk2]
--!strict
-- Config
-- With this, we can simulate true relative control.
--
-- In MIDI mode, the encoders of the Console 1 send absolute control values, not relative ones. This is
-- not optimal because it means we can't define step sizes, wrap etc. However, as long as feedback is enabled, at least we don't
-- need to suffer from parameter jumps (a common disadvantage of absolute control).
-- This is because the Console 1 doesn't just use the feedback to set the LED ring, it also resets its internal encoder
-- value to the incoming feedback value.
--
-- If we simulate relative control, we get the advantages of relative control. However, it doesn't
-- work so nicely with feedback :( The "reset-internal-encoder-value" mechanism mentioned above interferes.
-- Without further treatment, this makes the control stuck. We can make control work by not sending echo feedback
-- but then the indicated LED ring value is incorrect when we turn the encoder (however, it is correct when changing the parameter
-- in REAPER itself - as long as we don't disable feedback completely).
-- The technique we use right now is to compare with the previously sent feedback value - if available - and otherwise the previously
-- sent control value. This sort of works, but there can be glitches because it's not always sure that the last-sent feedback value
-- has actually been received by the controller.
local commons = require("softube/console1-mk2-lib/preset-common")
return commons.create_compartment {
mode = "midi-absolute",
}