Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème lecteur mp3 en C

utilisation de dirent.h

Sujet résolu
Anonyme
19 septembre 2019 à 15:57:10

Bonjour à tous !

Je suis nouveau en langage C et je me résous à poster car je ne vois pas l'origine de mon problème malgré de multiples essais et consultations sur internet.

Voici mon code :

#include <stdlib.h>
#include <stdio.h>
#include <SDL.h>
#include <SDL_image.h>
#include <fmod.h>
#include <SDL_ttf.h>
#include <dirent.h>
#include <string.h>
#define LARGEUR_FENETRE 1024
#define HAUTEUR_FENETRE 700
#define DELAI_RAFFRAICHISSEMENT 25
#define RATIO 255/HAUTEUR_FENETRE



void setPixel(SDL_Surface *surface,int x,int y,Uint32 pixel);

int main(int argc, char *argv[])
{
    //==========SDL==========
    if (SDL_Init(SDL_INIT_VIDEO)==-1)
    {
        fprintf(stderr,"Erreur initialisation SDL : %s\n",SDL_GetError());
        exit(EXIT_FAILURE);
    }
    SDL_Surface *ecran=NULL,*vf=NULL;

    ecran=SDL_SetVideoMode(LARGEUR_FENETRE,HAUTEUR_FENETRE,32,SDL_HWSURFACE);
    if(ecran==NULL)
    {
        fprintf(stderr,"Erreur de chargement du mode video : %s\n",SDL_GetError());
        exit(EXIT_FAILURE);
    }
    SDL_WM_SetCaption("ROCK MUSIC PLAYER",NULL);

    //==========lecture dans le répertoire de musiques==========
    DIR *repertoire=NULL;
    repertoire=opendir("C:/FD/programmation_C/essai_SDL_image_TTF_FMOD_texte/musiques");
    if(repertoire==NULL)
    {
        perror("Erreur d'ouverture du repertoire");
        exit(EXIT_FAILURE);
    }
    struct dirent *fichierLu=NULL;
    int k;
    for(k=1;k<=4;k++)
    {
        fichierLu=readdir(repertoire);
        fprintf(stderr,"%s\n",fichierLu->d_name);//wwwwwwwwwwwwwwwwwwwwwww
        if(fichierLu==NULL)
        {
            fprintf(stderr,"Erreur de lecture du fichier");
            exit(EXIT_FAILURE);
        }
    }
    //==========SDL_ttf==========
    if (TTF_Init()==-1)
    {
        fprintf(stderr,"Erreur initialisation SDL_ttf %s\n",TTF_GetError());
        exit (EXIT_FAILURE);
    }
    TTF_Font *police=NULL;
    police=TTF_OpenFont("ERASMD.TTF",20);
    SDL_Color couleurRouge={255,125,0};
    SDL_Surface *texte=NULL;
    texte=TTF_RenderText_Solid(police,fichierLu->d_name,couleurRouge);
    SDL_Rect positionTexte;
    positionTexte.x=500;
    positionTexte.y=100;
    //==========chargement du fichier sonore==========
    FMOD_SYSTEM *systeme;
    FMOD_System_Create(&systeme);
    FMOD_System_Init(systeme,2,FMOD_INIT_NORMAL,NULL);
    FMOD_SOUND *musique=NULL;
    fprintf(stderr,fichierLu->d_name);//wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

    FMOD_System_CreateSound(systeme,fichierLu->d_name,FMOD_SOFTWARE|FMOD_2D|FMOD_CREATESTREAM,0,&musique);
    if(musique==NULL)
    {
        fprintf(stderr,"Impossible de charger le fichier musical \n");
        exit(EXIT_FAILURE);
    }
    FMOD_Sound_SetLoopCount(musique,0);
    FMOD_System_PlaySound(systeme,FMOD_CHANNEL_FREE,musique,0,NULL);
    FMOD_CHANNEL *canal;
    FMOD_System_GetChannel(systeme,1,&canal);
    float spectre[LARGEUR_FENETRE];

    SDL_Event evenement;
    int continuer=1;
    int tempsActuel=0,tempsPrecedent=0,hauteurBarre=0;
    int i,j;
    //==========boucle principale==========
    while(continuer)
    {
        SDL_PollEvent(&evenement);
        switch(evenement.type)
        {
        case(SDL_QUIT):
            continuer=0;
            break;
        case(SDL_KEYDOWN):
            if(evenement.key.keysym.sym==SDLK_p)
            {
                FMOD_BOOL etat;
                FMOD_Channel_GetPaused(canal,&etat);
                if(etat==1)
                    FMOD_Channel_SetPaused(canal,0);
                else
                    FMOD_Channel_SetPaused(canal,1);
            }
            break;
        default:
            break;
        }
     SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,0,0,0));
	 tempsActuel=SDL_GetTicks();
 	 if(tempsActuel-tempsPrecedent<DELAI_RAFFRAICHISSEMENT)
 	     SDL_Delay(DELAI_RAFFRAICHISSEMENT-(tempsActuel-tempsPrecedent));
 	 tempsPrecedent=tempsActuel;

	 FMOD_Channel_GetSpectrum(canal,spectre,LARGEUR_FENETRE,0,FMOD_DSP_FFT_WINDOW_RECT);
	 SDL_LockSurface(ecran);
	 for(i=0;i<LARGEUR_FENETRE;i++)
	 {
	    hauteurBarre=spectre[i]*20*HAUTEUR_FENETRE;
	    if(hauteurBarre>HAUTEUR_FENETRE)
 	        hauteurBarre=HAUTEUR_FENETRE;
  	    for(j=HAUTEUR_FENETRE-hauteurBarre;j<HAUTEUR_FENETRE;j++)
	        setPixel(ecran,i,j,SDL_MapRGB(ecran->format,255-j*RATIO,j*RATIO,0));
	 }
	 SDL_UnlockSurface(ecran);
	 SDL_BlitSurface(texte,NULL,ecran,&positionTexte);
     SDL_Flip(ecran);
    }
    FMOD_Sound_Release(musique);
    FMOD_System_Close(systeme);
    FMOD_System_Release(systeme);
    TTF_CloseFont(police);
    TTF_Quit();
    SDL_FreeSurface(texte);
    SDL_Quit();

    if(closedir(repertoire)==-1)
    {
        perror("Erreur de fermeture du repertoire");
        exit(EXIT_FAILURE);
    }


    return EXIT_SUCCESS; // Fermeture du programme
}

void setPixel(SDL_Surface *surface,int x,int y,Uint32 pixel)
{
    int bpp=surface->format->BytesPerPixel;
    Uint8 *p=(Uint8 *)surface->pixels+y*surface->pitch+x*bpp;
    switch(bpp)
    {
    case 1:
        *p=pixel;
        break;
    case 2:
        *(Uint16 *)p=pixel;
        break;
    case 3:
        if(SDL_BYTEORDER==SDL_BIG_ENDIAN) {
            p[0]=(pixel>>16)&0xff;
            p[1]=(pixel>>8)&0xff;
            p[2]=pixel&0xff;
        }
        else
        {
            p[0]=pixel&0xff;
            p[1]=(pixel>>8)&0xff;
            p[2]=(pixel>>16)&0xff;
        }
        break;
    case 4:
        *(Uint32 *)p=pixel;
        break;
    }
}

La base est issue du cours de Matéo.

Dans mon répertoire de travail, j'ai créé un répertoires appelé musiques et j'y ai mis 3 morceaux mp3 (ACDC, LYN et MOTO). la version du code ci-dessus fonctionne, le lecteur joue bien le morceau LYN. Mais seulement si en ligne 26 j'initialise une SDL_Surface *vf qui ne sert à rien par la suite ! (si je ne fais pas cela, j'ai une "erreur process returned 3".

Autre problème : si à la ligne 46 je donne à k les valeurs 3 ou 5 pour lire mes deux autres fichiers, la fenêtre s'ouvre et se ferme aussitôt, avec une erreur "process returned 1" et le message suivant dans le fichier stderr.txt : 

..

ACDC.mp3

LYN.mp3

MOTO.mp3

MOTO.mp3Impossible de charger le fichier musical 

Si je renomme le fichier mp3 MOTO en LYN et LYN en autre chose, que je demande de lire le nouveau fichier LYN, il joue ... mais pas le morceau de musique qui devrait être Motörhead ! il rejoue le morceau Lynyrd Skynyrd alors qu'il DEVRAIT jouer Motôrhead, j'ai vérifié avec le windows media player.

Pour moi c'est une histoire de dingue !

Merci par avance pour votre aide !

DESPI



  • Partager sur Facebook
  • Partager sur Twitter
19 septembre 2019 à 16:58:04

Salut,

Il arrive que certain mp3 ne soient pas lus par les libs parce que les tags sont en bordel.

Essais de passer par un soft genre MP3tag pour remettre de l'ordre.

Bonne continuation.

  • Partager sur Facebook
  • Partager sur Twitter

Bonhomme !! | Jeu de plateforme : Prototype.

Anonyme
19 septembre 2019 à 21:00:10

Merci. J'ai viré tous les tags sur mes fichiers mp3. Des erreurs process 3, avec aucun message d'erreur dans le stderr.txt.

J'ai essayé avec des fichiers wave. Même résultat.

Visiblement c'est la ligne 66 qui pose problème. Si je fais un fprintf dans le stderr avant, je le retrouve dans le stderr. Si j'en fait un juste après la ligne 66, il n'est pas écrit dans le stderr. Donc le programme "aborte" à la ligne 66. Mais je ne comprends pas pourquoi !

-
Edité par Anonyme 19 septembre 2019 à 21:32:38

  • Partager sur Facebook
  • Partager sur Twitter
20 septembre 2019 à 14:10:53

Tu peux utiliser un débogueur pour lancer ton programme, regarder là où il s'arrête, et voir l'état de tes variables.

-
Edité par potterman28wxcv 20 septembre 2019 à 14:11:06

  • Partager sur Facebook
  • Partager sur Twitter
20 septembre 2019 à 14:17:08

Salut,

si ça plante à la ligne 66, c'est que ton instruction plane. De forte chances que ce soit la police qui n'ait pas été chargée correctement. C'est pour cela qu'on vérifie toujours le résultat de ce type de fonction.

Bonne continuation.

  • Partager sur Facebook
  • Partager sur Twitter

Bonhomme !! | Jeu de plateforme : Prototype.

20 septembre 2019 à 18:33:34

Hello,

Ligne 50, tu testes si fichierLu n'est pas NULL. Mais tu n'y arriveras jamais si fichierLu est NULL: le programme se plantera à la ligne 49

Et comme l'écrit drx, toujours vérifier que les fonctions "à risque" se déroulent bien: les open, les create, les init, entres autres

-
Edité par edgarjacobs 20 septembre 2019 à 18:34:10

  • Partager sur Facebook
  • Partager sur Twitter

On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

Anonyme
21 septembre 2019 à 10:08:51

Merci pour vos réponses. J'ai réussi à trouver ce qui n'allait pas : à la ligne 124:

je dois taper for(i=0;i<LARGEUR_FENETRE-1;i++);

Je trouve cela bizarre, surtout que le tableau spectre a été dimensionné à LARGEUR_FENETRE, mais ça marche.

Tout va bien du côté de la police.

Mais ... j'ai un nouveau soucis : les fichiers mp3 ne sont lus et joués que si ils sont dans mon sous-dossier musiques ET dans mon dossier de travail !

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
22 septembre 2019 à 22:38:28

Salut à tous. Je poste mon programme relooké, qui fonctionne, qui choisi un fichier mp3 au hasard sans en reprendre un déjà joué. Le programme se ferme une fois tous les fichiers mp3 joués.

Mais j'ai toujours mon PB : je dois mettre les fichiers musicaux dans le dossier musique ET dans le repertoire de travail ! C'est lourd en Mo !

Le programme plante (erreur 1 et "Impossible de charger le fichier musical" dans le stderr) si j'enlève les fichiers mp3 du répertoire de travail.

#include <stdlib.h>
#include <stdio.h>
#include <SDL.h>
#include <SDL_image.h>
#include <fmod.h>
#include <SDL_ttf.h>
#include <dirent.h>
#include <string.h>
#include <math.h>
#include <time.h>
#define LARGEUR_SPECTRE 2048
#define LARGEUR_FENETRE 1024
#define HAUTEUR_FENETRE 500
#define DELAI_RAFFRAICHISSEMENT 10
#define RATIO 255/HAUTEUR_FENETRE
#define NUMEROMIN 4
//==============================
//==========prototypes==========
//==============================
void setPixel(SDL_Surface *surface,int x,int y,Uint32 pixel);
void MinSec(int t,int *m,int *s);
//=======================================
//==========fonction principale==========
//=======================================
int main(int argc, char *argv[])
{   //=================================================
    //==========initialisations avant lecteur==========
    //=================================================
    //---------------------------------------------
    //----------initialisations générales----------
    //---------------------------------------------
    int i,j,k,m;
    int jouerMorceau=1;
    int tempsPrecedent=0,tempsActuel=0;
    int tempsPrecedentMusique=0,tempsActuelMusique=0;
    int choixMusique=0;
    int nbreFichiersLus=0,dejaLu=0;
    int indiceFichierLu[50]={0};
    int numeroMax=0;
    srand(time(NULL));
    //---------------------------------------
    //----------initialisations SDL----------
    //---------------------------------------
    if (SDL_Init(SDL_INIT_VIDEO)==-1)
    {
        fprintf(stderr,"Erreur initialisation SDL : %s\n",SDL_GetError());
        exit(EXIT_FAILURE);
    }
    SDL_Surface *ecran=NULL;
    SDL_Surface *texteTitre=NULL,*surfaceTexteDureeTotale=NULL,*surfaceTexteDureeJouee=NULL;
    ecran=SDL_SetVideoMode(LARGEUR_FENETRE,HAUTEUR_FENETRE,32,SDL_HWSURFACE);
    if(ecran==NULL)
    {
        fprintf(stderr,"Erreur de chargement du mode video : %s\n",SDL_GetError());
        exit(EXIT_FAILURE);
    }
    SDL_WM_SetCaption("ROCK MUSIC PLAYER",NULL);
    SDL_Color couleurRouge={255,125,0};
    SDL_Event evenement;
    SDL_Rect positionTexte;
    SDL_Rect positionTexteDuree;
    SDL_Rect positionTextePositionTemps;
    positionTexte.x=400;
    positionTexte.y=50;
    positionTexteDuree.x=400;
    positionTexteDuree.y=100;
    positionTextePositionTemps.x=400;
    positionTextePositionTemps.y=130;
    //----------------------------------------
    //----------initialisations FMOD----------
    //----------------------------------------
    int minutes,secondes;
    int minutesJouees,secondesJouees;
    FMOD_SYSTEM *systeme;
    FMOD_System_Create(&systeme);
    FMOD_System_Init(systeme,2,FMOD_INIT_NORMAL,NULL);
    FMOD_SOUND *musique=NULL;
    float spectre[LARGEUR_SPECTRE];
    int hauteurBarre=0;
    //-------------------------------------------
    //----------initialisations SDL_ttf----------
    //-------------------------------------------
    if (TTF_Init()==-1)
    {
        fprintf(stderr,"Erreur initialisation SDL_ttf %s\n",TTF_GetError());
        exit (EXIT_FAILURE);
    }
    TTF_Font *police=NULL,*policeDuree=NULL;
    police=TTF_OpenFont("comic.TTF",30);
    if(police==NULL)
    {
        fprintf(stderr,"Erreur ouverture police de caracteres");
        exit(EXIT_FAILURE);
    }
    policeDuree=TTF_OpenFont("comic.TTF",20);
    if(policeDuree==NULL)
    {
        fprintf(stderr,"Erreur ouverture police de caracteres");
        exit(EXIT_FAILURE);
    }

    DIR *repertoire=NULL;
    repertoire=opendir("musiques");
    if(repertoire==NULL)
    {
        perror("Erreur d'ouverture du repertoire");
        exit(EXIT_FAILURE);
    }
    struct dirent *fichierLu=NULL;
    while((fichierLu=readdir(repertoire))!=NULL)
        numeroMax++;
    numeroMax-=2;
    if(closedir(repertoire)==-1)
    {
        perror("Erreur de fermeture du repertoire");
        exit(EXIT_FAILURE);
    }
    //======================================================
    //==========début du fonctionnement du lecteur==========
    //======================================================
    while(jouerMorceau)
    {
        //------------------------------------------
        //----------initialisations dirent----------
        //------------------------------------------
        DIR *repertoire=NULL;
        char nomDuFichier[50];
        int numeroChoisi;
        repertoire=opendir("musiques/");
        if(repertoire==NULL)
        {
            perror("Erreur d'ouverture du repertoire");
            exit(EXIT_FAILURE);
        }
        struct dirent *fichierLu=NULL;
        //--------------------------
        //----------dirent----------
        //--------------------------
        while(!choixMusique)
        {
            dejaLu=0;
            numeroChoisi=(rand()%(numeroMax+3-NUMEROMIN+1))+NUMEROMIN;
            for(m=0;m<nbreFichiersLus;m++)
                {
                    if(indiceFichierLu[m]==numeroChoisi)
                        dejaLu++;
                }
            if(dejaLu==0)
                choixMusique=1;
        }
        choixMusique=0;
        indiceFichierLu[nbreFichiersLus]=numeroChoisi;
        for(k=1;k<numeroChoisi;k++)
        {
            fichierLu=readdir(repertoire);
            if(fichierLu==NULL)
            {
                fprintf(stderr,"Erreur de lecture du fichier");
                exit(EXIT_FAILURE);
            }
        }
        //----------suppression du .mp3 pour l'affichage----------
        strcpy(nomDuFichier,fichierLu->d_name);
        for(k=0;k<strlen(nomDuFichier);k++)
        {
            if(nomDuFichier[k]=='.')
                nomDuFichier[k]='\0';
        }
        //------------------------
        //----------FMOD----------
        //------------------------
        //----------récupération de la durée totale----------
        FMOD_System_CreateSound(systeme,fichierLu->d_name,FMOD_SOFTWARE|FMOD_2D|FMOD_CREATESTREAM,0,&musique);
        if(musique==NULL)
        {
            fprintf(stderr,"Impossible de charger le fichier musical \n");
            exit(EXIT_FAILURE);
        }
        unsigned int dureeTotale=0;
        char texteDureeTotale[50]="";
        FMOD_Sound_GetLength(musique,&dureeTotale,FMOD_TIMEUNIT_MS);
        MinSec(dureeTotale,&minutes,&secondes);
        sprintf(texteDureeTotale,"Total Time : %d min %d sec",minutes,secondes);
        //----------mode de lecture et canal----------
        FMOD_Sound_SetLoopCount(musique,0);
        FMOD_System_PlaySound(systeme,FMOD_CHANNEL_FREE,musique,0,NULL);
        FMOD_CHANNEL *canal;
        FMOD_System_GetChannel(systeme,1,&canal);
        //----------initialisation pour récupération durée jouée----------
        unsigned int dureeJouee=0;
        char texteDureeJouee[50]="";

        int continuerLectureMorceau=1;
        //---------------------------
        //----------SDL_ttf----------
        //---------------------------
        texteTitre=TTF_RenderText_Solid(police,nomDuFichier,couleurRouge);
        surfaceTexteDureeTotale=TTF_RenderText_Solid(policeDuree,texteDureeTotale,couleurRouge);
        //--------------------------------------------------
        //----------boucle de lecture d'un morceau----------
        //--------------------------------------------------
        while(continuerLectureMorceau)
        {
            SDL_PollEvent(&evenement);
            switch(evenement.type)
            {
            case(SDL_QUIT):
                continuerLectureMorceau=0;
                jouerMorceau=0;
                break;
            default:
                break;
            }
            SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,0,0,0));
            tempsActuelMusique=SDL_GetTicks();
            if((tempsActuelMusique-tempsPrecedentMusique)>=dureeTotale)
            {
                tempsPrecedentMusique=tempsActuelMusique;
                nbreFichiersLus++;
                if(nbreFichiersLus>=numeroMax)
                    jouerMorceau=0;
                continuerLectureMorceau=0;
            }
            tempsActuel=SDL_GetTicks();
            if(tempsActuel-tempsPrecedent<DELAI_RAFFRAICHISSEMENT)
                SDL_Delay(DELAI_RAFFRAICHISSEMENT-(tempsActuel-tempsPrecedent));
            tempsPrecedent=tempsActuel;
            FMOD_Channel_GetSpectrum(canal,spectre,LARGEUR_FENETRE,0,FMOD_DSP_FFT_WINDOW_RECT);
            SDL_LockSurface(ecran);
            for(i=0;i<LARGEUR_SPECTRE/4-1;i++)
            {
                hauteurBarre=sqrt(spectre[i])*3*HAUTEUR_FENETRE;
                if(hauteurBarre>HAUTEUR_FENETRE)
                    hauteurBarre=HAUTEUR_FENETRE;
                for(j=HAUTEUR_FENETRE-hauteurBarre;j<HAUTEUR_FENETRE;j++)
                {
                     setPixel(ecran,2*i,j,SDL_MapRGB(ecran->format,255-j*RATIO,j*RATIO,0));
                     setPixel(ecran,2*i+1,j,SDL_MapRGB(ecran->format,255-j*RATIO,j*RATIO,0));
                }
            }
            FMOD_Channel_GetPosition(canal,&dureeJouee,FMOD_TIMEUNIT_MS);
            MinSec(dureeJouee,&minutesJouees,&secondesJouees);
            sprintf(texteDureeJouee,"Played Time : %d min %d sec",minutesJouees,secondesJouees);
            surfaceTexteDureeJouee=TTF_RenderText_Solid(policeDuree,texteDureeJouee,couleurRouge);
            SDL_UnlockSurface(ecran);
            SDL_BlitSurface(texteTitre,NULL,ecran,&positionTexte);
            SDL_BlitSurface(surfaceTexteDureeTotale,NULL,ecran,&positionTexteDuree);
            SDL_BlitSurface(surfaceTexteDureeJouee,NULL,ecran,&positionTextePositionTemps);
            SDL_Flip(ecran);
        }
        FMOD_Sound_Release(musique);
        if(closedir(repertoire)==-1)
        {
            perror("Erreur de fermeture du repertoire");
            exit(EXIT_FAILURE);
        }
    }
    FMOD_System_Close(systeme);
    FMOD_System_Release(systeme);
    TTF_CloseFont(police);
    TTF_Quit();
    SDL_FreeSurface(texteTitre);
    SDL_Quit();
    return EXIT_SUCCESS;
}
//=============================
//==========fonctions==========
//=============================
//-------------------------------------------------------
//----------fonction qui affiche un pixel (x,y)----------
//-------------------------------------------------------
void setPixel(SDL_Surface *surface,int x,int y,Uint32 pixel)
{
    int bpp=surface->format->BytesPerPixel;
    Uint8 *p=(Uint8 *)surface->pixels+y*surface->pitch+x*bpp;
    switch(bpp)
    {
    case 1:
        *p=pixel;
        break;
    case 2:
        *(Uint16 *)p=pixel;
        break;
    case 3:
        if(SDL_BYTEORDER==SDL_BIG_ENDIAN)
        {
            p[0]=(pixel>>16)&0xff;
            p[1]=(pixel>>8)&0xff;
            p[2]=pixel&0xff;
        }
        else
        {
            p[0]=pixel&0xff;
            p[1]=(pixel>>8)&0xff;
            p[2]=(pixel>>16)&0xff;
        }
        break;
    case 4:
        *(Uint32 *)p=pixel;
        break;
    default:
        break;
    }
}
//------------------------------------------------------------
//----------fonction qui convertit des ms en min,sec----------
//------------------------------------------------------------
void MinSec(int t,int *m,int *s)
{
    *s=t/1000;
    *m=*s/60;
    *s=*s%60;
}



  • Partager sur Facebook
  • Partager sur Twitter
23 septembre 2019 à 16:47:30

Hello,

Tu as peut-être relooké ton programme, mais un main() de 240 lignes >_< . Fais des fonctions !

Pour ton problème: c'est sans doute (comme souvent) ton ide qui te joue des tours, suivant que tu compile en debug ou release, ou encore que tu n' exécutes pas ton programme à partir de l'ide.

  • Partager sur Facebook
  • Partager sur Twitter

On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

Anonyme
3 octobre 2019 à 9:55:21

Bonjour à tous,

En fait, à la ligne 173, il faut réindiquer à FMOD_System_CreateSound le chemin du fichier à lire :

il faut mettre musiques/fichierLu->d_name à la place de fichierLu->d_name.

  • Partager sur Facebook
  • Partager sur Twitter