Jamoma API  0.6.0.a19
BlueFilter.h
1 #include "AUEffectBase.h"
2 #include "BlueFilterVersion.h"
3 #include "TTDSP.h"
4 
5 #if AU_DEBUG_DISPATCHER
6  #include "AUDebugDispatcher.h"
7 #endif
8 
9 
10 #ifndef __BlueFilter_h__
11 #define __BlueFilter_h__
12 
13 
14 // Parameters
15 static CFStringRef kParameterOneName = CFSTR("Frequency");
16 static const float kDefaultValue_ParamOne = 1000.0;
17 
18 enum {
19  kParam_One = 0,
20  kNumberOfParameters = 1
21 };
22 
23 
24 // Presets
25 static const float kParameter_Preset_Low = 200.0;
26 static const float kParameter_Preset_High = 2000.0;
27 
28 enum {
29  kPreset_Low = 0,
30  kPreset_High = 1,
31  kNumberPresets = 2
32 };
33 
34 static AUPreset kPresets [kNumberPresets] = {
35  {kPreset_Low, CFSTR ("Low")},
36  {kPreset_High, CFSTR ("High")}
37 };
38 
39 static const int kPreset_Default = kPreset_Low;
40 
41 
42 // AU Class
43 class BlueFilter : public AUEffectBase
44 {
45 public:
46 
47  // Life Cycle
48 
49  BlueFilter(AudioUnit component);
50 
51  #if AU_DEBUG_DISPATCHER
52  virtual ~BlueFilter ()
53  {
54  delete mDebugDispatcher;
55  }
56  #endif
57 
58 
59  virtual AUKernelBase* NewKernel()
60  {
61  return new BlueFilterKernel(this);
62  }
63 
64 
65  // Parameters
66 
67  virtual OSStatus GetParameterValueStrings(AudioUnitScope inScope, AudioUnitParameterID inParameterID, CFArrayRef* outStrings);
68 
69 
70  virtual OSStatus GetParameterInfo(AudioUnitScope inScope,
71  AudioUnitParameterID inParameterID,
72  AudioUnitParameterInfo &outParameterInfo);
73 
74 
75  // Properties
76 
77  virtual OSStatus GetPropertyInfo(AudioUnitPropertyID inID,
78  AudioUnitScope inScope,
79  AudioUnitElement inElement,
80  UInt32& outDataSize,
81  Boolean& outWritable );
82 
83 
84  virtual OSStatus GetProperty(AudioUnitPropertyID inID,
85  AudioUnitScope inScope,
86  AudioUnitElement inElement,
87  void* outData);
88 
89 
90  // Presets
91  virtual ComponentResult GetPresets(CFArrayRef* outData) const;
92  virtual OSStatus NewFactoryPresetSet(const AUPreset& inNewFactoryPreset);
93 
94 
95  virtual bool SupportsTail()
96  {
97  return false;
98  }
99 
100 
101  virtual OSStatus Version()
102  {
103  return kBlueFilterVersion;
104  }
105 
106 
107 protected:
108  // Processor Class
109  class BlueFilterKernel : public AUKernelBase // most of the real work happens here
110  {
111  public:
112  BlueFilterKernel(AUEffectBase *inAudioUnit )
113  : AUKernelBase(inAudioUnit), mButter(NULL), mInput(NULL), mOutput(NULL)
114  {
115  TTUInt16 numChannels = 1;
116 
117  TTObjectInstantiate(TT("lowpass.butterworth.4"), &mButter, numChannels);
118  mButter->setAttributeValue(TT("sr"), GetSampleRate());
119 
120  TTObjectInstantiate(kTTSym_audiosignal, &mInput, numChannels);
121  TTObjectInstantiate(kTTSym_audiosignal, &mOutput, numChannels);
122  }
123 
124 
125  virtual ~BlueFilterKernel()
126  {
127  TTObjectRelease(&mButter);
128  TTObjectRelease(&mInput);
129  TTObjectRelease(&mOutput);
130  }
131 
132 
133  // *Required* overides for the process method for this effect
134  // processes one channel of interleaved samples
135  virtual void Process( const Float32 *inSourceP,
136  Float32 *inDestP,
137  UInt32 inFramesToProcess,
138  UInt32 inNumChannels,
139  bool &ioSilence);
140 
141 
142  virtual void Reset();
143 
144  private:
145  TTAudioObject* mButter;
146  TTAudioSignal* mInput;
147  TTAudioSignal* mOutput;
148  };
149 };
150 
151 
152 #endif
std::uint16_t TTUInt16
16 bit unsigned integer
Definition: TTBase.h:176
Wrap audio objects for convenience.
Jamoma DSP Library.
#define TT
This macro is defined as a shortcut for doing a lookup in the symbol table.
Definition: TTSymbol.h:155
The TTAudioSignal class represents N vectors of audio samples for M channels.
Definition: TTAudioSignal.h:57