13
0
Commit Graph

20317 Commits

Author SHA1 Message Date
d85277f532
NO-OP: clang-format, whitespace 2023-05-22 21:07:36 +02:00
c452a4816c tempo mapping: Re-implement tempo-twist with constant and ramped varieties (lib part) 2023-05-22 13:32:53 -05:00
f1f352a6e9
Fix shaped dither (#9342) 2023-05-22 04:50:19 +02:00
e9dc1335f9
NO-OP: clang-format 2023-05-22 04:50:13 +02:00
dd9f9ef19d
When synced to engine vari-speed is not possible 2023-05-19 23:28:32 +02:00
2041979f85
Add more session-archive error messages, abort if encoding fails 2023-05-19 16:15:05 +02:00
edcf850aaf
Fix Wformat 2023-05-19 06:16:49 +02:00
25f8eea162
Allow to cancel session archive process 2023-05-19 03:08:37 +02:00
c9929698ee
Implement FileArchive progress/cancel
* Use PBD::Progress API
* Allow to cancel extraction and compression
* Fix querying download size
2023-05-19 03:08:22 +02:00
2cb4e8a6ca
Remove compat header 2023-05-19 00:54:10 +02:00
92fbab32c6
Update codebase to use PBD::Progress (1/2) 2023-05-19 00:37:49 +02:00
65f2be76f6
Move Ardour::Progress to PBD::Progress
This will allow PBD::Filearchive to properly report progress.
It is also a generally useful API and deserves to be in libpbd.

Temporarily keep Ardour::Progress as alias
2023-05-19 00:35:20 +02:00
25234702fe
Prepare libardour for FileArchive progress API update 2023-05-19 00:35:14 +02:00
b3d3944451
Add session-archive error messages 2023-05-18 18:54:46 +02:00
8c861914c8
Fix copy/edit in 4cdcdb9ee7 2023-05-18 00:47:37 +02:00
4cdcdb9ee7
Add enum to configure selection after section cut/copy 2023-05-17 23:28:20 +02:00
Hoger Dehnhardt
f958b7b0e0
With larger projects, the session was not initialised at this time 2023-05-14 22:50:35 +02:00
83555ec290
Consolidate playlist block & ignore notifications
Despite the names suggesting otherwise
`block_notifications` and `ignore_state_changes` are used
for the same purpose.

The only difference is that ::freeze ::thaw explicitly
modified `ignore_state_changes` **in addition** to
`block_notifications`.
2023-05-14 20:42:32 +02:00
e79d8b00f9
Speed up playlist rendering of non-overlapping MIDI Regions 2023-05-14 20:42:31 +02:00
54969d8aab fix thinko resulting in duplicate bar-names after a tempo-mapping op 2023-05-14 09:05:08 -05:00
4192710ac8
Add Lua bindings to remove routes 2023-05-14 02:44:27 +02:00
5bbd248384
Add Lua bindings for std::list/vector clear 2023-05-13 17:38:41 +02:00
756c0a80c9
Emit Xrun in case process-lock cannot be acquired 2023-05-11 19:30:49 +02:00
1ac7f483da
VST3: set non-automatable parameters (#9321) 2023-05-11 18:50:15 +02:00
57017267cf
Prefer try-lock in process-callback 2023-05-11 18:38:02 +02:00
79e6830d21
VST3: allow to set non-automatable params (#9321) 2023-05-11 02:11:05 +02:00
b1a771d36b
Fix windows builds (type mismatch/error) 2023-05-08 22:05:56 +02:00
1940dfbb28
NO-OP: cleanup includes 2023-05-08 22:02:37 +02:00
ee2bae5aa8
Fix std::optional -> boost::optional API 2023-05-08 22:02:21 +02:00
Hoger Dehnhardt
1dc879eb8d
Softube Console1 add surface (libs) 2023-05-07 18:19:40 +02:00
63e0ac11ad
Prepare cut/copy/paste tempo-map sections
This currently asserts in Range::subtract, also ripple
is not yet implemented.
2023-05-07 02:04:47 +02:00
1d1a1e87ec
Fix another lv2core header include 2023-05-07 01:41:01 +02:00
495b27c742
Fix lv2core header include 2023-05-06 18:28:35 +02:00
da9ec02662
Fix typo in bf4decbfe 2023-05-06 18:16:49 +02:00
bf4decbfe7
Add LV2 header include compatibility (1/2)
For whatever reason LV2 changes #include header locations
in a micro version release and disables backwards compatibly
by default.
2023-05-06 16:20:01 +02:00
b9e5621e03 during map reset, force meter to bars, and tempo to beats 2023-05-05 20:53:23 -06:00
32a3591018 remove #warning 2023-05-05 18:57:16 -06:00
9e8eed8a03 temporal: various tweaks to get TempoMap::get_grid() to be more correct/robust 2023-05-05 18:56:01 -06:00
7c07a9964a temporal: add operator<<(ostream&) for BBT_Argument 2023-05-05 18:55:27 -06:00
fafc891ca6 add ripple option API for TempoMap::cut() 2023-05-04 18:49:06 -06:00
7f977bf3e4 add skeleton unit test for tempo map cut buffer 2023-05-04 18:48:50 -06:00
b3a127d318 temporal: TempoMap::paste(), TempoMapCutBuffer::dump() and cut/copy fixes 2023-05-04 17:09:19 -06:00
a8424e8617 temporal: implement (maybe) cut-copy for tempo map 2023-05-04 15:45:09 -06:00
f7ba9af6b2 temporal: stub API for tempo map cut/copy/paste 2023-05-04 15:10:56 -06:00
b3040a31fc temporal: a basic data structure to hold the result of a TempoMap cut/copy operation 2023-05-04 15:10:56 -06:00
6572b8d409
Fix cross-compile linking (libusb - see also 5794d21a76) 2023-05-04 21:31:13 +02:00
f589aedcfe
Fix Windows builds (pthread_t) 2023-05-04 21:13:17 +02:00
baf307838c push2: change ordering within destructor to avoid event loop thread drawing-after-delete 2023-05-04 12:34:37 -06:00
617caf9e98
CPM: precent concurrent protocol activision
This can happen when a device is already connected
while Arodur is stating. The butler thread may activate it
(immediately post-engine), while the GUI thread tries
to do the same later when restoring state.
2023-05-04 18:44:02 +02:00
912f9e5ea3 provide functions for both linear and ramped tempo-twists 2023-05-04 09:22:28 -05:00
1b6e4b0b84
Implement marker copy/paste section 2023-05-04 06:25:59 +02:00
b936fd12cd temporal: reset the tempo map in sections bounded by BBT markers (if any)
This avoids total SNAFUs caused by the impossibility of globally ordering
by BBT time.
2023-05-03 21:55:23 -06:00
faac648502 temporal: add TempoMap::{next,previous_}meter() 2023-05-03 21:55:23 -06:00
34ec1e57ac Fix macOS builds (libusb_hotplug_event parameters) 2023-05-04 02:49:33 +02:00
336f51e1f0
Push2: implement MIDI port probing, auto-enable 2023-05-04 00:57:16 +02:00
da9ed129e3
Contourdesign: Implement USB probe/match 2023-05-04 00:20:45 +02:00
a8f5f5636f
FP8: implement MIDI port probing, auto-enable 2023-05-04 00:20:38 +02:00
97272481b8
CPM: Activate hotplugged libusb ctrl-surface 2023-05-04 00:20:31 +02:00
161d82869a
CPM: Implement automatic ctrl-surface activision 2023-05-04 00:20:15 +02:00
65346496f5
Refactor Ctrl Surface API
* reserve "probe" to actually probe for devices
* use separate probe for libusb and MIDI port devices
* use "available" to check if surface can be used
* allow both methods to be NULL
* remove unused ControlProtocolDescriptor* argument

Most surface just return `true` for available.
2023-05-03 15:38:42 +02:00
7c02ab9937
CPM: fix locks, do not reacquire descriptor 2023-05-03 02:05:58 +02:00
287a21c09e
Add API to query hardware port name
In case of internal backends this allows to retrieve the
Device name for a given (hashed unique) port-name.

As opposed to "pretty-name" (which defaults to hw-port-name),
this cannot be changed by the user.

It is intended to be used when probing for control surfaces.
2023-05-02 23:39:27 +02:00
2bdf51e02d
Implement cut/paste section markers
This does not include partial ranges (selection only
include either range-start or range-end).

Copy/paste also remains to be done
2023-05-02 23:36:51 +02:00
a7c4ab3247 fix thinko in canvas logic (fixes mouse cursor on desensitized playhead) 2023-05-01 08:49:27 -05:00
847f1e54c1
Clean up ctrl surface API
Remove unused fields, no mandatory surfaces
2023-05-01 02:22:45 +02:00
c55e17da99
Fix misleading doxygen comment
Previously this was used as documentation for peak_meter()
2023-04-29 21:03:56 +02:00
0ddacb8ea2 when abort()-ing due to a failed assert in tempo map code, dump the map 2023-04-28 15:57:42 -06:00
4ccaa81671
Fix cut/copy section: ripple requires a region split 2023-04-28 22:55:54 +02:00
907d3f82a7 temporal: fix grid generation in the presence of MusicTimePoints 2023-04-27 19:54:44 -06:00
e7f4c9dcb5 temporal: fix removal (and thus moving) MusicTimePoints 2023-04-27 19:54:14 -06:00
64b480dd65
ARD: shutdown message is not an error 2023-04-27 15:35:22 +02:00
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
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
df298c6046
Add API to sanitize UTF-8 strings 2023-04-26 17:25:24 +02:00
5e967c02a9
VST3: fix manually setting parameter (amend 52a73fdb3) 2023-04-26 00:19:36 +02:00
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
595e2e2914
VST3: notify GUI when plugin parameter names change 2023-04-24 22:32:35 +02:00
82447431f4
VST3: properly debug ParamTitlesChanged 2023-04-24 20:58:07 +02:00
3b4f9a231f
VST3: debug ParamTitlesChanged 2023-04-24 19:38:17 +02:00
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
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
c95c11e186 remove debug output 2023-04-23 11:34:28 -06:00
35b5861195 try to avoid output pthread_t as-is, due to MSVC etc. 2023-04-23 11:26:00 -06:00
8cc16f2b81 convert std::cerr output to DEBUG_TRACE 2023-04-22 14:38:44 -06:00
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
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
7f198c7c2f
Amend 4dc4d53: fix missing use/lib includes for luabindings 2023-04-22 02:18:05 +02:00
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
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
8629aea237 push2: shift held while using touch strip sends modulation, not pitch bend 2023-04-21 17:20:17 -06:00
2aee4765e9 don't try to print pthread_self() 2023-04-21 15:38:40 -06:00
4052537e0f midisurfaces: make connection_handler() private 2023-04-21 15:38:40 -06:00
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
f718279949 surfaces & event loops: i really mean no more request buffer factories 2023-04-21 13:55:58 -06:00
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
ba66381ab0 push2: remove unused member 2023-04-21 12:16:37 -06:00
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
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