13
0
Commit Graph

21780 Commits

Author SHA1 Message Date
1fa42dcb95 provide rec-enable state for TriggerBoxen 2024-10-17 07:44:32 -06:00
052ef18c4a cliprec: add processor to tracks, and get MIDITrigger prepared for capture 2024-10-17 07:44:32 -06:00
86b01a5d2f provide an interesting method to convert an RTMidiBuffer<samples> to RTMidiBuffer<beats> without any memory reallocation 2024-10-17 07:44:32 -06:00
88c326aee0 more clip recording refactoring 2024-10-17 07:44:32 -06:00
aa9a998f60 small steps towards clip recording 2024-10-17 07:44:32 -06:00
107706af8a some tiny steps towards using new data structures for clip recording 2024-10-17 07:44:32 -06:00
75f56cd3e1 the great onceification (libs)
Replace use of #ifndef header guards with #pragma once

Modern C++, baby!
2024-10-17 07:44:31 -06:00
a9205ffd55 use nullptr, not NULL 2024-10-17 07:44:31 -06:00
8baaa7eb66 TriggerReference requires some sort of lifetime tracking
For now we use std::weak_ptr and std::enable_shared_from_this to accomplish tracking. There
may be an argument for using our own (PBD::Destructible) mechanisms instead.
2024-10-17 07:44:31 -06:00
e3ff81efcb remove dangling line of code that does nothing 2024-10-17 07:44:31 -06:00
7901b4119f we're gonna need a bigger debug set 2024-10-17 07:44:31 -06:00
c8924f4133 fix lollipop drawing
Cairo coordinate/argument limits are much smaller than the canvas. Trying
to clip to a gigantic rectangle throws cairo into a weird state, so
make sure we only clip to a part an exposed area
2024-10-17 07:44:31 -06:00
e67a3387fd Fix Editor Lua bindings
Methods that have been moved to EditingContext need
to reference the abstract definition there, and PublicEditor's
first parent class also need to be EditingContext (same
memory address)
2024-10-17 07:44:31 -06:00
7e7440bc33 Fix Lua bindings, Session is-a HistoryOwner
For derived classes to work in Lua w/o explicit cast,
it needs to be the first parent.
2024-10-17 07:44:31 -06:00
2fceb66193 manual fixups for errors during rebasing against master 2024-10-17 07:44:31 -06:00
911ad78c06 add API to access PBD::UndoHistory member of HistoryOwner 2024-10-17 07:44:31 -06:00
a61f49ad4f show Bindings _name in DEBUG_TRACE output 2024-10-17 07:44:31 -06:00
42959b1313 adjust MidiModel API to require HistoryOwner not Session for commands 2024-10-17 07:44:31 -06:00
8c086693af show HistoryOwner::_name in DEBUG_TRACE messages 2024-10-17 07:44:31 -06:00
b989464914 NO-OP: add useful comment 2024-10-17 07:44:31 -06:00
e8fdbb8cd9 Session IS-A history owner 2024-10-17 07:44:31 -06:00
d30c8a1286 abstract concept of a history owner from ARDOUR::Session into libpbd 2024-10-17 07:44:31 -06:00
fd6afb30e6 use MidiModel::ContentsChanged to drive MIDI cue edit swaps
No need for a special method called post-edit
2024-10-17 07:44:31 -06:00
62d36832c6 more changes to get MIDI clip editing working
MIDITrigger now has a direct reference to a MidiModel, and uses
that as the basis for discovering what state has changed and needs
updated after an edit operation pushes a new state to the trigger
2024-10-17 07:44:30 -06:00
7bf464795a add ::render() to MidiModel since that's what we'll be editing 2024-10-17 07:44:30 -06:00
06d5496f70 further preparation for MIDI cue editing in triggerbox code 2024-10-17 07:44:30 -06:00
9060a32c34 MIDI state trackers: dump() is const
Plus minor fixes to ::resolve_diff()
2024-10-17 07:44:30 -06:00
7dee98279a extend MidiModel and MIDITrigger in preparation for edit-change handling 2024-10-17 07:44:30 -06:00
5da8de05ca NO-OP: internal whitespace and newline cleanup 2024-10-17 07:44:30 -06:00
4267d5b0d7 MidiStateTracker: extend API to allow "diffs" between two MidiStateTrackers 2024-10-17 07:44:30 -06:00
d550292f8f additional DEBUG_TRACE (Destruction) output 2024-10-17 07:44:30 -06:00
e7731f2e89 add -D actions to gtkmm2ext 2024-10-17 07:44:30 -06:00
009a0e6ffb stacktraces to help track down missing actions 2024-10-17 07:44:30 -06:00
59ed3d7138 cleanup canvas piano roll header so that it can exist with no current MidiView 2024-10-17 07:44:30 -06:00
10244c0360 tempo bar and BBT ruler in MIDI cue editor 2024-10-17 07:44:30 -06:00
b35b30c230 factor out code to extract a TempoMap from an SMF 2024-10-17 07:44:29 -06:00
e3205bded0 do something to make MIDI bindings accessible in any EditingContext 2024-10-17 07:44:29 -06:00
10b48d2cc4 lock in some major steps for the midi cue/pianoroll editor 2024-10-17 07:44:29 -06:00
0eeb281bd6 remove debug output 2024-10-17 07:44:29 -06:00
8e4edd0c07 Revert "separate out all bounds/position info from Region into "Slice""
This reverts commit f3da2cfd8b9dc077ee35fc3bbaf133adec23d463.
2024-10-17 07:44:29 -06:00
7a5d7cfe69 Revert "add set_* methods to Slice; remove property additions"
This reverts commit 81eee23baab2817218c1766c7d3c37fb7435e619.
2024-10-17 07:44:29 -06:00
659382ecd8 convert debug output from printf to type-safe iostreams 2024-10-17 07:44:29 -06:00
a6e02d7a94 add set_* methods to Slice; remove property additions
Derived classes (currently only Region) just register the Slice properties
_start and _length.
2024-10-17 07:44:29 -06:00
45328723b0 separate out all bounds/position info from Region into "Slice"
The idea here is to be able to describe region size, start and position
independently of an actual Region object.
2024-10-17 07:44:29 -06:00
7799adc8db make Stateful a virtual base class of StatefulDestructible
This permits dual inheritance from Stateful.
2024-10-17 07:44:29 -06:00
204d4237f8 further steps towards MidiRegionView outside the Editor 2024-10-17 07:44:29 -06:00
e3d790207f modify MIDITrigger to use an RTMidiBuffer<Beats,Beats> for playback, not a MidiModel
Creating an iterator on a MidiModel (Sequence) creates a read-lock on the same,
which exists until the iterator is destroyed.

This new designs renders the model/source to an RTMidiBuffer, then atomically
swaps in a new RTMidiBuffer in an RT context.

Not yet implemented in this temporary branch is handling required
state-changing messages when the buffer is swapped.
2024-10-17 07:44:28 -06:00
a4a277c141 templatize RTMidiBuffer to allow use in different time domains
Also add ::track_state() method to configue a MidiStateTracker
to correspond to the state implied by an RTMidiBuffer<T,D>
at a given point in time.
2024-10-17 07:44:28 -06:00
b693d07fcb Add a new ::render() method to MidiSource that writes to an EventSink 2024-10-17 07:44:28 -06:00
9c292ed6f4
Merge branch 'ardour' 2024-10-17 15:38:42 +02:00
0986b8d1e8
Revert "Only enable RegionFX in debug builds for the time being"
This reverts commit d525f8d60c.
2024-10-17 15:36:29 +02:00
John Emmas
b6cb758357 Another minor tweak to fix a build issue with MSVC/c++17
Fixes a conflict between 'std::byte' (new in c++17) and earlier declarations / typedef's that defined 'byte'
2024-10-17 12:07:05 +01:00
d525f8d60c
Only enable RegionFX in debug builds for the time being
This reverts commit 14ff2f2e68.
2024-10-16 18:29:51 +02:00
6149771910 fix yet more cases where SMF are imported and named incorrectly 2024-10-15 22:35:04 -06:00
Mads Kiilerich
0d4bce8663
backends: Fix class name in debug and error messages for set_latency_range and get_latency_range traces 2024-10-15 00:41:12 +02:00
Mads Kiilerich
99ba70384a
FaderPort8: Improve DEBUG_TRACE messages 2024-10-15 00:41:12 +02:00
Mads Kiilerich
5c763c99ba
FaderPort8: Use explicit "Port 1" for FP8 too
84e38b4c65 made the same change for FP16.

It has apparently not been necessary for FP8 so far, because backends
have happened to report "Port 1" before the control port. But that is
not necessarily the case. It failed for me when playing around.

Change FP8 handling to also not make assumptions about the device order
returned by the backend.
2024-10-15 00:41:12 +02:00
Mads Kiilerich
b7249c8fe7
build: Set _POSIX_C_SOURCE=200809L instead of comment about -std=gnu99 in 8fea1ea42e
We are converging towards setting it globally.
2024-10-14 22:57:15 +02:00
eb87b0e2eb
Remove old safety check
These days it only produces false positives (locate at start
of session export).

We leave `ENSURE_PROCESS_THREAD` in place, since it may
come in handy at some point (eg. static analysis, documentation)
2024-10-14 22:52:37 +02:00
8115578d4e
Add RT thread priority debugging 2024-10-14 21:49:56 +02:00
63d3d1ff3d
Initialize fader's numeric entry adjustment
Previously the internal adjustment used for numeric entry
was left at 0 if the BarController's adjustment was never modified.
2024-10-14 17:58:00 +02:00
John Emmas
fd8808d7b8 Minor declaration issue that upsets MSVC/c++17 2024-10-13 11:39:48 +01:00
0aff098541
Fix IO Thread priority
This adds `pbd_pthread_priority` indirection to correctly get
the absolute thread priority.

and for consistency a 4 letter enum is used.
2024-10-11 10:06:49 +02:00
be4dab7336
Merge branch 'ardour' 2024-10-10 03:18:28 +02:00
5efa5b4529
Optimize audio region read when no regionFX are used 2024-10-10 02:45:03 +02:00
43dd75b10e invalidate audio region cache when the region _start changes 2024-10-09 16:53:55 -06:00
14ff2f2e68
Revert "Only enable RegionFX in debug builds for the time being"
This reverts commit cae710cd7c.
2024-10-09 20:49:36 +02:00
2a96c9ce98 fix issues with MIDI playback (and who knows what else) near start of roll 2024-10-08 08:36:23 -06:00
cae710cd7c
Only enable RegionFX in debug builds for the time being 2024-10-08 16:23:43 +02:00
59e98bd824
Fix reading peak-file after EOF
This issue was introduced in b28090c64c
2024-10-08 11:54:14 +02:00
33806a2735
Revert "Only enable RegionFX in debug builds for the time being"
This reverts commit 2d076cccb1.
2024-10-03 17:28:09 +02:00
e3e014bfe6 NO-OP: comment work 2024-10-02 11:03:08 -06:00
52336eb2f0 fix MIDI Clock output times by using the correct call to get tempo at a position
Could be worth a double check of the codebase/hiding the API that ignores ramping
2024-10-02 09:13:28 -06:00
adc9d9e0af
VST3: work around plugins that do not heed ContextInfo::kSendCount
see also c5618f01d6
2024-10-01 23:03:19 +02:00
John Emmas
07c79ce92c Small changes to make pthread_utils.cc buildable again with MSVC 2024-10-01 20:28:16 +01:00
44b2377e72
VST3: Fix possible deadlock when using PSL extension for sends
see also c5618f01d6
2024-10-01 19:24:36 +02:00
ca7ac7027b
VST3: add more debug messages for PSL extensions 2024-10-01 01:21:35 +02:00
22a2cb0624
Ignore inactive routes for pre-roll sub-cycles 2024-09-30 23:36:36 +02:00
1aad6805b3
Fix count-in/preroll recording offsets
Notably `Route::process_output_buffers` uses

```
  output_latency = speed * _output_latency;
```

here, speed already needs to be non-zero during count-in
and pre-roll.
2024-09-30 23:36:06 +02:00
dab22a7c70
Explicitly set Windows Process Scheduling Class 2024-09-30 19:57:53 +02:00
ed437afda7
Fix thread priorities for Windows builds 2024-09-30 19:07:53 +02:00
11f71a3297
Fix playback of sessions with low sample-rate
previously, _chunksize =
```
  minimum_disk_read_bytes / sizeof (Sample)
```

can become larger then actual allocated ringbuffer:

```
  audio_playback_buffer_seconds * sample-rate
```

In which case the buffer was never filled.
The disk writer has similar issues
2024-09-29 18:25:33 +02:00
46f61d7662
Fix and simplify Playlist::fade_range for multiple ranges 2024-09-28 21:16:55 +02:00
28605b5351
Fix Audio region fade property mapping
This fixes an issue when undoing region fades.
Particularly but not limited to the following:

1. select a region and split it in the middle
2. switch to range tool. make a range selection across the split
3. Edit > Fade > Fade range seection  (or press `/`)
4. Undo

Previously the fade-out of the earlier region was not undone.
2024-09-28 21:15:57 +02:00
1d921dec0b
Debug thread sched_priority 2024-09-28 14:47:52 +02:00
2014faaeca
Fix BaseUI thread priority 2024-09-28 14:45:05 +02:00
dd4a1a6d73
Set thread priority relative to backend
This also removed direct calls to backend real_time_priority
for good measure.
2024-09-28 04:15:39 +02:00
395833e4f8
Always use PBD API for thread priorities 2024-09-28 03:58:48 +02:00
0b5a197f76
NO-OP: whitespace 2024-09-28 03:16:57 +02:00
d089f38481
Use config variable to set IOTask thread policy 2024-09-28 03:16:54 +02:00
dcd79f3135
Debug Backend thread creation 2024-09-28 03:16:50 +02:00
aeb4f925c6
PBD pthreads: allow unlimited stacksize 2024-09-28 03:16:45 +02:00
e8c67408bb
Impose stack limit on backend threads (freewheeling, MIDI poll) 2024-09-28 03:16:42 +02:00
e8445d13ec
Require thread name to be passed to PBD::Thread and store thread 2024-09-28 03:16:30 +02:00
88a24ae8e5
Let PBD::Thread set thread-name 2024-09-28 03:16:07 +02:00
538a8cbccc
Consolidate calls to `pthread_create' (2/2) 2024-09-28 03:16:02 +02:00
8d3ebde60e
Distinguish Threads and ThreadName debugging
This also allows for -DThread to enable both.

We celebrate the 128th debug bit and look forward to
the next 64!
2024-09-28 03:15:36 +02:00
c4fdd5356c
Enable debugging for stored threads 2024-09-28 03:14:16 +02:00
301777e7fe
Remove cruft 2024-09-27 18:03:11 +02:00
71a3161252
Error handling for 3751d20ce 2024-09-27 17:20:42 +02:00
3751d20ce9
Use dedicated thread to start export timespans #9798
This addresses an issue with creating a one-shot thread
directly from the realtime callback, which can be problematic
on Windows.
2024-09-27 06:00:15 +02:00
d8e4e7b259
Fix calculating intersection of waveform rectangle
see also 68eb63e0c8
2024-09-27 02:54:35 +02:00
9945d7721f
Allow to investigate I/O thread policy
see
https://discourse.ardour.org/t/ardour-8-7-unable-to-connect-to-audio-backend/110774/10
https://discourse.ardour.org/t/ardour-8-7-x-run-issues/110767/2
2024-09-27 01:41:40 +02:00
6cc54aa1b0
Fix playhead moving beyond loop range
When some other transport related session event (anything that
requires non_realtime_work_pending, e.g. PostTransportOverWrite)
coincides with SessionEvent::AutoLoop, the auto-loop event
was removed from the main event queue and executed as one-shot
immediate event.

While looping the AutoLoop event needs to remain on the main
event queue.
2024-09-26 16:26:05 +02:00
dc92ed1bc9
Fix Pre-Fader RegionFx when looping 2024-09-26 04:39:19 +02:00
180e90b81a
Only call non_realtime_locate() when locating
`butler_transport_work()` may be called for various reasons,
notably PostTransportOverWrite. At that point in time the
transport may still be rolling or stopping with rtloc already
set.

This can cause DR::Underruns since seek clear the entire
disk reader buffer.
2024-09-26 03:45:24 +02:00
4f33105ae0
Process PostTransportOverWrite after all
This is needed to properly decrement "should_do_transport_work".
After a seek the DR:_pending_overwrite flag will have been
cleared, so not much extra work happens here.
2024-09-26 03:25:13 +02:00
e1f465a952
NO-OP: improve butler and disk-i/o debug messages 2024-09-26 03:25:07 +02:00
75e6a77c3e
Fix another debug message 2024-09-26 02:26:30 +02:00
9d0415ba04
Waveview: fix visual jitter when trimming or splitting regions
The left edge of a region on the the editor is rounded to be
on a pixel. When zoomed out, the position corresponding to that
pixel is not usually identical to the region's position().

We need to correct for this as best as possible, while keeping
peaks aligned to pixels.
2024-09-26 02:21:24 +02:00
68eb63e0c8
Waveview: fix rounding, span entire region rectangle
Previously samples at the end could end up being cropped,
when the Waveview is rendered using an offset.
2024-09-26 02:21:24 +02:00
b28090c64c
Peakdata: start striding at consistent offsets 2024-09-26 02:21:24 +02:00
5d65d7f051
Peakdata: correctly set peaks of left and right end 2024-09-26 02:21:23 +02:00
18e0cba1cb
Fix underruns when looping/locating and changing region content
Previously loop-wrap around asked the butler to perform
a unnecessary seek operation next time it is summoned.

If the butler is then summoned for a PostTransportOverWrite
event, the seek causes a DR::Underrun.
2024-09-25 20:06:08 +02:00
5af023c70b
Fix some debug messages 2024-09-25 20:06:08 +02:00
3d1c414a94 initialize member variable 2024-09-24 14:52:06 -06:00
0e28620a7a prevent Session::StateSaved being emitted when doing save-as with no switch-to
The signal would be emitted while the session was temporarily renamed,
making it appear that we had switched to the new session, despite instructions
not to do so. We had not actually done so, but the saved-as name would show up
on window titles.
2024-09-24 14:50:35 -06:00
72cac07ae7
Generic MIDI: do not send touch events for all mapped controlers
Previously a start-touch was sent for any bound MIDI
Controllable on each incoming MIDI Control event.
2024-09-24 16:11:00 +02:00
d3f536a7ff
Remove unused variable 2024-09-24 16:10:59 +02:00
4024a4354c region grouping: Overdubbing in non-layered mode was assigning wrong groups 2024-09-23 16:35:04 -05:00
f75f5b0ded add option to name new MIDI tracks from SMF with just the SMF track name (libs edition) 2024-09-22 09:49:55 -06:00
f1b9f48c87
Merge branch 'ardour' 2024-09-16 14:46:05 +02:00
9c64e7d141
Fix libhid API builds with recent gcc/glib `
Since glibc 2.10 `wcsdup` and `strtok_r` require `_POSIX_C_SOURCE`

(see also da520ce 4b8b5ac)
2024-09-15 12:00:12 +02:00
Fabio Pesari
f94bde59d7
Fix for Boost 1.8.5
Recent boost prevents calls to `get_child` with temporary
default values.
2024-09-15 11:43:52 +02:00
1f70d54989 avoid call of a null function pointer 2024-09-13 08:24:04 -06:00
79e78394c2 track modal window show/hide, not realize/finalize 2024-09-13 16:02:59 +02:00
ab533c38a3
LV2 fix a tiny memory leak introduced in c0b61d5a28 2024-09-11 05:31:27 +02:00
1737b48aec Revert "try to add some debugging for macOS modal/menu handling"
This reverts commit c5751db473.
2024-09-10 16:34:16 -06:00
bf6ce27b03 Revert "try to fix up previous commit"
This reverts commit 04305774cc.
2024-09-10 16:34:03 -06:00
04305774cc try to fix up previous commit 2024-09-10 13:48:59 -06:00
c5751db473 try to add some debugging for macOS modal/menu handling 2024-09-10 13:09:13 -06:00
e8644654c2
Prepare to filter incoming LTC 2024-09-10 18:25:06 +02:00
cd6dca6063
Allow to query Biquad coefficients 2024-09-10 18:25:02 +02:00
c0b61d5a28
Fix LV2 optional connect port logging #9790 2024-09-09 16:04:35 +02:00
75d2b46ded
Add Lua bindings to query MIDI SysEx and PatchChanges 2024-09-08 22:59:09 +02:00
3b5a6e1f15
Fix MIDI SysEx undo/redo
Previously `new_sysex_diff_command` used XMLNode c'tor.
An Unnamed undo transaction was created, and undo did not work.
2024-09-08 21:09:37 +02:00
d257c8c0ce
Prevent endless recursive directory scans
This can happen when a folder symlinks to itself or subfolders
in some similar recursive pattern.
2024-09-08 01:33:57 +02:00
e8162a421d
LV2: Log connect-optional ports 2024-09-07 18:28:37 +02:00
Daniel Appelt
af8a7df991
Connect unknown optional LV2 ports to NULL 2024-09-07 18:07:12 +02:00
Daniel Appelt
5a1fc0ddc9
LV2: Ignore connection optional ports 2024-09-07 18:07:01 +02:00
145f6d587c
fix previous commit 2024-09-06 20:03:48 +02:00
9e469ad030
macVST: prevent endless recursive scans 2024-09-06 20:00:36 +02:00
544b53f65c
Merge branch 'ardour' 2024-09-05 23:49:53 +02:00
267cddfb05
Fix stuck insensitive macOS main menu
Popup Dialog Windows never unset the modal flag.
e.g. Session > Save Snapshot & switch.

Furthermore a 2nd dialog was able to get the menu stuck
forever (e.g. Snapshot & Switch .. -> Replace existing?
2024-09-05 18:27:44 +02:00
3acc8c76ca
Handle Filechooser Location entry
In order for the Filechooser Location widget to work two
things need to be setup, which only the FileChooserDialog
does:
 * subscribe to Widget's "response-requested" signal
 * call should_respond () hook from top-level window's
   default handler.

The Location Entry emits "activates-default". In case of
the Dialog, that calls the dialogs response callback,
which then calls ` _gtk_file_chooser_embed_should_respond`.

That handles changes made by the user to the location entry.

-=-

Gtk::FileChooserWidget does not handle this, "response-requested"
signal is not exposed, nor is _gtk_file_chooser_embed_should_respond
available outside Gtk.

This change at least selects the file in the treeview, which
allows further handling, without interfering with FileChooserDialog's
behavior.
2024-09-04 22:29:24 +02:00
8fea1ea42e
Update hidapi 2024-09-03 20:56:05 +02:00
e4d9344d2a
Revert PinMapping Changes
This reverts
 * e48d97ed69
 * 98c906b733
 * 0cf73d459b

because the C++ API std::map:at can throw and exception
was not implemented (and also deemed excessive for the
case at hand). Also an explicit API for *p*plugin_pin
mapping is preferable and facilitates debugging.
2024-09-03 13:25:48 +02:00
Matthijs Kooijman
a9a5787399
osc: Fix send and plugin page size in /set_surface
When handling the `/set_surface` command, the code would set
plug_page_size to the new value first, and call `sel_plug_pagesize()`
later. The latter then sees the page size is already the same, so it
leaves it unchanged and also does not send the page size to the
OSCSelectObserver object. In practice, this means that only the default
plugin page size from the preferences or set with
`/set_surface/plugin_page_size` take effect and values set with
`/set_surface` are ignored.

Exactly the same thing happens for the send page size.

This code has been like this since it was first introduced in comit
9c0f6ea948 (OSC: Allow set_surface to set send and plugin page sizes.,
2017-06-13)

This commit fixes this by omitting the first assignment.
2024-09-03 00:40:11 +02:00
Matthijs Kooijman
142fa9f55d
osc: Let OSCSelectObserver know about feedback config changes
Before this commit, OSCSelectObserver would read the feedback value when
it was created, but then never update it anymore. In practice, the
OSCSelectObserver is created on startup, and when the surface connects
and configures feeback, this value is not applied.

For example, when sending `/set_surface` with a feedback value of
4 (Send SSID as path extension), `/strip/*` would get their ssid put
into the path, but `/select/plugin/*` messages would not have their
parameter id in the path. When setting the corresponding checkbox in the
default feedback preferences, it is applied as expected.

This commit passes the new feedback value to the OSCSelectObserver
instance whenever it changes, which ensures the value is applied as
expected.
2024-09-03 00:40:11 +02:00
Alejandro Domínguez
867eaa0b13
Remove unused libs/pbd/pbd/stl_functors.h 2024-09-01 19:17:10 +02:00
Alejandro Domínguez
e48d97ed69
Turn PinMappings class into a type alias 2024-09-01 19:10:20 +02:00
da0e6c7d60
Add explicit PBD namespace prefix to Signal
This will simplify search/replace when using
a variadic template for PBD::Signal.
2024-09-01 18:48:54 +02:00
1b343a1fec
Revert "Reduce locate overhead for optimized builds"
This reverts commit 960d72012d.
2024-08-31 23:42:56 +02:00
3391c69ec0
Profile RegionFx processing 2024-08-31 15:19:35 +02:00
960d72012d
Reduce locate overhead for optimized builds 2024-08-31 13:51:21 +02:00
98c906b733
Remove unused function 2024-08-31 05:55:12 +02:00
Alejandro Domínguez
0cf73d459b
Deprecate ARDOUR::PinMappings C++11's std::map::at emulation 2024-08-31 05:49:03 +02:00
Alejandro Domínguez
2263b0280b
Change to C++11-style std::map initialization in ExportHandler::finish_timespan() 2024-08-31 05:49:03 +02:00
6d47758671
Add TailTime Icon 2024-08-31 02:55:04 +02:00
520bbfe515
Add proper API to expose plugin tailtime
This is in preparation to display current tail time,
and allow a user to override it.

This is similar to existing processor latency API.
2024-08-31 02:55:04 +02:00
79fcb3d0ba use new launckkey image file for surface GUI dialog 2024-08-29 18:54:11 -06:00
cac849fe6d add new novation LK4 surface support 2024-08-29 18:31:00 -06:00
22411416ca add new member to a MIDI surface to allow receipt of data before surface is running (for device inquiries) 2024-08-29 18:28:16 -06:00
2d076cccb1
Only enable RegionFX in debug builds for the time being 2024-08-30 02:18:49 +02:00
Alejandro Domínguez
f16ad8053e
Remove #include <boost/enable_shared_from_this.hpp> 2024-08-29 23:08:43 +02:00
Alejandro Domínguez
eb72aae389
Remove #include <boost/smart_ptr.hpp> 2024-08-29 23:08:43 +02:00
Alejandro Domínguez
17275239db
Remove boost-debug 2024-08-29 23:08:42 +02:00
Alejandro Domínguez
c0062fff86
Remove #include <boost/shared_ptr.hpp> 2024-08-29 23:08:42 +02:00
Alejandro Domínguez
3abf0a9058
Remove unneeded #include <boost/math/distributions.hpp> 2024-08-29 23:08:42 +02:00
Alejandro Domínguez
1752f30a66
Remove #include <boost/utility.hpp> 2024-08-29 23:08:42 +02:00
Alejandro Domínguez
843e776ca8
Remove #include <boost/dynamic_bitset.hpp> 2024-08-29 23:08:42 +02:00
Alejandro Domínguez
da2935c285
Remove #include <boost/algorithm/string/trim.hpp> 2024-08-29 23:08:42 +02:00
Alejandro Domínguez
7586c2d50a
Remove #include <boost/algorithm/string/erase.hpp> 2024-08-29 23:08:42 +02:00
Alejandro Domínguez
7c39a374fa
Narrow scope of boost::hash_combine include 2024-08-29 23:08:41 +02:00
Alejandro Domínguez
dba8f4ec40
Remove #include <boost/rational.hpp> 2024-08-29 23:08:41 +02:00
Alejandro Domínguez
635446fd3b
Remove #include <boost/static_assert.hpp> 2024-08-29 23:08:41 +02:00
Alejandro Domínguez
eff42b22fd
Remove #include <boost/utility.hpp> 2024-08-29 23:08:41 +02:00
Alejandro Domínguez
a18c1c5750
Remove #include <boost/shared_ptr.hpp> 2024-08-29 23:08:41 +02:00
f4c978cf88
Fix MIDI patch/CC state restore #9770
MidiTrack::restore_controls is triggered by SessionLoaded
event. Yet MidiControl::actually_set_value checks if
_session.loading() is true and postpones sending actual
events to the synth (which may not be fully loaded).

Before 5d02970de8, Session::post_engine_init unset
"Loading" flag early on, so "loading" was already unset
by the time `SessionLoaded` was emitted.
2024-08-29 04:26:33 +02:00
84a3d0c559
Fix copy/paste, windows (not Linux) VSTs.. 2024-08-28 04:28:26 +02:00
c77d2d42b9
VST3: fix runloop query (amend 83207e04e7)
The plugin itself needs to be able to return a runloop,
for the UI, even if the factory has one.
2024-08-27 21:56:17 +02:00
8fd081679d
Add a debug option to investigate RegionFX related underruns 2024-08-27 17:50:24 +02:00
981dfd67e7 call our "transport stopped" code path when JACK transport stops
this fixes issues with MIDI region recording, which otherwise never
goes through the code path required to "fix" the nascent data into
sources and regions.
2024-08-27 09:44:00 -06:00
83207e04e7
VST3: move static runloop from plugin to Host
This fixes a crash at exit for some Linux VST3s when Ardour
calls ::release_factory() before unloading the module.

The plugin will then also call unref the hostContext. Previously
the lookup interface for the host context was provided by the
plugin; which at that point in time was already deleted.
2024-08-27 02:04:21 +02:00
3ced8cc6bc
RegionFX: fix undo/redo of region state
Previously this caused deadlocks (read lock while holding
write lock), and also not dropped references of plugins.

Ideally undo/redo of FX unrelated region state
will not re-instantiate plugins; we can optimize this later.
2024-08-27 01:09:06 +02:00
eac3283b49
Use a sensible size for DSP to GUI MIDI messages
See also a1ba561cc5. JACK2 and pipewire unconditionally
report 32kB, Ardour internal backends report 8kB, also
independent of the buffersize.
While jack1 by default announces the audio buffersize.

A sensible value assumes that the GUI reads the FIFO at
a least 25fps, while also allowing MIDI ports to merge
data (hence 2 * raw_buffer_size). Yet limit to 64k per track.
2024-08-25 00:09:36 +02:00
c92c8c8fa2
VST3: fix deadlock when recalling program changes latency
The GUI thread may call set_program() which can triggers
the plugin directly calling restartComponent from the same
thread.
2024-08-24 11:26:49 +02:00
66b3ad79c1
RegionFx: mark session dirty when adding/removing plugins 2024-08-24 00:23:24 +02:00
e419b314a2
RegionFx: handle missing plugin, retain state
Since RegionFx are significantly simpler compared
to processors, missing plugin state can directly be handled
in the implantation without creating a subclass similar to
UnknownProcessor.
2024-08-23 15:42:33 +02:00
b6e187193d
RegionFx: abstract Plugin tail API 2024-08-23 15:26:50 +02:00
a1ba561cc5
Improve reliability of MIDI event rec-box
Previously there was a race condition. DiskWriter::run()
cleared the gui_feed_buffer before writing new events.
If the GUI thread had not yet picked up the events by then
they were not displayed. Furthermore due to the try-lock,
some events may have been written to the buffer in the first
place.

This fixes missing events (notably stuck notes) in the red
record box while recording MIDI.
2024-08-22 18:34:37 +02:00
9465ff16cb
Fix Route Fader (and mute) latency offset #9780
_output latency was not used for those. Processor automation
was not affected.

This also fixes the visual offset of automation vs buttons/slider
when the transport is not running.
2024-08-21 18:54:16 +02:00
908a402a75
Drop some shared pointer references after RCU writes
When removing instances from some RCU managed list or vector,
they can still live on as shared_ptr references on the
RCU's dead wood stack.

In many cases this is not an issue, in these cases it's prudent.

see also 44610c7877
2024-08-21 03:57:08 +02:00
4d1d938263
I/O Plugin: delete plugin after removing it
Previously this kept a shared pointer reference to the
plugin around, and ports remained registered.

See also 44610c7877 (RCU update)
2024-08-21 03:57:05 +02:00
1b07ad731e
RegionFX: use actual plugin tail 2024-08-20 18:58:45 +02:00
09a3c325ec
RegionFx: don't crash if plugin is missing on session load 2024-08-20 01:45:11 +02:00
6de2d8f5c4 macOS: prevent the Quit main menu item from interferring with modal rules 2024-08-19 15:15:45 -06:00
d455f06f51 fix trailing whitespace 2024-08-19 15:15:45 -06:00
9e9164f0d0 remove unnecessary header include 2024-08-19 15:15:45 -06:00
51d95c189f use NSMenuValidation informal protocol to desensitize app menu items 2024-08-19 15:15:45 -06:00