Commit graph

40920 commits

Author SHA1 Message Date
Brent Baccala
d8f01e1eb8 MIDI PC/CC script: missed a 'local' declaration 2025-11-13 12:55:57 -05:00
Brent Baccala
3a61a355ee MIDI PC/CC script: allow roll_transport() to start playback at a marker 2025-11-12 19:09:27 -05:00
Brent Baccala
01d221170f MIDI PC/CC script: handle Bank Select messages 2025-07-07 16:53:45 -04:00
Brent Baccala
970d3f0f56 initial version of "MIDI PC/CC" plugin script 2025-06-30 20:45:13 -04:00
Paul Davis
d9fda4ce7a click on pianoroll header note always does selection, no modifiers or middle button required
Plus minor related code cleanups
2025-06-30 18:20:21 -06:00
Paul Davis
69efb81922 fix drawing coordinate translation for Pianoroll's header 2025-06-30 18:19:28 -06:00
Paul Davis
e2a6b81320 remove incorrect comment 2025-06-30 18:19:04 -06:00
Paul Davis
baf41a65c3 some incremental improvements in scroomer behavior
Notably dbl-click works consistently/reliably
2025-06-30 09:39:51 -06:00
Paul Davis
87b50a4ecd use method instead of a direct call, to centralize logic 2025-06-28 22:45:08 -06:00
Paul Davis
ad6b6f1e30 desensitize automation keybindings after session is set, to avoid them being active by default
ARDOUR_UI sets all session-sensitive actions to sensitive at session load
2025-06-28 22:44:41 -06:00
Paul Davis
a2c8203a19 use new ArdourDropdown API to build two of the midi draw menus 2025-06-25 22:18:15 -06:00
Paul Davis
02abf956d7 a better way to build ArdourDropdowns from Actions 2025-06-25 22:17:53 -06:00
Paul Davis
bdf9dec411 pianoroll: if invisible, defer (expensive) ::set_region() till shown 2025-06-24 19:17:47 -06:00
Paul Davis
1fbd7c7124 when selecting a due to note selection, do not keep changing the selection
the code was first clearing the entire Editor selection before adding
the region, causing every note selection to trigger the RegionsChanged
pathway. This is crazy expensive for some reason (more than 8.12) and that
should be investigated, but the logic is also wrong. Selecting a region that is
alrready the sole selected region should not cause any action at all.
2025-06-24 18:11:13 -06:00
Paul Davis
0c876d7c44 remove use of POINTER_MOTION_HINT_MASK in PianoKeyboard
We want to receive *all* motion events for accurate note tracking.
2025-06-24 18:05:22 -06:00
Paul Davis
2c9e42b2ab NO-OP: braces, please 2025-06-24 18:05:02 -06:00
Paul Davis
5f9f754946 NO-OP: remove debug output 2025-06-24 18:04:37 -06:00
Paul Davis
567c0e09b8 NO-OP: remove out of date comment 2025-06-24 17:58:08 -06:00
Paul Davis
5e402aa0f9 NO_OP: better code styling 2025-06-24 17:57:47 -06:00
Paul Davis
7cf90f0f54 NO-OP: spaces, please 2025-06-24 17:57:17 -06:00
Paul Davis
e448c3f4aa allow pianorolls not to show MIDI channel selector/dropdown
pianorolls have the visibility channel control. at some point we want the same idea
for the timeline, but it is not there yet
2025-06-23 16:16:12 -06:00
Paul Davis
a17cf3929d NOOP: whitespace around operators 2025-06-23 16:15:36 -06:00
Paul Davis
bce06b4c07 add region align actions to menus, to aid discovery 2025-06-22 08:06:12 -06:00
Robin Gareus
0bd6c9d39f
Exclusive solo may select track
The idea is to show the selected route on the bottom panel
(focus channel) so that one can edit the channel strip settings
of what one hears (currently only useful in Mixbus).
2025-06-20 18:22:52 +02:00
Robin Gareus
e1fc24723a
NO-OP: whitespace 2025-06-19 23:16:30 +02:00
Robin Gareus
521227afe8
Panes should prelight like other widgets (brighter not darker) 2025-06-19 23:16:16 +02:00
Robin Gareus
4100279812
NO-OP: Remove extra parentheses 2025-06-19 22:09:18 +02:00
Paul Davis
66a8776f98 fix InternalSend (and InterntalReturn) to allow fade out/MIDI mute
previously, as soon as the Send is disabled, it would short-circuit ::run(),
preventing the fade to zero to take effect. Now, the send will run until the
effective gain reaches zero, and the return will collect data from it until it
is fully deactivated.
2025-06-19 13:50:37 -06:00
Paul Davis
464ea0d31f fix Amp to send MIDI mute when the gain control is set to zero
Do not send MIDI mute from ::apply_gain(), which is too general and can end up
resending MIDI mute messages when the owner is muted.
2025-06-19 13:38:39 -06:00
Paul Davis
6b675bac18 for MIDI mute block in Delivery, add ALL_NOTES_OFF 2025-06-19 13:37:53 -06:00
Paul Davis
fc24c59eb9 refactor midi mute buffer sizing into a separate method for Delivery 2025-06-19 13:37:30 -06:00
Paul Davis
e45c2f616a modify Delivery::maybe_merge_midi_mute() to allow forcing the merge
In an internal send, this may be called with _current_gain not yet
at zero. So provide an extra argument to force the merge.
2025-06-19 13:36:50 -06:00
Paul Davis
4bf1202493 tiny optimization tweak and auto-fication for Amp::apply_simple_gain() 2025-06-19 09:13:25 -06:00
Paul Davis
8b09becf1d fix the way mute operates for MIDI tracks
our policy is that "mute works on outputs", which means that mute should have
no effect on what an instrument plugin does. However, MidiTrack::act_on_mute()
used to inject sustain=0 messages into the data flow, which would affect
the instrument plugin(s) in the track.

now, MidiTrack::act_on_mute() simply notifies all Delivery objects in the track
that a MIDI mute is needed via a channel mask. The Delivery objects notice this
during their ::run() method, and deliver the required MIDI events to their
output ports.

There is still a potential issue that Amp objects which notice they have been
muted also send a similar set of messages. This needs more investigation and
possibly other changes. But this commit allows a sustained note to return after
the track is muted midway through it.
2025-06-19 08:03:43 -06:00
Paul Davis
919ce6309c auto-ify the main processor loop in process_output_buffers() 2025-06-19 08:03:43 -06:00
Robin Gareus
0d69983a29
Fix comment editor window title 2025-06-19 01:14:48 +02:00
Paul Davis
66f93e70cd add automation.bindings to fmt-bindings script 2025-06-17 14:03:43 -06:00
Paul Davis
c6a49fdd50 basic implementation of Live-style kbd-driven automation editing 2025-06-17 14:03:43 -06:00
Paul Davis
fc692f5680 Fix for timepos_t::earlier() - superclock_t vs.samplepos_t confusion 2025-06-17 14:03:43 -06:00
Robin Gareus
35851d0cc8
Fix opening links to in prefs notes (e.g. VST spec)
gtk's default URL open does not work on recent macOS and
Windows.
2025-06-17 18:40:51 +02:00
John Emmas
b795d36cd3 Avoid using 'boost::aligned_storage' which is known to be problematic in MSVC builds
MS initially believed the runtime issues might be fixable in VS2015 but in fact, Boost's alignment strategy and Microsoft's alignment strategy just turned out to be incompatible:-

https://www.boost.org/doc/libs/1_65_0/libs/type_traits/doc/html/boost_typetraits/reference/aligned_storage.html
2025-06-17 09:02:24 +01:00
Paul Davis
73f4378a51 more adjustments to scroomer drag logic
1. use an idle callback
2. MidiViewBackground::apply_note_range() now returns true/false
depending on whether or not it was able to make the requested change.
It might fail due to out of bounds note line size, for example.
2025-06-16 23:01:10 -06:00
Paul Davis
b5f5aeafe7 use C++11 style iterator 2025-06-16 23:01:10 -06:00
Robin Gareus
9d17303199
Add auto-input tooltip 2025-06-16 23:42:06 +02:00
Paul Davis
9342886e48 fix thinko in MidiView::pick_visible_channel() ... no data, channel is 0, not 16 2025-06-16 10:47:25 -06:00
Paul Davis
1230e1258d code refactoring and action name handling to make follow-playhead work in multiple editing contexts (libs) 2025-06-15 21:18:06 -06:00
Paul Davis
ea1695dbc0 code refactoring and action name handling to make follow-playhead work in multiple editing contexts 2025-06-15 21:17:42 -06:00
Paul Davis
f48fe3f740 numerous fix ups to the behavior of button presses in any pianoroll header 2025-06-13 17:20:09 -06:00
Paul Davis
4aedc6f882 make sure Pianoroll background gets the data range set when a region is set 2025-06-13 17:20:09 -06:00
Paul Davis
28eaf90790 if in internal editing mouse mode, MidiRegionView is merely outlined, not filled, with selectionc olor 2025-06-13 17:20:09 -06:00