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