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 
7 namespace 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 
65 inline 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 abstract effects parent class.
Definition: Effect.h:22
virtual void clear()=0
Reset and clear all internal state.
const StkFrames & lastFrame(void) const
Return an StkFrames reference to the last output sample frame.
Definition: Effect.h:31
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
Effect(void)
Class constructor.
Definition: Effect.h:25
unsigned int channelsOut(void) const
Return the number of output channels for the class.
Definition: Effect.h:28
An STK class to handle vectorized audio data.
Definition: Stk.h:279
unsigned int channels(void) const
Return the number of channels represented by the data.
Definition: Stk.h:416
virtual void resize(size_t nFrames, unsigned int nChannels=1)
Resize self to represent the specified number of channels and frames.
STK base class.
Definition: Stk.h:136
static void handleError(const char *message, StkError::Type type)
Static function for error reporting and handling using c-strings.
The STK namespace.
Definition: ADSR.h:6

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