35 lines
810 B
C++
35 lines
810 B
C++
#pragma once
|
|
#include "StkAll.h"
|
|
|
|
/**
|
|
* @brief Demo how you can compose your own instrument
|
|
* @author Phil Schatzmann
|
|
*/
|
|
class MyFirstInstrument : public Instrmnt {
|
|
public:
|
|
MyFirstInstrument() {
|
|
adsr.setAllTimes( 0.005, 0.01, 0.8, 0.010 );
|
|
echo.setDelay(1024);
|
|
}
|
|
|
|
//! Start a note with the given frequency and amplitude.
|
|
void noteOn( StkFloat frequency, StkFloat amplitude ) {
|
|
wave.setFrequency(frequency);
|
|
adsr.keyOn();
|
|
}
|
|
|
|
//! Stop a note with the given amplitude (speed of decay).
|
|
void noteOff( StkFloat amplitude ){
|
|
adsr.keyOff();
|
|
}
|
|
|
|
float tick( unsigned int channel = 0) override {
|
|
return echo.tick(wave.tick()) * adsr.tick();
|
|
};
|
|
|
|
protected:
|
|
stk::SineWave wave;
|
|
stk::ADSR adsr;
|
|
stk::Echo echo {1024};
|
|
};
|