14 #define USE_TEST_MAIN // use the main() function in test_support.h
36 logMsg(
"playing clipped sin...");
45 double resp[2] = { 0, 1 };
46 double freq[4] = { 0, 2000, 3000, 22050 };
47 double weight[2] = { 10, 20 };
51 logMsg(
"playing FIR filtered noise...");
63 logMsg(
"playing Butterworth high-passed white noise...");
72 logMsg(
"playing Butterworth band-passed white noise...");
80 logMsg(
"playing Butterworth low-passed white noise...");
88 logMsg(
"playing Butterworth band-rejected white noise...");
96 Notch notch(white5, 500.f, 0.99995f);
97 logMsg(
"playing Notch filtered white noise...");
104 Formant formant(white6, 100.f, 0.5f);
105 logMsg(
"playing Formant filtered white noise...");
113 logMsg(
"playing All-passed square wave...");
118 float bcoeffs[3] = {0.05f, 0.f, -0.0496f};
119 float acoeffs[2] = {-1.843f, 0.9f};
121 Filter filter(white0, bcoeffs ,acoeffs, 3, 2);
122 logMsg(
"playing BP filtered white noise...");
143 logMsg(
"playing dynamic Butterworth band-passed white noise...");
159 logMsg(
"playing filtered snd file...");
169 float scale = 3.0f / (float) num;
171 for (
int i = 0; i < num; i++) {
182 logMsg(
"playing mix of %d Butterworth band-passed white noise layers...", num);
192 ADSR mChiffEnv(1, 0.01, 0.01, 0.0, 1.5);
201 logMsg(
"playing Reverb test\n");
202 theIO->setRoot(mReverb);
203 for (
unsigned i = 0; i < 4; i++) {
215 ADSR mEnv(1, 0.005, 0.01, 0.0, 1.5);
217 float ctrFrq =
fRandB(3000, 1000);
222 Panner mPanner(mFilter, 0.0);
226 theIO->setRoot(mReverb);
231 logMsg(
"playing Stereoverb test\n");
232 for (
unsigned i = 0; i < 10; i++) {
247 ADSR mChiffEnv(1, 0.01, 0.01, 0.0, 1.5);
271 logMsg(
"playing multi-tap delay test\n");
273 for (
unsigned i = 0; i < 4; i++) {
289 vox.setFrequency(f_env);
293 logMsg(
"playing random gliss in a block up-sizer...");
305 vox.setFrequency(f_env);
309 logMsg(
"playing random gliss in a block down-sizer...");
332 logMsg(
"playing splitter/joiner/mixer-based crossover filter...");
360 logMsg(
"playing splitter/joiner/mixer-based crossover filter...");
372 vox.setFrequency(f_env);
382 logMsg(
"playing fan-out + mixer 1...");
394 vox.setFrequency(f_env);
405 logMsg(
"playing fan-out + mixer 2...");
418 float duration = 4.0f;
425 for (
unsigned i = 0; i < 4; i++) {
429 insts.push_back(pan);
431 logMsg(
"playing mix of 4 sweep layers...");
437 for (
unsigned i = 0; i < 2; i++)
443 for (
unsigned i = 0; i < 4; i++) {
453 for (
unsigned i = 2; i < 5; i++)
459 for (
unsigned i = 0; i < 2; i++) {
468 for (
unsigned i = 0; i < 6; i++)
470 logMsg(
"removed all but one");
486 unsigned numFrames = outputBuffer.mNumFrames;
493 for (
unsigned i = 0; i < numFrames; i++) {
494 val = *inPtr++ * mCoeff;
495 *out++ = val + mStore;
509 logMsg(
"playing filtered snd file...");
533 "Clipper",
testClipper,
"Demonstrate the signal clipper",
534 "FIR filter",
testFIR,
"Play an FIR band-pass filter",
535 "All filters",
testFilters,
"Test different filter types",
539 "Reverb",
testReverb,
"Show mono reverb on impulses",
541 "Multi-tap delay",
testMultiTap,
"Play a multi-tap delay line",
542 "Split/Join filter",
testSplitJoin1,
"Play a splitter/joiner cross-over filter",
543 "Split/Join/Mix filter",
testSplitJoin2,
"Play a splitter/joiner/mixer cross-over filter",
544 "FanOut + Mixer 1",
testFanMix1,
"Play a sound through fan-out + mixer",
545 "FanOut + Mixer 2",
testFanMix2,
"Play a sound through fan-out + mixer",
549 "Sample-avg filter",
testSAFilter,
"Demo in-line sample-average-filter class",