kwave  18.07.70
Kwave::Delay Class Reference

#include <Delay.h>

Inheritance diagram for Kwave::Delay:
Inheritance graph
Collaboration diagram for Kwave::Delay:
Collaboration graph

Public Slots

void input (Kwave::SampleArray data)
 
void setDelay (const QVariant &d)
 

Signals

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

Public Member Functions

 Delay ()
 
virtual ~Delay () 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::SampleFIFO m_fifo
 
Kwave::SampleArray m_out_buffer
 
unsigned int m_delay
 

Additional Inherited Members

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

Detailed Description

Definition at line 34 of file Delay.h.

Constructor & Destructor Documentation

◆ Delay()

Kwave::Delay::Delay ( )

Constructor

Definition at line 24 of file Delay.cpp.

26 {
27 }
unsigned int m_delay
Definition: Delay.h:71
Kwave::SampleFIFO m_fifo
Definition: Delay.h:65
Kwave::SampleArray m_out_buffer
Definition: Delay.h:68
virtual unsigned int blockSize() const

◆ ~Delay()

Kwave::Delay::~Delay ( )
virtual

Destructor

Definition at line 30 of file Delay.cpp.

31 {
32 }

Member Function Documentation

◆ goOn()

void Kwave::Delay::goOn ( )
virtual

does the calculation

Implements Kwave::SampleSource.

Definition at line 35 of file Delay.cpp.

References Kwave::SampleFIFO::get(), m_fifo, m_out_buffer, and output().

36 {
38  emit output(m_out_buffer);
39 }
Kwave::SampleFIFO m_fifo
Definition: Delay.h:65
virtual unsigned int get(Kwave::SampleArray &buffer)
Definition: SampleFIFO.cpp:70
Kwave::SampleArray m_out_buffer
Definition: Delay.h:68
void output(Kwave::SampleArray data)
Here is the call graph for this function:

◆ input

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

receives input data

Definition at line 42 of file Delay.cpp.

References m_fifo, and Kwave::SampleFIFO::put().

43 {
44  m_fifo.put(data);
45 }
Kwave::SampleFIFO m_fifo
Definition: Delay.h:65
virtual void put(const Kwave::SampleArray &source)
Definition: SampleFIFO.cpp:54
Here is the call graph for this function:

◆ output

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

emits a block with delayed wave data

Referenced by goOn().

Here is the caller graph for this function:

◆ setDelay

void Kwave::Delay::setDelay ( const QVariant &  d)
slot

Sets the delay time, normed to samples. The default setting is zero.

Definition at line 48 of file Delay.cpp.

References Kwave::StreamObject::blockSize(), Kwave::SampleFIFO::flush(), m_delay, m_fifo, Kwave::SampleFIFO::put(), Kwave::SampleArray::resize(), and Kwave::SampleArray::size().

49 {
50  unsigned int new_delay = QVariant(d).toUInt();
51  if (new_delay == m_delay) return; // nothing to do
52 
53  // fill it with zeroes, up to the delay time
54  m_fifo.flush();
55  Kwave::SampleArray zeroes(blockSize());
56  Q_ASSERT(zeroes.size() == blockSize());
57  for (unsigned int pos=0; pos < blockSize(); ++pos)
58  zeroes[pos] = 0;
59  unsigned int rest = new_delay;
60  while (rest) {
61  bool ok = true;
62  unsigned int len = blockSize();
63  if (rest < len) {
64  ok = zeroes.resize(rest);
65  Q_ASSERT(ok);
66  }
67  if (ok) m_fifo.put(zeroes);
68  rest -= zeroes.size();
69  }
70 }
unsigned int m_delay
Definition: Delay.h:71
Kwave::SampleFIFO m_fifo
Definition: Delay.h:65
virtual void put(const Kwave::SampleArray &source)
Definition: SampleFIFO.cpp:54
virtual void flush()
Definition: SampleFIFO.cpp:45
virtual unsigned int blockSize() const
Here is the call graph for this function:

Member Data Documentation

◆ m_delay

unsigned int Kwave::Delay::m_delay
private

delay [samples]

Definition at line 71 of file Delay.h.

Referenced by setDelay().

◆ m_fifo

Kwave::SampleFIFO Kwave::Delay::m_fifo
private

buffer for delaying data

Definition at line 65 of file Delay.h.

Referenced by goOn(), input(), and setDelay().

◆ m_out_buffer

Kwave::SampleArray Kwave::Delay::m_out_buffer
private

buffer for output data

Definition at line 68 of file Delay.h.

Referenced by goOn().


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