Commit Graph

37271 Commits

Author SHA1 Message Date
Ben Loftis 5b42422c60 allow single-click in the mapping ruler to add tempo markers (again)
* this is useful to make a 'guard point' ...
* ... this just preserves/sustains the tempo from the prior tempo marker
2023-04-28 09:29:01 -05:00
Paul Davis 57d2a85c0a NO-OP: remove unused variable warning 2023-04-27 19:56:18 -06:00
Paul Davis 408aed9e85 no need for a tempo map reset after the remove-while-moving 2023-04-27 19:56:12 -06:00
Paul Davis 907d3f82a7 temporal: fix grid generation in the presence of MusicTimePoints 2023-04-27 19:54:44 -06:00
Paul Davis e7f4c9dcb5 temporal: fix removal (and thus moving) MusicTimePoints 2023-04-27 19:54:14 -06:00
Robin Gareus 64b480dd65
ARD: shutdown message is not an error 2023-04-27 15:35:22 +02:00
Robin Gareus dd969dfe8c
Fix worst-case and I/O latency report
In case there are any unconnected tracks, the track's output is
assumed to align to the master bus (see Route::update_signal_latency).

For this to work correctly the master bus port's public latency
has to be set first.

This fixes e.g. the following issue: add a latent plugin to
the monitor section. Then toggle its bypass or remove it.
Previously the worst-case latency remained unchanged.
2023-04-27 01:43:20 +02:00
Paul Davis 82e03ac13e fix SNAFU with processor box bindings
Bindings were not loaded until after ProcessorBoxen were created,
meaning they had no effect (the ProcessorBoxen set their ardour
bindings to null).

Also handle leave-means-deselect at ProcessorBox level rather than
MixerStrip level, to include MonitorSection PB
2023-04-26 17:19:50 -06:00
Paul Davis 261ba186cd add plugin clarification to COPYING
This text was already in the About dialog, but should be here
too.
2023-04-26 13:28:29 -06:00
Robin Gareus 4b77ecbe83
Sanitize XML values to be valid UTF-8 (#9317)
This prevents any non UTF-8 strings to leak into
Ardour XML files, which can make the session unloadable.
2023-04-26 17:43:52 +02:00
Robin Gareus df298c6046
Add API to sanitize UTF-8 strings 2023-04-26 17:25:24 +02:00
Robin Gareus 5e967c02a9
VST3: fix manually setting parameter (amend 52a73fdb3) 2023-04-26 00:19:36 +02:00
Robin Gareus 52a73fdb33
VST3: fix manually setting parameters
VST3PI::performEdit already updates the shadow data, so
since 979f9876a7
VST3Plugin::set_parameter effectively did nothing (unless a user
rapidly moves the control slider, in which case the next process
cycle sets a previous value).
2023-04-25 23:34:58 +02:00
Alexandre Prokoudine 5b19882be3 Update Russian translation 2023-04-25 20:26:46 +02:00
Paul Davis 87b5849a7b kbd bindings: fix issues with delete & backspace bindings in draw/i-edit mode
We now use the same actions in all modes, and the logic is:

1. is there a selected mixer strip and are we in it: if so, delete selected
   processors
2. are we in draw or internal mode? if so ..
   2a. if there are selected control points, delete them
   2b. if not, attempt to delete MIDI notes
   2c. done
3. continue with delete operation as before
2023-04-25 11:38:16 -06:00
Robin Gareus 595e2e2914
VST3: notify GUI when plugin parameter names change 2023-04-24 22:32:35 +02:00
Robin Gareus 82447431f4
VST3: properly debug ParamTitlesChanged 2023-04-24 20:58:07 +02:00
Robin Gareus 3b4f9a231f
VST3: debug ParamTitlesChanged 2023-04-24 19:38:17 +02:00
Robin Gareus 95de61f74e
Fix race condition when closing a session
~Session calls AudioEngine::remove_session(), which fades out,
then unsets the session, and then in libs/ardour/audioengine.cc:460
```
session_removed.signal(); // wakes up thread that initiated session removal
```

Session d'tor continues, and calls Port::PortDrop(), which
unregisters all ports one at a time.

Concurrently, AudioEngine continues, and calls PortManager::silence_outputs
which gets all ports first (!), and then iterates over them.

There is a race condition which can lead to
DummyAudioBackend::get_buffer: Assertion `valid_port (port)' failed
2023-04-24 17:43:08 +02:00
John Emmas 40738b2bee A couple of extra requirements for DEBUG_THREAD_PRINT 2023-04-24 14:51:04 +01:00
John Emmas 81d7a51498 Minor change to commit #35b5861195 2023-04-24 12:40:36 +01:00
Robin Gareus c3f65a2237
Add Lua DSP processor to downmix 5.1 to stereo 2023-04-24 01:59:50 +02:00
Robin Gareus 649ad0f052
VST3: update parameter and Bus names on plugin's request
This is currently only the backend implementation,
the GUI is not yet notified of the change
2023-04-24 01:54:35 +02:00
Paul Davis c95c11e186 remove debug output 2023-04-23 11:34:28 -06:00
Paul Davis 35b5861195 try to avoid output pthread_t as-is, due to MSVC etc. 2023-04-23 11:26:00 -06:00
Paul Davis c16ee928de fix ruler dialog 2023-04-22 17:58:28 -06:00
Paul Davis 8cc16f2b81 convert std::cerr output to DEBUG_TRACE 2023-04-22 14:38:44 -06:00
Paul Davis ec5320c5f1 transport master: do not unregister port when session goes away
TransportMasters are independent of the session, and thus their port lifetimes should be
also.
2023-04-22 14:38:44 -06:00
Robin Gareus 9625d22c0d
Add Lua bindings for TempoEditBehavior
See also 8fbf2c3f52
2023-04-22 22:15:00 +02:00
Robin Gareus a7ca4cf8a1 CoreAudio: subscribe to device-alive property
This notifies the user about device disconnect and properly
shuts down the backend.
2023-04-22 19:36:37 +02:00
Paul Davis 65c81feb5e fix consistency and accuracy of tempo edit behavior setting 2023-04-22 11:12:21 -06:00
Robin Gareus 65380797e1
Fix windows debug builds (really now)
This partially reverts commit 4dc4d53004.
2023-04-22 03:00:40 +02:00
Robin Gareus 7f198c7c2f
Amend 4dc4d53: fix missing use/lib includes for luabindings 2023-04-22 02:18:05 +02:00
Damien Zammit 4620d138ee import_pt: Look up tracks by name instead of by number
This allows existing tracks with correct names to be the target for import.
2023-04-22 10:09:55 +10:00
Robin Gareus 4dc4d53004
Fix windows debug builds (obj file too large)
This fixes a "too many sections" issue
```
Fatal error: can't write 159 bytes to section .text of build/libs/ardour/luabindings.cc.1.o: 'file too big'
x86_64-w64-mingw32-as: build/libs/ardour/luabindings.cc.1.o: too many sections (36781)
```
2023-04-22 02:03:20 +02:00
Paul Davis 8629aea237 push2: shift held while using touch strip sends modulation, not pitch bend 2023-04-21 17:20:17 -06:00
Paul Davis 2aee4765e9 don't try to print pthread_self() 2023-04-21 15:38:40 -06:00
Paul Davis 4052537e0f midisurfaces: make connection_handler() private 2023-04-21 15:38:40 -06:00
Robin Gareus 27155732ff
MIDI input input follows selection groups
This also mitigates an issue that selecting a track in
a group may select other tracks. Previously the last
selected track's input was connected to MIDI ports, which
is usually not the track that the user clicked on.
2023-04-21 22:50:49 +02:00
Paul Davis f718279949 surfaces & event loops: i really mean no more request buffer factories 2023-04-21 13:55:58 -06:00
Paul Davis b0586763ba libpbd: changes to pre-registration of signal emitting threads
There is no need to preallocate request buffers for these threads - the event
loops that require them can allocate them when they discover and register the
pre-registered threads. This also means that event loops do not need to
register request buffer factories.
2023-04-21 13:43:46 -06:00
Paul Davis ba66381ab0 push2: remove unused member 2023-04-21 12:16:37 -06:00
Paul Davis 7ad0deff10 abstractui: don't register self as a sending thread
if thread A emits a signal that is handled by thread A, no request buffers are
involved.
2023-04-21 12:16:37 -06:00
Paul Davis 4a2c27ed6d abstractui: provide a message if an event loop wakes but finds no work
(this only occurs for debug builds)
2023-04-21 12:16:37 -06:00
Paul Davis 6e65e9c82f abstractUI: pseudo-no-op: debug trace message expansion, and some reformatting 2023-04-21 12:16:37 -06:00
Paul Davis 5d023b4c60 libpbd: fix an important thinko for cross-thread signal architecture
The old code assumed that the thread that created a request buffer for a given
signal-emitting thread would be the latter thread, and thus a thread-local
pointer to the request buffer could be used. This turns out not to be true: the
GUI thread tends to be responsible for constructing the request buffers for
pre-registered threads.

That mechanism has been replaced by using a RWLock protected map using
pthread_t as the key and the request buffer as the value. This allows any
thread to create and register the request buffers used between any other pair
of threads (because the lookup always uses a pthread_t).

The symptoms of this problem were a signal emitted in an audioengine thread
that was propagated to the target thread, but when the target thread scans its
request buffers for requests, it finds nothing (because it didn't know about
the request buffer). In a sense, the signal was successfully delivered to the
target thread, but no meaningful work (i.e the signal handler) is performed.
2023-04-21 12:16:37 -06:00
Paul Davis 6eec11e50e midi surfaces: fix debug trace string 2023-04-21 12:16:37 -06:00
Paul Davis 9dc53f9400 midi surfaces: no reason for the connection handler to be virtual 2023-04-21 12:16:37 -06:00
Paul Davis 0eed821eb9 JACK: do not set the thread-init callback
Because we use the non-callback API, we can call our thread init callback
ourselves from ::process_thread(). In addition, the init_callback in JACK is
used by every thread JACK creates, including the messagebuffer thread, and this
confuses things from an Ardour POV where the callback was intended just for
realtime threads.
2023-04-21 12:16:37 -06:00
Paul Davis b66bb61650 audioengine thread(s) should have their actual numbered name 2023-04-21 12:16:37 -06:00