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