13
0
Commit Graph

24781 Commits

Author SHA1 Message Date
79ccabdc93 Remove unnecessary temporary variables in MasterRecord::set_state
XMLNode::get_property only modifies the argument if the property is found and
conversion is successful.
2017-06-12 21:19:25 +10:00
333e20a3a6 VCA/SlavableAutomationCtrl re-design:
* remember master-ctrl value on assignment & save with session
* Control/AutomationCtrl only stores ctrl's own value (w/o master)
* virtual AutomationControl::get_value () -> use SlavableAC method
* MasterRecord uses weak-ptr (fixes recursive ~Controllable() deadlock)
2017-06-12 02:26:23 +02:00
3d2bbf93ef a-EQ: Tweak knob layout to be less confusing 2017-06-11 16:25:26 +10:00
02b087c552 Fix thinko in 9581cb26 - scratch-buffer can't be used recursively. 2017-06-11 02:16:35 +02:00
8b8f47430a OSC: add option to send /reply instead of #reply (OSC1.0 compat) 2017-06-10 09:43:46 -07:00
Johannes Mueller
05c77db773 Emit Session::Located only if _engine.transport_frame() is up to date
If _engine.transport_frame() is not up to date, we emit Located in
Session::backend_sync_callback() because that's when audible_frame() is up to
date. We don't want to emit it twice, because then, the playhead jumps back and
forth.

* mouse click in the ruler -> jump to requested location
* mouse release -> jump to old location (because audible_frame has to catch up)
* backend_sync_callback() called -> jump to new location
2017-06-10 18:30:42 +02:00
Johannes Mueller
2770444b0c Make Session::backend_sync_callback() emit Session::Located
If we sync to jackd AudioEngine::transport_frame() is not yet updated when
Session emits Located. Then the playhead ends up in an obsolete
position. Therefore we emit Session::Located() also from within
Session::backend_sync_callback() as that is called when AudioEngine is done
with the relocation.
2017-06-10 18:30:42 +02:00
ae837b49ed semantically more correct ordering of previous commit 2017-06-10 12:04:27 -04:00
0f20819c86 linker-agnostic version of recent commit to get ControlProtocol selection state set correctly 2017-06-10 11:53:37 -04:00
2bc2aea009 Implement slaved boolean automation and update mute special-case 2017-06-10 14:38:21 +02:00
50c5425004 Restore VCA Automation state 2017-06-10 14:38:21 +02:00
f0d3121d6c amend a1b4f9b8ab - handle disconnecting from all masters 2017-06-10 14:38:21 +02:00
d0307e10c9 set first selected stripable for control protocols before they are instantiated 2017-06-09 17:55:11 -04:00
18db6e3f50 NO-OP: whitespace 2017-06-09 23:25:42 +02:00
a1b4f9b8ab Fix deletion of VCA with slaved controls.
The crashed previously because:
 A VCA is-a Automatable is-a Evoral::ControlSet

 After VCA's d'tor completes ~Automatable runs and emits signal to
 DropReferences of all master-controls.

 This in turn calls SlavableAutomationControl::master_going_away()
 for slaved parameters for the given master-control

 In ::master_going_away() the weak-pointer reference to the master's
 AutomationControl (owned by the destroyed VCA) is still valid.

 Execution is in the d'tor of Automatable which is-a ControlSet and
 the ContolSet keeps a reference to the Control and hence also to the
 AutomationControl which is-a Evoral::Control.

 So master_going_away() locks a boost::shared_ptr<ARDOUR::AutomationControl>
 which is actually the MuteControl owned by the VCA.
 It calls SlavableAutomationControl::remove_master() which
 in turn calls MuteControl::pre_remove_master() which uses the
 MuteMaster API to retrieve the value. The MuteMaster however is the
 VCA that has just been destroyed.


The solution is twofold:
 1) emit "drop_references" from the VCA d'tor itself,
    before the VCA is destroyed.

 2) disconnect a slaved control from the master's drop_references signal
    when un-assigning a master-control.
2017-06-09 23:25:42 +02:00
nick_m
8502aa18c5 NoteCreateDrag - Fix incorrect note length due to use of region-relative position 2017-06-10 03:49:01 +10:00
48ea6beaad Remove Automatable::value_as_string API from libardour
Keep Pannable::value_as_string() for now. That is another inconsistency
which needs cleaning up. GUI StereoPanner and MonoPanner print
the value as they see fit, the panner-plugin provided formatting
is not used.
2017-06-09 16:54:21 +02:00
99b064274f Update GUI, drop Automatable::value_as_string() API 2017-06-09 16:54:21 +02:00
17fb5bfb49 Prepare to eventually drop Automatable::value_as_string()
Probably due to historical reasons, there are two APIs to format a
control's value. In all both variants end up calling either
ARDOUR::value_as_string() or the Controllable's formatting function
(except for panners).
2017-06-09 16:54:21 +02:00
b0f68a0f5c Prepare AutomationTimeAxisView for non-route (VCA) automation 2017-06-09 16:54:21 +02:00
d08b81d33d a-EQ: Revert one of the previous changes
One of the previous changes was not a typo, revert it.
2017-06-09 23:09:36 +10:00
nick_m
b4ddbce1ff Fix incorrect positioning of tempo line subdivisions if first meter is non-zero
Commit cebefe6 assumed that frame 0 was the music origin.
Silly me.
2017-06-09 11:05:56 +10:00
nick_m
4ef4f45f3d Add a method for obtaining the frame position of beat/whatever zero 2017-06-09 11:01:30 +10:00
789fcff1fe Fix crash when showing plugin-UI in safe-mode 2017-06-08 21:21:41 +02:00
nick_m
b086d33937 TempoLines deletes its bfc on destruction 2017-06-09 01:56:28 +10:00
nick_m
cebefe69d9 Tempo lines display subdivisions correctly over a tempo change
TempoMap::get_grid() supplies a list of beat positions, leaving the lines
to work out any subdivision positions.
This is fine, unless a tempo section falls in between beats.
Use a BeatsFramesConverter along with a quarter note position
(in the BBTPointsList) to make this easier.
2017-06-09 01:44:48 +10:00
nick_m
2b320d51dd Fix reversed logic in legacy tempo secton detection 2017-06-09 01:34:14 +10:00
nick_m
e9f2e32b71 Delete tempo lines when session goes away 2017-06-09 01:08:59 +10:00
nick_m
d455806a73 Do not duplicate note id in copy constructor
This fixes selection undo after copy-dragging notes, but there
are probably other cases where duplicate note ids may cause problems.
2017-06-08 23:11:56 +10:00
nick_m
3d5f21a3e5 Remove debugging from TempoTest::qnDistanceTestRamp () 2017-06-08 22:39:41 +10:00
nick_m
7a71428fb0 Fix uninitialised tempo section variable
Should fix 7390.
2017-06-08 22:18:57 +10:00
b57b1de491 Fix rec-box w/count-in
Since 478f26b2ad, transport_rolling() is only true when actually rolling.
Count-in is a no-roll process (don't move playhead, no playhead UI
position interpolation 55b8b448).

But transport isn't exactly stopped either (preparing to roll), so
during count-in transport_stopped() == transport_rolling() == false.
2017-06-08 13:34:23 +02:00
104bebe1bd Update LuaDialog example script to include File/Folder selection 2017-06-08 13:22:43 +02:00
ed5761a8b4 Add a file-chooser LuaDialog Widget 2017-06-08 13:22:00 +02:00
6ac76734f5 cut buffer must not mess around with libardour selection
Fixes range mode selection/cut/copy that would previously clear track selection
2017-06-07 12:28:53 -04:00
ca815acd61 a-EQ: DSP bugfix
Previously there were large spurious spikes in the signal when
the bandwidth parameter was adjusted on a pure sine tone
for the peaking circuits. This has been *greatly* reduced if not
eliminated by fixing a typo in two of the equations.
2017-06-08 02:04:12 +10:00
c4a4857b87 OSC: add optional paging to sends in select. 2017-06-06 09:08:35 -07:00
Nil Geisweiller
a07ca8fa3e Fix a-EQ when parameter changes are very slow
If the parameters change too slowly the filter may never get updated. Indeed,
in spite of v_f0, v_g or v_bw being updated, set_params may never be called,
thus v_filter never updated.
2017-06-06 14:44:19 +02:00
Daniel Sheeler
2c41df9474 add route dialog now has "Add" and "Add and Close" buttons. "Add" keeps dialog open so user can add multiple templates. 2017-06-03 21:44:48 -05:00
11ba1854b3 Apply VCA master gain automation to Amp (Fader, Trim) 2017-06-03 13:55:16 +02:00
9581cb26e4 Add infrastructure for evaluating VCA automation curves 2017-06-03 13:55:14 +02:00
d662e6e0bf amend 67f9f6fd: no recursive ReaderLock 2017-06-03 13:55:08 +02:00
c2cb60ea03 add const-ness: Evaluating a curve does not change it.
Note that the ControlList's lock and cache are already mutable.
2017-06-03 13:55:02 +02:00
0c57199a6c Add a scratch buffer for automation.
Useful as temporary buffer: This allows a controllable to
get a master's automation-curve and combine it with its own
(gain, trim, send) automation buffer.
2017-06-03 13:54:55 +02:00
5f7d50a690 NO-OP: whitespace 2017-06-03 00:19:35 +02:00
cc971b6d9b Import Dialog is Window. Dialog Esc behavior needs to be emulated. 2017-06-02 18:21:31 +02:00
4b0e2ad682 Remove "Close" button from import-dialog (prefer WM close button) 2017-06-01 11:57:08 +02:00
82cb046fa3 if actively recording, prevent interaction between mouse and audio clock widget(s) 2017-05-31 13:04:26 -04:00
d35dfa9c93 OSC: Some surfaces may use float for ssid. Accept this too. 2017-05-31 08:39:55 -07:00
b343108756 OSC: check controllable exists before using 2017-05-31 08:39:55 -07:00