IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Gestiondes canaux avec FMOD


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 34
    Par défaut Gestiondes canaux avec FMOD
    Bonjour, j'ai commencer a utiliser FMOD et ma sdl pour m'entrainer a programmer en C.
    Je rencontre actuellement un probleme majeur, en effet, je n'arrive pas a jouer plusieurs sons simultanement avec FMOd.
    J'ai lu qu'il fallait gerer les canaux, mais comment faire ???

    Ps : en parlant de la SDL, y'a t'il y moyen de gerer l'appui du plusieurs touches ? (simplement ???)

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 129
    Billets dans le blog
    149
    Par défaut
    Bonjour,

    Citation Envoyé par YoshioToutou Voir le message
    Bonjour, j'ai commencer a utiliser FMOD et ma sdl pour m'entrainer a programmer en C.
    Je rencontre actuellement un probleme majeur, en effet, je n'arrive pas a jouer plusieurs sons simultanement avec FMOd.
    J'ai lu qu'il fallait gerer les canaux, mais comment faire ???

    Ps : en parlant de la SDL, y'a t'il y moyen de gerer l'appui du plusieurs touches ? (simplement ???)
    Pour SDL -> SDL_GetKeyState()

    Sinon, pour la FMOD, je ne sais pas vraiment. Peut être qu'il faut crée plusieurs channels ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 34
    Par défaut
    Merci pour les evenement avec SDL mais cela veut dire qu'il faut que je fasse a la main toutes lescombinaisons possibles??
    J'ai la gestion de neuf touches dans mon programme, si je ne veux faire la gestion de ne serait-ce que de deux touches en simultane j'aurais besoin de 81 if...
    Edit : je pense avoir trouver un tutoriel sur votre site (de loka) qui ne fait qu'un if et attend de voir quelles touches sont appuye.
    Je regarde ca apres mes cours
    Si quelqun a une idee pour FMOD

  4. #4
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 34
    Par défaut
    J'ai modifié mon code de facon a pouvoir gerer plusieurs touches en même temps, mais le son est devenu EXÉCRABLE.
    Voila le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    while(continuer)
        {
            //tant qu'il y a un evenement à manipuler
            while( SDL_PollEvent( &event ) )
            {
                //Si l'utilisateur ferme la fenetre avec le X
                if( event.type == SDL_QUIT )
                {
                    //On quitte le programme
                    continuer = 0;
                }
            }
     
     
     
            //Obtenir les KeyStates
            Uint8 *keystates = SDL_GetKeyState( NULL );
     
            //Si Haut est pressé (la fleche)
            if (keystates[ SDLK_e ])
            {
                   positiondo.y = 25;
                   FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sondo, 0, &channel);
            }
            if (keystates[ SDLK_r ]){
                  positionre.y = 25;
                  FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sonre, 0, &channel);
            }
            if (keystates[ SDLK_t ]){
                  positionmi.y = 25;
                  FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sonmi, 0, &channel);
            }
     
            //Mise à jours de l'ecran
            if( SDL_Flip( ecran ) == -1 )
            {
                return 1;
            }
    Ceci n'est que la partie que j'ai modifié (donc la d'ou viens le problème je pense).
    Cela marchait avant que je gère le multitouche, pourquoi ? Y'a t"il un remède docteur ?

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 129
    Billets dans le blog
    149
    Par défaut
    Citation Envoyé par YoshioToutou Voir le message
    J'ai modifié mon code de facon a pouvoir gerer plusieurs touches en même temps, mais le son est devenu EXÉCRABLE.
    Voila le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    while(continuer)
        {
            //tant qu'il y a un evenement à manipuler
            while( SDL_PollEvent( &event ) )
            {
                //Si l'utilisateur ferme la fenetre avec le X
                if( event.type == SDL_QUIT )
                {
                    //On quitte le programme
                    continuer = 0;
                }
            }
     
     
     
            //Obtenir les KeyStates
            Uint8 *keystates = SDL_GetKeyState( NULL );
     
            //Si Haut est pressé (la fleche)
            if (keystates[ SDLK_e ])
            {
                   positiondo.y = 25;
                   FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sondo, 0, &channel);
            }
            if (keystates[ SDLK_r ]){
                  positionre.y = 25;
                  FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sonre, 0, &channel);
            }
            if (keystates[ SDLK_t ]){
                  positionmi.y = 25;
                  FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sonmi, 0, &channel);
            }
     
            //Mise à jours de l'ecran
            if( SDL_Flip( ecran ) == -1 )
            {
                return 1;
            }
    Ceci n'est que la partie que j'ai modifié (donc la d'ou viens le problème je pense).
    Cela marchait avant que je gère le multitouche, pourquoi ? Y'a t"il un remède docteur ?
    Je pense que c'est à cause de la boucle while()
    Je propose de rajouter un SDL_Delay(10) après le SDL_Flip afin de donner un peu de temps au système (et aux autres threads).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 34
    Par défaut
    j'ai rajouté un SDL_Delay(10) mais cela ne changait rien, j'ai donc décidé de mettre 50, et ca me semble mieux même si le son est toujours mauvais.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    if (keystates[ SDLK_e ])
            {
                   positiondo.y = 25;
                   playsondo = 1;
            }
     
            if( SDL_Flip( ecran ) == -1 )
            {
                return 1;
            }
            if (playsondo == 1)
            {
            FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sondo, 0, &channel);
            playsondo = 0;
            }
    j'ai essayé un code de ce type mais meme resultat... pourtant le programme n'est pas très lourd...
    Ps: je pense avoir compris quelque chose, en effet, si je reste appuyé trop longtemps sur la touche, la note se répété indéfiniment, et coupe donc le son précédent à chaque fois.
    Comment faire pour pouvoir "désactiver" l'action si une touche est préssé trop longtemps ?

Discussions similaires

  1. Probleme avec FMod.dll
    Par Luciol44 dans le forum Visual Studio
    Réponses: 0
    Dernier message: 14/04/2009, 23h08
  2. Probleme avec FMod
    Par BooLet dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 05/03/2009, 11h01
  3. problème avec FMOD
    Par Predax dans le forum Débuter
    Réponses: 14
    Dernier message: 24/04/2008, 17h37
  4. [FMOD] son avec FMOD
    Par rafale001 dans le forum FMOD
    Réponses: 4
    Dernier message: 09/05/2007, 18h37
  5. Erreur avec FMOD et Delphi lors d' un Stream_open
    Par gobgob dans le forum Delphi
    Réponses: 5
    Dernier message: 05/07/2006, 23h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo