Partage
  • Partager sur Facebook
  • Partager sur Twitter

Gestion du son avec SDL

Uniquement du type *.wav

    26 juillet 2006 à 16:12:23

    Salut tous le monde :D ,

    Je poste ici le code complet qui permet de gérer le son via SDL, de type *.wav,
    et comme ça on reste au niveau de la licence LGPL , en utilisant un morceau de musique *.mp3 ou *.ogg ..,
    la taille du jeu vas augmenter très vite , voir même bouffer la RAM ( dans les jeux des autres membres ) .

    Je ne vais pas vous faire trembler de peur :lol: rassurer vous !!

    voici le code tant attendu :



    #include <stdlib.h>
    #include <SDL/SDL.h>

    struct {
            SDL_AudioSpec spec;
            Uint8   *sound;   
            Uint32   soundlen;           
            int      soundpos;           
    } wave;

    void fillerup(void *unused, Uint8 *stream, int len)
    {
            Uint8 *waveptr;
            int    waveleft;

            waveptr = wave.sound + wave.soundpos;
            waveleft = wave.soundlen - wave.soundpos;

            while ( waveleft <= len ) {
                  SDL_MixAudio(stream, waveptr, waveleft,SDL_MIX_MAXVOLUME);
                  stream += waveleft;
                  len -= waveleft;
                  waveptr = wave.sound;
                  waveleft = wave.soundlen;
                  wave.soundpos = 0;
            }
            SDL_MixAudio(stream, waveptr, len, SDL_MIX_MAXVOLUME);
            wave.soundpos += len;
    }

    int main(int argc, char *argv[])
    {
         int done = 0;
         SDL_Init(SDL_INIT_AUDIO);
         SDL_LoadWAV("musique.wav", &wave.spec, &wave.sound, &wave.soundlen);
         wave.spec.callback = fillerup;
         SDL_OpenAudio(&wave.spec, NULL);
         SDL_PauseAudio(0);
         while (!done)  ; /* boucle infinie */ 
         SDL_FreeWAV(wave.sound);
         SDL_CloseAudio();
         return EXIT_SUCCESS;
    }



    Modifier le nom du titre "musique.wav" par le votre et ça marche ;) !
    N'oublier pas que j'ai initialiser seulement l'Audio , donc pas de fenêtre !
    ( ce qui justifie la boucle infini dans le code ) , donc pour arreter le programme : Ctrl + Alt + Suppr ,
    et fermer le programme : sound.exe :D !
    Si vous voulez l’utiliser avec une fenêtre ,..etc , c’est a vous de le faire ,
    je vais pas vous donner le code pour vous forcer a travailler comme a dit tonton M@teo21 ^^ !

    Merci .

    • Partager sur Facebook
    • Partager sur Twitter

    Gestion du son avec SDL

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown