@@ -30,7 +30,7 @@ struct Braids : Module { | |||||
braids::MacroOscillator *osc; | braids::MacroOscillator *osc; | ||||
SampleRateConverter<1> src; | SampleRateConverter<1> src; | ||||
DoubleRingBuffer<float, 256> outputBuffer; | |||||
DoubleRingBuffer<Frame<1>, 256> outputBuffer; | |||||
bool lastTrig = false; | bool lastTrig = false; | ||||
Braids(); | Braids(); | ||||
@@ -87,9 +87,9 @@ void Braids::step() { | |||||
osc->Render(sync_buffer, render_buffer, 24); | osc->Render(sync_buffer, render_buffer, 24); | ||||
// Sample rate convert | // Sample rate convert | ||||
float in[24]; | |||||
Frame<1> in[24]; | |||||
for (int i = 0; i < 24; i++) { | for (int i = 0; i < 24; i++) { | ||||
in[i] = render_buffer[i] / 32768.0; | |||||
in[i].samples[0] = render_buffer[i] / 32768.0; | |||||
} | } | ||||
src.setRatio(gSampleRate / 96000.0); | src.setRatio(gSampleRate / 96000.0); | ||||
@@ -101,7 +101,8 @@ void Braids::step() { | |||||
// Output | // Output | ||||
if (!outputBuffer.empty()) { | if (!outputBuffer.empty()) { | ||||
setf(outputs[OUT_OUTPUT], 5.0 * outputBuffer.shift()); | |||||
Frame<1> f = outputBuffer.shift(); | |||||
setf(outputs[OUT_OUTPUT], 5.0 * f.samples[0]); | |||||
} | } | ||||
} | } | ||||
@@ -95,7 +95,7 @@ void Clouds::step() { | |||||
Frame<2> inputFrames[32]; | Frame<2> inputFrames[32]; | ||||
int inLen = inputBuffer.size(); | int inLen = inputBuffer.size(); | ||||
int outLen = 32; | int outLen = 32; | ||||
inputSrc.process((const float*) inputBuffer.startData(), &inLen, (float*) inputFrames, &outLen); | |||||
inputSrc.process(inputBuffer.startData(), &inLen, inputFrames, &outLen); | |||||
inputBuffer.startIncr(inLen); | inputBuffer.startIncr(inLen); | ||||
// We might not fill all of the input buffer if there is a deficiency, but this cannot be avoided due to imprecisions between the input and output SRC. | // We might not fill all of the input buffer if there is a deficiency, but this cannot be avoided due to imprecisions between the input and output SRC. | ||||
@@ -140,7 +140,7 @@ void Clouds::step() { | |||||
outputSrc.setRatio(gSampleRate / 32000.0); | outputSrc.setRatio(gSampleRate / 32000.0); | ||||
int inLen = 32; | int inLen = 32; | ||||
int outLen = outputBuffer.capacity(); | int outLen = outputBuffer.capacity(); | ||||
outputSrc.process((const float*) outputFrames, &inLen, (float*) outputBuffer.endData(), &outLen); | |||||
outputSrc.process(outputFrames, &inLen, outputBuffer.endData(), &outLen); | |||||
outputBuffer.endIncr(outLen); | outputBuffer.endIncr(outLen); | ||||
} | } | ||||
@@ -121,7 +121,7 @@ void Elements::step() { | |||||
Frame<2> inputFrames[16]; | Frame<2> inputFrames[16]; | ||||
int inLen = inputBuffer.size(); | int inLen = inputBuffer.size(); | ||||
int outLen = 16; | int outLen = 16; | ||||
inputSrc.process((float*) inputBuffer.startData(), &inLen, (float*) inputFrames, &outLen); | |||||
inputSrc.process(inputBuffer.startData(), &inLen, inputFrames, &outLen); | |||||
inputBuffer.startIncr(inLen); | inputBuffer.startIncr(inLen); | ||||
for (int i = 0; i < outLen; i++) { | for (int i = 0; i < outLen; i++) { | ||||
@@ -171,7 +171,7 @@ void Elements::step() { | |||||
outputSrc.setRatio(gSampleRate / 32000.0); | outputSrc.setRatio(gSampleRate / 32000.0); | ||||
int inLen = 16; | int inLen = 16; | ||||
int outLen = outputBuffer.capacity(); | int outLen = outputBuffer.capacity(); | ||||
outputSrc.process((float*) outputFrames, &inLen, (float*) outputBuffer.endData(), &outLen); | |||||
outputSrc.process(outputFrames, &inLen, outputBuffer.endData(), &outLen); | |||||
outputBuffer.endIncr(outLen); | outputBuffer.endIncr(outLen); | ||||
} | } | ||||
@@ -44,7 +44,7 @@ struct Rings : Module { | |||||
SampleRateConverter<1> inputSrc; | SampleRateConverter<1> inputSrc; | ||||
SampleRateConverter<2> outputSrc; | SampleRateConverter<2> outputSrc; | ||||
DoubleRingBuffer<float, 256> inputBuffer; | |||||
DoubleRingBuffer<Frame<1>, 256> inputBuffer; | |||||
DoubleRingBuffer<Frame<2>, 256> outputBuffer; | DoubleRingBuffer<Frame<2>, 256> outputBuffer; | ||||
uint16_t reverb_buffer[32768] = {}; | uint16_t reverb_buffer[32768] = {}; | ||||
@@ -82,8 +82,9 @@ void Rings::step() { | |||||
// "Normalized to a pulse/burst generator that reacts to note changes on the V/OCT input." | // "Normalized to a pulse/burst generator that reacts to note changes on the V/OCT input." | ||||
// Get input | // Get input | ||||
if (!inputBuffer.full()) { | if (!inputBuffer.full()) { | ||||
float inputFrame = getf(inputs[IN_INPUT]) / 5.0; | |||||
inputBuffer.push(inputFrame); | |||||
Frame<1> f; | |||||
f.samples[0] = getf(inputs[IN_INPUT]) / 5.0; | |||||
inputBuffer.push(f); | |||||
} | } | ||||
if (!strum) { | if (!strum) { | ||||
@@ -98,7 +99,7 @@ void Rings::step() { | |||||
inputSrc.setRatio(48000.0 / gSampleRate); | inputSrc.setRatio(48000.0 / gSampleRate); | ||||
int inLen = inputBuffer.size(); | int inLen = inputBuffer.size(); | ||||
int outLen = 24; | int outLen = 24; | ||||
inputSrc.process(inputBuffer.startData(), &inLen, (float*) in, &outLen); | |||||
inputSrc.process(inputBuffer.startData(), &inLen, (Frame<1>*) in, &outLen); | |||||
inputBuffer.startIncr(inLen); | inputBuffer.startIncr(inLen); | ||||
} | } | ||||
@@ -172,7 +173,7 @@ void Rings::step() { | |||||
outputSrc.setRatio(gSampleRate / 48000.0); | outputSrc.setRatio(gSampleRate / 48000.0); | ||||
int inLen = 24; | int inLen = 24; | ||||
int outLen = outputBuffer.capacity(); | int outLen = outputBuffer.capacity(); | ||||
outputSrc.process((const float*) outputFrames, &inLen, (float*) outputBuffer.endData(), &outLen); | |||||
outputSrc.process(outputFrames, &inLen, outputBuffer.endData(), &outLen); | |||||
outputBuffer.endIncr(outLen); | outputBuffer.endIncr(outLen); | ||||
} | } | ||||
} | } | ||||