Home   Information   Classes   Download   Usage   Mail List   Requirements   Links   FAQ   Tutorial


Instrmnt.h
1#ifndef STK_INSTRMNT_H
2#define STK_INSTRMNT_H
3
4#include "Stk.h"
5
6namespace stk {
7
8/***************************************************/
17/***************************************************/
18
19class Instrmnt : public Stk
20{
21 public:
23 Instrmnt( void ) { lastFrame_.resize( 1, 1, 0.0 ); };
24
26
29 virtual void clear( void ) {};
30
32 virtual void noteOn( StkFloat frequency, StkFloat amplitude ) = 0;
33
35 virtual void noteOff( StkFloat amplitude ) = 0;
36
38 virtual void setFrequency( StkFloat frequency );
39
41 virtual void controlChange(int number, StkFloat value);
42
44 unsigned int channelsOut( void ) const { return lastFrame_.channels(); };
45
47 const StkFrames& lastFrame( void ) const { return lastFrame_; };
48
50
58 StkFloat lastOut( unsigned int channel = 0 );
59
61
64 virtual StkFloat tick( unsigned int channel = 0 ) = 0;
65
67
74 virtual StkFrames& tick( StkFrames& frames, unsigned int channel = 0 ) = 0;
75
76 protected:
77
78 StkFrames lastFrame_;
79
80};
81
82inline void Instrmnt :: setFrequency( StkFloat frequency )
83{
84 oStream_ << "Instrmnt::setFrequency: virtual setFrequency function call!";
85 handleError( StkError::WARNING );
86}
87
88inline StkFloat Instrmnt :: lastOut( unsigned int channel )
89{
90#if defined(_STK_DEBUG_)
91 if ( channel >= lastFrame_.channels() ) {
92 oStream_ << "Instrmnt::lastOut(): channel argument is invalid!";
93 handleError( StkError::FUNCTION_ARGUMENT );
94 }
95#endif
96
97 return lastFrame_[channel];
98}
99
100inline void Instrmnt :: controlChange( int number, StkFloat value )
101{
102 oStream_ << "Instrmnt::controlChange: virtual function call!";
103 handleError( StkError::WARNING );
104}
105
106} // stk namespace
107
108#endif
STK instrument abstract base class.
Definition Instrmnt.h:20
virtual void noteOn(StkFloat frequency, StkFloat amplitude)=0
Start a note with the given frequency and amplitude.
virtual void noteOff(StkFloat amplitude)=0
Stop a note with the given amplitude (speed of decay).
virtual void setFrequency(StkFloat frequency)
Set instrument parameters for a particular frequency.
Definition Instrmnt.h:82
virtual void controlChange(int number, StkFloat value)
Perform the control change specified by number and value (0.0 - 128.0).
Definition Instrmnt.h:100
virtual void clear(void)
Reset and clear all internal state (for subclasses).
Definition Instrmnt.h:29
unsigned int channelsOut(void) const
Return the number of output channels for the class.
Definition Instrmnt.h:44
Instrmnt(void)
Class constructor.
Definition Instrmnt.h:23
const StkFrames & lastFrame(void) const
Return an StkFrames reference to the last output sample frame.
Definition Instrmnt.h:47
StkFloat lastOut(unsigned int channel=0)
Return the specified channel value of the last computed frame.
Definition Instrmnt.h:88
virtual StkFloat tick(unsigned int channel=0)=0
Compute one sample frame and return the specified channel value.
virtual StkFrames & tick(StkFrames &frames, unsigned int channel=0)=0
Fill the StkFrames object with computed sample frames, starting at the specified channel.
An STK class to handle vectorized audio data.
Definition Stk.h:279
unsigned int channels(void) const
Return the number of channels represented by the data.
Definition Stk.h:416
virtual void resize(size_t nFrames, unsigned int nChannels=1)
Resize self to represent the specified number of channels and frames.
STK base class.
Definition Stk.h:136
The STK namespace.
Definition ADSR.h:6

The Synthesis ToolKit in C++ (STK)
©1995--2023 Perry R. Cook and Gary P. Scavone. All Rights Reserved.