void processAudio(AudioBuffer &buffer) { float tune = getParameterValue(PARAMETER_A)*10.0 - 6.0; float fc = getParameterValue(PARAMETER_B)*10.0 - 4.0; float q = getParameterValue(PARAMETER_C)*3+0.75; float shape = getParameterValue(PARAMETER_E)*2; float pw = 0.5; if(shape > 1.0){ pw += 0.49*(shape-1.0); // pw 0.5 to 0.99 shape = 1.0; // square wave } float df = getParameterValue(PARAMETER_D)*4; int di = (int)df; float gain = 0.0f; switch(di){ // a/d case 0: // l/s env.setAttack(1.0-df); env.setRelease(0.0); break; case 1: // s/s env.setAttack(0.0); env.setRelease(df-1); break; case 2: // s/l env.setAttack(df-2); env.setRelease(1.0); break; case 3: // l/l env.setAttack(1.0); env.setRelease(1.0); gain = df-3; break; } env.trigger(isButtonPressed(PUSHBUTTON), getSamplesSinceButtonPressed(PUSHBUTTON)); FloatArray left = buffer.getSamples(LEFT_CHANNEL); FloatArray right = buffer.getSamples(RIGHT_CHANNEL); // vco hz.setTune(tune); float lfreq = hz.getFrequency(left[0]); osc.setFrequency(lfreq); osc.setShape(shape); osc.setPulseWidth(pw); osc.getSamples(left); // vcf hz.setTune(fc); fc = hz.getFrequency(right[0]); fc = min(0.999, max(0.01, fc/(getSampleRate()*2))); // normalised and bounded filter->setLowPass(fc, q); right.copyFrom(left); filter->process(right); right.multiply(0.8-q*0.2); // gain compensation for high q // vca env.getEnvelope(envelope); envelope.add(gain); left.multiply(envelope); right.multiply(envelope); }
void processAudio(AudioBuffer &buffer){ eg1.setAttack(getParameterValue(PARAMETER_A)*2); eg1.setRelease(getParameterValue(PARAMETER_B)*2); eg2.setAttack(getParameterValue(PARAMETER_C)*2); eg2.setRelease(getParameterValue(PARAMETER_D)*2); FloatArray left = buffer.getSamples(LEFT_CHANNEL); FloatArray right = buffer.getSamples(RIGHT_CHANNEL); eg1.getEnvelope(left); eg2.getEnvelope(right); left.multiply(-1); right.multiply(-1); }
void processAudio(AudioBuffer& buffer){ float tone = 20*powf(2, getParameterValue(PARAMETER_A)*4); float decay = getParameterValue(PARAMETER_B)*100; float c = getParameterValue(PARAMETER_C); float level = getParameterValue(PARAMETER_D)*2; drum[0]->setDecay(decay); drum[0]->setFrequency(tone); drum[1]->setDecay(decay*2); drum[1]->setFrequency(tone*2); drum[1]->setSnap(c); FloatArray left = buffer.getSamples(LEFT_CHANNEL); FloatArray right = buffer.getSamples(RIGHT_CHANNEL); if(isButtonPressed(PUSHBUTTON) != buttonstate){ buttonstate = isButtonPressed(PUSHBUTTON); if(buttonstate){ drum[0]->trigger(); drum[1]->trigger(); } } drum[0]->getSamples(left); drum[1]->getSamples(right); left.multiply(level); right.multiply(level); }