📄 shakers.cpp
字号:
/***************************************************//*! \class Shakers \brief 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: - 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 - 2004.*//***************************************************/#include "Stk.h"#if !defined(SYMBIAN)#include <cmath>#else#include "symbmath.h"#endifint my_random(int max) // Return Random Int Between 0 and max{ int temp = (int) ((float)max * rand() / (RAND_MAX + 1.0) ); return temp;}StkFloat float_random(StkFloat max) // Return random float between 0.0 and max{ StkFloat temp = (StkFloat) (max * rand() / (RAND_MAX + 1.0) ); return temp;}StkFloat noise_tick() // Return random StkFloat float between -1.0 and 1.0{ StkFloat temp = (StkFloat) (2.0 * rand() / (RAND_MAX + 1.0) ); temp -= 1.0; return temp;}//#if !defined(SYMBIAN)// Maracaconst StkFloat MARA_SOUND_DECAY = 0.95;const StkFloat MARA_SYSTEM_DECAY = 0.999;const StkFloat MARA_GAIN = 20.0;const StkFloat MARA_NUM_BEANS = 25;const StkFloat MARA_CENTER_FREQ = 3200.0;const StkFloat MARA_RESON = 0.96;// Sekereconst StkFloat SEKE_SOUND_DECAY = 0.96;const StkFloat SEKE_SYSTEM_DECAY = 0.999;const StkFloat SEKE_GAIN = 20.0;const StkFloat SEKE_NUM_BEANS = 64;const StkFloat SEKE_CENTER_FREQ = 5500.0;const StkFloat SEKE_RESON = 0.6;// Sandpaperconst StkFloat SANDPAPR_SOUND_DECAY = 0.999;const StkFloat SANDPAPR_SYSTEM_DECAY = 0.999;const StkFloat SANDPAPR_GAIN = 0.5;const StkFloat SANDPAPR_NUM_GRAINS = 128;const StkFloat SANDPAPR_CENTER_FREQ = 4500.0;const StkFloat SANDPAPR_RESON = 0.6;// Cabasaconst StkFloat CABA_SOUND_DECAY = 0.96;const StkFloat CABA_SYSTEM_DECAY = 0.997;const StkFloat CABA_GAIN = 40.0;const StkFloat CABA_NUM_BEADS = 512;const StkFloat CABA_CENTER_FREQ = 3000.0;const StkFloat CABA_RESON = 0.7;// Bamboo Wind Chimesconst StkFloat BAMB_SOUND_DECAY = 0.95;const StkFloat BAMB_SYSTEM_DECAY = 0.9999;const StkFloat BAMB_GAIN = 2.0;const StkFloat BAMB_NUM_TUBES = 1.25;const StkFloat BAMB_CENTER_FREQ0 = 2800.0;const StkFloat BAMB_CENTER_FREQ1 = 0.8 * 2800.0;const StkFloat BAMB_CENTER_FREQ2 = 1.2 * 2800.0;const StkFloat BAMB_RESON = 0.995;// Tuned Bamboo Wind Chimes (Anklung)const StkFloat TBAMB_SOUND_DECAY = 0.95;const StkFloat TBAMB_SYSTEM_DECAY = 0.9999;const StkFloat TBAMB_GAIN = 1.0;const StkFloat TBAMB_NUM_TUBES = 1.25;const StkFloat TBAMB_CENTER_FREQ0 = 1046.6;const StkFloat TBAMB_CENTER_FREQ1 = 1174.8;const StkFloat TBAMB_CENTER_FREQ2 = 1397.0;const StkFloat TBAMB_CENTER_FREQ3 = 1568.0;const StkFloat TBAMB_CENTER_FREQ4 = 1760.0;const StkFloat TBAMB_CENTER_FREQ5 = 2093.3;const StkFloat TBAMB_CENTER_FREQ6 = 2350.0;const StkFloat TBAMB_RESON = 0.996;// Water Dropsconst StkFloat WUTR_SOUND_DECAY = 0.95;const StkFloat WUTR_SYSTEM_DECAY = 0.996;const StkFloat WUTR_GAIN = 1.0;const StkFloat WUTR_NUM_SOURCES = 10;const StkFloat WUTR_CENTER_FREQ0 = 450.0;const StkFloat WUTR_CENTER_FREQ1 = 600.0;const StkFloat WUTR_CENTER_FREQ2 = 750.0;const StkFloat WUTR_RESON = 0.9985;const StkFloat WUTR_FREQ_SWEEP = 1.0001;// Tambourineconst StkFloat TAMB_SOUND_DECAY = 0.95;const StkFloat TAMB_SYSTEM_DECAY = 0.9985;const StkFloat TAMB_GAIN = 5.0;const StkFloat TAMB_NUM_TIMBRELS = 32;const StkFloat TAMB_SHELL_FREQ = 2300;const StkFloat TAMB_SHELL_GAIN = 0.1;const StkFloat TAMB_SHELL_RESON = 0.96;const StkFloat TAMB_CYMB_FREQ1 = 5600;const StkFloat TAMB_CYMB_FREQ2 = 8100;const StkFloat TAMB_CYMB_RESON = 0.99;// Sleighbellsconst StkFloat SLEI_SOUND_DECAY = 0.97;const StkFloat SLEI_SYSTEM_DECAY = 0.9994;const StkFloat SLEI_GAIN = 1.0;const StkFloat SLEI_NUM_BELLS = 32;const StkFloat SLEI_CYMB_FREQ0 = 2500;const StkFloat SLEI_CYMB_FREQ1 = 5300;const StkFloat SLEI_CYMB_FREQ2 = 6500;const StkFloat SLEI_CYMB_FREQ3 = 8300;const StkFloat SLEI_CYMB_FREQ4 = 9800;const StkFloat SLEI_CYMB_RESON = 0.99;// Guiroconst StkFloat GUIR_SOUND_DECAY = 0.95;const StkFloat GUIR_GAIN = 10.0;const StkFloat GUIR_NUM_PARTS = 128;const StkFloat GUIR_GOURD_FREQ = 2500.0;const StkFloat GUIR_GOURD_RESON = 0.97;const StkFloat GUIR_GOURD_FREQ2 = 4000.0;const StkFloat GUIR_GOURD_RESON2 = 0.97;// Wrenchconst StkFloat WRENCH_SOUND_DECAY = 0.95;const StkFloat WRENCH_GAIN = 5;const StkFloat WRENCH_NUM_PARTS = 128;const StkFloat WRENCH_FREQ = 3200.0;const StkFloat WRENCH_RESON = 0.99;const StkFloat WRENCH_FREQ2 = 8000.0;const StkFloat WRENCH_RESON2 = 0.992;// Cokecanconst StkFloat COKECAN_SOUND_DECAY = 0.97;const StkFloat COKECAN_SYSTEM_DECAY = 0.999;const StkFloat COKECAN_GAIN = 0.8;const StkFloat COKECAN_NUM_PARTS = 48;const StkFloat COKECAN_HELMFREQ = 370;const StkFloat COKECAN_HELM_RES = 0.99;const StkFloat COKECAN_METLFREQ0 = 1025;const StkFloat COKECAN_METLFREQ1 = 1424;const StkFloat COKECAN_METLFREQ2 = 2149;const StkFloat COKECAN_METLFREQ3 = 3596;const StkFloat COKECAN_METL_RES = 0.992;// PhOLIES (Physically-Oriented Library of Imitated Environmental// Sounds), Perry Cook, 1997-8// Stix1const StkFloat STIX1_SOUND_DECAY = 0.96;const StkFloat STIX1_SYSTEM_DECAY = 0.998;const StkFloat STIX1_GAIN = 30.0;const StkFloat STIX1_NUM_BEANS = 2;const StkFloat STIX1_CENTER_FREQ = 5500.0;const StkFloat STIX1_RESON = 0.6;// Crunch1const StkFloat CRUNCH1_SOUND_DECAY = 0.95;const StkFloat CRUNCH1_SYSTEM_DECAY = 0.99806;const StkFloat CRUNCH1_GAIN = 20.0;const StkFloat CRUNCH1_NUM_BEADS = 7;const StkFloat CRUNCH1_CENTER_FREQ = 800.0;const StkFloat CRUNCH1_RESON = 0.95;// Nextmugconst StkFloat NEXTMUG_SOUND_DECAY = 0.97;const StkFloat NEXTMUG_SYSTEM_DECAY = 0.9995;const StkFloat NEXTMUG_GAIN = 0.8;const StkFloat NEXTMUG_NUM_PARTS = 3;const StkFloat NEXTMUG_FREQ0 = 2123;const StkFloat NEXTMUG_FREQ1 = 4518;const StkFloat NEXTMUG_FREQ2 = 8856;const StkFloat NEXTMUG_FREQ3 = 10753;const StkFloat NEXTMUG_RES = 0.997;const StkFloat PENNY_FREQ0 = 11000;const StkFloat PENNY_FREQ1 = 5200;const StkFloat PENNY_FREQ2 = 3835;const StkFloat PENNY_RES = 0.999;const StkFloat NICKEL_FREQ0 = 5583;const StkFloat NICKEL_FREQ1 = 9255;const StkFloat NICKEL_FREQ2 = 9805;const StkFloat NICKEL_RES = 0.9992;const StkFloat DIME_FREQ0 = 4450;const StkFloat DIME_FREQ1 = 4974;const StkFloat DIME_FREQ2 = 9945;const StkFloat DIME_RES = 0.9993;const StkFloat QUARTER_FREQ0 = 1708;const StkFloat QUARTER_FREQ1 = 8863;const StkFloat QUARTER_FREQ2 = 9045;const StkFloat QUARTER_RES = 0.9995;const StkFloat FRANC_FREQ0 = 5583;const StkFloat FRANC_FREQ1 = 11010;const StkFloat FRANC_FREQ2 = 1917;const StkFloat FRANC_RES = 0.9995;const StkFloat PESO_FREQ0 = 7250;const StkFloat PESO_FREQ1 = 8150;const StkFloat PESO_FREQ2 = 10060;const StkFloat PESO_RES = 0.9996;// Big Gravelconst StkFloat BIGROCKS_SOUND_DECAY = 0.98;const StkFloat BIGROCKS_SYSTEM_DECAY = 0.9965;const StkFloat BIGROCKS_GAIN = 20.0;const StkFloat BIGROCKS_NUM_PARTS = 23;const StkFloat BIGROCKS_FREQ = 6460;const StkFloat BIGROCKS_RES = 0.932;// Little Gravelconst StkFloat LITLROCKS_SOUND_DECAY = 0.98;const StkFloat LITLROCKS_SYSTEM_DECAY = 0.99586;const StkFloat LITLROCKS_GAIN = 20.0;const StkFloat LITLROCKS_NUM_PARTS = 1600;const StkFloat LITLROCKS_FREQ = 9000;const StkFloat LITLROCKS_RES = 0.843;//#else/*// Maraca#define MARA_SOUND_DECAY 0.95#define MARA_SYSTEM_DECAY 0.999#define MARA_GAIN 20.0#define MARA_NUM_BEANS 25#define MARA_CENTER_FREQ 3200.0#define MARA_RESON 0.96// Sekere#define SEKE_SOUND_DECAY 0.96#define SEKE_SYSTEM_DECAY 0.999#define SEKE_GAIN 20.0#define SEKE_NUM_BEANS 64#define SEKE_CENTER_FREQ 5500.0#define SEKE_RESON 0.6// Sandpaper#define SANDPAPR_SOUND_DECAY 0.999#define SANDPAPR_SYSTEM_DECAY 0.999#define SANDPAPR_GAIN 0.5#define SANDPAPR_NUM_GRAINS 128#define SANDPAPR_CENTER_FREQ 4500.0#define SANDPAPR_RESON 0.6// Cabasa#define CABA_SOUND_DECAY 0.96#define CABA_SYSTEM_DECAY 0.997#define CABA_GAIN 40.0#define CABA_NUM_BEADS 512#define CABA_CENTER_FREQ 3000.0#define CABA_RESON 0.7// Bamboo Wind Chimes#define BAMB_SOUND_DECAY 0.95#define BAMB_SYSTEM_DECAY 0.9999#define BAMB_GAIN 2.0#define BAMB_NUM_TUBES 1.25#define BAMB_CENTER_FREQ0 2800.0#define BAMB_CENTER_FREQ1 0.8 * 2800.0#define BAMB_CENTER_FREQ2 1.2 * 2800.0#define BAMB_RESON 0.995// Tuned Bamboo Wind Chimes (Anklung)#define TBAMB_SOUND_DECAY 0.95#define TBAMB_SYSTEM_DECAY 0.9999#define TBAMB_GAIN 1.0#define TBAMB_NUM_TUBES 1.25#define TBAMB_CENTER_FREQ0 1046.6#define TBAMB_CENTER_FREQ1 1174.8#define TBAMB_CENTER_FREQ2 1397.0#define TBAMB_CENTER_FREQ3 1568.0#define TBAMB_CENTER_FREQ4 1760.0#define TBAMB_CENTER_FREQ5 2093.3#define TBAMB_CENTER_FREQ6 2350.0#define TBAMB_RESON 0.996// Water Drops#define WUTR_SOUND_DECAY 0.95#define WUTR_SYSTEM_DECAY 0.996#define WUTR_GAIN 1.0#define WUTR_NUM_SOURCES 10#define WUTR_CENTER_FREQ0 450.0#define WUTR_CENTER_FREQ1 600.0#define WUTR_CENTER_FREQ2 750.0#define WUTR_RESON 0.9985#define WUTR_FREQ_SWEEP 1.0001// Tambourine#define TAMB_SOUND_DECAY 0.95#define TAMB_SYSTEM_DECAY 0.9985#define TAMB_GAIN 5.0#define TAMB_NUM_TIMBRELS 32#define TAMB_SHELL_FREQ 2300#define TAMB_SHELL_GAIN 0.1#define TAMB_SHELL_RESON 0.96#define TAMB_CYMB_FREQ1 5600#define TAMB_CYMB_FREQ2 8100#define TAMB_CYMB_RESON 0.99// Sleighbells#define SLEI_SOUND_DECAY 0.97#define SLEI_SYSTEM_DECAY 0.9994#define SLEI_GAIN 1.0#define SLEI_NUM_BELLS 32#define SLEI_CYMB_FREQ0 2500#define SLEI_CYMB_FREQ1 5300#define SLEI_CYMB_FREQ2 6500#define SLEI_CYMB_FREQ3 8300#define SLEI_CYMB_FREQ4 9800#define SLEI_CYMB_RESON 0.99// Guiro#define GUIR_SOUND_DECAY 0.95#define GUIR_GAIN 10.0#define GUIR_NUM_PARTS 128#define GUIR_GOURD_FREQ 2500.0#define GUIR_GOURD_RESON 0.97#define GUIR_GOURD_FREQ2 4000.0#define GUIR_GOURD_RESON2 0.97// Wrench#define WRENCH_SOUND_DECAY 0.95#define WRENCH_GAIN 5#define WRENCH_NUM_PARTS 128#define WRENCH_FREQ 3200.0#define WRENCH_RESON 0.99#define WRENCH_FREQ2 8000.0#define WRENCH_RESON2 0.992// Cokecan#define COKECAN_SOUND_DECAY 0.97#define COKECAN_SYSTEM_DECAY 0.999#define COKECAN_GAIN 0.8#define COKECAN_NUM_PARTS 48#define COKECAN_HELMFREQ 370#define COKECAN_HELM_RES 0.99#define COKECAN_METLFREQ0 1025#define COKECAN_METLFREQ1 1424#define COKECAN_METLFREQ2 2149#define COKECAN_METLFREQ3 3596#define COKECAN_METL_RES 0.992// PhOLIES (Physically-Oriented Library of Imitated Environmental// Sounds), Perry Cook, 1997-8// Stix1#define STIX1_SOUND_DECAY 0.96#define STIX1_SYSTEM_DECAY 0.998#define STIX1_GAIN 30.0#define STIX1_NUM_BEANS 2#define STIX1_CENTER_FREQ 5500.0#define STIX1_RESON 0.6// Crunch1#define CRUNCH1_SOUND_DECAY 0.95#define CRUNCH1_SYSTEM_DECAY 0.99806#define CRUNCH1_GAIN 20.0#define CRUNCH1_NUM_BEADS 7#define CRUNCH1_CENTER_FREQ 800.0#define CRUNCH1_RESON 0.95// Nextmug#define NEXTMUG_SOUND_DECAY 0.97#define NEXTMUG_SYSTEM_DECAY 0.9995#define NEXTMUG_GAIN 0.8#define NEXTMUG_NUM_PARTS 3#define NEXTMUG_FREQ0 2123#define NEXTMUG_FREQ1 4518#define NEXTMUG_FREQ2 8856#define NEXTMUG_FREQ3 10753#define NEXTMUG_RES 0.997#define PENNY_FREQ0 11000#define PENNY_FREQ1 5200#define PENNY_FREQ2 3835#define PENNY_RES 0.999#define NICKEL_FREQ0 5583#define NICKEL_FREQ1 9255#define NICKEL_FREQ2 9805#define NICKEL_RES 0.9992#define DIME_FREQ0 4450#define DIME_FREQ1 4974#define DIME_FREQ2 9945#define DIME_RES 0.9993#define QUARTER_FREQ0 1708#define QUARTER_FREQ1 8863#define QUARTER_FREQ2 9045#define QUARTER_RES 0.9995#define FRANC_FREQ0 5583#define FRANC_FREQ1 11010#define FRANC_FREQ2 1917#define FRANC_RES 0.9995#define PESO_FREQ0 7250
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -