Age | Commit message (Collapse) | Author |
|
|
|
- freeze the correct playlists on fiorst move.
- only update the start offset of linked regions once the drag
has finished.
|
|
- the spray is limited to the first entered note.
- all new notes are selected (requires a selection change to
MRV::create_note_at()
|
|
- should fix 7105
|
|
|
|
- Hit::position still may not be set correctly,
but this patch eliminates the error for now.
|
|
|
|
|
|
- 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.
|
|
boost::shared_ptr<> (rather than returning an int)
|
|
|
|
|
|
- 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).
|
|
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.
|
|
- as MRV removes invalid notes from the GR, we
can simply update all events after checking vertical visibility.
|
|
|
|
|
|
Probably some corner cases to be fixed, but pretty functional and largely modelled
on existing code (paste, drag, step add note etc.)
|
|
|
|
use boost::unordered_map as a note store for ghost & midi region
views.
as per otiginal method, only notes within regoin bounds are stored.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- also fixes patch changes appearing outside region bounds
when copied/trimmed.
|
|
- redisplay_model() does this for us.
|
|
- 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).
|
|
|
|
- this requires that MidiGhostRegion::update_contents_height()
also controls visibility.
|
|
- MGR visibility is handled by update_note/hit()
MRV unconditionally updates MGR events
- remove MidiGhostRegion::update_range()
- rename set_contents_height -> update_contents_height
|
|
|
|
- mostly due to searching a multiset rather than a list of
canvas events.
|
|
- fixes just-introduced undo crash.
|
|
|
|
- zoom is still a bit slow.
|
|
|
|
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.
|
|
|
|
- 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).
|
|
- its not obvious that this is happening in sustained mode,
but Percussive reveals all.
|
|
|
|
|
|
|
|
- snap behaviour is round to nearest
- holding down button 1 while dragging creates many
(if not already present) hits.
|
|
- nothing else treats a modifier press as
a key press event, so don't pass it on.
amends 0af9fb0d
|
|
|
|
|
|
|