Commit graph

22265 commits

Author SHA1 Message Date
Paul Davis
41d91e7527 prevent crash in MIDI triggers when transport op is invoked on an inactive track 2025-11-05 18:35:41 -07:00
Robin Gareus
b783b3264c
Allow to remove hidden stripables from selection 2025-11-04 19:59:07 +01:00
Robin Gareus
8efc12c66a
Update file-utils include, add windows.h for CreateHardLinkA 2025-11-04 16:54:27 +01:00
Franke Burgarino
6211ba8260 MCU: fix send toggle display in sends subview
The sends subview now shows "off" when a mixbus send enable control is
toggled from the GUI. Additionally, any disabled mixbus sends will
now properly show "off" after instantiating the sends subview and calling
SendsSubview::setup_vpot().

This currently only affects Mixbus since Route::send_enable_controllable is not
actually exposed in Ardour.
2025-11-03 17:00:22 -06:00
Paul Davis
ccd1d2bc5b Revert "GtkFileChooserButton should emit a signal when a file is selected from the combobox"
This reverts commit 1c19b6cfd9.

GtkFileChooserButton emits selection-changed when the combobox is used to select a file/dir.
2025-11-03 13:01:21 -07:00
Paul Davis
357956bd99 factor out the platform-specific default clip library path 2025-11-03 12:28:13 -07:00
Paul Davis
1c19b6cfd9 GtkFileChooserButton should emit a signal when a file is selected from the combobox 2025-11-03 12:28:13 -07:00
Robin Gareus
20d901e3b3
Append suffix before legalizing path
This is because windows does not allow trailing space or dot.
So once we use legalize_for_universal_path() it may strip
valid char "New Session.." + ".ardour"
2025-11-03 20:04:13 +01:00
Robin Gareus
228be635ee
Use legalize_for_universal_path for sources and presets
We can only use `legalize_for_universal_path` for base-name
paths relative to the Ardour session folder.

The full absolute path can contain locally legal chars,
which legalize_for_universal_path would replace, so we need
to be careful.

We should also use `legalize_for_universal_path` for the
snapshot name (and name used in interchange), but that may break
sessions.
2025-11-03 20:04:07 +01:00
Paul Davis
637f22508b Evoral::Sequence: tweak DEBUG_TRACE messages during note removal 2025-10-31 13:24:35 -06:00
Paul Davis
391fe97693 triggerbox: if clip recording would start immediately, delay by slot.quantization() 2025-10-27 19:42:23 -06:00
Paul Davis
3762743691 remove debug output 2025-10-27 16:05:48 -06:00
Paul Davis
e6b20df671 if Region::tempo_map() finds no tempo info in the source, use the global map 2025-10-27 16:02:47 -06:00
Paul Davis
3b6b1bdd93 triggerbox: change API for finish_recording() and captured() to not require BufferSet 2025-10-27 14:32:54 -06:00
Paul Davis
1400fe012e clip recording: store tempo and meter for audio files created during clip recording
Information taken from the timeline - we assume you're going to play in time with the tempo map.

Future work: no other material in session - determine tempo (and meter? - super hard) from
recorded clip
2025-10-27 11:09:54 -06:00
Paul Davis
6badce2d3a triggerbox: modify source-building API to include timeline position 2025-10-27 10:52:07 -06:00
Paul Davis
9194d93213 NO-OP: correct comment 2025-10-27 10:51:45 -06:00
Robin Gareus
d2b1b6f8ed
Fix importing Type-1 SMF
* handle files with just one track (no meta-data)
* fix splitting by channel (ignore meta-data only tracks)
* retain per track meta-data
2025-10-26 22:45:32 +01:00
Paul Davis
846f7b281a track rec-enable does NOT enable triggerbox recording
This was leftover from an earlier conception of how clip recording might work
2025-10-26 09:46:21 -06:00
Robin Gareus
49c71cb3ef
Log an error message when ignoring invalid SMF 2025-10-26 15:19:42 +01:00
Robin Gareus
9786e6035f
Fix crash due to concurrent sndfile access
Peak files are built int background which can happen concurrently
to estimating tempo. Notably when importing large .flac files
this can cause a crash because libsndfile API does not allow
for concurrent use of the same SNDFILE object.
2025-10-26 15:10:46 +01:00
Robin Gareus
02af9cb3d6
Fix MIDI Source debug dump 2025-10-26 02:15:22 +02:00
Paul Davis
48ea440f87 triggerbox: emit a signal when a region has been created post-capture 2025-10-25 15:15:02 -06:00
Paul Davis
fa7d9de669 make a comment more accurate 2025-10-24 16:52:27 -06:00
Paul Davis
aeb42f3adb improve condition for connecting clip recording status and monitoring state 2025-10-23 21:12:55 -06:00
Paul Davis
e5d95d0d06 improve 2 DEBUG_TRACE messages associated with peakfile operations 2025-10-23 17:44:55 -06:00
Paul Davis
9a9000ada3 build peakfiles for sources created as part of audio clip recording 2025-10-23 17:44:55 -06:00
Paul Davis
4b17e720ae remove unused variable 2025-10-22 15:22:54 -06:00
Paul Davis
20eaf07e5a better solution for send prop change on trigger stop
this amends 8a262e26fb7f3 and avoids sending the change on every
transport stop etc
2025-10-22 15:08:30 -06:00
Paul Davis
ff6cced4a5 triggers: always send property change when a trigger stops 2025-10-22 15:08:30 -06:00
Paul Davis
5e9331bb73 clip recording: shrink fade in/out to 1msec 2025-10-22 15:08:30 -06:00
Paul Davis
0a70bf9ed0 add/tweak DEBUG_TRACE output for triggers/audio capture 2025-10-22 15:08:30 -06:00
Paul Davis
824bef68dc triggers; do not reset stretcher for audio clips after capture
We don't stretch/shrink captured clips by default, and this operation is not thread-safe
2025-10-22 15:08:30 -06:00
Robin Gareus
8793a2f870
Fix/amend previous commit 2025-10-22 19:34:48 +02:00
Robin Gareus
78677b672c
Copy more mingw branches for MSVC 2025-10-22 18:48:40 +02:00
Robin Gareus
d133be6d8d
One more MSVC related fix.. 2025-10-22 18:26:08 +02:00
Robin Gareus
d8a379bc6d
Prepare for MSVC support in y[dt]k 2025-10-22 15:34:37 +02:00
Paul Davis
1114a05f1f fix incorrect locally scoped tempo map management
This is tricky to explain, so rather than explain what was wrong, I'll describe
how it works now.

Whenever a ScopedTempoMapOwner::in() call occurs, we check the current thread-local
tempo map ptr. If it is not owned by us (and we have a local tempo map that we
want to use), set it so that it is.

We continue to fetch() the global tempo map ptr back into the thread-local ptr
when the local scope depth drops to zero.
2025-10-20 14:58:16 -06:00
Paul Davis
d681c2d42c fix logic error in Region::set_tempo() 2025-10-20 14:58:16 -06:00
Paul Davis
e975fc5b7d slightly more debug information when starting local tempo scope 2025-10-20 14:58:16 -06:00
Paul Davis
12f40234ef fix thinko when searching for a segment descriptor by TimelineRange 2025-10-20 14:58:16 -06:00
Paul Davis
b460ce6d6a fix repeated thinkos during deserialization of SegmentDescriptors 2025-10-20 14:58:16 -06:00
Paul Davis
e8cd0af1cc remove Region::_tempo and Region::_meter; use Source-level data instead 2025-10-20 14:58:16 -06:00
Paul Davis
6d92be80c1 do tempo estimation within AudioSources, after capture and upon import
we read 10 seconds from the middle of the data; not infallible but a reasonable
first pass at a heuristic.
2025-10-20 14:58:16 -06:00
Paul Davis
40f6859905 triggerbox: use the appropriate audio tempo estimating function 2025-10-20 14:58:16 -06:00
Paul Davis
1a5f369bc7 refactor audio data estimation utility code to provide region and source versions
this also fixes a new/delete vs new/delete[] buglet caught by ASAN
2025-10-20 14:58:16 -06:00
Paul Davis
efca55642f mark_streaming_write_completed() should still be called on non-writable sources
the sources have already been marked immutable before DiskWriter calls
mark_streaming_write_completed().
2025-10-20 14:58:16 -06:00
Paul Davis
c1f568b1f3 fix typo/cut-n-paste error in SegmentDescriptor duration assignment 2025-10-20 14:58:16 -06:00
Paul Davis
4b5efcee86 add a replace argument to Source::set_segment_descriptor()
This allows for a segment descriptor to be replaced, which previously was not
possible
2025-10-20 14:58:16 -06:00
Franke Burgarino
9ee9e6d139 Properly legalize new source filenames 2025-10-17 12:27:04 -05:00