Commit graph

35990 commits

Author SHA1 Message Date
Robin Gareus
511ff3290f
Implement TriggerStrip selection
This also changes TriggerBox Selection to act on release
(like all other selection). Otherwise strip selection will
de-select the TriggerBox on mouse-release.
2022-02-03 05:50:07 +01:00
Paul Davis
fd3d17562c triggerbox: do not send embedded patch change events if Trigger has its own 2022-02-02 16:05:17 -07:00
Robin Gareus
65e3177910
Trigger Clip Picker: fix crash at exit (auditioner reference) 2022-02-02 23:08:49 +01:00
Robin Gareus
a9b484e97e
Auditioner: retain instrument plugin
This allows the Trigger Clip Picker to keep the
Plugin GUI available, and retain any custom settings.
2022-02-02 23:08:48 +01:00
Paul Davis
35b6ddfb77 triggerbox: deliver required patch changes into buffers whenever MIDITrigger::startup() happens 2022-02-02 15:06:11 -07:00
Paul Davis
c7b8faad5a MidiStateTrack: use correct hex values to manage set/unset state 2022-02-02 15:06:11 -07:00
Paul Davis
374faa0d5c PatchChange: use correct hwx constants to detect/set "unset" byte values 2022-02-02 15:06:11 -07:00
Paul Davis
31f4d8a2ca PatchChange: fix operator=() implementation which failed to manage event buffer ownership correctly 2022-02-02 15:06:11 -07:00
Paul Davis
6175af002c triggerbox: MIDITriggers get 16 patch changes, 1 per channel
These can be set, fetched and queried but at this point they do nothing
2022-02-02 15:06:11 -07:00
Paul Davis
603d1f1f57 evoral: some changes/extensions to Evoral::PatchChange to make it more useful
The concept of an "unset" PatchChange now exists, and thus a default constructor that constructs
such a thing
2022-02-02 15:06:11 -07:00
Robin Gareus
2c8427773f
Trigger-clip audition: show audition-synth GUI (WIP)
This is somewhat experimental, also the Plugin UI is only
available while MIDI audition plays...
2022-02-02 22:09:47 +01:00
Ben Loftis
b250c69eb8 trigger_ui: return the gain-spinner to MIDI clips; it adjusts velocity 2022-02-02 11:47:50 -06:00
Paul Davis
0b395c161d triggerbox: apply gain to MIDI note events 2022-02-02 09:58:57 -07:00
Paul Davis
2eadb75bd1 move static scale_midi_velocity() function from Amp to Evoral::Event 2022-02-02 09:58:57 -07:00
Paul Davis
15f248975f remove unused member of MidiStateTracker
We store "have program" as the 8 (MSb) bit of the program
array, and similary for other state holding elements
2022-02-02 09:58:57 -07:00
cooltehno
bf2ff23e44
Update dark-ardour.colors 2022-02-02 16:45:18 +01:00
Robin Gareus
bb11be9936
Consistent height of MIDI and Audio Track connection buttons
Audio track shows a trim-knob -- which is SCALED(19x19px),
MIDI input button should follow suit.
2022-02-02 14:18:18 +01:00
Robin Gareus
6900facef2
Fix potential deadlock
block_processing() may hold the process-lock, waiting
for the latency-lock. at the same time audio-engine
may hold the latter, trying to acquire the former.
2022-02-02 14:16:50 +01:00
Paul Davis
fec679c602 triggerbox: refactor ::maybe_compute_next_transition() so that we can use the same code when fast-forwarding 2022-02-01 19:55:37 -07:00
Paul Davis
f5d5ecffbb triggerbox: change note tracker to a full state tracker, and move it up to the TriggerBox
We don't need one state tracker per trigger, one per box is more appropriate
2022-02-01 18:06:40 -07:00
Paul Davis
8449d344ae add MidiNoteTracker::flush_notes() that writes note-on events corresponding to currently-on notes
This does not maintain note timing, but once the buffer contents arrive at a receiver, it should
be playing all the notes that were marked on in the tracker
2022-02-01 18:06:40 -07:00
Paul Davis
885d2feb6a add basics of a method to flush MidiStateTracker state to a MidiBuffer
When the buffer is delivered to a receiver, the receiver should (theoretically) end up
the same state as the MidiStateTracker
2022-02-01 18:06:40 -07:00
Paul Davis
04004d2178 add skeleton for full MidiStateTracker 2022-02-01 18:06:40 -07:00
Paul Davis
1ab49bcc32 change MidiStateTracker to MidiNoteTracker
The old name will become a bigger class/object that tracks all MIDI state,
not just notes
2022-02-01 18:06:40 -07:00
Robin Gareus
77a60d9e2d
Remove unused API 2022-02-02 00:27:35 +01:00
Robin Gareus
f103b984ab
Fix bounce + callback concurrency
Prevent Session::write_one_track to commence while latency
callback is already in progress. See also
* 19067f8c87
* 2eaa0183ef
2022-02-02 00:27:35 +01:00
Ben Loftis
1725fdadf6 pre-size Grid and Draw-option menus so they are less likely to dynamically resize with every click 2022-02-01 17:02:56 -06:00
Ben Loftis
26beea89ea changes to the Draw options should immediately sync state to instant.xml 2022-02-01 17:02:56 -06:00
Ben Loftis
b7a3de126c Fix some menus that occasionally act 'stuck'
* when a menu uses RadioActions, their initial state must be synced
* we use various methods to 'fix' this throughout the program
-> I'm forcing internal state to match in the case the Action is already active
* question:  we tend to use RadioActions for all these menu items,
   because they represent a choice between many options;
   but do we really need to use RadioActions here?
2022-02-01 17:02:56 -06:00
Robin Gareus
19067f8c87
Another refinement to address bounce + callback concurrency
see also 2eaa0183ef
2022-02-01 23:49:38 +01:00
Robin Gareus
200469dce8
Remove 18 month old debug messages 2022-02-01 22:01:41 +01:00
Robin Gareus
031a05b07a
Return early if processing is blocked
There is no need to setup thread-local variable
if they are never used.
2022-02-01 21:40:11 +01:00
Robin Gareus
2eaa0183ef
Fix bounce + latency update concurrency
When bouncing Region or Range, Session::write_one_track()
blocks processing, but takes no process-lock.

It is possible that a latency-callback arrives at the same
time while Route::bounce_process is active and calls ::run.

This can trigger a delayline.cc  Assertion `lm.locked ()' failed
in either thread.

Now latency-callbacks are postponed until the session can
process normally again
2022-02-01 21:40:11 +01:00
Ben Loftis
a100d46249 midi_input_enable_button does not need to be dynamically allocated 2022-02-01 12:26:41 -06:00
Ben Loftis
6fc4ab87de trigger_ui: MIDI trigger strips have a centered note-icon 2022-02-01 10:34:35 -06:00
Ben Loftis
69cdccb912 Add eighth-note symbols to ArdourMono font file 2022-02-01 10:12:24 -06:00
Robin Gareus
2f94e28f5b
Add Preference to change user clip library dir 2022-02-01 15:47:54 +01:00
Robin Gareus
34c8307a38
Fix DirectoryOption set filename
This properly updates the display if the preference changes.
Even with FILE_CHOOSER_ACTION_SELECT_FOLDER the API is
is get/set_filename -- set_current_folder() sets the parent folder.
2022-02-01 15:47:54 +01:00
Robin Gareus
c17fbd5abc
Fix poor_mans_glob, ~' for $HOME' is only valid at the start of a path 2022-02-01 15:47:54 +01:00
Robin Gareus
6f04296635
Expand default clip-library-dir preference at application start
This is in preparation for allowing to use it in Preferences.
Previously it was lazily set when first used.
2022-02-01 15:47:54 +01:00
Paul Davis
8e4fdb071b triggerbox: keep track of, and make available, "empty" status for a triggerbox.
Includes PBD::Signal that notifies when a TriggerBox's empty status changes
2022-01-31 22:40:05 -07:00
Robin Gareus
b55ef8543d
Fix compilation of triggerbox.cc (amend ca6c99586f) 2022-02-01 03:50:23 +01:00
Ben Loftis
e5efb57166 terminology: the user-visible name for Trigger object is a 'Trigger Slot' 2022-01-31 20:25:06 -06:00
Ben Loftis
64e4964101 terminology: the TB widget in a mixer strip is called a Trigger Grid 2022-01-31 20:25:06 -06:00
Ben Loftis
da09d1dd9a terminology: the content in a trigger is a Trigger Clip 2022-01-31 20:25:06 -06:00
Ben Loftis
bb99c53cca terminology: change visibility text to 'Cue Window' to match button name 2022-01-31 20:25:06 -06:00
Ben Loftis
2df7a8d961 terminology: set the title of the Cue(s) Window 2022-01-31 20:25:06 -06:00
Ben Loftis
bd7ffdbadb remove trigger visibility from mixer-strip context menu
* we handle trigger visibility from the Track visibility tabs
2022-01-31 20:25:06 -06:00
Ben Loftis
7748e939b8 trigger_ui: remove the popup slot-editor window until it is finished 2022-01-31 20:25:06 -06:00
Ben Loftis
5f10817126 trigger_ui: add menu items and bindings to trigger Cues A-H 2022-01-31 20:25:05 -06:00