kwave  18.07.70
Kwave::NoiseGenerator Class Reference

#include <NoiseGenerator.h>

Inheritance diagram for Kwave::NoiseGenerator:
Inheritance graph
Collaboration diagram for Kwave::NoiseGenerator:
Collaboration graph

Public Slots

void input (Kwave::SampleArray data)
 
void setNoiseLevel (const QVariant fc)
 

Signals

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

Public Member Functions

 NoiseGenerator (QObject *parent=Q_NULLPTR)
 
virtual ~NoiseGenerator () 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_noise_level
 

Additional Inherited Members

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

Detailed Description

Definition at line 31 of file NoiseGenerator.h.

Constructor & Destructor Documentation

◆ NoiseGenerator()

Kwave::NoiseGenerator::NoiseGenerator ( QObject *  parent = Q_NULLPTR)
explicit

Constructor

Definition at line 26 of file NoiseGenerator.cpp.

28 {
29 }
virtual unsigned int blockSize() const
Kwave::SampleArray m_buffer

◆ ~NoiseGenerator()

Kwave::NoiseGenerator::~NoiseGenerator ( )
virtual

Destructor

Definition at line 32 of file NoiseGenerator.cpp.

33 {
34 }

Member Function Documentation

◆ goOn()

void Kwave::NoiseGenerator::goOn ( )
virtual

produces a block of noise,

See also
Kwave::SampleSource::goOn()

Implements Kwave::SampleSource.

Definition at line 37 of file NoiseGenerator.cpp.

References m_buffer, and output().

38 {
39  emit output(m_buffer);
40 }
void output(Kwave::SampleArray data)
Kwave::SampleArray m_buffer

◆ input

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

receives input data

Definition at line 43 of file NoiseGenerator.cpp.

References double2sample(), m_buffer, m_noise_level, Kwave::SampleArray::resize(), sample2double(), and Kwave::SampleArray::size().

44 {
45  bool ok = m_buffer.resize(data.size());
46  Q_ASSERT(ok);
47  Q_UNUSED(ok);
48 
49  m_buffer = data;
50 
51  const double alpha = (1.0 - m_noise_level);
52  const double scale = (m_noise_level * 2.0) / static_cast<double>(RAND_MAX);
53  for (unsigned i = 0; i < data.size(); ++i) {
54  const Kwave::SampleArray &in = data;
56  (sample2double(in[i]) * alpha) +
57  ((qrand() - (RAND_MAX / 2)) * scale)
58  );
59  }
60 }
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
Kwave::SampleArray m_buffer
bool resize(unsigned int size) Q_REQUIRED_RESULT
Here is the call graph for this function:

◆ output

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

emits a block with noise

Referenced by goOn().

Here is the caller graph for this function:

◆ setNoiseLevel

void Kwave::NoiseGenerator::setNoiseLevel ( const QVariant  fc)
slot

Sets the noise level as a factor [0 .. 1.0]

Definition at line 63 of file NoiseGenerator.cpp.

References m_noise_level.

64 {
65  m_noise_level = QVariant(fc).toDouble();
66 }

Member Data Documentation

◆ m_buffer

Kwave::SampleArray Kwave::NoiseGenerator::m_buffer
private

buffer for input

Definition at line 66 of file NoiseGenerator.h.

Referenced by goOn(), and input().

◆ m_noise_level

double Kwave::NoiseGenerator::m_noise_level
private

noise level [0 .. 1.0]

Definition at line 69 of file NoiseGenerator.h.

Referenced by input(), and setNoiseLevel().


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