// // Programmer: Craig Stuart Sapp // Creation Date: Mon May 5 22:55:50 GMT-0800 1997 // Last Modified: Mon May 5 22:55:53 GMT-0800 1997 // Last Modified: Wed Oct 16 20:54:56 PDT 2002 (added soundfile input) // Filename: ...sig/maint/code/Filter/WaveTable/WaveTable.h // Web Address: http://sig.sapp.org/include/sigSignal/WaveTable.h // Documentation: http://sig.sapp.org/doc/classes/WaveTable // Syntax: C++ // #ifndef _WAVETABLE_H_INCLUDED #define _WAVETABLE_H_INCLUDED #include "Filter.h" #include "Array.h" #include "SigCollection.h" class Partial { public: float partial; float amplitude; float phase; }; class WaveTable : public Filter { public: WaveTable (int size = 1024); ~WaveTable (); void action (void); int getRepeat (void); void normalize (sampleType maxAmp); sampleType output (int index); void reverse (void); void forward (void); void setSize (long aSize); void setTable (sampleType *anArray, int aSize); void setTable (Array anArray); void setTableFromFile (char* filename); void setTableHarmonics(char* harmonicString); void setTableHarmonics(SigCollection partialArray); void setConstantInterp(void); void setLinearInterp (void); void setTableRamp (long tableSize = NONE); void setTableSinewave (long tableSize = NONE); void setTableSquare (long tableSize = NONE); void setTableTriangle (long tableSize = NONE); void shift (long shiftAmount); protected: sampleType outputValue; double index; Array waveTable; double magicNumber; double increment; int interp; // interpolation type int repeat; // number of repetitions done }; #endif /* _WAVETABLE_H_INCLUDED */ // md5sum: 700c22d28b3b27fdd3ffe9168b83cfd9 Wavetable.h [20050403]