summaryrefslogtreecommitdiff
path: root/libs
AgeCommit message (Collapse)Author
2017-06-14Special-case VCA at 0 (-inf dB), force gain slaves to -inf dBRobin Gareus
2017-06-14Merge event control lists when disconnecting a master-ctrlRobin Gareus
2017-06-14Add infrastructure to merge ControlListsRobin Gareus
2017-06-13OSC: Allow set_surface to set send and plugin page sizes.Len Ovens
2017-06-13Apply master-value to automation on disconnect.Robin Gareus
2017-06-13Write inverse master automation.Robin Gareus
* 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-13amend 11ba1854 -- locked curve-evaluation is not publicRobin Gareus
2017-06-13FP8: use proper API to detect automation-playbackRobin Gareus
The custom code didn't take touch + touching into account when another surface was touching automation.
2017-06-13Fix another thinko in 9581cb26 + 02b087c5 (VCA gain automation)Robin Gareus
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-13Fix nasty duplicate XML nodeRobin Gareus
2017-06-13Remember subgroup-busRobin Gareus
2017-06-13Allow group gain sharing + VCA againRobin Gareus
2017-06-12OSC: select channel plugin support with paging.Len Ovens
2017-06-12Fix relative grouped + VCA slaved gainRobin Gareus
2017-06-12Fix a compiler warning (optimized builds)Robin Gareus
2017-06-12Remove unnecessary temporary variables in MasterRecord::set_stateTim Mayberry
XMLNode::get_property only modifies the argument if the property is found and conversion is successful.
2017-06-12VCA/SlavableAutomationCtrl re-design:Robin Gareus
* 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-11a-EQ: Tweak knob layout to be less confusingDamien Zammit
2017-06-11Fix thinko in 9581cb26 - scratch-buffer can't be used recursively.Robin Gareus
2017-06-10OSC: add option to send /reply instead of #reply (OSC1.0 compat)Len Ovens
2017-06-10Emit Session::Located only if _engine.transport_frame() is up to dateJohannes Mueller
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-10Make Session::backend_sync_callback() emit Session::LocatedJohannes Mueller
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-10semantically more correct ordering of previous commitPaul Davis
2017-06-10linker-agnostic version of recent commit to get ControlProtocol selection ↵Paul Davis
state set correctly
2017-06-10Implement slaved boolean automation and update mute special-caseRobin Gareus
2017-06-10Restore VCA Automation stateRobin Gareus
2017-06-10amend a1b4f9b8ab - handle disconnecting from all mastersRobin Gareus
2017-06-09set first selected stripable for control protocols before they are instantiatedPaul Davis
2017-06-09NO-OP: whitespaceRobin Gareus
2017-06-09Fix deletion of VCA with slaved controls.Robin Gareus
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-09Remove Automatable::value_as_string API from libardourRobin Gareus
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-09Prepare to eventually drop Automatable::value_as_string()Robin Gareus
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-09a-EQ: Revert one of the previous changesDamien Zammit
One of the previous changes was not a typo, revert it.
2017-06-09Add a method for obtaining the frame position of beat/whatever zeronick_m
2017-06-09Tempo lines display subdivisions correctly over a tempo changenick_m
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-09Fix reversed logic in legacy tempo secton detectionnick_m
2017-06-08Do not duplicate note id in copy constructornick_m
This fixes selection undo after copy-dragging notes, but there are probably other cases where duplicate note ids may cause problems.
2017-06-08Remove debugging from TempoTest::qnDistanceTestRamp ()nick_m
2017-06-08Fix uninitialised tempo section variablenick_m
Should fix 7390.
2017-06-08a-EQ: DSP bugfixDamien Zammit
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-06OSC: add optional paging to sends in select.Len Ovens
2017-06-06Fix a-EQ when parameter changes are very slowNil Geisweiller
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-03Apply VCA master gain automation to Amp (Fader, Trim)Robin Gareus
2017-06-03Add infrastructure for evaluating VCA automation curvesRobin Gareus
2017-06-03amend 67f9f6fd: no recursive ReaderLockRobin Gareus
2017-06-03add const-ness: Evaluating a curve does not change it.Robin Gareus
Note that the ControlList's lock and cache are already mutable.
2017-06-03Add a scratch buffer for automation.Robin Gareus
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-03NO-OP: whitespaceRobin Gareus
2017-05-31OSC: Some surfaces may use float for ssid. Accept this too.Len Ovens
2017-05-31OSC: check controllable exists before usingLen Ovens