Previous Page | Next Page

by nothingtosay at 4:30 AM EDT on April 12, 2013
Wow, that's a very informative collection of information there. Some of those look like they would sound horribly wrong (looking at you, 6-point, 4th-order Optimal 4x), so of course I'm curious to hear them. :P It also shows that higher numbers don't always mean better.

Seems there's a high amount of redundancy between methods though. Slight differences in wave shapes make even slighter differences in sound. I tested the 4-point, 3rd-order Lagrange against the 6-point, 5th-order Lagrange, and the differences are on average around 40 dB below the rest of the music, a.k.a. virtually inaudible (this test may not actually be completely accurate, but if it's not it's inaccurate in a way that would exaggerate the difference, not underrate it; it may be adding together two slightly different things that don't cancel out, thereby increasing the total volume). There's actually even slightly less difference between 6-point, 5th-order Lagrange and Hermite at the same. So, while more choice is often better, many of these are hardly even different, factually speaking, not as a matter of taste.

But speaking of taste, though some of them don't look like they come close to hitting the original sample points and you'd think that would be a bad thing, it doesn't mean they sound bad. It would be unfortunate if 4-point, 3rd-order B-spline and 4-point, 4rth-order Optimal were both gone due to their apparent inaccuracy because I think they give a good balance between treble and noise reduction.

So I think you could trim some of the fat. Like you said, 2-point, 3rd-order Optimal 16x looks almost exactly like Linear in the graph and they sound the same to me. Hermite and Lagrange are so similar that they're essentially interchangeable, though Hermite looks a little smoother and 2nd-order Osculating a little smoother than that. The 4 and 6-point variations of Osculating seem so similar that only one is necessary, 6-point being the smoother one. Honestly, I wouldn't be opposed to eliminating Optimal in favor of B-spline.

If it were my plugin, I'd be torn between, on one hand, including the best 4 and 6-point versions of each type for the sake of a compromise between completeness and reducing redundancy, and on the other hand, condensing it only to the choices that sound notably different but not outright terrible, in which case I'd go with Linear; Cosine; 4-point, 3rd-order B-spline; 6-point, 5th-order B-spline; and 6-point, 5th-order 2nd-order Osculating.

I don't know which treatment I'd give to the edges without hearing the last one you haven't used, but either of the two other options seems better than the current one. On a related note, I'm not so sure it was the edge handling change that caused the clicking I found. I just checked with linear interpolation on the old and new versions of the plugin, which should be the same and not be doing anything different with the edges, but the new one has the clicking and the old does not. And I take back what I said in my last post that it could have been caused by the change in oversampling because it happens with the other interpolation types even though there was no change for them. Don't know what is causing it.

[/wall of text]

edited 4:37 AM EDT April 12, 2013
by CyberBotX at 10:00 AM EDT on April 12, 2013
I decided to modify the program I created to generate those plots to also generate the wave files of each interpolation. Basically, the two that look messed up (4-point, 2nd-order Optimal and 6-point, 4th-order Optimal) sound like they get very noisy (background noise) as the oversampling rate is raised. It's really hard to tell the difference on such a small sample, though, but those two stood out.

I like the suggestion you made to which interpolations to keep, so I'll do just that. Sure, more choices would be nice, but as you said, a lot of these do create waveforms that look very similar to each other, so it would help reduce the amount of code and possibly cause a slight shrink in the final DLL's size. I'll also go with using the nearest point instead of the current point. I'd use slope, but thinking about it, it may cause some slight issues with the SWAV if they have to pull data from within their very last sample (slight possibility of them overpeaking). I'll have the update out within the next hour, but to be safe, check back at Noon EDT and it should be uploaded.
by Knurek at 10:32 AM EDT on April 12, 2013
CyberBotX, sorry for being a bit OT, but is there any chance for you to release your GSF and 2SF plugins as well?

pmh will be hitting Game Boy Advance games soonish, and neither CaitSith2's plugin (extremely old sound emulation core) nor viogsf (uses VBA-M, so sounds better, but has some issues IIRC) are optimal choices.

As for 2SFs, I'm still on the fence what should I include on pmh. Those playback issues on Etrian Odyssey 3 are a little worrying, and some of Kirby SSU tracks I've checked sounded completely different (but then, I was using Optimal interpolation, and given how it distorted the first sample you posted, maybe that was the cause). It would be nice to have a matching 2SF plugin for easy comparison.
by CyberBotX at 10:42 AM EDT on April 12, 2013
I can clean those plugins up and release them. Probably do that later today, if not, over the weekend for sure.

I might update the GSF plugin to the latest SVN revision of VBA-M. The only problems I really see with it is that GBA music played through it sound like they have extra background noise in them. I don't know if that is due to the quality of GBA music or if it's VBA-M at fault or if I need to mess around with the compiler/linker optimization settings. The last one seems like it'd be dumb to need, but I really don't know what the cause is. I know the Mother 3 soundtrack in particular sounds really background noisy, but kode54 posted recently saying he thinks it's the GSF set's fault, not VBA-M. I'm not sure what to think there. If there is a better GBA emulator out there to use instead of VBA-M, then I could look into that as well, of course that would delay me releasing a GSF plugin then.

As for the 2SF plugin, the main thing it would lack over the official in_2sf that is under the DeSmuME tree is the Sound View window, I believe it was called. But it does use DeSmuME 0.9.8 as it's core, so there is that. I also originally had it designed to be able to load a DeSmuME 0.9.7 save state if it existed in the reserved section, but the only time I ever used that was for a heavily hacked Phoenix Wright 3 2SF set, and the plugin can't load any 2SFs that use the old Yoshi's Island driver otherwise. The version of the PW3 set I have was a pain in the ass to make and I don't even think I have things set up to let me make it again, so I'd rather not continue including such hacky code in the plugin. Plus with me wanting to move over to NCSF, the whole problem with PW3 is a bit of a moot point to me now.
by JFD62780 at 7:03 PM EDT on April 12, 2013
*ahemmmm* A...bout the GBA... It's not the GBA set's fault, hell, it's not even the emulator. It's the system itself.

To keep the cost low, instead of a dedicated sound chip, they only put in two lo-fi PWM channels and called them a sound system. It was up to the programmers to squeeze any sound outta them via software, and they can get no better than 8-bit resolution in the final mix. That's where the 'background noise' is coming from.

TUK actually asked a good question in the end of this thread's creation. Enter MIDI+SF2 sets created via GBAMusRiper. Properly setting up your SF2-Compatible MIDI player of choice (I use XMPlay! Gotta love Sinc!), you can see EXACTLY what I mean. Starmen.Org even hosted a MOTHER 3 Ultimate Music Rip on the front page once, via this method!

...Figured I'd set the record straight, or something. ;)

Anyway, good on you for initiating the first step to try and better a method of DS Sound playback, the way that dude tried for the GBA. Only this time, it'll truly be system-wide, not dependent on a lone sound engine! :D

BTW, thanks for setting up that Interpolation Illustration page, now I KNOW 'Optimal' was missing the sample points nigh-entirely! I've currently chosen 6-Point Osculation as the ultimate compromise between Hi-Fi and Ridding the Tinniness. MEGA KUDOS! XD

edited 10:20 PM EDT April 12, 2013
by nothingtosay at 11:38 PM EDT on April 12, 2013
I might as well just give you this now even though I'm not quite done with it yet.
Mystery Dungeon - Shiren the Wanderer [Fushigi no Dungeon - Fuurai no Shiren DS] (2006-12-14)(Chunsoft)(Sega)
(The leftover stuff at the end is post-game bonus content I haven't played yet to be able to organize. Also, there should be an extra ME Collection track, "Event Item", but it must be in with the sound effects because it's not extracted with NDStoNCSF.)

I appreciate your adoption of my suggestions. :) Of course, I've found another issue though. :P In this and the previous version of the plugin, there's an odd regression. "Puzzle", number 8 in the set, is a particularly good example to work with to hear this. With the newer versions you can hear extra noisiness (sounds like harmonic distortion), but it's not there with the revision from the 7th. Track 9 was the one I found the clicking on before, which happens about 1:25 into it, and it's still there with the latest version, so indeed it seems the edge handling was not the cause. Any idea what could be doing this? What changed besides interpolation and edge handling since the version where you fixed the volume?
by CyberBotX at 9:49 PM EDT on April 14, 2013
Sorry it took me a bit of time to get back to this. I was busy yesterday and got sidetracked today. Anyways...

So I played track 9 and seeked to just before 1:25, and maybe it's my laptop's speakers but I didn't hear the clicking. I tried with each of the interpolations to make sure. The only thing I can really tell is just a little after 1:25, there is something that sounds like it could be overpeaking, but I'm not sure and only seemed to happen with no interpolation or Cosine interpolation. The revision on the 7th (v1.2) is when I did the volume change. Since then, I made the interpolation changes as well as the start/end handling change, and just some minor optimizations that shouldn't have affected playback. So at the moment, I'm a bit stumped as to what is going on.

As an aside, I will need to talk to fincs about FSS. I found that some tracks from Knights in the Nightmare are sounding incorrect compared to their 2SF counterparts. Specifically, listening to the beginning of track 2.01 - Battle in the Abandoned Church, there is a cymbal in the background which sounds normal in the 2SF but sounds cut off in the NCSF. I confirmed that it also plays incorrectly on the DS itself via FSS, so it's not an issue with my end of the plugin.
by nothingtosay at 4:09 AM EDT on April 15, 2013
Do you have some fairly decent headphones or speakers to plug into? I expect it would be tough to hear on laptop speakers. It actually doesn't come anywhere near to clipping so it's not that. Could you hear the extra noisiness on track 8?

Maybe just going back to v1.2 and updating the interpolation options to the current ones would solve the bug? I have no other ideas. I wish you could hear it so you could pinpoint the cause. As my volume-boosted difference file hopefully showed, I'm not just having an auditory hallucination! :D
by the_audio_ripper at 12:34 PM EDT on April 18, 2013
That's great!
by CyberBotX at 8:14 PM EDT on April 18, 2013
A minor update since I've been quiet the last few days (and this is because I was trying to clean up DeSmuME's code for the 2SF plugin and it sucks doing that). kode54 had created a foobar2000 plugin based off of my Winamp one. He also informed me that interpolation needs to be using a circular buffer, which he then implemented into his foobar plugin and showed me the changes he made. I put those into the Winamp plugin, but then I noticed a lot more popping occurring, including being able to hear pops in the the song that nothingtosay mentioned. He is looking into this and will get back to me, but I will wait to release an update to the Winamp plugin until then.

And now the plugin has been updated. I again want to thank kode54 for providing the fix for this. I don't know if it'll fix the playback issues completely, but I believe it should help quite a bit.

edited 8:51 PM EDT April 18, 2013

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