rearrange output stuff

This commit is contained in:
Gordon JC Pearce 2025-08-18 00:35:47 +01:00
parent fcadaf3980
commit 24fd4718f5
4 changed files with 24 additions and 10 deletions

View File

@ -24,7 +24,13 @@
#include "DistrhoPluginInfo.h"
Generator::Generator() {
Generator::Generator(uint32_t bufferSize) {
output = new float[bufferSize];
}
Generator::~Generator() {
delete output;
}
void Generator::setupGenerator(double sampleRate) {
@ -37,7 +43,7 @@ void Generator::setupGenerator(double sampleRate) {
}
}
void Generator::runBlock(float *output, uint8_t *noteTable, uint32_t frames) {
void Generator::runBlock(uint8_t *noteTable, uint32_t frames) {
Voice *v;
uint32_t i;
uint8_t k, p, key, n1, n2, d;

View File

@ -45,10 +45,12 @@ class Voice {
class Generator {
public:
Generator();
Generator(uint32_t bufferSize);
~Generator();
void setupGenerator(double sampleRate);
void runBlock(float *output, uint8_t *noteTable, uint32_t frames);
void runBlock(uint8_t *noteTable, uint32_t frames);
Voice voices[NUM_VOICES];
float *output;
private:
uint32_t phase[12];

View File

@ -24,12 +24,15 @@ START_NAMESPACE_DISTRHO
Sonnenlicht::Sonnenlicht() : Plugin(kParameterCount, 0, 0), fSampleRate(getSampleRate()) {
printf("initialiser called\n");
genny.setupGenerator(fSampleRate);
assigner = new Assigner(genny.voices);
genny = new Generator(getBufferSize());
genny->setupGenerator(fSampleRate);
assigner = new Assigner(genny->voices);
}
Sonnenlicht::~Sonnenlicht() {
delete assigner;
delete genny;
}
void Sonnenlicht::setParameterValue(uint32_t index, float value) {
@ -51,7 +54,8 @@ void Sonnenlicht::deactivate() {
}
void Sonnenlicht::initParameter(uint32_t index, Parameter& parameter) {
(void) index; (void) &parameter; // pretend these aren't here
(void)index;
(void)&parameter; // pretend these aren't here
return;
}
@ -61,7 +65,9 @@ void Sonnenlicht::run(const float**, float** outputs, uint32_t frames,
assigner->handleMidi((MidiEvent*)&ev[i]);
}
genny.runBlock(outputs[0], assigner->noteTbl, frames);
genny->runBlock(assigner->noteTbl, frames);
memcpy(outputs[0], genny->output, frames * sizeof(float));
memcpy(outputs[1], genny->output, frames * sizeof(float));
}
Plugin* createPlugin() { return new Sonnenlicht(); }

View File

@ -58,9 +58,9 @@ class Sonnenlicht : public Plugin {
const MidiEvent *midiEvents, uint32_t midiEventCount) override;
private:
Assigner *assigner;
double fSampleRate;
Generator genny;
Assigner *assigner;
Generator *genny;
DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(Sonnenlicht);
};