Commit Graph

35422 Commits

Author SHA1 Message Date
Ben Loftis 24df1503a8 add menu item for Consolidate Range 2022-06-06 14:17:39 -05:00
Ben Loftis c431575f22 add menu-accessible actions for Consolidate Range 2022-06-06 14:17:38 -05:00
Ben Loftis bd62f76875 fix redundant bounced-clips from a Consolidate operation 2022-06-06 14:17:35 -05:00
Ben Loftis d842326999 add some keybindings (for Nathan at Harrison)
* expand/shrink track height
* stem-export selected tracks
* create a range from selected regions
* consolidate range
* add a single Range marker for selected region(s)
* unlink (fork) midi region from linked regions
* toggle plugin manager window
* fixed shortcut for Crop

* moved "audio patchbay" from Alt-P to Alt-Shift-A,
    making it more consistent with Alt-Shift-M: MIDI patchbay
2022-06-06 14:16:57 -05:00
Ben Loftis c41ed2f133 keybindings: reformat for readability (no-op) 2022-06-06 14:16:57 -05:00
Ben Loftis 0fda55e4fe ftm-bindings tool: strip whitespace in input files 2022-06-06 14:16:57 -05:00
Ben Loftis 7225773660 fix Crop operation: all layers, preserve fades 2022-06-06 14:16:57 -05:00
Robin Gareus f6c748537f
Fix deflection of shuttle control
See also 89a85da52c
 * Fix deflection when using percent (use sqrt/pow2)
 * Simplify linear deflection when using semitones
 * Allow deflection of > 200% when using semitones
2022-06-05 23:44:39 +02:00
Paul Davis 75fe2ce095 generic MIDI: extend select function API and make argument be bank-relative, always 2022-06-05 15:37:04 -06:00
Paul Davis eb4ac77a7b control protocol: allow protocol implementations to override rid selection API 2022-06-05 15:36:41 -06:00
Paul Davis 2e027e5894 generic MIDI: re-enable the "select" function 2022-06-05 15:03:48 -06:00
Paul Davis 33b7c38e42 control protocols: add API to control selection by RID 2022-06-05 15:03:48 -06:00
Robin Gareus c713841f39
Re-implement RTTaskList using Graph Threads
There is no longer an extra set of rt-threads, but existing
process-graph threads are reused.

There are two main benefits to this approach: graph-threads
have a SessioEvent pool and ProcessThread buffers. They are
also joined to work-groups (on macOS), or  JACK created threads
(cgroups).
2022-06-04 17:22:50 +02:00
Robin Gareus 7219791d22
Use a GraphNode base-class for processing
The process-graph trigger_queue only needs to call
::prep() and ::run() without knowing any further details.

This is in preparation for using the graph-threads for rt-tasks
2022-06-04 15:22:05 +02:00
Robin Gareus c1a1d12354
Disambiguate GraphNode::run and IOPlug::run 2022-06-04 15:19:18 +02:00
Robin Gareus 720303a217
Fix edit-note dialog length calculation
The AudioClock uses samples. Duration calculation is
done using the current clock pos. The returned distance is
using Beats, can be directly used for all notes regardless of their
position.

Now that this works correctly the dialog can also be made available
for multiple-selection.
2022-06-04 04:58:31 +02:00
Robin Gareus 637971a7df
Fix Beat duration calculation
bbt_duration_at() calls bbtwalk_to_quarters() which already
subtracts the origin's position. Previously `pos` was subtracted twice.
2022-06-04 04:33:48 +02:00
Robin Gareus ac5fb9d1f9
Revert "Debug noseq's audition issue - silent plugin processing"
This reverts commit b3497b3f8f.
2022-06-04 01:40:38 +02:00
Paul Davis 0e85655c38 right click on tempo curve should be equivalent to right click on empty bar 2022-06-03 15:02:37 -06:00
Paul Davis cc021f9e94 complete list of return values for ::get_grid_type_as_beats()
Except triplets
2022-06-03 15:02:37 -06:00
Robin Gareus 543bb85157
Use process-graph for silencing routes during audition
Route::silence() runs plugins. With a heavy session
that relies on multi-core processing, sending silence
to processors will have to be done in parallel.
Otherwise it can result in large DSP load and xruns.

This may allow to revert b3497b3f8f, which was
a prior attempt to resolve this, before understanding
the actual cause.
2022-06-03 22:50:13 +02:00
Robin Gareus 3e1e0d94c5
Add Process Graph API for Route::silence() processing 2022-06-03 22:50:13 +02:00
Robin Gareus 57a1dbb375
Update route API for silent processing 2022-06-03 22:50:13 +02:00
Robin Gareus 191fdfda72
Leave a note for RT-Tasklists (need macOS workgroups) 2022-06-03 22:50:13 +02:00
Robin Gareus 99e785541a
Coreaudio/M1: prefer device IOThread Workgroup 2022-06-03 22:50:13 +02:00
Paul Davis de2c553e1a improvements to BBT marker dialog appearance and behavior 2022-06-03 13:20:13 -06:00
Paul Davis 88a035b000 temporal: changes in API to better support BBT markers 2022-06-03 13:19:56 -06:00
Paul Davis 531db75a27 temporal: when dragging tempo/meter, move in points list as well
We spliced the point back into the tempo and meter lists correctly, but failed
to do the same thing for the same object's position in the points list.
2022-06-03 10:53:01 -06:00
Paul Davis 7dadb1407b temporal: when copying points between TempoMaps do not double-count MusicTimePoints
They were counted as tempos, and meters, and bartimes individually, which
generated new tempo and meter points in the map, which is incorrect.
2022-06-03 10:53:01 -06:00
Paul Davis 1b904285be temporal: improve utility of TempoMap::dump() output 2022-06-03 10:53:01 -06:00
Robin Gareus b3497b3f8f
Debug noseq's audition issue - silent plugin processing
When auditioning, ardour's process_audition calls Route::silence
for all routes. PluginInsert::silence simply fed all [ports of all
[replicated] plugins with silence, regardless of port-mapping.
This can cause some VST2/3 plugins to change state, and enable ports
(e.g. stereo VST2 plugins on mono tracks), causing glitches.

This commit is mainly intended to investigate how significant
this glitch is when starting to audition.
2022-06-03 17:17:07 +02:00
Robin Gareus fa8f75c145
Fix yet another oversight when coding blindly in 6a513a11f 2022-06-03 07:29:23 +02:00
Robin Gareus 5417ddd792
Fix typo in 6a513a11f 2022-06-03 07:24:42 +02:00
Robin Gareus 58979af4f2
Coreaudio: update workgroup query 2022-06-03 06:42:42 +02:00
Robin Gareus 6a513a11fa
Coreaudio: set real-time constraint before joining the workgroup
The worker thread needs to have a real-time constraint set,
before it cab be joined to the workgroup.
2022-06-03 06:42:38 +02:00
Robin Gareus 87ee609339
Amend previous commit, fix debug print format 2022-06-03 05:32:19 +02:00
Robin Gareus fd5d290217
Fix mach thread time constraints on M1
or any system where timebase is not 1 tick per ns.
2022-06-03 05:27:42 +02:00
Robin Gareus 74ee7ee091
Add parallel realtime threads to CoreAudio workgroup
This API is only available since BigSur (11.0), see also
https://developer.apple.com/documentation/audiotoolbox/workgroup_management/adding_parallel_real-time_threads_to_audio_workgroups?language=objc
2022-06-03 04:56:28 +02:00
Robin Gareus 88e9fc3e22
Remove unneccesary include (now handled by libpbd) 2022-06-03 04:52:38 +02:00
Robin Gareus c2cff575b7
Add debug info to track down M1 time-constraint issue 2022-06-03 03:52:43 +02:00
Robin Gareus b6907cffba
LuaDialog: only hide border if scrollbar is n/a 2022-06-03 01:52:02 +02:00
Robin Gareus 972389e1bd
Tweak PluginInsert::silence (used during audition, etc)
Actually run plugins (use _pending_active), and feed silence
to the plugin. Also update timing stats accordingly.
2022-06-03 01:30:02 +02:00
Robin Gareus 64f8f6c31a
Hide the border of the Lua dialog scrollbar frame
This results in much cleaner look/feel, which was apparently the
motivation for 817fccb3e5.
2022-06-02 22:32:26 +02:00
Robin Gareus 5db59b9fd6
Update scroll-window policy of Lua dialog windows
Better version of 817fccb3e5, the visibility should not depend
on the number of items in the dialog, but its requested height
vs screen height.

The main use-case is to not show the scroll-bar if the dialog has only
a few rows. Then again if the scrollbar is visible, the dialog
should not shrink below a reasonable min. height.
2022-06-02 22:04:23 +02:00
Robin Gareus 2cef35247c
Revert "Lua Dialogs: only add a scroller if we have 16+ items in the dialog"
This reverts commit 817fccb3e5.
2022-06-02 22:04:23 +02:00
Ben Loftis 10bbcd167d Mixer Scenes: scene buttons should look 'pushed in' when clicked
* trigger the actual recall on button_release
2022-06-02 13:53:45 -05:00
Robin Gareus eb0e9616f0
Implement temporary mixer scene restore, clean up code 2022-06-02 19:07:28 +02:00
Robin Gareus 8f074200cc
Fix Ferret when using onset detection + split
When not starting at a silent area, onset detection can have
a transient at 0 (region start). This needs to be ignored.
2022-06-02 01:45:47 +02:00
Robin Gareus 9ef9277d47
Clear mixer scene buttons when closing session 2022-06-02 00:52:25 +02:00
Robin Gareus d79a1aaa98
Fix mixer-scene signaling
Mixer-scenes are session objects, and the signal must not be
connected across session instances.

This fixes a read-lock after write-lock when switching snapshots:

 Session::set_state -> MixerScene::set_state ->
 MixerScene::set_name -> Change(); /* emit signal */
 ... -> Mixer_UI::update_scene_buttons -> Session::nth_mixer_scene
2022-06-02 00:19:32 +02:00