Experimental.
This indicates region selection:
* nudge region(s): red
* nudge playhead or marker(s): default gray
This does not indicate marker selection (nudge marker vs playhead),
nor does it change when primary-modifier is held (force playhead
nudge).
This commit does not remove this concept from the libs/ardour/engine_state_controller code,
which is used exclusively by Waves Track Live (to the extent that this can be said to
be "used").
This allows to special-cases session-specific control-surface state.
e.g. midi-learn.
Only restore midi-learned, session-specific, bindings when loading a
session with generic-midi enabled.
Also dis/re-enable generic-midi resets midi-learned, but no other
session-independent settings.
This also handles the edge case:
1) load global config, generic-midi = ON, w/ bindings.
state is remembered as cpi->state
2) load session-condig, generic-midi = OFF, cpi->state is retained
3) user enables the surface, cpi->state from (1) is applied.
-> invalid bindings applied -> fail
Keep latest surface configuration, regardless if surface is active
or being deactivated. Current state after de-activation is retained.
Currently state loaded from a session overrides global state from
global preferences, if the surface is marked active in the session.
This is to allow midi-learn.
generic-midi and session-specific midi-learn will require additional
work.
Midi meters are using linear 0..1 range, (not decibels, no log-scale
falloff).
If a track is deactivated, run() is never called. the queued reset never
executed and the meter remained at the initialization default -inf
(visually it looked like a pegged meter).
The checkbox is not kept in sync with
Session > Properties > Timecode > JACK Time Master
besides, it relies on JACK, relies on ardour being the first jack client
and also is mostl useless due to tempo-ramps not being supported by
many jack clients.
Sometimes the interthread process window dialog reports "cancelled"
when it was not actually cancelled, it was just hidden and reshown,
Since we are polling the cancel state interthread, we must reset
the cancel status BEFORE the dialog is shown, and never toggle the
cancel state unless it is a true cancel action by the user.