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