mirror of
https://github.com/thestk/stk
synced 2026-04-22 23:44:36 +00:00
Version 4.0
This commit is contained in:
committed by
Stephen Sinclair
parent
3f126af4e5
commit
81475b04c5
@@ -1,39 +1,102 @@
|
||||
/**********************************************************/
|
||||
/* PhISEM (Physically Informed Stochastic Event Modeling */
|
||||
/* by Perry R. Cook, Princeton, February 1997 */
|
||||
/* */
|
||||
/* Meta-model that simulates all of: */
|
||||
/* Maraca Simulation by Perry R. Cook, Princeton, 1996-7 */
|
||||
/* Sekere Simulation by Perry R. Cook, Princeton, 1996-7 */
|
||||
/* Cabasa Simulation by Perry R. Cook, Princeton, 1996-7 */
|
||||
/* Bamboo Windchime Simulation, by Perry R. Cook, 1996-7 */
|
||||
/* Water Drops Simulation, by Perry R. Cook, 1996-7 */
|
||||
/* Tambourine Simulation, by Perry R. Cook, 1996-7 */
|
||||
/* Sleighbells Simulation, by Perry R. Cook, 1996-7 */
|
||||
/* Guiro Simulation, by Perry R. Cook, 1996-7 */
|
||||
/* */
|
||||
/**********************************************************/
|
||||
/* PhOLIES (Physically-Oriented Library of */
|
||||
/* Imitated Environmental Sounds), Perry Cook, 1997-9 */
|
||||
/* Stix1 (walking on brittle sticks) */
|
||||
/* Crunch1 (like new fallen snow, or not) */
|
||||
/* Wrench (basic socket wrench, friend of guiro) */
|
||||
/* Sandpapr (sandpaper) */
|
||||
/**********************************************************/
|
||||
/***************************************************/
|
||||
/*! \class Shakers
|
||||
\brief PhISEM and PhOLIES class.
|
||||
|
||||
#if !defined(__Shakers_h)
|
||||
#define __Shakers_h
|
||||
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:
|
||||
- Shake Energy = 2
|
||||
- System Decay = 4
|
||||
- Number Of Objects = 11
|
||||
- Resonance Frequency = 1
|
||||
- Shake Energy = 128
|
||||
- Instrument Selection = 1071
|
||||
- Maraca = 0
|
||||
- Cabasa = 1
|
||||
- Sekere = 2
|
||||
- Guiro = 3
|
||||
- Water Drops = 4
|
||||
- Bamboo Chimes = 5
|
||||
- Tambourine = 6
|
||||
- Sleigh Bells = 7
|
||||
- Sticks = 8
|
||||
- Crunch = 9
|
||||
- Wrench = 10
|
||||
- Sand Paper = 11
|
||||
- Coke Can = 12
|
||||
- Next Mug = 13
|
||||
- Penny + Mug = 14
|
||||
- Nickle + Mug = 15
|
||||
- Dime + Mug = 16
|
||||
- Quarter + Mug = 17
|
||||
- Franc + Mug = 18
|
||||
- Peso + Mug = 19
|
||||
- Big Rocks = 20
|
||||
- Little Rocks = 21
|
||||
- Tuned Bamboo Chimes = 22
|
||||
|
||||
by Perry R. Cook, 1996 - 1999.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
#if !defined(__SHAKERS_H)
|
||||
#define __SHAKERS_H
|
||||
|
||||
#include "Instrmnt.h"
|
||||
|
||||
#define MAX_FREQS 8
|
||||
#define NUM_INSTR 13
|
||||
#define NUM_INSTR 24
|
||||
|
||||
class Shakers : public Instrmnt
|
||||
{
|
||||
protected:
|
||||
int instType;
|
||||
public:
|
||||
//! Class constructor.
|
||||
Shakers();
|
||||
|
||||
//! Class destructor.
|
||||
~Shakers();
|
||||
|
||||
//! 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.
|
||||
*/
|
||||
virtual void noteOn(MY_FLOAT instrument, MY_FLOAT amplitude);
|
||||
|
||||
//! Stop a note with the given amplitude (speed of decay).
|
||||
virtual void noteOff(MY_FLOAT amplitude);
|
||||
|
||||
//! Compute one output sample.
|
||||
MY_FLOAT tick();
|
||||
|
||||
//! Perform the control change specified by \e number and \e value (0.0 - 128.0).
|
||||
virtual void controlChange(int number, MY_FLOAT value);
|
||||
|
||||
protected:
|
||||
|
||||
int setupName(char* instr);
|
||||
int setupNum(int inst);
|
||||
int setFreqAndReson(int which, MY_FLOAT freq, MY_FLOAT reson);
|
||||
void setDecays(MY_FLOAT sndDecay, MY_FLOAT sysDecay);
|
||||
void setFinalZs(MY_FLOAT z0, MY_FLOAT z1, MY_FLOAT z2);
|
||||
MY_FLOAT wuter_tick();
|
||||
MY_FLOAT tbamb_tick();
|
||||
MY_FLOAT ratchet_tick();
|
||||
|
||||
int instType;
|
||||
int ratchetPos, lastRatchetPos;
|
||||
MY_FLOAT shakeEnergy;
|
||||
MY_FLOAT inputs[MAX_FREQS];
|
||||
@@ -42,7 +105,7 @@ class Shakers : public Instrmnt
|
||||
MY_FLOAT sndLevel;
|
||||
MY_FLOAT baseGain;
|
||||
MY_FLOAT gains[MAX_FREQS];
|
||||
int num_freqs;
|
||||
int nFreqs;
|
||||
MY_FLOAT t_center_freqs[MAX_FREQS];
|
||||
MY_FLOAT center_freqs[MAX_FREQS];
|
||||
MY_FLOAT resons[MAX_FREQS];
|
||||
@@ -50,28 +113,16 @@ class Shakers : public Instrmnt
|
||||
int freqalloc[MAX_FREQS];
|
||||
MY_FLOAT soundDecay;
|
||||
MY_FLOAT systemDecay;
|
||||
MY_FLOAT num_objects;
|
||||
MY_FLOAT nObjects;
|
||||
MY_FLOAT collLikely;
|
||||
MY_FLOAT totalEnergy;
|
||||
MY_FLOAT ratchet,ratchetDelta;
|
||||
MY_FLOAT finalZ[3];
|
||||
MY_FLOAT finalZCoeffs[3];
|
||||
void setDecays(MY_FLOAT sndDecay, MY_FLOAT sysDecay);
|
||||
void setFinalZs(MY_FLOAT z0, MY_FLOAT z1, MY_FLOAT z2);
|
||||
MY_FLOAT wuter_tick();
|
||||
MY_FLOAT ratchet_tick();
|
||||
MY_FLOAT defObjs[NUM_INSTR];
|
||||
MY_FLOAT defDecays[NUM_INSTR];
|
||||
MY_FLOAT decayScale[NUM_INSTR];
|
||||
public:
|
||||
Shakers();
|
||||
~Shakers();
|
||||
int setupName(char* instr);
|
||||
int setupNum(int inst);
|
||||
virtual void noteOn(MY_FLOAT freq, MY_FLOAT amp);
|
||||
virtual void noteOff(MY_FLOAT amp);
|
||||
MY_FLOAT tick();
|
||||
virtual void controlChange(int number, MY_FLOAT value);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user