#102767 - kusma - Sat Sep 16, 2006 9:50 pm
A friend and I have been developing our own mod-player mainly targeting the gba. This was done because we were really fed up with the lack of proper sync-features in krawall, and because we wanted a little project. Now I would say that the player is becoming more or less mature, and I was wondering about how many people would be interested in a new mod-playing library.
The current feature-list is something like this:
* MOD and XM support. Some S3M code written, but we never bothered to bring it to a working stage. IT support planned.
* Decently fast (faster than krawall on all my tests, a tad slower than AAC)
* Good sound-quality
* Relatively low on IWRAM consumption
* Rather clean C/C++ source code, some inline assembly in the mixer innerloops
* Most weird MOD/XM/S3M special cases documented and taken care of
* Mixer optimized for ARM7-CPUs without cache
* Binary-only data files intended for ROM (no asm-files generated), with a conversion tool taking care of (converting) unsupported sample-formats
* Module callbacks (basicly E8x and Wxx)
* Separate sample-bank to save ROM space
* "Game type" sample based sound effects support
* All limitations are compile-time defines. No hard limit on channels etc.
Now, our plan was to release this under a Zlib license, allowing for basically free use. But as time went by, we kinda never got around to do it. Considering that the gba seems to be "on it's way out", I'm a bit unsure if it's worth the hassle of packaging and support ;)
How does the scene feel about this?
Oh, and just a note - this is the mod-player used in the two last Shitfaced Clowns demos, "Five finger discount" and "Who's your favourite clown".
#102769 - tepples - Sat Sep 16, 2006 10:21 pm
kusma wrote: |
A friend and I have been developing our own mod-player mainly targeting the gba. |
Interesting.
Quote: |
* MOD and XM support. Some S3M code written, but we never bothered to bring it to a working stage. IT support planned. |
If you get far on IT, you'll have done most of the work toward S3M.
Quote: |
* Decently fast (faster than krawall on all my tests, a tad slower than AAC) |
As in how much CPU for an 8-channel XM or S3M with 8 sound effect channels?
Quote: |
* Good sound-quality |
Nearest neighbor only, or both nearest neighbor and linear interpolation?
Quote: |
* Binary-only data files intended for ROM (no asm-files generated), with a conversion tool taking care of (converting) unsupported sample-formats |
Is it also possible to load the data files from a file system (e.g. GBAMP v2 running gba_nds_fat or libfat)? And is it possible to make the conversion routines run on the target platform in order to allow the user to customize a game's music?
Quote: |
* Separate sample-bank to save ROM space |
With matching various .xm files' samples by their hashes, right?
Quote: |
Now, our plan was to release this under a Zlib license |
Please do. It'd be a heck of a lot better than Krawall's.
Quote: |
allowing for basically free use. But as time went by, we kinda never got around to do it. Considering that the gba seems to be "on it's way out", I'm a bit unsure if it's worth the hassle of packaging and support ;) |
GBA is not on its way out until the flash card companies stop selling everything but NoPass-RW. Even if so, such a music player would be useful on the DS as well. I've been looking for a music player for my next DS project. Heck even on the PC it might be useful provided that the mixer has a C counterpart.
Quote: |
Oh, and just a note - this is the mod-player used in the two last Shitfaced Clowns demos, "Five finger discount" and "Who's your favourite clown". |
Cool. Finally some demoscene source code comes to light.
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.
#102780 - kusma - Sat Sep 16, 2006 10:59 pm
tepples wrote: |
Quote: | * Decently fast (faster than krawall on all my tests, a tad slower than AAC) |
As in how much CPU for an 8-channel XM or S3M with 8 sound effect channels?
|
in most our test-cases, around 10% cpu, peaking at around 15%. the theoretical speed is somewhere around 1% cpu per active channel, but we don't get that in any practical cases.
Quote: |
Quote: | * Good sound-quality |
Nearest neighbor only, or both nearest neighbor and linear interpolation?
|
nearest neighbor only as of now, but a linear interpolation innerloop has been written. it's not integrated into the source-base though. By good sound quality, i basicly meant that we retain as much precision as possible. the mixer does some kind of crazy 32 bit unsigned mixing with dc-offset tracking, but the effective precision is 16 bits per channel internally, and is being converted down to 8bit as a last step. we did a dithering-version, but it sounded like shit. I'll look into re-engineering it at some point ;)
Quote: |
Quote: | * Binary-only data files intended for ROM (no asm-files generated), with a conversion tool taking care of (converting) unsupported sample-formats |
Is it also possible to load the data files from a file system (e.g. GBAMP v2 running gba_nds_fat or libfat)?
|
the player just takes a pointer, so yes. the current example-program uses GBAFS.
Quote: |
And is it possible to make the conversion routines run on the target platform in order to allow the user to customize a game's music?
|
sure. it would be a bit tricky in the current source-form, but that's something i've been looking to fix for quite a while.
Quote: |
Quote: | * Separate sample-bank to save ROM space |
With matching various .xm files' samples by their hashes, right?
|
yep. or actually, just comparing sample-by-sample right now, but a hash could be added quite easily.
Quote: |
Quote: | Now, our plan was to release this under a Zlib license |
Please do. It'd be a heck of a lot better than Krawall's.
|
okay, i guess we'll look a bit more into it then
Quote: |
GBA is not on its way out until the flash card companies stop selling everything but NoPass-RW. Even if so, such a music player would be useful on the DS as well. I've been looking for a music player for my next DS project. Heck even on the PC it might be useful provided that the mixer has a C counterpart.
|
The mixer does indeed have a c-counterpart. I've been looking a bit on porting the stuff to DS, bur as I haven't flashed my DS yet, I'll wait a bit with this.
Quote: |
Cool. Finally some demoscene source code comes to light. |
hehe, yes. ;)
#103104 - Master S - Tue Sep 19, 2006 7:19 am
Hell yes, it would be realy cool. Mainly the GBFS support in a desent module player (and the XM format) would be rather nice. If released, I'll check it out for sure..
#103109 - zazery - Tue Sep 19, 2006 8:28 am
Master S wrote: |
Hell yes, it would be realy cool. Mainly the GBFS support in a desent module player (and the XM format) would be rather nice. If released, I'll check it out for sure.. |
I agree, I'd definitely check out, even integrate it into a project I'm working on if GBFS is supported.
#103183 - DiscoStew - Tue Sep 19, 2006 8:39 pm
I'd say that many people would like to try it out, including myself.
_________________
DS - It's all about DiscoStew
#103391 - kusma - Thu Sep 21, 2006 3:26 pm
Okay, I guess I'll make a release as soon as I've gotten the legal-stuff in order with respect to my employer etc.
#103806 - Master S - Sun Sep 24, 2006 7:25 pm
Quote: |
Okay, I guess I'll make a release as soon as I've gotten the legal-stuff in order with respect to my employer etc. |
Cool, looking forward to check it out..
#104718 - Ultima2876 - Sun Oct 01, 2006 8:53 pm
Can't wait to check this out.
#104866 - kusma - Tue Oct 03, 2006 5:39 pm
Seems that it takes the legal department of my emplyer longer than expected to clarify this, so I guess the first release won't be ready for another week or so. Sorry about that ;)
#106881 - Master S - Tue Oct 24, 2006 11:30 am
Quote: |
Seems that it takes the legal department of my emplyer longer than expected to clarify this, so I guess the first release won't be ready for another week or so |
Seems that Norway has some pretty long weeks hmmm :)
No, just kidding. Any changes that you will be allowed to release the player ?
#106896 - kusma - Tue Oct 24, 2006 3:31 pm
Master S wrote: |
Quote: | Seems that it takes the legal department of my emplyer longer than expected to clarify this, so I guess the first release won't be ready for another week or so |
Seems that Norway has some pretty long weeks hmmm :)
No, just kidding. Any changes that you will be allowed to release the player ? |
I'm having some issues with the legal department at work (as in them not giving me any feedback), so the licensing is still a bit shaky. I don't really want to do a public release without getting a green light from my employer, as my contract has a paragraph about ownership of code.
The project has already been green-lighted unformally, so there's not really any real danger of this not going through. I just want the paperwork done in a clean fashion. Even if all would end up failing, I'll still release it - just not with their blessing.
Sorry about the delays, I'll nag them a bit more.
#107123 - kusma - Thu Oct 26, 2006 9:38 pm
OK, employer-issues are resolved. The current plan is to get the first public release done within a couple of days, and eventually to start up a SourceForge project.
#107138 - wintermute - Fri Oct 27, 2006 12:55 am
I'm more than happy to set up a module for this within the devkitPro SF CVS if you're amenable.
_________________
devkitPro - professional toolchains at amateur prices
devkitPro IRC support
Personal Blog
#107170 - Master S - Fri Oct 27, 2006 10:57 am
Yehaaa super nice. To bad that I just released a "final" of the Meltdown demo yesterday, I would have incorporated this player.. Looking forward to try it in my next project :-)
#107208 - Goosey - Fri Oct 27, 2006 5:23 pm
Really looking foward to taking a look at this.
#107304 - kusma - Sat Oct 28, 2006 10:25 am
wintermute wrote: |
I'm more than happy to set up a module for this within the devkitPro SF CVS if you're amenable. |
Thanks for the offer, but i'm not a very big fan of CVS. All of the development so far has happened on a Subversion repository, and as far as I know it's impossible to import full revision info from SVN to CVS.
#108141 - kusma - Sun Nov 05, 2006 9:31 pm
Sorry for appearing as a lazy ass, but things have been kinda crazy lately. I'm postponing the first public release of the player for a couple of weeks, due to lack of time. On top of both having tight deadlines at work these days and some personal issues, Kindergarden - a demo party I'm arranging - is to be held the up-coming weekend.
#108163 - DiscoStew - Mon Nov 06, 2006 1:55 am
Don't you worry about it. You'll bring it out when you bring it out.
I think you're doing a great help by allowing us to use it at all.
_________________
DS - It's all about DiscoStew
#111162 - kusma - Mon Dec 04, 2006 4:10 pm
OK, I finally got my ass around to make a release. I did set up a temporary homepage at http://pimpmobile.kjip.no/, and that's where you'll find it. Not everything is 100% as it should be in the current release, but at least it's something ;)
Feedback and bug-reports are welcome.
Oh, and don't complain about the website ;)
[Edit: fixed the link]
Edit: The project has now moved to sourceforge.net, go to http://pimpmobile.sourceforge.net/ to find the home page, or http://sourceforge.net/projects/pimpmobile/ for the project page.
Last edited by kusma on Tue Jan 22, 2008 10:42 pm; edited 1 time in total
#111203 - Goosey - Mon Dec 04, 2006 9:18 pm
Swwweeet. I have been anxiously waiting for this and it has come just in the nick of time! :) Can't wait to give it a run-through!
#111218 - tepples - Mon Dec 04, 2006 11:10 pm
Quote: |
Note: If you are not a software developer, there is a very high chance that Pimpmobile is of no use to you. Pimpmobile is not an application, but a development library. |
I guess this means I have to make a GSM Player style wrapper around it, right?
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.
#111219 - kusma - Mon Dec 04, 2006 11:18 pm
tepples wrote: |
Quote: | Note: If you are not a software developer, there is a very high chance that Pimpmobile is of no use to you. Pimpmobile is not an application, but a development library. |
I guess this means I have to make a GSM Player style wrapper around it, right? |
Feel free to do so... The example-thingie can easily be used as a basis (and I guess it would work for some), but i don't intend to maintain an application myself. I don't have any fat-supporting carts myself, and I guess that would be the most natural way for a player to work.
#111423 - Master S - Wed Dec 06, 2006 11:26 am
Great to see that you found time to make a release. Looking forward to give it a try :-)
#111430 - kusma - Wed Dec 06, 2006 2:19 pm
Just a quick note: the email address on the web-site seems to bounce emails right now. Sorry about that. If you wish to make contact you should currently use the PM feature here instead ;)
#111569 - gauauu - Thu Dec 07, 2006 8:11 pm
Very cool.
It looks like the current API doesn't support playing an additional sound effect (like one particular sample from a mod) mixed in while another mod is playing, does it? (like for sound effects)
(not trying to complain, just seeing if I somehow missed this functionality)
#111613 - kusma - Fri Dec 08, 2006 10:51 am
gauauu wrote: |
Very cool.
It looks like the current API doesn't support playing an additional sound effect (like one particular sample from a mod) mixed in while another mod is playing, does it? (like for sound effects)
(not trying to complain, just seeing if I somehow missed this functionality) |
Nope, the api doesn't support it yet. you can still include the mixer-headers and playback itself, but that's quite a nasty hack ;)
I'll look into adding it in a clean way.
#123555 - gauauu - Thu Mar 29, 2007 2:34 am
Any progress on adding the ability to play samples as sound effects?
Just curious...
#123558 - sgeos - Thu Mar 29, 2007 3:18 am
I must look into this library. It is probably what I am looking for. =)
-Brendan
#123588 - kusma - Thu Mar 29, 2007 9:42 am
gauauu wrote: |
Any progress on adding the ability to play samples as sound effects?
Just curious... |
No, not yet. Sorry for the lack of activity, but I'm kind of busy making a demo for Breakpoint right now. Anyway, I've changed lots of things, and it's soon time for a new release not too far after easter.
#162372 - thoduv - Mon Sep 01, 2008 11:36 am
Any update ?
I'm really looking forward for a more usable version: the current one makes a lot of XMs to sound horrible on GBA.
#162382 - kusma - Mon Sep 01, 2008 5:01 pm
I'm actually working on a new version, yeah. But please, report which modules play wrong, so I can fix it :)
#162389 - thoduv - Mon Sep 01, 2008 8:26 pm
Cool ! :)
Here is an example of XM that don't work properly: http://thoduv.drunkencoders.com/tmp/plays_quite_wrong.xm (note it has been generated from a MIDI file with gmid2mod).
Also, I did not try to play it on a "blank" project with no other IRQ/DMA than sound (I've read that some modplayers are incompatible with DMA or HBL irq).
#162391 - Kyoufu Kawa - Mon Sep 01, 2008 8:44 pm
Is that sum Zelda? It sounds kinda wrong in Media Player Classic from :15 onwards. Having listened to this song in USF format quite recently, I noticed this immediately. I should try it in other players...
Yeah, WinAmp has the same crap going on. I don't know how it sounds in your test, but it might be the song itself.
#162393 - kusma - Mon Sep 01, 2008 10:05 pm
Oh, yeah. That piano-sample sounds quite wrong here. Thanks a lot for the bug-report :)
Would you mind if I add this to the (currently in-the-making) test-suite? That way I'd be able to make sure I don't break it again by accident :)
edit: Uhm, no it's the oboe. And it sounds like it could be other issues as well. The player reports missing effects EC and K, as well as volume command A7. Guess it's time to implement note-cut and vibrato. K seems to be a non-existent command, but I'll see if I can just ignore it instead.
#162410 - thoduv - Tue Sep 02, 2008 12:34 pm
Kyoufu Kawa wrote: |
Is that sum Zelda? It sounds kinda wrong in Media Player Classic from :15 onwards. Having listened to this song in USF format quite recently, I noticed this immediately. I should try it in other players...
Yeah, WinAmp has the same crap going on. I don't know how it sounds in your test, but it might be the song itself.
|
No, it sound a little wrong with any other player (the mid->xm conversion lowered the precision of some effects/note/I don't know what), but it sounds very wrong (to the point you can't recognize the theme) with pimpmobile.
kusma wrote: |
Would you mind if I add this to the (currently in-the-making) test-suite? That way I'd be able to make sure I don't break it again by accident :) |
No problem: it's not mine: it's a MIDI file from vgmusic.com converted to XM using gmid2mod.
#162877 - kusma - Mon Sep 15, 2008 1:13 pm
thoduv wrote: |
No, it sound a little wrong with any other player (the mid->xm conversion lowered the precision of some effects/note/I don't know what), but it sounds very wrong (to the point you can't recognize the theme) with pimpmobile.
|
Sorry for the delay in the response. It turns out that the issues I'm talking about is only present in the current SVN HEAD. Pimpmobile R1 plays the tune back pretty much identical to Fasttracker 2 and XMplay (the two players I use for reference - XMplay for convinience, and FT2 since it's the original XM editor). It's important to know that Pimpmobile doesn't do any interpolation, and that changes the sound a bit. FT2 and XMplay both have optional interpolation.
Neither of the cases (r1 and SVN HEAD) are anywhere near what you describe with "to the point where you can't recognize the theme", so I'm wondering if you are suffering from some integration issue instead...
#162886 - thoduv - Mon Sep 15, 2008 7:14 pm
Oh well... I tested this music with the example given with pimpmobile, and... it worked.
So, this is finally an integration problem, and furthermore, a stupid problem... sound bank: it was only created for one song, then overwritten by the second to be converted, etc. Makefile, I hate you !
Anyway, thanks a lot kusma ! I'm still looking forward any of your awesome player's updates ! :)
#162889 - kusma - Mon Sep 15, 2008 7:53 pm
I'm glad to hear that the problem was resolved. I'm still glad it was reported, since it has triggered a problem in the SVN HEAD version of the player, and I'll make sure this issue is resolved before releasing the next version. Good to hear that you are satisfied so far :)