13
0
Commit Graph

12951 Commits

Author SHA1 Message Date
9cb8978c86 Remember subgroup-bus 2017-06-13 01:08:30 +02:00
293ab1ef53 Allow group gain sharing + VCA again 2017-06-13 01:08:30 +02:00
9441e8d484 OSC: select channel plugin support with paging. 2017-06-12 12:31:04 -07:00
6cc18cef4f Fix relative grouped + VCA slaved gain 2017-06-12 17:20:41 +02:00
c69049a853 Fix a compiler warning (optimized builds) 2017-06-12 17:20:41 +02:00
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
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
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
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
4ef4f45f3d Add a method for obtaining the frame position of beat/whatever zero 2017-06-09 11:01:30 +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
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
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
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
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
46a2bfa0e6 Add Lua bindings for VCAs and VCAManager 2017-05-30 15:15:30 +02:00
67f9f6fd75 Prepare for automation control master
Basic infrastructure to allow VCA automation and Trim automation:
look up events during automation playback.
2017-05-30 15:13:37 +02:00
628e60f8fd NO-OP: whitespace 2017-05-29 23:45:16 +02:00
Daniel Sheeler
d67436af3b duplicate routes start off unsoloed to avoid issues related to upstream / downstream buses 2017-05-29 15:42:27 -05:00
0a13106765 Allow export presets for 176.4KHz -- "Ardour6: music for bats" 2017-05-29 13:37:06 +02:00
1ef690da19 Use string concatenation and PBD::to_string in EventTypeMap::to_symbol()
Avoid using PBD::string_compose for serialization as correct behaviour depends
on the setting of the global C++ locale.
2017-05-26 10:50:08 +10:00
1f094027c5 Remove normalization of property names from libpbd xml code
It may have been OK to add this code temporarily at this low level, but as it
was introduced in 2008, this change is made with the assumption that any
Sessions that were affected have been re-saved since then with corrected
property names and that "normalization" is no longer necessary.

Timing results before changes:

XMLTest::testPerfMediumXMLDocumentTiming
   Create : Count: 10 Min: 30375 Max: 48253 Total: 431727 Avg: 43172 (43 msecs)
   Write : Count: 10 Min: 42553 Max: 49163 Total: 453353 Avg: 45335 (45 msecs)
   Read : Count: 10 Min: 70307 Max: 75987 Total: 734923 Avg: 73492 (73 msecs)
XMLTest::testPerfLargeXMLDocumentTiming
   Create : Count: 10 Min: 154486 Max: 307856 Total: 2678989 Avg: 267898 (267 msecs)
   Write : Count: 10 Min: 304273 Max: 343274 Total: 3169158 Avg: 316915 (316 msecs)
   Read : Count: 10 Min: 496920 Max: 541394 Total: 5260410 Avg: 526041 (526 msecs)

Timing results after changes:

XMLTest::testPerfMediumXMLDocumentTiming
   Create : Count: 10 Min: 21437 Max: 39749 Total: 348622 Avg: 34862 (34 msecs)
   Write : Count: 10 Min: 42320 Max: 49989 Total: 446135 Avg: 44613 (44 msecs)
   Read : Count: 10 Min: 63252 Max: 68389 Total: 660841 Avg: 66084 (66 msecs)
XMLTest::testPerfLargeXMLDocumentTiming
   Create : Count: 10 Min: 113458 Max: 263225 Total: 2215595 Avg: 221559 (221 msecs)
   Write : Count: 10 Min: 305439 Max: 339986 Total: 3150697 Avg: 315069 (315 msecs)
   Read : Count: 10 Min: 447560 Max: 488121 Total: 4698903 Avg: 469890 (469 msecs)
2017-05-26 08:48:04 +10:00
640d9d355f Use correct property name in generic MIDI surface
Fixes restoring the feedback interval property, but as the mutator/setter
method doesn't seem to be used this change should have no affect.
2017-05-26 08:48:04 +10:00
bbb9a82e17 Use correct names when setting MidiTrack properties
These were changed in the XMLProperty ctor and they now match the names used in
MidiTrack::set_state()
2017-05-26 08:48:04 +10:00
244313f43f Always create a deep copy of MIDI regions when copying playlists. 2017-05-25 14:10:14 +02:00