#include "FX.h"


// Ces fonctions prennent en entrée une chaine et de nombreux paramètres, on pourrait afficher une petite fenêtre dédiée
// à l'effet ajouté pour proposer de les entrer/modifier de façon plus intelligible.


void fxChorus (FMOD_CHANNEL *chan, int dry, int wet1, int wet2, int wet3, int delay, int rate, int depth) {

    FMOD_DSP *chorus;

    FMOD_System_CreateDSPByType(system, FMOD_DSP_TYPE_CHORUS, &chorus);

    FMOD_DSP_SetParameter(chorus, FMOD_DSP_CHORUS_DRYMIX, dry);         // dry correspond au volume du signal d'origine (de 0.0 à 1.0)
    FMOD_DSP_SetParameter(chorus, FMOD_DSP_CHORUS_WETMIX1, wet1);       // wet1 correspond au volume du premier echo du chorus (de 0.0 à 1.0)
    FMOD_DSP_SetParameter(chorus, FMOD_DSP_CHORUS_WETMIX2, wet2);       // idem pour le 2e echo
    FMOD_DSP_SetParameter(chorus, FMOD_DSP_CHORUS_WETMIX3, wet3);       // idem pour le 3e echo
    FMOD_DSP_SetParameter(chorus, FMOD_DSP_CHORUS_DELAY, delay);        // le retard de l'echo en millisecondes (de 0.1 à 100.0)
    FMOD_DSP_SetParameter(chorus, FMOD_DSP_CHORUS_RATE, rate);          // la vitesse de modulation en Hz (de 0.0 à 20.0)
    FMOD_DSP_SetParameter(chorus, FMOD_DSP_CHORUS_DEPTH, depth);        // la profondeur du chorus de 0.0 à 1.0

    FMOD_Channel_AddDSP(chan, chorus, 0);
}





void fxDelay (FMOD_CHANNEL *chan, int dry, int wet, int time, int decay) {

 FMOD_DSP *delay;

    FMOD_System_CreateDSPByType(system, FMOD_DSP_TYPE_ECHO, &delay);

    FMOD_DSP_SetParameter(delay, FMOD_DSP_ECHO_DRYMIX, dry);            // dry correspond au volume du signal d'origine (de 0.0 à 1.0)
    FMOD_DSP_SetParameter(delay, FMOD_DSP_ECHO_WETMIX, wet);            // wet correspond au volume de l'effet (de 0.0 à 1.0)
    FMOD_DSP_SetParameter(delay, FMOD_DSP_ECHO_DELAY, time);            // time donne le temps entre chaque echo en millisecondes (de 1 à 5000)
    FMOD_DSP_SetParameter(delay, FMOD_DSP_ECHO_DECAYRATIO, decay);      // decay donne la vitesse d'atténuation de l'echo (qui baisse à chaque répétition) (de 0.0 pour une atténuation totale après le premier echo à 1.0 pour des echo infinis)

    FMOD_Channel_AddDSP(chan, delay, 0);
}
