Commit graph

858 commits

Author SHA1 Message Date
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