PonyTracker
Un projet de tracker de musique
 Tout Structures de données Espaces de nommage Fichiers Fonctions Variables Définitions de type Ã‰numérations Valeurs énumérées Macros Pages
FX.c
Aller à la documentation de ce fichier.
1 #include "FX.h"
2 
3 
4 // 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); }
5 // à l'effet ajouté pour proposer de les entrer/modifier de façon plus intelligible.
6 
7 
8 void fxChorus (FMOD_CHANNEL *chan, int dry, int wet1, int wet2, int wet3, int delay, int rate, int depth) {
9 
10  FMOD_DSP *chorus;
11 
13 
14  FMOD_DSP_SetParameter(chorus, FMOD_DSP_CHORUS_DRYMIX, dry); // dry correspond au volume du signal d'origine (de 0.0 à 1.0)
15  FMOD_DSP_SetParameter(chorus, FMOD_DSP_CHORUS_WETMIX1, wet1); // wet1 correspond au volume du premier echo du chorus (de 0.0 à 1.0)
16  FMOD_DSP_SetParameter(chorus, FMOD_DSP_CHORUS_WETMIX2, wet2); // idem pour le 2e echo
17  FMOD_DSP_SetParameter(chorus, FMOD_DSP_CHORUS_WETMIX3, wet3); // idem pour le 3e echo
18  FMOD_DSP_SetParameter(chorus, FMOD_DSP_CHORUS_DELAY, delay); // le retard de l'echo en millisecondes (de 0.1 à 100.0)
19  FMOD_DSP_SetParameter(chorus, FMOD_DSP_CHORUS_RATE, rate); // la vitesse de modulation en Hz (de 0.0 à 20.0)
20  FMOD_DSP_SetParameter(chorus, FMOD_DSP_CHORUS_DEPTH, depth); // la profondeur du chorus de 0.0 à 1.0
21 
22  FMOD_Channel_AddDSP(chan, chorus, 0);
23 }
24 
25 
26 
27 
28 
29 void fxDelay (FMOD_CHANNEL *chan, int dry, int wet, int time, int decay) {
30 
31  FMOD_DSP *delay;
32 
34 
35  FMOD_DSP_SetParameter(delay, FMOD_DSP_ECHO_DRYMIX, dry); // dry correspond au volume du signal d'origine (de 0.0 à 1.0)
36  FMOD_DSP_SetParameter(delay, FMOD_DSP_ECHO_WETMIX, wet); // wet correspond au volume de l'effet (de 0.0 à 1.0)
37  FMOD_DSP_SetParameter(delay, FMOD_DSP_ECHO_DELAY, time); // time donne le temps entre chaque echo en millisecondes (de 1 à 5000)
38  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)
39 
40  FMOD_Channel_AddDSP(chan, delay, 0);
41 }
FMOD_RESULT F_API FMOD_System_CreateDSPByType(FMOD_SYSTEM *system, FMOD_DSP_TYPE type, FMOD_DSP **dsp)
void fxChorus(FMOD_CHANNEL *chan, int dry, int wet1, int wet2, int wet3, int delay, int rate, int depth)
Definition: FX.c:8
struct FMOD_CHANNEL FMOD_CHANNEL
Definition: fmod.h:66
FMOD_RESULT F_API FMOD_DSP_SetParameter(FMOD_DSP *dsp, int index, float value)
struct FMOD_DSP FMOD_DSP
Definition: fmod.h:70
void fxDelay(FMOD_CHANNEL *chan, int dry, int wet, int time, int decay)
Definition: FX.c:29
FMOD_RESULT F_API FMOD_Channel_AddDSP(FMOD_CHANNEL *channel, FMOD_DSP *dsp, FMOD_DSPCONNECTION **connection)