drc
Functions
-
int main(int argc, char *argv[])
drc [ option ] [ infile ]
-v double
absolute maximum value of input \((0 < V)\)
-s double
sampling rate [kHz] \((0 < F_s)\)
-t double
threshold [dB] \((T \le 0)\)
-r double
ratio \((1 \le R)\)
-w double
knee width [dB] \((0 \le W)\)
-A double
attack time [msec] \((0 < \tau_A)\)
-R double
release time [msec] \((0 < \tau_R)\)
-m double
make-up gain \((0 \le M)\)
-d int
peak detector type
0
branching1
decoupled2
branching (smooth)3
decoupled (smooth)
infile str
double-type input data sequence
stdout
double-type compressed data sequence
The below example applies DRC to 16-bit speech waveform.
x2x +sd data.short | drc -v 32768 | x2x +ds -r | \ sox -c 1 -t s16 -r 16000 - -t wav output.wav
- Parameters:
argc – [in] Number of arguments.
argv – [in] Argument vector.
- Returns:
0 on success, 1 on failure.
-
class DynamicRangeCompression
Balances the range between the loudest and quietest signals.
The input is a signal \(x(t)\) in the \(T\)-length signals:
\[ \begin{array}{cccc} x(0), & x(1), & \ldots, & x(T-1), \end{array} \]and the output is the processed corresponding signal \(y(t)\) in\[ \begin{array}{cccc} y(0), & y(1), & \ldots, & y(T-1). \end{array} \][1] D. Giannoulis, M. Massberg, and J. D. Reiss, “Digital dynamic range compressor design - A tutorial and analysis,” Journal of the Audio Engineering Society, vol. 60, no. 6, pp. 399-408, 2012.
Public Types
Public Functions
-
DynamicRangeCompression(double abs_max_value, double sampling_rate, double threshold, double ratio, double knee_width, double attack_time, double release_time, double makeup_gain, DetectorType detector_type = DetectorType::kDecoupled)
- Parameters:
abs_max_value – [in] Absolute maximum value.
sampling_rate – [in] Sampling rate in Hz.
threshold – [in] Threshold in dB.
ratio – [in] Input/output ratio.
knee_width – [in] Knee width in dB.
attack_time – [in] Attack time in msec.
release_time – [in] Release time in msec.
makeup_gain – [in] Make-up gain to compensate output loudness.
detector_type – [in] Detector type (optional).
-
inline double GetAbsMaxValue() const
- Returns:
Absolute maximum value.
-
inline double GetSamplingRate() const
- Returns:
Sampling rate.
-
inline double GetThreshold() const
- Returns:
Threshold.
-
inline double GetRatio() const
- Returns:
Ratio.
-
inline double GetKneeWidth() const
- Returns:
Knee width.
-
inline double GetAttackTime() const
- Returns:
Attack time.
-
inline double GetReleaseTime() const
- Returns:
Release time.
-
inline double GetMakeupGain() const
- Returns:
Makeup gain.
-
inline bool IsValid() const
- Returns:
True if this object is valid.
-
bool Run(const double input, double *output, DynamicRangeCompression::Buffer *buffer) const
- Parameters:
input – [in] Input signal.
output – [out] Output signal.
buffer – [inout] Buffer.
- Returns:
True on success, false on failure.
-
bool Run(double *input_and_output, DynamicRangeCompression::Buffer *buffer) const
- Parameters:
input_and_output – [inout] Input/output signal.
buffer – [inout] Buffer.
- Returns:
True on success, false on failure.
-
class Buffer
Buffer for DynamicRangeCompression class.
-
DynamicRangeCompression(double abs_max_value, double sampling_rate, double threshold, double ratio, double knee_width, double attack_time, double release_time, double makeup_gain, DetectorType detector_type = DetectorType::kDecoupled)