57 void noteOn( StkFloat frequency, StkFloat amplitude );
60 void noteOff( StkFloat amplitude );
66 StkFloat
tick(
unsigned int channel = 0 );
86 StkFloat maxPressure_;
88 StkFloat vibratoGain_;
95 StkFloat breathPressure;
96 StkFloat randPressure;
97 StkFloat pressureDiff;
100 breathPressure = maxPressure_ * adsr_.
tick();
101 breathPressure += vibratoGain_ * vibrato_.
tick();
103 pressureDiff = breathPressure - resonator_.
lastOut();
105 randPressure = noiseGain_ * noise_.
tick();
106 randPressure *= breathPressure;
107 randPressure *= (1.0 + pressureDiff);
109 resonator_.
tick( breathPressure + randPressure - ( jetTable_.
tick( pressureDiff ) * pressureDiff ) );
110 lastFrame_[0] = 0.2 * outputGain_ * dcBlock_.
tick( pressureDiff );
112 return lastFrame_[0];
117 unsigned int nChannels = lastFrame_.
channels();
118 #if defined(_STK_DEBUG_) 119 if ( channel > frames.
channels() - nChannels ) {
120 oStream_ <<
"BlowBotl::tick(): channel and StkFrames arguments are incompatible!";
125 StkFloat *samples = &frames[channel];
126 unsigned int j, hop = frames.
channels() - nChannels;
127 if ( nChannels == 1 ) {
128 for (
unsigned int i=0; i<frames.
frames(); i++, samples += hop )
132 for (
unsigned int i=0; i<frames.
frames(); i++, samples += hop ) {
134 for ( j=1; j<nChannels; j++ )
135 *samples++ = lastFrame_[j];
void stopBlowing(StkFloat rate)
Decrease breath velocity with given rate of decrease.
static void handleError(const char *message, StkError::Type type)
Static function for error reporting and handling using c-strings.
STK jet table class.
Definition: JetTable.h:23
StkFloat tick(StkFloat input)
Input one sample to the filter and return one output.
Definition: PoleZero.h:79
StkFloat tick(void)
Compute and return one output sample.
Definition: Noise.h:59
StkFloat lastOut(void) const
Return the last computed output value.
Definition: BiQuad.h:87
unsigned int frames(void) const
Return the number of sample frames represented by the data.
Definition: Stk.h:407
STK sinusoid oscillator class.
Definition: SineWave.h:25
void controlChange(int number, StkFloat value)
Perform the control change specified by number and value (0.0 - 128.0).
void noteOff(StkFloat amplitude)
Stop a note with the given amplitude (speed of decay).
The STK namespace.
Definition: ADSR.h:6
StkFloat tick(void)
Compute and return one output sample.
Definition: SineWave.h:99
void noteOn(StkFloat frequency, StkFloat amplitude)
Start a note with the given frequency and amplitude.
void startBlowing(StkFloat amplitude, StkFloat rate)
Apply breath velocity to instrument with given amplitude and rate of increase.
unsigned int channels(void) const
Return the number of channels represented by the data.
Definition: Stk.h:404
STK blown bottle instrument class.
Definition: BlowBotl.h:32
STK biquad (two-pole, two-zero) filter class.
Definition: BiQuad.h:20
StkFloat tick(StkFloat input)
Take one sample input and map to one sample of output.
Definition: JetTable.h:54
STK ADSR envelope class.
Definition: ADSR.h:24
An STK class to handle vectorized audio data.
Definition: Stk.h:275
StkFloat tick(unsigned int channel=0)
Compute and return one output sample.
Definition: BlowBotl.h:93
STK one-pole, one-zero filter class.
Definition: PoleZero.h:21
STK instrument abstract base class.
Definition: Instrmnt.h:19
StkFloat tick(void)
Compute and return one output sample.
Definition: ADSR.h:115
void setFrequency(StkFloat frequency)
Set instrument parameters for a particular frequency.
STK noise generator.
Definition: Noise.h:21
void clear(void)
Reset and clear all internal state.
~BlowBotl(void)
Class destructor.
BlowBotl(void)
Class constructor.
StkFloat tick(StkFloat input)
Input one sample to the filter and return a reference to one output.
Definition: BiQuad.h:119