summaryrefslogtreecommitdiff
path: root/gtk2_ardour/midi_region_view.h
AgeCommit message (Collapse)Author
2020-04-16MidiRegionView no longer handles any keypresses or alters editor "note ↵Paul Davis
selection" 1. Alt is still handled to change drag behavior 2. Selection doesn't store notes unless they are part of the cut buffer, which means we should not be altering the note selection in the editor's selection object most of the time.
2020-04-16NOOP: newline removalPaul Davis
2020-04-16add a bunch of argument-free methods to MidiRegionView for use as actionsPaul Davis
2020-04-04Update PatchChange when instrument/midnam changesRobin Gareus
2019-09-30No more doxygen warnings for gtk2_arodur/*Robin Gareus
That's with doxgen 1.8.13.
2019-09-30Fix some UI doxygen warningsRobin Gareus
2019-08-03Update GPL boilerplate and (C)Robin Gareus
Copyright-holder and year information is extracted from git log. git history begins in 2005. So (C) from 1998..2005 is lost. Also some (C) assignment of commits where the committer didn't use --author.
2017-09-24fix header order and space alignmentPaul Davis
2017-09-24convert codebase to use Temporal for various time typesPaul Davis
2017-09-18globally change all use of "frame" to refer to audio into "sample".Paul Davis
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode and video in order to keep the legible
2017-07-17Clean up library inheritance (colors.h, utils.h)Robin Gareus
make libwidget independent of libcanvas. Confine basics to pbd and gtkmm2ext.
2017-07-01NO-OP whitespace (updated GH PR #357)Thomas Brand
2017-03-05remove bogus variable from last commitnick_m
2017-03-04offset linked regions to compensate for negative start after trim drag.nick_m
- should fix 7105
2017-02-05midi note drags are music-based.nick_m
- 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-04improve sysex data display.nick_m
- 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-01-30speed up midi ghost region updatenick_m
- as MRV removes invalid notes from the GR, we can simply update all events after checking vertical visibility.
2017-01-23implement copy-drag for MIDI notes.Paul Davis
Probably some corner cases to be fixed, but pretty functional and largely modelled on existing code (paste, drag, step add note etc.)
2017-01-04note display performance.nick_m
use boost::unordered_map as a note store for ghost & midi region views. as per otiginal method, only notes within regoin bounds are stored.
2016-12-29improve the performance of MidiRegionView::find_canvas_patch_change().nick_m
- also fixes patch changes appearing outside region bounds when copied/trimmed.
2016-12-22More 8 whitespace to tab indentation fixesNil Geisweiller
2016-12-15speed up patch change redisplay when using scroomer / adjusting height.nick_m
- zoom is still a bit slow.
2016-12-14test diff for patch change performance when caching colours.nick_m
2016-11-23decouple midi region note range and height from midi streamview.nick_m
- 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-22NoteCreateDrag - remove some codenick_m
2016-11-19further to 1a6a72b57, handle deleting a note while a non-selected one is ↵nick_m
entered.
2016-10-15Note selection state uses note event_id_t.nick_m
2016-09-23Fix bug where drawing long notes placed the new note on the previous snap line.nick_m
- NoteCreateDrag already applies this shift, so it was always applied twice to the note start frame.
2016-08-31MidiRegionView uses quarter note snapping.nick_m
- also ensures poiinter ghost note respects the snap modifier.
2016-07-22Remove the temporary note group in MidiRegionView, update start trim during ↵nick_m
drag.
2016-07-10remove reference "const int32_t&" -> const int32_t"Robin Gareus
this simplifies lua-bindings and also let's the compiler worry about constant primitive types.
2016-07-10Paste uses exact beats. rework _start_beats calculation in copy-with-offset ↵nick_m
ctor.
2016-02-11Fix bug #6762, MIDNAM note read outs don't work when dragging MIDI noteTim Mayberry
Also fixes it so the key is selected in the piano roll header
2016-01-14Change handling of Midi note selection to eliminate signal emission/delays.Tim Mayberry
Each MidiRegionView(MRV) is connected to the Selection::ClearMidiNoteSelection signal that is used to notify the all MRV instances to clear their note selection. The MRV class also has a private static SelectionCleared signal that is used to signal other MRV instances when their selection has been cleared. When the Selection::ClearMidiNoteSelection signal is emitted it causes each MRV to also emit the SelectionCleared signal. So the emission takes quadratic time. With 1500 MRV instances emission takes about 2.2 seconds on my machine, and some operations like track selection cause it to be emitted 3 times(another issue). The Selection class in the Editor knows which MRV instances have note selections, as it is notified by MidiRegionView whenever the selection count becomes zero or becomes non-zero. Clearing the Note selection should then just be O(N) and direct calls can be used rather than signals. This change removes both the signals and uses the existing references between Selection and MRV class to control note selection. There should be no behavioural changes in Midi note selection with this change.
2016-01-12Hide MIDI ghost note when over existing note.André Nusser
2015-10-17Replace static PBD::Signal in NoteBase with direct call to MidiRegionViewTim Mayberry
NoteBaseDeleted signal is static so each MidiRegionView(MRV) gets notified about the deletion of each NodeBase instance even if it is contained in another MRV The NoteBase and MRV classes are currently coupled anyway, so this change uses the reference to the MRV parent to directly call the parent when the NoteBase is deleted. This is all in the GUI thread so I'm not sure why a PBD::Signal was being used? If the MRV class is the only reference holder to the NoteBase class then I'm not sure if a callback is needed, perhaps the MRV should just remove the note from the selection before deleting it but I'm not that familiar with the code. Signal emission/calls static NoteBaseDeleted signal vs direct with 10540 NoteBase instances. static: After Load Session: 6360638 After Unload Session: 12221026(5860388) direct: After load Session: 10540 After unload Session: 21080 Session Load/Unload time in master, debug/release with ~10000 Notes(seconds) Load Debug: 32, 26 Unload Debug: 83 Load Release 32, 20, 42 Unload Release 26, 25 Session Load/Unload time with direct call debug/release(seconds) Load Debug: 21.7, 18.1 Unload Debug: 69.4, 71 Load Release: 22.6, 13.4, 17.7 Unload Release: 24, 23.5 This is not a large Session, 1500 regions, 10000 notes so there is probably some other funky stuff going on that needs fixing.
2015-10-05NOOP, remove trailing tabs/whitespace.Robin Gareus
2015-08-15cont'd work on piano roll highlighting.Robin Gareus
2015-05-23Fix inverted logic of SnapOff with snap modifiers pressed.nick_m
- also clean up, rename and comment some previous hanges.
2015-05-22Make note drags and resizes obey the disable sanp modifier.nick_m
2015-05-22More cleanupnick_m
- remove "no_magnets" ugh.
2015-05-17Relative snap - support magnetic mode (hackishly for now)nick_m
2015-05-16Relative snapnick_m
2015-03-14Only sound selected notes momentarily (#6142).David Robillard
This is debatable, the "sustained until mouse release" behaviour is handy sometimes, but this way seems like what most people probably want. Also, this "fire it and forget it and let it delete itself a bit later" thing with MidiPlayer makes me nervous. I guess it's unlikely someone manages to select a note then delete a track within 100ms, but, well...
2015-01-12Fix crash when undoing note delete.David Robillard
2015-01-11Fix AutomationTrackItem rubberband click thinking it was unhandled.nick_m
Fix several other cases where a single mouse click could cause several (not nested) selection ops. Fix missing selection memento for midi notes and midi commands. Rename some variables. Fix random style issues.
2015-01-07MusicalTime => Beats.David Robillard
2014-12-30Fix display of MIDI while recording.David Robillard
... almost. There are some artifacts when you zoom out while recording that I can't figure out, but whatever. Also fix performance issues caused by last attempt at rec display while zoom.
2014-12-28Show correct ghost hit for percussive tracks.David Robillard
2014-12-28Set new note velocity based on surrounding notes.David Robillard