Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: foo_mod (Read 15810 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

foo_mod

Hello Kode54,

first let me thank you very much for your fine plugin.

The soundoutput of latest foo_mod v0.92 (6.9.2004) sounds better to me than its predecessors, especially .it files do sound clearer.
I permanently have interpolation switched off since it tends to surpress some of the audible things that you hear with no interpoltation.
Also this seems more true to the soundoutput of the original trackers IMHO.

So i take it that your plugin does have some influence on the soundoutput from bass.dll instead of ~importing~ its outpu to foobar?
I wonder why you provide v.2.0.0.18 of bass.dll with foo_mod instead of the current release v2.0.0.22. There's a noticable difference
in soundoutput, v2.0.0.18 seems not to process resonant filters of .it files. I can send you some files for easy comparison on that matter.

Problem:
¯¯¯¯¯¯¯
I've just found one .it file that won't load with your plugin,  error WARNING (Foo_Mod) : BASS_MusicGetLength() returned error: 20.
Xmplay v3.0.0.6 loads the file, so does Winamp v5.0.4 with in_mod v2.11. Is it related to bass.dll or to foo_mod? Please let me know if
you want to have a look on the file and where i should send it to.

Request:
¯¯¯¯¯¯¯
Could you please implement display of instrument/sample info of .XM files?


Regards, deus-ex.

foo_mod

Reply #1
Quote
The soundoutput of latest foo_mod v0.92 (6.9.2004) sounds better to me than its predecessors, especially .it files do sound clearer.
I permanently have interpolation switched off since it tends to surpress some of the audible things that you hear with no interpoltation.
Also this seems more true to the soundoutput of the original trackers IMHO.

Except for FastTracker 2.x and Impulse Tracker, which featured optional resampling.

Quote
So i take it that your plugin does have some influence on the soundoutput from bass.dll instead of ~importing~ its outpu to foobar?

Nope. Not one difference, just straight from 32-bit floating point to the player's 64-bit floating point audio pipeline.

Quote
I wonder why you provide v.2.0.0.18 of bass.dll with foo_mod instead of the current release v2.0.0.22. There's a noticable difference
in soundoutput, v2.0.0.18 seems not to process resonant filters of .it files. I can send you some files for easy comparison on that matter.

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.)


Quote
I've just found one .it file that won't load with your plugin,  error WARNING (Foo_Mod) : BASS_MusicGetLength() returned error: 20.
Xmplay v3.0.0.6 loads the file, so does Winamp v5.0.4 with in_mod v2.11. Is it related to bass.dll or to foo_mod? Please let me know if
you want to have a look on the file and where i should send it to.

You can use the Foobar2000 uploads forum.

Quote
Could you please implement display of instrument/sample info of .XM files?

I already implemented XM info display in foo_dumb, but I can borrow that much of DUMB to process and display XM information.

foo_mod

Reply #2
Quote
Except for FastTracker 2.x and Impulse Tracker, which featured optional resampling.
Thats right. I used to disable interpolation in those trackers for that reason, too.

Quote
Nope. Not one difference, just straight from 32-bit floating point to the player's 64-bit floating point audio pipeline.
I'm using your mod plugin since a long time allready. New versions are copied over existing installations. So except for updating your plugin nothing changed in Foobar. I thought to hear a slight improvment in soundpoutput, then again possible imagination.

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.

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.

Regarding this particular example, it wouldn't even sound as the author intended with the software MMX mixer in Impulse Tracker. According to the song message, the composer used the AWE32/64 output driver, which has slightly different resonant filtering than the software mixer. Mostly, the frequency cutoff / resonance having different scales. Oh well, close enough.

Quote
You can use the Foobar2000 uploads forum.
Ok, uploaded.

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.

Regards, deus-ex.

foo_mod

Reply #3
Quote
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.[a href="index.php?act=findpost&pid=240611"][{POST_SNAPBACK}][/a]

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: [Select]
    {
 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.[a href="index.php?act=findpost&pid=240611"][{POST_SNAPBACK}][/a]

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.[a href="index.php?act=findpost&pid=240611"][{POST_SNAPBACK}][/a]

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.)

foo_mod

Reply #4
Quote
I tried implementing XM info reading using just the XM parser from DUMB, and it bloated foo_mod by 50KB.
Ohh, alright. 
Thank you for your efforts. I did'nt ment to push you into hard work with that though. If it comes out that it's not worth the effort could you provide
a special download version (cool marketing, ehh?) of foo_mod including .xm instrument/sample data info?

Quote
With foo_dumb, the detected song length comes out to about 90 minutes. ModPlug Tracker detects a length of about 5 minutes.
Have you tried Xmplay itself allready? Xmplay reports a total playtime of 3:44 min, 44 Orders. Ian (Xmplay author) mentioned once that development of bass.dll is'nt always on par with Xmplay in technically terms (latest fixes concerning format/playback issues).
I'm checking for an update of bass.dll regulary.

Btw., the playback issue with bass.dll v2.0.0.18 seemd to be a compile error on Ian's side (my guess). The previous versions and the follow ups
(.19,.20,.21,.22) did'nt have that problem with resonant filters. Though Ian makes it a secret what was fixed with bass.dll updates, too.

Regards, deus-ex.

foo_mod

Reply #5
Found this masterpiece which fails to load with foo_mod, error: WARNING (Foo_Mod) : BASS_MusicLoad() returned error: -1.
Spx-Bubbles.it loads with Xmplay and foo_dumb.

Can you offer foo_mod plugin for download with implemented DUMB .xm-parser? I don't mind the extra KB as long as i can access sample/instrument info of .xm's too.

Thank you and regards, deus-ex.

foo_mod

Reply #6
Jos-Dr4k.xm fails to load both with foo_dumb and foo_mod.
Foo_Mod error message: WARNING (Foo_Mod) : BASS_MusicGetLength() returned error: 20.
Foo_Dumb does'nt emit any message.

Regards, deus-ex.

foo_mod

Reply #7
Quote
Found this masterpiece which fails to load with foo_mod, error: WARNING (Foo_Mod) : BASS_MusicLoad() returned error: -1.
Spx-Bubbles.it loads with Xmplay and foo_dumb.

Can you offer foo_mod plugin for download with implemented DUMB .xm-parser? I don't mind the extra KB as long as i can access sample/instrument info of .xm's too.

Thank you and regards, deus-ex.
[{POST_SNAPBACK}][/a]

This file has 257 orders, which might be too many for BASS.dll. Feel free to check with Ian on this. (-1 equates to BASS_ERROR_UNKNOWN, aka "something funny's going on.")


Quote
[a href="http://www.hydrogenaudio.org/forums/index.php?act=Attach&type=post&id=1003]Jos-Dr4k.xm[/url] fails to load both with foo_dumb and foo_mod.
Foo_Mod error message: WARNING (Foo_Mod) : BASS_MusicGetLength() returned error: 20.
Foo_Dumb does'nt emit any message.

Regards, deus-ex.
[{POST_SNAPBACK}][/a]

This file doesn't end. It is yet another single-pattern module, but this time using pattern loops, and abusing the fact that each channel has its own pattern loop start point. The final loop range fades out with global volume slides.

Perhaps Ian could implement a volume cut check like so, along the lines of this pseudo-code:

Code: [Select]
previous_global_volume = global_volume;

(process a tick or row or such worth of pattern)

if ((global_volume == 0) &&
 (previous_global_volume != global_volume) &&
 (previous_global_volume != (file's starting global volume)))
{
 do something, perhaps cut playback here
}


The objective is to catch when global volume has been silenced, but avoid cutting if something sets the volume to zero at the start of the file. (Presumably to fade in, such as used in Ninja Bolognese, listed [a href="http://www.modarchive.com/N/index6.shtml]here[/url].)

foo_mod

Reply #8
I informed Ian about the aformentioned load issues. An update of bass.dll is allready available.

Regards, deus-ex.

 

foo_mod

Reply #9
I wondered if bassmod.dll v2.0 can be used instead of bass.dll. It is a MOD only version of BASS, filesize is only a third of bass.dll.
If that's an interesting option i'll have to ask Ian to update bassmod.dll to the same level of bass.dll.

Since bass.dll has enclosed support for .mp3 is it possible to access its .mp3 routines through foo_mod? That would enable a third option to play .mp3 files which i'd find to be interesting for comparison, i.e. how XMPlay's .mp3 routine sounds through foobar in conjunction with foobars dsp options which are far more advanced than XMPlay's.

deus-ex

foo_mod

Reply #10
Meh, my mistake, he does show the minor version on the page, although this new version is still 2.0.0.23.

Everyone redownload foo_mod.zip for the updated bass.dll component if you haven't already gotten it from the SDK at un4seen.com.

foo_mod

Reply #11
Quote
I wondered if bassmod.dll v2.0 can be used instead of bass.dll. It is a MOD only version of BASS, filesize is only a third of bass.dll.
If that's an interesting option i'll have to ask Ian to update bassmod.dll to the same level of bass.dll.

Since bass.dll has enclosed support for .mp3 is it possible to access its .mp3 routines through foo_mod? That would enable a third option to play .mp3 files which i'd find to be interesting for comparison, i.e. how XMPlay's .mp3 routine sounds through foobar in conjunction with foobars dsp options which are far more advanced than XMPlay's.

deus-ex
[a href="index.php?act=findpost&pid=242491"][{POST_SNAPBACK}][/a]

Bump...?

foo_mod

Reply #12
Since BASSMOD is even more limited than BASS, I don't plan on switching to it any time soon.

As for BASS's internal MP3 decoder, I doubt there would be any noticeable difference between it and the standard mpglib decoder, if it is a compliant decoder. If someone else wants to take up the task, they're welcome to it.

foo_mod

Reply #13
Quote
As for BASS's internal MP3 decoder, I doubt there would be any noticeable difference between it and the standard mpglib decoder, if it is a compliant decoder. If someone else wants to take up the task, they're welcome to it.
[a href="index.php?act=findpost&pid=243920"][{POST_SNAPBACK}][/a]


Re-bump .

I was just thinking about this last night. Foobar2000's "Standard Inputs" prefs page has a select box entitled "MP2/MP3 decoder", with only one option, mpglib, in the 0.8.3 Special Edition installer. I think it would be great to add BASS.DLL's MP3 playback (and perhaps also OGG playback) as options to the standard inputs, given that the DLL is already shipped with the installer.

The rationale for this is that on older computers like mine, BASS.DLL is substantially quicker than mpglib at playback (CPU usage on PII 333: XMPlay ~8% for both MP3 and OGG, FB2K ~13-14% with MP3 slightly lower; I assume BASS.DLL is similar to XMPlay). I can't tell any difference between the audio quality of each, but I haven't tried to ABX them.

I don't have a copy of MSVC++ but if anyone does, and is looking for an idea for a Foobar plugin, this would be appreciated!

foo_mod

Reply #14
Quote
I was just thinking about this last night. Foobar2000's "Standard Inputs" prefs page has a select box entitled "MP2/MP3 decoder", with only one option, mpglib, in the 0.8.3 Special Edition installer.[a href="index.php?act=findpost&pid=246622"][{POST_SNAPBACK}][/a]

MAD will also appear there if you install my foo_mad component, aka MPEG Audio Decoder, based on libmad.

Quote
I think it would be great to add BASS.DLL's MP3 playback[a href="index.php?act=findpost&pid=246622"][{POST_SNAPBACK}][/a]

The API does not support decoding MP3 files one packet at a time, so it would have to be a separate input altogether. Gapless playback would be impossible, as the input would know the encoder delay/padding from the LAME/VBR headers, but not the decoder delay. It may be possible to guess, but this is still dodging around one of many problems with this idea.

Quote
(and perhaps also OGG playback)[a href="index.php?act=findpost&pid=246622"][{POST_SNAPBACK}][/a]

This is totally pointless, as it is likely to be using libvorbis anyway. The only other Vorbis decoder is Tremor, and that is only a fixed point implementation of the same thing.

Quote
given that the DLL is already shipped with the installer.[a href="index.php?act=findpost&pid=246622"][{POST_SNAPBACK}][/a]

Not for long.

Quote
The rationale for this is that on older computers like mine, BASS.DLL is substantially quicker than mpglib at playback (CPU usage on PII 333: XMPlay ~8% for both MP3 and OGG, FB2K ~13-14% with MP3 slightly lower; I assume BASS.DLL is similar to XMPlay). I can't tell any different between them, but I haven't tried to ABX it.[a href="index.php?act=findpost&pid=246622"][{POST_SNAPBACK}][/a]

Check Preferences -> Playback, see if dithering is enabled. This is a possible bottleneck which is not enabled by default.

This may just be the overhead of the 64-bit floating point audio pipeline.

I'm sure somebody will do this anyway, but it won't be through the MPEG decoder service that the Standard Inputs component uses. It will have to be a stand-alone input.

Quote
I don't have a copy of MSVC++ but if anyone does, and is looking for an idea for a Foobar plugin, this would be appreciated!
[a href="index.php?act=findpost&pid=246622"][{POST_SNAPBACK}][/a]

If, by that, you mean that someone should donate money or a physical copy of Visual Studio to you, or you mean that you wish to purchase it from someone here, this is spamish.

If you are asking for an illegal copy, you are asking for someone to violate TOS #9. Please do that somewhere else.

foo_mod

Reply #15
Quote
The API does not support decoding MP3 files one packet at a time, so it would have to be a separate input altogether....

OK, thanks for the clarification of the tech specs .

Quote
Check Preferences -> Playback, see if dithering is enabled. This is a possible bottleneck which is not enabled by default...
This may just be the overhead of the 64-bit floating point audio pipeline.

Dithering is off, and I'm using WaveOut (on Win98) in both. You're probably correct that it must be the audio pipeline in that case.

Quote
Quote
I don't have a copy of MSVC++ but if anyone does, and is looking for an idea for a Foobar plugin, this would be appreciated!

If, by that, you mean that someone should donate money or a physical copy of Visual Studio to you, or you mean that you wish to purchase it from someone here, this is spamish.

If you are asking for an illegal copy, you are asking for someone to violate TOS #9. Please do that somewhere else.

Sorry, that pronoun came around to bite me! By "this would be appreciated" I meant it would be great if someone else with a licensed copy of VC++ took the idea for a BASS.DLL MP3 input plugin and ran with it. No piracy requests were intended. I just assumed from the docs that VC++ was required for FB2K development, as opposed to an alternative Free/OSS Win32 compiler like MinGW.

foo_mod

Reply #16
I do believe it is. Sorry if I misunderstood and jumped to that conclusion.