13
0
Commit Graph

13235 Commits

Author SHA1 Message Date
7af5de2074 OSC: Add increment fader. 2017-06-22 12:54:03 -07:00
57e7531b1f OSC: allow mixbuses to show 2017-06-22 10:20:48 -07:00
6180c5a5fc Accommodate newly introduced source(s) in our MSVC project (libpbd) 2017-06-22 17:59:16 +01:00
3baf360733 OSC: use internal_to_interface or reverse 2017-06-22 09:21:51 -07:00
a5836e2922 Remove LocaleGuard from Plugin::get_state
Let the plugin implementation of Plugin::add_state use a LocaleGuard if it is
necessary (VST/LV2). This puts the LocaleGuards where they are required but the
LocaleGuards in Session::set/get_state will mean these LocaleGuards are a noop.
They are still useful for documentation purposes and in case the code is called
from a non-Session context at some point.
2017-06-22 10:48:38 +10:00
8b10ed2478 Remove LocaleGuards from LadspaPlugin::set/add_state
String <-> type conversion is being performed by the pbd/string_convert.h API
via PBD::XMLNode so LocaleGuards are not necessary.
2017-06-22 10:48:38 +10:00
a65c3ef28f Remove unnecessary LocaleGuards from VSTPlugin derived classes
VSTPlugin::set_state and VSTPlugin::add_state methods both already contain
LocaleGuard instances.
2017-06-22 10:48:38 +10:00
90f169881f Remove unused ArdourCanvas::HSV constructor
Using stringstream for this is not locale independant. If this constructor is
needed at a later stage it should be reimplemented.
2017-06-22 10:48:38 +10:00
6d35b3c4e4 Remove locale_guard.h from ardour/ardour.h header
Add to source files that use LocaleGuard

Results in far less recompiling when pbd/locale_guard.h changes
2017-06-22 10:48:38 +10:00
5ddd7a58b6 Remove unused pbd/locale_guard.h header from Gtkmm2ext::Barcontroller class 2017-06-22 10:48:38 +10:00
1170bd9043 Remove LocaleGuards from SVAModifier and HSV classes
float <=> string conversion now done using PBD::to_string/string_to so
LocaleGuards are no longer needed.
2017-06-22 10:48:38 +10:00
5103663f13 Remove LocaleGuard from ARDOUR::PannerShell
All Panner implementations using PBD::to_string/string_to for float <=> string
conversion and no longer require a LocaleGuard.
2017-06-22 10:48:38 +10:00
e4b5a84211 Remove LocaleGuard from ARDOUR::Pannable class
string <=> float conversions are using PBD::to_string/string_to and no longer
require a LocaleGuard
2017-06-22 10:48:38 +10:00
00803ca69b Remove LocaleGuards from ARDOUR::Tempo class
All float <=> string conversions are done for PBD::string_to/to_string and no
longer require a LocaleGuard.
2017-06-22 10:48:38 +10:00
8d039d3211 Remove LocaleGuards from ARDOUR::Speakers class
float <=> string conversions are now using PBD::to_string/string_to via XMLNode
for locale independent conversion and these guards are not necessary.
2017-06-22 10:48:38 +10:00
f597711428 Remove LocaleGuards from ARDOUR::Session transport related methods
ARDOUR::AutomationList is no longer using LocaleGuards as float <=> string
conversion is using PBD::to_string/string_to so the reason for adding these
guards as per comment no longer applies.
2017-06-22 10:48:38 +10:00
5c5cfac4a3 Remove LocaleGuard from Session::load_options
PBD::ConfigVariable uses PBD::to_string/string_to methods so this LocaleGuard
is no longer necessary.
2017-06-22 10:48:38 +10:00
58371af68a Remove LocaleGuards from SessionConfiguration class
ConfigurationVariable is now using PBD::to_string/string_to for float <=>
string conversions so LocaleGuard is no longer necessary.
2017-06-22 10:48:38 +10:00
0e3a132097 Remove LocaleGuard from Session::immediately_post_engine method
I think this was only to protect the float <=> string conversion in
Session::setup_click_state related to click gain which is now using
PBD::to_string/string_to and so no longer necessary.
2017-06-22 10:48:38 +10:00
5694d877aa Remove LocaleGuard from ARDOUR::Route class
Route and all members are now using locale independent string <=> float
conversions.
2017-06-22 10:48:38 +10:00
f8abdd9cdf Remove LocaleGuard from ARDOUR::MonitorProcessor state method
All float <=> string conversions are done using PBD::to_string/string_to via
XMLNode and LocaleGuard is not necessary.
2017-06-22 10:48:38 +10:00
1a39da25e4 Remove LocaleGuard from ARDOUR::RCConfiguration class
This presumes that all ControlProtocol implementations either use
PBD::to_string/string_to for float <=> string conversions, which is now the
case.
2017-06-22 10:48:38 +10:00
579d856cc7 Remove LocaleGuards from LuaProc class
All float <=> string conversions are done using PBD::to_string/string_to via
XMLNode so no LocaleGuard is necessary.
2017-06-22 10:48:38 +10:00
3c59d38f1c Remove LocaleGuard from ARDOUR::MidiTrack class
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
482be1410b Remove LocaleGuard from ARDOUR::MidiDiskstream class
There are no float <=> string conversions in MidiDiskstream state methods,
these guards must have been to protect conversions in Diskstream state methods
which are now using PBD::to_string/string_to via XMLNode so no longer need
guarding.
2017-06-22 10:48:38 +10:00
d5cf19d606 Remove LocaleGuards from ARDOUR::ExportFormatSpecification state methods
All float <=> string conversions are performed by PBD::to_string/string_to via
XMLNode.
2017-06-22 10:48:38 +10:00
810c6e7833 Remove LocaleGuard from ARDOUR::Diskstream state method
The float conversion in Diskstream::get_state is now done using
PBD::to_string/string_to via XMLNode::set_property API.

There was no explicit LocaleGuard protecting the string -> float conversion to
remove so it was probably protected by the caller.
2017-06-22 10:48:38 +10:00
9954b476cb Remove LocaleGuard from ARDOUR::AutomationList class
All float conversions are using PBD::to_string/string_to via
XMLNode::get/set_property API
2017-06-22 10:48:38 +10:00
cfd78ab07b Remove LocaleGuard from ARDOUR::Region class
Property conversions <=> string use PBD::to_string/string_to so float
conversions don't need to be protected by a LocaleGuard
2017-06-22 10:48:38 +10:00
ffe0bbe0ab Remove LocaleGuard from ARDOUR::AudioRegion state methods
float <=> string conversions are performed using PBD::to_string/string_to via
XMLNode
2017-06-22 10:48:38 +10:00
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
2e4277ad7b Remove LocaleGuard from AudioFileSource::get_state
Not necessary when using XMLNode::set_property API
2017-06-22 10:48:38 +10:00
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
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
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
3b718c60de OSC: Accept mixed parameter types for touch 2017-06-21 15:18:56 -07:00
940be0cbb9 compilation requires <stdint.h> 2017-06-21 14:19:21 -04:00
ed4909bd59 Some ToDo notes about AutomationTypes 2017-06-21 18:14:33 +02:00
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
55df5b39bc Prepare removal of redundant get_user/set_user API. 2017-06-21 18:13:41 +02:00
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
d85ce60158 Fix VST default value. query once at instantiation time. 2017-06-21 18:13:29 +02:00
7ab15def2b Consolidate ParameterDescriptor settings+ranges 2017-06-21 18:13:26 +02:00
394bd8f428 Set default interpolation type (for new lanes) 2017-06-21 18:12:58 +02:00
16624f3139 Add API to compute parameter delta, depending on AutomationType 2017-06-21 18:12:55 +02:00
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
8dcc28c9ad Remove duplicates from ControlList 2017-06-21 18:12:31 +02:00
3d15499cda Clamp values in ControlList 2017-06-21 18:12:29 +02:00
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
36e32e5641 Remove separate ControlList min/max/default, use ParameterDescriptor. 2017-06-21 18:12:23 +02:00
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
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
2627cd414c Remove old API 2017-06-21 18:12:11 +02:00
ea1f27162b Fix/update maximum gain computation 2017-06-21 18:12:07 +02:00
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
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
9f37396315 Format boolean parameter values 2017-06-21 18:11:43 +02:00
86dea93299 Tweak value-as-string dB and float decimals printing 2017-06-21 13:16:58 +02:00
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
31c6f66d9b Fix duplicate Gain+Trim AutomationLists in session file. 2017-06-21 13:15:34 +02:00
fd3bd35203 OSC: value not initialized soon enough 2017-06-20 13:11:59 -07:00
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
c02a3413e1 Move implementation out of header file 2017-06-17 15:52:00 +02:00
f80958e168 Add Lua bindings to query all stripables 2017-06-17 04:37:14 +02:00
591d75f1d2 Fix stripable order for new strips & master-order 2017-06-17 04:37:05 +02:00
140c511d2c Add method to ensure Stripable sort constrains (for UI use) 2017-06-17 04:36:32 +02:00
10db824461 Use Stripable::Sorter in libs 2017-06-17 04:36:28 +02:00
867a0f5228 Move StripableSorter into libardour 2017-06-17 04:36:22 +02:00
0331a9a233 OSC: plugin feedback mathfix - 0 param (meter) checked for. 2017-06-16 11:33:02 -07:00
9c629c0c76 Fix region-gain offset when separating ranges 2017-06-14 22:47:32 +02:00
7c84deb2c4 OSC: Add send/plugin page values to GUI 2017-06-14 10:28:45 -07:00
d76e6d84c7 OSC: save and restore send/plugin page size. 2017-06-14 08:18:43 -07:00
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
22bddf5434 Special-case VCA at 0 (-inf dB), force gain slaves to -inf dB 2017-06-14 15:21:16 +02:00
e0a1c7690a Merge event control lists when disconnecting a master-ctrl 2017-06-14 02:40:09 +02:00
8b917c4c16 Add infrastructure to merge ControlLists 2017-06-14 02:40:09 +02:00
9c0f6ea948 OSC: Allow set_surface to set send and plugin page sizes. 2017-06-13 16:56:10 -07:00
8e6f71b8c1 Apply master-value to automation on disconnect. 2017-06-13 20:57:37 +02:00
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
b34d891b23 amend 11ba1854 -- locked curve-evaluation is not public 2017-06-13 18:09:56 +02:00
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
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
b34f2e2c38 Fix nasty duplicate XML node 2017-06-13 01:08:30 +02:00
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
ae4b6316f1 Implement basic AU parameter-printing
(don't leave buf uninitialized)
2017-05-25 13:49:18 +02:00
63a71c597a Include ParameterDescriptor in read-only control output 2017-05-25 13:49:18 +02:00
2c40b46ca9 OSC: fix return value for successful touch 2017-05-24 13:58:49 -07:00
1e95ccf07d OSC: Added lpf and hpf controls for freq,enable and slope 2017-05-24 07:37:21 -07:00
f493b24e3e OSC add feedback for extra comp and eq controls 2017-05-23 17:16:42 -07:00
2f1ad4d9a2 OSC - make /strip/list accept a parameter like everything else 2017-05-23 15:14:31 -07:00
f9b256044f Remove old jack_utils.h header that was moved to the JACK backend
Also remove a related test that has not been part of the unit tests since the
move (years).
2017-05-23 14:32:15 +10:00
nick_m
39e7e11b5e Sort tempo map after legacy sections have been assigned a pulse 2017-05-23 11:41:36 +10:00
nick_m
b886c1dcfa Tempo sections with a BBT start XML node are never ramped 2017-05-23 09:54:30 +10:00
4d927c6bd4 Use braces in BasicUI::jump_by_bars() 2017-05-23 09:13:27 +10:00
7fe188ec92 Use braces in BasicUI::jump_by_seconds() 2017-05-23 09:13:27 +10:00
df185e575e Use correct variable in BasicUI::jump_by_seconds 2017-05-23 09:13:27 +10:00
nick_m
1a31134d38 Fix failure to laod old tempo maps
I suspect this happened after an api change.
Now, just use the position pair instead of a whole new variable.
2017-05-23 05:30:39 +10:00
b3fb75fead OSC: Further fixes so multiple controls can touch at once. 2017-05-20 10:17:31 -07:00
ab069b1372 OSC: fix c++98 mistake 2017-05-20 09:09:01 -07:00
9fc65b274e Fix libhid compile with /recent/ libc (GNU_SOURCE)
- strtok_r
- strdup
- wcsdup
2017-05-20 12:39:49 +02:00
6926b7eb75 OSC: Catch case of surface sending fader move before touch 2017-05-19 15:48:36 -07:00
84e1a216bc OSC: Add fake timeout based touch 2017-05-18 15:32:12 -07:00
d3738b087e MCP: Fix issue with strip "select" buttons that stayed stuck on.
* Depending on individual strips to watch the selection property is prone to failure.
  * Stripable_selection_changed() is called when a selection operation is completed.
2017-05-17 15:55:43 -05:00
60cc2823f3 MCP: map the well-known EQ knobs more explicitly, not heuristically. 2017-05-17 15:53:14 -05:00
f2aac0bcae OSC: Add /strip/fader/touch 2017-05-15 19:38:41 -07:00
f3f1816899 remove unused variable 2017-05-15 19:38:41 -07:00
7e791981f0 OSC: added automation name feedback 2017-05-15 07:43:59 -07:00
fee4b7b3ea OSC: combine two identical if() statements 2017-05-15 07:43:59 -07:00
b9bbea7174 It might not be obvious why... but 'ARDOUR::ControlProtocol::name()' needs to be a virtual function
Basically, libardour is calling functions from libardour_cp and vice versa. For example, libardour needs 'ARDOUR::ControlProtocol::name()' whereas ardour_cp needs 'ARDOUR::Route::soloed()' and various others. Ordinarily, this would require each library to get built before the other one! :-(

To get around this (in MSVC at least) one of the libraries must be forced to use late binding (e.g. by declaring its functions as 'virtual'). It looks like this is already being done for most of the other functions from 'ARDOUR::ControlProtocol', so let's do it for this function too...
2017-05-15 14:46:34 +01:00
0e4ddcf506 Fix out-of-bounds waveform image rendering.
With large sample-rates and high-zoom-level the minimal request-size
or at least 1/10sed can exceed the max image size supported by cairo.
e.g. @192kSPS;  100ms = 19200 samples.
 * 1 sample/pixel, * 2 (left/right) = 38400px > 2^15px.
2017-05-14 20:37:58 +02:00
Nil Geisweiller
40f3efa3aa Add note name parser to convert to midi note number
Supports i18n, is case and whitespace insensitive for more resilent parsing.
2017-05-14 18:13:07 +02:00
Edgar Aichinger
278d5bdab2 update german translation 2017-05-14 15:29:27 +02:00
3d26a29e8a Sanitize "well-known" ctrl API 2017-05-14 00:17:11 +02:00
3e2004aa73 OSC: make /*/automation more generic so other controls can be easily added 2017-05-13 14:18:29 -07:00
82e6de3a3f The #end should be #endif 2017-05-13 08:43:33 -07:00
6a28e02799 More tweaks to FP8 layout for 32C 2017-05-13 07:54:08 -05:00
b92f75481e Fix copy+paste error for mb32c filter freq. 2017-05-13 07:27:08 -05:00
3efe5bde5f Update FP8: new controllables, clarify 32C bell-shape labels 2017-05-13 02:02:54 +02:00
257cc06cfc amend efc2660f, well-known stripable controls:
* consistent hpf/lpf controllables (actually hi/lo bell in 32C)
* HPT, LPF frequencies are exposed as EQ band
* don't expose filter ctrl for mixbuses/master
2017-05-13 02:02:54 +02:00
def9e110b7 Update Session::writable() during Session::save_as() when switching to copy
Loading a read only Session then making a copy with Save As and switch was
not allowing new Session to be saved as writable state was not updated.

Resolves: #7352
2017-05-13 09:02:02 +10:00
b23d7d9170 change ControlProtocolManager protocol mutex into a RW lock.
Probably not gaining much in terms of contention, but there's really no reason to be using a mutex
2017-05-12 20:09:40 +01:00
7021d02782 don't actually use a method from libardourcp inside libardour; use a PBD::Signal to avoid linker issues 2017-05-12 17:49:09 +01:00
32c3db5c59 OSC: GUI label change 2017-05-12 07:29:29 -07:00
774ebc42e3 OSC: Create new surface struct for ALL incoming messages 2017-05-12 07:29:29 -07:00
eb3f50e15c change the way ControlProtocols (control surfaces) are notified and handle Stripable selection changes
The Editor continues to notify them, but via a direct call to ControlProtocolManager, not a signal.
The CP Manager calls the ControlProtocol static method to set up static data structures holding
selection info for all surfaces and then notifies each surface/protocol that selection has changed.
2017-05-12 14:51:39 +01:00
efc2660fec MCP: Mixbus32C: Restore missing filter controls to the Dyn page. 2017-05-12 15:44:01 +02:00
8ba868e933 MCU: F-keys are reserved only for user-defined actions; no need for explicit handling. 2017-05-12 15:43:55 +02:00
e6e2b6800e MCP: Momentarily light buttons when they are used to trigger a defined action.
*This is mainly for F-keys
*If a button is not assigned an action, it will not light,
   hopefully indicating to the user that it is unmapped.
2017-05-12 15:43:52 +02:00
6f298b1a83 Mackie control panel: display the profile name when any button action is changed. 2017-05-12 15:43:44 +02:00
471ed5af4e OSC: also init unsaved params on session load. 2017-05-11 13:58:25 -07:00
a51e82a29e OSC: Initialize all surface struct values on creation 2017-05-11 10:52:38 -07:00
feab5ef91e re-order per-object and global selection change signals 2017-05-11 18:29:03 +01:00
d42da9046e OSC: Actually set feedback on first /strip/command 2017-05-11 08:21:40 -07:00
5830ddfec2 emit per-Stateful PropertyChanged signal when Stripables become selected 2017-05-11 10:04:28 +01:00
0124c2e99d OSC: fix manual port setting to take effect on first incoming message 2017-05-10 14:14:27 -07:00
c0b54e868f Fix another possible case of illegal use of reserved port-names
Session::io_name_is_legal() is used for Routes and Processors:
Route::set_name(), ProcessorBox::rename_processor() and
and Route::ensure_track_or_route_name() -- it is not used for actual
I/O objects.
2017-05-10 20:29:08 +02:00
a82cfd2461 Fix reserved ports:
* "Click" is not translated
* add auditioner and FaderPort ctrl surfaces.
2017-05-10 20:29:08 +02:00
a76ee7a4d8 OSC: bind should be boost::bind 2017-05-10 09:56:45 -07:00
c8f805ef7c OSC: Automation feedback should match command 2017-05-10 09:42:48 -07:00
6c97d70127 OSC: change function name to be better description 2017-05-10 09:21:19 -07:00
50e362ffd3 OSC: simplify code. 2017-05-10 08:02:03 -07:00
bcbdd858fa Selection::get_stripables() needs to recurse into an Automatable's child Automatables when looking for for an Automation Control
It also needs renaming (to come)
2017-05-10 08:52:55 +01:00
86149840a1 resolve ambiguity 2017-05-10 05:00:03 +02:00
e8387e101f Enums are not Classes in C++98 2017-05-10 04:29:41 +02:00
ac03e4a937 Bump VST param-name length limit to 128 bytes and centralize definition
The official VST spec says 8 bytes, JUCE uses 24 + 1, and there's
anecdotal evidence that some VSTs use up to 100 (which apparently works
in many hosts).
2017-05-10 00:26:02 +02:00
82fed14f41 OSC: Fix select fader automation play feedback as well fixes issue #7160 2017-05-09 14:10:49 -07:00
a12d4c87c6 OSC: Get gain feedback to show with automation Play. 2017-05-09 13:38:57 -07:00
c3c7dfd3e8 OSC: Add Automation mode feedback to /strip 2017-05-09 12:40:20 -07:00
155401b875 OSC: removed letter automation modes to not conflict with feedback 2017-05-09 11:52:21 -07:00
fe5a778535 OSC: Propagate return value so debug shows errors 2017-05-09 09:05:30 -07:00
56ebea48c0 OSC: set Automation mode for fader 2017-05-09 07:55:32 -07:00
f4d62a2a8e OSC: automation mode get strip (step 2) 2017-05-09 07:55:32 -07:00
9b4d58393d OSC: Add framework for /*/automation mode 2017-05-09 07:55:32 -07:00
37a4987dab Ardour does support VST's audioMasterGetProductString, return true; 2017-05-09 16:31:42 +02:00
4e08f5c169 iterator std::set::erase (iterator) is C++11 2017-05-08 16:30:54 +02:00
2ed08f0771 fix copy-n-paste error 2017-05-08 11:03:35 +01:00
0596032b36 fix logic when removing routes
Selection change and re-order signals are distinct.
2017-05-08 10:56:24 +01:00
7b2063d62d remove misc. debug output 2017-05-08 10:41:12 +01:00
7d523dc43c when removing a Route from Session, remove it from CoreSelection and signal that change if necessary 2017-05-08 10:41:12 +01:00
24b8004bf7 when removing Stripables from CoreSelection by ID, be sure to remove all possible entries in the Selection
A Stripable may have itself plus zero-to-N automation controls in
CoreSelection.
2017-05-08 10:41:12 +01:00
005fa9176a allow Session to call Session::remove_stripable_by_id() 2017-05-08 10:40:27 +01:00
6bcd543bf2 Semaphores need to have a unique name -- fixes #7341
On Windows (and OSX) semaphores are named. If the name matches an existing
semaphore, it is re-used and not re-initialized. In case of multiple
LV2-plugins each with a worker-thread this can lead to a deadlock.
2017-05-07 02:02:30 +02:00
e73755f8fb really fix opening session-archives -- amend 1f80f059be 2017-05-06 22:05:26 +02:00
1f80f059be Fix opening session-archives 2017-05-06 18:31:18 +02:00
5d683eaeca NO-OP: whitespace and FSF address 2017-05-06 15:11:53 +02:00
d02cf631c7 Factor RMS normalization by sqrt(2); match sine peak 2017-05-06 15:09:14 +02:00
23b3147598 Accommodate newly introduced source(s) in our MSVC project (libardour) 2017-05-06 13:34:39 +01:00
e8e68fd8c6 MSVC won't allow us to erase an item referenced by const_iterator 2017-05-06 13:33:38 +01:00
dea25f2692 The new class 'ARDOUR::CoreSelection' needs to be exportable (since it gets used outside of libardour) 2017-05-06 13:32:20 +01:00
1eb18f8e27 OSC: make some more paths work with or without a parameter. 2017-05-05 15:02:22 -07:00
379ad3357d OSC: remove debug output. 2017-05-05 15:02:22 -07:00
35a9facdae add missing files from selection development branch(es) 2017-05-05 19:25:35 +01:00
0c035778e1 libardour now has CoreSelection object to manage selection status of Stripables and AutomationControls 2017-05-05 18:56:25 +01:00
ccd19ed061 extend PBD::ID API to allow construction and operator== using uint64_t
This is theoretically dangerous, because a PBD::ID is supposed to be unique, and this new constructor
cannot guarantee that. However, the same danger already exists with the std::string-based constructor
2017-05-05 18:56:25 +01:00
417f63a29e FP8: use new libardour API 2017-05-05 17:08:42 +02:00
d2c8d357da Move special-cased FP8 mute-state into libardour 2017-05-05 16:47:25 +02:00
8288fa40b9 FP8: ignore inactive muted tracks w/mute-clear 2017-05-05 15:36:08 +02:00
3a75e7c53b FP8: solo+mute undo
Eventually this should be moved into libardour: Mixer undo history.
the tentative solution is specifically ifdef'ed FP8_MUTESOLO_UNDO.
2017-05-05 15:26:52 +02:00
337b100b47 Fix converting v4 monitor state -- amend 8a6d30377
It looks like MonitorControl::_monitoring is unused and should be removed.
The actual value is Evoral::Control::_user_value
2017-05-05 14:31:19 +02:00
401eefec1c remove cruft (unused UI::ui_scale) 2017-05-05 14:00:30 +02:00
a3c70696b6 OSC: personal monitoring, fix crash and minor bugs 2017-05-04 15:52:09 -07:00
0d7e9987b3 fix/amend previous commit. 2017-05-04 23:06:52 +02:00
3af9fdad0a Don't save "end-is-free" with templates 2017-05-04 23:00:21 +02:00
ec333406f7 Lua bindings for "end-is-free" (automatic session-end location marker) 2017-05-04 21:08:17 +02:00
8a6d303778 Convert old v4 Track monitoring session-state (untested) 2017-05-04 17:19:55 +02:00
c784f70966 OSC: Add /jog/mode/name 2017-05-03 21:38:52 -07:00
16e545ad73 OSC: Fix puctuation 2017-05-03 21:36:58 -07:00
2cb54dec60 OSC: arrange modes in a more logical order. 2017-05-03 18:19:45 -07:00
2bbf83e109 OSC: Add multimode /jog command 2017-05-03 16:33:33 -07:00
2f37885e4b MIDI learn on ctrl + middle-click only (not ctrl + other mods + btn2).
This fixes various other operations that use ctrl + btn2.
e.g. ctrl+alt+btn2 temporary all un/solo/mute.
2017-05-04 00:35:56 +02:00
a55fb928a7 Lua bindings to set group color 2017-05-03 17:53:00 +02:00
b5c6f06a99 Move RouteGroup color into libardour.
This allows to change it from scripts and surfaces and consolidates code.
2017-05-03 17:53:00 +02:00
b45a3c8164 NO-OP: whitespace 2017-05-03 17:53:00 +02:00
2abefde534 OSC scrub, fix numbers to work with usec rather than msec. 2017-05-01 13:53:03 -07:00
e5182f3eb4 OSC: fix scrub to not use boost ptime. 2017-05-01 13:45:47 -07:00
5f06ae43d8 OSC: add /scrub function 2017-05-01 07:08:02 -07:00
8229124078 Fix vari-speed and non-locked slave modes
A transport-speed-change is no reason to skip processing.

Prior to this change cannot_process() silently skipped in the process
cycle of the speed-change (which may have been every process-cycle),
without moving the transport or doing any processing.
2017-04-30 01:22:25 +02:00
a283784cce FP8: channel-navigation/scroll select track on encoder press 2017-04-29 12:38:53 +02:00
de45ac0e76 FP8: snap-to scroll tracks, both editor+mixer 2017-04-29 12:38:53 +02:00
cba2543131 NO-OP: whitespace 2017-04-27 21:09:12 +02:00