Commit graph

12996 commits

Author SHA1 Message Date
Robin Gareus
55df5b39bc Prepare removal of redundant get_user/set_user API. 2017-06-21 18:13:41 +02:00
Robin Gareus
8cd8cb1650 Temporary session-format compatibility (revert before release)
Saving the new ControlList interpolation methods (enum) breaks loading
the session in older version. The session-format version will
need to be increased.

Until then:
 * Fader automation + region gain envelope uses linear fades
 * The automation-line visible in the GUI does not match the actual fade
   (the y-axis is log/exp-scale, the fade is linear)
 * Adding new points on the line is not using the correct initial value
 * Custom changes of interpolation mode are not available

Neither of these issues is a regression.
2017-06-21 18:13:36 +02:00
Robin Gareus
d85ce60158 Fix VST default value. query once at instantiation time. 2017-06-21 18:13:29 +02:00
Robin Gareus
7ab15def2b Consolidate ParameterDescriptor settings+ranges 2017-06-21 18:13:26 +02:00
Robin Gareus
394bd8f428 Set default interpolation type (for new lanes) 2017-06-21 18:12:58 +02:00
Robin Gareus
16624f3139 Add API to compute parameter delta, depending on AutomationType 2017-06-21 18:12:55 +02:00
Robin Gareus
37905d82a6 Centralize Parameter scaling
This exposes an AutomationType dependent abstract version of
inteface_to_internal(), internal_to_interface().
2017-06-21 18:12:45 +02:00
Robin Gareus
8dcc28c9ad Remove duplicates from ControlList 2017-06-21 18:12:31 +02:00
Robin Gareus
3d15499cda Clamp values in ControlList 2017-06-21 18:12:29 +02:00
Robin Gareus
d6c47def09 Implement additional ControlList interpolation methods.
The Control and ControlList uses the raw value (eg. coefficient for gain,
Hz for frequencies) and those Lists are stored in existing sessions.

In the vast majority of cases interpolating automation values using exp/log
scale for dB, freq makes more sense -- it's also what the fader does.

Adding additional interpolation methods is future proof (we might at allow
to even add different methods per automation point (to the next) like other
DAWs do.

Currently it's mainly used in preparation for consistent GUI automation-
lanes. Between 2 points there's always a visual straight line.
2017-06-21 18:12:26 +02:00
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