Commit graph

299 commits

Author SHA1 Message Date
Paul Davis
07b20aa60a kbd automation: no popup immediately after add, 2nd Return/Enter for that
Also, two different bindings for adding a point with and without guard points.
2025-08-21 18:56:00 -06:00
Paul Davis
aa68198487 when adding automation points from kbd, don't translate y coordinate
since we have no screen position, we've already call ControlList::eval() and
that's the number we should be using for the new point.
2025-08-12 23:29:03 -06:00
Paul Davis
fa97071872 mamy improvements to kbd-driven automation editing
Really needs a short video to demo/explain
2025-08-12 21:44:50 -06:00
Paul Davis
854e999436 automation text entry only when using kbd 2025-07-10 23:23:08 -06:00
Paul Davis
9067971130 floating point text entry when using kbd automation workflow (unfinished) 2025-07-09 21:58:20 -06:00
Paul Davis
dd3683bc06 fix another #warning from the pianorule refactoring
There is one single place in AutomationLine code where we need to callback
to its AutomationTimeAxisView, if it is part of one, regarding automation
state. This permits that to happen
2025-03-16 15:43:11 -06:00
Paul Davis
6af9d08f69 NO-OP: re-indent 2025-03-16 15:15:40 -06:00
Paul Davis
f052c3ae15 some API tweaks, code movement and code implementation to make rbselect for pianoroll automation work 2025-01-19 15:10:35 -07:00
Paul Davis
678ebca032 don't always adjust note range in a MidiView after a model change 2025-01-14 16:49:58 -07:00
Paul Davis
f81b700395 more work on midi cue editor automation line colors (when insensitive) 2025-01-06 20:41:02 -07:00
Paul Davis
32f074bdd4 use colors for non-active automation lines in MidiCueEditor
Currently this just uses random ("nonexistent") colors; to be changed to
some palette next
2025-01-06 20:41:02 -07:00
Paul Davis
ebcbed53e6 change AutomationLine::_line_color to _line_color_name 2025-01-06 09:31:33 -07:00
Paul Davis
05476514c0 Add concept of insensitive automation lines for use in MIDI cue editor
This commit also includes auto-fication of several loops

It also includes a new concept: control points inherit line color. This is enabled
by default, so control points just take their color from their parent line. More
work is needed here to handle selection colors
2025-01-05 11:49:18 -07:00
Robin Gareus
345337da35
Return to some sane automation control point size
Default size was increased from 4 to 12 during 90c8726c6d,
apparently a copy/edit accident. This slightly increases point
size when increasing lane height.
2024-11-23 21:17:36 +01:00
Paul Davis
bbdb6b0e63 more extensive automation display design for cue editor 2024-11-07 16:10:31 -07:00
Robin Gareus
74c4ca3e52
Reduce reliance on boost - the hard part
the rest from `tools/convert_boost.sh`.

* replace boost::function, boost::bind with std::function and std::bind.

This required some manual fixes, notably std::placeholders,
some static_casts<>, and boost::function::clear -> = {}.
2024-10-19 03:47:21 +02:00
Paul Davis
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
Paul Davis
4b8c51574d refactor the "selectables" API to allow use within separate (e.g. cue) editors 2024-10-17 07:44:32 -06:00
Paul Davis
56ce9c33c0 renaming: AutomationLineBase => AutomationLine, AutomationLine => EditorAutomationLine 2024-10-17 07:44:31 -06:00
Paul Davis
fa79645c19 move most of AutomationLine into AutomatonLineBase, a class not strongly tied to the editor 2024-10-17 07:44:31 -06:00
Alejandro Domínguez
c0062fff86
Remove #include <boost/shared_ptr.hpp> 2024-08-29 23:08:42 +02:00
Robin Gareus
38adfdf79e
Add custom color for region effect automation 2024-04-23 21:56:26 +02:00
Robin Gareus
b2d4280e0f
Add support for Region Fx Automation 2024-04-23 21:56:22 +02:00
Robin Gareus
082297b932
Update UI for SurroundSendLevel control type 2024-03-21 14:24:11 +01:00
Paul Davis
6b64ebdb27 NOOP: do not wrap lines for small screens 2023-09-30 11:09:58 -06:00
Robin Gareus
201b9574a2
In Draw mode, do not allow to grab lines.
see also 3cf1227421 and c578695a64
2023-09-26 17:03:09 +02:00
Robin Gareus
3cf1227421
Revert "in draw mode, mouse drags in automation tracks are always freehand drawing"
This reverts commit c578695a64.

When hovering over a control point there is still the "Fader"
cursor shown. It is also handy to be able to directly modify
a control-point right after adding it.

A freehand draw operation can be still be initiated above,
below, or left/right of a given control point.
2023-09-26 01:10:16 +02:00
Paul Davis
c578695a64 in draw mode, mouse drags in automation tracks are always freehand drawing 2023-08-18 17:42:51 -06:00
Robin Gareus
4c8b414fb6
Allow to numeric ctrl point edit to apply to all selected points 2023-07-11 00:53:48 +02:00
Robin Gareus
1f4490fff9
Allow to select region-gain points via rubber-band drag 2023-07-02 20:47:41 +02:00
Paul Davis
b35518e212 switch from boost::{shared,weak}_ptr to std::{shared,weak}_ptr
This is mostly a simple lexical search+replace but the absence of operator< for
std::weak_ptr<T> leads to some complications, particularly with Evoral::Sequence
and ExportPortChannel.
2023-03-24 14:19:15 -06:00
luzpaz
44a869732c Fix various typos
Found via `codespell`
2023-02-20 17:35:24 -07:00
Paul Davis
f1d784afbb deep fix to the way automation control point drags are handled/computed
The old code could not snap to the grid, because it had a lot of confusion about pixels vs. time,
and between line-origin-relative time and absolute time
2023-02-10 11:11:51 -07:00
Paul Davis
ae66304194 missing API change from e883c39e7 2023-02-06 21:51:28 -07:00
Paul Davis
e883c39e7a control point drag: fix the way bounding-to-region is computed 2023-02-06 21:04:17 -07:00
Paul Davis
2de76147d2 automation line: fix pos/distance confusion that misplaces dragged control points 2023-02-06 21:04:17 -07:00
Paul Davis
3d96a318ac automation line: add dump() method to inspect GUI control points 2023-02-06 21:04:17 -07:00
Paul Davis
8c6fa19bcf use C++11 auto iterator 2023-02-06 21:04:17 -07:00
Robin Gareus
c44b40afd7
Indicate UTF8 literals - fixes glyph rendering with MSVC (2/2) 2023-01-16 21:41:22 +01:00
Robin Gareus
e819af1948
Fix clearing automation
Due to refactoring in d41e66f169 and 83ad0a10b5
Automation > Clear re-displayed the line on mouse-over, even
if there are no events. Then trying to interact with he line
caused segfaults because the actual control points no longer exist.
2022-11-01 00:51:53 +01:00
Paul Davis
fa71c87358 remove debug output from automation line reset callback 2022-10-27 08:31:57 -06:00
Paul Davis
5dd60c03df automation lines: fix missing line segments 2022-10-26 16:57:06 -06:00
Paul Davis
83ad0a10b5 automation line: drop ::redisplay() method 2022-10-26 14:01:59 -06:00
Paul Davis
d41e66f169 changes to the way automation lines are drawn to show edge-lines
this adds points to the lines so that they always extend to the edge of
regions (not control points).

more work to come to unify ::redisplay() and ::reset_callback()
2022-10-26 14:01:59 -06:00
Paul Davis
f32d36f63e fix initialization order warning 2022-10-26 14:01:59 -06:00
Paul Davis
a928e35efb significant overhaul of automation region/lines to update during tempo map drags etc 2022-10-25 11:10:36 -06:00
Robin Gareus
afd23d42cd
Add dedicated InsertReturnLevel type (2/2) 2022-10-14 02:21:50 +02:00
Paul Davis
373a73cb51 fix selectability of region-associated automation (i.e. MIDI)
The fix here is really just dropping the use of _offset when computing the session position
of a control point. This was just an arithmetical error.

However, session_sample_position() was redundant and just caused more work, so this
method was removed, and only ::session_position() is now used.

In addition, several closely related places now use C++11 (or later) "auto"
syntax for iterating over containers, for cleaner looking code
2022-08-11 15:26:42 -06:00
Hubert Figuière
9e754959f6 AutomationLine: make sure control points aren't empty
- Otherwise this trigger a C++ assert when built with it
- More reference https://github.com/flathub/org.ardour.Ardour/issues/34
2022-05-28 22:50:06 -04:00
Ben Loftis
cb85a0a521 fix for automation control point drags: prevent overlapping points in time.
* control points that were already closer than one_tick_in_pixels
 were able to move beyond adjacent points, resulting in out-of-order lines

* prior code was using 'one tick' as the smallest spacing between two
 CPs, but that is larger than the default 'guard point' spacing.  this
 resulted in odd behavior because of the dxt calculation when you moved
 a point that was created as a 'guard point'

For now, use the same 64 samples we use for 'guard points'.  And change
 the 'dxt' calculation logic to more aggressively limit the points from
 overlapping.

TODO:  we might decide that 'one tick' should be the minimum automation
 period throughout ardour.  In that case we should change guard-points.
2022-05-16 07:16:25 -05:00