using namespace ARDOUR;
using namespace PBD;
+using std::min;
+
+/* gain range of -inf to +6dB, default 0dB */
+const float Amp::max_gain_coefficient = 1.99526231f;
Amp::Amp (Session& s)
: Processor(s, "Amp")
, _gain_automation_buffer(0)
{
Evoral::Parameter p (GainAutomation);
- /* gain range of -inf to +6dB, default 0dB */
- p.set_range (0, 1.99526231f, 1, false);
+ p.set_range (0, max_gain_coefficient, 1, false);
boost::shared_ptr<AutomationList> gl (new AutomationList (p));
_gain_control = boost::shared_ptr<GainControl> (new GainControl (X_("gaincontrol"), s, this, p, gl));
_gain_control->set_flags (Controllable::GainLike);
}
bool
-Amp::can_support_io_configuration (const ChanCount& in, ChanCount& out) const
+Amp::can_support_io_configuration (const ChanCount& in, ChanCount& out)
{
out = in;
return true;
for (BufferSet::midi_iterator i = bufs.midi_begin(); i != bufs.midi_end(); ++i) {
MidiBuffer& mb (*i);
-
+
for (MidiBuffer::iterator m = mb.begin(); m != mb.end(); ++m) {
Evoral::MIDIEvent<MidiBuffer::TimeType> ev = *m;
if (ev.is_note_on()) {
Evoral::MIDIEvent<MidiBuffer::TimeType> ev = *m;
if (ev.is_note_on()) {
- gain_t scale = delta * (ev.time()/(double) nframes);
+ const gain_t scale = delta * (ev.time()/(double) nframes);
ev.scale_velocity (initial+scale);
}
}
void
Amp::set_gain (gain_t val, void *src)
{
- // max gain at about +6dB (10.0 ^ ( 6 dB * 0.05))
- if (val > 1.99526231f) {
- val = 1.99526231f;
- }
+ val = min (val, max_gain_coefficient);
if (src != _gain_control.get()) {
_gain_control->set_value (val);
void
Amp::GainControl::set_value (double val)
{
- // max gain at about +6dB (10.0 ^ ( 6 dB * 0.05))
- if (val > 1.99526231) {
- val = 1.99526231;
+ if (val > max_gain_coefficient) {
+ val = max_gain_coefficient;
}
_amp->set_gain (val, this);