From faba5fd4324ba482d4f7d11b8ab15e4a86551069 Mon Sep 17 00:00:00 2001 From: Majora Date: Mon, 19 May 2014 18:33:25 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20du=20module=20pour=20changer=20le=20vol?= =?UTF-8?q?ume=20et=20le=20panoramique=20des=20chaines=20audio=20et=20d'un?= =?UTF-8?q?=20autre=20qui=20ajoute=20des=20effets=20(chorus=20et=20delay?= =?UTF-8?q?=20pour=20l'instant)=20=C3=A0=20une=20chaine).=20(je=20viens=20?= =?UTF-8?q?de=20me=20rendre=20compte=20qu'on=20va=20aussi=20s=C3=BBrement?= =?UTF-8?q?=20avoir=20besoin=20de=20les=20enlever=20ces=20effets,=20je=20m?= =?UTF-8?q?'y=20remets)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sources/FX/FX.c | 41 +++++++++++++++++++++++++++++++++++++++++ sources/FX/FX.h | 12 ++++++++++++ sources/VolPan/VolPan.c | 13 +++++++++++++ sources/VolPan/VolPan.h | 12 ++++++++++++ 4 files changed, 78 insertions(+) create mode 100644 sources/FX/FX.c create mode 100644 sources/FX/FX.h create mode 100644 sources/VolPan/VolPan.c create mode 100644 sources/VolPan/VolPan.h diff --git a/sources/FX/FX.c b/sources/FX/FX.c new file mode 100644 index 0000000..713bdd4 --- /dev/null +++ b/sources/FX/FX.c @@ -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); +} diff --git a/sources/FX/FX.h b/sources/FX/FX.h new file mode 100644 index 0000000..48cc888 --- /dev/null +++ b/sources/FX/FX.h @@ -0,0 +1,12 @@ +#ifndef _FX_h +#define _FX_h +#include +#include +#include + + +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) { +} diff --git a/sources/VolPan/VolPan.c b/sources/VolPan/VolPan.c new file mode 100644 index 0000000..731f985 --- /dev/null +++ b/sources/VolPan/VolPan.c @@ -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 +} + diff --git a/sources/VolPan/VolPan.h b/sources/VolPan/VolPan.h new file mode 100644 index 0000000..6dab798 --- /dev/null +++ b/sources/VolPan/VolPan.h @@ -0,0 +1,12 @@ +#ifndef _VolPan_h +#define _VolPan_h +#include +#include +#include + + +void pan (int position, FMOD_CHANNEL *chan) { +} + +void vol (int volume, FMOD_CHANNEL *chan) { +}