Commit Graph

15376 Commits

Author SHA1 Message Date
01ef5a5b24 ripple (gui part): should_ripple_all() encapsulates modes Ripple+RippleAll 2022-03-14 19:26:41 -05:00
3a6210696d ripple (gui part): remove config-option for Interview mode 2022-03-14 19:26:41 -05:00
2eb286eb76 make range+region Bounce dialogs more consistent
* cleaner table layout
* explicit options for bouncing to Trigger and Clip List
* any bounce is added to Source list, so remove that from menu
* format context menus to match "(with processing)"
* use same code structure where possible
2022-03-13 19:42:00 -05:00
f4940e81ad play_cues button: use transport-button for LED color, not rec-button 2022-03-13 19:42:00 -05:00
c593ac75a5
Remove Video Export Infobox (1/2) 2022-03-11 04:55:46 +01:00
9c087492c7
GUI implementation to re-import exported file(s) 2022-03-11 04:55:24 +01:00
020051772e
Extend Session::Exported signal
Indicate if exported file should-be re-imported.
2022-03-11 04:55:24 +01:00
d35f33e757
Fix Wreorder 2022-03-11 04:55:21 +01:00
320a20cbab tempo display: during ressaociate markers, update tempo curves as well 2022-03-10 08:27:24 -07:00
4048bcc6b6
Fix crash when freezing track
The freeze threads needs a thread-local tempo-map to call
Route::bounce_process which runs processors.
2022-03-09 17:47:36 +01:00
9cac17ea7d
Speed up silence-stripping when there are many silent chunks
Previously every region fragment was added one at a time,
with each emitting signals and updating the GUI. If there are a
few thousand regions Ardour can freeze for a significant amount
of time.

There is still the issue that the GUI freezes after the progress-bar
reached the end: consolidate overlapping ranges after analysis, then
add regions.

And Playlist::flush_notifications still emits
RegionFactory::CheckNewRegion() for every region individually
and RegionListBase::add_region becomes the bottleneck.

But at least adding 7k regions now returns in under 5 minutes
instead of taking over an hour.
2022-03-08 16:31:47 +01:00
c29471373b
Expose show-grid-rulers ui preference 2022-03-07 05:55:29 +01:00
2cffca4c40
Restore rulers as saved with the session
This fixes an issue with the videotimeline not being shown
when reloading a session. Editor::set_state() restores the grid,
which in turn changes ruler visibility. This triggers
store_ruler_visibility() and the saved session state was lost.
2022-03-07 05:55:26 +01:00
6c4c827575
Fix snap, PH to prev/next grid 2022-03-04 20:47:44 +01:00
080bfdc2d0
Simplify grid next/prev logic
Round[Up/Down]Always does not need an offset to avoid snapping
to the same position.
2022-03-04 19:39:02 +01:00
9dabe047f1
NO-OP: clean up and consolidate PH next/prev grid code 2022-03-04 18:29:43 +01:00
90770a2788
Consolidate get_grid_beat/music_divisions
This fixes "snap to bar" which previously snapped to beats
2022-03-04 17:51:21 +01:00
7cc3fbaccf editor_ops: bounce to trigger: warn user when they try to bounce a range to an already-populated trigger slot 2022-03-03 16:49:28 -06:00
4fb8dd805f
Don't allow dropdown scroll for patch-banks
Changing banks refills the dropdown. This cannot be avoided
since unnamed banks are not in the dropdown, and the dropdown
content can change dynamically. Scroll-wheel does not work reliably.
2022-03-02 18:26:23 +01:00
370adfa322
Add option to hide cue rec/play toolbar buttons 2022-03-01 17:53:11 +01:00
638af32902 clip_picker: tweak .smf file info text 2022-03-01 10:11:14 -06:00
082339e9c0 patch_change_widget: only show tabs for the channels that a slot is using 2022-03-01 10:11:14 -06:00
849526b7e7 utils: re-implement used_channels_as_string to use UsedChannels (bitset) 2022-03-01 10:11:14 -06:00
566596e383
Fix Dnd from clip-picker on macOS
On macOS, `context->get_targets ()` may be empty when dragging.
In this case the Clip-Picker assumed that a slot is about to
be dropped and switched to the local clip library.

This in turn cleared selection and it was no lnger possible
to drag any clip out of the library.
2022-03-01 16:33:39 +01:00
07cf40c734
Fix ToggleRoll (<space>) when auditioning
When auditioning is started, transport controls are disabled
via `set_transport_sensitivity(false)`.
This prevents <space> from being handled:

DEBUG::Bindings: binding for Key 32 (space) state 0 : Transport/ToggleRoll - insensitive, skipped

So the key event is passed on, and can reach the clip-picker treeview
where <space> selects and/or activates a row, which re-starts
audition.

ARDOUR_UI::toggle_roll() cancels audition when audition is active,
so this action should be sensitive, even while auditioning.
2022-03-01 03:49:36 +01:00
Matthijs van Otterdijk
3050fe24e5 use backend_client_name parsed from options when initializing backend 2022-03-01 02:36:11 +01:00
3280523e90 trigger_ui: pixel pushing for mac 2022-02-26 13:09:41 -06:00
dd1156e900 Improved reporting of glib throw errors during session creation 2022-02-23 17:32:09 -06:00
2217e8d9ce Log text passed to a dialog needs escaped to avoid markup errors
For example, the following log text creates a markup error that results in
the session loading dialog being completely empty.

WARNING: VST3<C:\Program Files\Common Files\VST3\Plugins.VST.Someplugin.vst3\Contents\x86-win\Plugins.VST.Someplugin.vst3>: Invalid Module Path
...

Gtk-WARNING **: 16:46:28.447: Failed to set text from markup due to error parsing markup: Error on line 7 char 40: ?Files\Common? is not a valid name: ?\?
2022-02-23 10:25:46 -06:00
e8dc95ded5 NOOP: whitespace conventions 2022-02-21 16:13:48 -07:00
2eda6d1865 initialize sync mark/line in Region copied from another region 2022-02-21 16:13:30 -07:00
20d4a9b935 remove debug output 2022-02-21 15:02:08 -07:00
11fd0b84b1 derive TriggerUI from sigc::trackable so that it can be automically disconnected from signals
The explicit disconnect in the destructor prevents any more signal->connection firing, but the invalidator
is required to remove existing queued slot calls in the receiving thread
2022-02-21 15:01:36 -07:00
87bcd4d83b Revert "derive TriggerUI from sigc::trackable so that it can be automically disconnected from signals"
This reverts commit 06eb154db2.
2022-02-21 13:40:56 -07:00
06eb154db2 derive TriggerUI from sigc::trackable so that it can be automically disconnected from signals
Note: this still seems suspicious: we explicitly disconnected from signals in the destructor. However,
it is better form to be able to use invalidator() in the connection call
2022-02-21 13:28:17 -07:00
685a3ebc7e do not use a write copy of the tempo map when not planning to modify the map 2022-02-20 09:31:23 -07:00
61b728bdcc more avoidance of double initialization 2022-02-19 16:42:03 -07:00
08768e8185 draw the Stop All Cues marker as a square 2022-02-19 13:39:59 -06:00
c7dbfb9961 trigger_ui: add a hint re: randomness of selections in the Multi-Jump dialog 2022-02-19 12:34:45 -06:00
ee9e7589ee trigger_ui: add more tooltips 2022-02-19 12:12:43 -06:00
ab44c9a750 trigger_ui: add some tooltips 2022-02-19 11:49:01 -06:00
5f0c7fe3d6 move cue-behavior to session config (gtk part) 2022-02-19 11:49:01 -06:00
dcdfd3ff0f no need to repeat initialization 2022-02-19 09:03:48 -07:00
4ae5c04fd7 remove duplicate sync_mark member in AudioRegionView (decl'd in RegionView) 2022-02-19 09:03:36 -07:00
5a19a4fb4a tempo ruler: remove unused _name_flag for tempo markers 2022-02-14 21:22:36 -06:00
1ce0641172 trigger_ui: Stop All Cues can be queued just like the Cues can. So color it like a timeline marker(?) 2022-02-14 21:22:36 -06:00
8c41fc7dd0 meter ruler: match look of meter markers to tempo markers 2022-02-14 21:22:36 -06:00
49e792868f cue ruler: potential crash fix 2022-02-14 21:22:36 -06:00
f5142fb19a tempo ruler: increase the size of tempo markers. 6pix is too small a target 2022-02-14 21:22:36 -06:00
daf56ccf0a tempo ruler: do not resize marker (a grabbable object) due to tempo changes 2022-02-14 21:22:36 -06:00
111054812a mini-timeline: yet another tweak to draw Stop Cues nicely 2022-02-14 21:22:36 -06:00
897798ed68 remove cue-behavior toggle from ruler context menu 2022-02-12 21:49:57 -06:00
54d794e242 rough-in global Cue functions (rec-enable and play-enable i.e. cue-ffwd) 2022-02-12 21:46:30 -06:00
bb67041938 public_editor: expose toggle_cue_behavior for access from ArdourUI 2022-02-12 21:46:30 -06:00
de9f73c040 cue page: remove the unmarked rec-enable button from the cues column 2022-02-12 21:46:30 -06:00
bfd698bef8 mini-timeline: rough-in Stop Cue markers 2022-02-12 21:46:30 -06:00
04bd9187e4 temporal: add (back) first set of unit tests
This just uses the old Evoral BeatTest. Some of the tests needed amending
because temporal uses rint() to convert between float and int, not just
a cast.
2022-02-12 15:12:35 -07:00
9cea6b7359 trigger_ui: don't allow Stretch options to be edited on an active clip 2022-02-12 11:14:40 -06:00
d20dfe8f88 clip_picker: fix logic to show MIDI file properties 2022-02-12 09:35:24 -06:00
6bc881086b Fix a bug where the spinner skipped values because it was always rounding down
Until we have a trimmer, the clip length spinner sets integer beats (beatcnt)
This allows the user some minimal ability to fix a clip of the wrong bpm.
We assumed that 'clips' are already be pre-trimmed to a beat length.
Our internal heuristic always forced tempo to match an integer beatcnt

However: when bouncing a Range to a Trigger Clip, you can know the tempo, and also have a non-integer beat length.
In those cases, the clip-length spinner could behave oddly.

While it's arguably wrong to show integer beats when the internal value is something else,
  we still want to show the spinner in integer beats, so it remains usable for its main purpose
2022-02-12 09:10:23 -06:00
40b483e71e trigger_ui: move the patch-dialog to the properties area.
* patch-dialog is now launched from a button and stays open
* patch-dialog now tracks the current selection
2022-02-11 15:32:00 -06:00
a8cf442bc9 pixel-pushing: clean up the dialog for Range->Bounce to Trigger Clip 2022-02-11 15:32:00 -06:00
a02689f41e Range->Bounce to Trigger Clip: use UISTate api to set tempo of clip
* also use the desired name without the extra stuff that bouncing adds to the filenam
2022-02-11 15:32:00 -06:00
02e9222221 trigger_ui: implement new UIState api for drag&drop 2022-02-11 15:32:00 -06:00
76ae8f29f7 triggerbox GUI: stop-all cue marker uses INT32_MAX now 2022-02-11 13:37:14 -07:00
17e5667216 triggerbox: use translatable marker name function in GUI 2022-02-11 11:33:43 -07:00
9b3d0ddd11
Fix incorrect check for existing directory
Glib::file_test returns true if **any** of the tests in the
bitfield test are true (not *all*).
2022-02-10 22:04:40 +01:00
ff56cd61b3
Do not switch to Clip Library when moving a file into the dropzone 2022-02-10 21:59:53 +01:00
a63a18a338
Do not allow to add the same folder to the clip library path twice 2022-02-10 18:25:11 +01:00
76a133cdf0
Allow to add folders to the clip-list via DnD 2022-02-10 18:09:45 +01:00
9f45e1a1fe
Copy Bank/Patch changes from auditioner to trigger-slot
This will need some refinement, we should only copy the settings
if the file in question was previously auditioned, and perhaps
only if GMsynth.lv2 is used.
2022-02-10 02:22:35 +01:00
46b8b0963e
Fix bounce_range_selection trigger slot dropdown 2022-02-10 00:43:09 +01:00
a309f237f2
Allow direct trigger -> trigger selection changes
Previously there were two signals for a ::set()
1. Clear Selection -> Emit Signal
2. Select TriggerEntry -> Emit Signal

As result the Trigger Patch Selector was reset and hidden at (1),
only to be set and presented again at (2).

This should perhaps be done for other ::set() calls as well.
2022-02-09 21:09:46 +01:00
42df6be0fa
Show Trigger Patch Selector on selection 2022-02-09 21:09:46 +01:00
a4fd29fa7d
Refactor PC Dialog/Window -- non-modal tabbed dialog 2022-02-09 21:09:46 +01:00
eb674d3b58
Prepare for non-modal PatchChangeTriggerDialog 2022-02-09 21:09:46 +01:00
6d64120e0e trigger_ui: move the follow-count text to the right side of trigger-master; it was obscured by the midi 'note' icon
also rethink the update mechanism; TriggerBox.cc generates far too many updates (see comments)
2022-02-09 13:11:31 -06:00
c8ed5fdef6 revert 'testing' part of e0b14f: always showing the pgm-picker was an annoyance 2022-02-09 13:09:07 -06:00
e3e7f587bd
Use audition synth when creating new trigger tracks via DnD 2022-02-09 14:32:12 +01:00
c9607d2fed change non-save button in "Name Session" dialog to be "Cancel" not "Discard" which is confusing 2022-02-08 20:33:46 -07:00
43b98524b5 Cue page: cues are timeline rulers so color them(?); pixel-pushing 2022-02-08 17:04:09 -06:00
6c6e7ba2ee cue markers: pixel pushing 2022-02-08 17:04:09 -06:00
292faff26e Mini-timeline: Cues are events but they are also continuous 2022-02-08 17:04:09 -06:00
6b064c1599
NO-OP: whitespace 2022-02-08 23:20:40 +01:00
ba32ee0e87
Initial version of MIDI Trigger patch override UI 2022-02-08 23:15:24 +01:00
e0b14f0231 clip picker: Add midi file properties; only shown when .mid is chosen 2022-02-07 19:33:43 -06:00
65f7e158a9 clip picker: tweak layout and rename _dir variable 2022-02-07 19:33:43 -06:00
51f458220d
Abstract Patch Change Widget, prepare to reuse for Slots 2022-02-08 01:25:37 +01:00
0a49586b1a
Fix macOS builds (incomplete type, missing include in 9eb626cc37) 2022-02-06 00:39:36 +01:00
d22269f59f Trigger Page: add an audition-synth selector to Clip Picker 2022-02-04 21:41:34 -06:00
9ad82787a1 Instrument Selector: use a 3-way Disposition to disambiguate the uses of this widget 2022-02-04 21:33:12 -06:00
9eb626cc37 Auditioner: hide unnecessary widgets for auditioner synth GUI 2022-02-04 20:18:00 -06:00
91609791b4
Format used MIDI channels in Import Dialog Info Box 2022-02-05 00:13:28 +01:00
ef8904210e
Add method to format set of MIDI channels
eg. channels 1,2,3,5,6
will be formatted as "1-3, 5, 6"
2022-02-05 00:13:28 +01:00
6df1bd3ad5
Triggger Clip Picker: fix crash at session close 2022-02-04 13:58:22 +01:00
834e164df0
Trigger Clip Picker: Idle update audition synth
This keeps the plugin in sync with any changes made to the
Plugin UI. In particular General MIDI Synth will send
notifications once patch/program changes are processed.
ACE Fluidsynth can load sf2 files, etc.
2022-02-04 13:57:33 +01:00
604652b7d6 fix duplicate behavior
We were adding the "span" value to the position before calling
Playlist::duplicate(), but it does that internally.
2022-02-03 20:51:04 -07:00
c7d4729238
Expose session config triggerbox-overrides-disk-monitoring option 2022-02-04 01:47:29 +01:00
e2bc670e6b
Update monitoring display when TB cues change 2022-02-04 01:47:26 +01:00
05f4ffa598
Fix cue selection
TriggerEntry has 3 child items:
 * play-button, follow-button, name-button.

On mouse-down the TriggerEntry is grab()bed in preparation
to start a drag. From then on all events are directly sent to
TriggerEntry, which can only pass it up to parent items.
Mouse-release hence reaches the TriggerStrip and selects it.
2022-02-03 23:29:01 +01:00
e51427413c
Tweak TB event passthrough
Play/Stop and Follow buttons no longer pass events up.
That way the strip will not be selected on mouse-up.
2022-02-03 21:57:13 +01:00
511ff3290f
Implement TriggerStrip selection
This also changes TriggerBox Selection to act on release
(like all other selection). Otherwise strip selection will
de-select the TriggerBox on mouse-release.
2022-02-03 05:50:07 +01:00
65e3177910
Trigger Clip Picker: fix crash at exit (auditioner reference) 2022-02-02 23:08:49 +01:00
2c8427773f
Trigger-clip audition: show audition-synth GUI (WIP)
This is somewhat experimental, also the Plugin UI is only
available while MIDI audition plays...
2022-02-02 22:09:47 +01:00
b250c69eb8 trigger_ui: return the gain-spinner to MIDI clips; it adjusts velocity 2022-02-02 11:47:50 -06:00
cooltehno
bf2ff23e44
Update dark-ardour.colors 2022-02-02 16:45:18 +01:00
bb11be9936
Consistent height of MIDI and Audio Track connection buttons
Audio track shows a trim-knob -- which is SCALED(19x19px),
MIDI input button should follow suit.
2022-02-02 14:18:18 +01:00
1725fdadf6 pre-size Grid and Draw-option menus so they are less likely to dynamically resize with every click 2022-02-01 17:02:56 -06:00
26beea89ea changes to the Draw options should immediately sync state to instant.xml 2022-02-01 17:02:56 -06:00
b7a3de126c Fix some menus that occasionally act 'stuck'
* when a menu uses RadioActions, their initial state must be synced
* we use various methods to 'fix' this throughout the program
-> I'm forcing internal state to match in the case the Action is already active
* question:  we tend to use RadioActions for all these menu items,
   because they represent a choice between many options;
   but do we really need to use RadioActions here?
2022-02-01 17:02:56 -06:00
a100d46249 midi_input_enable_button does not need to be dynamically allocated 2022-02-01 12:26:41 -06:00
6fc4ab87de trigger_ui: MIDI trigger strips have a centered note-icon 2022-02-01 10:34:35 -06:00
69cdccb912 Add eighth-note symbols to ArdourMono font file 2022-02-01 10:12:24 -06:00
2f94e28f5b
Add Preference to change user clip library dir 2022-02-01 15:47:54 +01:00
34c8307a38
Fix DirectoryOption set filename
This properly updates the display if the preference changes.
Even with FILE_CHOOSER_ACTION_SELECT_FOLDER the API is
is get/set_filename -- set_current_folder() sets the parent folder.
2022-02-01 15:47:54 +01:00
e5efb57166 terminology: the user-visible name for Trigger object is a 'Trigger Slot' 2022-01-31 20:25:06 -06:00
64e4964101 terminology: the TB widget in a mixer strip is called a Trigger Grid 2022-01-31 20:25:06 -06:00
da09d1dd9a terminology: the content in a trigger is a Trigger Clip 2022-01-31 20:25:06 -06:00
bb99c53cca terminology: change visibility text to 'Cue Window' to match button name 2022-01-31 20:25:06 -06:00
2df7a8d961 terminology: set the title of the Cue(s) Window 2022-01-31 20:25:06 -06:00
bd7ffdbadb remove trigger visibility from mixer-strip context menu
* we handle trigger visibility from the Track visibility tabs
2022-01-31 20:25:06 -06:00
7748e939b8 trigger_ui: remove the popup slot-editor window until it is finished 2022-01-31 20:25:06 -06:00
5f10817126 trigger_ui: add menu items and bindings to trigger Cues A-H 2022-01-31 20:25:05 -06:00
63912069f4 trigger_ui: remove redundant action bindings; rename trigger_scene to trigger_cue 2022-01-31 20:25:05 -06:00
2fdf54874a triggerbox: remove unused enable_triggers config var (reverts 21ed6a) 2022-01-31 20:25:05 -06:00
6ca8326c6a trigger_ui: tweak menu actions for multi-jump 2022-01-31 14:59:30 -06:00
bfc3f6fa4f
Bouncing to trigger enables Cue-Page visibility 2022-01-31 21:53:57 +01:00
3704b47249 trigger_ui: first draft of a multi-jump dialog 2022-01-30 19:00:50 -06:00
0da02b582d
Trigger clip picker: button to open library folder 2022-01-30 22:44:39 +01:00
cdda0b6d30 removal of TriggerBox passthru property, GUI edition 2022-01-30 13:38:10 -07:00
663a843484 Add explanatory text to '+' symbol on mixer and recorder pages 2022-01-30 13:44:41 -06:00
7d34397a35 triggerbox: handling double-click is necessary to cancel an unneeded grab() 2022-01-30 13:44:38 -06:00
97fe05e4de
Improve GUI HiDPI support
* scale default track heights
* scale region-gain, automation lane control points
* scale max. MIDI note lane height
2022-01-29 22:33:07 +01:00
0b055ad66e
Add option to copy bounced regions/range to clip library 2022-01-29 20:48:23 +01:00
ac6835c7d8
DnD export of Regions to shared clip library 2022-01-29 16:22:51 +01:00
57a93380b6
No need to keep the sorter struct around 2022-01-29 05:27:55 +01:00
a4ee7fa2fa
Explicitly suspend redisplay while adding/removing tracks
This should not be needed, however Editor::idle_remove_tracks()
has the same priority as Editor::redisplay_track_views() and this
might save us another redisplay call.
2022-01-29 05:27:21 +01:00
101829b280
Revert "Fix crash when removing Routes and VCA"
There is probably a good reason why _vca.reset() is called
immediately, and 6dc66ea78f is a better solution to the issue

This reverts commit 83719fba1a.
2022-01-29 05:19:03 +01:00
532e212882
Speed up Route deletion
Session::remove_routes() first calls IO::disconnect()
before eventually calling route->drop_references().

RouteTimeAxisView::io_changed() is called while the route still
exists and requests a redraw which in turn emits
_stripable->gui_changed ("track_height").

Since the RTAV is deleted later during an idle-callback, there
was another redraw performed just before the RTAV is actually deleted.
2022-01-29 05:13:23 +01:00
83719fba1a
Fix crash when removing Routes and VCA
VCATimeAxisView::self_delete () resets _vca and queues delete_when_idle.
From now on STAV::strippable () will return 0.

Editor::idle_remove_tracks() returns, and before the VCATimeAxisView
is destroyed. Editor::redisplay_track_views() may be called.

The VCATimeAxisView still exists at this point and is in
Editor::track_views, but has no valid stripable.

This causes a crash in TrackViewStripableSorter which depends
on STAV::stripable();
2022-01-29 05:06:57 +01:00
92024697aa
Prepare clip-export DnD 2022-01-29 03:04:17 +01:00
c6a31250ba alter Source::_length from timecnt_t to timepos_t
THe length of a Source(File) is always measured from its start. In this sense,
the length is like a position on the timeline, which is a duration with an
implicit origin, or a Region start, also a duration with an implicit origin (in
that case the start of the Source). There is no good reason for using
a timecnt_t for this value, because the position component of a timecnt_t
(the origin for the duration) is implicit and always zero. So we make
this property into a timepos_t, and include a number of asserts() to check
for common possible coding errors related to the time domain
2022-01-28 15:52:27 -07:00
b7bbb27c7c
Fix Editor::write_region for multi-channel regions
This method, and ::write_selection() is currently unused.
It should perhaps be removed after dome discussion.
2022-01-28 02:01:23 +01:00
8e7b01bd5f
Remove debug output 2022-01-27 22:26:31 +01:00
c9e9843a9e
Fix Trigger DnD
Revert parts of 8c144d6e69 and 0f4a5f2d52
Allow to drag regions out of trigger-boxes (this will be needed
to export triggers).
2022-01-27 22:24:55 +01:00
93401d1883 remove debug output 2022-01-27 14:02:34 -07:00
0f4a5f2d52 trigger_ui: slot-to-slot drag, with static variable implementation (gtk part) 2022-01-27 13:23:05 -06:00
8c144d6e69 trigger_ui: trigger-to-trigger drags use a different target-name 2022-01-27 13:15:27 -06:00
78270d6754 trigger_ui: remove thinko (I think? what does double-click have to do with ungrab?) 2022-01-27 13:15:27 -06:00
2e5a266d24 trigger_ui: no need for right-clicking or extra menu levels for a single menu 2022-01-27 13:15:27 -06:00