Partage
  • Partager sur Facebook
  • Partager sur Twitter

Impossible de trouver le fichier son

FMOD semble ne pas s'initialiser

Sujet résolu
    4 janvier 2009 à 22:35:05

    Bonjour,

    J'ai bien installé la librairie FMOD et la compilation est OK. J'ai copié le fichier pan.wav dans le même répertoire que mon binaire.

    Pourtant, le programme ne trouve jamais le fichier wav.

    Après quelques recherches (c'est un euphémisme !!) j'ai l'impression que FMOD ne s'initialise pas. Je m'explique:

    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
    #include <SDL/SDL_image.h>
    #include <fmod.h>
    
    int main(int argc, char *argv[])
    {
      SDL_Surface *ecran = NULL, *viseur = NULL;
      SDL_Event event;
      SDL_Rect position;
      int continuer = 1;
      FSOUND_SAMPLE *tir = NULL;
      int test1 = 0;  
      
      /* Initialisation de FMOD */
      test1 = FSOUND_Init(44100, 32, 0);
      if (test1)
      {
        fprintf(stderr, "FSOUND initialisé\n");
      }
      else
      {
        fprintf(stderr, "FSOUND par un sucette?\n");
      }
      
      /* Chargement du son et vérification du chargement */
      tir = FSOUND_Sample_Load(FSOUND_FREE, "pan.wav", 0, 0, 0);
      if (tir == NULL)
      {
        fprintf(stderr, "Impossible de lire pan.wav\n");
        //exit(EXIT_FAILURE);
      }
    
      /* Initialisation de la SDL */
      SDL_Init(SDL_INIT_VIDEO);
    
      SDL_ShowCursor(SDL_DISABLE);
      ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
      SDL_WM_SetCaption("Gestion du son avec FMOD", NULL);
    
      viseur = IMG_Load("viseur.png");
    
    
      while (continuer)
      {
        SDL_WaitEvent(&event);
    
    
        switch(event.type)
        {
          case SDL_QUIT:
            continuer = 0;
            break;
          case SDL_MOUSEBUTTONDOWN:
            /* Lorqu'on clique, on joue le son */
            FSOUND_PlaySound(FSOUND_FREE, tir);
            break;
          case SDL_MOUSEMOTION:
                    /* Lorsqu'on déplace la souris, on place le centre du viseur à la position de la souris
            ... D'où notamment le "viseur->w / 2" pour réussir à faire cela */
            position.x = event.motion.x - (viseur->w / 2);
            position.y = event.motion.y - (viseur->h / 2);
            break;
        }
    
        SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
        SDL_BlitSurface(viseur, NULL, ecran, &position);
        SDL_Flip(ecran);
      }
    
      /* On ferme la SDL */
      SDL_FreeSurface(viseur);
      SDL_Quit();
    
      /* On libère le son et on ferme FMOD */
      FSOUND_Sample_Free(tir);
      FSOUND_Close();
    
      return EXIT_SUCCESS;
    }
    


    Dans ce code, la variable test1 reste toujours à 0. C'est que FMOD ne s'initialise pas ?

    La sortie d'erreur affiche les messages suivants:
    FSOUND par un sucette?
    Impossible de lire pan.wav


    Mes options de compilation:
    gcc -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -L/usr/lib -lSDL -lSDL_image -I/usr/local/include -L/usr/local/lib -lfmod-3.75 libtest.c -o libtest


    Mon répertoire contenant ma source:
    $ ls
    libtest  libtest.c  pan.wav  viseur.png


    A noter qu'a un momment ça à fonctionné !!! puis je le relance et ça ne marche plus !!
    $ ./libtest
    FSOUND initialisé
    $ ./libtest
    FSOUND par un sucette?
    Impossible de lire pan.wav


    ... TERRIFIANT !

    Merci de votre aide.
    Salokine.

    Informations système:
    * Debian/Lenny
    * gcc version 4.3.2 (Debian 4.3.2-1)
    * FMOD version 3.75 provenant du site officiel
    * SDL versions:
    ii libsdl-image1.2 1.2.6-3 image loading library for Simple DirectMedia
    ii libsdl-image1.2-dev 1.2.6-3 development files for SDL 1.2 image loading
    ii libsdl-mixer1.2 1.2.8-4 mixer library for Simple DirectMedia Layer 1
    ii libsdl-net1.2 1.2.7-2 network library for Simple DirectMedia Layer
    ii libsdl-ttf2.0-0 2.0.9-1 ttf library for Simple DirectMedia Layer wit
    ii libsdl-ttf2.0-dev 2.0.9-1 development files for SDL ttf library (versi
    ii libsdl1.2-dev 1.2.13-2 Simple DirectMedia Layer development files
    ii libsdl1.2debian 1.2.13-2 Simple DirectMedia Layer
    ii libsdl1.2debian-alsa 1.2.13-2 Simple DirectMedia Layer (with X11 and ALSA

    • Partager sur Facebook
    • Partager sur Twitter
      5 janvier 2009 à 18:59:46

      Au début tu dois mettre:

      #include <FMOD/fmod.h>
      


      si tu as suivi a la lettre l'installation.

      • Partager sur Facebook
      • Partager sur Twitter
        5 janvier 2009 à 21:14:11

        Bonjour,

        Merci, mais j'ai bien contrôlé, la compilation link sur la lib et mon include en correcte.

        De plus, une erreur de code ferait que ça ne marcherait pas du tout avec des erreurs d'execution bien précises.

        En fait, j'ai trouvé, mais ça ne me plait pas du tout au point d'hésiter à dire que mon problème est résolu.

        Le système de son KDE ... voilà le coupable.
        Comme indiqué dans le "Centre de configuration KDE", le système de son prend la main de manière exclusive sur le matériel.

        Donc pendant que le système de son KDE tourne, FMOD touche pas aux périphérique audio... simple non ?

        Je vois 3 possiblités:
        1. Quand de je développe, je coupe le son KDE
        2. Je connais la contrainte, et je ne génère pas de son KDE pendant 60 secondes (temps après lequel il rend la main)
        3. Je trouve un moyen de faire "cohabiter" les deux.

        Pour les méthodes 1 et 2, c'est du contournement de bidouilleur utile pour du developpement et réaliser des tuto.

        Pour distribuer un projet sur une plateforme Linux, j'ai plutot interêt à trouver la solution car la moité des utilisateurs utilisent KDE !

        Aller je cloture car ça fait l'objet d'un post chez FMOD et non sur siteduzero

        Merci tout de même.
        Bonne soirée.
        Salokine.
        • Partager sur Facebook
        • Partager sur Twitter
          7 janvier 2009 à 0:01:25

          Re,

          Aller, voici la réponse :

          Pour les Linuxiens utilisant un système Audio ALSA (Sous Debian, KDE travail avec ALSA). Configurer la sortie audio AVANT l'initilisation de FMOD
          ...
          FSOUND_SetOutput(FSOUND_OUTPUT_ALSA);
          FSOUND_Init(44100, 32, 0);
          ...
          

          Références sur lequelles je me suis basé:
          http://www.fmod.org/docs/HTML/FSOUND_OUTPUTTYPES.html
          http://www.fmod.org/docs/HTML/FSOUND_SetOutput.html

          Qu'est ce que ça fait du bien d'avoir trouvé !
          Bonne soirée.
          Salokine.
          • Partager sur Facebook
          • Partager sur Twitter

          Impossible de trouver le fichier son

          × 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