MaxMod Music Module

BlitzMax Forums/BlitzMax Module Tweaks/MaxMod Music Module

REDi(Posted 2006) [#1]
I have just uploaded version 1 of MaxMod, a free mod music player for BlitzMax (PC only ATM)

http://www.redi.me.uk/forum/index.php


xlsior(Posted 2006) [#2]
Great!
Keep up the good work, and all that. :-)

Small bug in the tracker: If you are walking through the sample list with the cursor down key, the program will crash without error when you hit the first empty slot.


REDi(Posted 2006) [#3]
Thanks xlsior, bug noted :)


Russell(Posted 2006) [#4]
Thanks, Papa Lazarou!

I have some documentation on various other module formats if you want them, including a Pascal source for playing mod/s3m/xm mods. Just let me know.

Russell


REDi(Posted 2006) [#5]
Thanks Russell, that Pascal source code might come in handy :)


Russell(Posted 2006) [#6]
[EDIT: I decided to put all of the zip files in this message plus the one in the following message PLUS some more excellent info on mod formats (such as madtracker, etc) all in one zip:

http://www.geocities.com/amiga5k/MusicModInfo/mods.zip (about 1MB)

But if you want to look individually, they're here:]

http://www.geocities.com/amiga5k/MusicModInfo/modform.zip
http://www.geocities.com/amiga5k/MusicModInfo/mpw100.zip
http://www.geocities.com/amiga5k/MusicModInfo/otloader.zip
http://www.geocities.com/amiga5k/MusicModInfo/s3mform.zip

Ok, those are the ones I have. The one called 'otloader.zip' is the most informative, but only covers .mod format. The one called 'mpw100.zip' has the pascal source, but "requires" the Seal100 library, which is not free. However, I'm pretty sure the seal lib is only used to play the audio that is created, rather than have some other purpose related to mod-playing. In other words, it should be easily adaptable to not require the seal library (the source is included - not the seal source).

Hope this is helpful to you!

Russell

p.s. There's this website, too: http://www.wotsit.org which is LOADED with various formats. Very helpful if you're looking for some obscure format info.


Russell(Posted 2006) [#7]
Oh, I added another one:

www.geocities.com/amiga5k/MusicModInfo/modfil11.zip

Supposedly, this is the "most comprehensive mod format description, covering 40 variations".

I haven't checked it out yet, but have a look!

Russell


REDi(Posted 2006) [#8]
Thanks a lot Russell, I've made a few changes since reading modfil11, sounds quite good now on most songs :)

Problem... I'm not 100% sure what a sample number without a note is supposed to do, some docs say to just reset the volume to that of the sample, but I swear it does something else, anyone know?


Russell(Posted 2006) [#9]
Hmm... I think a few of the docs in the zip have an e-mail address of the author(s). Maybe they could help?

Or, here's the e-mail of Jeff Limm, the author of Impulse Tracker: jeff@...

Hope this helps! Glad to know that modfil11 was helpful (I found it surprisingly interesting myself).

Russell

p.s. I was wondering if you would consider putting out a polled version of your mod player that gets called within the main loop every so often, perhaps when a timer event occurs, etc. Maybe that would be easier to adapt to other platforms since threading would not be required?


REDi(Posted 2006) [#10]
p.s. I was wondering if you would consider putting out a polled version of your mod player that gets called within the main loop every so often, perhaps when a timer event occurs, etc. Maybe that would be easier to adapt to other platforms since threading would not be required?

I might have a go at this at some point, trouble is I'm not getting much spare time atm :(

version 1.2 now up, sounding much better :)


xlsior(Posted 2006) [#11]
p.s. I was wondering if you would consider putting out a polled version of your mod player that gets called within the main loop every so often, perhaps when a timer event occurs, etc. Maybe that would be easier to adapt to other platforms since threading would not be required?


It would probably be safer too, less chances of seperate threads going wrong.

Anyway, I threw some modules at it, and find that the 1.2 sounds significantly worse than the previous 1.1 release with some songs... It is especially noticable using the 'Cannon Fodder' tune -- there are very noticable delays and stuttering between some of the samples, making the tune sound very disjointed when played with 1.2. It sounded much better with 1.1

Yet other songs (e.g. the 'Chuck Rock' theme) appear to sound identical in 1.1 and 1.2.

You can download the module in question here, if you want to try it yourself:
http://minus-9.com/stuff/CannonFodder.mod


REDi(Posted 2006) [#12]
hmm, It does sound wrong, I'll 'av a go later, mind you I just played it in Madtracker and its a bit gappy with that as well.

Thanks xlsior


Chris C(Posted 2006) [#13]
I dont know if nullsoft have made the source to winamps mod plugin available but it plays okay in that...

sure brings back some memories does cannon fodder...


xlsior(Posted 2006) [#14]
It sounds the same in version 1.1 of your module as it does in ModPlug -- but 1.2 gives very noticable delays between some of the samples.


Russell(Posted 2006) [#15]
There's a version of mikmod that includes the source:
http://mikmod.raphnet.net/ (about halfway down the page). Maybe it could help?

It's too bad BMax doesn't have the Fmod built-in like BB, B3D and B+ (I think it was a re-licensing issue?).

miniFMod, available here: http://www.fmod.org/ (download page, near the bottom) is TEANY TINY (about 5k when compiled according to the docs), and version 1.60 (also available) is for GCC/MinGW and compiles on Linux and Windows! Version 1.70 includes source code also.

Anyone had a look at it? Is it adaptable to BMax?

Russell


REDi(Posted 2006) [#16]
Thanks for the link Russell, I'll have a read (when I get some time, way to much work on atm)

xlsior, I think cannon fodder is okay now.


Russell(Posted 2006) [#17]
Good work, everyone!

One way or another we'll get real mod support built-in to Bmax! I wish I knew C/C++ so I could get miniFmod working with Bmax myself (the license seems to be 'public', although it "only" plays xm format <not a bad deal actually>)

The included "test.exe" that comes with the miniFMod installation is only 11k! (And seems to work fine)

Russell


xlsior(Posted 2006) [#18]
Yup, sounds much better again. Thanks for the quick response!


Russell(Posted 2006) [#19]
<bump>

So, Papa, any new developments?

Russell


REDi(Posted 2006) [#20]
I'm having a break from this for a bit, will come back to it one day (xm next!), or I might even wait for "built in" thread support for BM ( *NUDGE NUDGE* BRL, Purebasic has it ;-) ).

Anyway I'm working on a visual MaxGUI designer ATM.


Chris C(Posted 2006) [#21]
is there a none thread version available?

Is there any source code so someone could contribute a non threaded version?


REDi(Posted 2006) [#22]
No none thread version ATM, but if you're offering your services Chris, I could send you a copy of the source.


Chris C(Posted 2006) [#23]
I'd love to help out, no problem at all
email in account details....


REDi(Posted 2006) [#24]
Check your mail mate


Chris C(Posted 2006) [#25]
ditto ;) still locking my machine tho, but its de-threaded and it works in debug mode now

I get about 4 seconds of play out of it before it locks my machine solid, could by dsound???

is it still running okay on your machine?


REDi(Posted 2006) [#26]
MaxMod 1.5 (portaudio version) is now up :D
http://www.armbell.com/forum/index.php?mforum=papa


xlsior(Posted 2006) [#27]
MaxMod 1.5 (portaudio version) is now up :D


Does that mean it no longer requires DirectSound?

I noticed that the thread.mod module is no longer there either -- does that mean that you are no longer using the potentially unsafe threading?

Modules still sounds great with the latest version!


REDi(Posted 2006) [#28]
Yep, Thanks to Chris C and Skidracer, it uses portaudio now, no more threads and no more DirectSound! (it doesnt even use a timer :) )


Chris C(Posted 2006) [#29]
I think the best thing was getting the threads out!

plus for some reason dsound hung on my craptastic onboard sound...

It was a lot of work, but worth it, internally its damn impressive (tho I say so myself)

Cliff put a lot of work into redoing how the sound was mixed, there are definate improvements on sound quality!


Chris C(Posted 2006) [#30]
I'd like to post the source code on my website so other people can contribute improvements and other loaders...

However Cliff (Papa Lazarou) has failed to reply to any of my emails.

I'm somewhat sure as to how to proceed?

anyone have any thoughts on this?

Cliff??


REDi(Posted 2006) [#31]
Had problems with my ISP, havnt been able to get online for the last couple of weeks :(( gave up hope with wanadoos customer support and switched to BT now, so I'm finaly back :D

I dont really want to release the source just yet Chris, I'm gonna add a proper instrument class first, also atm it can only handle mono samples, the mixer needs rewriting to handle stereo samples as well (and with pan), then we'll have a decent base to let people build on if they wanted (loaders/players).

When I get a bit more spare time I'll polish it off.


Chris C(Posted 2006) [#32]
HE LIVES!!!!

(you were right theres no so much interest, we're better off keeping it closed source)


Russell(Posted 2006) [#33]
Closed source is fine with me, and I would certainly understand. As long as you don't have plans to attach licensing issues, etc, we're all good :)

Good job, everyone! Who needs FMod, anyway? ;)

Russell


North(Posted 2006) [#34]
Tested this yesterday and found no flaws yet - great job guys!


Russell(Posted 2006) [#35]
<Bump>

Hey Papa! How is .xm support coming? :^D

I believe xm supports 16 bit samples, right? If so, that's all I'm waiting for!

Russell


Chris C(Posted 2006) [#36]
cliffs real pushed for time at the moment, and you wouldnt believe how complex xm format is!

He's much better at sussing out file formats than I am!

I'm sure he'd apreciate any feed back you could send him tho...


Grey Alien(Posted 2006) [#37]
I'd love to see this working too.

/me piles on the pressure.


REDi(Posted 2006) [#38]
:)

I'm still working on it when i've got the time, it plays basic xm's okay, just need to work on the effects and instrument envelopes, other than that its going great! wish i had more time for it.

thanks for your support guys!


Russell(Posted 2006) [#39]
Listen Papa, you're doing great. I/we greatly appreciate all of the work you've done so far (You too, Chris!).

I think you have the .xm format specs, so I can't help you any further there. And your programming abilities are about 3 miles above mine, so I can't help you there, either... :(

But! I can offer you some encouragement. And here it is:

If you finish this, it will be the greatest achievement in the history of mankind! Landing on the moon was nothing compared to the thrill MaxMod with XM support will offer us mortals.

Was that too over-the-top? ;)

Russell


REDi(Posted 2006) [#40]
Was that too over-the-top? ;)

er yeah *HIDES FROM NUTTER* ;)

I'm lucky if i get a couple of hours free a week ATM, so progress is pretty slow, but it IS getting there :)


Russell(Posted 2006) [#41]
Progress is progress! I'm really looking forward to .xm support, but even before then, there are many thousands of 4 channel mods out there to play (and some are absolutely incredible - they sound like 8 or more channels) :)

Good job all around!

Russell


Russell(Posted 2006) [#42]
In case you didn't see the other post in BM Programming:

http://pipin.tmd.ns.ac.yu/extra/fileformat/modules/index.htm

Looks like it contains a good bit of info on various formats.

Russell


REDi(Posted 2006) [#43]
Thanks Russell, nice find


Chris C(Posted 2006) [#44]
keep pluging away papa ;)


Russell(Posted 2006) [#45]
After we get this, Max3D and some more MaxGUI features, then all we need is a (major) doc-overhaul and we'll be sitting pretty, eh? :)

I suppose there are a few things we could all wish for on top of these, but for me, I'd be in pig heaven if this happens!

Thanks again,
Russell


Russell(Posted 2006) [#46]
<bump>


REDi(Posted 2006) [#47]
Sorry Russell, not been about much :(

Quick progress report to keep you happy...

ADDED:
* Multi sample instruments
* Proper panning
* Volume envelopes
* New Catmull-rom interpolation
* Faster linear interpolation
* Fadeout on KeyOff

REMOVED:
* Channel Scopes

TODO:
* Pan envelopes
* amiga periods
* some XM effects

I'll stick it up soon, when i get round to buying some webspace (as i cant use my old wanadoo account anymore)


Russell(Posted 2006) [#48]
Good news, Papa! Thanks!

What XM effects are left to do?

Was XM supported on Amiga? If not, are Amiga periods necessary to play XMs? (I assume Protracker capability already has this?)

Good work!

Thanks again,
Russell


REDi(Posted 2006) [#49]
What XM effects are left to do?



Was XM supported on Amiga? If not, are Amiga periods necessary to play XMs?
I think amiga periods were just added to fasttracker so it could support mod files, but quite a few xm files still used the amiga periods setting, so i need to support it.


REDi(Posted 2006) [#50]
finaly version 1.6 is here (including fasttracker routines)...

http://redi.me.uk/forum/index.php


REDi(Posted 2006) [#51]
opinions please, I've just cobbled together a polled version (so you need to call song.update) using openal, would this be more desirable to you than the current method (portaudio callback)?

any thoughts?


Chris C(Posted 2006) [#52]
portaudio does use a seperate thread, (which can be benificial on multi core machines), it can cause stability problems with the max debugger

If the openal (itself) has no need of any threads, then it could work better.

Give me a shout if you want me to have a crack at making a linux version of your openal version!

Best
Chris


Damien Sturdy(Posted 2006) [#53]
Sweet work! Slightly off topic, I'm still trying to get code to read a Midi file properly and place the notes into data statements. No such luck.

I did get it to almost play SuperMario.mid though :)

I don't suppose you've managed anything with Midi have you? (I know it's not in the scope of a Mod player really :) )


REDi(Posted 2006) [#54]
@Chris, I'll tidy it up a bit and send you a copy, or if you register on the forum I'll add you to the MaxMod Dev group, then you can download the code from there.

@Cygnus, as it goes I wrote a midi parser for Chris C a while ago if thats any help, I'll see if i can find it for ya (if chris has no objections).


Chris C(Posted 2006) [#55]
go for your life!

if you hanage to work out midi file playback delays for speed do let us know!


REDi(Posted 2006) [#56]
Hope this helps Cygnus, I alterd it to just print out to the screen, so it should be pretty easy for you see whats going on.




Damien Sturdy(Posted 2006) [#57]
Heh sweet! Thats a coinsidence since I'm working (and trying to help :P) Chris C with Sow at the mo :-)

I got Midi playback on a simple MIDI working, I had issues converting the notes accurately into data statements. it played the mario tune mostly before a huge gap appears, and I cant seem to see where the problem is.

This parser looks much cleaner than my own. It might help me do a better job!

I'll take a look at your code when I get a chance. Thanks for your help!


REDi(Posted 2006) [#58]
MaxMod 1.7 openal release with ogg streaming :D

Not sure if the mod player routines survived the swap from portaudio to openal, if you find a dodgy mod/xm please let me know.

\/ Click the forum link below


DannyD(Posted 2006) [#59]
I noticed this appears to be PC only, is this still the case? Wondering if it is possible to work this mod on Mac Os ? If not how come?


REDi(Posted 2006) [#60]
PC only atm, Chris C will be taking a look at linux, but i dont have access to a mac yet... one day :D


Hotcakes(Posted 2006) [#61]
Was it a complete swap from freeaudio to OpenAL or are you supporting both now? What caused the swap exactly?


Chris C(Posted 2006) [#62]
it was from portaudio

as I understand it the path went

directX 'cause max's audio cant do realtime mixing!

portaudio because directX choose to lock my machine solid

OpenAl because max debugger is flaky while dealing with threads!

(oh and theres a good chance that OpenAL will work better for MaxOS)


REDi(Posted 2006) [#63]
What Chris said :)

@BRL, lil request... would it be possible for "Document Modules" to add the docs for compiled modules? the docs are already there, they just need adding to the TreeView.


xlsior(Posted 2006) [#64]
Since the latest version apparently needs some DLL's -- is there any way to embed/incbin a DLL into an executable and use them without needing to manually extract them again first?


REDi(Posted 2006) [#65]
nah, i dont think its possible xlsior, but i've just (next version) removed the need for "alut.dll", and the "openal32.dll" is not required if openal is already installed on the machine, so could check for it during installation and prompt accordingly.


tonyg(Posted 2006) [#66]
This looks good but the demo makes no sounds on my Audigy.
Position stays at 62500 of 28168308 (or xxxx depending on the ogg selected.


REDi(Posted 2006) [#67]
oh, does it print any error messages at all?

do you have openal installed? if not could you try it...
http://developer.creative.com/articles/article.asp?cat=1&sbcat=31&top=38&aid=46 (OpenALwEAX.exe at the bottom of the page)
just to see if that makes a difference.


tonyg(Posted 2006) [#68]
Doesn't print any errors but I don't have OpenAl installed. Got the same problem with OpenAL installed but tried another .ogg and it all worked OK. Guess the OGG I used was naff.
Works very well.
Does this mean that anybody playing a game with music code provided by this mod will need OpenAL installed?


REDi(Posted 2006) [#69]
*EDIT* yes