Forum de la communauté SFML

Aide => Audio => Discussion démarrée par: ketthos le Juin 17, 2013, 02:08:19 am

Titre: Problème avec LoadFromFile et VS2012
Posté par: ketthos le Juin 17, 2013, 02:08:19 am
Bonjour,

Je débute avec SFML, mais j'ai un pépin avec le tutorial Audio de ce site.

Voici mon code.
#include <Windows.h>
#include <SFML\Graphics.hpp>
#include <SFML\Audio.hpp>
#include <iostream>

using namespace std;

int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR lpCmdLine,
                   int nCmdShow) {


        sf::RenderWindow window(sf::VideoMode(400, 200), "SFML works!");
        sf::VertexArray triangle(sf::Triangles, 3);
        triangle[0].position = sf::Vector2f(10,10);
        triangle[1].position = sf::Vector2f(100,10);
        triangle[2].position = sf::Vector2f(100,100);

        triangle[0].color = sf::Color::Red;
        triangle[1].color = sf::Color::Blue;
        triangle[2].color = sf::Color::Green;
       
        sf::SoundBuffer buffer;

        if(!buffer.loadFromFile("./a-team_intro.wav")) {
                cout << "Impossible de lire le fichier";
                return -1;
        }
       


    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }

        window.clear();
        window.draw(triangle);
        window.display();
    }
        return 0;

}
 


le problème, c'est qu'il embarque dans la condition du if(!buffer.loadfromfile)

J'ai copié le fichier .wav partout dans le projet, dans le répertoire de travail, dans les répertoires de débug et release, j'ai copié le fichier partout quoi.

J'aimerais savoir si avec Visual Studio 2012 c'est différent?

Merci de votre aide.
Titre: Re : Problème avec LoadFromFile et VS2012
Posté par: Laurent le Juin 17, 2013, 07:50:56 am
Le chemin de travail est réglable dans les options du projet, rubrique "Debugging".
Titre: Re : Problème avec LoadFromFile et VS2012
Posté par: ketthos le Juin 17, 2013, 12:37:55 pm
Bonjour,

Merci de votre réponse, mais le répertoire de travail est bien configuré, j'ai tout vérifié ça. Mais même à ça, il ne veut pas prendre le fichier wav. C'est étrange.

Merci.
Titre: Re : Problème avec LoadFromFile et VS2012
Posté par: Laurent le Juin 17, 2013, 01:27:02 pm
Et quel est le message d'erreur ? Tu es sûr que la notation "./" est comprise par Windows ?
Titre: Re : Problème avec LoadFromFile et VS2012
Posté par: ketthos le Juin 17, 2013, 06:18:32 pm
Bonjour,

Je suis au boulot, donc je ne pourrai pas vous répondre avant quelques heures sur le message d'erreur, mais effectivement, le ./ était un test que j'ai fait, un dernier recours puisque je n'arrivais pas à faire fonctionner le loadfromfile, je m'étais dit que peut-être SFML requérait d'avoir un ./ en avant du nom pour qu'il ait le chercher dans le répertoire de travail, mais c'est sur que ce n'était pas une bonne idée.

Je vous envoie le message d'erreur aussitôt rendu à la maison.

Merci de votre aide.

Titre: Re : Problème avec LoadFromFile et VS2012
Posté par: ketthos le Juin 22, 2013, 12:58:49 am
Bonjour Laurent,

Désolé pour le délais de réponse voici le message d'erreur que j'obtiens, il à fallu que je convertisse mon application en DOS pour pouvoir aller chercher le message d'erreur.

BonjourFailed to open sound file "Ring06.wav" (Error in WAV/W64/RF64 file. Malfo
rmed 'fmt ' chunk.)
Impossible de charger le fichier..

J'avais le même message d'erreur avec mon ancien fichier WAV.

voici le nouveau code en console.

#include <SFML/Graphics.hpp>
#include <iostream>
#include <SFML/Audio.hpp>

int main()
{
    sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
    sf::CircleShape shape(100.f);
    shape.setFillColor(sf::Color::Green);
    std::cout << "Bonjour";    

    sf::SoundBuffer buffer;
    if(!buffer.loadFromFile("Ring06.wav")) {
        std::cout << "Impossible de charger le fichier..";
   
    }

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }

        window.clear();
        window.draw(shape);
        window.display();
    }

    return 0;
}

Pourtant Ring06.wav est un fichier wav windows qui fonction très bien.

Titre: Re : Problème avec LoadFromFile et VS2012
Posté par: Laurent le Juin 22, 2013, 08:08:25 am
L'erreur est claire : il y a une couille dans ton fichier audio. Ca arrive courrament que certains logiciels arrivent tout de même à charger des sons "cassés" et d'autres non. Réencode ton son pour régler le problème.