Commit Graph

34540 Commits

Author SHA1 Message Date
Robin Gareus dc4247f9bb
Consolidate processing prohibited / silent runs
This uses the Process-lock when processing is not prohibited,
removing the special-case when bouncing audio to a more
general case.

One downside is that while bouncing, timecode masters no longer
run and may loose sync-lock.

However transport does not move while Session::write_one_track()
runs, and a resume will need to seek/varispeed to catch up anyway.
2022-02-03 03:27:57 +01:00
Robin Gareus 58d81f0227
Remove Session::process_can_proceed
Auditioning uses dedicated callback method. There is no need to
return early when starting to audition.
butler_completed_transport_work() which handles PostTransportAudition
and switches process-callbacks happens in sync in Session::process().
2022-02-03 03:23:08 +01: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