switching saw works
This commit is contained in:
parent
cb7445434c
commit
8e9b6adf86
@ -15,7 +15,7 @@ FILES_DSP = \
|
|||||||
|
|
||||||
include ../dpf/Makefile.plugins.mk
|
include ../dpf/Makefile.plugins.mk
|
||||||
|
|
||||||
TARGETS += jack
|
TARGETS += jack lv2
|
||||||
|
|
||||||
all: $(TARGETS)
|
all: $(TARGETS)
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ void Chassis::initParameter(uint32_t index, Parameter ¶meter) {
|
|||||||
parameter.symbol = "saw";
|
parameter.symbol = "saw";
|
||||||
parameter.ranges.min = 0.0f;
|
parameter.ranges.min = 0.0f;
|
||||||
parameter.ranges.max = 127.0f;
|
parameter.ranges.max = 127.0f;
|
||||||
parameter.ranges.def = 127.0f;
|
parameter.ranges.def = 0.0f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,7 +121,7 @@ void Chassis::run(const float **, float **outputs, uint32_t frames, const MidiEv
|
|||||||
// run each synth voice
|
// run each synth voice
|
||||||
bzero(outputs[0], sizeof(float) * frames);
|
bzero(outputs[0], sizeof(float) * frames);
|
||||||
for (uint8_t i = 0; i < NUM_VOICES; i++) {
|
for (uint8_t i = 0; i < NUM_VOICES; i++) {
|
||||||
s.voice[i].run(outputs[0], frames);
|
s.voice[i].run(s, outputs[0], frames);
|
||||||
}
|
}
|
||||||
// copy left to right
|
// copy left to right
|
||||||
memmove(outputs[1], outputs[0], sizeof(float) * frames);
|
memmove(outputs[1], outputs[0], sizeof(float) * frames);
|
||||||
|
@ -54,7 +54,7 @@ void Voice::off() {
|
|||||||
target = 0;
|
target = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Voice::run(float *buffer, uint32_t samples) {
|
void Voice::run(Synth &s, float *buffer, uint32_t samples) {
|
||||||
float y;
|
float y;
|
||||||
env = ((target - env) * 0.01) + env;
|
env = ((target - env) * 0.01) + env;
|
||||||
for (uint32_t i = 0; i < samples; i++) {
|
for (uint32_t i = 0; i < samples; i++) {
|
||||||
@ -63,6 +63,6 @@ void Voice::run(float *buffer, uint32_t samples) {
|
|||||||
y = (2 * phase) - 1;
|
y = (2 * phase) - 1;
|
||||||
y -= blep(phase, omega);
|
y -= blep(phase, omega);
|
||||||
|
|
||||||
buffer[i] += 0.25 * y * env;
|
buffer[i] += (0.25 * y * env) * s.p.saw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,8 @@
|
|||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
|
||||||
|
class Synth;
|
||||||
|
|
||||||
class Patch {
|
class Patch {
|
||||||
public:
|
public:
|
||||||
float saw,sqr;
|
float saw,sqr;
|
||||||
@ -36,7 +38,7 @@ class Voice {
|
|||||||
|
|
||||||
bool isFree();
|
bool isFree();
|
||||||
|
|
||||||
void run(float *buffer, uint32_t samples);
|
void run(Synth &s, float *buffer, uint32_t samples);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
enum { ATTACK,
|
enum { ATTACK,
|
||||||
|
Loading…
Reference in New Issue
Block a user