33 lines
762 B
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;
|
|
}
|
|
}
|