// used for low-pass filter denormal protection
#define GAIN_COEFF_TINY (1e-10) // -200dB
-Amp::Amp (Session& s, const std::string& name, boost::shared_ptr<AutomationControl> gc, bool control_midi_also)
+Amp::Amp (Session& s, const std::string& name, boost::shared_ptr<GainControl> gc, bool control_midi_also)
: Processor(s, "Amp")
, _apply_gain(true)
, _apply_gain_automation(false)
*/
class LIBARDOUR_API Amp : public Processor {
public:
- Amp(Session& s, const std::string& display_name, boost::shared_ptr<AutomationControl> control, bool control_midi_also);
+ Amp(Session& s, const std::string& display_name, boost::shared_ptr<GainControl> control, bool control_midi_also);
std::string display_name () const { return _display_name; }
void set_display_name (const std::string& name) { _display_name = name; }
static void apply_simple_gain(AudioBuffer& buf, framecnt_t nframes, gain_t target);
static void declick (BufferSet& bufs, framecnt_t nframes, int dir);
-
- gain_t gain () const { return _gain_control->get_value(); }
-
static void update_meters();
- boost::shared_ptr<AutomationControl> gain_control() {
+ boost::shared_ptr<GainControl> gain_control() {
return _gain_control;
}
- boost::shared_ptr<const AutomationControl> gain_control() const {
+ boost::shared_ptr<const GainControl> gain_control() const {
return _gain_control;
}
std::string _display_name;
- boost::shared_ptr<AutomationControl> _gain_control;
+ boost::shared_ptr<GainControl> _gain_control;
/** Buffer that we should use for gain automation */
gain_t* _gain_automation_buffer;
class Amp;
class PeakMeter;
-
+class GainControl;
class LIBARDOUR_API Return : public IOProcessor
{
boost::shared_ptr<Amp> amp() const { return _amp; }
boost::shared_ptr<PeakMeter> meter() const { return _meter; }
+ boost::shared_ptr<GainControl> gain_control() const { return _gain_control; }
bool metering() const { return _metering; }
void set_metering (bool yn) { _metering = yn; }
protected:
bool _metering;
- boost::shared_ptr<AutomationControl> _gain_control;
+ boost::shared_ptr<GainControl> _gain_control;
boost::shared_ptr<Amp> _amp;
boost::shared_ptr<PeakMeter> _meter;
boost::shared_ptr<Panner> panner() const; /* may return null */
boost::shared_ptr<PannerShell> panner_shell() const;
- boost::shared_ptr<AutomationControl> gain_control() const;
+ boost::shared_ptr<GainControl> gain_control() const;
boost::shared_ptr<Pannable> pannable() const;
- boost::shared_ptr<AutomationControl> trim_control() const;
+ boost::shared_ptr<GainControl> trim_control() const;
/**
Return the first processor that accepts has at least one MIDI input
class PeakMeter;
class Amp;
+class GainControl;
class LIBARDOUR_API Send : public Delivery
{
boost::shared_ptr<Amp> amp() const { return _amp; }
boost::shared_ptr<PeakMeter> meter() const { return _meter; }
+ boost::shared_ptr<GainControl> gain_control() const { return _gain_control; }
bool metering() const { return _metering; }
void set_metering (bool yn) { _metering = yn; }
protected:
bool _metering;
- boost::shared_ptr<AutomationControl> _gain_control;
+ boost::shared_ptr<GainControl> _gain_control;
boost::shared_ptr<Amp> _amp;
boost::shared_ptr<PeakMeter> _meter;
boost::shared_ptr<DelayLine> _delayline;
if (_route_group->is_relative()) {
- gain_t usable_gain = _amp->gain();
+ gain_t usable_gain = _gain_control->get_value();
if (usable_gain < 0.000001f) {
usable_gain = 0.000001f;
}
return _main_outs->panner_shell();
}
-boost::shared_ptr<AutomationControl>
+boost::shared_ptr<GainControl>
Route::gain_control() const
{
return _gain_control;
}
-boost::shared_ptr<AutomationControl>
+boost::shared_ptr<GainControl>
Route::trim_control() const
{
return _trim_control;
RouteGroup::get_min_factor (gain_t factor)
{
for (RouteList::iterator i = routes->begin(); i != routes->end(); ++i) {
- gain_t const g = (*i)->amp()->gain();
+ gain_t const g = (*i)->gain_control()->get_value();
if ((g + g * factor) >= 0.0f) {
continue;
RouteGroup::get_max_factor (gain_t factor)
{
for (RouteList::iterator i = routes->begin(); i != routes->end(); i++) {
- gain_t const g = (*i)->amp()->gain();
+ gain_t const g = (*i)->gain_control()->get_value();
// if the current factor woulnd't raise this route above maximum
if ((g + g * factor) <= 1.99526231f) {
_clicking = false;
boost::shared_ptr<AutomationList> gl (new AutomationList (Evoral::Parameter (GainAutomation)));
- boost::shared_ptr<AutomationControl> gain_control = boost::shared_ptr<GainControl> (new GainControl (*this, Evoral::Parameter(GainAutomation), gl));
+ boost::shared_ptr<GainControl> gain_control = boost::shared_ptr<GainControl> (new GainControl (*this, Evoral::Parameter(GainAutomation), gl));
_click_io.reset (new ClickIO (*this, X_("Click")));
_click_gain.reset (new Amp (*this, _("Fader"), gain_control, true));