Commit graph

41206 commits

Author SHA1 Message Date
Franke Burgarino
7e57b644d6 MCU: add master/monitor to global/mixer view if device has no master fader 2025-08-27 16:47:12 +02:00
Paul Davis
c282eed67c update preferences metadata (source text and C++ code) 2025-08-27 16:47:12 +02:00
Paul Davis
e82e08e60c also scale drag move threshold by UI scale
If UI scale is > 1, pixels are likely small, so it seems appropriate to scale
2025-08-27 16:47:12 +02:00
Paul Davis
01701bdd1d expose drag sensitivity in preferences 2025-08-27 16:47:12 +02:00
Paul Davis
54bea42216 scale move threshold by UIConfiguration parameter 2025-08-27 16:47:12 +02:00
Paul Davis
8d7969e72b change use of MoveThreshold.first to reflect pixel units 2025-08-27 16:47:12 +02:00
Paul Davis
c260640502 use both relevant UIConfiguration parameters in ::move_threshold() 2025-08-27 16:47:12 +02:00
Paul Davis
9d36bace2d add move threshold sensitivity parameter for UI 2025-08-27 16:47:12 +02:00
Paul Davis
bc3e2b1f6d move threshold for drags goes back to pair<int,int>
And for now, there's only a single implementation, though other types of
drags could implement it if needed. There really seems to be no need.

Note that the x-axis threshold is 3x in the case of a copy-drag.
2025-08-27 16:47:12 +02:00
Paul Davis
92f5f819b7 move _copy member of some types of drags into Drag base class
this allows us to use it when computing move thresholds
2025-08-27 16:47:12 +02:00
Robin Gareus
cf4eb99ed8 Handle case where a custom MenuElem is added to the dropdown 2025-08-27 16:47:12 +02:00
Paul Davis
d18ecd5084 unit tests: fix an unusual deadlock/block in TempoMap::write_copy()
this call works in other tests, no time to investigate it right now, and
technically the test doesn't require a write copy at all.
2025-08-27 16:47:12 +02:00
Paul Davis
a3cf0a1570 unit tests: use std::cout for any debug output in tempo map cut buffer test 2025-08-27 16:47:12 +02:00
Paul Davis
3d4add15bc temporal: implement TempoMap::bbt_distance() but do not use it
This was implemented to try to fix paste() but was not needed. It might be
useful in the future, or just as an expression of the logic of this. Note that
the BBT_Offset it returns only has the beats field set, which is ... odd. So
this is likely not quite finished.
2025-08-27 16:47:12 +02:00
Paul Davis
5e66f6d363 temporal: undefine macro after use 2025-08-27 16:47:12 +02:00
Paul Davis
ea00d3573d temporal: show BBT marker point names in operator<< 2025-08-27 16:47:12 +02:00
Paul Davis
af4c7cd960 temporal: fix TempoMap::paste() to pass unit test
the BBT times of the newly inserted points during paste() are meaningless until
we recompute them using ::reset_starting_at(). So don't try to compute some
sort of likely value, just use the value from the cut buffer, and call
reset_starting_at() after every point inserted.
2025-08-27 16:47:12 +02:00
Paul Davis
e47b3636d9 remove crashing assert() when rendering scroomer
Too hard to get a floating point assert correct, but I think this is still a little
incorrect because we do not scale the kbd size when rendering it.
2025-08-27 16:47:12 +02:00
Paul Davis
1d1a53da46 no more BBT_Time round/round_up methods (GUI edition) 2025-08-27 16:47:12 +02:00
Paul Davis
230f08b9fd temporal: BBT_Time cannot have any round_to_*() or round_up_to_*() methods
A meter (time signature) is required to do the math correctly for any operation that may
cross or reach the next bar boundary, which round_to_*() and round_up_to_*() may do.
2025-08-27 16:47:12 +02:00
Robin Gareus
2079401b6f Use short labels for grid and beat-div dropdown 2025-08-27 16:47:11 +02:00
Robin Gareus
daaa8641b5 ArdourDropdown: use action's short-label for display text 2025-08-27 16:47:11 +02:00
Robin Gareus
fc22b4dbf5 Pianoroll: the return of the draw box (amend 8ffd45c3c) 2025-08-27 16:47:11 +02:00
Robin Gareus
16097dab8c Don't expand GUI as much on first load
The editor-toolbar still needs a major cleanup, it's
very busy
2025-08-27 16:47:11 +02:00
Robin Gareus
3e99118701 Use new YTKMM API instead of ytk+ 2025-08-27 16:47:11 +02:00
Robin Gareus
430b326174 YTKMM: expose ytk_set_child_packing 2025-08-27 16:47:11 +02:00
Robin Gareus
ee1a507c36 Remove cruft 2025-08-27 16:47:11 +02:00
Robin Gareus
f59a512545 Tweak editor bottom pane packing, never unpack the property box 2025-08-27 16:47:11 +02:00
Robin Gareus
7d4350ab25 Never unpack the selection-property-box
This is used to for all selection: route, plugins,
time and region and slot selection.

Only re-pack it with different expand option when
the pianoroll is also visible
2025-08-27 16:47:11 +02:00
Robin Gareus
468f890a42 Fix preference enum - see 4826a90796 2025-08-27 16:47:11 +02:00
Robin Gareus
670f546ba5 Fix invalid markup (scene name) 2025-08-27 16:47:11 +02:00
Paul Davis
682c19e57f prefs editing widgets for region-edit-disposition 2025-08-27 16:47:11 +02:00
Paul Davis
34e964b370 an initial guess at using the new region-edit-disposition parameter
No editing of the parameter yet
2025-08-27 16:47:11 +02:00
Paul Davis
5873cf12df add a new UI prefs variable/type for region edit disposition
i.e. where to edit a selected or specifically chosen region
2025-08-27 16:47:11 +02:00
Paul Davis
9430adf4ef refinements to SMF type0 import logic 2025-08-27 16:47:11 +02:00
Paul Davis
06751f64b4 MIDI regions attempt to get their tempo & meter from their source file 2025-08-27 16:47:11 +02:00
Paul Davis
f3fd8d6e40 slightly refine SMF::is_meta() to differentiate realtime system reset 2025-08-27 16:47:11 +02:00
Paul Davis
74851137f9 Reimplement MIDI file import to retain metadata in the files written
Previosuly, all meta data was thrown away. Now we retain it, so that MIDI
regions can ask about their source file's tempo & meter.

Significant engineering rework of how this all works, relying on
recently introduced API and API changes in SMF, SMFSource etc.
2025-08-27 16:47:11 +02:00
Paul Davis
fd2fbc7d25 change API of MidiSource::append_event_beats() to allow meta-event legality
Because we want a default argument of false, this involved the usual
inline-non-virtual-method-calls-virtual-with-no-default trick.

Also, do NOT append data to a MidiModel or change the length of an SMFSource
unless we know for sure that added that data to the SMF object.
2025-08-27 16:47:11 +02:00
Paul Davis
b559694dca add SMFSource::end_track() to provide source-level access to SMF method 2025-08-27 16:47:11 +02:00
Paul Davis
35e7080f92 modify API of Evoral::SMF::append_event_beats() to add meta-event legality
If the (new) final argument is true, we allow writing SMF meta events to the
underlying libsmf object (which doesn't care one way or another).
2025-08-27 16:47:11 +02:00
Paul Davis
a9dc45a620 add Evoral::SMF::end_track()
This changes the assumption that an SMF object only refers to
a single track when being written.

::end_track() is used within begin::write()/end_write() pairs to mark the start
of a new SMF track.
2025-08-27 16:47:11 +02:00
Paul Davis
0126509937 add Evoral::SMF::is_meta() to test for SMF meta events
These are not legal in "live" MIDI but are allowed in SMF files.
2025-08-27 16:47:11 +02:00
Paul Davis
f14321213f use nullptr instead of zero in initializer 2025-08-27 16:47:11 +02:00
Robin Gareus
977ac537d5 Expand route properties on cue page when strip is selected
This is currently only for Mixbus' benefit, showing
the channelstrip and plugin(s); but may become relevant
for Ardour sometime.
2025-08-27 16:47:11 +02:00
Robin Gareus
5e54ab1293 Properly hide cue editors (unmap macOS GLCanvas views) 2025-08-27 16:47:10 +02:00
Robin Gareus
50f4f3a07d Fix crash at session close
see also 6672db97. in theory re-assigning a sigc::connection
should disconnect the previous connection, but for yet
unknown reasons this does no happen here.
2025-08-27 16:47:10 +02:00
Paul Davis
e508fbcdf1 SMF: return meta events, with size set to event size, but return value of zero 2025-08-27 16:47:10 +02:00
Paul Davis
4b94f96ebf add window geometry to region UI settings, and save after changes
Changes are detected in Pianoroll::canvas_allocate(), which is a proxy for window
geometry. Since Pianoroll doesn't own a window, this is not necessarily ideal, but it
works.
2025-08-27 16:47:10 +02:00
Edgar Aichinger
fc7e237352 completing german translation update (libardour) 2025-08-18 09:26:04 +02:00