#define VG_GAME
#include "vg/vg.h"
+//#define VG_ECHO_LPF_BUTTERWORTH
+
static struct vg_dsp{
float *buffer;
u32 allocations;
/* temporary global design */
static struct dsp_lpf __lpf_mud_free;
static struct dsp_delay __echos[8];
+
+#ifdef VG_ECHO_LPF_BUTTERWORTH
+static struct dsp_biquad __echos_lpf[8];
+#else
static struct dsp_lpf __echos_lpf[8];
+#endif
static struct dsp_schroeder __diffusion_chain[8];
static void async_vg_dsp_alloc_texture( void *payload, u32 size )
dsp_init_delay( &__echos[i], total / 1000.0f );
float freq = vg_lerpf( 800.0f, 350.0f, sizes[i] / 256.0f );
+
+#ifdef VG_ECHO_LPF_BUTTERWORTH
+ dsp_init_biquad_butterworth_lpf( &__echos_lpf[i], freq );
+#else
dsp_init_lpf( &__echos_lpf[i], freq );
+#endif
}
float diffusions[] = { 187.0f, 159.0f, 143.0f, 121.0f,
float recieved = 0.0f;
for( int i=0; i<8; i++ ){
- float echo;
+ f32 echo;
dsp_read_delay( __echos+i, &echo, 1 );
+
+#ifdef VG_ECHO_LPF_BUTTERWORTH
+ echo = dsp_biquad_process( __echos_lpf+i, echo );
+#else
dsp_write_lpf( __echos_lpf+i, &echo );
dsp_read_lpf( __echos_lpf+i, &echo );
+#endif
recieved += echo * vg_dsp.echo_tunings[i]*0.98;
}
for( int i=0; i<8; i++ ){
float freq = vg_lerpf( 200.0f, 500.0f, vg_dsp.echo_tunings[i] );
+
+#ifdef VG_ECHO_LPF_BUTTERWORTH
+ dsp_init_biquad_butterworth_lpf( &__echos_lpf[i], freq );
+#else
dsp_update_lpf( &__echos_lpf[i], freq );
+#endif
}
for( int i=0;i<8; i++ ){