13
0
Commit Graph

17608 Commits

Author SHA1 Message Date
7c6fc78b11
Amend ca1583cdad fix windows builds 2024-10-18 15:37:23 +02:00
bf2016071d a variety of improvements related to clip recording & editing 2024-10-17 21:47:52 -06:00
229506147a playhead for MIDI clip editor during playback (first steps) 2024-10-17 15:06:33 -06:00
c5c865f589 fix potentially unset variable (thanks clang!) 2024-10-17 15:06:04 -06:00
e74f57c52b get playhead functioning during clip recording (MIDI) 2024-10-17 14:36:27 -06:00
7b88ae2466 fix initial LR sizing of midi cue editor canvas sections 2024-10-17 13:37:21 -06:00
2ff90a0557 probably fix an assert() logic error 2024-10-17 11:27:57 -06:00
05cb6197a6 return to file-conditional for pre-release dialog 2024-10-17 07:49:25 -06:00
c2094085e3 sort of get MIDI notes to extend during clip recording
Also, robustify MidiView against a missing MidiModel member variable
2024-10-17 07:44:33 -06:00
774f5f49da robustify MidiView against the condition where it has no MidiRegion 2024-10-17 07:44:33 -06:00
e390c2c3dd trigger page should respond to rec-enable changes 2024-10-17 07:44:33 -06:00
9ad08fa9a5 add input,output,rec-enable buttosn to trigger strip
With clip recording starting to function, these things now matter on the cue page
2024-10-17 07:44:33 -06:00
d7e85de7c2 first somewhat version of show-clip-capture MIDI notes as they arrive 2024-10-17 07:44:33 -06:00
bd0b5495c6 robustify MidiView so that it can be created without a MidiTrack 2024-10-17 07:44:33 -06:00
35f16f1bb6 preparations for clip data display (MIDI) while recording (GUI edition) 2024-10-17 07:44:33 -06:00
67c6a9dbf4 fix lambda warning (unused captured this) 2024-10-17 07:44:32 -06:00
01068fe306 further adventures in drag-refactoring do that LineDrag can be used in MidiCueEditor also 2024-10-17 07:44:32 -06:00
302337e8fd resurrect a slightly modified pre-release dialog in prep for merge with master 2024-10-17 07:44:32 -06:00
dfe3c48d0f use button.y and modifier state when adding a control point in the midi cue automation lane 2024-10-17 07:44:32 -06:00
2afdeb519f refactor rubberband drags to take a functor for the no-drag condition
Also move code for adding automation line control points into automation line, rather
than in AutomationTimeAxisView (some work still required to finalize this)
2024-10-17 07:44:32 -06:00
e6c0fcf98f refactor end-of-rb-selection for EditingContext
Whhat the main editor and the cue editor do with a click varies significantly
2024-10-17 07:44:32 -06:00
db30a7d040 fix sprintf overflow warning from clang on macOS 2024-10-17 07:44:32 -06:00
f3d099f83f fix unused variable warning from clang on macOS 2024-10-17 07:44:32 -06:00
dd6b2c8c7f fix several set-not-used warnings from clang on macOS 2024-10-17 07:44:32 -06:00
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
4b8c51574d refactor the "selectables" API to allow use within separate (e.g. cue) editors 2024-10-17 07:44:32 -06:00
83ea6e18b5 get MIDI cue editor mouse mode buttons to reflect state at startup 2024-10-17 07:44:32 -06:00
b02a930c04 remove debug output 2024-10-17 07:44:32 -06:00
1961a9207c provide a better method to decide if a trigger(slot) is occupied
This is necessary with clip recording because for some short time after recording,
a trigger may be playable despite not yet having a region.

GUI edition.
2024-10-17 07:44:32 -06:00
e089953e78 get blinking rec status closer to correct for clip recording 2024-10-17 07:44:32 -06:00
1146a4ad07 move RecordState enum from ARDOUR::Session to ARDOUR so we can use it in TriggerBox (GUI) 2024-10-17 07:44:32 -06:00
90858279bc tweak drawing of clip recording rec-enable icon 2024-10-17 07:44:32 -06:00
1e193d0363 GUI side of clip recording (recording indicators etc.) 2024-10-17 07:44:32 -06:00
8069a4a514 remove some debug output 2024-10-17 07:44:32 -06:00
fa6da8818f first functioning MIDI clip recording (GUI) 2024-10-17 07:44:32 -06:00
ca1583cdad the great onceification (gui)
Replace use of #ifndef header guards with #pragma once

Modern C++, baby!
2024-10-17 07:44:31 -06:00
56ce9c33c0 renaming: AutomationLineBase => AutomationLine, AutomationLine => EditorAutomationLine 2024-10-17 07:44:31 -06:00
90c8726c6d wideranging changes to get automation editing working in cue editor 2024-10-17 07:44:31 -06:00
4169f11ddd cue automation lines: take height into consideration 2024-10-17 07:44:31 -06:00
71d5b50a94 kinda-sorta get an automation line for modwheel in the cue editor 2024-10-17 07:44:31 -06:00
afa15a0061 get velocity editing working in both the cue editor and MIDI region views
Quite a bit of hairy coordinate system stuff in here that ought to be commented more
clearly
2024-10-17 07:44:31 -06:00
ee305a7169 catch up on TriggerReference API changes in GUI 2024-10-17 07:44:31 -06:00
a72bde5d3c add the final virtual GhostRegion method to VelocityGhostRegion 2024-10-17 07:44:31 -06:00
76104f994b velocity display: clear must invalidate optimization iterator 2024-10-17 07:44:31 -06:00
a44e8ac088 fix drawing of lollipops.
There may be more virtual GhostRegion methods that VelocityGhostRegion has to proxy
to VelocityDisplay
2024-10-17 07:44:31 -06:00
54fdf90cc2 lots of detailed fixes to get lollipops in tracks working again, post re-factor 2024-10-17 07:44:31 -06:00
739d58840f manually reimplement 3766b22e06 from master (sysex deletion)
Things have changed
2024-10-17 07:44:31 -06:00
15258b9aa4 new base class for automation lines 2024-10-17 07:44:31 -06:00
fa993ec9f4 various fixes to get lollipops to display (cue editor only so far) 2024-10-17 07:44:31 -06:00
0399cd9d02 initial use of refactored VelocityDisplay 2024-10-17 07:44:31 -06:00
96e074d78c refactor velocity display so that it can be used in the editor and elsewhere 2024-10-17 07:44:31 -06:00
c232525e94 remove broken out loop iteration 2024-10-17 07:44:31 -06:00
69871e0021 trigger page: use a VPane so we can enlarge the cue editor if desired
Plus fixup to get MIDI notes redrawn as pane is resized
2024-10-17 07:44:31 -06:00
12519ef621 add a new automation group rect to the midi cue editor, and size it 2024-10-17 07:44:31 -06:00
45e4b97a6f move some methods from Editor to Editing context so that drawing controls work everywhere 2024-10-17 07:44:31 -06:00
fa79645c19 move most of AutomationLine into AutomatonLineBase, a class not strongly tied to the editor 2024-10-17 07:44:31 -06:00
0b05ec93c8 use correct item for stream, automation track and region drags 2024-10-17 07:44:31 -06:00
e67a3387fd Fix Editor Lua bindings
Methods that have been moved to EditingContext need
to reference the abstract definition there, and PublicEditor's
first parent class also need to be EditingContext (same
memory address)
2024-10-17 07:44:31 -06:00
2fceb66193 manual fixups for errors during rebasing against master 2024-10-17 07:44:31 -06:00
8523598664 fix management of undo/redo and _current_editing_context
We cannot switch on a leave event from a widget, because the undo/redo menu items must remain
labelled until we are actually in a new editing context. So switch when we switch tabs
or when we edit the (MIDI) cue editor
2024-10-17 07:44:31 -06:00
e591bc91f9 attach shared bindings to a parent of editor canvas to make them accessible 2024-10-17 07:44:31 -06:00
86ecca8c76 make undo/redo action sensitivity work with multiple EditingContexts 2024-10-17 07:44:31 -06:00
c4534cc9c4 undo history for MidiCueEditor
redo not operational yet for some unknown reason
2024-10-17 07:44:31 -06:00
8eb38f1406 move undo/redo key bindings into shared "Editing" space 2024-10-17 07:44:31 -06:00
6081bd5e19 make CueEditor be a HistoryOwner and start on undo/redo refactor 2024-10-17 07:44:31 -06:00
f80395fc2f use MidiModel::ContentsChanged to drive MIDI cue edit swaps (GUI version)
No need for a special method called post-edit
2024-10-17 07:44:31 -06:00
60830f4ab7 remove debug output 2024-10-17 07:44:30 -06:00
fcfa4fecb4 more preparation for MIDI cue editing to propagate to the slot (trigger) 2024-10-17 07:44:30 -06:00
044aec6563 basics of MIDI clip editing notification via model swap 2024-10-17 07:44:30 -06:00
4bbdbc6d13 fix handling of MIDI draw tool actions and widgets
The actions and draw_xxx values are now "static", and changes in the values are
notified via a static PBD::Signal so that each EditingContext can update the
appearance of its relevant widgets.

Note also wider use of lambdas when creating actions and menu items.
2024-10-17 07:44:30 -06:00
3224b37702 NO-OP: whitespace 2024-10-17 07:44:30 -06:00
4724683b5f fix placement of ghost note while in draw mode 2024-10-17 07:44:30 -06:00
30a7f44c12 fix geometry calculations during NoteCreateDrags.
This also only uses the draw length parameter if no motion
occured during the NoteCreateDrag. Otherwise it uses the length that was
dragged (which is subjected to a threshold).
2024-10-17 07:44:30 -06:00
dd211c4329 prefer nullptr to 0 2024-10-17 07:44:30 -06:00
71f946f3b3 move tooltip settings for EditingContext widgets to EditingContext 2024-10-17 07:44:30 -06:00
36eda47075 get temporal zoom workign in MidiCueEditor
and remove qite a bit of debug output
2024-10-17 07:44:30 -06:00
99d1a4cd9b if the Editor is not the current EditingContext, don't do Editor::escape stuff 2024-10-17 07:44:30 -06:00
033dd31ff1 fix reordering warning 2024-10-17 07:44:30 -06:00
dc44d10b48 handle Escape signal in all EditingContexts (including MidiCueEditor) 2024-10-17 07:44:30 -06:00
f2e1697058 dammit jim, it's a stack not a queue 2024-10-17 07:44:30 -06:00
280fdb6e62 virtualize EditingContext::midi_action() so that MidiCueEditor works
This makes MIDI bindings work in the cue editor, as intended.
2024-10-17 07:44:30 -06:00
afe98a6671 correctly define MIDI actions using MidiView, not MidiRegionView
The latter is derived from the former.
2024-10-17 07:44:30 -06:00
fea6c7592f NO-OP: whitespace 2024-10-17 07:44:30 -06:00
e0a5b591f8 correct errors in coordinate math when moving a mote selection
This may be the first of several instances where mixing
timeline-relative positions and global canvas coordinates leads to
problems. Let's hope there are not too many.
2024-10-17 07:44:30 -06:00
e7ae93929b correctly set timeline_origin for a MidiCueEditor
for some reason the width is different when ::set_region() is called
2024-10-17 07:44:30 -06:00
c97f4f4016 various changes to editor drag code to correctly use a bounding item 2024-10-17 07:44:30 -06:00
030052e57f don't double-apply the effect of a drag with a bounding item to _grab_y 2024-10-17 07:44:30 -06:00
a9163516d8 the horizontal position *is* the value of the horizontal adjustment.
Don't waste time getting a less accurate answer from sample_to_pixel() on
_leftmost_sample.
2024-10-17 07:44:30 -06:00
060d8c82d7 introduce concept of timeline origin to EditingContext
For the main editor, the timeline starts at the left edge of the editor
canvas. But for MidiCueEditor, we place a canvas-ified piano roll header on the
left of the canvas, so the timeline starts at some position right of that.

Note that this means that converting global canvas coordinates to timeline
coordinates is no longer guaranteed to be a 1:1 transform (it will be for
Editor, but in general for EditingContext).
2024-10-17 07:44:30 -06:00
36d0a6e908 fix dangling references to a MidiRegion and MidiTrack in a MidiView 2024-10-17 07:44:30 -06:00
3aba913649 manual cleanup after another tricky rebase against master 2024-10-17 07:44:30 -06:00
e630051de1 more manual fixes after a substantial rebase 2024-10-17 07:44:30 -06:00
6ee97f93bb more manual fixes after a substantial rebase 2024-10-17 07:44:30 -06:00
e205bb98a1 manual fixes after a substantial rebase 2024-10-17 07:44:30 -06:00
bef7c48fe9 the state of things in pianorule, committed for travel purposes 2024-10-17 07:44:30 -06:00
48a6e8dfcf basics of autoscroll for pianoroll (mostly shared with Editor)
More work to do moving/testing pianoroll autoscroll variant back into EditingContext
and sharing it with Editor.
2024-10-17 07:44:30 -06:00
3fccf2b458 change coordinate system used for rubberband drags in piano roll 2024-10-17 07:44:30 -06:00
96ccb96b3b redesign drag API to provide a bounding item, not just "trackview only"
This allows rubberband drags on both the main editor and the separate piano roll to wokr
correctly.
2024-10-17 07:44:30 -06:00
3422ef5c3d fix event deliver for MidiCueView
events need a non-container item to be delivered
2024-10-17 07:44:30 -06:00
14b95116e1 move various action registry stuff into EditingContext 2024-10-17 07:44:30 -06:00
023c21ff58 get those MIDI tool selector menus built 2024-10-17 07:44:30 -06:00
0d01e73b86 some state mgmt for EditingContexts 2024-10-17 07:44:30 -06:00
fcf5bb88d5 cue editor/piano roll: starting to get mode buttons working and keybindings too 2024-10-17 07:44:30 -06:00
59ed3d7138 cleanup canvas piano roll header so that it can exist with no current MidiView 2024-10-17 07:44:30 -06:00
d356cacb2a working and accessible canvas cursor setting 2024-10-17 07:44:30 -06:00
7899829a5e note range for midi * views API cleanup 2024-10-17 07:44:30 -06:00
9d8ddd814c expose ::set_note_range() as public in MidiView 2024-10-17 07:44:30 -06:00
a3491a13df fix drawing translation issue 2024-10-17 07:44:30 -06:00
df25386d2f basically functioning piano roll for midi cue editor 2024-10-17 07:44:30 -06:00
f7b6a3cac8 tentative beginnings for a canvas piano roll header 2024-10-17 07:44:30 -06:00
5acedc036a fix up event handling so that MIDI note drag works in cue editor 2024-10-17 07:44:30 -06:00
2b51e0ec24 prefer lambdas to stupid stub static functions 2024-10-17 07:44:30 -06:00
abf372ad46 and we have h-scrolling in the cue editor 2024-10-17 07:44:30 -06:00
f425a974d6 the continuing co-evolution of Editor,EditingContext & MidiCueEditor 2024-10-17 07:44:30 -06:00
10244c0360 tempo bar and BBT ruler in MIDI cue editor 2024-10-17 07:44:30 -06:00
a523551228 use SMF tempo map if available in MidiCueEditor 2024-10-17 07:44:29 -06:00
715ac5cd3a use new SMF::tempo_map() method when importing tempo map from SMF 2024-10-17 07:44:29 -06:00
f6b069d251 steps toward rulers for the MIDI cue editor 2024-10-17 07:44:29 -06:00
e3205bded0 do something to make MIDI bindings accessible in any EditingContext 2024-10-17 07:44:29 -06:00
bde4768734 move a bunch of MIDI editing into EditingContext 2024-10-17 07:44:29 -06:00
a2f04a3104 virtualize event handling methods for EditingContext 2024-10-17 07:44:29 -06:00
9dbdf0eb43 share code between MidiRegioNView and MidiView 2024-10-17 07:44:29 -06:00
0311bffed8 progrss with rubber band selection and event handling in MIDI cue editor 2024-10-17 07:44:29 -06:00
10b48d2cc4 lock in some major steps for the midi cue/pianoroll editor 2024-10-17 07:44:29 -06:00
549defc068 more work on fixing pianorule recomposition of objects 2024-10-17 07:44:29 -06:00
3bd2d39d51 fixes to get redraws when note range changes 2024-10-17 07:44:29 -06:00
3700f191cd fix some region-view level selection issues 2024-10-17 07:44:29 -06:00
182a24751b get standalone MidiView to display notes
This also removes an unused TriggerBoxWidget from each regular
MixerStrip.
2024-10-17 07:44:29 -06:00
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
69d929b9d2 no more slice.h 2024-10-17 07:44:29 -06:00
db89647676 revert scope change for a local variable 2024-10-17 07:44:29 -06:00
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
c39558471f remove current slice usage/members 2024-10-17 07:44:29 -06:00
33298a0ba0 get region-create drags working and no crashes (nut also no note) for note-drags 2024-10-17 07:44:29 -06:00
27e9e19aac initial refactoring of MidiRegionView IS-A MidiView 2024-10-17 07:44:29 -06:00
38ebe95613 add missing files 2024-10-17 07:44:29 -06:00
54c41372cc fix a rebase error 2024-10-17 07:44:29 -06:00
2b997343a4 first working visual evidence of MIDI display/editing on cue page 2024-10-17 07:44:29 -06:00
ff962821ad NO-OP: comment fix 2024-10-17 07:44:29 -06:00
584d97bc2d NO-OP (whitespace) 2024-10-17 07:44:29 -06:00
e24d1d069d all streamviews are now ViewBackgrounds
This new inheritance heirarchy lets us share (a very small piece of) code
between streamviews in the Editor and the nascent piano roll object on the cue
page.
2024-10-17 07:44:29 -06:00
a550b6482f start using the now-compilable MidiView
Nothing yet derives from this, but MIDI display items and drags
do use it.
2024-10-17 07:44:29 -06:00
fb1dbb1e9c remove method decls no longer based in PublicEditor.h 2024-10-17 07:44:29 -06:00
e3be2c781f constification of EditingContext/{Public}Editor time+snap methods 2024-10-17 07:44:29 -06:00
9e5211e9b1 move 2 relative time methods from RegionView to EditingContext 2024-10-17 07:44:29 -06:00
9d7a87083a removed unused MidiRegionView argument from SysEx (visual) constructor 2024-10-17 07:44:29 -06:00
e67e6aa363 no-compilable steps towards MidiView 2024-10-17 07:44:29 -06:00
204d4237f8 further steps towards MidiRegionView outside the Editor 2024-10-17 07:44:29 -06:00
ca7bd9a73d manually merge in new actions for note tupling 2024-10-17 07:44:29 -06:00
e6c56b39d1 finish basic distribution of EditingContext methods
This compiles but is not expected to work yet
2024-10-17 07:44:29 -06:00