Ajout du module pour changer le volume et le panoramique des chaines audio et d'un autre qui ajoute des effets (chorus et delay pour l'instant) à une chaine).

(je viens de me rendre compte qu'on va aussi sûrement avoir besoin de les enlever ces effets, je m'y remets)
This commit is contained in:
Majora 2014-05-19 18:33:25 +02:00
parent dcabb02381
commit faba5fd432
4 changed files with 78 additions and 0 deletions

41
sources/FX/FX.c Normal file
View File

@ -0,0 +1,41 @@
#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);
}

12
sources/FX/FX.h Normal file
View File

@ -0,0 +1,12 @@
#ifndef _FX_h
#define _FX_h
#include <stdlib.h>
#include <stdio.h>
#include <fmodex/fmod.h>
void fxChorus (FMOD_CHANNEL *chan, int dry, int wet1, int wet2, int wet3, int delay, int rate, int depth) {
}
void fxDelay (FMOD_CHANNEL *chan, int dry, int wet, int time, int decay) {
}

13
sources/VolPan/VolPan.c Normal file
View File

@ -0,0 +1,13 @@
#include "VolPan.h"
void pan (int position, FMOD_CHANNEL *chan) { // La fonction prend en entrée un entier entre -1 (son à gauche) et 1 (son à droite)
FMOD_Channel_SetPan(chan, position); // et la chaine FMOD à affecter
}
void vol (int volume, FMOD_CHANNEL *chan) { // La fonction prend en entrée un entier entre 0 (-inf dB) et 1 (0 dB)
FMOD_Channel_SetVolume(chan, volume); // et la chaine FMOD à affecter
}

12
sources/VolPan/VolPan.h Normal file
View File

@ -0,0 +1,12 @@
#ifndef _VolPan_h
#define _VolPan_h
#include <stdlib.h>
#include <stdio.h>
#include <fmodex/fmod.h>
void pan (int position, FMOD_CHANNEL *chan) {
}
void vol (int volume, FMOD_CHANNEL *chan) {
}