synththing/src/synths/fm_2op.c

33 lines
762 B
C

/*
* Filename: fm_2op.c
*
* Description:
*
*
* Version:
* Created: Thu Oct 31 02:02:19 2019
* Revision: None
* Author: Rachel Fae Fox (foxiepaws),fox@foxiepa.ws
*
*/
#include "../common.h"
#include "fm_2op.h"
float fm2_process(struct FM2 *self, EngineState *t) {
self->Carrier.gate=self->gate;
self->Modulator.gate=self->gate;
switch (self->Algorithm) {
case _fm2_0:
__asm ("nop");
float v1 = (self->Carrier).run(&self->Carrier, t, 0.0);
float v2 = (self->Modulator).run(&self->Modulator, t, 0.0);
double z = (double) v1 + (double) v2 - ((double)v1*(double)v2);
return z;
break;
case _fm2_1:
return (self->Carrier).run(&self->Carrier, t, (self->Modulator).run(&self->Modulator,t,0.0));
break;
}
}