Problème avec le son

Résolu
F0ra Messages postés 111 Date d'inscription mardi 18 septembre 2007 Statut Membre Dernière intervention 29 décembre 2008 - 2 déc. 2007 à 15:54
F0ra Messages postés 111 Date d'inscription mardi 18 septembre 2007 Statut Membre Dernière intervention 29 décembre 2008 - 3 déc. 2007 à 18:19
Bonjour,



Je réalise un jeu, et j'ai un problème avec le son.



Je voudrais jouer plusieurs sons en même temps et qu'au début de la partie que son soit déjà en mémoire.



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>

 





J'ai essayé avec PlaySound :






Quand le son est exécuté la première fois, le jeu saccade car il n'est pas en mémoire.








 







Avec fmod, je n'arrive pas à jouer 2 sons en même temps.







J'ai ajouté un autre


m_soundChannel2, ça ne donne rien. J'ai toujours un son sur deux qui fonctionne
.











 







LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);







int
m_soundChannel1, m_soundChannel2;







FSOUND_SAMPLE *mp3a *mp3b;







HDC            hdc, hdcMem;







HWND           hwnd;







MSG            msg;







WNDCLASS       wndclass;








 







FSOUND_Init(44100, 1, FSOUND_INIT_GLOBALFOCUS);







mp3a = FSOUND_Sample_Load(FSOUND_FREE, "sound\\Song1.mp3", 0, 0);







m_soundChannel1 = FSOUND_PlaySound(FSOUND_FREE, mp3a);







FSOUND_SetLoopMode(0,FSOUND_LOOP_NORMAL);
























FSOUND_Init(44100, 1, FSOUND_INIT_GLOBALFOCUS);







mp3b = FSOUND_Sample_Load(FSOUND_FREE, "sound\\Song2.mp3", 0, 0);







m_soundChannel2 = FSOUND_PlaySound(FSOUND_FREE, mp3b);







FSOUND_SetLoopMode(0,FSOUND_LOOP_NORMAL);


Merci beaucoup



@+

6 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
2 déc. 2007 à 23:59
On ne change pas de canaux. C'est à la fonction qui jouera le fichier qu'il faut préciser quel canal utiliser.

exemple
FSOUND_PlaySound(0, tir1); // on utilise le premier canal
FSOUND_PlaySound(1, tir1); // on utilise le second canal
etc.

FSOUND_PlaySound(FSOUND_FREE, tir1); // on laisse FMOD se charger de nous trouver un canal libre

C++ (@++)<!--
3
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
2 déc. 2007 à 16:15
Pourquoi, dans FSOUND_Init, n'ouvres tu qu'un seul channel ? Si tu veux fais jouer plusieurs sons en même temps, ouvre plus qu'un channel.

C++ (@++)<!--
0
F0ra Messages postés 111 Date d'inscription mardi 18 septembre 2007 Statut Membre Dernière intervention 29 décembre 2008
2 déc. 2007 à 16:40
J'ai essayé ceci, ça ne fonctionne pas.
Je n'ai pas les deux sons en même temps.


FSOUND_Init(44100, 32, 0);
FSOUND_SAMPLE *tir0 = NULL;
tir0 = FSOUND_Sample_Load(FSOUND_FREE, "sound\\Song2.mp3", 0, 0);
FSOUND_PlaySound(FSOUND_FREE, tir0);


FSOUND_Init(44100, 31, 0);
FSOUND_SAMPLE *tir1 = NULL;
tir1 = FSOUND_Sample_Load(FSOUND_FREE, "sound\\ht.mp3", 0, 0);
FSOUND_PlaySound(FSOUND_FREE, tir1);
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
2 déc. 2007 à 19:31
Pourquoi tu fais 2 initialisations ?

C++ (@++)<!--
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
F0ra Messages postés 111 Date d'inscription mardi 18 septembre 2007 Statut Membre Dernière intervention 29 décembre 2008
2 déc. 2007 à 22:17
re,
Et bien, c'est pour changer de canal ? ça me semble logique.
http://www.siteduzero.com/tuto-3-9981-1-jouer-du-son-avec-fmod.html#ss_part_1

FSOUND_Init(44100, 32, 0);
Ce qui signifie : fréquence de 44 100 Hz (qualité CD au mieux), 32 canaux et pas d'options particulières (flag = 0).

Il ne faut pas faire 2 initialisations ?
@+
0
F0ra Messages postés 111 Date d'inscription mardi 18 septembre 2007 Statut Membre Dernière intervention 29 décembre 2008
3 déc. 2007 à 18:19
Merci beaucoup SAKingdom
ça fonctionne
@+
0
Rejoignez-nous