Refactor all values to have a universal support for modulations.

The modulation is now always added during value transformation.
With this, a lot of *_MOD defines could be removed.
The waveform for some tests changed slightly, because when the
value is saved to memory after modulating it, there is some
rounding errors.
This commit is contained in:
Veikko Sariola
2020-05-01 16:56:30 +03:00
parent 0c08f3d41c
commit 53a1be9b61
35 changed files with 110 additions and 350 deletions

View File

@@ -7,9 +7,7 @@
%define GO4K_USE_FST
%define GO4K_USE_VCO_PHASE_OFFSET
%define GO4K_USE_DLL
%define GO4K_USE_DLL_MOD
%define GO4K_USE_DLL_DAMP
%define GO4K_USE_DLL_MOD_AM
%define GO4K_USE_DLL_DC_FILTER
%define GO4K_USE_DLL_CHORUS
%define GO4K_USE_DLL_CHORUS_CLAMP
@@ -69,7 +67,7 @@ GO4K_BEGIN_PARAMDEF(Instrument0)
GO4K_PAN PANNING(64)
GO4K_OUT GAIN(128), AUXSEND(0)
GO4K_VCO TRANSPOSE(70),DETUNE(64),PHASE(64),GATES(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE|LFO)
GO4K_FST AMOUNT(32),DEST(3*MAX_UNIT_SLOTS + 5 + FST_POP) ; modulate
GO4K_FST AMOUNT(32),VALUE_MOD(3,DLL,depth,FST_POP)
GO4K_END_PARAMDEF
;// global parameters
GO4K_BEGIN_PARAMDEF(Global)

View File

@@ -7,9 +7,7 @@
%define GO4K_USE_FST
%define GO4K_USE_VCO_PHASE_OFFSET
%define GO4K_USE_DLL
%define GO4K_USE_DLL_MOD
%define GO4K_USE_DLL_DAMP
%define GO4K_USE_DLL_MOD_DM
%define GO4K_USE_DLL_DC_FILTER
%define GO4K_USE_DLL_CHORUS
%define GO4K_USE_DLL_CHORUS_CLAMP
@@ -69,7 +67,7 @@ GO4K_BEGIN_PARAMDEF(Instrument0)
GO4K_PAN PANNING(64)
GO4K_OUT GAIN(128), AUXSEND(0)
GO4K_VCO TRANSPOSE(70),DETUNE(64),PHASE(64),GATES(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE|LFO)
GO4K_FST AMOUNT(32),DEST(3*MAX_UNIT_SLOTS + 3 + FST_POP) ; modulate
GO4K_FST AMOUNT(32),VALUE_MOD(3,DLL,damp,FST_POP)
GO4K_END_PARAMDEF
;// global parameters
GO4K_BEGIN_PARAMDEF(Global)

View File

@@ -5,9 +5,7 @@
%define USE_SECTIONS
%define GO4K_USE_VCO_PHASE_OFFSET
%define GO4K_USE_DLL
%define GO4K_USE_DLL_MOD
%define GO4K_USE_DLL_DAMP
%define GO4K_USE_DLL_MOD_FM
%define GO4K_USE_DLL_DC_FILTER
%define GO4K_USE_DLL_CHORUS
%define GO4K_USE_DLL_CHORUS_CLAMP
@@ -67,7 +65,7 @@ GO4K_BEGIN_PARAMDEF(Instrument0)
GO4K_PAN PANNING(64)
GO4K_OUT GAIN(128), AUXSEND(0)
GO4K_VCO TRANSPOSE(70),DETUNE(64),PHASE(64),GATES(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE|LFO)
GO4K_FST AMOUNT(32),DEST(3*MAX_UNIT_SLOTS + 1 + FST_POP) ; modulate
GO4K_FST AMOUNT(32),VALUE_MOD(3,DLL,feedback,FST_POP)
GO4K_END_PARAMDEF
;// global parameters
GO4K_BEGIN_PARAMDEF(Global)

View File

@@ -7,9 +7,7 @@
%define GO4K_USE_FST
%define GO4K_USE_VCO_PHASE_OFFSET
%define GO4K_USE_DLL
%define GO4K_USE_DLL_MOD
%define GO4K_USE_DLL_DAMP
%define GO4K_USE_DLL_MOD_IM
%define GO4K_USE_DLL_DC_FILTER
%define GO4K_USE_DLL_CHORUS
%define GO4K_USE_DLL_CHORUS_CLAMP
@@ -69,7 +67,7 @@ GO4K_BEGIN_PARAMDEF(Instrument0)
GO4K_PAN PANNING(64)
GO4K_OUT GAIN(128), AUXSEND(0)
GO4K_VCO TRANSPOSE(70),DETUNE(64),PHASE(64),GATES(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE|LFO)
GO4K_FST AMOUNT(32),DEST(3*MAX_UNIT_SLOTS + 2 + FST_POP) ; modulate
GO4K_FST AMOUNT(32),VALUE_MOD(3,DLL,dry,FST_POP)
GO4K_END_PARAMDEF
;// global parameters
GO4K_BEGIN_PARAMDEF(Global)

View File

@@ -7,9 +7,7 @@
%define GO4K_USE_FST
%define GO4K_USE_VCO_PHASE_OFFSET
%define GO4K_USE_DLL
%define GO4K_USE_DLL_MOD
%define GO4K_USE_DLL_DAMP
%define GO4K_USE_DLL_MOD_PM
%define GO4K_USE_DLL_DC_FILTER
%define GO4K_USE_DLL_CHORUS
%define GO4K_CLIP_OUTPUT ; the original expected data was clipping, and this was on
@@ -68,7 +66,7 @@ GO4K_BEGIN_PARAMDEF(Instrument0)
GO4K_PAN PANNING(64)
GO4K_OUT GAIN(128), AUXSEND(0)
GO4K_VCO TRANSPOSE(70),DETUNE(64),PHASE(64),GATES(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE|LFO)
GO4K_FST AMOUNT(32),DEST(3*MAX_UNIT_SLOTS + 0 + FST_POP) ; modulate
GO4K_FST AMOUNT(32),VALUE_MOD(3,DLL,pregain,FST_POP)
GO4K_END_PARAMDEF
;// global parameters
GO4K_BEGIN_PARAMDEF(Global)

View File

@@ -7,9 +7,7 @@
%define GO4K_USE_FST
%define GO4K_USE_VCO_PHASE_OFFSET
%define GO4K_USE_DLL
%define GO4K_USE_DLL_MOD
%define GO4K_USE_DLL_DAMP
%define GO4K_USE_DLL_MOD_SM
%define GO4K_USE_DLL_DC_FILTER
%define GO4K_USE_DLL_CHORUS
%define GO4K_USE_DLL_CHORUS_CLAMP
@@ -69,7 +67,7 @@ GO4K_BEGIN_PARAMDEF(Instrument0)
GO4K_PAN PANNING(64)
GO4K_OUT GAIN(128), AUXSEND(0)
GO4K_VCO TRANSPOSE(70),DETUNE(64),PHASE(64),GATES(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE|LFO)
GO4K_FST AMOUNT(32),DEST(3*MAX_UNIT_SLOTS + 4 + FST_POP) ; modulate
GO4K_FST AMOUNT(32),VALUE_MOD(3,DLL,freq,FST_POP)
GO4K_END_PARAMDEF
;// global parameters
GO4K_BEGIN_PARAMDEF(Global)

View File

@@ -4,7 +4,6 @@
%define SINGLE_FILE
%define USE_SECTIONS
%define GO4K_USE_DST
%define GO4K_USE_DST_MOD_DM
%define GO4K_USE_FST
%define GO4K_USE_VCO_PHASE_OFFSET
@@ -60,8 +59,8 @@ GO4K_BEGIN_PARAMDEF(Instrument0)
GO4K_ENV ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128)
GO4K_DST DRIVE(96), SNHFREQ(128), FLAGS(0)
GO4K_VCO TRANSPOSE(70),DETUNE(64),PHASE(64),GATES(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE|LFO)
GO4K_FST AMOUNT(68),DEST(1*MAX_UNIT_SLOTS + 2)
GO4K_FST AMOUNT(68),DEST(3*MAX_UNIT_SLOTS + 2 + FST_POP)
GO4K_FST AMOUNT(68),VALUE_MOD(1,DST,drive,0)
GO4K_FST AMOUNT(68),VALUE_MOD(3,DST,drive,FST_POP)
GO4K_OUT GAIN(128), AUXSEND(0)
GO4K_END_PARAMDEF
;// global parameters

View File

@@ -5,7 +5,6 @@
%define USE_SECTIONS
%define GO4K_USE_DST
%define GO4K_USE_DST_SH
%define GO4K_USE_DST_MOD_SH
%define GO4K_USE_DST_CHECK
%define GO4K_USE_FST
%define GO4K_USE_VCO_PHASE_OFFSET
@@ -62,8 +61,8 @@ GO4K_BEGIN_PARAMDEF(Instrument0)
GO4K_ENV ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128)
GO4K_DST DRIVE(64), SNHFREQ(3), FLAGS(0)
GO4K_VCO TRANSPOSE(70),DETUNE(64),PHASE(64),GATES(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE|LFO)
GO4K_FST AMOUNT(68),DEST(1*MAX_UNIT_SLOTS + 3)
GO4K_FST AMOUNT(68),DEST(3*MAX_UNIT_SLOTS + 3 + FST_POP)
GO4K_FST AMOUNT(68),VALUE_MOD(1,DST,snhfreq,0)
GO4K_FST AMOUNT(68),VALUE_MOD(3,DST,snhfreq,FST_POP)
GO4K_OUT GAIN(128), AUXSEND(0)
GO4K_END_PARAMDEF
;// global parameters

View File

@@ -5,8 +5,6 @@
%define USE_SECTIONS
%define GO4K_USE_VCO_SHAPE
%define GO4K_USE_FST
%define GO4K_USE_ENV_MOD_GM
%define GO4K_USE_ENV_MOD_ADR
%define GO4K_USE_ENV_CHECK ; // removing this skips checks if processing is needed
%include "../src/4klang.asm"
@@ -59,11 +57,11 @@ GO4K_BEGIN_PARAMDEF(Instrument0)
GO4K_ENV ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128)
GO4K_ENV ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128)
GO4K_VCO TRANSPOSE(120),DETUNE(64),PHASE(0),GATES(0),COLOR(128),SHAPE(96),GAIN(128),FLAGS(SINE|LFO)
GO4K_FST AMOUNT(68),DEST(0*MAX_UNIT_SLOTS + 3) ; modulate attack
GO4K_FST AMOUNT(68),DEST(0*MAX_UNIT_SLOTS + 4) ; modulate decay
GO4K_FST AMOUNT(68),VALUE_MOD(0,ENV,attac,0)
GO4K_FST AMOUNT(68),VALUE_MOD(0,ENV,decay,0)
; Sustain modulation seems not to be implemented
GO4K_FST AMOUNT(68),DEST(0*MAX_UNIT_SLOTS + 6) ; modulate release
GO4K_FST AMOUNT(68),DEST(1*MAX_UNIT_SLOTS + 2 + FST_POP) ; modulate gain
GO4K_FST AMOUNT(68),VALUE_MOD(0,ENV,release,0)
GO4K_FST AMOUNT(68),VALUE_MOD(1,ENV,gain,FST_POP)
GO4K_OUT GAIN(110), AUXSEND(0)
GO4K_END_PARAMDEF
;// global parameters

View File

@@ -55,8 +55,8 @@ SECT_DATA(g4kmuc4)
EXPORT MANGLE_DATA(go4k_synth_parameter_values)
GO4K_BEGIN_PARAMDEF(Instrument0)
GO4K_FLD VALUE(128)
GO4K_FSTG AMOUNT(96),DEST((1*go4k_instrument.size*MAX_VOICES/4)+(3*MAX_UNIT_SLOTS+0)+(go4k_instrument.workspace/4)+FST_SET+FST_POP)
GO4K_FLD VALUE(96)
GO4K_FSTG AMOUNT(96),GLOBAL_VALUE_MOD(1,3,FLD,value,FST_SET+FST_POP)
GO4K_FLD VALUE(64)
GO4K_FLD VALUE(64)
GO4K_OUT GAIN(128), AUXSEND(0)
@@ -64,8 +64,8 @@ GO4K_END_PARAMDEF
;// global parameters
GO4K_BEGIN_PARAMDEF(Global)
GO4K_ACC ACCTYPE(OUTPUT)
GO4K_FLD VALUE(0)
GO4K_FSTG AMOUNT(96),DEST((0*go4k_instrument.size*MAX_VOICES/4)+(2*MAX_UNIT_SLOTS+0)+(go4k_instrument.workspace/4)+FST_SET+FST_POP)
GO4K_FLD VALUE(32)
GO4K_FSTG AMOUNT(96),GLOBAL_VALUE_MOD(0,2,FLD,value,FST_SET+FST_POP)
GO4K_FLD VALUE(64)
GO4K_FOP OP(FOP_ADDP)
GO4K_OUT GAIN(128), AUXSEND(0)

View File

@@ -10,6 +10,8 @@
#include <sys/stat.h>
#endif
#include <math.h>
extern void __stdcall _4klang_render();
@@ -25,6 +27,8 @@ int main(int argc, char* argv[]) {
char actual_output_folder[] = "actual_output/";
long fsize;
long bufsize;
boolean small_difference;
double diff;
#ifndef GO4K_USE_16BIT_OUTPUT
float* buf = NULL;
float* filebuf = NULL;
@@ -82,11 +86,26 @@ int main(int argc, char* argv[]) {
fread((void*)filebuf, test_max_samples * 2, sizeof(*filebuf), f);
small_difference = FALSE;
for (n = 0; n < test_max_samples * 2; n++) {
if (buf[n] != filebuf[n]) {
diff = (double)(buf[n]) - (double)(filebuf[n]);
#ifdef GO4K_USE_16BIT_OUTPUT
diff = diff / 32768.0f;
#endif
diff = fabs(diff);
if (diff > 1e-4f) {
printf("4klang rendered different wave than expected\n");
goto fail;
}
else if (diff > 0.0f) {
small_difference = TRUE;
}
}
if (small_difference) {
printf("4klang rendered almost correct wave, but with small errors (< 1e-4)\n");
goto fail;
}
success:

View File

@@ -54,11 +54,11 @@ SECT_DATA(g4kmuc4)
EXPORT MANGLE_DATA(go4k_synth_parameter_values)
GO4K_BEGIN_PARAMDEF(Instrument0)
GO4K_FLD VALUE(0)
GO4K_FST AMOUNT(96),DEST(5*MAX_UNIT_SLOTS + 0)
GO4K_FST AMOUNT(96),DEST(6*MAX_UNIT_SLOTS + 0 + FST_POP)
GO4K_FLD VALUE(32)
GO4K_FST AMOUNT(96),VALUE_MOD(5,FLD,value,0)
GO4K_FST AMOUNT(96),VALUE_MOD(6,FLD,value,FST_POP)
GO4K_FLD VALUE(128)
GO4K_FST AMOUNT(128),DEST(6*MAX_UNIT_SLOTS + 0 + FST_ADD + FST_POP)
GO4K_FST AMOUNT(96),VALUE_MOD(6,FLD,value,FST_ADD + FST_POP)
GO4K_FLD VALUE(64)
GO4K_FLD VALUE(64)
GO4K_OUT GAIN(128), AUXSEND(0)

View File

@@ -7,7 +7,6 @@
%define GO4K_USE_PAN
%define GO4K_USE_VCF_BAND
%define GO4K_USE_VCF_CHECK
%define GO4K_USE_VCF_MOD_FM
%define GO4K_USE_VCO_PHASE_OFFSET ; // removing this will skip initial phase offset code
%include "../src/4klang.asm"
@@ -64,7 +63,7 @@ GO4K_BEGIN_PARAMDEF(Instrument0)
GO4K_PAN PANNING(64)
GO4K_OUT GAIN(128), AUXSEND(0)
GO4K_VCO TRANSPOSE(70),DETUNE(64),PHASE(64),GATES(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE|LFO)
GO4K_FST AMOUNT(32),DEST(3*MAX_UNIT_SLOTS + 4 + FST_POP) ; modulate detune
GO4K_FST AMOUNT(32),VALUE_MOD(3,VCF,freq,FST_POP)
GO4K_END_PARAMDEF
;// global parameters
GO4K_BEGIN_PARAMDEF(Global)

View File

@@ -7,7 +7,6 @@
%define GO4K_USE_PAN
%define GO4K_USE_VCF_BAND
%define GO4K_USE_VCF_CHECK
%define GO4K_USE_VCF_MOD_RM
%define GO4K_USE_VCO_PHASE_OFFSET ; // removing this will skip initial phase offset code
%include "../src/4klang.asm"
@@ -64,7 +63,7 @@ GO4K_BEGIN_PARAMDEF(Instrument0)
GO4K_PAN PANNING(64)
GO4K_OUT GAIN(128), AUXSEND(0)
GO4K_VCO TRANSPOSE(70),DETUNE(64),PHASE(64),GATES(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE|LFO)
GO4K_FST AMOUNT(32),DEST(3*MAX_UNIT_SLOTS + 5 + FST_POP) ; modulate detune
GO4K_FST AMOUNT(32),VALUE_MOD(3,VCF,res,FST_POP)
GO4K_END_PARAMDEF
;// global parameters
GO4K_BEGIN_PARAMDEF(Global)

View File

@@ -6,7 +6,6 @@
%define GO4K_USE_FST
%define GO4K_USE_VCO_SHAPE
%define GO4K_USE_VCO_PHASE_OFFSET
%define GO4K_USE_VCO_MOD_CM
%include "../src/4klang.asm"
@@ -59,7 +58,7 @@ GO4K_BEGIN_PARAMDEF(Instrument0)
GO4K_FOP OP(FOP_MULP)
GO4K_FOP OP(FOP_PUSH)
GO4K_VCO TRANSPOSE(70),DETUNE(64),PHASE(64),GATES(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE|LFO)
GO4K_FST AMOUNT(68),DEST(1*MAX_UNIT_SLOTS + 5 + FST_POP) ; modulate color
GO4K_FST AMOUNT(68),VALUE_MOD(1,VCO,color,FST_POP)
GO4K_OUT GAIN(128), AUXSEND(0)
GO4K_END_PARAMDEF
;// global parameters

View File

@@ -59,7 +59,7 @@ GO4K_BEGIN_PARAMDEF(Instrument0)
GO4K_FOP OP(FOP_MULP)
GO4K_FOP OP(FOP_PUSH)
GO4K_VCO TRANSPOSE(70),DETUNE(64),PHASE(64),GATES(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE|LFO)
GO4K_FST AMOUNT(128),DEST(1*MAX_UNIT_SLOTS + 2 + FST_POP) ; modulate detune
GO4K_FST AMOUNT(128),WRK_MOD(1,VCO,detune_mod,FST_POP) ; modulate detune
GO4K_OUT GAIN(128), AUXSEND(0)
GO4K_END_PARAMDEF
;// global parameters

View File

@@ -59,7 +59,7 @@ GO4K_BEGIN_PARAMDEF(Instrument0)
GO4K_FOP OP(FOP_MULP)
GO4K_FOP OP(FOP_PUSH)
GO4K_VCO TRANSPOSE(70),DETUNE(64),PHASE(64),GATES(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE|LFO)
GO4K_FST AMOUNT(68),DEST(1*MAX_UNIT_SLOTS + 3 + FST_POP) ; modulate fm
GO4K_FST AMOUNT(68),WRK_MOD(1,VCO,freq_mod,FST_POP)
GO4K_OUT GAIN(128), AUXSEND(0)
GO4K_END_PARAMDEF
;// global parameters

View File

@@ -6,7 +6,6 @@
%define GO4K_USE_FST
%define GO4K_USE_VCO_SHAPE
%define GO4K_USE_VCO_PHASE_OFFSET
%define GO4K_USE_VCO_MOD_GM
%define GO4K_CLIP_OUTPUT ; the original expected data was clipping, and this was on
%include "../src/4klang.asm"
@@ -60,7 +59,7 @@ GO4K_BEGIN_PARAMDEF(Instrument0)
GO4K_FOP OP(FOP_MULP)
GO4K_FOP OP(FOP_PUSH)
GO4K_VCO TRANSPOSE(70),DETUNE(64),PHASE(64),GATES(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE|LFO)
GO4K_FST AMOUNT(68),DEST(1*MAX_UNIT_SLOTS + 7 + FST_POP) ; modulate gm
GO4K_FST AMOUNT(68),VALUE_MOD(1,VCO,gain,FST_POP)
GO4K_OUT GAIN(128), AUXSEND(0)
GO4K_END_PARAMDEF
;// global parameters

View File

@@ -6,7 +6,6 @@
%define GO4K_USE_FST
%define GO4K_USE_VCO_SHAPE
%define GO4K_USE_VCO_PHASE_OFFSET
%define GO4K_USE_VCO_MOD_PM
%include "../src/4klang.asm"
@@ -59,7 +58,7 @@ GO4K_BEGIN_PARAMDEF(Instrument0)
GO4K_FOP OP(FOP_MULP)
GO4K_FOP OP(FOP_PUSH)
GO4K_VCO TRANSPOSE(70),DETUNE(64),PHASE(64),GATES(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE|LFO)
GO4K_FST AMOUNT(128),DEST(1*MAX_UNIT_SLOTS + 4 + FST_POP) ; modulate phase
GO4K_FST AMOUNT(128),VALUE_MOD(1,VCO,phaseofs,FST_POP)
GO4K_OUT GAIN(128), AUXSEND(0)
GO4K_END_PARAMDEF
;// global parameters

View File

@@ -6,7 +6,6 @@
%define GO4K_USE_FST
%define GO4K_USE_VCO_SHAPE
%define GO4K_USE_VCO_PHASE_OFFSET
%define GO4K_USE_VCO_MOD_SM
%include "../src/4klang.asm"
@@ -59,7 +58,7 @@ GO4K_BEGIN_PARAMDEF(Instrument0)
GO4K_FOP OP(FOP_MULP)
GO4K_FOP OP(FOP_PUSH)
GO4K_VCO TRANSPOSE(70),DETUNE(64),PHASE(64),GATES(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE|LFO)
GO4K_FST AMOUNT(68),DEST(1*MAX_UNIT_SLOTS + 6 + FST_POP) ; modulate sm
GO4K_FST AMOUNT(68),VALUE_MOD(1,VCO,shape,FST_POP)
GO4K_OUT GAIN(128), AUXSEND(0)
GO4K_END_PARAMDEF
;// global parameters

View File

@@ -6,7 +6,6 @@
%define GO4K_USE_FST
%define GO4K_USE_VCO_SHAPE
%define GO4K_USE_VCO_PHASE_OFFSET
%define GO4K_USE_VCO_MOD_TM
%include "../src/4klang.asm"
@@ -59,7 +58,7 @@ GO4K_BEGIN_PARAMDEF(Instrument0)
GO4K_FOP OP(FOP_MULP)
GO4K_FOP OP(FOP_PUSH)
GO4K_VCO TRANSPOSE(70),DETUNE(64),PHASE(64),GATES(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE|LFO)
GO4K_FST AMOUNT(68),DEST(1*MAX_UNIT_SLOTS + 1 + FST_POP) ; modulate transpose
GO4K_FST AMOUNT(68),VALUE_MOD(1,VCO,transpose,FST_POP)
GO4K_OUT GAIN(128), AUXSEND(0)
GO4K_END_PARAMDEF
;// global parameters