On procede donc comme pour les fichiers GPG.
Nous prendrons comme exemple une music du nom de intro.sef, qui sera en 44khz stéréo et 16bits.
#include "gpdef.h" #include "gpstdlib.h" #include "gpgraphic.h" #include "gpmain.h" #include "gpfont.h" #include "gpmm.h" GPDRAWSURFACE gpDraw[2]; int nflip = 1; unsigned char *intro; unsigned char *get_gpg(char *filename) { unsigned char *data; F_HANDLE hfile; unsigned long p_read_count; unsigned long fsize; hfile = NULL; if(SM_OK != GpFileOpen(filename, OPEN_R, &hfile)) { char buffer[200] ; sprintf(buffer,"get_gpg : error|file not found\n%s",filename) ; return NULL ; } GpFileGetSize(filename, &fsize); GpFileSeek(hfile, FROM_BEGIN, 8, 0); // skip header data = gm_zi_malloc(fsize-8); // * sizeof(ushort) GpFileRead(hfile, data, fsize-8, &p_read_count); GpFileClose(hfile); return (data); } void GpMain(void *arg) { unsigned int i; for(i = 0 ; i < 2 ; ++i) GpLcdSurfaceGet(&gpDraw[i], i); GpSurfaceSet(&gpDraw[0]); GpFatInit(); GpPcmInit(PCM_S44,PCM_16BIT); //on initialise le son intro= get_gpg("gp:\gpmm\shoot\gfx\intro\intro.sef") ; //on charge le fichier intro.sef for( ;; ) { GpRectFill(NULL,&gpDraw[nflip],0,0,320,240,0x00); //on dessine un rectangle de couleur noir de la taille de l'ecran. GpPcmPlay((unsigned short*)intro, sizeof(intro), 0); //0 pour lecture une seul fois. 1 pour lire en boucle GpSurfaceFlip(&gpDraw[nflip++]); nflip &= 0x01; } }
Dans cette exemple simple, on lit le fichier intro.sef et on le joue une seul fois.
J'ai affiché un rectangle noir histoire de remplir l'ecran. Dans ce cas la, c'est inutile, car il n'y a que la lecture du son qui importe.
Une fois compris le principe, c'est tout a votre guise
