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

OpenAL Discussion :

[OpenAL] Problème avec OpenAL (pas de son !)


Sujet :

OpenAL

  1. #1
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut [OpenAL] Problème avec OpenAL (pas de son !)
    Bonsoir .

    J'ai du me mettre à OpenAL, et je rencontre un petit problème. J'ai suivi à la lettre ce qu'il faut faire, et pourtant je n'ai pas de son ! Voici le code tout simple :


    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
    #include <iostream>
    #include <alut.h>
     
    int main ()
    {
    // Initialize OpenAL
    ALCcontext * pContext = NULL; // Create a context
    ALCdevice * pDevice = NULL; // Create a device
     
    pDevice = alcOpenDevice (NULL); // Open the device
    pContext = alcCreateContext (pDevice, NULL); // Initialize the context
    alcMakeContextCurrent (pContext); // Make pContext the current context
     
    ALuint uiBuffer; // My buffer
    ALuint uiSource; // My source
     
    alGenBuffers (1, &uiBuffer); // Generate the buffer
    uiBuffer = alutCreateBufferFromFile ("morceau.wav"); // Loading the sound into the buffer
     
    alGenSources (1, &uiSource); // Generate the source to play the buffer with
    alSourcei (uiSource, AL_BUFFER, uiBuffer); // Attach source to buffer
     
    alSourcePlay (uiSource);
     
    alutSleep (5);
     
    // Destroy everything
    alDeleteSources (1, &uiSource);
    alDeleteBuffers (1, &uiBuffer);
     
    alcMakeContextCurrent (NULL);
    alcDestroyContext (pContext);
    alcCloseDevice (pDevice);
     
    return EXIT_SUCCESS;
    }
    On m'a proposé sur GameDev de tester toutes les erreurs, je ferai ça, mais si quelqu'un voit d'ou peux venir l'erreur, je suis preneur .

  2. #2
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Bon j'ai vérifié chaque appel de fonction avec alGetError, puis alcGetError, puis alutGetError après chaque fonction, et il ne me détecte rien :/. En écrivant alutCreateBufferHelloWorld (il est censé utiliser un son qui dit Hello World, inclu dans la librairie), ça ne marche pas non plus, preuve que ce n'est pas mon son qui a un problème !

  3. #3
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut
    Tu as branché tes HP ?
    Mindiell
    "Souvent, femme barrit" - Elephant man

  4. #4
    Membre averti
    Profil pro
    Responsable technique
    Inscrit en
    Février 2006
    Messages
    363
    Détails du profil
    Informations personnelles :
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable technique

    Informations forums :
    Inscription : Février 2006
    Messages : 363
    Points : 353
    Points
    353
    Par défaut
    Si tu as mal installé OpenAL ca ne marchera pas. Genre tu ne peux pas prendre les lib, les dll et les .h et copier coller tout ca au bon endroit. Il faut passer par l'installer windows si tu travail sous windows.

  5. #5
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Cela peut venir des dll, un moment donnée il y avait 2 versions (je crois que cela a été unifié) mais si on était heureux possesseur d'une carte son nvidia intégré, cela ne fonctionnait pas avec les dll "courante".

    Donc comme dit drcd, installer les dlls via l'autoexecutable fournit sur le site de creative


    Sinon je ne vois pas comme cela, j'ai pas mon code sous les yeux pour comparer.

    J'ai fait un wrapper C++ d'OpenAL, j'ai préparé des tutoriels simples pour son utilisation, je vais release les sources de mon SDK dans pas longtemps sous licence zlib (donc totalement gratuit pour une utilisation commerciale ou non, la seule contrainte étant que je ne mettrais pas à disposition le code sources (en tout cas dans un premier temps), mais tout pourra être utilisé dans ma bibliothèque), si tu souhaites utiliser un wrapper de son, cela pourrait peut être te convenir.

    2 exemples donc :
    - TROpenALTutorial :
    Qui affiche 3 boutons qui joue un fichier wav de 2 manières différentes et la lecture d’un fichier ogg stéréo.

    TROpenALTutorial - Source (3 Ko)
    TROpenALTutorial - Bin (Windows XP - 32 bit) (2 Mo)

    - TROpenALTutorial3D :
    Qui affiche 3 sphères dans un environnement 3D qui joue un fichier wav de 2 manières différentes et la lecture d’un fichier ogg mono.

    TROpenALTutorial3D - Source (5 Ko)
    TROpenALTutorial3D - Bin (Windows XP - 32 bit) (2 Mo)

    La lecture de fichier OGG stéréo étant réservée pour la musique d’ambiance, et la lecture de fichier OGG mono étant réservée à l’intégration de musique dans un environnement 3D

  6. #6
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Merci pour vos réponses .

    Pour commencer, oui oui, j'ai bien branché mes enceintes .

    Si tu as mal installé OpenAL ca ne marchera pas. Genre tu ne peux pas prendre les lib, les dll et les .h et copier coller tout ca au bon endroit. Il faut passer par l'installer windows si tu travail sous windows.
    J'ai installé leur executable (oalinst.exe je crois qu'il s'appelle). Concernant les dll et les lib et les .h, j'ai les derniers, ceux présents dans le dernier zip sur le site d'OpenAL.


    TI-R > Oui, j'ai bien installé ça .

    Pour ton wrapper, je vais essayer de voir le code, mais il faut qu'on utilise la lib telle qu'elle. Je voudrais savoir en fait si quelqu'un pourrait tester mon petit bout de code voir si c'est un rpoblème du code ou bien de mon chipset audio :/.

  7. #7
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Sinon dans le sens contraire, exécute 1 des 2 exemples ou les 2 , si tu as un problème pour entendre quelque chose, c'est qu'il y a effectivement un problème de ton côté...

  8. #8
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Citation Envoyé par Ti-R
    Sinon dans le sens contraire, exécute 1 des 2 exemples ou les 2 , si tu as un problème pour entendre quelque chose, c'est qu'il y a effectivement un problème de ton côté...
    Ben pourtant en lançant leurs exemples à eux (ceux inclus dans le SDK), j'entends le sons... Que ce soit en choissisant Software, Hardware ou NForce Audio :/.

  9. #9
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    J'ai le même problème, cela ne fonctionne pas.
    Malgré que le code semble bon.

    Mais si tu remplaces les appels manuels d'initialisation par la méthode automatique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // Initialize OpenAL
    ALCcontext * pContext = NULL; // Create a context
    ALCdevice * pDevice = NULL; // Create a device
     
    pDevice = alcOpenDevice (NULL); // Open the device
    pContext = alcCreateContext (pDevice, NULL); // Initialize the context
    alcMakeContextCurrent (pContext); // Make pContext the current context
    remplacé par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alutInit(0, 0); // init OpenAL
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    alcMakeContextCurrent (NULL);
    alcDestroyContext (pContext);
    alcCloseDevice (pDevice);
    par

    Là, cela fonctionne bien...

    En fait j'avais initialisé à la main aussi dans mon code avec un bout d'eax, mais quand j'ai regardé mon code, j'ai vu que j'avais tout commenté pour utiliser alutInit et alutExit...

    J'ai pas le temps de creuser pour l'instant mais en tout cas voila, tu pourras entendre un jolie wav ;D

    Enjoy

  10. #10
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    En effet, merci, ça marche comme ça. C'est trop bizarre .

    Ok, j'ai trouvé ! Si on veut créer ses propres contextes, il faut appeler alutInitWithoutContext, et ensuite créer ses propres contextes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    alutInitWithoutContext (NULL, NULL);
    	ALCcontext * pContext = NULL; // Create a context
    	ALCdevice * pDevice = NULL; // Create a device
     
    	pDevice = alcOpenDevice (NULL); // Open the device
    	pContext = alcCreateContext (pDevice, NULL); // Initialize the context
    	alcMakeContextCurrent (pContext); // Make pContext the current context

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Tuto OpenAL sous linux
    A propos du tutorial :
    http://loulou.developpez.com/tutorie.../premiers-pas/

    Ca compile pas sous linux sans ces modifs plus bas
    Par contre il detecte pas les devices ..
    Alors que d autres codes marchent ...

    Mes 2 cents ..

    --
    http://rzr.online.fr/q/AL


    diff OpenAL.cpp OpenALrzr.cpp
    5,6c5,7
    < #include <al.h>
    < #include <alc.h>
    ---
    > #include <AL/al.h>
    > #include <AL/alc.h>
    > #include <AL/alut.h>
    12a14,15
    > using namespace std;
    >
    27a31,32
    > std::cerr << "# " <<DeviceList << endl;
    >
    39c44,46
    < std::cerr << "Impossible de récupérer la liste des devices" << std::endl;
    ---
    > std::cerr << "Impossible de récupérer la liste des devices"
    > << alGetError()
    > << std::endl;
    172a180,184
    >
    > // Init openAL
    > alutInit(0, NULL);
    > // Clear Error Code (so we can catch any new errors)
    > alGetError();
    233a246,247
    >
    > // #eof "$Id: rzr $"

    cat Makefile
    default: all

    package?=OpenAL
    all: ${package}

    env:
    sudo apt-get install \
    make g++ libalut-dev libopenal-dev libsndfile1-dev

    CXXFLAGS?=\
    $(shell pkg-config --cflags openal) \
    $(shell pkg-config --cflags sndfile) \
    $(shell pkg-config --cflags freealut) \
    #
    LDFLAGS?=\
    $(shell pkg-config --libs openal) \
    $(shell pkg-config --libs freealut) \
    $(shell pkg-config --libs sndfile) \
    #

    run: ${package}
    exec $<

    #eof "$Id: rzr $"

Discussions similaires

  1. problème avec open
    Par User dans le forum Langage
    Réponses: 3
    Dernier message: 21/09/2006, 13h33
  2. OpenAL++ : Problème avec les .ogg
    Par c@c dans le forum OpenAL
    Réponses: 4
    Dernier message: 31/07/2006, 10h56
  3. problème avec open()
    Par aliassaf dans le forum Général Python
    Réponses: 1
    Dernier message: 26/06/2006, 00h27
  4. Problème avec opener.location.reload
    Par Joooooon dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 11/06/2006, 18h58
  5. Problème avec open() [Excel VBA]
    Par heddicmi dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 28/11/2005, 16h21

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