Commit Graph

34540 Commits

Author SHA1 Message Date
Ben Loftis 63912069f4 trigger_ui: remove redundant action bindings; rename trigger_scene to trigger_cue 2022-01-31 20:25:05 -06:00
Ben Loftis 2fdf54874a triggerbox: remove unused enable_triggers config var (reverts 21ed6a) 2022-01-31 20:25:05 -06:00
Paul Davis ca6c99586f triggerbox: minor arithmetic fix to help with clicks at clip end
process_index should not be compared/combined with expected_end_sample, since
the former is a process-cycle count and the latter is a timeline position.
2022-01-31 15:57:13 -07:00
Ben Loftis 6ca8326c6a trigger_ui: tweak menu actions for multi-jump 2022-01-31 14:59:30 -06:00
Robin Gareus bfc3f6fa4f
Bouncing to trigger enables Cue-Page visibility 2022-01-31 21:53:57 +01:00
Paul Davis 866ba8b174 playlist: find_prev_region_start() should return zero if no earlier region is found (used during rippling 2022-01-30 22:49:52 -07:00
Ben Loftis 3704b47249 trigger_ui: first draft of a multi-jump dialog 2022-01-30 19:00:50 -06:00
Robin Gareus cc426b6d14
Dim text rendered with ShadedPlusSign 2022-01-31 01:58:42 +01:00
Robin Gareus 0da02b582d
Trigger clip picker: button to open library folder 2022-01-30 22:44:39 +01:00
Robin Gareus f4dd5d9a6f
Add folder icon 2022-01-30 22:44:39 +01:00
Paul Davis cdda0b6d30 removal of TriggerBox passthru property, GUI edition 2022-01-30 13:38:10 -07:00
Paul Davis d43e2c25bc triggerbox: remove passthru property and everything related.
TriggerBox is always a passthru processor now. Monitoring (or not) is intended
to be controlled via other means
2022-01-30 13:37:52 -07:00
Ben Loftis 663a843484 Add explanatory text to '+' symbol on mixer and recorder pages 2022-01-30 13:44:41 -06:00
Ben Loftis 4450b5be2c triggerbox: potentially useful comment about the process of slot property-setting
* first the region is scanned for bpm and one-shot status
* then we handle properties that should be applied from a drag&drop
* then we handle the existing arrangement-style slot properties that should persist
2022-01-30 13:44:41 -06:00
Ben Loftis 7d34397a35 triggerbox: handling double-click is necessary to cancel an unneeded grab() 2022-01-30 13:44:38 -06:00
tassyv dab85fd309
Contributing example LUA scripts 2022-01-30 13:15:19 +01:00
Robin Gareus 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
Robin Gareus 0b055ad66e
Add option to copy bounced regions/range to clip library 2022-01-29 20:48:23 +01:00
Robin Gareus ac6835c7d8
DnD export of Regions to shared clip library 2022-01-29 16:22:51 +01:00
Robin Gareus 3689068561
Clip Library support
This allows to export Regions to a shared folder.
2022-01-29 16:22:47 +01:00
Robin Gareus 01d964b176
Do not announce exported MIDI files
This would otherwise trigger ARDOUR::Session::add_source
which will add the external path to as session search location.
2022-01-29 16:22:33 +01:00
Robin Gareus 57a93380b6
No need to keep the sorter struct around 2022-01-29 05:27:55 +01:00
Robin Gareus 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
Robin Gareus 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
Robin Gareus 6dc66ea78f
Prioritize self-deletion
This addresses the issue described in 83719fba1a.
First process all queued self_delete() requests before scheduling
Editor::redisplay_track_views() which uses PRIORITY_DEFAULT.
2022-01-29 05:17:00 +01:00
Robin Gareus 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
Robin Gareus 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
Robin Gareus 92024697aa
Prepare clip-export DnD 2022-01-29 03:04:17 +01:00
Paul Davis 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
Paul Davis 8e749d7e76 fix length of whole file region for captured MIDI
The length needs to use consistent time domains for duration and position,
and total_capture is a sample count. The "real" length of a whole
file region is the length of its source, so just defer to that.
2022-01-28 11:16:02 -07:00
Robin Gareus 562cb7cb3a
Cancel audition when the backend is stopped 2022-01-28 06:41:37 +01:00
Robin Gareus b2360a9a0a
Fix process graph changes during audition
Session::process_audition calls Graph::swap_process_chain()
to handle any pending graph changes (notably route removal
depends the graph to switch chains to drop references).

However this must not change the Graph::_trigger_queue
(which is refilled when processing resumes).

Previously routes were added to the trigger_queue, leading to
an inconsistent Graph state. When the terminal-count was reached
the trigger-queue was not empty. Process threads ran after processing
already completed and or concurrently with processing.

A common result of that was:
delayline.cc:70: virtual void ARDOUR::DelayLine::run(ARDOUR::BufferSet&, ARDOUR::samplepos_t, ARDOUR::samplepos_t, double, ARDOUR::pframes_t, bool): Assertion `lm.locked ()' failed.
2022-01-28 06:40:57 +01:00
Robin Gareus 2c9c80ae62
Amend f322c4ded7, clean up includes, fix visibility 2022-01-28 02:29:11 +01:00
Robin Gareus 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
Robin Gareus ec6cd4539d
Implement Region::export()
This adds an abstract API, matching the exiting MIDIRegion::do_export(),
which allows to export multi-channel audio-files.
2022-01-28 01:58:37 +01:00
Robin Gareus f322c4ded7
Separate sndfile.hh implementation into C++ source
This is required to be able to include
"audiographer/sndfile/sndfile_writer.h" in more than
one source file. which would otherwise lead to
duplicate symbol: AudioGrapher::SndfileHandle::..
2022-01-28 01:52:07 +01:00
Paul Davis 98ad20529b fix loading of regions in older session files
In session file formats earlier than 7000, region position and length
are stored in distinct XML node properties. For 7000 or later, both
position and length are part of the "length" member. Fix reloading
this by noting session file format and loading position and length
more explicitly
2022-01-27 15:36:06 -07:00
Robin Gareus 7eb53828a9
Do not warn about TB sidechain connection when preference is unset 2022-01-27 23:04:30 +01:00
Robin Gareus 8e7b01bd5f
Remove debug output 2022-01-27 22:26:31 +01:00
Robin Gareus 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
Paul Davis 15bb91cf4f canvas: fixing missing initializer for _scroll_translation in 3rd Item constructor 2022-01-27 14:02:34 -07:00
Paul Davis 93401d1883 remove debug output 2022-01-27 14:02:34 -07:00
Ben Loftis 0f4a5f2d52 trigger_ui: slot-to-slot drag, with static variable implementation (gtk part) 2022-01-27 13:23:05 -06:00
Ben Loftis 7a3624af6f TriggerBox: copy over a subset of user-settings into a dropped slot using a static variable (@robin) 2022-01-27 13:22:46 -06:00
Ben Loftis 8c144d6e69 trigger_ui: trigger-to-trigger drags use a different target-name 2022-01-27 13:15:27 -06:00
Ben Loftis 78270d6754 trigger_ui: remove thinko (I think? what does double-click have to do with ungrab?) 2022-01-27 13:15:27 -06:00
Ben Loftis 2e5a266d24 trigger_ui: no need for right-clicking or extra menu levels for a single menu 2022-01-27 13:15:27 -06:00
Ben Loftis 3605f51e7e TriggerBox: trigger_by_id searches the box for a trigger with matching pbd::id 2022-01-27 13:15:27 -06:00
Ben Loftis 63e134097c Session::trigger_by_id finds a trigger from its pbd::id 2022-01-27 13:15:27 -06:00
Ben Loftis 4e1606e0f0 CanvasWidgets have a grab() api. fixes: sometimes the wrong region is dragged 2022-01-27 13:15:27 -06:00