Page 1 sur 1
minifmod170_pb.zip
Publié : mer. 01/févr./2006 5:18
par LyLy
Code : Tout sélectionner
#useMemLoad = 0 ; 0 = filecallbacks
; 1 = memorycallbacks
CompilerIf #useMemLoad=1
;
;----MEMORY CALLBACKS---
;
Structure MEMFILE
length.l
pos.l
mdata.l
EndStructure
memfile.MEMFILE
CatchSound(0, ?music)
;
Procedure.l musicopenmem(name.s)
Shared memfile
memfile\mdata = Val(name)
memfile\length = ?musicend - ?music
memfile\pos = 0
ProcedureReturn memfile
EndProcedure
;
Procedure.l musicclosemem(handle)
; FreeMemory(0)
EndProcedure
;
Procedure.l musicreadmem(buffer.l, size.l, handle.l)
Shared memfile
CopyMemory(memfile\mdata+memfile\pos, buffer, size)
memfile\pos + size ; update filepointer position
ProcedureReturn size
EndProcedure
;
Procedure musicseekmem(handle.l, pos.l, mode.l)
Shared memfile
Select mode
Case #SEEK_SET
memfile\pos = pos
Case #SEEK_CUR
memfile\pos+pos
EndSelect
If memfile\pos > memfile\length
memfile\pos = memfile\length
EndIf
EndProcedure
;
Procedure.l musictellmem(handle.l)
Shared memfile
ProcedureReturn memfile\pos
EndProcedure
CompilerElse
;
;----FILE CALLBACKS---
;
Procedure.l musicopen(name.s)
Shared filptr
fileptr = ReadFile(0, name.s)
ProcedureReturn fileptr
EndProcedure
;
Procedure musicclose(handle.l)
Shared fileptr
CloseFile(0)
EndProcedure
;
Procedure.l musicread(buffer.l, size.l, handle.l)
ProcedureReturn ReadData(buffer, size)
EndProcedure
;
Procedure musicseek(handle.l, pos.l, mode.l)
Select mode
Case #SEEK_SET
FileSeek(pos)
Case #SEEK_CUR
FileSeek(Loc()+pos)
EndSelect
EndProcedure
;
Procedure.l musictell(handle.l)
ProcedureReturn Loc()
EndProcedure
CompilerEndIf
;
;
;
CompilerIf #useMemLoad = 1
FSOUND_File_SetCallbacks(@musicopenmem(), @musicclosemem(), @musicreadmem(), @musicseekmem(), @musictellmem())
music = FMUSIC_LoadSong("", #Null)
CompilerElse
FSOUND_File_SetCallbacks(@musicopen(), @musicclose(), @musicread(), @musicseek(), @musictell())
musicfile$ = ProgramParameter()
music = FMUSIC_LoadSong(musicfile$, #Null)
CompilerEndIf
If music
FMUSIC_PlaySong(music)
EndIf
FMUSIC_FreeSong(mod)
CompilerIf #useMemLoad = 1
DataSection
mod:
IncludeBinary "cc.xm"
modend:
EndDataSection
CompilerEndIf
bonjour a tous j'aurai voulu savoir pourquoi purebasic 3.94 ne m'inclu pas mon .xm dans mon .exe une fois compiles et pourquoi il ne me le lis pas autrement que par un lancement de ce type ***.exe ***.xm dans un cmd.
merci d'avance de votre aide

Publié : mer. 01/févr./2006 8:13
par Gillou
Bonjour et bienvenue,
Peux-tu préciser les libs que tu utilises.
Pour le code, le xm n'est pas inclus car dans ton code tu déclares au départ, la constante #useMemLoad = 0 (cette constante restera donc à 0 tout au long de ton code). Ensuite au environ de la ligne 131, tu demandes au compilateur de n'inclure le fichier que si la constante #useMemLoad = 1. Etant à 0 le fichier .xm ne sera pas inclus.
Je suis un peux à la bourre donc je fini mon poste dans la journée, désolé
Publié : mer. 01/févr./2006 8:55
par LyLy
http://www.purearea.net/pb/download/use ... 170_pb.zip
j'ai utilise cet librairie dsl je debute en purebasic quand tu aura ttous regarder si tu pouvai recoler le code propre ce serai vraiment super sympa de ta part merci d'avance
Publié : mer. 01/févr./2006 10:43
par Gillou
Ok, je te fais le code ce soir (j'ai cours toute la journée)
Publié : mer. 01/févr./2006 23:03
par Gillou
Voilà, je t'ai fait ça en rapide. j'ai pas vraiment chercher comment la lib tournez (vu que le code source est fourni
Mais je vais regardé plus précisément demain soir
Structure MEMFILE
length.l
pos.l
mdata.l
EndStructure
InitSound ()
CatchSound (0, ?music)
Procedure.l Musicopenmem(*memfile.MEMFILE)
*memfile = AllocateMemory (SizeOf(MEMFILE))
*memfile\mdata = ?Music
*memfile\Length = ?Musicend - ?Music
*memfile\pos = 0
ProcedureReturn *memfile
EndProcedure
Procedure.l Musicclosemem(*memfile.MEMFILE)
FreeMemory (*memfile) : *memfile = #Null
EndProcedure
Procedure.l Musicreadmem(Buffer.l, size.l, *memfile.MEMFILE)
If *memfile\pos + size >= *memfile\Length
size = *memfile\Length - *memfile\pos
EndIf
CopyMemory (*memfile\mdata+*memfile\pos, Buffer, size)
*memfile\pos + size ; update filepointer position
ProcedureReturn size
EndProcedure
Procedure Musicseekmem(*memfile.MEMFILE, pos.l, Mode.l)
Select mode
Case #SEEK_SET
*memfile\pos = pos
Case #SEEK_CUR
*memfile\pos+pos
EndSelect
If *memfile\pos > *memfile\Length
*memfile\pos = *memfile\Length
EndIf
EndProcedure
Procedure.l Musictellmem(*memfile.MEMFILE)
ProcedureReturn *memfile\pos
EndProcedure
Global play, music, x
Procedure Play()
temps.f = FMUSIC_GetTime(music)/1000
SetGadgetText (0, StrF (temps,2)+ " s" )
Ordre = FMUSIC_GetOrder(music) : If Ordre>0 : x=1 : EndIf
If Ordre=0 And x=1
FMUSIC_StopSong(music)
EndTimer(1)
SetGadgetText (0, "La lecture est finie" ) : EndIf
EndProcedure
FSOUND_File_SetCallbacks(@musicopenmem(), @musicclosemem(), @musicreadmem(), @musicseekmem(), @musictellmem())
music = FMUSIC_LoadSong( "" , #Null )
win= OpenWindow ( #PB_Any ,0,0,200,60, #PBWIN0 , "test" )
If win And CreateGadgetList ( WindowID (win))
TextGadget (0,5,5,190,20, "" )
ButtonGadget (1, 5, 30, 190, 25, " Lire" )
Repeat
Select EventGadgetID ()
Case 1
If music
FMUSIC_PlaySong(music)
StartTimer(1, 10, @play())
DisableGadget (1, 1)
EndIf
EndSelect
Case #PB_Event_CloseWindow
EndIf
FMUSIC_FreeSong(Music)
DataSection
music:
IncludeBinary "D:\Mes Documents\Mes sources\SOURCES\cc.xm"
musicend:
EndDataSection
Publié : mer. 01/févr./2006 23:06
par Gillou
J'ai supprimé tous les morceaux inutiles, par contre si tu veux lire les fichiers non inclus faudra les remettre, bonne soirée!
Si tu veux plus de commentaires, y'a qu'à demander

Publié : jeu. 02/févr./2006 3:23
par LyLy
je te remercie tes un anges

si j'ai d'autre questions je te demanderai. demain je vai test sa encore merci a toi

Publié : jeu. 02/févr./2006 22:41
par Gillou
Mais de rien, j'ai juste oublié de te dire que j'utilise la lib de Droopy
http://purebasic.myftp.org/?filename=fi ... Droopy.zip
