Skip to content

Commit

Permalink
1.0.4 fix
Browse files Browse the repository at this point in the history
  • Loading branch information
sebastien-bouffier committed Jul 28, 2019
1 parent a9d789c commit a6a2089
Show file tree
Hide file tree
Showing 3 changed files with 74 additions and 70 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Bidoo's plugins for [VCVRack](https://vcvrack.com)

<!-- Version and License Badges -->
![Version](https://img.shields.io/badge/version-1.0.3-green.svg?style=flat-square)
![Version](https://img.shields.io/badge/version-1.0.4-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)

Expand Down
115 changes: 59 additions & 56 deletions src/LIMONADE.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -350,12 +350,15 @@ struct LIMONADE : Module {
}
json_object_set_new(rootJ, "nFrames", json_integer(nFrames));
json_object_set_new(rootJ, "morphType", json_integer(morphType));
json_object_set_new(rootJ, "displayMode", json_integer(displayMode));
json_object_set_new(rootJ, "displayEditedFrame", json_integer(displayEditedFrame));
json_object_set_new(rootJ, "displayPlayedFrame", json_integer(displayPlayedFrame));
json_object_set_new(rootJ, "frameSize", json_integer(frameSize));
json_object_set_new(rootJ, "frames", framesJ);
return rootJ;
}

void dataFromJson(json_t *rootJ) override {

size_t nFrames = 0;
json_t *nFramesJ = json_object_get(rootJ, "nFrames");
if (nFramesJ)
Expand All @@ -365,6 +368,22 @@ struct LIMONADE : Module {
if (morphTypeJ)
morphType = json_integer_value(morphTypeJ);

json_t *displayModeJ = json_object_get(rootJ, "displayMode");
if (displayModeJ)
displayMode = json_integer_value(displayModeJ);

json_t *displayEditedFrameJ = json_object_get(rootJ, "displayEditedFrame");
if (displayEditedFrameJ)
displayEditedFrame = json_integer_value(displayEditedFrameJ);

json_t *displayPlayedFrameJ = json_object_get(rootJ, "displayPlayedFrame");
if (displayPlayedFrameJ)
displayPlayedFrame = json_integer_value(displayPlayedFrameJ);

json_t *frameSizeJ = json_object_get(rootJ, "frameSize");
if (frameSizeJ)
frameSize = json_integer_value(frameSizeJ);

if (nFrames>0)
{
float *wav = (float*)calloc(nFrames*FS, sizeof(float));
Expand Down Expand Up @@ -521,18 +540,6 @@ void LIMONADE::process(const ProcessArgs &args) {
displayPlayedFrame = (displayPlayedFrame == 0) ? 1 : 0;
}

// if (loadSampleTrigger.process(params[LOADSAMPLE_PARAM].getValue())) {
// loadSample();
// }
//
// if (loadPngTrigger.process(params[LOADPNG_PARAM].getValue())) {
// loadPNG();
// }
//
// if (loadFrameTrigger.process(params[LOADFRAME_PARAM].getValue())) {
// loadFrame();
// }

if (morphWtTrigger.process(params[MORPHWT_PARAM].getValue())) {
morphWavetable();
}
Expand Down Expand Up @@ -799,54 +806,50 @@ struct LIMONADEBinsDisplay : OpaqueWidget {
nvgResetScissor(args.vg);
nvgRestore(args.vg);

if (module->displayPlayedFrame == 0) {
if (playedFrame.sample.size()>0) {
nvgStrokeColor(args.vg, RED_BIDOO);
nvgSave(args.vg);
float invNbSample = 1.f / (float)playedFrame.sample.size();
nvgBeginPath(args.vg);
for (size_t i = 0; i < playedFrame.sample.size(); i++) {
float x, y;
x = (float)i * invNbSample * 420.f;
y = playedFrame.sample[i] * 18.f + 35.f;
if (i == 0) {
nvgMoveTo(args.vg, x, y);
}
else {
nvgLineTo(args.vg, x, y);
}
if ((module->displayPlayedFrame == 0) && (playedFrame.sample.size()>0)) {
nvgStrokeColor(args.vg, RED_BIDOO);
nvgSave(args.vg);
float invNbSample = 1.f / (float)playedFrame.sample.size();
nvgBeginPath(args.vg);
for (size_t i = 0; i < playedFrame.sample.size(); i++) {
float x, y;
x = (float)i * invNbSample * 420.f;
y = playedFrame.sample[i] * 18.f + 35.f;
if (i == 0) {
nvgMoveTo(args.vg, x, y);
}
else {
nvgLineTo(args.vg, x, y);
}
nvgLineCap(args.vg, NVG_MITER);
nvgStrokeWidth(args.vg, 1);
nvgGlobalCompositeOperation(args.vg, NVG_LIGHTER);
nvgStroke(args.vg);
nvgRestore(args.vg);
}
nvgLineCap(args.vg, NVG_MITER);
nvgStrokeWidth(args.vg, 1);
nvgGlobalCompositeOperation(args.vg, NVG_LIGHTER);
nvgStroke(args.vg);
nvgRestore(args.vg);
}

if (module->displayEditedFrame == 0) {
if (frame.sample.size()>0) {
nvgStrokeColor(args.vg, GREEN_BIDOO);
nvgSave(args.vg);
float invNbSample = 1.f / (float)frame.sample.size();
nvgBeginPath(args.vg);
for (size_t i = 0; i < frame.sample.size(); i++) {
float x, y;
x = (float)i * invNbSample * 420.f;
y = frame.sample[i] * 18.f + 35.f;
if (i == 0) {
nvgMoveTo(args.vg, x, y);
}
else {
nvgLineTo(args.vg, x, y);
}
if ((module->displayEditedFrame == 0) && (frame.sample.size()>0)) {
nvgStrokeColor(args.vg, GREEN_BIDOO);
nvgSave(args.vg);
float invNbSample = 1.f / (float)frame.sample.size();
nvgBeginPath(args.vg);
for (size_t i = 0; i < frame.sample.size(); i++) {
float x, y;
x = (float)i * invNbSample * 420.f;
y = frame.sample[i] * 18.f + 35.f;
if (i == 0) {
nvgMoveTo(args.vg, x, y);
}
else {
nvgLineTo(args.vg, x, y);
}
nvgLineCap(args.vg, NVG_MITER);
nvgStrokeWidth(args.vg, 1);
nvgGlobalCompositeOperation(args.vg, NVG_LIGHTER);
nvgStroke(args.vg);
nvgRestore(args.vg);
}
nvgLineCap(args.vg, NVG_MITER);
nvgStrokeWidth(args.vg, 1);
nvgGlobalCompositeOperation(args.vg, NVG_LIGHTER);
nvgStroke(args.vg);
nvgRestore(args.vg);
}
}
}
Expand Down Expand Up @@ -999,7 +1002,7 @@ struct LIMONADETextField : LedDisplayTextField {
font = APP->window->loadFont(asset::plugin(pluginInstance, "res/DejaVuSansMono.ttf"));
color = YELLOW_BIDOO;
textOffset = Vec(2,0);
text = "2048";
text = module ? std::to_string(module->frameSize) : "2048";
}
void onChange(const event::Change &e) override;
LIMONADE *module;
Expand Down
27 changes: 14 additions & 13 deletions src/MINIBAR.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ struct LabelMICROBARWidget : TransparentWidget {
float *value = NULL;
const char *format = NULL;
const char *header = "Ready";
const char *tail = "";
const char *tail = NULL;
std::shared_ptr<Font> font;

LabelMICROBARWidget() {
Expand All @@ -240,7 +240,7 @@ struct LabelMICROBARWidget : TransparentWidget {
nvgFontSize(args.vg, 12.0f);
nvgText(args.vg, 0.0f, 0.0f, header, NULL);
}
if (value && format) {
if (value && format && tail) {
char display[64];
snprintf(display, sizeof(display), format, *value);
nvgFontSize(args.vg, 12.0f);
Expand All @@ -249,15 +249,15 @@ struct LabelMICROBARWidget : TransparentWidget {
}
};

struct BidooBlueTrimpotWithDisplay : BidooBlueTrimpot {
struct MicrobarTrimpotWithDisplay : BidooBlueTrimpot {
LabelMICROBARWidget *lblDisplay = NULL;
float *valueForDisplay = NULL;
const char *format = NULL;
const char *header = NULL;
const char *tail = "";
const char *tail = NULL;

void onEnter(const event::Enter &e) override {
if (lblDisplay && valueForDisplay && format) {
if (lblDisplay && valueForDisplay && format && tail) {
lblDisplay->value = valueForDisplay;
lblDisplay->format = format;
lblDisplay->tail = tail;
Expand Down Expand Up @@ -289,62 +289,63 @@ struct MINIBARWidget : ModuleWidget {
display->box.pos = Vec(32, 287);
addChild(display);

BidooBlueTrimpotWithDisplay* tresh = createParam<BidooBlueTrimpotWithDisplay>(Vec(2.0f,37.0f), module, MINIBAR::THRESHOLD_PARAM);
MicrobarTrimpotWithDisplay* tresh = createParam<MicrobarTrimpotWithDisplay>(Vec(2.0f,37.0f), module, MINIBAR::THRESHOLD_PARAM);
tresh->lblDisplay = display;
tresh->valueForDisplay = module ? &module->threshold : NULL;
tresh->format = "%2.1f";
tresh->header = "Tresh.";
tresh->tail = " dB";
addParam(tresh);

BidooBlueTrimpotWithDisplay* ratio = createParam<BidooBlueTrimpotWithDisplay>(Vec(2.0f,72.0f), module, MINIBAR::RATIO_PARAM);
MicrobarTrimpotWithDisplay* ratio = createParam<MicrobarTrimpotWithDisplay>(Vec(2.0f,72.0f), module, MINIBAR::RATIO_PARAM);
ratio->lblDisplay = display;
ratio->valueForDisplay = module ? &module->ratio : NULL;
ratio->format = "%1.0f:1";
ratio->header = "Ratio";
ratio->tail = " ";
addParam(ratio);

BidooBlueTrimpotWithDisplay* attack = createParam<BidooBlueTrimpotWithDisplay>(Vec(2.0f,107.0f), module, MINIBAR::ATTACK_PARAM);
MicrobarTrimpotWithDisplay* attack = createParam<MicrobarTrimpotWithDisplay>(Vec(2.0f,107.0f), module, MINIBAR::ATTACK_PARAM);
attack->lblDisplay = display;
attack->valueForDisplay = module ? &module->attackTime : NULL;
attack->format = "%1.0f";
attack->header = "Attack";
attack->tail = " ms";
addParam(attack);

BidooBlueTrimpotWithDisplay* release = createParam<BidooBlueTrimpotWithDisplay>(Vec(2.0f,142.0f), module, MINIBAR::RELEASE_PARAM);
MicrobarTrimpotWithDisplay* release = createParam<MicrobarTrimpotWithDisplay>(Vec(2.0f,142.0f), module, MINIBAR::RELEASE_PARAM);
release->lblDisplay = display;
release->valueForDisplay = module ? &module->releaseTime : NULL;
release->format = "%1.0f";
release->header = "Release";
release->tail = " ms";
addParam(release);

BidooBlueTrimpotWithDisplay* knee = createParam<BidooBlueTrimpotWithDisplay>(Vec(2.0f,177.0f), module, MINIBAR::KNEE_PARAM);
MicrobarTrimpotWithDisplay* knee = createParam<MicrobarTrimpotWithDisplay>(Vec(2.0f,177.0f), module, MINIBAR::KNEE_PARAM);
knee->lblDisplay = display;
knee->valueForDisplay = module ? &module->knee : NULL;
knee->format = "%1.1f";
knee->header = "Knee";
knee->tail = " dB";
addParam(knee);

BidooBlueTrimpotWithDisplay* makeup = createParam<BidooBlueTrimpotWithDisplay>(Vec(2.0f,212.0f), module, MINIBAR::MAKEUP_PARAM);
MicrobarTrimpotWithDisplay* makeup = createParam<MicrobarTrimpotWithDisplay>(Vec(2.0f,212.0f), module, MINIBAR::MAKEUP_PARAM);
makeup->lblDisplay = display;
makeup->valueForDisplay = module ? &module->makeup : NULL;
makeup->format = "%1.1f";
makeup->header = "Gain";
makeup->tail = " dB";
addParam(makeup);

BidooBlueTrimpotWithDisplay* mix = createParam<BidooBlueTrimpotWithDisplay>(Vec(2.0f,247.0f), module, MINIBAR::MIX_PARAM);
MicrobarTrimpotWithDisplay* mix = createParam<MicrobarTrimpotWithDisplay>(Vec(2.0f,247.0f), module, MINIBAR::MIX_PARAM);
mix->lblDisplay = display;
mix->valueForDisplay = module ? &module->mixDisplay : NULL;
mix->format = "%1.0f%";
mix->header = "Mix";
mix->tail = " %";
addParam(mix);

BidooBlueTrimpotWithDisplay* looka = createParam<BidooBlueTrimpotWithDisplay>(Vec(2.0f,282.0f), module, MINIBAR::LOOKAHEAD_PARAM);
MicrobarTrimpotWithDisplay* looka = createParam<MicrobarTrimpotWithDisplay>(Vec(2.0f,282.0f), module, MINIBAR::LOOKAHEAD_PARAM);
looka->lblDisplay = display;
looka->valueForDisplay = module ? &module->lookAhead : NULL;
looka->format = "%1.0f";
Expand Down

0 comments on commit a6a2089

Please sign in to comment.