mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-14 02:26:39 +01:00
Apply VCA master gain automation to Amp (Fader, Trim)
This commit is contained in:
parent
9581cb26e4
commit
11ba1854b3
3 changed files with 10 additions and 15 deletions
|
|
@ -392,22 +392,8 @@ Amp::setup_gain_automation (framepos_t start_frame, framepos_t end_frame, framec
|
||||||
&& _gain_control->automation_playback())
|
&& _gain_control->automation_playback())
|
||||||
{
|
{
|
||||||
assert (_gain_automation_buffer);
|
assert (_gain_automation_buffer);
|
||||||
_apply_gain_automation = _gain_control->list()->curve().rt_safe_get_vector (
|
|
||||||
start_frame, end_frame, _gain_automation_buffer, nframes);
|
|
||||||
|
|
||||||
/* XXX the future requires a way to automate the control master
|
_apply_gain_automation = _gain_control->get_masters_curve ( start_frame, end_frame, _gain_automation_buffer, nframes);
|
||||||
* and merge its own automation vector/curve with this one. We
|
|
||||||
* don't have a way to do that just yet, so for now, just get
|
|
||||||
* the master's current gain and scale our own automation
|
|
||||||
* vector/curve by this value.
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (_gain_control->slaved()) {
|
|
||||||
const double master_gain = _gain_control->get_masters_value ();
|
|
||||||
if (master_gain != 1.0) {
|
|
||||||
apply_gain_to_buffer (_gain_automation_buffer, nframes, master_gain);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (start_frame != _current_automation_frame && _session.bounce_processing ()) {
|
if (start_frame != _current_automation_frame && _session.bounce_processing ()) {
|
||||||
_current_gain = _gain_automation_buffer[0];
|
_current_gain = _gain_automation_buffer[0];
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,8 @@ class LIBARDOUR_API GainControl : public SlavableAutomationControl {
|
||||||
double user_to_internal (double) const;
|
double user_to_internal (double) const;
|
||||||
std::string get_user_string () const;
|
std::string get_user_string () const;
|
||||||
|
|
||||||
|
bool get_masters_curve_locked (framepos_t, framepos_t, float*, framecnt_t) const;
|
||||||
|
|
||||||
double lower_db;
|
double lower_db;
|
||||||
double range_db;
|
double range_db;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,8 @@
|
||||||
#include "pbd/convert.h"
|
#include "pbd/convert.h"
|
||||||
#include "pbd/strsplit.h"
|
#include "pbd/strsplit.h"
|
||||||
|
|
||||||
|
#include "evoral/Curve.hpp"
|
||||||
|
|
||||||
#include "ardour/dB.h"
|
#include "ardour/dB.h"
|
||||||
#include "ardour/gain_control.h"
|
#include "ardour/gain_control.h"
|
||||||
#include "ardour/session.h"
|
#include "ardour/session.h"
|
||||||
|
|
@ -100,3 +102,8 @@ GainControl::inc_gain (gain_t factor)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
GainControl::get_masters_curve_locked (framepos_t start, framepos_t end, float* vec, framecnt_t veclen) const
|
||||||
|
{
|
||||||
|
return SlavableAutomationControl::masters_curve_multiply (start, end, vec, veclen);
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue