Some MIDNAM files use Patch-Banks that do *not* have a common midi bank
(CC0, CC32) but the Patchbank is instead just a collection of patches.
There may be more than 127 patches in a patch-bank and each of those
may be in a different midi-bank (e.g. Roland SC-88 Pro).
Midnams like these are now properly supported via dropdowns (in the
patch add/modify dialog and timeline), but ignored by the grid
(patch-widget). More work is needed.
This fixes various issues with integer controls (some values are not
reachable due to incorrect rounding in AutoSpin) and also pulls
in the various benefits of BarController:
* mouse-drags
* numeric entry
* alternative entry modes (piano-keyboard, tempo-based values)
If this style remains, ClickBox & AutoSpin should be removed from
the codebase.
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode
and video in order to keep the legible
Do that by wrapping the packed controls box in a ScrolledWindow and
making it request the same width than the box but capped to 90% of the
screen width.
Also, when the box width exceeds the maximum value, try again with
one-letter automation buttons in case the reduced width avoids showing a
scroll bar.
The generic plugin UI uses spelled-out automation state buttons for
controls, which is good for readability and usability, but some plugins
have a very big amount of controls which means we need a lot of columns.
For those plugins, prefer one-letter automation states, to save width.
When there was a knobtable in the ControlUI, the behavior of the
automation state button changed by displaying one-char state as in track
headers. Factor out that logic to depend on a new boolean property of
the ControlUI, which should be set with set_short_autostate().
This regroups sizing logic in a single place and avoids future
discrepancies between the actual caption and the size allocated for it,
when several use-cases for smaller buttons are added.
Don't try to be smart when chosing which parameters need their
automation updated but rather trust the list that was populated at
creation time when all relevant information had been gathered.
At the point of creation, the automate_button size request is wrong
since it has not the correct style yet. Instead of trying ugly hacks to
fix that, connect to the knob's size_request signal and get the button's
requisition only when needed. If the system font changes to one that has
different extents (even if the point size is the same), the UI will thus
correctly update.
With the same color code as the fader automation button on mixer strips.
This is especially usefull when use_knob is true (e.g. for a-EQ) because
the automation only shows one letter and a "Write" state can thus be
easy to miss.
By passing the current text of the automation button we can make the
dropdown menu align with the current mode. This will only work for
full-size automation buttons, not when use-knob is true, but in that
case it feels wrong to popup on top of the button anyway.
Also make the menu show on mouse down like a real dropdown.