# HG changeset patch # User andrewm # Date 1433010351 18000 # Node ID 4f8db16f17b5bce28a71f8e44380c5fb8331a2d9 # Parent be427da6fb9c5fd4271ecbc24c3b17b39efcdca4 D-Box updates; should work as old version did diff -r be427da6fb9c -r 4f8db16f17b5 projects/d-box/FeedbackOscillator.cpp --- a/projects/d-box/FeedbackOscillator.cpp Sat May 30 12:34:32 2015 -0500 +++ b/projects/d-box/FeedbackOscillator.cpp Sat May 30 13:25:51 2015 -0500 @@ -62,7 +62,12 @@ float outFloat = coeffs[COEFF_B0] * input + coeffs[COEFF_B1] * lastInput - coeffs[COEFF_A1] * lastOutput; int requestRenderLength = 0; - *output = outFloat; + if(outFloat < -0.5) + *output = 0; + else if(outFloat > 0.5) + *output = 1; + else + *output = outFloat + 0.5; if(canTrigger && outFloat > 0 && lastOutput <= 0) { triggered = true; diff -r be427da6fb9c -r 4f8db16f17b5 projects/d-box/render.cpp --- a/projects/d-box/render.cpp Sat May 30 12:34:32 2015 -0500 +++ b/projects/d-box/render.cpp Sat May 30 13:25:51 2015 -0500 @@ -106,8 +106,8 @@ float octaveSplitter; float semitones[((int)N_OCT*12)+1]; float deltaTouch = 0; -float deltaWeightP = 0.5; -float deltaWeightI = 0.0005; +float deltaWeightP = 0.5 / 65536.0; +float deltaWeightI = 0.0005 / 65536.0; // filter vars ne10_fir_instance_f32_t filter[2]; @@ -370,7 +370,7 @@ // current pitch is gPitchLatestInput, already retrieved semitoneIndex = ( gPitchLatestInput * 12 * N_OCT )+0.5; // closest semitone deltaTarget = (semitones[semitoneIndex]-gPitchLatestInput); // delta between pitch and target - deltaTouch += deltaTarget*deltaWeightI; // update feedback [previous + current] + deltaTouch += deltaTarget*(deltaWeightI); // update feedback [previous + current] } else deltaTouch = 0;