Voir la version complète : [Audio] Besoin d'infos
Bonjour à tous,
J'aimerai avoir des précisions sur la couche audio de SDL, a ce que j'ai compris il existe deux librairies:
-SDL_audio qui s'occupe du format WAV.
-SDL_mixer qui est en fait une extension de SDL_audio et qui s'occupe maintenant des deux formats midi et mp3.
J'aimerai savoir de quoi a-t-on besoin pour pouvoir utiliser ces deux librairies, je veux dire, qu'est ce qu'on doit linker, quels sont les headers, et les libs a rajouter? Y a-t-il de nouvelles dll a ajouter au projet?
Peut-on les utiliser ensemble? Doit-on les utiliser séparément?:confused:
Je précise que je dévellope en C++ (mais ça se rapproche plutôt du C car je n'utilise pas l'objet en ce moment) et que j'utilise Dev C++ comme compilateur.
J'ai pas mal recherché des tuto la-dessus, mais j'ai pas trouvé grand chose, si vous en avez ça m'intéresse!:D
Euh le format wave est integré à meme SDL. Pour SDL_mixer, faut récupérer les librairies, puis rajouter dans les l'éditeur de lien :
-lsdl_mixer
Ca devrait faire l'affaire. Si tu ne sais pas comment rajouter les dépendance dans l'éditeur de lien, fait une recherche dans le forum, la question a été mainte fois posée.
Euh le format wave est integré à meme SDL.
Ah? Mais pourquoi faut-il alors faire un #include <SDL/SDL_audio.h> si c'est intégré? Donc y a pas besoin de truc en plus, de link, ou autre?
Et pour SDL_mixer, j'ai récupéré tous les éléments sauf la lib, je l'ai trouvée, mais son extension est .lib alors que j'ai besoin de .a pour Dev C++.
Tu saurais ou je peut trouver cette lib avec la bonne extension (j'ai recherché sur le site de SDL, mais j'ai pas trouvé autre chose)
Si tu connais des sites ou il y a des tuto aussi ça m'intéresse. :00000020:
ffomnislas
01/09/2005, 18h39
Y a pas ici?
http://www.libsdl.org/projects/SDL_mixer/
Si tu regardes dans sdl/sdl.h, tu verras que sdl_audio.h est inclus. Pour sdl_mixer, les .lib peuvent marcher avec Dev-C++.
Si tu regardes dans sdl/sdl.h, tu verras que sdl_audio.h est inclus. Pour sdl_mixer, les .lib peuvent marcher avec Dev-C++.
Ah! ok! Merci pour ces précisions, j'étais pas au courant!
Y a pas ici?
http://www.libsdl.org/projects/SDL_mixer/
Euh...J'en vois pas...
Merci à vous. Sinon vous avez pas d'idée ou je pourait trouver des tuto la dessus?
Va voir sur la page qu'a donné ffomnislas et clique sur documentation. Ca va déjà bien t'aider:)
ok merci, j'avais pas compris qu'on pouvait trouver direct des infos comme ça.
Sinon j'ai testé un code C/C++ qui utilise la couche audio de SDL, le voici:
#include <SDL.h>
/* Objets globaux */
SDL_AudioSpec audioSortie, audioBufferSpec;
Uint8 *audioBuffer;
Uint32 audioLen, audioPos, audioBufferLen;
/* Prototypes des fonctions */
void audioCallback(void *udata, Uint8 *stream, int len);
int audioInit(void);
int audioInit(void)
{
/* Définition des propriétés audio */
audioSortie.freq = 22050; // Fréquence en samples/sec
audioSortie.format = AUDIO_S16; // Format des données audio
audioSortie.channels = 2; // Nombre de "channels" (2=stéréo)
audioSortie.samples = 1024; // Taille du buffer audio
audioSortie.callback = audioCallback; // Fonction callback
audioSortie.userdata = NULL; // Données utilisateur (nulles)
/* Initialisation de la couche audio */
if (SDL_OpenAudio(&audio, NULL) < 0)
{
fprintf(stderr, "Erreur d'ouverture audio: %s\n", SDL_GetError());
return(-1);
}
return 0;
}
void audioCallBack(void *udata, Uint8 *stream, int len)
{
/* On ne lit que s'il reste des données à jouer */
if ( audioLen == 0 )
return;
/* Remise à zéro du tampon de sortie */
memset(stream, 0, len);
/* Lecture du buffer audio */
if (audioPos < audioBufferSpec.len) {
if (audioPos+len > audioBufferSpec.len)
len = audioBufferSpec.len = audioPos;
SDL_MixAudio(stream, audioBuffer + audioPos,len, SDL_MIX_MAXVOLUME);
audioPos += len;
}
/* Décrémentation de ce qu'il reste à lire */
audioLen -= len;
}
int main(void)
{
/* Chargement du fichier WAV */
if(!SDL_LoadWAV("essai.wav", &audioBufferSpec,&audioBuffer, &audioBufferLen))
{
printf("Erreur lors du chargement du fichier WAV.\n");
return 1;
}
/* Initialisation de SDL_Audio */
audioInit();
/* Lecture du fichier son */
SDL_PauseAudio(0);
/* Attendre que la lecture soit terminée */
while ( audioLen > 0 )
SDL_Delay(100);
/* Fermeture du module */
SDL_CloseAudio();
}
J'ai linké -lmingw32 -lSDL -lSDLmain.
J'ai ajouté sdl.dll dans le répertoire du projet.
Et sdl est correctement installé (enfin je pense, je l'ai réinstallé dans le doute)
Je comprends pas pourquoi il me met des erreurs, que voici:
In function `int audioInit()':
23 `audio' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)
In function `void audioCallBack(void*, Uint8*, int)':
38 `memset' undeclared (first use this function)
41 'struct SDL_AudioSpec' has no member named 'len'
42 'struct SDL_AudioSpec' has no member named 'len'
43 'struct SDL_AudioSpec' has no member named 'len'
[Build Error] [main.o] Error 1
Si quelqun pouvait (encore) m'aider, ça serait sympa! Merci d'avance!
TrizoLakai
01/09/2005, 21h56
Pourquoi tu n'utilise pas FMOD. C'est beaucoup plus simple à mon gout ! :00000014:
tuto :
http://www.games-creators.org/wiki/Utiliser_FMOD
site:
http://www.fmod.org/
Pourquoi tu n'utilise pas FMOD. C'est beaucoup plus simple à mon gout ! :00000014:
tuto :
http://www.games-creators.org/wiki/Utiliser_FMOD
site:
http://www.fmod.org/
Merci, mais je connais déja Fmod, c'est vrai que c'est très simple, mais en ce moment je suis sur un projet et je souhaite utiliser SDL!
Merci quand même du conseil! :00000013:
remram44
01/09/2005, 22h40
Moi j'utilise SDL, OpenGL et FMOD sans problèmes...
SDL et FMOD sont tous les deux portables.
Lien quand même pour ceux que ça interresse (on sait jamais) : FMOD (http://www.fmod.org).
Si quelqun peut répondre à la question que jai posé polus haut, sa réponse est la bienvenue...
j'ai exactement le même problème que toi et je cherche aussi une solution si tu trouve ce serai sympa de me faire signe:00000002:
Utilise SDL_Mixer, qui est un wrapper pour la couche Audio de SDL et simplifie très grandement son utilisation.
Ce n'est apparemment pas ton cas mais pour ceux qui développent sous Linux (et pas forcément avec SDL), je trouve l'api ALSA souple et très facile de prise en main (les exemples du site sont super bien faits).
remram44
07/04/2006, 20h11
C'est pas portable :P
vBulletin® v.3.6.5, Copyright ©2000-2009, Jelsoft Enterprises Ltd. Tous droits réservés - Version française vbulletin-fr.org