1

Comme pour les fichiers GPG, les fichiers SEF sont d'est fichier son, que ce soit pour des music ou pour des bruitages.
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 smile
avatar
pourquoi la mort ? parce qu'elle nous est si douce, au contraire de la vie :)

2

Merci pour votre participation, à toi et GPFR !

J'espère que cette partie du forum se développera, et qu'elle sera utile à d'autres personnes.