Aller au menu - Aller au contenu
Inscris-toi au e-camp "Héberge ton jeu Facebook sur Azure" de Microsoft vendredi 25 mai à 13h30 !

Impossible de trouver le fichier son

FMOD semble ne pas s'initialiser

Pour accéder à cette section
Connectez-vous !
connexion_rpx

Résolu Le problème de ce sujet a été résolu

Page 1 
Auteur Message
1 visiteur sur ce sujet (1 Anonyme)
Page 1 
Hors ligne salokine # Posté le 04/01/2009 à 22:35:04
Avatar
Flux RSS

Études : BTS IG Avignon

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:

Code : C
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#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:
Code : Console
FSOUND par un sucette?
Impossible de lire pan.wav


Mes options de compilation:
Code : Console
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:
Code : Console
$ 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 !!
Code : Console
$ ./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


La diversité est une richesse, protégeons là.
http://www.salokine.org

 
Publicité # Posté le 04/01/2009 à 22:35:04

Hors ligne Franklin92 # Posté le 05/01/2009 à 18:59:45

Au début tu dois mettre:

Code : C
1
#include <FMOD/fmod.h>


si tu as suivi a la lettre l'installation.


Belge et fier de l'être!
 
Hors ligne salokine # Posté le 05/01/2009 à 21:14:10
Avatar
Flux RSS

Études : BTS IG Avignon

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.

La diversité est une richesse, protégeons là.
http://www.salokine.org

 
Hors ligne salokine # Posté le 07/01/2009 à 00:01:24
Avatar
Flux RSS

Études : BTS IG Avignon

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
Code : C
1
2
3
4
...
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.

La diversité est une richesse, protégeons là.
http://www.salokine.org

 

Retour au forum "Langage C" ou à la liste des forums

Pour accéder à cette section
Connectez-vous !
connexion_rpx