Commit graph

41988 commits

Author SHA1 Message Date
Paul Davis
412bae4fdd triggerbox: add a capture duration property to all triggers 2026-01-18 11:49:01 -07:00
Paul Davis
757398a209 bring some rationality to the pianoroll (clip) rec-enable button 2026-01-17 19:13:25 -07:00
Paul Davis
ecf9e9e368 remvoe unused variable 2026-01-17 19:13:25 -07:00
Robin Gareus
9ed6eeacd2
Episode VI: Return of the Auto Return toggle
Anyone who complains about the icon will be fed to a Sarlacc :)
https://discourse.ardour.org/t/add-button-back-for-auto-return/112812
2026-01-18 02:16:17 +01:00
Paul Davis
f6351399c3 fix non-display of MIDI notes after unbounded clip record
We should not call CueEditor::rec_enable_change() from CueEditor::trigger_arm_change()
because (a) the rec-enable change is coming anyway (b) at the time a trigger is
disarmed, the triggerbox is still rec-enabled. This means that in the end, a MidiView
gets its ::begin_write() method called again before we call ::model_changed()
and that leads it to have non-null _unfinished_live_notes (i.e. we're actively
recording, so do thing).
2026-01-16 15:01:48 -07:00
Paul Davis
e00c051ff9 pianoroll: fix incorrect reposition of count in text during width reset 2026-01-16 11:18:11 -07:00
Paul Davis
f43b1d8c84 triggerbox: keep track of note-ons before actively recording a clip
This allows the user to not have to aim for such precise timing, since they can
hold the note down during the count-in.

At some point the question will arise why we don't do this for controllers
etc. too.
2026-01-16 08:04:14 -07:00
Paul Davis
5e9cb952c2 extent MidiNoteTracker API to be able to ::flush_notes() to an EventSink
This is a bit ironic, since EventSink is an abstract base class for MidiBuffer, which is
already supported for a flush_notes() call. But we use MidiBuffer::push_back() for that,
mostly for efficiency purposes (write() can insert an event at any time).
2026-01-16 08:04:13 -07:00
Grzegorz Pruchniakowski
c4cdb2a567
Typos in README 2026-01-15 23:49:26 +01:00
jean-emmanuel
3cd1c0e4b1
Dropdown/Metabutton: fix some scaling issues 2026-01-15 00:39:54 +01:00
jean-emmanuel
f3dbaae6e8
Metabutton: avoid prelight from affecting vertical separator line 2026-01-15 00:39:31 +01:00
jean-emmanuel
a18c8e3287
Dropdown: adjust separator position and use themable outline color 2026-01-15 00:38:29 +01:00
jean-emmanuel
4980efdfa5
Dropdown: move triangle slightly to the left 2026-01-15 00:38:02 +01:00
Robin Gareus
2a0fb060d1
CoreAudio: overhaul aggregate device drift compensation 2026-01-15 00:25:07 +01:00
Paul Davis
24f2cd321d midi port config table: FILL|EXPAND is the default pack option, so no need to specify 2026-01-14 14:26:47 -07:00
Paul Davis
a90850abec preferences: expand the height of the listviews in the midi port config tab
There is some weird behavior here, where causing a refill of the listview (e.g. by changing
the status of a port flag) doesn't interact correctly with the scrollbar. I can't find
a solution at the present time, so just grow the listview vertical size to accomodate a lot
more (potential) MIDI ports in both lists (without altering the prefs dialog size)
2026-01-14 14:26:21 -07:00
Paul Davis
e309663df6 when MIDI port flags change, session bundles must be rebuilt 2026-01-14 13:27:45 -07:00
Paul Davis
c505ad1b1e portmanager: minor code tweaks for efficiency and style guide 2026-01-14 13:26:54 -07:00
jean-emmanuel
14c68a5577 color theme: reset color aliases before loading a theme file 2026-01-14 14:13:29 +01:00
Paul Davis
07bb9b70b5 NO-OP: no need for newlines here 2026-01-13 22:47:12 -07:00
Paul Davis
979ae7d97d fix up ownership of "color mode" which got confused during EditingContext refactor 2026-01-13 22:46:54 -07:00
Paul Davis
20542439e7 fix up ownership of "region color" which got confused during EditingContext refactor 2026-01-13 22:46:16 -07:00
Paul Davis
653468366b make pasting (via Primary-v at least) work in the pianoroll 2026-01-13 12:20:22 -07:00
Paul Davis
6cea1ef4a1 minor tweaks to DEBUG::CutNPaste output 2026-01-13 12:20:22 -07:00
Robin Gareus
2a395aead5
Relax fluidsynth's sample-rate constraint
Allow for 192kHz session (needs testing, by ear and
by down-sampling to 48k vs. running directly at 48k, etc)
Also prevent plugin from loading when sample-rate is out of bounds.

Previously the plugin loaded but was pitched up when the sample
rate exceeded 96k.
2026-01-13 15:00:17 +01:00
Robin Gareus
54e45ad50c
Bump required libcurl version
Note that 7.55.0 was released in August 2017
2026-01-13 06:10:58 +01:00
Robin Gareus
53cd5e34c4
Update another deprecated libcurl API
'CURLINFO_CONTENT_LENGTH_DOWNLOAD' is deprecated: since 7.55.0.
Use CURLINFO_CONTENT_LENGTH_DOWNLOAD_T
2026-01-13 06:08:30 +01:00
Robin Gareus
1d04fa5a39
Prepare reporting proper archiving errors
Can we break the -rc string freeze for this?
2026-01-13 01:11:34 +01:00
Robin Gareus
dc54c57176
Handle libarchive errors #10121
This properly handles missing write permissions (that previously
crashed when trying to close the archive).
Also report and error on disk-full or other write failures
such as 4GB file limit.
2026-01-13 01:11:33 +01:00
Paul Davis
6359b6c5b0 pianoroll: follow code guidelines via early exits for null view 2026-01-12 14:29:01 -07:00
Robin Gareus
1f96930a44
Correctly sensitive solo/listen config boxes at session load 2026-01-12 20:58:54 +01:00
Paul Davis
9f5c575156 fix logic of showing/hiding active/inactive pianoroll automation 2026-01-12 12:46:43 -07:00
Paul Davis
d16244d25e swallow all events in pianoroll automation group if there's no active automation 2026-01-12 12:46:43 -07:00
Robin Gareus
e381c29281
Fix registering .ardour file extension
This is mainly relevant for derivative projects, where .ardour
isn't opened with "ardour" :)
2026-01-11 21:51:23 +01:00
John Emmas
e486338a19 Specify a path when including 'gdk.h' 2026-01-11 11:21:33 +00:00
Paul Davis
e7b2b4fc5e NO-OP: rename goto label with clearer terminology 2026-01-09 20:07:06 -07:00
Paul Davis
1401c6e45a temporal: handle a special condition where the got added in 6bc2261575 should not be used 2026-01-09 20:06:41 -07:00
Paul Davis
21cb25263a NO-OP: remove double semicolon 2026-01-09 19:45:18 -07:00
Paul Davis
a3836cbd35 CueEditor: fix ::set_zoom_focus() to do the right thing
This had left-over code from when this method was invoked by a set of
radio actions. That is no longer true, ::zoom_focus_chosen() is now used
2026-01-09 19:45:18 -07:00
Robin Gareus
2bfdbc161b
Fix heap-use-after-free when drawing automation events
When drawing over existing automation it can happen that the
range that is being replaced is currently being in the lookup
cache.
2026-01-10 03:43:07 +01:00
Paul Davis
b4ba3d2b9f remove debug output 2026-01-09 18:02:39 -07:00
Paul Davis
9d2c755f69 successfully import SMF files with badly-formed time signature events 2026-01-09 18:00:47 -07:00
Paul Davis
3890eb7f0e remove some compiler warnings caused by debug/runtime error output 2026-01-09 18:00:47 -07:00
Franke Burgarino
d774535fe9 Fix reverse iterator issue caught by ASAN
This issue could be seen when dragging an arrangement marker beyond the
bottom of the list in the right edge.

IIUC, std::reverse_iterator<Iter>::operator* creates a temporary iterator
which it then dereferences. This is a problem because what we are
derefencing is a Gtk::TreeIter<Gtk::TreeRow>. gtkmm documentation for
Gtk::TreeIter< T >::operator* states, "The returned reference is
implemented by casting from *this, and so the returned reference is only
valid while this iter is." Additionally, cpp documentation for
std::reverse_iterator states, "std::reverse_iterator does not work with
iterators whose dereference returns a reference to a member of *this."

We also are not advancing this iterator at all, so whether it is reverse
or not is irrelevant (we just want the last one). Thus, *prev(rows.end ())
instead of *rows.rbegin ().
2026-01-09 14:19:29 -06:00
Robin Gareus
cb807dcb11
Update themes, make transport option button state visible
https://discourse.ardour.org/t/new-playhead-toggle-button-to-go-with-new-ones-recently-added-to-version-9/112738/5
2026-01-09 19:19:38 +01:00
Paul Davis
0d1c4ee5ed escape plugin name text in missing plugin dialog 2026-01-09 11:09:52 -07:00
Paul Davis
4232983809 temporal: write down things that I have learned 2026-01-09 11:03:18 -07:00
Paul Davis
c8ec52e707 temporal: improve/extend debugging for DEBUG::Grid 2026-01-09 10:53:18 -07:00
Paul Davis
6bc2261575 temporal: fix incorrect logic in TempoMap::fill_grid_by_walking()
If walking the grid by bar, but points are closer than that, we could end up
with the wrong TempoMetric being used to compute various time domain
conversions (which tends to leads to abort()).

This small change makes sure that we keep looking for more points if we have
not yet reached the next grid point (e.g. bar).
2026-01-09 10:53:18 -07:00
Robin Gareus
943623f027
Amend b4373dafda fix redefined macro warning 2026-01-09 18:24:19 +01:00