Robin Gareus
74c4ca3e52
Reduce reliance on boost - the hard part
...
the rest from `tools/convert_boost.sh`.
* replace boost::function, boost::bind with std::function and std::bind.
This required some manual fixes, notably std::placeholders,
some static_casts<>, and boost::function::clear -> = {}.
2024-10-19 03:47:21 +02:00
Paul Davis
b8fb779fa7
allow dragging in MIDI automation line in cue editor
...
Note: once this is cleaned up and checked with respect to snap and more,
the same should be done for MidiRegionView
2024-10-17 07:44:32 -06:00
Paul Davis
54fdf90cc2
lots of detailed fixes to get lollipops in tracks working again, post re-factor
2024-10-17 07:44:31 -06:00
Paul Davis
7899829a5e
note range for midi * views API cleanup
2024-10-17 07:44:30 -06:00
Paul Davis
9dbdf0eb43
share code between MidiRegioNView and MidiView
2024-10-17 07:44:29 -06:00
Paul Davis
10b48d2cc4
lock in some major steps for the midi cue/pianoroll editor
2024-10-17 07:44:29 -06:00
Paul Davis
549defc068
more work on fixing pianorule recomposition of objects
2024-10-17 07:44:29 -06:00
Paul Davis
3700f191cd
fix some region-view level selection issues
2024-10-17 07:44:29 -06:00
Paul Davis
a8895e50c7
Fix behavior of midi region when height changes
...
MidiView cares about the previous height, so call that first, before
RegionView::set_height() sets the member that controls height()
2024-10-17 07:44:29 -06:00
Paul Davis
5a55f04b16
fix group used as parent for a Midi(Region)View
...
this fixed the nesting of the _note_group and thus notes are drawn
in the correct place.
2024-10-17 07:44:29 -06:00
Paul Davis
33298a0ba0
get region-create drags working and no crashes (nut also no note) for note-drags
2024-10-17 07:44:29 -06:00
Paul Davis
27e9e19aac
initial refactoring of MidiRegionView IS-A MidiView
2024-10-17 07:44:29 -06:00
Paul Davis
e3be2c781f
constification of EditingContext/{Public}Editor time+snap methods
2024-10-17 07:44:29 -06:00
Paul Davis
9e5211e9b1
move 2 relative time methods from RegionView to EditingContext
2024-10-17 07:44:29 -06:00
Paul Davis
9d7a87083a
removed unused MidiRegionView argument from SysEx (visual) constructor
2024-10-17 07:44:29 -06:00
Paul Davis
204d4237f8
further steps towards MidiRegionView outside the Editor
2024-10-17 07:44:29 -06:00
Paul Davis
3341184f8c
clean up minor mess after manual rebasing
2024-10-17 07:44:29 -06:00
Paul Davis
dee8e920e6
editing refactoring, the drag part
2024-10-17 07:44:29 -06:00
Paul Davis
089a9521d5
steps to an ecology of editing
2024-10-17 07:44:29 -06:00
Robin Gareus
4fa4fdf498
Remove patch change GUI Flag when MIDI model changes
...
Previously patch changes were only removed when the
removal was initiated by the GUI.
2024-09-09 00:16:33 +02:00
Robin Gareus
3766b22e06
Add GUI support to remove SysEx Events
2024-09-08 23:59:56 +02:00
Robin Gareus
f693c0406a
When drawing a note, only play it once
...
Previously two identical Note on events were sent:
* Select newly created note -> note-on event
* Play newly created note -> note-on event
2024-05-20 19:42:29 +02:00
Robin Gareus
5d175786e8
Remove debug messages, cleanup output (1/2)
2024-05-08 00:56:43 +02:00
Robin Gareus
4b6e372ce7
Fix deleting the same point multiple times ( #9689 )
...
When iterating over automation tracks, previously it was
possible that the same point was added multiple times to
the selection.
2024-04-15 00:39:20 +02:00
Paul Davis
253dcb312b
make note joining code a bit cleaner and preserve note velocities
2023-11-24 09:29:31 -07:00
Paul Davis
d6beba67dc
note joining should occur per-channel
2023-11-24 08:32:28 -07:00
Paul Davis
f95e94bc29
note tupling tweaks, and note join added
...
bindings moved to s/S and j, no need to use split-by-grid first
split-by-grid still needs work for non-grid aligned notes
2023-11-23 22:42:04 -07:00
Paul Davis
b92b2389fd
make note-tupling work on multiple notes
2023-11-22 19:37:46 -07:00
Paul Davis
c3d14b1169
basic note-tupling functionality implemented
2023-11-21 17:07:42 -07:00
Paul Davis
3792bf86e4
MidiRegionView: stubs for new methods
2023-11-21 17:07:42 -07:00
Paul Davis
0f170ec87b
MidiRegionView: initialize new members
2023-11-21 17:07:42 -07:00
Paul Davis
7762fa47ea
make an attempt to show note length with verbose cursor
...
Likely much more intelligent string formatting is needed to make this
actually useful to most people
2023-11-14 11:05:13 -07:00
Paul Davis
d5a7e5f289
pass vectors for velocities by reference
2023-10-28 17:48:33 -06:00
Paul Davis
ef0938a16d
more improvements to velocity drawing (including straight line)
2023-10-27 11:50:15 -06:00
Paul Davis
91fbb1c65b
first steps towards improving straight line drags for velocity
2023-10-27 11:50:15 -06:00
Paul Davis
a5a1caf9fa
NOOP: whitespace changes
2023-10-22 17:15:20 -06:00
Paul Davis
8f405f3657
provide preference for scrolling-adjusts-note-velocity
2023-10-22 17:15:20 -06:00
Paul Davis
4974369787
fix logic in MidiRegionView::select_matching_notes() to not add notes when asked not to
2023-10-18 09:05:48 -06:00
Paul Davis
d88b9d36ca
freehand draw for velocity only affects selected notes, if any are selected ( #9491 )
2023-10-18 08:26:42 -06:00
Paul Davis
9f475d5427
avoid double call to ::model_changed() during set up of a MidiRegionView
...
There is a DisplaySuspender in MidiRegionView::init(), and another invoked
during the addition of a RegionView to a StreamView. Before this change, both
suspenders were created to invoke a full "model-changed" redisplay. Since every
RegionView must be added to a StreamView to be visible, we only need the second
suspender to invoke the model-change. The first one can be just a view
change (and probably isn't necessary at all, but I did not want to change that
much at this point in time).
2023-09-24 18:41:51 -06:00
Paul Davis
1f13b311fd
midi display: ensure that lollipops are visible right after import
...
VelocityGhostRegion used the visibility of the "parent" note canvas item of a
lollipop canvas item to determine the lolli's visibility. But during the
construction of the MidiRegionView, the note's container is not yet visible, so
this fails.
In addition this logic would hide lollis for notes that are outside the current
visible note range of the track (because the parent note item was not visible).
This change adds a method to MidiRegionView to decide if a note is within the
region's time range, and if so, we show the lollipop item. This means that
lollis for notes outside the note-range will still be visible, which seems more
correct. In addition, the nascent condition of the parent note's container no
longer affects lolli visibility.
2023-09-24 18:38:20 -06:00
Paul Davis
61d8ceaa85
change API of Editor::get_quantize_op() and fix flaky UX when using quantize-notes
2023-09-24 15:01:04 -06:00
Robin Gareus
cf9f9db48b
Set length of new percussive hits to 1 tick
...
This prevents overlap of successive hits.
Ardour 7 added a new duration select drop-down menu,
which defaults to "Auto" (musical grid) and removed
the special case when drawing percussive notes.
It was possible to accidentally create overlapping notes,
without the user being aware of doing so.
2023-09-04 23:26:54 +02:00
Paul Davis
1febe07480
lollis: use layering to enable editing of overlapping regions
2023-06-27 09:19:29 -06:00
Paul Davis
60256282e3
lollis: make a single drag be represented by a single Command object (for undo/redo)
2023-06-26 14:18:18 -06:00
Paul Davis
6d4bbae48c
prototyping mouse-drag-paint velocity
2023-06-26 14:18:18 -06:00
Paul Davis
31de7e93bf
lollis: show note selected status (using note selection outlien color)
2023-06-26 14:18:18 -06:00
Paul Davis
c75b9a11ef
lollis: fix drawing and positioning glitches
2023-06-26 14:18:18 -06:00
Paul Davis
2d9a2ad668
lollis: also adjust velocity bars during the drag
2023-06-26 14:18:18 -06:00
Paul Davis
cf7ba80fc1
the basics of lollipop dragging
2023-06-26 14:18:18 -06:00