minifmod170_pb.zip

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
LyLy
Messages : 3
Inscription : mer. 01/févr./2006 5:11

minifmod170_pb.zip

Message 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 :D
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message 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é
LyLy
Messages : 3
Inscription : mer. 01/févr./2006 5:11

Message 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
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message par Gillou »

Ok, je te fais le code ce soir (j'ai cours toute la journée)
Dernière modification par Gillou le mer. 01/févr./2006 23:04, modifié 1 fois.
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message 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 :wink:


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
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message 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 :wink:
LyLy
Messages : 3
Inscription : mer. 01/févr./2006 5:11

Message par LyLy »

je te remercie tes un anges :D si j'ai d'autre questions je te demanderai. demain je vai test sa encore merci a toi :D
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message 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

;)
Répondre