Home Information Classes Download Usage Mail List Requirements Links FAQ Tutorial
PhISEM and PhOLIES class. More...
#include <Shakers.h>
Public Member Functions | |
Shakers (void) | |
Class constructor. | |
~Shakers (void) | |
Class destructor. | |
void | noteOn (StkFloat instrument, StkFloat amplitude) |
Start a note with the given instrument and amplitude. | |
void | noteOff (StkFloat amplitude) |
Stop a note with the given amplitude (speed of decay). | |
void | controlChange (int number, StkFloat value) |
Perform the control change specified by number and value (0.0 - 128.0). | |
StkFloat | tick (unsigned int channel=0) |
Compute and return one output sample. | |
StkFrames & | tick (StkFrames &frames, unsigned int channel=0) |
Fill a channel of the StkFrames object with computed outputs. |
PhISEM and PhOLIES class.
PhISEM (Physically Informed Stochastic Event Modeling) is an algorithmic approach for simulating collisions of multiple independent sound producing objects. This class is a meta-model that can simulate a Maraca, Sekere, Cabasa, Bamboo Wind Chimes, Water Drops, Tambourine, Sleighbells, and a Guiro.
PhOLIES (Physically-Oriented Library of Imitated Environmental Sounds) is a similar approach for the synthesis of environmental sounds. This class implements simulations of breaking sticks, crunchy snow (or not), a wrench, sandpaper, and more.
Control Change Numbers:
by Perry R. Cook, 1995-2011.
void stk::Shakers::noteOn | ( | StkFloat | instrument, | |
StkFloat | amplitude | |||
) | [virtual] |
Start a note with the given instrument and amplitude.
Use the instrument numbers above, converted to frequency values as if MIDI note numbers, to select a particular instrument.
Implements stk::Instrmnt.
Fill a channel of the StkFrames object with computed outputs.
The channel
argument must be less than the number of channels in the StkFrames argument (the first channel is specified by 0). However, range checking is only performed if _STK_DEBUG_ is defined during compilation, in which case an out-of-range value will trigger an StkError exception.
Implements stk::Instrmnt.
00140 { 00141 unsigned int nChannels = lastFrame_.channels(); 00142 #if defined(_STK_DEBUG_) 00143 if ( channel > frames.channels() - nChannels ) { 00144 oStream_ << "Shakers::tick(): channel and StkFrames arguments are incompatible!"; 00145 handleError( StkError::FUNCTION_ARGUMENT ); 00146 } 00147 #endif 00148 00149 StkFloat *samples = &frames[channel]; 00150 unsigned int j, hop = frames.channels() - nChannels; 00151 if ( nChannels == 1 ) { 00152 for ( unsigned int i=0; i<frames.frames(); i++, samples += hop ) 00153 *samples++ = tick(); 00154 } 00155 else { 00156 for ( unsigned int i=0; i<frames.frames(); i++, samples += hop ) { 00157 *samples++ = tick(); 00158 for ( j=1; j<nChannels; j++ ) 00159 *samples++ = lastFrame_[j]; 00160 } 00161 } 00162 00163 return frames; 00164 }
The Synthesis ToolKit in C++ (STK) |
©1995-2011 Perry R. Cook and Gary P. Scavone. All Rights Reserved. |