Page 1 of 2
MINIFMOD 1.7 (statically linked XM player library)
Posted: Thu Jan 29, 2004 5:31 pm
by f0rward3r
attached some some XM player library which will statically link to your pb exe.
for more information have a look at '
http://www.fmod.org/fmoddownload.html' (bottom down to the bottom of the page).
MINIFMOD 1.7
This small XM replay system only adds 5k to your exe! Now including FULL SOURCE CODE!!!
FEXP tool to export a header based on your song, which will be compiled into MiniFMOD and exclude whole portions of code!
Pre-buffered output for 0 latency, and high output stability
100% click free.
XM sample callbacks for user generated or compressed XM samples!
File system callbacks so you can specify whatever loading system you like! (disk/wad/memory)
btw: i dont think that official fmod license applies to this module. use it, abuse it. its your problem - not mine
ddl:
http://www.v40.net/members/minifmod170
copy that file to your userlibrarys and use it as follows:
MFMInit(?xm, 8603)
MFMPlay()
MessageRequester("..", "..")
MFMStop()
MFMClose()
DataSection
xm:
IncludeBinary "chiptune.xm"
EndDataSection
1.) init the library and let it import the xm data. first param=xm data, 2nd: size of xm data
2.) let it play
3.) to stop playing use MFMStop()
4.) use MFMClose() to shutdown the library
Re: MINIFMOD 1.7 (statically linked XM player library)
Posted: Thu Jan 29, 2004 7:09 pm
by traumatic
I think you should note that you took out the possibilty to set own IO callbacks.
I did this once (it was v1.4 back then) and let the user choose within purebasic:
Code: Select all
CompilerIf #usememload=1
;
;----MEMORY CALLBACKS---
;
Structure MEMFILE
length.l
pos.l
mdata.l
EndStructure
memfile.MEMFILE
;
Procedure.l modopenmem(name.s)
Shared memfile
memfile\mdata = Val(name)
memfile\length = ?modend - ?mod
memfile\pos = 0
ProcedureReturn memfile
EndProcedure
;
Procedure.l modclosemem(handle)
; FreeMemory(0)
EndProcedure
;
Procedure.l modreadmem(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 modseekmem(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 modtellmem(handle.l)
Shared memfile
ProcedureReturn memfile\pos
EndProcedure
CompilerElse
;
;----FILE CALLBACKS---
;
Procedure.l modopen(name.s)
Shared filptr
fileptr = ReadFile(0, name.s)
ProcedureReturn fileptr
EndProcedure
;
Procedure modclose(handle.l)
Shared fileptr
CloseFile(0)
EndProcedure
;
Procedure.l modread(buffer.l, size.l, handle.l)
ProcedureReturn ReadData(buffer, size)
EndProcedure
;
Procedure modseek(handle.l, pos.l, mode.l)
Select mode
Case #SEEK_SET
FileSeek(pos)
Case #SEEK_CUR
FileSeek(Loc()+pos)
EndSelect
EndProcedure
;
Procedure.l modtell(handle.l)
ProcedureReturn Loc()
EndProcedure
CompilerEndIf
Well, just an idea...
Posted: Thu Jan 29, 2004 8:28 pm
by benny
@f0rward3r:
Wow ... cool. I really like it. Used in previous little productions Fred's MXM-Lib, but FMod's quality of xm-playing is far better.
Would it be possible to add functions like setting volume, getting information of the actual sample / row / position which is played !?
Anyway, good work. Thx 4 sharing!
Posted: Sat May 15, 2004 6:51 pm
by OmeCloak
The link is dead, anyone got this file?
Regards, Cloak.
Posted: Sat May 15, 2004 10:01 pm
by thefool
in the bottom of the page that the first link links to.
Posted: Fri Jul 23, 2004 2:30 pm
by BalrogSoft
Hi, i was searching this library, and i didn't found it, someone can send me the library to my email(
balrog@balrogsoftware.com? thanks in advance.
Posted: Fri Jul 23, 2004 3:27 pm
by gnozal
Posted: Fri Jul 23, 2004 3:32 pm
by BalrogSoft
Hi Gnozal, i downloaded this file, and it is not the static library, this is a .lib library that can be transformed with LibImporter, but it don't have the same commands that the static library.
hm
Posted: Tue Aug 10, 2004 9:24 pm
by Kendrel
i could need this purebasic library if someone has already converted it...
the download link here wont work ;(
Posted: Tue Aug 10, 2004 10:40 pm
by BalrogSoft
Hi, i found it on my old computer, i upload it to my site:
http://www.balrogsoftware.com/downloads/Minifmod
I don't found the original pack, i found installed on PB.
hmm
Posted: Wed Aug 11, 2004 9:55 am
by Kendrel
thx...
MFMInit(?xm, 8603)
if i init like that the files wont playback properly... i dunno what the "8603" is used for, but i replaced it with 44100 as i have seen the init similar in the c-example coming with minifmod... anyone knows more about that PB commandset now? i mean whats possible and whats not...
edit:
the 44100 is plain bullshit
the higher the number more files are played correctly... strange stuff.. any infos are welcome... thx
Posted: Wed Aug 11, 2004 10:31 am
by Kale
i dunno what the "8603" is used for, but i replaced it with 44100 as i have seen the init similar in the c-example coming with minifmod
Answer:
MFMInit(?xm, 8603)
first param=xm data, 2nd: size of xm data
ah
Posted: Wed Aug 11, 2004 10:43 am
by Kendrel
thx alot...
weird that i didnt get any errors when the value was far to high... hmmm
so the exact size of the xm isnt needed really from what ive testet around... not sure though

Posted: Wed Aug 11, 2004 3:35 pm
by benny
@Kendrel:
I guess you
reserve the amount of memory for your module with
the second parameter of MFMInit(). So, if you reserve more memory
than the actual xm-module takes there may be no problems. However,
this isn't very "memory-friendly".
An easy workaround could be this, in DataSection embrace your module
with an
Start and
End-Label:
Code: Select all
DataSection
xmStart:
IncludeBinary "your.xm"
xmEnd:
EndDataSection
Then you could use the Init-Command as follows:
Code: Select all
MFMInit(?xmStart, ?xmEnd-?xmStart)
Posted: Sun Dec 18, 2005 9:07 pm
by Glow
Sorry for bringing this old topic back to life, but I could need that library as well. I tried a version of minifmod_pb but it doesnt support the MFMinit() syntax. I have some old Source-Codes were I used this library, but I deleted all my old stuff when I updated PB to V3.94

So if anyone has this library somewhere around, a link would be highly appreciated

The link in the first post is more than dead - it redirects me to google
