nick_m
16089bff96
more linked midi region trim drag fixes.
...
- freeze the correct playlists on fiorst move.
- only update the start offset of linked regions once the drag
has finished.
2017-03-06 15:51:53 +11:00
nick_m
1f9c26136c
rework percussive hit spraying.
...
- the spray is limited to the first entered note.
- all new notes are selected (requires a selection change to
MRV::create_note_at()
2017-03-05 01:57:10 +11:00
nick_m
e8b5b4fcf3
offset linked regions to compensate for negative start after trim drag.
...
- should fix 7105
2017-03-04 11:28:49 +11:00
nick_m
62cef7feff
also fix flying percussive hits while copy-dragging.
2017-02-24 01:11:56 +11:00
nick_m
ae3c50c495
hotfix for flying percussive hits while dragging.
...
- Hit::position still may not be set correctly,
but this patch eliminates the error for now.
2017-02-24 00:36:58 +11:00
nick_m
b24dd49c1a
update note length when dragging notes (over tempo change)
2017-02-07 03:10:02 +11:00
nick_m
987c1cb94a
remove overzealous bounds check when dropping notes.
2017-02-05 05:26:18 +11:00
nick_m
5031bdcf10
midi note drags are music-based.
...
- wysiwyg (during drag) when dragging more than one note across
a tempo change.
- introduces a muscal equivalent of snap_delta (only used for
note drags atm)
- split earliest note in selection into a separate function
- MRV::copy_selection() returns the equivalent _primary note
to avoid offset hell.
- RV::snap_frame_to_frame returns a MusicFrame
- prevent note drag moving before region start.
2017-02-05 05:02:01 +11:00
fac04afbba
If 'MidiRegionView::find_canvas_sys_ex()' fails, make it return a boost::shared_ptr<> (rather than returning an int)
2017-02-04 16:14:56 +00:00
nick_m
f7b005ebf1
clean up patch change/sysex headers.
2017-02-04 22:57:36 +11:00
nick_m
2eca71e6f1
set sysex height & position on redisplay.
2017-02-04 22:57:36 +11:00
nick_m
3e4eaf3991
improve sysex data display.
...
- don't add a new SysEx canvas item every time we zoom or drag.
- speed up redisplay generally using PatchChange-like method
for finding items (find_canvas_sys_ex() in boost::unordered_map).
2017-02-04 22:57:36 +11:00
nick_m
59daffea1d
rework snap
...
snap now fills in a struct (MusicFrame) which contins a snapped frame
along with a music divisor.
this gives useful information wrt magnetic snap which may or may not
have rounded to an exact musical position.
region position may now be set musically (using quarter notes for now).
this patch fixes several problems in the current code:
- dragging a list of music-locked regions now maintains correct
musical offsets within the list.
- splitting regions using magnetic snap works correctly (#7192 )
- cut drag should now work correctly with magnetic snap.
- musical length of split midi regions is no longer frame based.
2017-02-04 22:57:36 +11:00
nick_m
ab052d0565
speed up midi ghost region update
...
- as MRV removes invalid notes from the GR, we
can simply update all events after checking vertical visibility.
2017-01-30 01:46:38 +11:00
nick_m
e7415c6619
MidiRegionView::redisplay_model() - code cleanup
2017-01-27 00:56:39 +11:00
8432a77329
MIDI note copy needs to adjust pitch of new notes before adding them
2017-01-24 23:07:27 +01:00
8dedea5ffa
implement copy-drag for MIDI notes.
...
Probably some corner cases to be fixed, but pretty functional and largely modelled
on existing code (paste, drag, step add note etc.)
2017-01-23 21:58:02 +01:00
3dbdc4d837
Leave some notes about memory-leaks
2017-01-20 13:54:12 +01:00
nick_m
9e9f99f004
note display performance.
...
use boost::unordered_map as a note store for ghost & midi region
views.
as per otiginal method, only notes within regoin bounds are stored.
2017-01-04 00:19:31 +11:00
nick_m
4d274cbf26
fix bug where hidden ghostregions were updated.
2016-12-30 20:40:48 +11:00
8b8f705520
Fix updates of region-color
2016-12-29 23:06:15 +01:00
nick_m
e58fda2fa2
minor MidiRegionView::redisplay_model() cleanup
2016-12-30 00:46:43 +11:00
nick_m
68ca289b92
retain note selection for invalidated notes.
2016-12-30 00:40:20 +11:00
nick_m
f4b3133035
more note performance work (dereference less).
2016-12-29 23:22:06 +11:00
nick_m
149cb402b9
revert 7805217b5
(make note mode change work again).
2016-12-29 23:15:35 +11:00
nick_m
d49b141e11
improve the performance of MidiRegionView::find_canvas_patch_change().
...
- also fixes patch changes appearing outside region bounds
when copied/trimmed.
2016-12-29 04:21:37 +11:00
nick_m
7805217b5f
don't clear note items in MidiRegionView::display_model().
...
- redisplay_model() does this for us.
2016-12-29 02:39:57 +11:00
nick_m
da92d2d764
speed up load/quit for sessions containing ~25k events.
...
- MGR uses a _note_group to hold events.
- MRV & MGR delete canvas notes directly from their note group.
- sysex is untested (it uses MRV note group).
2016-12-24 02:01:37 +11:00
nick_m
ddd085cf4e
hide ghost events appropriately (e.g. after split).
2016-12-23 05:07:22 +11:00
nick_m
37e858da7d
only update GhostEvents on visible trackviews.
...
- this requires that MidiGhostRegion::update_contents_height()
also controls visibility.
2016-12-23 02:55:51 +11:00
nick_m
96048ad4c0
midi scrooming performance updates.
...
- MGR visibility is handled by update_note/hit()
MRV unconditionally updates MGR events
- remove MidiGhostRegion::update_range()
- rename set_contents_height -> update_contents_height
2016-12-23 00:51:34 +11:00
nick_m
eecc9ed743
fix various midi display bugs introduced by 9038be49d8
.
2016-12-21 03:18:18 +11:00
nick_m
9038be49d8
improve midi zoom/scroom performance with lots of notes.
...
- mostly due to searching a multiset rather than a list of
canvas events.
2016-12-20 21:31:54 +11:00
nick_m
a99331a4e9
more work on patch change redisplay.
...
- fixes just-introduced undo crash.
2016-12-16 01:58:58 +11:00
c9444e048e
correct return syntax
2016-12-15 11:57:31 +00:00
nick_m
cfbcadc7ef
speed up patch change redisplay when using scroomer / adjusting height.
...
- zoom is still a bit slow.
2016-12-15 22:35:23 +11:00
nick_m
176625d9e0
test diff for patch change performance when caching colours.
2016-12-14 04:05:08 +11:00
08fffeffec
Remove Evoral::MIDIEvent
...
It is slightly questionable whether type specific methods like
velocity() belong on Event at all, these may be better off as free
functions. However the code currently uses them as methods in many
places, and it seems like a step in the right direction, since, for
example, we might some day have events that have a velocity but aren't
stored as MIDI messages (e.g. if Ardour uses an internal musical model
that is more expressive).
In any case, the former inheritance and plethora of sloppy casts is
definitely not the right thing.
2016-12-03 15:18:21 -05:00
nick_m
bd107a28c6
MidiRegionView::clear_events() does _selection.clear(). remove the extra one.
2016-11-23 15:32:13 +11:00
nick_m
fcad5a337f
decouple midi region note range and height from midi streamview.
...
- this allows a midi region drag to update the visible notes
correctly while crossing MIDI streamviews with a differing
note range.
as a side effect, fixes a bug where changing
note range on a track did not draw some notes
(apply_note_range redisplays the model).
2016-11-23 08:04:14 +11:00
nick_m
766fa9aa5b
don't display notes that start at region end.
...
- its not obvious that this is happening in sustained mode,
but Percussive reveals all.
2016-11-22 02:59:57 +11:00
nick_m
a14c577b8a
fix thinko in 8e8c4a73f1
.
2016-11-22 02:21:05 +11:00
nick_m
8e8c4a73f1
prevent Percussive mode from displaying a ghost hit at region end.
2016-11-22 02:01:01 +11:00
nick_m
eef18c47fd
fix compilation, rename PercussiveCreateDrag -> HitCreateDrag
2016-11-21 04:20:27 +11:00
nick_m
5bcb9adbf8
rework mouse hit creation (percussive mode) - mostly as per #7130 .
...
- snap behaviour is round to nearest
- holding down button 1 while dragging creates many
(if not already present) hits.
2016-11-21 04:02:21 +11:00
nick_m
7eed31a4b2
MRV handles an alt key press even if nothing happened.
...
- nothing else treats a modifier press as
a key press event, so don't pass it on.
amends 0af9fb0d
2016-11-21 01:17:24 +11:00
nick_m
f989ed5b7f
fix for short notes being displayed as infinitely long.
2016-11-21 00:17:31 +11:00
nick_m
0af9fb0dee
pressing alt while creating a note (snap modifier) keeps mouse_state.
2016-11-20 04:54:20 +11:00
nick_m
e525be86d6
after creating a note, don't add the ghost note until next motion.
2016-11-20 04:51:38 +11:00
nick_m
cb64e926c2
NoteCreateDrag starts on button press.
...
- removes the separation between click and
drag-creation of notes noth now handled by the drag code).
2016-11-20 04:49:18 +11:00