MOTEUR DE SON UTILISANT FMOD (C++) (WAV-MIDI-MP3-ETC...)

cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 - 8 mai 2004 à 09:28
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008 - 11 déc. 2005 à 00:43
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/22619-moteur-de-son-utilisant-fmod-c-wav-midi-mp3-etc

cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
11 déc. 2005 à 00:43
Regarde, tu peux remplacer ça:

# //module (loop)
# case MODULE_TYPE_MUSIC:
# if(FMUSIC_PlaySong(module) == NULL)
# return FALSE;
# break;
#
# //module
# case MODULE_TYPE_SOUND:
# if(FMUSIC_PlaySong(module) == NULL)
# return FALSE;
# break;

par ça:

# //module
# case MODULE_TYPE_MUSIC:
# case MODULE_TYPE_SOUND:
# if(FMUSIC_PlaySong(module) == NULL)
# return FALSE;
# break;


à part ça, merci pr le code, je vois mieux comment fmod est hiérarchisé !
ryosaebafr2000 Messages postés 1 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 16 juin 2005
16 juin 2005 à 14:19
salut

g telechargé la derniere version (3.74) de fmod mais apparement
la fonction "FSOUND_Stream_OpenFile" ne semble pas fonctionner car g le message d erreur suivi à la compilation :
" Undefined symbol '_FSOUND_Stream_OpenFile@12' referenced in "simplest.c". "
Pourtant, il ne pose aucun probleme pour lire les MODULES (s3m,mod,it,midi etc) avec la fonction "FMUSIC_LoadSong"

ce qui est bizarre c que dans la doc, la fonction FSOUND_Stream_OpenFile n'existe pas mais est remplacée par FSOUND_Stream_Open et que dans "fmod.h", c'est le prototype FSOUND_Stream_OpenFile qui apparait...

Quelqu'un peut il me venir en aide, PLEASE!!!

PS : si vous connaissez, je suis sous Labwindows CVI 7.0 (code en C pur)
benefy Messages postés 2 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 21 mars 2005
1 avril 2005 à 15:22
Juste une petite remarque à propos de la classe SoundEngine: elle reste limitée du fait qu'il n'est pas possible d'en instancier plusieurs, l'initialisation de FMOD ne pouvant pas se faire 2 fois de suite.
Par contre, connais-tu un moyen d'utiliser FMOD sur 2 périphériques son différents en même temps ?
Par exemple, jouer un son sur une carte son et en jouer un autre en même temps sur une deuxième carte son ?
alexis779 Messages postés 13 Date d'inscription dimanche 21 novembre 2004 Statut Membre Dernière intervention 15 octobre 2005
2 déc. 2004 à 18:06
C'est du beau travail, mais j'y ai trouvé 2 petites coquilles :
Dans l'utilisation (paragraphe 3), il est écrit :
temp.Charger("grosMP3.mp3", TYPE_STREAM);
et plus bas :
temp.Charger("petitWAV.wav", TYPE_SAMPLE);
Mais il faut mettre STREAM_TYPE et SAMPLE_TYPE à la place de TYPE_STREAM et TYPE_SAMPLE, pour qu'elles soient en accord avec les déclarations des variables dans SoundEngine.h.
Voilà c'est tout.

Une dernière chose : le moteur est compatible avec la dernière version de FMod, c'est qui n'est pas toujours le cas des codes que l'on trouve actuellement :
On voit souvent fsound_stream_openfile à la place de fsound_stream_open.
Bravo.
xarier Messages postés 688 Date d'inscription jeudi 26 décembre 2002 Statut Membre Dernière intervention 19 mai 2005
8 mai 2004 à 12:51
bien bien :) mais je pense qu'il faut ajouter la gestion de la frequence et la 3d et aussi la rapidité de lecture c ta besoin d'aide : je suis la :)
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
8 mai 2004 à 12:27
Oui c'est vrai c'est dans la lib du C.
Mais dans tous les cas je reste persuadé qu'il faut utiliser NULL si on veut que le code soit clair.
En fait, pour l'idée de Stroustrup, faudrait faire un
#ifdef NULL
#undef NULL
extern const int NULL = 0;
#endif

et dans un fichier *.cpp :
const int NULL = 0;

Personnellement, je ne vois pas trop ce qu'il y a de mal à utiliser le NULL de base...j'ai jamais eu de problème avec.
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
8 mai 2004 à 11:33
ok, mais NULL n'est pas defini dans la lib standard du c++ mais dans celle du c

"In C++, a literal zero is most appropriate for use as a null pointer
constant" (cpptips)

et stroustrup dit : "If you feel you must define NULL, use const int NULL = 0;"
et pas #define NULL ((void *)0)
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
8 mai 2004 à 11:08
Elle est sympa ta source ;)
djl >> là je suis pas d'accord, faut laisser NULL au lieu de 0, c'est plus explicite, ça revient au même et c'est défini dans la bibliothèque standard.
Par contre je suis d'accord pour remplacer les BOOL par des bool ^^

Aussi, j'ai pas trop regardé mais il me semble que l'on est obligés d'appeler les fonctions son.Liberer() avant un son.Charger() et qu'on doit aussi appeler engine.Desinitialiser().
C'est là que tu pourrais profiter de la puissance du C++ : il faudrait créer des destructeurs qui appelleraient ces méthodes, et ne pas être obligé de libérer un son avant d'en charger un autre : pour ça, la fonction Liberer() serait appelée dans Son::Charger(), seulement si un son était déjà chargé auparavant bien sûr ^^

Voilà, bonne prog.
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
8 mai 2004 à 09:51
et change aussi qq truc pour la rendre plus c++: utilise bool plutot que BOOL, ne met pas void en parametre à une fonction sans parametre (ca concerne juste le c pour differencier prototype et declaration), remplace tes #define par une enum pour tes constante...
tu peux aussi utiliser 0 à la place de NULL
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
8 mai 2004 à 09:28
je trouve que ta source c'est une bonne idée, elle a un petit aspect utile et surtout elle permet de bien apprendre a se servir de FMOD !!!
mais un petit truc que tu pourrais faire, sur le site, dans la partie source, tu fait une sorte d'explication de ta source, je pense que ca serait bien si tu l'inserais dans ton zip...
voila sinon continue ta source, rend la plus puissance et continue a posté les mises a jour sur cppfrance...
Rejoignez-nous