void RyanWah::setpreset (int npreset) { const int PRESET_SIZE = 19; const int NUM_PRESETS = 6; int presets[NUM_PRESETS][PRESET_SIZE] = { //Wah Pedal {16, 10, 60, 0, 0, 64, 0, 0, 10, 7, -16, 40, -3, 1, 2000, 450, 1, 1, 0}, //Mutron {0, 15, 138, 0, 0, 64, 0, 50, 0, 30, 32, 0, 5, 1, 2000, 60, 0, 1, 1}, //Phase Wah {0, 50, 60, 0, 0, 64, 30, 10, 10, 30, 32, 0, 10, 2, 2000, 350, 1, 1, 2}, //Succulent Phaser {64, 8, 35, 10, 0, 64, 50, -10, 53, 35, 28, -16, 32, 4, 2600, 300, 1, 1, 3}, //Quacky {16, 10, 60, 0, 0, 64, 0, 40, 10, 32, -16, 40, -3, 1, 2000, 400, 1, 1, 4}, //Smoothtron {0, 15, 138, 0, 0, 64, 0, 15, 0, 20, 32, 0, 5, 1, 2000, 60, 0, 3, 5} }; if(npreset>NUM_PRESETS-1) { Fpre->ReadPreset(31,npreset-NUM_PRESETS+1); for (int n = 0; n < PRESET_SIZE; n++) changepar (n, pdata[n]); } else { for (int n = 0; n < PRESET_SIZE; n++) changepar (n, presets[npreset][n]); } Ppreset = npreset; reinitfilter (); };
/* * Cleanup the effect */ void DynamicFilter::cleanup() { reinitfilter(); ms1 = 0.0; ms2 = 0.0; ms3 = 0.0; ms4 = 0.0; }
/* * Cleanup the effect */ void RyanWah::cleanup () { reinitfilter (); ms1 = 0.0; oldfbias = oldfbias1 = oldfbias2 = 0.0f; filterl->cleanup(); filterr->cleanup(); };
void RyanWah::changepar (int npar, int value) { switch (npar) { case 0: setvolume (value); break; case 1: Pq = value; q = (float) Pq; break; case 2: lfo.Pfreq = value; lfo.updateparams (); break; case 3: lfo.Prandomness = 0;//value; lfo.updateparams (); break; case 4: lfo.PLFOtype = value; lfo.updateparams (); break; case 5: lfo.Pstereo = value; lfo.updateparams (); break; case 6: setwidth (value); break; case 7: setampsns (value); break; case 8: Pampsnsinv = value; setampsns (Pampsns); break; case 9: Pampsmooth = value; setampsns (Pampsns); break; case 10: Plp = value; lpmix = ((float) Plp)/32.0f; reinitfilter (); break; case 11: Pbp = value; bpmix = ((float) Pbp)/32.0f; reinitfilter (); break; case 12: Php = value; hpmix = ((float) Php)/32.0f; reinitfilter (); break; case 13: Pstages = (value - 1); filterl->setstages(Pstages); filterr->setstages(Pstages); cleanup(); break; case 14: Prange = value; if(Pamode) maxfreq = ((float) Prange)/(fSAMPLE_RATE/6.0f); else maxfreq = ((float) Prange); break; case 15: Pminfreq = value; if (Pamode) minfreq = ((float) Pminfreq)/(fSAMPLE_RATE/6.0f); else minfreq = (float) value; break; case 16: variq = value; break; case 17: Pmode=value; if((Pmode==1) || (Pmode==3)) Pqm = 1; else Pqm = 0; filterl->setmode(Pqm); filterr->setmode(Pqm); if((Pmode==2) || (Pmode==3)) Pamode = 1; else Pamode = 0; if(Pamode) { minfreq = ((float) Pminfreq)/(fSAMPLE_RATE/6.0f); maxfreq = ((float) Prange)/(fSAMPLE_RATE/6.0f); } else { minfreq = (float) Pminfreq; maxfreq = (float) Prange; } break; case 18: Ppreset = value; break; }; };
void DynamicFilter::setpreset(unsigned char npreset) { const int PRESET_SIZE = 10; const int NUM_PRESETS = 5; unsigned char presets[NUM_PRESETS][PRESET_SIZE] = { //WahWah {110, 64, 80, 0, 0, 64, 0, 90, 0, 60}, //AutoWah {110, 64, 70, 0, 0, 80, 70, 0, 0, 60}, //Sweep {100, 64, 30, 0, 0, 50, 80, 0, 0, 60}, //VocalMorph1 {110, 64, 80, 0, 0, 64, 0, 64, 0, 60}, //VocalMorph1 {127, 64, 50, 0, 0, 96, 64, 0, 0, 60} }; if(npreset >= NUM_PRESETS) npreset = NUM_PRESETS - 1; for(int n = 0; n < PRESET_SIZE; n++) changepar(n, presets[npreset][n]); filterpars->defaults(); switch(npreset) { case 0: filterpars->Pcategory = 0; filterpars->Ptype = 2; filterpars->Pfreq = 45; filterpars->Pq = 64; filterpars->Pstages = 1; filterpars->Pgain = 64; break; case 1: filterpars->Pcategory = 2; filterpars->Ptype = 0; filterpars->Pfreq = 72; filterpars->Pq = 64; filterpars->Pstages = 0; filterpars->Pgain = 64; break; case 2: filterpars->Pcategory = 0; filterpars->Ptype = 4; filterpars->Pfreq = 64; filterpars->Pq = 64; filterpars->Pstages = 2; filterpars->Pgain = 64; break; case 3: filterpars->Pcategory = 1; filterpars->Ptype = 0; filterpars->Pfreq = 50; filterpars->Pq = 70; filterpars->Pstages = 1; filterpars->Pgain = 64; filterpars->Psequencesize = 2; // "I" filterpars->Pvowels[0].formants[0].freq = 34; filterpars->Pvowels[0].formants[0].amp = 127; filterpars->Pvowels[0].formants[0].q = 64; filterpars->Pvowels[0].formants[1].freq = 99; filterpars->Pvowels[0].formants[1].amp = 122; filterpars->Pvowels[0].formants[1].q = 64; filterpars->Pvowels[0].formants[2].freq = 108; filterpars->Pvowels[0].formants[2].amp = 112; filterpars->Pvowels[0].formants[2].q = 64; // "A" filterpars->Pvowels[1].formants[0].freq = 61; filterpars->Pvowels[1].formants[0].amp = 127; filterpars->Pvowels[1].formants[0].q = 64; filterpars->Pvowels[1].formants[1].freq = 71; filterpars->Pvowels[1].formants[1].amp = 121; filterpars->Pvowels[1].formants[1].q = 64; filterpars->Pvowels[1].formants[2].freq = 99; filterpars->Pvowels[1].formants[2].amp = 117; filterpars->Pvowels[1].formants[2].q = 64; break; case 4: filterpars->Pcategory = 1; filterpars->Ptype = 0; filterpars->Pfreq = 64; filterpars->Pq = 70; filterpars->Pstages = 1; filterpars->Pgain = 64; filterpars->Psequencesize = 2; filterpars->Pnumformants = 2; filterpars->Pvowelclearness = 0; filterpars->Pvowels[0].formants[0].freq = 70; filterpars->Pvowels[0].formants[0].amp = 127; filterpars->Pvowels[0].formants[0].q = 64; filterpars->Pvowels[0].formants[1].freq = 80; filterpars->Pvowels[0].formants[1].amp = 122; filterpars->Pvowels[0].formants[1].q = 64; filterpars->Pvowels[1].formants[0].freq = 20; filterpars->Pvowels[1].formants[0].amp = 127; filterpars->Pvowels[1].formants[0].q = 64; filterpars->Pvowels[1].formants[1].freq = 100; filterpars->Pvowels[1].formants[1].amp = 121; filterpars->Pvowels[1].formants[1].q = 64; break; } // for (int i=0;i<5;i++){ // printf("freq=%d amp=%d q=%d\n",filterpars->Pvowels[0].formants[i].freq,filterpars->Pvowels[0].formants[i].amp,filterpars->Pvowels[0].formants[i].q); // }; if(insertion == 0) changepar(0, presets[npreset][0] / 2); //lower the volume if this is system effect Ppreset = npreset; reinitfilter(); }
void DynamicFilter::changepar (int npar, int value) { switch (npar) { case 0: setvolume (value); break; case 1: setpanning (value); break; case 2: lfo->Pfreq = value; lfo->updateparams (PERIOD); break; case 3: lfo->Prandomness = value; lfo->updateparams (PERIOD); break; case 4: lfo->PLFOtype = value; lfo->updateparams (PERIOD); break; case 5: lfo->Pstereo = value; lfo->updateparams (PERIOD); break; case 6: setdepth (value); break; case 7: setampsns (value); break; case 8: Pampsnsinv = value; setampsns (Pampsns); break; case 9: Pampsmooth = value; setampsns (Pampsns); break; case 10: { Pmode = value; filterpars->defaults (); switch (Pmode) { case 0: filterpars->Pcategory = 0; filterpars->Ptype = 2; filterpars->Pfreq = 45; filterpars->Pq = 64; filterpars->Pstages = 1; filterpars->Pgain = 64; break; case 1: filterpars->Pcategory = 2; filterpars->Ptype = 0; filterpars->Pfreq = 72; filterpars->Pq = 64; filterpars->Pstages = 0; filterpars->Pgain = 64; break; case 2: filterpars->Pcategory = 0; filterpars->Ptype = 4; filterpars->Pfreq = 64; filterpars->Pq = 64; filterpars->Pstages = 2; filterpars->Pgain = 64; break; case 3: filterpars->Pcategory = 1; filterpars->Ptype = 0; filterpars->Pfreq = 50; filterpars->Pq = 70; filterpars->Pstages = 1; filterpars->Pgain = 64; filterpars->Psequencesize = 2; // "I" filterpars->Pvowels[0].formants[0].freq = 34; filterpars->Pvowels[0].formants[0].amp = 127; filterpars->Pvowels[0].formants[0].q = 64; filterpars->Pvowels[0].formants[1].freq = 99; filterpars->Pvowels[0].formants[1].amp = 122; filterpars->Pvowels[0].formants[1].q = 64; filterpars->Pvowels[0].formants[2].freq = 108; filterpars->Pvowels[0].formants[2].amp = 112; filterpars->Pvowels[0].formants[2].q = 64; // "A" filterpars->Pvowels[1].formants[0].freq = 61; filterpars->Pvowels[1].formants[0].amp = 127; filterpars->Pvowels[1].formants[0].q = 64; filterpars->Pvowels[1].formants[1].freq = 71; filterpars->Pvowels[1].formants[1].amp = 121; filterpars->Pvowels[1].formants[1].q = 64; filterpars->Pvowels[1].formants[2].freq = 99; filterpars->Pvowels[1].formants[2].amp = 117; filterpars->Pvowels[1].formants[2].q = 64; break; case 4: filterpars->Pcategory = 1; filterpars->Ptype = 0; filterpars->Pfreq = 64; filterpars->Pq = 70; filterpars->Pstages = 1; filterpars->Pgain = 64; filterpars->Psequencesize = 2; filterpars->Pnumformants = 2; filterpars->Pvowelclearness = 0; filterpars->Pvowels[0].formants[0].freq = 70; filterpars->Pvowels[0].formants[0].amp = 127; filterpars->Pvowels[0].formants[0].q = 64; filterpars->Pvowels[0].formants[1].freq = 80; filterpars->Pvowels[0].formants[1].amp = 122; filterpars->Pvowels[0].formants[1].q = 64; filterpars->Pvowels[1].formants[0].freq = 20; filterpars->Pvowels[1].formants[0].amp = 127; filterpars->Pvowels[1].formants[0].q = 64; filterpars->Pvowels[1].formants[1].freq = 100; filterpars->Pvowels[1].formants[1].amp = 121; filterpars->Pvowels[1].formants[1].q = 64; break; }; reinitfilter (); } }; };
void DynamicFilter::setpreset(unsigned char npreset) { if (npreset < 0xf) { if (npreset >= NUM_PRESETS) npreset = NUM_PRESETS - 1; for (int n = 0; n < PRESET_SIZE; ++n) changepar(n, presets[npreset][n]); filterpars->defaults(); switch (npreset) { case 0: filterpars->Pcategory = 0; filterpars->Ptype = 2; filterpars->Pfreq = 45; filterpars->Pq = 64; filterpars->Pstages = 1; filterpars->Pgain = 64; break; case 1: filterpars->Pcategory = 2; filterpars->Ptype = 0; filterpars->Pfreq = 72; filterpars->Pq = 64; filterpars->Pstages = 0; filterpars->Pgain = 64; break; case 2: filterpars->Pcategory = 0; filterpars->Ptype = 4; filterpars->Pfreq = 64; filterpars->Pq = 64; filterpars->Pstages = 2; filterpars->Pgain = 64; break; case 3: filterpars->Pcategory = 1; filterpars->Ptype = 0; filterpars->Pfreq = 50; filterpars->Pq = 70; filterpars->Pstages = 1; filterpars->Pgain = 64; filterpars->Psequencesize = 2; // "I" filterpars->Pvowels[0].formants[0].freq = 34; filterpars->Pvowels[0].formants[0].amp = 127; filterpars->Pvowels[0].formants[0].q = 64; filterpars->Pvowels[0].formants[1].freq = 99; filterpars->Pvowels[0].formants[1].amp = 122; filterpars->Pvowels[0].formants[1].q = 64; filterpars->Pvowels[0].formants[2].freq = 108; filterpars->Pvowels[0].formants[2].amp = 112; filterpars->Pvowels[0].formants[2].q = 64; // "A" filterpars->Pvowels[1].formants[0].freq = 61; filterpars->Pvowels[1].formants[0].amp = 127; filterpars->Pvowels[1].formants[0].q = 64; filterpars->Pvowels[1].formants[1].freq = 71; filterpars->Pvowels[1].formants[1].amp = 121; filterpars->Pvowels[1].formants[1].q = 64; filterpars->Pvowels[1].formants[2].freq = 99; filterpars->Pvowels[1].formants[2].amp = 117; filterpars->Pvowels[1].formants[2].q = 64; break; case 4: filterpars->Pcategory = 1; filterpars->Ptype = 0; filterpars->Pfreq = 64; filterpars->Pq = 70; filterpars->Pstages = 1; filterpars->Pgain = 64; filterpars->Psequencesize = 2; filterpars->Pnumformants = 2; filterpars->Pvowelclearness = 0; filterpars->Pvowels[0].formants[0].freq = 70; filterpars->Pvowels[0].formants[0].amp = 127; filterpars->Pvowels[0].formants[0].q = 64; filterpars->Pvowels[0].formants[1].freq = 80; filterpars->Pvowels[0].formants[1].amp = 122; filterpars->Pvowels[0].formants[1].q = 64; filterpars->Pvowels[1].formants[0].freq = 20; filterpars->Pvowels[1].formants[0].amp = 127; filterpars->Pvowels[1].formants[0].q = 64; filterpars->Pvowels[1].formants[1].freq = 100; filterpars->Pvowels[1].formants[1].amp = 121; filterpars->Pvowels[1].formants[1].q = 64; break; } if (insertion == 0) changepar(0, presets[npreset][0] * 0.5f); // lower the volume if this is // system effect Ppreset = npreset; reinitfilter(); } else { unsigned char preset = npreset & 0xf; unsigned char param = npreset >> 4; if (param == 0xf) param = 0; changepar(param, presets[preset][param]); if ((insertion == 0) && (param == 0)) changepar(0, presets[preset][0] * 0.5f); } }
// Cleanup the effect void DynamicFilter::cleanup(void) { reinitfilter(); ms1 = ms2 = ms3 = ms4 = 0.0f; }