int LSFLUTE::run() { for (int i = 0; i < framesToRun(); i++) { if (olength1 < length1) olength1++; if (olength1 > length1) olength1--; if (olength2 < length2) olength2++; if (olength2 > length2) olength2--; if (--branch <= 0) { aamp = tablei(currentFrame(), amparr, amptabs); oamp = tablei(currentFrame(), oamparr, oamptabs); branch = skip; } float sig = (rrand() * namp * aamp) + aamp; float del1sig = mdelget(del1ptr,olength1,dl1ptr); sig = sig + (del1sig * -0.35); #ifdef MAXMSP delput(sig,del2ptr,dl2ptr); #else mdelput(sig,del2ptr,dl2ptr); #endif sig = mdelget(del2ptr,olength2,dl2ptr); sig = (sig * sig * sig) - sig; sig = (0.4 * sig) + (0.9 * del1sig); float out[2]; out[0] = sig * amp * oamp; sig = (dampcoef * sig) + ((1.0 - dampcoef) * oldsig); oldsig = sig; #ifdef MAXMSP delput(sig,del1ptr,dl1ptr); #else mdelput(sig,del1ptr,dl1ptr); #endif if (outputChannels() == 2) { out[1] = (1.0 - spread) * out[0]; out[0] *= spread; } rtaddout(out); increment(); } return framesToRun(); }
int CLAR::run() { for (int i = 0; i < framesToRun(); i++) { if (--branch <= 0) { if (amparr) { #ifdef MAXMSP aamp = rtcmix_table(currentFrame(), amparr, amptabs); #else aamp = table(currentFrame(), amparr, amptabs); #endif } if (oamparr) oamp = tablei(currentFrame(), oamparr, oamptabs); branch = skip; } float sig = (rrand() * namp * aamp) + aamp; float del1sig = mdelget(del1,length1,dl1); float del2sig = mdelget(del2,length2,dl2); if (del1sig > 1.0) del1sig = 1.0; if (del1sig < -1.0) del1sig = -1.0; if (del2sig > 1.0) del2sig = 1.0; if (del2sig < -1.0) del2sig = -1.0; sig = sig + 0.9 * ((d2gain * del2sig) + ((0.9-d2gain) * del1sig)); float csig = -0.5 * sig + aamp; float ssig = sig * sig; sig = (0.3 * ssig) + (-0.8 * (sig * ssig)); sig = sig + csig; sig = (0.7 * sig) + (0.3 * oldsig); oldsig = sig; delput(sig,del2,dl2); delput(sig,del1,dl1); float out[2]; out[0] = sig * amp * oamp; if (outputChannels() == 2) { out[1] = (1.0 - spread) * out[0]; out[0] *= spread; } rtaddout(out); increment(); } return framesToRun(); }
int REVERBIT::run() { int samps = framesToRun() * inputChannels(); if (currentFrame() < insamps) rtgetin(in, this, samps); for (int i = 0; i < samps; i += inputChannels()) { if (--branch <= 0) { doupdate(); branch = getSkip(); } float insig[2], out[2]; if (currentFrame() < insamps) { // still taking input from file insig[0] = in[i] * amp; insig[1] = (inputChannels() == 2) ? in[i + 1] * amp : insig[0]; } else // in ring-down phase insig[0] = insig[1] = 0.0; float rvbsig = -reverbpct * reverb(insig[0] + insig[1], rvbarray); if (usefilt) rvbsig = tone(rvbsig, tonedata); delput(rvbsig, delarray, deltabs); float delsig = delget(delarray, rtchan_delaytime, deltabs); out[0] = insig[0] + rvbsig; out[1] = insig[1] + delsig; if (dcblock) { float tmp_in[2]; tmp_in[0] = out[0]; tmp_in[1] = out[1]; out[0] = tmp_in[0] - prev_in[0] + (0.99 * prev_out[0]); prev_in[0] = tmp_in[0]; prev_out[0] = out[0]; out[1] = tmp_in[1] - prev_in[1] + (0.99 * prev_out[1]); prev_in[1] = tmp_in[1]; prev_out[1] = out[1]; } rtaddout(out); increment(); } return framesToRun(); }
int SFLUTE::run() { for (int i = 0; i < framesToRun(); i++) { if (--branch <= 0) { aamp = tablei(currentFrame(), amparr, amptabs); oamp = tablei(currentFrame(), oamparr, oamptabs); branch = skip; } float sig = (rrand() * namp * aamp) + aamp; float del1sig = mdelget(del1,length1,dl1); sig = sig + (del1sig * -0.35); // BGG mm -- delput works fine // mdelput(sig,del2,dl2); delput(sig,del2,dl2); sig = mdelget(del2,length2,dl2); sig = (sig * sig * sig) - sig; sig = (0.4 * sig) + (0.9 * del1sig); float out[2]; out[0] = sig * amp * oamp; sig = (dampcoef * sig) + ((1.0 - dampcoef) * oldsig); oldsig = sig; // BGG mm -- delput works fine // mdelput(sig,del1,dl1); delput(sig,del1,dl1); if (outputChannels() == 2) { out[1] = (1.0 - spread) * out[0]; out[0] *= spread; } rtaddout(out); increment(); } return framesToRun(); }