Commit graph

14155 commits

Author SHA1 Message Date
Tim Mayberry
11b4da078a Remove LocaleGuard from ARDOUR::AudioTrack class
The gain property float <=> string conversion is now performed using
PBD::to_string/string_to via XMLNode
2017-06-22 10:48:38 +10:00
Tim Mayberry
2e4277ad7b Remove LocaleGuard from AudioFileSource::get_state
Not necessary when using XMLNode::set_property API
2017-06-22 10:48:38 +10:00
Tim Mayberry
47b1f0869b Remove LocaleGuard from ARDOUR::AudioDiskstream state methods
There are no float <=> string conversions and they are all now performed using
PBD::to_string/string_to via XMLNode
2017-06-22 10:48:38 +10:00
Tim Mayberry
eb5161b601 Remove LocaleGuard from ARDOUR::IO class state methods
There are no float <=> string conversions that require a LocaleGuard and all
conversions are performed using PBD::to_string/string_to via XMLNode
2017-06-22 10:48:38 +10:00
Tim Mayberry
6ab970efa3 Remove LocaleGuard from PBD::Controllable state methods
These are no longer necessary as float <=> string conversion is handled by
locale independent PBD::to_string/string_to via XMLNode::get/set_property
2017-06-22 10:48:38 +10:00
Len Ovens
3b718c60de OSC: Accept mixed parameter types for touch 2017-06-21 15:18:56 -07:00
Paul Davis
940be0cbb9 compilation requires <stdint.h> 2017-06-21 14:19:21 -04:00
Robin Gareus
ed4909bd59 Some ToDo notes about AutomationTypes 2017-06-21 18:14:33 +02:00
Robin Gareus
ce059e2d66 Remove internal_to_user/user_to_internal API
Also GainControl can just use the AutomationControl's implementation of
get_user_string()
2017-06-21 18:13:46 +02:00
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