The Synthesis ToolKit in C++ (STK)

Home Information Classes Download Usage Mail List Requirements Links FAQ Tutorial

Effect.h
1#ifndef STK_EFFECT_H
2#define STK_EFFECT_H
3
4#include "Stk.h"
5#include <cmath>
6
7namespace stk {
8
9/***************************************************/
19/***************************************************/
20
21 class Effect : public Stk
22{
23 public:
25 Effect( void ) { lastFrame_.resize( 1, 1, 0.0 ); };
26
28 unsigned int channelsOut( void ) const { return lastFrame_.channels(); };
29
31 const StkFrames& lastFrame( void ) const { return lastFrame_; };
32
34 virtual void clear() = 0;
35
37 virtual void setEffectMix( StkFloat mix );
38
39 protected:
40
41 // Returns true if argument value is prime.
42 bool isPrime( unsigned int number );
43
44 StkFrames lastFrame_;
45 StkFloat effectMix_;
46
47};
48
49 inline void Effect :: setEffectMix( StkFloat mix )
50{
51 if ( mix < 0.0 ) {
52 oStream_ << "Effect::setEffectMix: mix parameter is less than zero ... setting to zero!";
53 handleError( StkError::WARNING );
54 effectMix_ = 0.0;
55 }
56 else if ( mix > 1.0 ) {
57 oStream_ << "Effect::setEffectMix: mix parameter is greater than 1.0 ... setting to one!";
58 handleError( StkError::WARNING );
59 effectMix_ = 1.0;
60 }
61 else
62 effectMix_ = mix;
63}
64
65inline bool Effect :: isPrime( unsigned int number )
66{
67 if ( number == 2 ) return true;
68 if ( number & 1 ) {
69 for ( int i=3; i<(int)sqrt((double)number)+1; i+=2 )
70 if ( (number % i) == 0 ) return false;
71 return true; // prime
72 }
73 else return false; // even
74}
75
76} // stk namespace
77
78#endif
79
stk::Effect
STK abstract effects parent class.
Definition Effect.h:22
stk::Effect::clear
virtual void clear()=0
Reset and clear all internal state.
stk::Effect::lastFrame
const StkFrames & lastFrame(void) const
Return an StkFrames reference to the last output sample frame.
Definition Effect.h:31
stk::Effect::setEffectMix
virtual void setEffectMix(StkFloat mix)
Set the mixture of input and "effected" levels in the output (0.0 = input only, 1....
Definition Effect.h:49
stk::Effect::Effect
Effect(void)
Class constructor.
Definition Effect.h:25
stk::Effect::channelsOut
unsigned int channelsOut(void) const
Return the number of output channels for the class.
Definition Effect.h:28
stk::StkFrames
An STK class to handle vectorized audio data.
Definition Stk.h:279
stk::StkFrames::channels
unsigned int channels(void) const
Return the number of channels represented by the data.
Definition Stk.h:416
stk::StkFrames::resize
virtual void resize(size_t nFrames, unsigned int nChannels=1)
Resize self to represent the specified number of channels and frames.
stk::Stk
STK base class.
Definition Stk.h:136
stk
The STK namespace.
Definition ADSR.h:6

The Synthesis ToolKit in C++ (STK)
©1995--2023 Perry R. Cook and Gary P. Scavone. All Rights Reserved.