QUOTE(deus-ex @ Sep 9 2004, 12:58 PM)
QUOTE
I cannot hear a difference between 2.0.0.18 and 2.0.0.22 with the one resonant filter example I have, jeff93.it. Also, it's hard to keep up with minor releases when the author doesn't mention them on the webpage, and rarely on the forum. (Slightly off-topic, the standard in_mod is not a proper reference for resonant filters, as it gets them completely wrong.)
I can asure you there is a difference in replay quality between v2.0.0.18 and v2.0.0.22. I'll load up a file which makes heavy use of resonant filters. Compare both dll's with it, you'll hear it.
Yes, I can hear the difference. DUMB also sounds closest to 2.0.0.22, and comments on some other players getting resonant filters incorrect in its headers, I will have to see if making this change has the same effect, or worse:
CODE
{
float inv_angle = (float)(sampfreq * pow(0.5, 0.25 + cutoff*(1.0/(24<<IT_ENVELOPE_SHIFT))) * (1.0/(2*3.14159265358979323846*110.0)));
float loss = (float)exp(resonance*(-LOG10*1.2/128.0));
float d, e;
#if 0
loss *= 2; // This is the mistake most players seem to make!
#endif
#if 1
d = (1.0f - loss) / inv_angle;
if (d > 2.0f) d = 2.0f;
d = (loss - d) * inv_angle;
e = inv_angle * inv_angle;
a = 1.0f / (1.0f + d + e);
c = -e * a;
b = 1.0f - a - c;
#else
a = 1.0f / (inv_angle*inv_angle + inv_angle*loss + loss);
c = -(inv_angle*inv_angle) * a;
b = 1.0f - a - c;
#endif
}
QUOTE
Regarding standard in_mod, you're talking about the winamp plugin here i guess? Yes, it's support of impulse tracker format lacks resonant filters.
It supports resonant filters, just not very well. Not very well at all. There's an option in preferences just for that format, but I think it's already enabled by default.
QUOTE
QUOTE
I already implemented XM info display in foo_dumb, but I can borrow that much of DUMB to process and display XM information.
That would be very nice. I plan to comment on foo_dumb, too. I'll open a new topic for it.
Alright. I tried implementing XM info reading using just the XM parser from DUMB, and it bloated foo_mod by 50KB. I'll write my own simplified parser, and hopefully it won't be as much of a pain as the last time I tried.
Regarding BASS choking on rl_poui.it, I am guessing it has something to do with the delay padding on the end. It basically sets the speed divider to the maximum of 255, then uses a pattern repeat across the span of an empty 64-row pattern, the maximum of 15 times. With foo_dumb, the detected song length comes out to about 90 minutes. ModPlug Tracker detects a length of about 5 minutes.
DUMB already supports a song stop callback for XM files where the speed is set to zero, so I expanded it to activate that same callback if it crosses a speed setting of 255. The result is that foo_dumb ignores that end padding, and skips to the next song when it hits that speed change effect. (I could make it configurable so the speed zero effect is ignored, or causes looping, but at least looping would take some extra work as the repeat would have to be actuated outside of DUMB itself. Plus, if you wanted such files to repeat endlessly, you could always set the core playback mode to
Repeat One.)