#include "audio_effects.h" static AudioEffectsParams g_params; static FxOctaverState g_octaverState; static FxEqualizerState g_eqState; static FxOverdriveState g_overdriveState; static FxSaturationState g_saturationState; static FxEchoState g_echoState; static FxReverbState g_reverbState; void AudioEffects_Init(void) { g_params.audio_on_off = false; FxOctaver_Init(&g_octaverState, &g_params.octaver); FxEqualizer_Init(&g_eqState, &g_params.equalizer); FxOverdrive_Init(&g_overdriveState, &g_params.overdrive); FxSaturation_Init(&g_saturationState, &g_params.saturation); FxEcho_Init(&g_echoState, &g_params.echo); FxReverb_Init(&g_reverbState, &g_params.reverb); } float AudioEffects_Process(float input) { float sample = input; sample = FxOctaver_Process(&g_octaverState, &g_params.octaver, sample); sample = FxEqualizer_Process(&g_eqState, &g_params.equalizer, sample); sample = FxOverdrive_Process(&g_overdriveState, &g_params.overdrive, sample); sample = FxSaturation_Process(&g_saturationState, &g_params.saturation, sample); sample = FxEcho_Process(&g_echoState, &g_params.echo, sample); sample = FxReverb_Process(&g_reverbState, &g_params.reverb, sample); /* Coupure de sortie : les effets continuent de tourner (pas de discontinuite * d'etat au reactivation), seule la sortie audible est reduite au silence. */ if (!g_params.audio_on_off) { return 0.0f; } return sample; } AudioEffectsParams *AudioEffects_GetParams(void) { return &g_params; }