diff --git a/plugins/community/repos/Bidoo/Makefile b/plugins/community/repos/Bidoo/Makefile index 5aec06c9..d2a60b18 100644 --- a/plugins/community/repos/Bidoo/Makefile +++ b/plugins/community/repos/Bidoo/Makefile @@ -1,6 +1,6 @@ RACK_DIR ?= ../.. SLUG = Bidoo -VERSION = 0.6.27 +VERSION = 0.6.28 DISTRIBUTABLES += $(wildcard LICENSE*) res FLAGS += -Idep/include -I./src/dep/dr_wav -I./src/dep/filters -I./src/dep/freeverb -I./src/dep/gverb/include -I./src/dep/minimp3 -I./src/dep/lodepng -I./src/dep/pffft diff --git a/plugins/community/repos/Bidoo/README.md b/plugins/community/repos/Bidoo/README.md index aa7a1ed1..7da9e9fa 100644 --- a/plugins/community/repos/Bidoo/README.md +++ b/plugins/community/repos/Bidoo/README.md @@ -1,7 +1,7 @@ # Bidoo's plugins for [VCVRack](https://vcvrack.com) -![Version](https://img.shields.io/badge/version-0.6.27-green.svg?style=flat-square) +![Version](https://img.shields.io/badge/version-0.6.28-green.svg?style=flat-square) ![License](https://img.shields.io/badge/license-BSD3-blue.svg?style=flat-square) ![Language](https://img.shields.io/badge/language-C++-yellow.svg?style=flat-square) @@ -13,6 +13,10 @@ You can find information on that plugins pack in the [wiki](https://github.com/s ## Last changes +01/04/2019 => 0.6.28 +**REI** fix, big thanks to Bastian. +*NEW* **cuRt** v0.1 still under dev but already operational. + 13/02/2019 => 0.6.26 **bordL** pitch calibration and KEY input fix. **REI** reverberator (based on freeverb with a pitchshifter in the feedback loop) has been redesigned and the control calibration is better than before, it still needs some adjustments. diff --git a/plugins/community/repos/Bidoo/src/BAR.cpp b/plugins/community/repos/Bidoo/src/BAR.cpp index 1675b3c0..9b2a780c 100644 --- a/plugins/community/repos/Bidoo/src/BAR.cpp +++ b/plugins/community/repos/Bidoo/src/BAR.cpp @@ -90,19 +90,14 @@ void BAR::step() { in_R_dBFS = -96.3f; float data_L = in_L_dBFS*in_L_dBFS; + float data_R = in_R_dBFS*in_R_dBFS; if (!vu_L_Buffer.full()) { vu_L_Buffer.push(data_L); + vu_R_Buffer.push(data_R); } if (!rms_L_Buffer.full()) { rms_L_Buffer.push(data_L); - } - - float data_R = in_R_dBFS*in_R_dBFS; - if (!vu_R_Buffer.full()) { - vu_R_Buffer.push(data_R); - } - if (!rms_R_Buffer.full()) { rms_R_Buffer.push(data_R); } @@ -328,6 +323,6 @@ struct BARWidget : ModuleWidget { using namespace rack_plugin_Bidoo; RACK_PLUGIN_MODEL_INIT(Bidoo, BAR) { - Model *modelBAR = Model::create("Bidoo", "baR", "bAR compressor", DYNAMICS_TAG); +Model *modelBAR = Model::create("Bidoo", "baR", "bAR compressor", DYNAMICS_TAG, COMPRESSOR_TAG, EFFECT_TAG); return modelBAR; } diff --git a/plugins/community/repos/Bidoo/src/Bidoo.cpp b/plugins/community/repos/Bidoo/src/Bidoo.cpp index 6e0dd0fc..cf7d1d33 100644 --- a/plugins/community/repos/Bidoo/src/Bidoo.cpp +++ b/plugins/community/repos/Bidoo/src/Bidoo.cpp @@ -40,7 +40,7 @@ RACK_PLUGIN_INIT(Bidoo) { RACK_PLUGIN_INIT_ID(); RACK_PLUGIN_INIT_WEBSITE("https://github.com/sebastien-bouffier/Bidoo"); - RACK_PLUGIN_INIT_VERSION("0.6.27"); + RACK_PLUGIN_INIT_VERSION("0.6.28"); RACK_PLUGIN_MODEL_ADD(Bidoo, DTROY); RACK_PLUGIN_MODEL_ADD(Bidoo, BORDL); diff --git a/plugins/community/repos/Bidoo/src/CURT.cpp b/plugins/community/repos/Bidoo/src/CURT.cpp index 6184afa8..752aa9ea 100644 --- a/plugins/community/repos/Bidoo/src/CURT.cpp +++ b/plugins/community/repos/Bidoo/src/CURT.cpp @@ -3,8 +3,10 @@ #include "dsp/digital.hpp" #include "dsp/ringbuffer.hpp" #include "dep/filters/pitchshifter.h" +#include "dsp/fir.hpp" -#define BUFF_SIZE 128 +#define BUFF_SIZE 256 +#define OVERLAP 4 using namespace std; @@ -13,6 +15,7 @@ namespace rack_plugin_Bidoo { struct CURT : Module { enum ParamIds { PITCH_PARAM, + MODE_PARAM, NUM_PARAMS }; enum InputIds { @@ -29,33 +32,85 @@ struct CURT : Module { }; DoubleRingBuffer in_Buffer; - DoubleRingBuffer out_Buffer; + DoubleRingBuffer out_Buffer; + float bins[OVERLAP][BUFF_SIZE]; + int index=-1; + int readSteps=0; + int writeSteps=0; + SchmittTrigger modeTrigger; + bool mode=0; CURT() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) { + for(int i=0; iprocess(clamp(params[PITCH_PARAM].value + inputs[PITCH_INPUT].value ,0.5f,2.0f), in_Buffer.startData(), out_Buffer.endData()); - out_Buffer.endIncr(BUFF_SIZE); - in_Buffer.clear(); + in_Buffer.startIncr(1); + in_Buffer.push(inputs[INPUT].value); + + readSteps++; + + if (readSteps>=(BUFF_SIZE/OVERLAP)) { + index=(index+1)%OVERLAP; + for(int i=0; i0) { - outputs[OUTPUT].value = *out_Buffer.startData() * 5.0f; - out_Buffer.startIncr(1); + writeSteps++; + + if ((writeSteps>=((float)BUFF_SIZE*params[PITCH_PARAM].value/(float)OVERLAP))) { + if ((index%2==0) || (mode)) { + for(int i=0; i(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); - addParam(ParamWidget::create(Vec(8, 100), module, CURT::PITCH_PARAM, 0.5f, 2.0f, 1.0f)); - - addInput(Port::create(Vec(10, 150.66f), Port::INPUT, module, CURT::PITCH_INPUT)); - + addParam(ParamWidget::create(Vec(8, 100), module, CURT::PITCH_PARAM, 0.2f, 2.0f, 1.0f)); + addInput(Port::create(Vec(10, 150.0f), Port::INPUT, module, CURT::PITCH_INPUT)); + addParam(ParamWidget::create(Vec(8, 190.0f), module, CURT::MODE_PARAM, 0.0f, 1.0f, 0.0f)); addInput(Port::create(Vec(10, 242.66f), Port::INPUT, module, CURT::INPUT)); - addOutput(Port::create(Vec(10, 299), Port::OUTPUT, module, CURT::OUTPUT)); } }; diff --git a/plugins/community/repos/Bidoo/src/dep/filters/pitchshifter.h b/plugins/community/repos/Bidoo/src/dep/filters/pitchshifter.h index 5b296079..20a55243 100644 --- a/plugins/community/repos/Bidoo/src/dep/filters/pitchshifter.h +++ b/plugins/community/repos/Bidoo/src/dep/filters/pitchshifter.h @@ -88,10 +88,12 @@ struct PitchShifter { /* As long as we have not yet collected enough data just read in */ gInFIFO[gRover] = input[i]; - if(gRover >= inFifoLatency) // [bsp] 09Mar2019: this fixes the noise burst issue in REI - output[i] = gOutFIFO[gRover-inFifoLatency]; - else - output[i] = 0.0f; + + if(gRover >= inFifoLatency) // [bsp] 09Mar2019: this fixes the noise burst issue in REI + output[i] = gOutFIFO[gRover-inFifoLatency]; + else + output[i] = 0.0f; + gRover++; /* now we have enough data for processing */