Commit Graph

18799 Commits

Author SHA1 Message Date
5ade0927dd remove Other/Any follow action types 2022-01-20 18:56:07 -07:00
b94c5dcec7 remove Next/Prev (Live-style) follow action types 2022-01-20 18:56:07 -07:00
bbdfc5e777 remove FollowAction type "QueuedTrigger" 2022-01-20 18:56:07 -07:00
90e6107972 triggerbox: left follow action == None means "no follow action at all" 2022-01-20 14:15:45 -07:00
8ddf057553 triggerbox: fix enum (compiler should have noticed this) 2022-01-20 14:15:25 -07:00
b884f7c534 triggerbox: do not use follow length when (left) follow action is None 2022-01-20 14:03:40 -07:00
68c87c3f29 triggerbox: fix various errors caused by not setting transition_bbt
In cases where no quantization is done, transition_bbt was not set,
and this led to expected_end_sample being incorrect.
2022-01-20 13:57:47 -07:00
02f4daffe4 fix inconsequential debug-trace garbage value report from clang 2022-01-20 13:40:49 -07:00
ee5d3da929 fix inconsequential (unlikely) memory leak from clang 2022-01-20 13:40:49 -07:00
4c9460b697 fix incorrect code that passed a null boost::shared_ptr<AudioRegion> into a ::get_state() call 2022-01-20 12:07:59 -07:00
413f2e9d1b triggerbox: implement (?) JumpTrigger follow action 2022-01-20 11:01:00 -07:00
993c7c4bec canvas: manually remove changes from 6f91dc0799 and implement same goal in a different way
The AudioClipEditor features a scroll bar that is a part of the canvas. Because scroll
groups are at the top level of a canvas, the scroll bar is necessary within a scroll
group, which causes it to get confused about the difference between its own
position within the canvas and that of the scroll group. This commit introduces
a per-Item flag, _scroll_translation, which is true by default. If false, the
item will not have coordinates translated to reflect scroll group position.
2022-01-20 09:45:47 -07:00
95edfbac4a triggerbox: change FollowActions into an object with a target list
Should be no functional changes in this commit, but older sessions will likely not
load.
2022-01-19 15:50:55 -07:00
62a098811c
Allow DnDTreeView drag w/o object reference 2022-01-19 17:13:51 +01:00
dbefba9904 temporal: have tempo map expose it's separate (intrusive) lists of tempo, meter and bbt points 2022-01-18 19:47:20 -07:00
4ec70bbaec
Source::natural_position API uses samplepos_t 2022-01-19 03:01:09 +01:00
267229c03c ArdourCanvas::Arc (i.e. Circle) should allow for child items to be drawn 2022-01-18 16:42:00 -06:00
9be853d555 triggerbox: initialize the follow_count value as well as barcnt 2022-01-18 16:33:45 -06:00
6cdeed8945 triggerbox: first draft: allow gui access to audio-segment meter and barcnt 2022-01-17 18:04:43 -06:00
e0f6ef4369
Always use a sidechain input to control triggers
This allows MIDI trigger tacks to distinguish between music-data
and control-data.
2022-01-17 05:03:18 +01:00
bf9ef3abd3 add comment 2022-01-16 20:34:24 -07:00
7e37ae4b17
Do not add TriggerBox Processor to Auditioner 2022-01-17 04:31:25 +01:00
3e0bb03363 triggerbox: defensive coding changes 2022-01-16 10:57:07 -06:00
869a862c86 triggerbox: use_follow_length should be an explicit property
this allows you to enable/disable the follow-length without starting from 0 every time
2022-01-16 10:57:01 -06:00
9ee4c14bce generic MIDI: extend menu options to drop ALL MIDI bindings, not just a binding map 2022-01-15 13:15:38 -07:00
cb640c7e9c
NO-OP: clang-format (and some manual re-indent) 2022-01-15 04:46:58 +01:00
21c22cc850
Add API to render a Icon with a text caption 2022-01-15 04:46:55 +01:00
f339c0b5f9 triggerbox: remove "use follow action" as an explicit property of a trigger 2022-01-14 17:39:27 -07:00
670e1f9025
NO-OP: clarify variable name (1/2) 2022-01-15 00:06:26 +01:00
76facc0b13
Unconditionally create Triggerbox for each Track
This addresses and issue when loading old sessions or creating
tracks from [old] templates.
2022-01-14 22:46:50 +01:00
0c4769cb3f
Fix compilation when including polarity_processor.h directly 2022-01-14 22:46:50 +01:00
de9322e0d3 triggerbox: cleanup some DEBUG_TRACE statements and convert some debug output to trace statements 2022-01-14 14:39:16 -07:00
6a6a42c272 triggerbox: another important tweak for trigger behavior
This fixes another code point where we realize that there is nothing to do
within a triggerbox, but we failed to reset _stop_all to false, causing
misbehavior until the next trigger plays to completion with no subsequent
trigger.
2022-01-14 14:37:53 -07:00
8e9c4f6a67 triggerbox: fixes to get follow length to do what is intended to do
Hard to explain more concisely than the code changes, so please read.
2022-01-14 14:36:38 -07:00
787a66815d triggerbox: fix initialization warning 2022-01-14 14:35:51 -07:00
9ccaab5deb working segment descriptor save/restore/set/fetch and use by triggerbox 2022-01-14 12:22:34 -07:00
6d2a124f5e triggerbox: fix newline in debug trace output 2022-01-14 12:21:56 -07:00
de324b54b9 triggerbox: disambiguate esteimated_tempo from the actual segment_tempo 2022-01-13 23:19:01 -06:00
c159614902 restore source segment descriptors 2022-01-13 17:41:15 -07:00
b9a798ebb8 add XMLNode constructor for SegmentDescriptor 2022-01-13 17:38:40 -07:00
680a27c29d store source segment descriptors 2022-01-13 17:29:33 -07:00
e00779c57d SegmentDescriptor::get_state() can be const 2022-01-13 17:29:16 -07:00
154f406256 segment descriptor: restore state 2022-01-13 17:25:42 -07:00
bb75b03724 segment descriptor: save state 2022-01-13 16:51:55 -07:00
cf10808640 change Source segment descriptor API (and triggerbox use of it) 2022-01-13 16:00:03 -07:00
d85607bfc7 teiggerbox: fix signedness warning with cast 2022-01-13 15:59:23 -07:00
2570b43ab6 triggerbox: try to get tempo from segment descriptor, and add Meter member var 2022-01-13 15:48:44 -07:00
1994935550 source HAS-SOME SegmentDescriptors 2022-01-13 15:07:21 -07:00
25bd59958c triggerbox: fix/add save/restore of trigger _follow_length property 2022-01-13 13:30:04 -07:00
d8c90decf3 triggerbox: use follow length when quantizing re-start of Again-selected trigger
This also changes the virtual method from ::startup() to ::_startup() so that we can
safely have a default argument in ::startup().
2022-01-13 12:09:23 -07:00
98cd0f1ba3 triggerbox: fix for handling follow lengths, previously for MIDITrigger now for Audio 2022-01-13 12:07:26 -07:00
c3732e12ea fix handling of zero _follow_length in MIDI triggers 2022-01-12 21:43:40 -07:00
beb0a96f42
API to directly retrieve XML child content 2022-01-13 00:09:55 +01:00
a9d2a1c3f8 triggerbox: reset default _follow_Length to zero 2022-01-12 14:17:33 -07:00
2ed4af0c7a triggerbox: continued work on getting MIDITriggers to use _follow_length correctly 2022-01-12 14:12:20 -07:00
ac97b30e55 triggerbox: implement stretch options, save+recall 2022-01-11 16:27:03 -06:00
4d04849be9 triggerbox: continuing work on follow action length, particuarly for MIDI triggers 2022-01-11 11:48:22 -07:00
7fdc83bfbf triggerbox: disambiguate velocity_gain from the trigger's gain property 2022-01-10 19:33:05 -06:00
04bc44c7ad triggerbox: fix typo 2022-01-10 15:51:12 -07:00
e0004791f0 triggerbox: fix audio clips when _follow_length is zero 2022-01-10 15:49:07 -07:00
0c89ab82e1 triggerbox: tweaks, twirls and scrapes to get _follow_length working, apparently 2022-01-10 14:03:06 -07:00
cb83d11681 triggerbox: add new trigger state enum to enums.cc 2022-01-10 14:02:38 -07:00
dbb816b1f9 triggerbox: add "final sample" concept to start dealing with post-data playout 2022-01-10 14:02:38 -07:00
1afc0ce69c triggerbox: add follow length property to triggers (not used yet) 2022-01-10 14:02:33 -07:00
1078dc7eda
DnD-TV: Allow to specify TargetFlags 2022-01-10 20:40:46 +01:00
16511974e2
Fix class/struct mismatch C++ ABI [-Wmismatched-tags] 2022-01-10 00:06:24 +01:00
30539716ca
Fix various Wcast-qual
g_atomic_int_get() requires a non-const pointer, however
many APIs are declared virtual const, so const_cast<> is
preferred over an API change.
2022-01-10 00:06:20 +01:00
4146177da3 triggerbox: when asked to stop by the user, clips should extend to the next bar boundary (and no further) 2022-01-07 16:05:07 -06:00
c157490311 triggerbox: fix N-bar quantization: bars are 1-based 2022-01-07 16:05:07 -06:00
4e5f171fe2 triggerbox: the default quantization for a clip should be 'bars' 2022-01-07 16:05:01 -06:00
John Emmas
031dce4ba4 Minor fix to commit #45df39bd0ea from yesterday
class 'AutomatableSequence' was trying to access a member that's private to its base class
2022-01-07 10:29:31 +00:00
78b39284d8 triggerbox: workaround for midi import crash. TODO: investigate root cause 2022-01-06 21:17:54 -06:00
2f9b84fd48 triggerbox: resolve MIDI notes whenever a MIDI cue is stopped 2022-01-06 16:50:55 -07:00
caba23ff4f remove misleading/out-of-date instructions in comment 2022-01-06 14:22:07 -07:00
b909c07a2d triggerbox: fix failure of triggers to end at the right time when something happens to stop them early
nframes needed to be reduced to reflect the expected transition time. This change also consolidates any adjustment to
nframes and dest_offset for "starts within the interval" cases.
2022-01-06 13:48:23 -07:00
436b81be9a NOOP: change code pattern to return early from conditional rather than leaving body inside true condition scope 2022-01-06 12:07:22 -07:00
8bf494e5a8 change nature of CueBehavior enum to be bitwise
This allows us to OR-in the ImplicitlyIgnoreCues bits, and still toggle
FollowCues on and off to indicate user-requested behavior
2022-01-06 11:59:58 -07:00
44d52133ae triggerbox: ignore cue-marker cues if told to do so 2022-01-06 11:23:02 -07:00
85b8816287 NOOP: remove spurious character in comment 2022-01-06 11:12:49 -07:00
4e482076ea add config param to control response to cue markers 2022-01-06 11:10:28 -07:00
45df39bd0e fix mysterious incorrect copy constructor call for AutomatableSequence
msvc calls this out, but gcc/clang do not. It is not clear why, and it might be worth understanding why
2022-01-06 10:36:50 -07:00
a187b5e1fb triggerbox: reimplement timeline cues without session events 2022-01-06 00:23:27 -07:00
fd2f2f46cc triggerbox: implement cue-triggering session event handling (sync with location markers)
Still requires handling tempo changes
2022-01-05 13:27:47 -07:00
f1a81b303a add several newer enums to libs/ardour/enums.cc 2022-01-05 13:27:47 -07:00
acdc1cd707 extend/adjust Location API to handle cue markers 2022-01-05 13:27:47 -07:00
93b30976e5 cue events: some basic handling framework for syncing cue markers with session events that implement them
This doesn't actually do anything yet
2022-01-05 13:27:47 -07:00
5783664b9e locations: provide Location::cue_change signal to notify about cue marker changes 2022-01-05 13:27:47 -07:00
54aa57a297 fix naming of unnamed cue locations 2022-01-05 13:27:47 -07:00
8a49d274fb fix luabindings for Editor.mouse_add_new_marker(), since API changed 2022-01-04 15:23:51 -07:00
c2d18dabd5 add new location flag, IsCueMarker 2022-01-04 15:23:51 -07:00
58d4c1e317 triggerbox: add ReTrigger launch style; do not stop running slots when cue launching 2022-01-03 17:45:21 -07:00
b72268f6e1
triggerbox: rename sidechain port when track's name chanes
Just like PluginInsert::update_sidechain_name, the name is
implicitly set, using the owning route's name, suffixed with the
[i18n localized] Processor name.

This fixes an issue if a track is renamed and a new track with
the old name is created. This commonly happens during File Import:
For each ImportAsTrack a generic named track (e.g. "Audio") is created
before it is renamed.

Previously this lead to
Failed to register port "Audio 1-trig/midi_in 1", reason is unknown from here
2022-01-04 01:22:34 +01:00
3c2878974c
Always create a triggerbox with new tracks
This fixes an issue when creating tracks from the import dialog,
or via Drag/Drop, or using a template.

All tracks should always have trigger-boxes.
2022-01-03 23:41:58 +01:00
47d34bfbfb
Tweak FPU test for FMA
FMA may return *more precise* results since there is no intermediate
rounding when computing (a + b * c).

(b * c) is evaluate with infinite precision and only the final result
after adding a is rounded to float32. This allows for a FLT_EPSILON
difference compared to rounding (b * c) first.
2022-01-03 02:34:53 +01:00
Ayan Shafqat
b90bfa2597
Fix pointer math for prefetch 2022-01-03 02:01:12 +01:00
Ayan Shafqat
25fac546d5
Removing _mm256_zeroupper()
This is probably not needed in 2021 as compilers will insert them
automatically. See stackoverflow reference:

https://stackoverflow.com/a/68738289
2022-01-03 02:01:12 +01:00
Ayan Shafqat
5fc3ae79ae
Tune performance for AVX optimized find_peaks
Propagating the changes from compute_peaks to find_peaks
2022-01-03 02:01:12 +01:00
Ayan Shafqat
a07ae169a3
Fine tune AVX optimized routine
In some instances, AVX optimized routines were slower than compiler
generated output. This commit addresses a few of those issues by
tuning code for better branch prediction and appropriate loop unrolls.
2022-01-03 02:01:12 +01:00
ca5043288c remove debug output 2022-01-02 17:23:01 -07:00
41310d9b8a brace style (braces missing) 2022-01-02 17:20:39 -07:00
0f6aa118f0 triggerbox: add Forward/ReverseTrigger follow actions
Live's Next/Prev do not skip empty slots or wrap. So do both-and
2022-01-02 17:20:38 -07:00
8e7810f40c
Disable session unit-tests for now
Converting, loading old sessions/templates fails:

#0  0x00005555568a2590 in  ()
#1  0x00007ffff7b8dfd9 in ARDOUR::SessionEventManager::merge_event(ARDOUR::SessionEvent*) (this=0x55555d89c3f0, ev=0x555555cfb510) at ../libs/ardour/session_events.cc:204
#2  0x00007ffff7bb1c79 in ARDOUR::Session::queue_event(ARDOUR::SessionEvent*) (this=0x55555d89c260, ev=0x555555cfb510) at ../libs/ardour/session_process.cc:836
#3  0x00007ffff7b8d780 in ARDOUR::SessionEventManager::clear_events(ARDOUR::SessionEvent::Type, boost::function<void ()>) (this=0x55555d89c3f0, type=ARDOUR::SessionEvent::Skip, after=...)
    at ../libs/ardour/session_events.cc:156
#4  0x00007ffff7b17991 in ARDOUR::Session::sync_locations_to_skips() (this=0x55555d89c260) at ../libs/ardour/session.cc:1752
#5  0x00007ffff7b175bd in ARDOUR::Session::update_skips(ARDOUR::Location*, bool) (this=0x55555d89c260, loc=0x0, consolidate=false) at ../libs/ardour/session.cc:1701
#6  0x00007ffff7b18bed in ARDOUR::Session::_locations_changed(std::__cxx11::list<ARDOUR::Location*, std::allocator<ARDOUR::Location*> > const&)
    (this=0x55555d89c260, locations=empty std::__cxx11::list) at ../libs/ardour/session.cc:1877
#7  0x00007ffff7b3ff7d in ARDOUR::Locations::apply<ARDOUR::Session>(ARDOUR::Session&, void (ARDOUR::Session::*)(std::__cxx11::list<ARDOUR::Location*, std::allocator<ARDOUR::Location*> > const&)) const (this=0x55555e19ed10, obj=..., method=
    (void (ARDOUR::Session::*)(ARDOUR::Session * const, const ARDOUR::Locations::LocationList &)) 0x7ffff7b18b38 <ARDOUR::Session::_locations_changed(std::__cxx11::list<ARDOUR::Location*, std::allocator<ARDOUR::Location*> > const&)>) at ../libs/ardour/ardour/location.h:263
#8  0x00007ffff7b18b35 in ARDOUR::Session::locations_changed() (this=0x55555d89c260) at ../libs/ardour/session.cc:1858
#9  0x00007ffff7bc4914 in ARDOUR::Session::set_state(XMLNode const&, int) (this=0x55555d89c260, node=..., version=7000) at ../libs/ardour/session_state.cc:1666
2022-01-03 01:11:54 +01:00
987df219e0
Fix building libardour unit-tests, disable BBT tests for now 2022-01-03 01:11:54 +01:00
e295e1c8d7
Disable evoral unit-tests -- nutempo update is needed 2022-01-03 01:11:54 +01:00
e784aa5d34 Extend midi regions to their natural bar length on import 2022-01-02 16:06:06 -06:00
6c3c38e924
Replace Tabs with Space in python script 2022-01-02 14:34:53 +01:00
4be38042a2 triggerbox: consolidate some code that is used in both MIDITrigger and AudioTrigger::run()
This comments out the reset of transition_beats that had been necessary to get
MIDI triggers to work correctly. Testing doesn't show a problem with it (so far).
2022-01-01 16:19:13 -07:00
fb82750bfb triggerbox: fix retrigger of MIDItrigger to start at next repeat of clip 2021-12-31 12:55:09 -07:00
ad5b0bac32 triggerbox: improved method of handling launch-style while cue launched 2021-12-31 12:55:09 -07:00
a7c9b2094a triggerbox: expanded debug trace output 2021-12-31 12:55:09 -07:00
6059687fb2 export MidiTrack::{set_,}input_active() to Lua 2021-12-31 12:55:02 -07:00
8d97439281 triggerbox: save properties and use Toggle launch style if started from a cue 2021-12-31 12:54:06 -07:00
027e7302b8 triggerbox: don't get a new trigger if there isn't a current one and allstop is set 2021-12-31 12:54:06 -07:00
27dfbecd54 triggerbox: add skeleton for push/pop of cue-affected trigger properties 2021-12-31 12:54:06 -07:00
88e9db30e3 triggerbox: NO-OP move code around 2021-12-31 12:54:06 -07:00
1e7e4b3037
VST3: fix legacy MIDI output - thanks to paulfd 2021-12-31 15:58:51 +01:00
854e359f56 build-fix: remove unused file reference 2021-12-30 21:44:21 -06:00
9180a985a4 trigger_ui: TriggerEntry is-a TriggerUI 2021-12-30 21:25:39 -06:00
133b51922a trigger_ui: move old triggerui implementation into slot_properties where it is used 2021-12-30 21:25:39 -06:00
7a53c4140d trigger_ui: add a color-picker button 2021-12-30 21:25:39 -06:00
d87b1053df ArdourButton: ColorBox flag is for color-picker buttons 2021-12-30 21:25:39 -06:00
c29f5471b2
Handle all enum cases, prevent accessing unintialized ptr object 2021-12-31 02:47:50 +01:00
1f5649ef28
Fix vfork edge-case
Calling c_str() after vfork is prohibited after a successful vfork.
Also the string needs to remain in scope until exec() completed.
2021-12-31 01:39:39 +01:00
96c80e88ac
Lua binding for MidiTrack::set_input_active 2021-12-30 19:00:14 +01:00
Florian Walpen
10d367fdae
Fix plugin manager build with VST3 disabled.
ARDOUR::SystemExec is also used for scanning VST2 and AU plugins, yet
the corresponding header ardour/system_exec.h is not included when VST3
support is disabled in the build configuration.
2021-12-29 23:33:39 +01:00
24269acb97 triggerbox: update relevant comment 2021-12-29 09:37:43 -07:00
645262c26a triggerbox: fix incorrect behavior in MIDITrigger::run() caused by taking dest_offset into account twice 2021-12-29 08:58:55 -07:00
87974562d3 triggerbox: add TriggerBox::active_scene() 2021-12-28 18:02:13 -07:00
2c00379220 triggerbox: continuing fixups for MIDITrigger 2021-12-28 18:01:41 -07:00
c97a28015e triggerbox: default probability should be 0 (100% left) 2021-12-28 08:37:08 -06:00
a43e3d88e5 triggerbox: notify the UI when we Clear a trigger 2021-12-27 18:03:13 -06:00
3a506ac7a1 triggerbox: mark session dirty when a Trigger's properties are changed
also make an effort to damp callbacks that are prone to gui feedback loops
 i.e.  CheckMenu Items and Adjustments
2021-12-27 18:03:13 -06:00
cc5fb209ab triggerbox: Triggers may be assigned a color
colors can be transmitted to some surfaces (Launchpad et al), so must be store in Trigger::
2021-12-27 18:03:13 -06:00
12dbcd90bf triggerbox: fix quantized stop via ::unbang() 2021-12-27 16:24:35 -07:00
163fc541d2 triggerbox: alter MIDITrigger::run() to work like its AudioTrigger counterpart 2021-12-27 15:08:20 -07:00
af37a51b65 triggerbox: triggers estimated to be 1 bar long are not one-shots 2021-12-27 15:07:44 -07:00
f9903a7a8b triggerbox: use custom (threaded) deleter for MIDITriggers just like AudioTriggers 2021-12-27 12:04:39 -07:00
3755c04786 triggerbox: fix some const qualifier usage 2021-12-27 12:04:21 -07:00
8e2b36d43d triggerbox: NOOP: add explanatory comment 2021-12-27 11:24:21 -07:00
610125b87c remove call to #ifdef'ed code 2021-12-27 11:24:03 -07:00
75d5d54cb6 triggerbox: position triggerbox after disk reader, before polarity, by default 2021-12-27 11:20:40 -07:00
d82d8dd7d4 NO-OP: fix spelling mistake 2021-12-27 11:20:40 -07:00
18fe2e2c4e
Fix C++11/14 array initialization (clang < 3.7)
C++11 array initialization won't call copy constructor, leading to
an error: array initializer must be an initializer list.

Specifically this affects the copy c'tor: line 93: peaks (other.peaks)

A workaround is to use a vector instead of a fixed size array.
This fixes macOS builds.
2021-12-27 16:42:26 +01:00
b2bd748672 ruler: make ::set_metric() API consistent with constructor by using ptr 2021-12-24 15:34:18 -07:00
8c2bd1a555 triggerbox: get thread-based deletion system to actually work
Needed to pass custom deleter to the shared_ptr<Trigger>::reset() call where the
trigger is replaced
2021-12-24 15:00:58 -07:00
401411d5c3 triggerbox: initial implementation of thread-based deleter for Triggers
Uses a custom deleter for the shared_ptr<Trigger>'s that we create. Will
likely evolve to use an allocator so that we can use make_shared's
cousin allocate_shared().
2021-12-24 14:17:23 -07:00
7afc8f7a31 triggerbox: remove unused local variable 2021-12-24 14:17:23 -07:00
4d15bf9f18 triggerbox: move TriggerReference object into ARDOUR::Triggerbox
Also, change box handle to a pointer so that we can have a
default (empty) constructor.
2021-12-24 14:17:23 -07:00
ce71ee010e triggerbox: fix API/virtual issue with ::start_offset() method 2021-12-24 14:17:23 -07:00
753d1c9754 rulers: change API to accept a pointer instead of a reference to a Metric
We need to be able to construct Metrics after the ruler is constructed
in order to deal with Triggers which are potentially short-lived. We
stored the reference as a pointer anyway, so it's not as much of a change
as it appears.
2021-12-24 14:17:23 -07:00
7f3681c7ac
Scale export-analysis dataset 2021-12-24 21:59:03 +01:00
4fa8af3e20
prefer ARDOUR::ui_scale_factor over ARDOUR::ui_scale_factor 2021-12-24 21:58:59 +01:00
50c60c031d
Allow to use UI scaling to libardour
This will replace LV2Plugin::_ui_scale_factor,
and be useful for export-analysis.
2021-12-24 21:58:53 +01:00
31159c2f77
NO-OP: clang-format 2021-12-24 19:54:00 +01:00
122d219354
Prepare scaleable analysis (variable width, bins) 2021-12-24 19:54:00 +01:00
31228c8635 triggerbox: clear_all_triggers (libardour part) 2021-12-23 22:35:52 -06:00
7a8775382f
Remove ASCII limit when naming files/regions 2021-12-24 00:31:01 +01:00
00b2b21878 remove debug output 2021-12-23 15:46:31 -07:00
c7896075b5 triggerbox: fix FA probability math so that zero == 100% left 2021-12-23 14:55:57 -07:00
c14e9cd2fb triggerbox: fix default follow action probability, and the default FA to Again 2021-12-23 14:55:57 -07:00
8bda2ea54d triggerbox: when calling ::set_state() do not use worker thread
This avoids creating a new Trigger with the correct state, and instead
sets the state of the current Trigger. Also change order of ::set_state() so
that the othe Trigger properties are set after the region is set. Setting the
region may set defaults that are no longer correct.
2021-12-23 14:55:57 -07:00
ff89d998b2 triggerbox: steps toward sane trigger stopping API and design 2021-12-22 17:27:26 -07:00
0cfbf346e7 triggerbox: try to detect "oneshot" clips and set clip properties appropriately 2021-12-22 17:27:26 -07:00
bad18350e2 triggerbox: implement set_all_X for triggers (libardour part) 2021-12-22 12:29:40 -06:00
b89d181560 triggerbox: NOOP - change name of set_region_threaded() to set_region_in_worker_thread() 2021-12-22 07:42:52 -07:00
8f44a11329 triggerbox: set name of worker thread 2021-12-22 07:42:27 -07:00
65c7079b51 remove debug output 2021-12-22 07:38:59 -07:00
844bb85d12 triggerbox: somewhat working mechanism for "clear" slot 2021-12-21 22:35:59 -07:00
885f8eb5d1 triggerbox: remove unused method 2021-12-21 18:13:50 -07:00
bd873c6ba1 triggerbox: mostly functional slot swapping system 2021-12-21 17:40:40 -07:00
75699e384f triggerbox: start of "pending" architecture to allow for thread-safe swapping of slot contents (Triggers) 2021-12-21 17:40:40 -07:00
f69180c8ee triggerbox: use shared_ptr<Trigger> and also change all 64 bit indices to 32 bit 2021-12-21 17:38:42 -07:00
f3fe31da27 session: fix for creation of new/default tempo map 2021-12-21 17:38:42 -07:00
722a159ac1 Session constructor should create a new tempo map
This may be the wrong place to do this. It might be more appropriate in ::set_state(0
so that we either use existing XML state or a default tempo map
2021-12-21 17:38:42 -07:00
9c6c05dfac triggerbox: audio triggers get a deletion queue (WIP) 2021-12-21 17:38:42 -07:00
4f8be5a6c3 triggerbox: amend previous commit that failed to notice 2 uses of which_follow_action 2021-12-21 17:38:37 -07:00
e112a86af2 triggerbox: fix uninitalized var 2021-12-21 15:32:42 -06:00
2072cc5fd8
Add Config variable for custom sample-libraries 2021-12-20 02:32:12 +01:00
d4145f0cb1 triggerbox: slight rationalization of member order in AudioTrigger 2021-12-18 17:34:06 -07:00
30123a2106 triggerbox: cleanup what is a property and what isn't 2021-12-18 14:11:54 -07:00
9b5e910717 temporal: add additional required string_to/to_string functions for BBT_Offset & BBT_Time 2021-12-18 14:11:25 -07:00
c3a48ff9c9 triggerbox: add explanatory comment about how the triggerbox thread quit msg works 2021-12-18 09:35:10 -07:00
afd8554b43 triggerbox: waking up the triggerbox thread has nothing to do with RT, so remove comment etc. 2021-12-18 09:33:51 -07:00
4d980bee6a triggerbox: catch file-name-based incorrect types when loading into slots 2021-12-18 09:31:44 -07:00
16dfb410bc triggerbox: catch failure to load files 2021-12-18 08:29:48 -07:00
8e3e3ea01f triggerbox: fix load-from-file for MIDI 2021-12-18 08:29:48 -07:00
d28422d420 MIDI import: load MIDI model after writing/copying MIDI to a new file
Fixes problem with edits to newly imported MIDI not changing what is played back, because
there was no model to connect the region/playlist to, and thus no notifications about
the changes to the model were sent
2021-12-17 19:24:12 -07:00
2111cfe557 triggerbox: allow set_region_threaded() to "unset" the region 2021-12-17 19:24:12 -07:00
c6e141aaba triggerbox: avoid float/double warning 2021-12-17 19:24:12 -07:00
9f957f8220 triggerbox: change type of _follow_count property to avoid signed/unsigned warnings 2021-12-17 19:24:12 -07:00
95355f943f triggerbox: start encapsulating audio trigger data object
The goal will be to be able to swap out the data, atomically, when stopped
2021-12-17 19:24:12 -07:00
689c569319 triggerbox: extend debugging info 2021-12-17 19:24:12 -07:00
243ddae928 triggerbox: implement trigger gain as a save-able property (libardour) 2021-12-17 13:09:49 -06:00
dd7f474125 triggerbox: scene-isolate property for triggers (libardour part) 2021-12-17 13:09:49 -06:00
ec04ab3865
Fix Triggerbox mono to stereo playback 2021-12-17 17:50:50 +01:00
6b6ae5dedb
Fix file-extension check
If the extension is not found, string::rfind() returns -1,
That can still match unrelated file if the file-name is one
char longer than an arbitrary extension.

eg. "foo" matched ".aiff" because
-1 = strlen("foo") - strlen(".aiff")

Also due to a missing comma ".VOC.vwe" matched any file shorter
than 7 chars in length.
2021-12-16 19:08:03 +01:00
9f7114f761
Add dir names for media-folder 2021-12-16 19:08:03 +01:00
21ed6a2626 add Config variable for trigger enable 2021-12-16 10:39:43 -07:00
f7792cb425 triggerbox: fix typo that caused crash when handling unstretched audio 2021-12-16 10:39:43 -07:00
899c217511 triggerbox: fix passthru handling and default to off 2021-12-16 09:31:12 -07:00
f8432d0647 Triggerbox: these properties will not be stored in Region (reverts 3918ee) 2021-12-16 08:15:29 -06:00
fc0dfd5d38
Wreturn-type, fixes unconfigured processors 2021-12-16 14:47:10 +01:00
8a58155dcf triggerbox: use Session::import_files() to load from file
This uses the SRC infrastructure set up for normal imports, which
is desirable.
2021-12-15 18:19:20 -07:00
02eb39325f triggerbox: fix channel handling for audio
We do not modify the audio I/O of the parent route, and process
at most std::min (route_inputs,region_channels).
2021-12-15 18:19:20 -07:00
382f73fa51 triggerbox: use stretching() internally but change property name to stretchable (libardour) 2021-12-15 18:08:22 -06:00
40c1a7016a triggerbox: NOOP - add explanatory comment 2021-12-15 15:39:28 -07:00
ca7b418281 triggerbox: NOOP - commented out extra debugging info 2021-12-15 14:58:24 -07:00
1ecdc5c515 triggerbox: try to avoid tempo that results in fractional bar cnts
If minibpm's estimate of tempo implies that the clip has a duration measured in
fractional bars, use the estimate as a starting point to get to a tempo that
will lead to an integer number of bars (and quarters)
2021-12-15 14:58:03 -07:00
ed6121d76e triggerbox: continued work on Repeat trigger mode 2021-12-15 12:26:46 -07:00
2688c02e0e triggerbox: do not use follow action if Trigger::_use_follow is not set 2021-12-15 11:19:36 -07:00
347a17cdb2 triggerbox: telling a Toggle/Gate/Repeat launch mode slots to not use a follow action when stopped 2021-12-15 11:03:53 -07:00
ab03e09a79 triggerbox: publish the loop_cnt for the gui 2021-12-15 11:43:48 -06:00
71f7f7a09b triggerbox: add stretching property, virtualize computation of expected end sample, maybe fix position_as_fraction() 2021-12-15 10:21:28 -07:00
97eb164b91 triggerbox: clean up part of the state machine for audio triggers 2021-12-14 21:59:33 -07:00
12847b0125 remove Session::bbt_time() and use TempoMap::use()->bbt_at() explicitly everywhere 2021-12-14 21:59:33 -07:00
3335757276 triggerbox: add Properties for velocity and probability 2021-12-14 13:11:08 -06:00
977f6aec94 Triggerbox: save and recall the follow_count property (lib part) 2021-12-14 10:40:37 -06:00
58796e6b19 fix likely crash in faderport8 support, from calling TempoMap::use() and not TempoMap::fetch() 2021-12-13 21:07:18 -07:00
Marijn Kruisselbrink
0e799357a8 Fix crash in mackie strip code.
Strip::notify_property_changed accesses _stripable without verifying
that is not null. However it is possible for this to be null, so
add a null check.
2021-12-13 21:03:38 -07:00
d04d25e7c7 Mackie Control: Clean up detection of QCon master display and meter.
Only enable the master display and meter modes for Qcon devices if this
surface is in the master position. Extenders don't have master meters
or master displays.
2021-12-13 21:26:45 -06:00
d60a5187bd Mackie Control: Fix detection of QCon Extenders so 2nd LCD is correct
Logic to detect an extender has to be based on if this surface object is
the master position. Has master fader is true for all surfaces in this
"device".
2021-12-13 21:25:07 -06:00
5f810843bb triggerbox: only require a MIDI output if the data type is MIDI
This was a thinko that occured when I added the sidechain for audio tracks to handle
trigger input
2021-12-13 16:50:31 -07:00
0fcc873ec5 correctly hide/show/position triggerbox in route processors 2021-12-13 16:24:13 -07:00
2a9ab18f7b triggerbox: not visible by default in processor box 2021-12-13 15:27:58 -07:00
087bdaa87b triggerbox: remove static signal added in dd842fdc5c
Bad design idea. Signal would be emitted from the triggerbox thread, and cannot
return a value from the GUI. Would also be problematic for clip loading
initiated from a control surface
2021-12-13 15:12:36 -07:00
dd842fdc5c triggerbox: add static signal to let the GUI do something when we cannot determine tempo 2021-12-13 09:20:32 -07:00
e7569eabe7 Trigger Cues: implement master Stop button (libardour part) 2021-12-13 07:26:47 -06:00
9d4a1f080d triggers: return a segment descriptor 2021-12-12 11:20:58 -07:00
483bdd99cc libardour: new SegmentDescriptor type added (but not used) 2021-12-12 10:55:05 -07:00
96e1735646 triggerbox: add heuristic to extract bpm from filename
If found, we do not do analysis of the audio data
2021-12-11 21:05:32 -07:00
3753d97599
Add Lua binding for Temporal::TempoMap::write_copy 2021-12-11 18:30:29 +01:00
ce15b6ed66
Cont'd work on TempoMap Lua bindings 2021-12-11 17:43:12 +01:00
3b18b025e3
Fix Lua TempoMap bindings
* Resolve ambiguity between typef'ed ARDOUR::timepos_t and
  Temporal::timepos_t (and timecnt_t, superclock_t)
* Add missing classes TempoPoint, MeterPoint, which are
  return value for various TempoMap methods.
* Change TempoMap into a shared_ptr<> class.
* Move Tempo and Meter out of ARDOUR into Temporal namespace.
* add various bindings to access the TempoMap
* move Temporal enums out of ARDOUR::Temporal namespace
2021-12-11 16:49:28 +01:00
60be0c27a1
Use updated temporal API 1/2 2021-12-11 14:42:36 +01:00
506bc3a6f6
Disambiguate zero(bool) constructor and is_zero() comparison
This is mainly for the benefit of Lua bindings, but also increases
overall API naming consistency with functions and methods
`is_XYZ()` being used elsewhere.

This API change breaks builds!
2021-12-11 14:33:45 +01:00
6f91dc0799 canvas: fix an issue with event coordinate translation by ScrollGroup
If there's a grabbed item (GtkCanvas only at present) then unless it belongs to the scroll
group used for scroll offset translation, the event coordinates should not be translated,
even if the mouse pointer moves into the scroll group.
2021-12-10 18:17:58 -07:00
08e50934c9 canvas: add scroll offset info to Item::dump() 2021-12-10 17:16:10 -07:00
972229a02f Remove some spurious printouts 2021-12-08 13:39:38 -06:00
3918ee2ed6 Add New Region variables for Clips
Properties are created for announcing changes, but values are not actually stored as undo-able properties.
2021-12-08 12:57:48 -06:00
dc826c6521 ArdourCanvas Rectangle: allow subclasses access to _rect 2021-12-07 16:32:49 -06:00
0ee628d170
Add preference to show fader on meter-bridge 2021-12-07 17:56:35 +01:00
7b8be04623 triggerbox: fix mis-designed handling of dest_offset when a trigger starts within the same run() call as another 2021-12-06 14:06:48 -07:00
bc7e14c8ac remove misleading content from a comment 2021-12-06 14:05:59 -07:00
0a0ca81e11 triggerbox: add missing property defn 2021-12-06 10:36:57 -07:00
ef9cca2c07 triggerbox: add missing property defn 2021-12-06 10:27:59 -07:00
a14bcc455b triggerbox: more properties for Triggers 2021-12-06 09:26:18 -07:00
4918e4bcb9 triggerbox: change return type for Triggerbox::currently_playing(); add position-as-fraction to Triggerbox 2021-12-06 09:06:46 -07:00
9a89dd8981 triggerbox: add TriggerBox currently_playing property, and rename ::currently_running() to ::currently_playing 2021-12-06 08:57:06 -07:00
86f239f185 triggerbox: add 3 additional property descriptors for Triggers 2021-12-06 08:47:29 -07:00
96b21c4824 fix crash in Playlist::relayer() when there are no regions 2021-12-05 10:36:26 -07:00