kwave  18.07.70
Kwave::Normalizer Class Reference

#include <Normalizer.h>

Inheritance diagram for Kwave::Normalizer:
Inheritance graph
Collaboration diagram for Kwave::Normalizer:
Collaboration graph

Public Slots

void input (Kwave::SampleArray data)
 
void setGain (const QVariant g)
 
void setLimiterLevel (const QVariant l)
 

Signals

void output (Kwave::SampleArray data)
 
- Signals inherited from Kwave::StreamObject
void attributeChanged (const QVariant value)
 

Public Member Functions

 Normalizer ()
 
virtual ~Normalizer () Q_DECL_OVERRIDE
 
virtual void goOn () Q_DECL_OVERRIDE
 
- Public Member Functions inherited from Kwave::SampleSource
 SampleSource (QObject *parent=Q_NULLPTR)
 
virtual ~SampleSource ()
 
virtual bool done () const
 
- Public Member Functions inherited from Kwave::StreamObject
 StreamObject (QObject *parent=Q_NULLPTR)
 
virtual ~StreamObject ()
 
virtual unsigned int tracks () const
 
virtual Kwave::StreamObjectoperator[] (unsigned int track)
 
virtual unsigned int tracksOfPort (const char *port) const
 
virtual Kwave::StreamObjectport (const char *port, unsigned int track)
 
virtual unsigned int blockSize () const
 
void setAttribute (const char *attribute, const QVariant &value)
 

Private Attributes

Kwave::SampleArray m_buffer
 
double m_gain
 
double m_limit
 

Additional Inherited Members

- Static Public Member Functions inherited from Kwave::StreamObject
static void setInteractive (bool interactive)
 

Detailed Description

Definition at line 34 of file Normalizer.h.

Constructor & Destructor Documentation

◆ Normalizer()

Kwave::Normalizer::Normalizer ( )

Constructor

Definition at line 30 of file Normalizer.cpp.

31  :Kwave::SampleSource(Q_NULLPTR), m_gain(1.0), m_limit(0.5)
32 {
33 }

◆ ~Normalizer()

Kwave::Normalizer::~Normalizer ( )
virtual

Destructor

Definition at line 36 of file Normalizer.cpp.

37 {
38 }

Member Function Documentation

◆ goOn()

void Kwave::Normalizer::goOn ( )
virtual

does the calculation

Implements Kwave::SampleSource.

Definition at line 41 of file Normalizer.cpp.

42 {
43 }

◆ input

void Kwave::Normalizer::input ( Kwave::SampleArray  data)
slot

receives input data

Definition at line 73 of file Normalizer.cpp.

References double2sample(), limiter(), m_gain, m_limit, output(), sample2double(), and Kwave::SampleArray::size().

74 {
75  const unsigned int len = data.size();
76  const bool use_limiter = (m_gain > 1.0);
77 
78  for (unsigned int i = 0; i < len; i++) {
79  double s = sample2double(data[i]);
80  s *= m_gain;
81  if (use_limiter) s = limiter(s, m_limit);
82  data[i] = double2sample(s);
83  }
84 
85  emit output(data);
86 }
static double limiter(const double x, const double lmtr_lvl)
Definition: Normalizer.cpp:58
static double sample2double(const sample_t s)
Definition: Sample.h:73
static sample_t double2sample(const double f)
Definition: Sample.h:81
unsigned int size() const
void output(Kwave::SampleArray data)
Here is the call graph for this function:

◆ output

void Kwave::Normalizer::output ( Kwave::SampleArray  data)
signal

emits a block with the filtered data

Referenced by input().

Here is the caller graph for this function:

◆ setGain

void Kwave::Normalizer::setGain ( const QVariant  g)
slot

Sets the gain of the amplifier [0...1]

Definition at line 89 of file Normalizer.cpp.

References m_gain.

90 {
91  m_gain = QVariant(g).toDouble();
92 }

◆ setLimiterLevel

void Kwave::Normalizer::setLimiterLevel ( const QVariant  l)
slot

Sets the limiter level [linear, 0...1]

Definition at line 95 of file Normalizer.cpp.

References m_limit.

96 {
97  m_limit = QVariant(l).toDouble();
98 }

Member Data Documentation

◆ m_buffer

Kwave::SampleArray Kwave::Normalizer::m_buffer
private

buffer for input

Definition at line 71 of file Normalizer.h.

◆ m_gain

double Kwave::Normalizer::m_gain
private

gain

Definition at line 74 of file Normalizer.h.

Referenced by input(), and setGain().

◆ m_limit

double Kwave::Normalizer::m_limit
private

limiter level

Definition at line 77 of file Normalizer.h.

Referenced by input(), and setLimiterLevel().


The documentation for this class was generated from the following files: