mirror of
https://github.com/thestk/stk
synced 2026-01-11 20:11:52 +00:00
47 lines
1.2 KiB
C++
47 lines
1.2 KiB
C++
/******************************************/
|
|
/* Enhanced (Jaffe-Smith, Smith, others) */
|
|
/* Karplus-Strong plucked model */
|
|
/* by Perry Cook, 1995-96 */
|
|
/* This is the super-class, with no */
|
|
/* excitation specified. So this one by */
|
|
/* itself doesn't make any sound. */
|
|
/******************************************/
|
|
|
|
#if !defined(__Plucked2_h)
|
|
#define __Plucked2_h
|
|
|
|
#include "Instrmnt.h"
|
|
#include "DLineL.h"
|
|
#include "DLineA.h"
|
|
#include "OneZero.h"
|
|
|
|
class Plucked2 : public Instrmnt
|
|
{
|
|
protected:
|
|
DLineA *delayLine;
|
|
DLineA *delayLine2;
|
|
DLineL *combDelay;
|
|
OneZero *filter;
|
|
OneZero *filter2;
|
|
long length;
|
|
MY_FLOAT loopGain;
|
|
MY_FLOAT baseLoopGain;
|
|
MY_FLOAT lastFreq;
|
|
MY_FLOAT lastLength;
|
|
MY_FLOAT detuning;
|
|
MY_FLOAT pluckAmp;
|
|
MY_FLOAT pluckPos;
|
|
public:
|
|
Plucked2(MY_FLOAT lowestFreq);
|
|
~Plucked2();
|
|
void clear();
|
|
virtual void setFreq(MY_FLOAT frequency);
|
|
void setDetune(MY_FLOAT detune);
|
|
void setFreqAndDetune(MY_FLOAT frequency, MY_FLOAT detune);
|
|
void setPluckPos(MY_FLOAT position);
|
|
void setBaseLoopGain(MY_FLOAT aGain);
|
|
virtual void noteOff(MY_FLOAT amp);
|
|
};
|
|
|
|
#endif
|