summaryrefslogtreecommitdiff
path: root/libs/ardour/amp.cc
AgeCommit message (Collapse)Author
2018-07-09Remove global declick APIRobin Gareus
De-click will be per disk-reader, latency compensated and buffer-size independent. Cue-monitoring should not be affected by de-click.
2017-11-12Add API to allow buffer offsets when applying gainRobin Gareus
2017-10-04Clean up State API:Robin Gareus
* Processor implement get_state(), classes derived from Processor implement protected ::state() -- as documented in processor.h * likewise for Route, Track: make ::state() a protected interface * removal of "full_state", use explicit "template_save" * use RAII/Unwind to skip saving automation-state
2017-09-19Amend c8a9b28d3 and 40aebce. Fix gain automation edge-cases:Robin Gareus
* drop Trim/Fader automation for bypassed processor * Trim/Fader automation for Busses is always active when rolling
2017-09-18remove getter for Amp::_apply_automation_gain; reset member to false after ↵Paul Davis
use, and true after ::setup_automation_gain runs successfully
2017-09-18globally change all use of "frame" to refer to audio into "sample".Paul Davis
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode and video in order to keep the legible
2017-07-24Update amp.cc to use gain_t for maths (no more double)Robin Gareus
Also tweak threshold for LPF, assume gain-differences < 10-e5 as no-change
2017-07-16Remove unused API and a never used execution-branchRobin Gareus
2017-07-16Consistent Automation evaluation:Robin Gareus
Rule #89: The *owner* of each automation-control is responsible to evaluate automation of automated automation-controls (and emit Changed() signals to notify the GUI and slaved controls). This can happen during run(), when the Processor evaluates automation (eg. PluginInsert does that), but needs to regardless, every cycle. Emit Changed signal for GainControl This follow the same concept as PluginInsert: The Changed signal is called on demand when evaluating automation.
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-03Apply VCA master gain automation to Amp (Fader, Trim)Robin Gareus
2017-04-19Remove unused header include in ARDOUR::Amp source fileTim Mayberry
2017-04-19Use XMLNode::set_property in ARDOUR::Amp classTim Mayberry
2017-04-16Fix indentation in ARDOUR::Amp::set_stateTim Mayberry
2017-01-21use SSE/AVX for scaling gain automation buffer via masters' valuePaul Davis
2017-01-21Amp is the one place where we generate a per-sample vector for automation ↵Paul Davis
playback. Scale this by the masters' value(s) if appropriate
2016-12-03Remove Evoral::MIDIEventDavid Robillard
It is slightly questionable whether type specific methods like velocity() belong on Event at all, these may be better off as free functions. However the code currently uses them as methods in many places, and it seems like a step in the right direction, since, for example, we might some day have events that have a velocity but aren't stored as MIDI messages (e.g. if Ardour uses an internal musical model that is more expressive). In any case, the former inheritance and plethora of sloppy casts is definitely not the right thing.
2016-07-14enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.hPaul Davis
2016-06-25major internal plugin & processor API change:Robin Gareus
Pass current (latency compensated) cycle times to plugin. This fixes time-reporting to plugins and also fixes automation and when bouncing (the session->transport* is not valid) etc.
2016-06-21always run amp/trim LPFRobin Gareus
This fixes "clicks" when switching fader automation from "manual" to "play/touch" while the transport is rolling.
2016-05-31implementation side of Controllable::get_user_string() with const argPaul Davis
2016-05-31probably get the design of VCAs basically correct: use a per-master ratio modelPaul Davis
See comments in the code for a bit more detail
2016-05-31vca design: gain controls cannot silently "merge" the master(s) value into ↵Paul Davis
their own
2016-01-25change exposed type of various objects' gain controls; remove Amp::gain() as ↵Paul Davis
a shortcut
2016-01-18working version of new gain control designPaul Davis
2016-01-18move Amp::GainControl out into its own source module and out of AmpPaul Davis
2016-01-18change ownership of the AutomationControl used by Amp.Paul Davis
It used to be owned by Amp. Now it is owned by Amp's owner
2016-01-02change Controllable::set_value() API to include grouped control consideration.Paul Davis
This also removes Route::group_gain_control() and associated machinery. Not yet tested with Mackie or other surfaces. More work to done to start using the group capabilities, and also potentially to add or derive more controls as RouteAutomationControls
2015-12-27proper display name for Monitor ProcessorRobin Gareus
2015-10-21Add AutomationControl::set_value_unchecked() and ↵Paul Davis
AutomationControl::writable() and use them. Classes derived from AutomationControl now check ::writable() in their ::set_value() methods to ensure that they do not attempt to overwrite data sent to them while automation playback is underway.
2015-09-21processor-box: explicitly check for "Amp" (Fader)Robin Gareus
2015-09-16Revert "add an Amp to Delivery, remove it from Send, make use of this in ↵Paul Davis
various ::run() methods" This reverts commit 601a34521c2ce1d0167ed2f3c66f2fa6eeeb6b8e.
2015-09-15add an Amp to Delivery, remove it from Send, make use of this in various ↵Paul Davis
::run() methods Delivery::_amp now will handle monitor-related delicks assuming the Session::config.get_use_monitor_fades() is true.
2015-05-27fader: start muted, ramp up/interpolate to targetRobin Gareus
2015-04-26wrap midi negative gain for midi-velocityRobin Gareus
ignore polarity invert, scale_velocity() otherwise claps the factor to zero.
2015-04-26relax gain LPF to 25Hz.Robin Gareus
2015-04-26update amp for negative (polarity-invert) gainRobin Gareus
fixes monitor-section “inv”
2015-04-25midi velocity [fader] automationRobin Gareus
2015-04-25Amp: allow to disable midi velocityRobin Gareus
2015-04-25prepare trim automationRobin Gareus
2015-04-24Amp control: power-scale (fader) and dB-scale (knob)Robin Gareus
2015-04-22Initial Gain Coefficient tweaksBen Loftis
1) Disambiguate 1.0 to GAIN_COEFF_UNITY, and 0.0 to GAIN_COEFF_ZERO 2) Add GAIN_COEFF_SMALL which replaces SMALL_SIGNAL (-140dB) 3) GAIN_COEFF_SMALL can used to avoid interpolating towards -inf on a db scale 4) GAIN_COEFF_SMALL is used to detect very small (denormal?) gains and memset to zero
2015-04-07linear declickRobin Gareus
2015-04-07low-pass filter gain-fader.Robin Gareus
fixes various fader zipper noise issues. It voids sample accuate fader automation (the fader-gain is low-pass filtered at 10Hz). Yet all musical purposes this makes a lot more sense than sample accuracy anyway.
2015-04-05децибелRobin Gareus
2014-12-04Make gain controls step by roughly 1.0/0.1 dB.David Robillard
Shoot for roughly 30 steps for all controls. Always keep sensible step information in ParameterDescriptor and just convert for the UI. This is a little weird, but it's less weird than it was before, and works.
2014-12-01Replace half-baked param metadata with descriptor.David Robillard
Among other things, this means that automation controls/lists have the actual min/max/normal/toggled of parameters, and not those inferred from the Parameter ID, which is not correct for things like plugin parameters. Pushing things down to the Evoral::ParmeterDescriptor may be useful in the future to have lists do smarter things based on parameter range, but currently I have just pushed down the above-mentioned currently used attributes.
2014-07-18tweaks for the monitor section. refactoring of some buttons, using new ↵Ben Loftis
ArdourKnob instead of VolumeController. New ArdourDisplay shows a controllables user value, and provides support for preset values (hardcoded at present). Further refactoring to come, so that ArdourWidgets are derived from a common class. Controllable now has more responsibility for scaling between internal, user, and interface (knob percent) values. This also needs more refactoring and might have some unintended consequences. tested with audio and nothing seems amiss, yet.
2014-05-26apply gain automation on bounce - fixes 5887Robin Gareus
2014-02-19clear up some stupid thinking in Amp regarding the way the underlying ↵Paul Davis
AutomationControl/Controllable gets set when Amp::set_gain() is called