FMODex (Un fading intelligent)

PH2621 Messages postés 9 Date d'inscription mardi 21 février 2006 Statut Membre Dernière intervention 30 janvier 2009 - 18 oct. 2007 à 20:10
PH2621 Messages postés 9 Date d'inscription mardi 21 février 2006 Statut Membre Dernière intervention 30 janvier 2009 - 20 oct. 2007 à 01:14
Bonjour,

Avec le FMODex on peut à l'aide des outils de sa librairie construire un fading
(musique enchainée) automatique à la fin d'un morceau de musique avec le début
d'un suivant.
La fonction FMOD_Sound_GetLength(sound[i], &iLength, FMOD_TIMEUNIT_MS); nous
informe sur le temps que va durer ce morceau ... mais c'est la durée physique de
cette mélodie mais souvent hélas après la dernière note un silence plus ou moins
long (trou noir) émerge (un certain temps ... des secondes) et là le fading est raté ...

Peut-on connaître le niveau dynamique d'une musique tout du long de celle-ci
(Pas le niveau du volume réglabe de la diffusion.) de manière à ce que l'on détermine la fin imminente de cette mélodie et on engendre le fading ?

4 réponses

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
18 oct. 2007 à 21:25
Bien sûr, une analyse de Fourier permet de retouver les amplitudes des fréquences; cependant si tu cherches seulement l'absence de son à la fin c'est peut-être pas la peine de t'embêter avec ça, suffit de faire une petite moyenne quadratique des derniers éléments et de voir si c'est proche de 0 ou pas.
0
PH2621 Messages postés 9 Date d'inscription mardi 21 février 2006 Statut Membre Dernière intervention 30 janvier 2009
19 oct. 2007 à 01:15
Merci pour cette suggestion mais un petit hic pour moi ... comment faire ou avec quelle fonction de FMODex pour obtenir cette valeur miracle pour effectuer cette moyenne ?
J'ai farfouillé à droite à gauche (Peut-être pas à fond) et j'ai pas trouvé un exemple concret...

A bientôt
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
19 oct. 2007 à 17:23
Désolé je donnais une technique générale, je connais pas du tout FMODex.
0
PH2621 Messages postés 9 Date d'inscription mardi 21 février 2006 Statut Membre Dernière intervention 30 janvier 2009
20 oct. 2007 à 01:14
Bonjour,

Au début de cette musique on se procure le temps totale de celle-ci

   FMOD_Sound_GetLength(sound[i], &iLength, FMOD_TIMEUNIT_MS);

Si on vient par exemple scruter (à l'aide d'un timing) toutes le 400 ms demander la position de la lecture

   FMOD_Channel_GetPosition(channel[i], &iPassed, FMOD_TIMEUNIT_MS);

 Si on compare le temps écoulé par rapport au total - 8 secondes

   if (iPassed >= iLength-8000)
On peut donc activer le fading avec le prochain morceau.

Donc ceci est le temps total (physique) de ce qui a été gravé mais pas forcément la fin de la mélodie.

Bien souvent je me répète il existe un temps mort à la fin des enregistrements et ce décompte de 8 secondes

n'est pas la meilleur solution.

S'il existe un moyen de comparer le niveau de la mélodie par rapport à une référence minimum en plusieurs

endroits vers la fin (physique) on peut déterminer la vrai FIN de cette musique. Dans ce cas la synchronisation

du fading sera proche de la vérité.
0
Rejoignez-nous