ponytracker/sources/FX/FX.c

42 lines
2.1 KiB
C
Raw Permalink Normal View History

#include "FX.h"
// Ces fonctions prennent en entr<74>e une chaine et de nombreux param<61>tres, on pourrait afficher une petite fen<65>tre d<>di<64>e
// <20> l'effet ajout<75> pour proposer de les entrer/modifier de fa<66>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 <20> 1.0)
FMOD_DSP_SetParameter(chorus, FMOD_DSP_CHORUS_WETMIX1, wet1); // wet1 correspond au volume du premier echo du chorus (de 0.0 <20> 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 <20> 100.0)
FMOD_DSP_SetParameter(chorus, FMOD_DSP_CHORUS_RATE, rate); // la vitesse de modulation en Hz (de 0.0 <20> 20.0)
FMOD_DSP_SetParameter(chorus, FMOD_DSP_CHORUS_DEPTH, depth); // la profondeur du chorus de 0.0 <20> 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 <20> 1.0)
FMOD_DSP_SetParameter(delay, FMOD_DSP_ECHO_WETMIX, wet); // wet correspond au volume de l'effet (de 0.0 <20> 1.0)
FMOD_DSP_SetParameter(delay, FMOD_DSP_ECHO_DELAY, time); // time donne le temps entre chaque echo en millisecondes (de 1 <20> 5000)
FMOD_DSP_SetParameter(delay, FMOD_DSP_ECHO_DECAYRATIO, decay); // decay donne la vitesse d'att<74>nuation de l'echo (qui baisse <20> chaque r<>p<EFBFBD>tition) (de 0.0 pour une att<74>nuation totale apr<70>s le premier echo <20> 1.0 pour des echo infinis)
FMOD_Channel_AddDSP(chan, delay, 0);
}