kwave  18.07.70
Kwave::CurveStreamAdapter Class Reference

#include <CurveStreamAdapter.h>

Inheritance diagram for Kwave::CurveStreamAdapter:
Inheritance graph
Collaboration diagram for Kwave::CurveStreamAdapter:
Collaboration graph

Signals

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

Public Member Functions

 CurveStreamAdapter (Kwave::Curve &curve, sample_index_t length)
 
virtual ~CurveStreamAdapter () 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

sample_index_t m_position
 
sample_index_t m_length
 
Kwave::Interpolationm_interpolation
 
Kwave::SampleArray m_buffer
 

Additional Inherited Members

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

Detailed Description

Definition at line 31 of file CurveStreamAdapter.h.

Constructor & Destructor Documentation

◆ CurveStreamAdapter()

Kwave::CurveStreamAdapter::CurveStreamAdapter ( Kwave::Curve curve,
sample_index_t  length 
)

Constructor.

Parameters
curvethe curve from which we take the interpolation
lengthnumber of samples of the interpolated range

Definition at line 21 of file CurveStreamAdapter.cpp.

24  m_position(0), m_length(length),
27 {
28 }
Kwave::Interpolation & m_interpolation
Kwave::Interpolation & interpolation()
Definition: Curve.cpp:86
virtual unsigned int blockSize() const
Kwave::SampleArray m_buffer

◆ ~CurveStreamAdapter()

Kwave::CurveStreamAdapter::~CurveStreamAdapter ( )
virtual

Destructor

Definition at line 31 of file CurveStreamAdapter.cpp.

32 {
33 }

Member Function Documentation

◆ goOn()

void Kwave::CurveStreamAdapter::goOn ( )
virtual
See also
Kwave::KwaveSampleSource

Implements Kwave::SampleSource.

Definition at line 36 of file CurveStreamAdapter.cpp.

References Kwave::StreamObject::blockSize(), double2sample(), m_buffer, m_interpolation, m_length, m_position, output(), and Kwave::Interpolation::singleInterpolation().

Referenced by Kwave::AmplifyFreePlugin::run(), and Kwave::PlayBackPlugin::run().

37 {
38  unsigned int offset;
39  double x_max = static_cast<double>(m_length);
40  const unsigned int samples = blockSize();
41 
42  // fill with interpolated points
43  for (offset = 0; offset < samples; ++offset) {
44  // x is [0.0 ... 1.0]
45  const double x = static_cast<double>(m_position) / x_max;
46  const double y = m_interpolation.singleInterpolation(x);
47  m_buffer[offset] = double2sample(y);
48  m_position++;
49 
50  // wrap-around, for periodic signals
51  if (m_position > m_length)
52  m_position = 0;
53  }
54 
55  emit output(m_buffer);
56 }
Kwave::Interpolation & m_interpolation
void output(Kwave::SampleArray data)
double singleInterpolation(double pos)
virtual unsigned int blockSize() const
static sample_t double2sample(const double f)
Definition: Sample.h:81
Kwave::SampleArray m_buffer
Here is the call graph for this function:
Here is the caller graph for this function:

◆ output

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

emits a block with the interpolated curve

Referenced by goOn().

Here is the caller graph for this function:

Member Data Documentation

◆ m_buffer

Kwave::SampleArray Kwave::CurveStreamAdapter::m_buffer
private

array with the interpolated curve data

Definition at line 66 of file CurveStreamAdapter.h.

Referenced by goOn().

◆ m_interpolation

Kwave::Interpolation& Kwave::CurveStreamAdapter::m_interpolation
private

the interpolation

Definition at line 63 of file CurveStreamAdapter.h.

Referenced by goOn().

◆ m_length

sample_index_t Kwave::CurveStreamAdapter::m_length
private

number of samples of the interpolated area

Definition at line 60 of file CurveStreamAdapter.h.

Referenced by goOn().

◆ m_position

sample_index_t Kwave::CurveStreamAdapter::m_position
private

position within the interpolation

Definition at line 57 of file CurveStreamAdapter.h.

Referenced by goOn().


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