Commit Graph

14436 Commits

Author SHA1 Message Date
Robin Gareus
36e32e5641 Remove separate ControlList min/max/default, use ParameterDescriptor. 2017-06-21 18:12:23 +02:00
Robin Gareus
cb48bb0e1c remove min/max unbound -- LADSPA special case.
This explicit case should never have existed in the first place.

Plugins can always implicitly exceed the range and are expected to
cope with out-of-range values (e.g. meters when fed with a peaking signal
may return an out-of-bounds value)
2017-06-21 18:12:20 +02:00
Robin Gareus
fe83e1e2ed Move logarithmic property into Evoral, add rangesteps
This allows complete mathematical description of a given parameter
and parameter values.

Semantic type abstraction is reserved for Ardour::ParameterDescriptor.
2017-06-21 18:12:14 +02:00
Robin Gareus
2627cd414c Remove old API 2017-06-21 18:12:11 +02:00
Robin Gareus
ea1f27162b Fix/update maximum gain computation 2017-06-21 18:12:07 +02:00
Robin Gareus
567c0a8f53 Switch to PBD control-math and prefer Controllable API
Note: Control-surfaces should always use interface_to_internal()
and internal_to_interface().
2017-06-21 18:12:04 +02:00
Robin Gareus
e91b80eb85 Centralize control-parameter math functions in libpbd.
Functions formerly in ardour/util.h and some more functions.
The main motivation is libevoral which can use libpbd but not libardour.

The eventual goal is to consolidate various different interpolation,
scaling and deflection methods.
2017-06-21 18:12:01 +02:00
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