Commit graph

35990 commits

Author SHA1 Message Date
Robin Gareus
52047e108d
Fix windows builds (amend 01b06906b) 2022-06-09 18:13:33 +02:00
Robin Gareus
4296be2c70
Ignore double-middle-click when restoring scenes
Previously rapid middle-clicks could result in creating
a temporary mixer_scene while one is already in use.
2022-06-09 02:25:55 +02:00
Robin Gareus
c16b7b6dd5
MixerScene: only request actual value changes
This is otherwise only caught later in the rt-thread after
scheduling a RealTimeOperation via AutomationControl::check_rt.

There is no need to schedule cross-thread events when the
value is not about to be changed.

This can greatly reduce the number of signals emitted by
restoring a slot, which improves performance and also prevents
the EventPool from filling up with useless events.
2022-06-09 02:25:51 +02:00
Robin Gareus
01b06906b0
Mitigate "POOL OUT OF MEMORY" when batch changing controllables 2022-06-09 02:25:49 +02:00
Robin Gareus
b1b57571e7
Prevent RealTimeOperation EventQueue clogging
It can happen that the EventQueue fills up with
SessionEvent::RealTimeOperation. Those are to scheduled to be
free()ed later the GUI thread via event_loop->call_slot().

However it can happen that the GUI EventPool is full, so the request
to call Session::rt_cleanup, is never executed.

In this case the SessionEvent pool can fill up with RealTime
Operations which remain there permanently.
2022-06-09 02:25:45 +02:00
Robin Gareus
95aa39d1c4
Update call_slot() API, inform caller if slot cannot be queued
It can happen that ::get_request() returns NULL if the
EventPool is full. In that case the slot is never called.

In this case the caller can now take action.
2022-06-09 01:46:27 +02:00
Robin Gareus
03e0fe0a73
Add API to query Session event pool size 2022-06-09 00:41:23 +02:00
Robin Gareus
e81dd6a943
Some more AU GUI debug messages 2022-06-07 23:49:42 +02:00
Robin Gareus
fac6d6bf98
Use separate plugin-cache for Apple/M1
Plugins on Apple can be multi-arch (Intel + ARM), or AUs may
be bridged by Rosetta.

A user can also run Intel binary of Ardour or M1 binary on
M1 CPUs on macOS. Each can see different plugins - notably
VST3 plugins that are Intel only can be scanned using the
Intel binary, but are later not available with the M1 build.
2022-06-07 23:49:42 +02:00
Robin Gareus
b8c3f9342a
Fix typo for ARM MIDI ringbuffer alignment 2022-06-07 23:49:42 +02:00
Ben Loftis
e5c19994c9 mixer scenes: reminder for mac trackpad users: Ctrl+Alt is a middle-click 2022-06-07 16:35:14 -05:00
Ben Loftis
fed731cb3d add single range marker: fix dialog to ask for a Range not a Location 2022-06-07 16:35:14 -05:00
Ben Loftis
ab1d9b0e39 further work on shortcuts...
fix bindings to shifted symbols (see below)
  add shortcuts to recorder, virtual midi keyboard
  change shortcut (secondary+c) from Big Clock to Cue page

(*) shifted symbols like '+' are accessed in a very specific way, like:
<@TERTIARY@>plus
and
<@SECONDARY@><@TERTIARY@>plus
2022-06-07 16:35:08 -05:00
Robin Gareus
2d631688f4
Yet another attempt to debug/fix AU plugin window size on mac/M1 2022-06-07 17:47:07 +02:00
Robin Gareus
5a0b22f8a4
Revert "Debug AU plugin window size issues on macOS/M1"
This reverts commit 81322a4ac9.
2022-06-07 17:45:15 +02:00
Robin Gareus
81322a4ac9
Debug AU plugin window size issues on macOS/M1 2022-06-07 02:56:46 +02:00
Robin Gareus
efa2efa221
Fix "muted" indicator (dup on audio-regions, missing on macOS)
RegionView::make_name already adds the prefix, AudioRegionView
does not need to add it again.

Also the font used on macOS (Lucia Grande) has a rather limited
UTF-8 charset and does not support:
 \u20F0 (COMBINING ENCLOSING CIRCLE BACKSLASH)
 \U0001F507 (SPEAKER WITH CANCELLATION STROKE)
so for now we keep using "!" on macOS.
2022-06-07 02:33:55 +02:00
Ben Loftis
828d1245c9 range analysis was only accessible by context-click; add to main menu 2022-06-06 14:17:39 -05:00
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