Commit graph

12979 commits

Author SHA1 Message Date
Robin Gareus
9f37396315 Format boolean parameter values 2017-06-21 18:11:43 +02:00
Robin Gareus
86dea93299 Tweak value-as-string dB and float decimals printing 2017-06-21 13:16:58 +02:00
Robin Gareus
7c94499aec Remove Cruft -- AutomationStyle never did anything.
Trim automation is planned via SlavableAC as normal AutomationMode.
Some of this code have a revival (a special "Trim+Preview" state
before merging Automation but that has to be more general than Pan & Gain.
2017-06-21 13:16:27 +02:00
Robin Gareus
31c6f66d9b Fix duplicate Gain+Trim AutomationLists in session file. 2017-06-21 13:15:34 +02:00
Len Ovens
fd3bd35203 OSC: value not initialized soon enough 2017-06-20 13:11:59 -07:00
John Emmas
c2cba9e57c 'ARDOUR::Stripable::Sorter()' needs to be exportable (since it gets used outside of libardour) 2017-06-18 12:05:48 +01:00
Hiroki Inagaki
c0611fb55e Update Japanese translation, including a fix for an issue that translation for a certain string leads failure to launch the application on Windows 10 2017-06-17 22:15:41 +02:00
Robin Gareus
c02a3413e1 Move implementation out of header file 2017-06-17 15:52:00 +02:00
Robin Gareus
f80958e168 Add Lua bindings to query all stripables 2017-06-17 04:37:14 +02:00
Robin Gareus
591d75f1d2 Fix stripable order for new strips & master-order 2017-06-17 04:37:05 +02:00
Robin Gareus
140c511d2c Add method to ensure Stripable sort constrains (for UI use) 2017-06-17 04:36:32 +02:00
Robin Gareus
10db824461 Use Stripable::Sorter in libs 2017-06-17 04:36:28 +02:00
Robin Gareus
867a0f5228 Move StripableSorter into libardour 2017-06-17 04:36:22 +02:00
Len Ovens
0331a9a233 OSC: plugin feedback mathfix - 0 param (meter) checked for. 2017-06-16 11:33:02 -07:00
Robin Gareus
9c629c0c76 Fix region-gain offset when separating ranges 2017-06-14 22:47:32 +02:00
Len Ovens
7c84deb2c4 OSC: Add send/plugin page values to GUI 2017-06-14 10:28:45 -07:00
Len Ovens
d76e6d84c7 OSC: save and restore send/plugin page size. 2017-06-14 08:18:43 -07:00
Robin Gareus
910e93470f Fix range-separate for musically-locked MIDI regions
Cloning a region retains the region-lock style.
Playlist partitioning set the region start-property only (audio-time).
If a MIDI region is locked to musical-time, Properties::start is ignored
and overwritten by Properties::start_beats.
2017-06-14 15:21:19 +02:00
Robin Gareus
22bddf5434 Special-case VCA at 0 (-inf dB), force gain slaves to -inf dB 2017-06-14 15:21:16 +02:00
Robin Gareus
e0a1c7690a Merge event control lists when disconnecting a master-ctrl 2017-06-14 02:40:09 +02:00
Robin Gareus
8b917c4c16 Add infrastructure to merge ControlLists 2017-06-14 02:40:09 +02:00
Len Ovens
9c0f6ea948 OSC: Allow set_surface to set send and plugin page sizes. 2017-06-13 16:56:10 -07:00
Robin Gareus
8e6f71b8c1 Apply master-value to automation on disconnect. 2017-06-13 20:57:37 +02:00
Robin Gareus
c1912b6d51 Write inverse master automation.
* The UI and ctrl-surface controls use and display the combined value,
including control-masters.

 * The Automation lane of a control is the raw value of the control
without masters.

When touching (or writing) automation, the control-master needs to be
factored out (or subtracted). e.g press+hold a control -> write inverse
master automation.
2017-06-13 18:09:59 +02:00
Robin Gareus
b34d891b23 amend 11ba1854 -- locked curve-evaluation is not public 2017-06-13 18:09:56 +02:00
Robin Gareus
23554fd185 FP8: use proper API to detect automation-playback
The custom code didn't take touch + touching into account when
another surface was touching automation.
2017-06-13 18:09:53 +02:00
Robin Gareus
fdb3df7786 Fix another thinko in 9581cb26 + 02b087c5 (VCA gain automation)
This went unnoticed because: VCA gain automation was always applied
(regardless of automation state) but when it was not playing
master_ratio() factored it out again (per block).
2017-06-13 18:09:47 +02:00
Robin Gareus
b34f2e2c38 Fix nasty duplicate XML node 2017-06-13 01:08:30 +02:00
Robin Gareus
9cb8978c86 Remember subgroup-bus 2017-06-13 01:08:30 +02:00
Robin Gareus
293ab1ef53 Allow group gain sharing + VCA again 2017-06-13 01:08:30 +02:00
Len Ovens
9441e8d484 OSC: select channel plugin support with paging. 2017-06-12 12:31:04 -07:00
Robin Gareus
6cc18cef4f Fix relative grouped + VCA slaved gain 2017-06-12 17:20:41 +02:00
Robin Gareus
c69049a853 Fix a compiler warning (optimized builds) 2017-06-12 17:20:41 +02:00
Tim Mayberry
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
Robin Gareus
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
Damien Zammit
3d2bbf93ef a-EQ: Tweak knob layout to be less confusing 2017-06-11 16:25:26 +10:00
Robin Gareus
02b087c552 Fix thinko in 9581cb26 - scratch-buffer can't be used recursively. 2017-06-11 02:16:35 +02:00
Len Ovens
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
Paul Davis
ae837b49ed semantically more correct ordering of previous commit 2017-06-10 12:04:27 -04:00
Paul Davis
0f20819c86 linker-agnostic version of recent commit to get ControlProtocol selection state set correctly 2017-06-10 11:53:37 -04:00
Robin Gareus
2bc2aea009 Implement slaved boolean automation and update mute special-case 2017-06-10 14:38:21 +02:00
Robin Gareus
50c5425004 Restore VCA Automation state 2017-06-10 14:38:21 +02:00
Robin Gareus
f0d3121d6c amend a1b4f9b8ab - handle disconnecting from all masters 2017-06-10 14:38:21 +02:00
Paul Davis
d0307e10c9 set first selected stripable for control protocols before they are instantiated 2017-06-09 17:55:11 -04:00
Robin Gareus
18db6e3f50 NO-OP: whitespace 2017-06-09 23:25:42 +02:00
Robin Gareus
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
Robin Gareus
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
Robin Gareus
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