Previous Page | Next Page

by Knurek at 2:58 PM EDT on May 8, 2013
Start of the sample I prepared, actually. Yes, it's two minutes in. CBX should still be able to wavewrite it though, should be much faster than listening through the whole two minutes for that part.

Alternatively, there's 0000 - OPENING.minincsf from the same game which has a glitch right at the beginning of the song.
by Franpa at 4:56 PM EDT on May 8, 2013
Ah okay, my bad. I misinterpreted what you said.
by CyberBotX at 2:41 AM EDT on May 9, 2013
You had me thinking I had misinterpreted Knurek, Franpa. In any case...

Knurek, I used Winamp's Format Converter to output .wav files for both the 2SF and NCSF of that song, both without interpolation, then I loaded the waves into Audacity. Here's something interesting. The first 0.00225 seconds of the song (I'm not sure how many samples that) are identical between the 2SF and NCSF. But then the 2SF has a period of silence up until about 0.00535 seconds in, which the NCSF does not have (it's actually playing something for those 0.003 seconds). At that point, the songs no longer sync up, and the 2SF encounters another moment of silence that the NCSF doesn't have for a few more milliseconds. It's hard to tell at that point, but it seems almost like the 2SF syncs for those first 2 millseconds and then it is behind by about 1 millsecond after the silence portion. There are some very slight differences in the data, but just from looking at the waveforms, they appear to be almost the same, with the NCSF maybe being a hair quieter. So as far as I can tell, the songs are playing nearly the same, aside from the 2SF's two silence gaps at the beginning.

Keep in mind that the above is from the latest version of the NCSF plugin (v1.8) and my 2SF plugin, which is based on a modified DeSmuME 0.9.9 (from SVN, the release only happened about a week ago but I haven't updated my own sources to the release and I think my version is probably close to the release's version anyways).

As an aside related to the above, I have put the NCSF plugin (as well as my xSF framework) onto GitHub, at This also contains my versions of 2SF, GSF, and SNSF plugins. The 2SF plugin, as mentioned above, is based on DeSmuME 0.9.9, but it will NOT play 2SF rips that use save states (in other words, it only plays 2SFs that use Caitsith2's Legacy of Ys driver). The GSF plugin is based on VBA-M and uses a pretty recent revision of it (it's probably from about 2-3 weeks ago). The SNSF plugin is based on snes9x 1.53, but I also added a few additional resamplers based on the interpolation I added into the NCSF plugin.
by Knurek at 3:01 AM EDT on May 9, 2013
I'm pretty sure the delay in 2SF is caused by the fact that the plugin is emulating the whole system, so it needs to boot up system, set up the music driver, etc. I imagine that NCSF, being high level, does not need to do that.

0.00225 seconds should be roughly 100 samples, given 44100 Hz frequency.


Sorry if this is a stupid question, but is there any way to download plugin builds from that github page? I can only find links to source files, and I don't have VC installed on my machine.

edited 3:03 AM EDT May 9, 2013
by CyberBotX at 3:10 AM EDT on May 9, 2013
Well, that's the thing, the way both plugins are set up, since I did use some concepts from the vio*sf plugins, is that silence at the beginning is skipped. If the two weren't identical for those roughly 100 samples, then I could see a startup or something causing the delay. But the fact that after 2 milliseconds the 2SF becomes silent for 3 milliseconds, plays for about 2-3 milliseconds, then goes silent again for another 3 milliseconds before continuing, is a bit strange. This is probably also why the output of a single channel from both in_2sf and in_ncsf are not the same.

Now, I'm not saying that it's not possible for the NCSFs to be wrong. But I am saying that is possible that the 2SFs could be wrong (whether they are or not is another question). They could be wrong either because of DeSmuME or because of the Legacy of Ys driver. And NCSFs could be wrong due to FeOS Sound System.

FSS is missing some commands. Although he helped me fix the recent ADSR problem, fincs has given no word on when he plans on looking into the disassembly of those unimplemented commands. There has been at least 1 or 2 other people in #dsdev on Blitzed who said they would try looking into it, but I think the problem is that no one else has the disassembly of Nintendo's player for the Nitro Composer format. I personally do not even know how to pull a disassembly from a DS ROM, and even if I did, I do not know ARM assembly to interpret the results.

ALSO EDIT (Because I was typing my post before your edit): No, but I could put up the DLLs. Assuming that in_ncsf is already installed, you would already have zlib1.dll in place, so you would just need to drop the DLLs in and you'd be good. I'll post links to the other 3 plugins after I compile Release versions of them.


OK, I have created builds of the other 3 plugins:


One thing I've noticed with the GSF plugin though, and not something I've found a fix for: It seems that if it plays a GB or GBC song (that have been converted to GBA format) and it plays for too long, the plugin as a whole enters a state where it refuses to play anything else at all. Restarting Winamp fixes it, obviously, but I am unsure why this is.

edited 3:39 AM EDT May 9, 2013
by Knurek at 3:46 AM EDT on May 9, 2013
Thank you, will play with them when I get back from work.

Not sure about the GBS2GSF crashes, I seem to recall something like that in the original GSF plugin as well, I think the last version fixed that.
From CaitSith2's changelog: Permenantly Disabled SWI 3 (stop), as there is no pratical use for it in GSFs.
by CyberBotX at 4:07 AM EDT on May 9, 2013
I'll look into that more when I'm less tired. But from the sounds of it, that sounds like it would fix the issue with mine as well. We'll see.
by Knurek at 9:04 AM EDT on May 9, 2013
Hmm, funny thing, that Etrian Odyssey 3 track I mentioned that has a glitch in the beginning (01 That's the Beginning of the Adventure or 0000 - OPENING)...

It has the same glitch when playing the 2sf rip with your plugin. Nothing like this is happening with vio2sf... Not sure if this helps you in any way, I guess there is something your resampler framework does that's not really compatible with this track.

The other problematic track from the set plays fine, just like vio2sf.

I couldn't help but notice that the 2sf plugin doesn't have any of the new interpolation options. I hope you'll be able to add them as well.
by CyberBotX at 1:21 PM EDT on May 9, 2013
When I did my test with Audacity, I had interpolation turned off, so I don't think the interpolation is part of the problem. I know that vio2sf is currently a crazy mix of old DeSmuME 0.8.x code and some code from the 0.9.x branch. My in_2sf is entirely DeSmuME 0.9.9, though. (Also, even though it says it's from SVN, it appears that nothing has changed since the revision I used, other than Mac OS X port stuff.)

As for the 2SF plugin lacking the new interpolation options, I would probably have to do some heavy hacking of DeSmuME's SPU to handle that, mainly because they wrote their interpolation under the assumption of there only being 2 points, plus on top of that, they technically aren't handling looping SWAVs. I'm also a lot less familiar with some of their SPU code. There were only a few parts of it that I was able to utilize in in_ncsf.

EDIT: Actually, I may be wrong about them not handling looping SWAVs. I haven't really looked over the code heavily enough.

edited 2:13 PM EDT May 9, 2013
by Krude at 7:04 PM EDT on May 18, 2013
Well, that blatant spamming aside...

This looks like the EXACT thing i need right now! I spent the last three or so days researching ways to play NDS music and maybe dump it to .wav, specifically the music in Time Hollow. It was frustrating.

I experimented with various things, like the ever-crashing VGMTrans, which does have a nice palyback function. I'd have to clunkily record my PC's StereoMix though.

I then tried various methods to transform the SSEQ files into MIDI and tracker formats, and they all either played completely wrong or, at best, sounded slightly off, since none of them properly supported ADSR.

I even played with the idea to use a NDS music player that embeds the SDAT in a Rom to play with desmume, but... i'd need to get the development environment for th DS / ARM first. What a pain.

Now, i'm not sure how exactly this works. This is a Winamp plugin that plays what sdat or sseq/sbnk i feed it?

About to try this out.

Previous Page | Next Page
Go to Page 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Search this thread

Show all threads

Reply to this thread:

User Name Tags:

bold: [b]bold[/b]
italics: [i]italics[/i]
emphasis: [em]emphasis[/em]
underline: [u]underline[/u]
small: [small]small[/small]
Link: [url=]Link[/url]


HCS Forum Index
Halley's Comet Software
forum source