Browse Source

update Bidoo modules to 0.6.28

pull/1639/head
bsp2 6 years ago
parent
commit
bb86e7e282
6 changed files with 85 additions and 31 deletions
  1. +1
    -1
      plugins/community/repos/Bidoo/Makefile
  2. +5
    -1
      plugins/community/repos/Bidoo/README.md
  3. +3
    -8
      plugins/community/repos/Bidoo/src/BAR.cpp
  4. +1
    -1
      plugins/community/repos/Bidoo/src/Bidoo.cpp
  5. +69
    -16
      plugins/community/repos/Bidoo/src/CURT.cpp
  6. +6
    -4
      plugins/community/repos/Bidoo/src/dep/filters/pitchshifter.h

+ 1
- 1
plugins/community/repos/Bidoo/Makefile View File

@@ -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


+ 5
- 1
plugins/community/repos/Bidoo/README.md View File

@@ -1,7 +1,7 @@
# Bidoo's plugins for [VCVRack](https://vcvrack.com)

<!-- Version and License Badges -->
![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.


+ 3
- 8
plugins/community/repos/Bidoo/src/BAR.cpp View File

@@ -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<BAR, BARWidget>("Bidoo", "baR", "bAR compressor", DYNAMICS_TAG);
Model *modelBAR = Model::create<BAR, BARWidget>("Bidoo", "baR", "bAR compressor", DYNAMICS_TAG, COMPRESSOR_TAG, EFFECT_TAG);
return modelBAR;
}

+ 1
- 1
plugins/community/repos/Bidoo/src/Bidoo.cpp View File

@@ -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);


+ 69
- 16
plugins/community/repos/Bidoo/src/CURT.cpp View File

@@ -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<float,BUFF_SIZE> in_Buffer;
DoubleRingBuffer<float,BUFF_SIZE> out_Buffer;
DoubleRingBuffer<float, 2*BUFF_SIZE> 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; i<OVERLAP; i++) {
memset(bins[i], 0, sizeof(bins[i]));
}
for(int i=0; i<BUFF_SIZE; i++) {
in_Buffer.push(0.0f);
}
for(int i=0; i<2*BUFF_SIZE; i++) {
out_Buffer.push(0.0f);
}
}

~CURT() {

}

json_t *toJson() override {
json_t *rootJ = json_object();
json_object_set_new(rootJ, "mode", json_boolean(mode));
return rootJ;
}

void fromJson(json_t *rootJ) override {
json_t *modeJ = json_object_get(rootJ, "mode");
if (modeJ)
mode = json_is_true(modeJ);
}

void step() override;
};


void CURT::step() {
in_Buffer.push(inputs[INPUT].value/10.0f);
if (modeTrigger.process(params[MODE_PARAM].value)) {
mode = !mode;
}

if (in_Buffer.full()) {
//pShifter->process(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; i<BUFF_SIZE; i++) {
bins[index][i]=*(in_Buffer.startData()+i);
}
blackmanHarrisWindow(bins[index],BUFF_SIZE);
readSteps = 0;
}

if (out_Buffer.size()>0) {
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<BUFF_SIZE; i++) {
out_Buffer.data[out_Buffer.mask(out_Buffer.end-BUFF_SIZE+i)] += bins[index][i];
}
}
else
{
for(int i=0; i<BUFF_SIZE; i++) {
out_Buffer.data[out_Buffer.mask(out_Buffer.end-BUFF_SIZE+i)] += bins[index][BUFF_SIZE-i-1];
}
}

writeSteps = 0;
}

outputs[OUTPUT].value = *out_Buffer.startData();
out_Buffer.startIncr(1);
out_Buffer.push(0.0f);
}

struct CURTWidget : ModuleWidget {
@@ -68,12 +123,10 @@ struct CURTWidget : ModuleWidget {
addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));


addParam(ParamWidget::create<BidooBlueKnob>(Vec(8, 100), module, CURT::PITCH_PARAM, 0.5f, 2.0f, 1.0f));

addInput(Port::create<PJ301MPort>(Vec(10, 150.66f), Port::INPUT, module, CURT::PITCH_INPUT));

addParam(ParamWidget::create<BidooBlueKnob>(Vec(8, 100), module, CURT::PITCH_PARAM, 0.2f, 2.0f, 1.0f));
addInput(Port::create<PJ301MPort>(Vec(10, 150.0f), Port::INPUT, module, CURT::PITCH_INPUT));
addParam(ParamWidget::create<BlueCKD6>(Vec(8, 190.0f), module, CURT::MODE_PARAM, 0.0f, 1.0f, 0.0f));
addInput(Port::create<PJ301MPort>(Vec(10, 242.66f), Port::INPUT, module, CURT::INPUT));

addOutput(Port::create<PJ301MPort>(Vec(10, 299), Port::OUTPUT, module, CURT::OUTPUT));
}
};


+ 6
- 4
plugins/community/repos/Bidoo/src/dep/filters/pitchshifter.h View File

@@ -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 */


Loading…
Cancel
Save