gen-rack

Create VCV Rack modules from gen~ exports
Log | Files | Refs | README | LICENSE

commit e3bf586c3083f50c2461b9b9ce520ff2b4149da4
parent 3e6ed42e16a0244c2f0dfd51f4a37f693e3202fe
Author: Isabel <isabelgk@users.noreply.github.com>
Date:   Sun,  2 May 2021 21:02:03 -0500

Clean up bufsize handling a bit (#3)


Diffstat:
Msrc/gigaverb.cpp | 34++++++++++++++++++++++++----------
Mtester.vcv | 475+++++++++++++++++++++++--------------------------------------------------------
2 files changed, 159 insertions(+), 350 deletions(-)

diff --git a/src/gigaverb.cpp b/src/gigaverb.cpp @@ -8,19 +8,18 @@ struct Gigaverb : Module { CommonState *moduleState; t_sample **inputBuffers; // access like: buffer[input #][sample #] t_sample **outputBuffers; - int currentBufferSize = 1; + int currentBufferSize = 256; int numParams; int numInputs; int numOutputs; int count = 0; - int bufSize = 256; Gigaverb() { // Set default sample rate of 44100 Hz and vector size 1 (VCV uses single sample processing) // and update it later if needed - moduleState = (CommonState *)gigaverb::create(44100, bufSize); + moduleState = (CommonState *)gigaverb::create(44100, currentBufferSize); gigaverb::reset(moduleState); numParams = gigaverb::num_params(); @@ -30,15 +29,14 @@ struct Gigaverb : Module { // Initialize sample buffers inputBuffers = new t_sample *[numInputs]; for (int i = 0; i < numInputs; i++) { - inputBuffers[i] = NULL; + inputBuffers[i] = new t_sample[currentBufferSize]; } outputBuffers = new t_sample *[numOutputs]; for (int i = 0; i < numOutputs; i++) { - outputBuffers[i] = NULL; + outputBuffers[i] = new t_sample[currentBufferSize]; } - assureBufferSize(bufSize); // Configure parameters config(numParams, numInputs + numParams, numOutputs, 0); @@ -55,8 +53,24 @@ struct Gigaverb : Module { } } + ~Gigaverb() { gigaverb::destroy(moduleState); + deleteBuffers(); + } + + void deleteBuffers() { + for (int i = 0; i < numInputs; i++) { + if (inputBuffers[i]) { + delete inputBuffers[i]; + } + } + + for (int i = 0; i < numOutputs; i++) { + if (outputBuffers[i]) { + delete outputBuffers[i]; + } + } } @@ -81,10 +95,10 @@ struct Gigaverb : Module { void process(const ProcessArgs& args) override { - if (count >= bufSize) { + if (count >= currentBufferSize) { count = 0; } - + // Fill inputs for (int i = 0; i < numInputs; i++) { if (inputs[i].isConnected()) { @@ -104,7 +118,7 @@ struct Gigaverb : Module { count++; // Perform when we've filled the buffer - if (count == bufSize) { + if (count == currentBufferSize) { // Update any parameters for (int i = 0; i < numParams; i++) { // Get VCV inputs @@ -121,7 +135,7 @@ struct Gigaverb : Module { } // Fill the buffers - gigaverb::perform(moduleState, inputBuffers, numInputs, outputBuffers, numOutputs, bufSize); + gigaverb::perform(moduleState, inputBuffers, numInputs, outputBuffers, numOutputs, currentBufferSize); } } }; diff --git a/tester.vcv b/tester.vcv @@ -7,7 +7,7 @@ "version": "1.1.6", "model": "AudioInterface", "params": [], - "leftModuleId": 2, + "leftModuleId": 3, "data": { "audio": { "driver": 6, @@ -19,40 +19,53 @@ } }, "pos": [ - 82, + 57, 0 ] }, { "id": 2, - "plugin": "Fundamental", - "version": "1.4.0", - "model": "VCMixer", + "plugin": "gen-rack", + "version": "1.0.0-beta", + "model": "gigaverb", "params": [ { "id": 0, - "value": 1.0 + "value": 0.595500171 }, { "id": 1, - "value": 0.724228442 + "value": 0.607499957 }, { "id": 2, - "value": 1.0 + "value": 0.606000006 }, { "id": 3, - "value": 1.0 + "value": 0.259499997 }, { "id": 4, - "value": 1.0 + "value": 0.411849946 + }, + { + "id": 5, + "value": 189.036957 + }, + { + "id": 6, + "value": 53.1000023 + }, + { + "id": 7, + "value": 0.153000012 } ], - "rightModuleId": 1, + "leftModuleId": 8, + "rightModuleId": 3, "pos": [ - 72, + 33, 0 ] }, @@ -60,50 +73,57 @@ "id": 3, "plugin": "Fundamental", "version": "1.4.0", - "model": "ADSR", + "model": "VCMixer", "params": [ { "id": 0, - "value": 0.138000011 + "value": 1.0 }, { "id": 1, - "value": 0.413000196 + "value": 1.0 }, { "id": 2, - "value": 0.127499998 + "value": 1.0 }, { "id": 3, - "value": 0.108499952 + "value": 1.0 + }, + { + "id": 4, + "value": 1.0 } ], - "leftModuleId": 5, - "rightModuleId": 4, + "leftModuleId": 2, + "rightModuleId": 1, "pos": [ - 41, + 47, 0 ] }, { "id": 4, - "plugin": "Fundamental", - "version": "1.4.0", - "model": "VCA-1", - "params": [ - { - "id": 0, - "value": 1.0 - }, - { - "id": 1, - "value": 1.0 + "plugin": "Core", + "version": "1.1.6", + "model": "MIDIToCVInterface", + "params": [], + "rightModuleId": 5, + "data": { + "channels": 1, + "polyMode": 0, + "clockDivision": 24, + "lastPitch": 8192, + "lastMod": 0, + "midi": { + "driver": -11, + "deviceName": "QWERTY keyboard (US)", + "channel": -1 } - ], - "leftModuleId": 3, + }, "pos": [ - 49, + 0, 0 ] }, @@ -111,7 +131,7 @@ "id": 5, "plugin": "Fundamental", "version": "1.4.0", - "model": "VCO", + "model": "VCO2", "params": [ { "id": 0, @@ -127,33 +147,47 @@ }, { "id": 3, - "value": 0.0 + "value": 2.98950028 }, { "id": 4, - "value": 0.0 - }, + "value": 1.0 + } + ], + "leftModuleId": 4, + "rightModuleId": 7, + "pos": [ + 8, + 0 + ] + }, + { + "id": 6, + "plugin": "Fundamental", + "version": "1.4.0", + "model": "VCA-1", + "params": [ { - "id": 5, - "value": 0.5 + "id": 0, + "value": 1.0 }, { - "id": 6, - "value": 0.0 + "id": 1, + "value": 1.0 } ], - "leftModuleId": 10, - "rightModuleId": 3, + "leftModuleId": 7, + "rightModuleId": 8, "pos": [ - 31, + 22, 0 ] }, { - "id": 8, - "plugin": "gen-rack", - "version": "1.0.0-beta", - "model": "gigaverb", + "id": 7, + "plugin": "Fundamental", + "version": "1.4.0", + "model": "ADSR", "params": [ { "id": 0, @@ -161,47 +195,33 @@ }, { "id": 1, - "value": 0.0 + "value": 0.5 }, { "id": 2, - "value": 0.0 + "value": 0.199500024 }, { "id": 3, - "value": 0.0 - }, - { - "id": 4, - "value": 0.216099918 - }, - { - "id": 5, - "value": 68.927002 - }, - { - "id": 6, - "value": 100.0 - }, - { - "id": 7, - "value": 0.403499871 + "value": 0.5 } ], + "leftModuleId": 5, + "rightModuleId": 6, "pos": [ - 55, + 14, 0 ] }, { - "id": 9, + "id": 8, "plugin": "Fundamental", "version": "1.4.0", - "model": "SEQ3", + "model": "8vert", "params": [ { "id": 0, - "value": 2.61199975 + "value": 0.0 }, { "id": 1, @@ -213,336 +233,111 @@ }, { "id": 3, - "value": 7.0 - }, - { - "id": 4, - "value": 7.22494173 - }, - { - "id": 5, - "value": 4.87395954 - }, - { - "id": 6, - "value": 3.30422854 - }, - { - "id": 7, - "value": 5.75982285 - }, - { - "id": 8, - "value": 4.92545319 - }, - { - "id": 9, - "value": 5.74699831 - }, - { - "id": 10, - "value": 5.25032616 - }, - { - "id": 11, - "value": 3.90549183 - }, - { - "id": 12, - "value": 2.8158772 - }, - { - "id": 13, - "value": 9.76687908 - }, - { - "id": 14, - "value": 8.1625042 - }, - { - "id": 15, - "value": 8.75809765 - }, - { - "id": 16, - "value": 6.81201029 - }, - { - "id": 17, - "value": 7.65390301 - }, - { - "id": 18, - "value": 1.54938221 - }, - { - "id": 19, - "value": 2.17417288 - }, - { - "id": 20, - "value": 4.2208643 - }, - { - "id": 21, - "value": 4.4611454 - }, - { - "id": 22, - "value": 6.91076946 - }, - { - "id": 23, - "value": 9.43955231 - }, - { - "id": 24, - "value": 9.2564373 - }, - { - "id": 25, - "value": 3.44319296 - }, - { - "id": 26, - "value": 1.15675569 - }, - { - "id": 27, - "value": 2.71019936 - }, - { - "id": 28, - "value": 0.0 - }, - { - "id": 29, - "value": 0.0 - }, - { - "id": 30, - "value": 0.0 - }, - { - "id": 31, "value": 0.0 }, { - "id": 32, + "id": 4, "value": 0.0 }, { - "id": 33, + "id": 5, "value": 0.0 }, { - "id": 34, + "id": 6, "value": 0.0 }, { - "id": 35, + "id": 7, "value": 0.0 } ], - "rightModuleId": 12, - "data": { - "running": true, - "gates": [ - 1, - 1, - 0, - 1, - 1, - 0, - 1, - 1 - ] - }, - "pos": [ - 0, - 0 - ] - }, - { - "id": 10, - "plugin": "Fundamental", - "version": "1.4.0", - "model": "Quantizer", - "params": [], - "leftModuleId": 11, - "rightModuleId": 5, - "data": { - "enabledNotes": [ - false, - false, - true, - false, - true, - false, - false, - false, - true, - false, - false, - true - ] - }, - "pos": [ - 28, - 0 - ] - }, - { - "id": 11, - "plugin": "Fundamental", - "version": "1.4.0", - "model": "VCA-1", - "params": [ - { - "id": 0, - "value": 0.137500048 - }, - { - "id": 1, - "value": 1.0 - } - ], - "leftModuleId": 12, - "rightModuleId": 10, + "leftModuleId": 6, + "rightModuleId": 2, "pos": [ 25, 0 ] - }, - { - "id": 12, - "plugin": "Fundamental", - "version": "1.4.0", - "model": "SequentialSwitch2", - "params": [ - { - "id": 0, - "value": 0.0 - } - ], - "leftModuleId": 9, - "rightModuleId": 11, - "pos": [ - 22, - 0 - ] } ], "cables": [ { - "id": 2, - "outputModuleId": 2, - "outputId": 0, - "inputModuleId": 1, - "inputId": 0, - "color": "#01baef" - }, - { - "id": 3, + "id": 0, "outputModuleId": 2, "outputId": 0, - "inputModuleId": 1, + "inputModuleId": 3, "inputId": 1, - "color": "#f5c079" - }, - { - "id": 7, - "outputModuleId": 3, - "outputId": 0, - "inputModuleId": 4, - "inputId": 0, - "color": "#f5c079" + "color": "#918ae0" }, { - "id": 8, - "outputModuleId": 5, + "id": 1, + "outputModuleId": 2, "outputId": 1, - "inputModuleId": 4, - "inputId": 1, + "inputModuleId": 3, + "inputId": 2, "color": "#88c478" }, { - "id": 13, - "outputModuleId": 4, + "id": 2, + "outputModuleId": 6, "outputId": 0, - "inputModuleId": 8, + "inputModuleId": 2, "inputId": 0, - "color": "#f5c079" + "color": "#01baef" }, { - "id": 14, - "outputModuleId": 8, + "id": 3, + "outputModuleId": 6, "outputId": 0, "inputModuleId": 2, "inputId": 1, - "color": "#918ae0" - }, - { - "id": 15, - "outputModuleId": 11, - "outputId": 0, - "inputModuleId": 10, - "inputId": 0, - "color": "#88c478" + "color": "#f5c079" }, { - "id": 16, - "outputModuleId": 10, + "id": 4, + "outputModuleId": 7, "outputId": 0, - "inputModuleId": 5, + "inputModuleId": 6, "inputId": 0, - "color": "#01baef" - }, - { - "id": 18, - "outputModuleId": 9, - "outputId": 0, - "inputModuleId": 3, - "inputId": 4, "color": "#918ae0" }, { - "id": 19, - "outputModuleId": 9, + "id": 5, + "outputModuleId": 4, "outputId": 1, - "inputModuleId": 12, - "inputId": 2, + "inputModuleId": 7, + "inputId": 4, "color": "#88c478" }, { - "id": 20, - "outputModuleId": 9, - "outputId": 2, - "inputModuleId": 12, - "inputId": 3, + "id": 6, + "outputModuleId": 4, + "outputId": 0, + "inputModuleId": 5, + "inputId": 0, "color": "#01baef" }, { - "id": 21, - "outputModuleId": 9, - "outputId": 3, - "inputModuleId": 12, - "inputId": 4, + "id": 7, + "outputModuleId": 5, + "outputId": 0, + "inputModuleId": 6, + "inputId": 1, "color": "#f5c079" }, { - "id": 22, - "outputModuleId": 9, + "id": 8, + "outputModuleId": 3, "outputId": 0, - "inputModuleId": 12, + "inputModuleId": 1, "inputId": 0, "color": "#918ae0" }, { - "id": 23, - "outputModuleId": 12, + "id": 9, + "outputModuleId": 3, "outputId": 0, - "inputModuleId": 11, + "inputModuleId": 1, "inputId": 1, "color": "#88c478" }