Lire un mp3 [OpenGL && FMOD] - C++ - Programmation
Marsh Posté le 26-07-2006 à 20:32:26
les samples livrés avec fmod contiennent absolument tout ce qu'il faut.
Marsh Posté le 28-07-2006 à 22:33:20
ok merci, cependant je viens de rencontrer un problème : j'ai le code suivant (issu de l'exemple : j'ai voulu lire un mp3)
Code :
|
à la compilation, avec devc++, il m'indique : main.cpp `FSOUND_Stream_OpenFile' undeclared (first use this function)
alors que j'ai inclu la librairie pourtant !!!
Pourquoi cette erreur, comment la résoudre ? Merci d'avance
Marsh Posté le 29-07-2006 à 07:46:54
Tu l'as inclu avec '<>' il faut donc que les fichiers d'entête se trouvent dans ton $INCLUDE_PATH soit au niveau variable d'environnement soit au niveau répertoire include de ton projet.
Ou alors inclu les fichiers avec des quotes, les fichiers devant se trouver dans le répertoire courant.
Marsh Posté le 29-07-2006 à 14:54:07
j'ai essayé avec les 2 !!! et ça ne marche pas
cependant, je ne pense pas que ce soit un problème de "localisation" des fichiers car devc++ m'aurait indiqué un message du genre : "fmod/fmod.h" not found
Marsh Posté le 29-07-2006 à 15:12:20
D'après la doc de fmod 3.75 elle existe pas cette fonction. Le bon nom serait plutôt FSOUND_Stream_Open.
Sinon, juste comme ça, pourquoi ne pas avoir pris FMod Ex?
Marsh Posté le 29-07-2006 à 15:15:31
tout simplement parce que devc++ a un installateur de librairie automatique : il les télécharge et les installe tout seul comme un grand -> il n'y avait que fmod. J'aurais pu prendre Fmod ex mais j'aurais du l'installer manuellement.
Qu'y a til de plus avec fmodex ?
Marsh Posté le 29-07-2006 à 15:19:54
Il est orienté objet mais à l'utilisation je ne sais pas. C'est surtout par curiosité comme j'ai vu que c'était la nouvelle évolution de FMod
Sinon, cette fonction?
Marsh Posté le 29-07-2006 à 15:33:22
ca marche ... ou tout du moins ca compile : en effet, voici mon nouveau code :
Code :
|
Cependant, on entend aucun son ...
Marsh Posté le 29-07-2006 à 16:03:20
Ca serait pas ta pause qui l'empêcherait de tourner?
Il vaudrait mieux que tu laisses le programme tourner tant que tu n'appuies pas sur une touche. Il y a un exemple dans l'archive FMod qui t'aiderait à y voir plus clair; jètes-y un oeil.
Marsh Posté le 29-07-2006 à 16:11:11
logiquement t'as une boucle de callback pour progresser dans ton mp3, sinon effectivement t'entendra rien.
Marsh Posté le 29-07-2006 à 19:47:41
je viens de regarder l'exemple dans l'archive de fmod, cependant, dans cet exemple, il n'est pas jouer un stream . De plus, je n'ai pas trouvé de boucle pour faire 'avancer' le programme, il y a juste une boucle qui rafraichit l'affichage tant qu'on n'a pas appuyé sur le claiver
Donc comment faire pour faire une
Citation : boucle de callback |
Merci
Marsh Posté le 29-07-2006 à 20:20:49
ReplyMarsh Posté le 30-07-2006 à 13:18:22
ok merci, c'est bon ca marche !!!
enfin, ca lit le fichier cependant, un autre problème (encore un!!!) ressurgit :
en fait dans mon programme en opengl, j'utilisais un gluttimerfunc qui provoquer un rafraichissement de l'image toutes les 30 millisecondes. Depuis que j'ai mis les musiques, le taux d'utilisation de l'uc est passé de 20 % à 40% ce qui est génant quand on a des scènes assez chargées ou on avait auparavant une utilisation de 80-85 %
Est-ce normal ?
Si non, comment faire baisser ce % d'utilisation ??
Encore une fois, merci d'avance
Marsh Posté le 31-07-2006 à 12:12:21
Il faut que tu utilises FMOD en mode non temps réel (FSOUND_OUTPUT_NOSOUND_NONREALTIME) ainsi, tu updateras le mixer de FMOD dans ton timer. (FSOUND_Update)
Tout est dans la doc.
Marsh Posté le 31-07-2006 à 17:22:33
ok merci, mais pourquoi cela faisait-il augmenter démeusuremment l'utilisation de l'uc
Marsh Posté le 31-07-2006 à 20:59:59
C'est un problème connu : OpenGL force FMOD à se mettre à jour plus rapidement que ce qu'il devrait faire, en théorie, il doit se mettre à jour pour chaque frame de ta scène d'où l'utilisation de ce mode non temps réel qui te permet de ne mettre à jour le mixer de fmod qu'à chaque frame et non tout le temps.
Marsh Posté le 31-07-2006 à 21:50:01
ok, juste c'est quoi la fonction pour fixer ce paramètre (désolé pas encore eu le temps de lire bien comme il faut la doc)
Marsh Posté le 01-08-2006 à 10:04:34
nisalon_caje a écrit : désolé pas encore eu le temps de lire bien comme il faut la doc |
Et donc là tu perds du temps
Lire la doc n'est jamais exactement une perte de temps, ni vraiment couteux, si tu y réfléchis bien ...
Marsh Posté le 01-08-2006 à 10:54:59
rebonjour a tous : j'ai fait un effort, j'ai commencé à lire la doc, tout du moins ce qui me concerne pour le moment
Bon ben j'ai trouvé comment faire, mais j'ai plus de son : mon code :
Code :
|
Marsh Posté le 02-08-2006 à 10:05:29
J'ai oublié de préciser que ceci était juste le code de mon initialisation, que je lance une fonction de lecture ensuite.
J'ai lu dans le manuel qu'il existait une fonction nommée FSOUND_Update() mais je n'ai aps compris à quoi elle servait vraiment, comment l'utiliser, et si c'était cette fonction qui faisait défaut ici.
Voila merci de votre aide
NC
Marsh Posté le 02-08-2006 à 10:11:01
(update ton titre de topic stp)
Y'a des samples dans livré avec la lib.
Dedans, y'a un exemple avec un programme qui ne fait que lire un mp3.
Pourquoi tu ne t'en inspires pas ?
Marsh Posté le 02-08-2006 à 10:32:05
Heu ... pourquoi updater le titre de mon topic ???
Bon sinon, j'ai regardé les samples, mais le problème n'est pas là !! Le problème est que quand je lis ce mp3, l'uc utilisé est doublé. D'où l'utilisation de FSOUND_SetOutput(FSOUND_OUTPUT_NOSOUND_NONREALTIME); car d'après KarLKoX cela devrait fixer le problème, cependant, ca coupe totalement le son !
Marsh Posté le 02-08-2006 à 11:26:37
Salut,
Il faut probablement le combiner avec un driver de sortie non?
Si tu n'appelles pas cette fonction, FMod utilises un driver par défaut. Si tu l'appelles, il faut tout lui préciser. Je ne sais pas si le driver et ce flag se combine en un seul appel, ou s'il faut le faire séparément (ça m'étonnerait m'enfin, bon, si le premier ne marche pas... ).
A toi de voir.
Il faudrait que tu updates le titre de ton topic parce que ce n'est pas lié à GL, mais FMod, ce sera plus facile pour quelqu'un faisant une recherche sur cette lib plus tard de comprendre ton post.
Marsh Posté le 02-08-2006 à 11:47:38
Voila, j'ai updaté le titre de mon topic, mais cependant, pas la peine de poser les questions, puisque je n'en sais rien Voila sinon, le faire séparemment, ben à vrai dire, je ne sais pas trop comment faire ... En tout cas, ce qui pourrait être bien, c'est de savoir si le code que j'ai mis ci dessus est correct, donc si l'erreur vient de l'idée ou de la forme, ce afin de savoir ce qu'il faut corriger
Voila encore merci d'avance
Marsh Posté le 03-08-2006 à 00:33:23
Ben, j'ai jamais vraiment joué avec FMod
Combiner ton appel avec un driver voulait dire quelque chose du genre:
FSOUND_SetOutput(FSOUND_OUTPUT_DSOUND | FSOUND_OUTPUT_NOSOUND_NONREALTIME);
ça me paraît le choix le plus logique, mais s'il faut le faire séparément, ça serait quelque chose de ce type:
FSOUND_SetOutput(FSOUND_OUTPUT_DSOUND);
FSOUND_SetOutput(FSOUND_OUTPUT_NOSOUND_NONREALTIME);
Voilà, je sais pas quelle méthode marche; je mise tout sur la première, mais c'est toute l'aide que je peux t'apporter...
Marsh Posté le 18-08-2006 à 23:23:28
Il y a aussi SDL, SDL_mixer et SDL_audio il me semble. C'est plutôt par mal et cross-plateform
----------
http://website.bluesourcesproject.info/
Marsh Posté le 18-08-2006 à 23:28:49
il vaux mieux prendre FMOD Ex: normalement FMOD normal va être abandonné, et FMOD Ex supporte des canaux virtuels très pratiques.
Marsh Posté le 18-08-2006 à 23:30:14
drayell a écrit : Il y a aussi SDL, SDL_mixer et SDL_audio il me semble. C'est plutôt par mal et cross-plateform |
non là franchement la partie audio de SDL n'a rien de vraiment interressant.
autant attaquer directement en OpenAL si tu veux un truc efficace et cross-platform.
Marsh Posté le 26-07-2006 à 18:57:43
Bonjour, je réalise un jeu en opengl et j'aimerais savoir comment jouer un son en mp3 ??
Merci d'avance
NC
Message édité par nisalon_caje le 02-08-2006 à 11:45:51