📄 stifkarp.h
字号:
/***************************************************//*! \class StifKarp \brief STK plucked stiff string instrument. This class implements a simple plucked string algorithm (Karplus Strong) with enhancements (Jaffe-Smith, Smith, and others), including string stiffness and pluck position controls. The stiffness is modeled with allpass filters. This is a digital waveguide model, making its use possibly subject to patents held by Stanford University, Yamaha, and others. Control Change Numbers: - Pickup Position = 4 - String Sustain = 11 - String Stretch = 1 by Perry R. Cook and Gary P. Scavone, 1995 - 2005.*//***************************************************/#ifndef STK_STIFKARP_H#define STK_STIFKARP_H#include "Instrmnt.h"#include "DelayL.h"#include "DelayA.h"#include "OneZero.h"#include "Noise.h"#include "BiQuad.h"class StifKarp : public Instrmnt{ public: //! Class constructor, taking the lowest desired playing frequency. StifKarp(StkFloat lowestFrequency); //! Class destructor. ~StifKarp(); //! Reset and clear all internal state. void clear(); //! Set instrument parameters for a particular frequency. void setFrequency(StkFloat frequency); //! Set the stretch "factor" of the string (0.0 - 1.0). void setStretch(StkFloat stretch); //! Set the pluck or "excitation" position along the string (0.0 - 1.0). void setPickupPosition(StkFloat position); //! Set the base loop gain. /*! The actual loop gain is set according to the frequency. Because of high-frequency loop filter roll-off, higher frequency settings have greater loop gains. */ void setBaseLoopGain(StkFloat aGain); //! Pluck the string with the given amplitude using the current frequency. void pluck(StkFloat amplitude); //! Start a note with the given frequency and amplitude. void noteOn(StkFloat frequency, StkFloat amplitude); //! Stop a note with the given amplitude (speed of decay). void noteOff(StkFloat amplitude); //! Perform the control change specified by \e number and \e value (0.0 - 128.0). void controlChange(int number, StkFloat value); protected: StkFloat computeSample( void ); DelayA delayLine_; DelayL combDelay_; OneZero filter_; Noise noise_; BiQuad biquad_[4]; unsigned long length_; StkFloat loopGain_; StkFloat baseLoopGain_; StkFloat lastFrequency_; StkFloat lastLength_; StkFloat stretching_; StkFloat pluckAmplitude_; StkFloat pickupPosition_;};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -