Help - Search - Members - Calendar
Full Version: Winamp-VIS-plugs in foobar
Hydrogenaudio Forums > Hosted Forums > foobar2000 > 3rd Party Plugins - (fb2k)
Pages: 1, 2, 3, 4, 5, 6, 7
Smiff
i have a feeling there's going to be all kinds of quirks as a result of this plugin (no-one's fault, just a result of adding another layer between the player and plugin where the plugin authors don't expect it). this could need constant maintenance and be a lot of work sad.gif you might have opened a real can 'o' worms. not to put a damper on things smile.gif
jarsonic
Kode -

Can you add an option where the plugin would be able to, say, disable OSD (to prevent flickering) through a checkbox in the config? That would be sweet smile.gif

- `jars
hartwork
QUOTE(Thikasabrik @ Feb 23 2004, 09:19 PM)
edit: also, the plugin binary you supply still seems to be kinda broken. It works once, but then it appears those window placement settings get screwed (removing ini data fixes it, temporarily).

shit, i'm stupid: i changed "%d" to "%i" instead of "%u"...
should work now if not write again smile.gif

same link as before: vis_miniskd_FIXED.zip.

thanx, thikasabrik!
Thikasabrik
Well, it isn't working I'm afraid, but it may be a isp caching issue with that download. What should the modification time on the dll be?

edit: forgot to mention, it doesn't work with the binary stamped at 23/02/2004 21:35
spase
seems to be cut off mid spectrum. (or maybe overly amplified).

If you set the foobar volume to -25.50 db it fits in the little part of the spectrum that isnt cut off, but it makes other vis things barely respond (incl. milkdrop).
hartwork
@thikasabrik
i really don't know where these big numbers come from...
i included a could-one-see-the-whole-window-check which should erase those big number. worst case should now be a forgotten position...

latest dll should be 22:24.
p0wder
QUOTE(Thikasabrik @ Feb 23 2004, 12:16 PM)
Latest version: Configure button doesn't work after plugin has run once (using winamp plugins dir, not \bacon\. But, on the bright side, the whitecap prefs bug is fixed.  tongue.gif

Confirmed, using \bacon directory. tongue.gif
bleh
I'm not going to have time to do everything I want to do before I try releasing another build (wait until next weekend, probably :|), but here are some notes for kode54 in case he does have time:

1) Clipping the data as it's converted from float to char works great with the sample data, but terribly with the spectrum data (I really don't know why it seemed to work earlier when it wasn't being clipped... maybe I just wasn't really testing it). Use a separate function for the two of them and try multiplying the spectrum data by something a lot lower (like 8 or something... I'm not quite sure how the spectrum data from foobar is calculated). Also, spectrum data is always positive.

2) AVS does NOT use undocumented API calls. If you search around the Winamp forums, you'll find an SDK for Winamp 5.02 that explains all of those calls.

@powder:
Have you tried going into the Milkdrop configuration menu, switching over to the, "more options," tab, and changing the delays there to something non-negative?


The reason the plugins aren't working after running once is that, because of the seeking issue, plugins don't get reloaded until you switch to a different one in the config dialog and restart the visualization. ...I'm sorry I don't have time to fix that right now sad.gif.
hartwork
@thikasabrik
hopefully last update to vis_miniskd_FIXED.zip:

the problem was GetWindowRect fails first time.
this fills the rect with strange values.
and if one does not move the window in runtime
this wrong number is also writting to the ini.

dll time is 23:44
RedSaint
You've done one heck of a job here.
Whenever i'm in fullscreen mode with my Milkdrop, and I use global keys to change song, it does something (a flush?), that makes Milkdrop drop back to winwed mode. I don't know if it's much to ask but is it possible to not go back to windowed mode while in full screen mode? Btw. it works fine if I go to the end of a song, go to full screen and let it automatically change to next song, be it random, default or whatevah. But nice job, keep it going.
bleh
Yeah, the plugin gets flushed whenever you manually change a song. Until the timer thing that's been talked about is implemented, you'll have to work around this by configuring Milkdrop to default to whichever setting you prefer so it will start back up in fullscreen/windowed/desktop mode after the flush.
kode54
Uploaded minus0.7. [binary] [source]

QUOTE(bleh @ Feb 23 2004, 01:43 PM)
1)  Clipping the data as it's converted from float to char works great with the sample data, but terribly with the spectrum data (I really don't know why it seemed to work earlier when it wasn't being clipped... maybe I just wasn't really testing it).  Use a separate function for the two of them and try multiplying the spectrum data by something a lot lower (like 8 or something... I'm not quite sure how the spectrum data from foobar is calculated).  Also, spectrum data is always positive.

I borrowed some maths from foo_vis_test, it should look better now. Of course, it could use some proper interpolation... Maybe later.

QUOTE
2)  AVS does NOT use undocumented API calls.  If you search around the Winamp forums, you'll find an SDK for Winamp 5.02 that explains all of those calls.

You're right. It doesn't use undocumented API calls. It used IPC_GETINIFILE, which I was able to wrap... Of course, it also uses not-fully-documented complicated API calls. Namely, crap for it to stick its dialog into a window provided by the host application.

Maybe the impatient can dig around for a version of AVS which predates this annoying skinning feature.

QUOTE
The reason the plugins aren't working after running once is that, because of the seeking issue, plugins don't get reloaded until you switch to a different one in the config dialog and restart the visualization.  ...I'm sorry I don't have time to fix that right now sad.gif.

I may fix this later, along with wrapping the file navigation messages so, for example, zxcvb work in Milkdrop. It looks like the latter will be easier, though.

BAH. There still appear to be issues when loading configuration while a visualization is open. Pain in the ass...
sdbarker
http://www.redrubberball.net/tmp/vis.h

Thanks, guys! If you can't do this, just let me know, and I'll just update my build.

-Scott
bleh
Heh, it's kind of funny that your header version changed as the file is identical to the version 0x101 vis.h. Just out of curiosity, did you edit the VIS_HDRVER #define yourself? You're not supposed to... though I guess it's possible that Nullsoft could have changed the version for no reason (sorry if I'm out of line with that question).

Depending on why the value is different, a build to allow it to work shouldn't be too hard, but I haven't been able to get any of kode54's recent source releases to compile with Visual Studio .NET 2003. It flags cfg_basepath.reset() in config.cpp and says reset is not a member of cfg_string.
p0wder
QUOTE(bleh @ Feb 23 2004, 01:43 PM)
@powder:
Have you tried going into the Milkdrop configuration menu, switching over to the, "more options," tab, and changing the delays there to something non-negative?

Have some interesting report for you.

If "Time between random song title anims" is set to a positive number:

The title keeps displaying itself over and over again.

If "Time between random song title anims" is set to a negative number,
AND "Time between random custom messages" is set to a positive number:

Foobar2000 crashes.
nIRV
for the avs thing, any avs under 2.9 will work (not so sure but I think so) because they introduced the generic windows skinning apis in 2.9 (or 2.89 dunno)
Canar
*patiently waits for someone to add AVS support*

Great work, guys! smile.gif

My two gripes:

1. The spectrum information still clips (try vis_nsfs.dll in spectrum/oscilloscope mode for better evidence). A quick fix would be to "sigmoidally" adjust it something like this: X' = atan(X)*2/PI. It's atan, so that shouldn't be too computationally expensive.
2. Now people won't care to make foobar2000 native visualizations because they can just use Winamp's crufty old API.

Other than that, works great. After AVS is supported, Winamp is gone. Then I shall be ruled by the mighty duo of Media Player Classic and foobar2000. All hail our new media-playing overlords!
sdbarker
QUOTE(bleh @ Feb 23 2004, 04:44 PM)
Heh, it's kind of funny that your header version changed as the file is identical to the version 0x101 vis.h.  Just out of curiosity, did you edit the VIS_HDRVER #define yourself?  You're not supposed to... though I guess it's possible that Nullsoft could have changed the version for no reason (sorry if I'm out of line with that question).

Depending on why the value is different, a build to allow it to work shouldn't be too hard, but I haven't been able to get any of kode54's recent source releases to compile with Visual Studio .NET 2003.  It flags cfg_basepath.reset() in config.cpp and says reset is not a member of cfg_string.

Nope, I didn't change it myself.

-Scott
spase
An option to disable screensaver would be good, although it probably belongs in the main visualization controls.
bleh
QUOTE(p0wder)
If "Time between random song title anims" is set to a positive number:

The title keeps displaying itself over and over again.

Yes, that's what the random song title animations are for: they display the title of the song over and over again every so often.

QUOTE(p0wder)
If "Time between random song title anims" is set to a negative number,
AND "Time between random custom messages" is set to a positive number:

Foobar2000 crashes.

The only way I was able to reproduce this was caused by very poor error handling in Milkdrop. If Milkdrop is unable to find a properly formatted milk_msg.ini in the same directory as vis_milk.dll, it dies if you make the time between random custom messages positive. To get around this, either copy milk_msg.ini from wherever you got vis_milk.dll or use the configuration option kode54 added to point foo_vis_bacon to the directory where all of this stuff came from (probably your Winamp plugins dir). In fact, I'd like to recommend that everyone who plans on keeping Winamp installed just point foo_vis_bacon at their Winamp plugins dir because it eliminates any problems with not having all of the proper files copied into the bacon or ham or whatever dir.


QUOTE(sdbarker)
Nope, I didn't change it myself.

Okay, then either I or kode54 (whoever gets the next build out... probably kode54 :/ ) could set it to allow plugins with your header version, since like I said, the file is completely identical aside from that #define.


QUOTE(Canar)
*patiently waits for someone to add AVS support*

I'm close to getting it working in a hack-ish sort of way... "sort of... maybe... no". Was AVS always this slow? After seeing how it was looking in foobar, I opened up Winamp just to see and was amazed at how sluggish everything looked.


QUOTE(Canar)
1. The spectrum information still clips (try vis_nsfs.dll in spectrum/oscilloscope mode for better evidence). A quick fix would be to "sigmoidally" adjust it something like this: X' = atan(X)*2/PI. It's atan, so that shouldn't be too computationally expensive.

Hmm... :/. Part of the problem with this is that I don't actually know how foobar2000 calculates the spectrum data... kode54 might, but I'm not sure. Maybe I should try a forum search sometime :/.

QUOTE(Canar)
2. Now people won't care to make foobar2000 native visualizations because they can just use Winamp's crufty old API.

Well, they really weren't before this, either. There were a few, but development of foobar visualizations just wasn't catching on. That's part of why I made this... that and it seemed like a really good way to waste spare time (back when I had it. I'm gonna go do my economics homework now...).
kode54
AVS v2.5.1, which is bundled with Winamp v2.81, works fine, sort of. In fact, it appears to work with the presets bundled with Winamp 5.

It does appear to have a problem with opening the configuration while it is running. Perhaps it would simply be better for plug-in configuration to be frozen while the visualization is running.
bleh
boo. I've gotten AVS from Winamp 5 to work; will post a build sometime tonight when I've had a chance to test it further, probably sometime after 11:00 or 12:00 (kinda busy).
kode54
Nice job. :B It's probably just as well, that way you can host it in a standard window, and the newer version might have some other improvements as well. Maybe we should set up a Sourceforge account or something. Heheheh.
mig
Before you upload that new build, could you add an option to keep the plug-in window on top?... somewhere in the config window maybe?... also a hotkey for it would be appreciated....
p0wder
That's strange I just did a fresh install of Winamp 5.02 to get Milkdrop 1.04b and there is no milk_msg.ini in the Plugins directory!

Can I please borrow someone else's if it's not too much trouble? biggrin.gif

Edit: Also, I noticed that when I have Milkdrop running in a window, if I hover my mouse over the start menu or something similar on the task bar, Milkdrop slows down a lot. But no big deal. tongue.gif
kode54
QUOTE(p0wder @ Feb 24 2004, 06:33 PM)
Can I please borrow someone else's if it's not too much trouble? biggrin.gif

I don't have that file either. How convenient of them to not include it, and assume in the documentation that you already have it. (Documentation says directions for editing it are in comments in the original file. How smart.)

Oh well, I guess you'll have to live without random messages for a while...

QUOTE
Edit:  Also, I noticed that when I have Milkdrop running in a window, if I hover my mouse over the start menu or something similar on the task bar, Milkdrop slows down a lot.  But no big deal. tongue.gif

Can't reproduce. Have you checked the actual frame rate? Also, what are your system specs? (Processor, main board chipset, video card, sound card... Hmm, maybe driver versions while you're at it... Just curiosity, I can't think of any other reason for wanting to know this. :B)
p0wder
QUOTE(kode54 @ Feb 24 2004, 07:43 PM)
Can't reproduce. Have you checked the actual frame rate? Also, what are your system specs? (Processor, main board chipset, video card, sound card... Hmm, maybe driver versions while you're at it... Just curiosity, I can't think of any other reason for wanting to know this. :B)

I just tested it again to check framerates, and found the problem kicks in only when the tooltip appears. Any tooltip that appears causes the framerate to slow to ~10 fps. When the tooltip disappears the framerate jumps back up (I capped it at 60 fps).

Here are my specs:

P4C
Abit IC7 875P/ICH5R chipset
Radeon 9800 Pro, Omega Catalyst 4.2
Creative Labs Audigy 2, latest EAX 4.0 drivers

If I am the only one experiencing this I'll try rolling back my video drivers.
bleh
This going to be an extremely buggy release, hence "minus 0.5 alpha." I'm sorry. I'm just way too tired to figure out why Milkdrop occasionally barfs up an error message when returning from fullscreen or even something simple like how to get Windows to calculate the amoun of space taken up by the title bar and window borders for you (which is an issue).

Binary
Source

Current issue list:
- AVS windows (or any embeds) are technically too small because of the title bar issues I mentioned earlier.
- AVS version 2.6.0 will not work properly because I just noticed that it doesn't and I'm too tired to figure out how the games it plays differ from those of version 2.81b or whatever it is that came with Winamp 5.
- You cannot configure any plugins while visualization is running. This is technically a feature.
- In addition to the above, if you open the foobar config window while visualization is running, then stop visualization, you need to select a different plugin, then select the original one to configure it.
- The Reset button for the path in the config dialog will not work in the binary. Why? The line that makes that work wouldn't compile for me in Visual Studio .NET 2003 (reset is not a member of cfg_string), so I commented it out :|.

New features:
- AVS version 2.81b works... kind of.
- A one-second timer has been implemented on flush like in foo_vis_simple_spectrum. This means that if you stop playback, the window will hang open for a second, but if you change songs or seek or something and the operation takes less than a second, the visualization won't get shut down and then restarted.
- Visualizations with a header version of 0x030 are now allowed so Startle works.

Yeah I'm gonna go get some sleep now and hopefully have a less crappy release than this out tomorrow >_<.

@p0wder:
I've had tooltip issues with so many different programs that I'm not sure how much can be done with it (nVidia geforce 2 Ultra, Pentium III).
btw http://potatoriffic.f2g.net/milk_img.ini http://potatoriffic.f2g.net/milk_msg.ini

@mig:
That's really up to the Winamp plugins to implement since they create the actual visualization window... I'm not sure if it's even possible or not.
Canar
AVS works! Yay! wub.gif w00t.gif blush.gif

Dear me... this is too cool.

It all works pretty well here. Thanks for all the work!
p0wder
QUOTE(bleh @ Feb 24 2004, 09:10 PM)
@p0wder:
I've had tooltip issues with so many different programs that I'm not sure how much can be done with it (nVidia geforce 2 Ultra, Pentium III).

Yea I'm not gonna worry about it too much, I usually have it in full screen anyway. Thanks for the file custom text now working. smile.gif

AVS a bit buggy but working!
kode54
Uploaded minus0.4 alpha. w00t. [binary] [source]

QUOTE(bleh @ Feb 24 2004, 09:10 PM)
I'm just way too tired to figure out why Milkdrop occasionally barfs up an error message when returning from fullscreen or even something simple like how to get Windows to calculate the amoun of space taken up by the title bar and window borders for you (which is an issue).

You probably would have thought of GetClientRect if you got some sleep. :B

QUOTE
- AVS windows (or any embeds) are technically too small because of the title bar issues I mentioned earlier.

Fixed.

QUOTE
- The Reset button for the path in the config dialog will not work in the binary.  Why?  The line that makes that work wouldn't compile for me in Visual Studio .NET 2003 (reset is not a member of cfg_string), so I commented it out :|.

Oops, my SDK is old. 0.8 beta 3... I'll fix it and repost...

QUOTE
Yeah I'm gonna go get some sleep now and hopefully have a less crappy release than this out tomorrow >_<.

Enjoy your much deserved break. You do have a life, after all. :B

QUOTE
I've had tooltip issues with so many different programs that I'm not sure how much can be done with it (nVidia geforce 2 Ultra, Pentium III).

Strangely, I do not have this tool tip problem with my Geforce 2 GTS-V. Maybe it's because I've decided not to use the ForceWare drivers... (That stuff's for FX users anyway.)

Anyway, I also dealt with the warning from Milkdrop and possibly others when they switch to/from fullscreen mode, as well as the embedded plug-in window not getting input focus.
p0wder
Wow development sure is progressing rapidly. smile.gif
sld
I have a slight problem with the plugin so far...

I started using one of the earlier versions, which defaulted to <program directory>\Foobar2000\bacon. Then when the option to change the vis directory was added, I used the default <program directory>\Winamp\plugins. However, the vis plugin I currently use, Milkdrop 1.40b, cannot be used anymore, with the error message "Couldn't load DLL". Besides a simple switching of the plugin directory in foo_vis_bacon's config page, what else must I do?
kode54
Reselect it from the list. That failing, select another first. Meh.
Thikasabrik
I think there are some priority issues. You see, at the moment I'm using a lowly celeron 500 mhz system cool.gif (I don't really need much more at the moment) and I'm noticing that the spectrum data etc hangs every now and then under conditions of reasonably high cpu usage by a vis plugin. This is especially noticeable in the initial mode of whitecap, where the line that traces the green mesh stays in the same position for periods of up to a second or so. Foobar's built-in vis also freezes at the same time.

I expect this is unavoidable, and I will just have to use the tbird 1000 for vis, but I thought I'd mention it incase it can be fixed, and incase you all have pc's too speedy to notice. wink.gif
Smiff
um something seems broken - milkdrop appears in corner of window, keys don't work, etc.

edit: milkdrop only takes up the top left quarter of its window - isn't anyone else seeing this? it broke between -0.8 and -0.5 i think. i don't have the older versions to check, sorry.
RedSaint
I guess this is one situation I have never experienced before - Seems funny enough for me, but it kinda sucks for the ones having problems. Ehm, question is, where to turn to get support for the vis plugin since it is ported through a foo plugin. kode54, bleh and hartwork are only developing the foo plugin, but so far the help on the vis plugins have been very good and useful. Uhm, good work, keep it up.
Thikasabrik
Regarding my last post, I have now discovered that the cpu usage issues seem to be due to either of foo_looks or foo_tunes. I tried both. The interesting thing is that neither were active when the problems were apparent, and yet deleting them removed the problems. Maybe I'll try and find out which plugin it was later.
anza
Yes, using foo_looks (even unactivated) indeed slows the framerate down a bit (makes about 20-40fps difference while it's not installed).
kode54
Updated to 0.8 SDK, including the path reset in the source code... Downloading is optional.
hartwork
minus0399 - sleep-issue fixed: bacon_0399.zip

i'll try to optimze dataprocessing/interpolation in on_data, okay?
Skates
Bug in the latest version kode54 has up for download, check it out here...

user posted image

For some reason some of the vis doesn't show up!

Forgot to say thats running the latest Milkdrop, and only seems to happen with that as GForce works without any problems...
ilikedirtthe2nd
disable "integrate with winamp" in windowed settings.

regards; ilikedirt
hartwork
is spectrum_size fixed to [256]?
bleh
@hartwork: I've never seen it anything else, but I think it would be a very bad idea to assume that it is. Thanks for working on interpolation, though. It'd be really nice to have.

Version minus0.39 alpha
Binary
Source

- Basically only one change here: a new hack to make Milkdrop 1.04 (the latest version available from the Milkdrop site, not the real latest version, which is 1.04b and may not be available without Winamp 5) and AVS 2.6.0 work properly when they try to embed themselves (should fix issues with Milkdrop only showing up in the corner of the window). Yay deficiencies in the Winamp 2.9 SDK.
kode54
OI. I'm having trouble keeping up with you two now. :B

Uploaded minus0.389 alpha. [binary] [source]

I added a DLL manager, so there should no longer be any problems with concurrent loads/unloads.

Configuration no longer keeps the current module resident, and as a result, there should no longer be any problems with using configuration after closing the visualization with the preferences page open. Also, there was a DLL handle leak in both the DLL selector and the WM_DESTROY handler, which were corrected by this change.

Oh yes, and after I merged in hartwork's changes, I crafted my own linear interpolation. Sorry to beat you to job, but maybe you can take a look at my code and improve it. (Or, redo it in a better or more efficient way. :B)

Speaking of hartwork's changes ... What's with that slightly overkill timer code? It seems to increase CPU usage with visualizations such as Startle, which used 0-2% before and now uses 4-6%. Milkdrop has a delayMs value of 0 at startup, but I'm not sure if it changes that dynamically, or just does its own frame regulation.

If we knew that delayMs would be constant, and at least 10ms, it might be better to use a timer event attached to the host window. (Well, 10ms minimum is supposedly only an issue for Windows 2000/XP, but still...)
Smiff
QUOTE(bleh @ Feb 25 2004, 10:20 AM)
(should fix issues with Milkdrop only showing up in the corner of the window).

it did. well done smile.gif
Skates
QUOTE
(should fix issues with Milkdrop only showing up in the corner of the window).


Definitely fixed thanks...
kode54
Yanno... That dll manager is probably totally unnecessary... LoadLibrary of same dll in same location from same module probably always returns the same handle for the duration of the instance, until it is freed. Of course, I don't know this. The manager class is probably tidier, in cases of overlapped load/free when config is fetching info...

Eh, whatever. :B
PoisonDan
It's funny: on my system, Milkdrop runs better on foobar2000/foo_vis_bacon than on Winamp.

I have an Audiophile 2496, and the playback always stuttered in Winamp whenever Milkdrop was running fullscreen. I experimented a bit with different ouput plugins (DirectSound, ASIO) and different priority settings, but I never got 100% perfect playback.

Now, thanks to foo_vis_bacon, it runs perfectly "out of the box".

Excellent work, guys. You made my day. smile.gif
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2008 Invision Power Services, Inc.