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: Winamp-VIS-plugs in foobar (Read 168912 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Winamp-VIS-plugs in foobar

Reply #75
I touched it up a bit. Here's the binary and the source.

@bleh: It may or may not be a good idea to have that synchronization around the sample/spectrum update/copy code. Also, I don't know if visualization updates always receive an uninterrupted stream of samples, or if they may have gaps, so feel free to move the sample synchronization out of the sample pushing loop. :B

Hmm... Maybe it would be better to just synchronize around the whole block, otherwise the vis thread might get non-matching sample/spectrum data. Oh well, whatever.

Winamp-VIS-plugs in foobar

Reply #76
Quote
I touched it up a bit.

Wow kode, 97kb smaller thx.

I also get the little secondary demi_window coming out of fullscreen everytime with bleh's second build and kode's build.

Winamp-VIS-plugs in foobar

Reply #77
For some reason, the vis plugin that I wrote doesn't show up in the bacon list, but works fine in Winamp.  Ideas?

-Scott

Winamp-VIS-plugs in foobar

Reply #78
I have updated the binary and the source again.
  • The host window's title reflects the current track, and is updated whenever the song changes.
  • Host window tries to keep itself hidden now.
  • FreeLibrary calls are also checked and synchronized, so the visualization won't unload if the same library is currently in use by the configuration, and vice versa.


Quote
For some reason, the vis plugin that I wrote doesn't show up in the bacon list, but works fine in Winamp.  Ideas?

-Scott


It uses a different visualization SDK version. If you post your VIS.H, bleh or I will try to add support for it.

Winamp-VIS-plugs in foobar

Reply #79

Winamp-VIS-plugs in foobar

Reply #80
kode54 IS God lol. no seriously.

edit: i should put something useful here. ok, maybe it can just be made easier to set up for newbiews, a bit of an installer type thing.. perhaps find milkdrop & copy from winamp folder? get permission to install milkdrop?

Winamp-VIS-plugs in foobar

Reply #81
Hm, this project is still an emulator for winamp vis plugins right? If so, shouldn't other plugins than Milkdrop be tested?
Currently i'm at work, so there may be parts left out in this description. I tried the other default plugin for winamp in bacon, and as much as I tried to set new settings it wouldn't remember 'em. The plugin was called Voice Print something something. If you could investigate this, it might help the emulation of other plugins.
Again I'd like to say that this is a great project, especially since it'll help many ppl convert to a better way of playing music. At least I think foobar is more efficient than Winamp --
"foolish humans, no matter how you try to cover the sky with your hands - is the sky truly smaller than your grasp?" - Gran Kain

Winamp-VIS-plugs in foobar

Reply #82
Awesome work by both kode54 and bleh, keep it up! The visualization definitely seems way more responsive now!

All that is needed now is, some type of configuration on where the plug-ins are located....

Winamp-VIS-plugs in foobar

Reply #83
try to load avs (coming from a wa2.9 or + version) ... you will get an msgbox error and the plugin will fail to load because it doesnt find wa ... thats find for me since I think this version of avs uses some generic window skinning api blabla

but the msgbox keeps popping out again (I think it maybe due to the way foobar handles visualisation). A tweak to stop this msgbox flooding would be nice for any basic user wanting to migrate ...

also it would be nice to find a tweak so the visualisation window wouldnt close and open when the outputed stream restarts or stop ... I know this depends on the way vis is handled within the fb2k core too... dunno I guess you either a) find a good solution or b) ask Peter to change its code .... a nice generalVisStartup(...) coupled with a streamOpenNotification and streamStopNoficiation instead of init and kill everytime a stream start and stop would be better imo (anyway I'm sure Peter wants to have feedbacks from the fiew vis (or vis wrapper) programmers out there)

nice work though, filling another small hole of fb2k
nIRV

Winamp-VIS-plugs in foobar

Reply #84
Could you make the directory where the plugin searches vis plugins user definable like in foo_looks?

Winamp-VIS-plugs in foobar

Reply #85
Thanks, kode54.  Nice to have someone more experienced working on this.

@nIRV:
Yes, the AVS thing not stopping is a bug.  I noticed it yesterday and had it fixed, but then didn't bother posting the fixed build for some reason.  AVS still won't work, but it'll only let you know once then.  As for the window closing and opening, ssamadhi97 posted a possible solution to that earlier that I haven't yet gotten to looking into... the weekend's over so I'm going to be busier, but I'd like to get rid of the repeated window recloses, too, if possible.


@anza & Skates:
I was planning on doing this at some point, but I haven't gotten around to it.  It should be done soon-ish.


@RedSaint:
I've tested a few other plugins and all of them work fine except for AVS.  Milkdrop keeps coming up because it's the one people use the most .


@Gnerma:
kode's build is so much smaller because I'm using Visual Studio .NET 2003 and I'm statically linking the C runtime library into the DLL instead of handing out MSVCR71.DLL to everyone... though maybe I should be doing that :/.

Winamp-VIS-plugs in foobar

Reply #86
Updated again, links for simplicity. [binary] [source]

Quote
try to load avs (coming from a wa2.9 or + version) ... you will get an msgbox error and the plugin will fail to load because it doesnt find wa ... thats find for me since I think this version of avs uses some generic window skinning api blabla

It seems AVS expects IPC_GETVERSION message to return 0x2900 or greater. I changed this to 0x2950, and then 0x2900, but it fails to create its main window. It appears to need three undocumented API messages.

Quote
but the msgbox keeps popping out again (I think it maybe due to the way foobar handles visualisation). A tweak to stop this msgbox flooding would be nice for any basic user wanting to migrate ...

Corrected. Now it will shut down if it failed to initialize the visualization module.

Quote
also it would be nice to find a tweak so the visualisation window wouldnt close and open when the outputed stream restarts or stop ... I know this depends on the way vis is handled within the fb2k core too... dunno I guess you either a) find a good solution or b) ask Peter to change its code .... a nice generalVisStartup(...) coupled with a streamOpenNotification and streamStopNoficiation instead of init and kill everytime a stream start and stop would be better imo (anyway I'm sure Peter wants to have feedbacks from the fiew vis (or vis wrapper) programmers out there)

Simple spectrum already does this. I may do this next, unless bleh beats me to it. :B

Quote
Could you make the directory where the plugin searches vis plugins user definable like in foo_looks?

Done.

Winamp-VIS-plugs in foobar

Reply #87
kode54, your build gives me "ERROR (foo_vis_bacon) : Unable to start thread, error 22". i'm running win98se.

Winamp-VIS-plugs in foobar

Reply #88
Gah, I just got done going over the changes you made in your last zip file.

I'm not going to be getting much done on this in the next few days because I have to do all the homework I put off from doing this over the weekend.  Hooray for 17-credit schedules.

Winamp-VIS-plugs in foobar

Reply #89
Updated again. minus0.9 for all. [binary] [source]

Changed to use CreateThread instead of _beginthreadex. That's not the problem... More likely, it was the fact that the thread ID pointer parameter was NULL. NT is OK with that, but 9x is not.

Anyway... Thank you, bleh, for having the patience to do what I and so many others could not.

Winamp-VIS-plugs in foobar

Reply #90
Since 0.9, the "acidspunk" vis doesn't work anymore with baconwrap! All the previous versions of this amazing plug-in showed the acidspunk vis but now it is gone in the baconwrap options, very strange...  Any ideas? 

Edit: Ahhh! I found the solution myself! It seems that since 0.9 the plug-in .dlls must have the prefix "vis_..." or they're not loaded    Renaming "acidspunk2.dll" to "vis_acidspunk2.dll" worked.

Again thanks for that funky plug! 
"We like to do 2% jazz and 98% funky stuff." [Maceo Parker]

Winamp-VIS-plugs in foobar

Reply #91
sir Kode, I dub thee "plugin snatcher*" for merciless taking over (and improvement of) other people's plugins 

*plugin stealer? taker-over-er? anyone got a better name?

I'll have to go try some more winamp plugins, it's been so long since i've used any. I once (many years ago hehe) put Geiss on the ceiling at a school dance  'twas kewl. Geiss2 (which i didn't know existed) works with bacon btw. this is all very cool.

there seems to be some oddity changing plugins - even when i changed from milkdrop to geiss it wanted to keep starting milk for a while - ? i think pressing save all on the config fixed it.

stutter reminds me, any chance of a priority option, or is that a silly idea?

Winamp-VIS-plugs in foobar

Reply #92
Whitecap works. Except... foobar crashes if you visit the bacon prefs page while it's going.

Code: [Select]
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 031A3B97h
Access violation, operation: read, address: 534B0001h
Call path:

This is the first crash logged by this instance.
Code bytes (031A3B97h):
031A3B57h:  00 EB D6 90 90 90 90 90 90 C7 41 08 00 00 00 00
031A3B67h:  83 EC 04 8B 44 24 08 89 04 24 E8 3A FE FF FF C2
031A3B77h:  04 00 90 90 90 90 90 90 90 8B 54 24 04 C7 41 08
031A3B87h:  00 00 00 00 83 79 04 00 75 1F 31 C0 85 D2 74 30
031A3B97h:  80 3A 00 74 1C 8D 44 20 00 40 80 3C 02 00 75 F9
031A3BA7h:  EB 0F 8D 84 20 00 00 00 00 8B 41 0C C6 00 00 EB
031A3BB7h:  D9 83 EC 08 89 44 24 04 89 14 24 E8 D9 FC FF FF
031A3BC7h:  C2 04 00 90 90 90 90 90 90 53 55 89 CD 8B 5C 24
Stack (039AFEE8h):
039AFEC8h:  E2B2C5A0 E2BA6598 00000000 F59EDD64
039AFED8h:  BF875579 BC681800 00000246 804FB007
039AFEE8h:  031C8308 534B0001 031D6180 00000000
039AFEF8h:  00000000 031D6108 031D6180 00000000
039AFF08h:  00000000 031D6108 031D6180 00000000
039AFF18h:  00000000 031D6108 031D7B40 031C8531
039AFF28h:  00000263 039AFFB4 00CE6674 00000240
039AFF38h:  00000000 00CE270B 031D7B40 0012F67C
039AFF48h:  0000004E 00000000 00000000 00CE2773
039AFF58h:  00000000 00000000 00CE0000 00000000
039AFF68h:  00000000 00000000 00000000 00CE51A4
039AFF78h:  00040290 0000000F 00000000 00000000
039AFF88h:  000BA334 000002A5 000000BE 00CE5128
039AFF98h:  02FAFD38 00000031 00000031 00000000
039AFFA8h:  00000020 0089B800 00F5BFF4 039AFFEC
039AFFB8h:  77E7D33B 00000000 0012F67C 0000004E
039AFFC8h:  00000000 C0000005 7FFDA000 039AFFC0
039AFFD8h:  039AFB10 FFFFFFFF 77E94809 77E83DB8
039AFFE8h:  00000000 00000000 00000000 00CE2491
039AFFF8h:  00000000 00000000 00000000 00000000
Registers:
EAX: 00000000, EBX: 031D7B40, ECX: 039AFEF0, EDX: 534B0001
ESI: 000BA999, EDI: 000BA999, EBP: 000BA92A, ESP: 039AFEE8
Crash location: "VIS_WhiteCap", loaded at 031A0000h - 031E3000h

Loaded modules:
foobar2000                       loaded at 00400000h - 00451000h
ntdll                            loaded at 77F50000h - 77FF7000h
kernel32                         loaded at 77E60000h - 77F46000h
USER32                           loaded at 77D40000h - 77DCC000h
GDI32                            loaded at 77C70000h - 77CB0000h
ADVAPI32                         loaded at 77DD0000h - 77E5D000h
RPCRT4                           loaded at 78000000h - 78086000h
ole32                            loaded at 771B0000h - 772D1000h
COMCTL32                         loaded at 71950000h - 71A34000h
msvcrt                           loaded at 77C10000h - 77C63000h
SHLWAPI                          loaded at 70A70000h - 70AD5000h
utf8api                          loaded at 10000000h - 1000D000h
comdlg32                         loaded at 763B0000h - 763F5000h
SHELL32                          loaded at 773D0000h - 77BC2000h
foo_abx                          loaded at 008D0000h - 008DA000h
foo_ac3                          loaded at 008E0000h - 008F0000h
foo_ape                          loaded at 008F0000h - 0090F000h
foo_cdda                         loaded at 00910000h - 0091E000h
foo_clienc                       loaded at 00920000h - 00934000h
foo_console                      loaded at 00940000h - 00948000h
foo_diskwriter                   loaded at 00950000h - 0095E000h
foo_dsp_crossfeed                loaded at 00960000h - 00966000h
foo_dsp_extra                    loaded at 00970000h - 00985000h
foo_dynamics                     loaded at 00990000h - 00997000h
foo_faac                         loaded at 009A0000h - 009D3000h
foo_flac                         loaded at 009E0000h - 009F6000h
foo_flaccer                      loaded at 00A00000h - 00A16000h
foo_input_std                    loaded at 00A20000h - 00AB9000h
MSACM32                          loaded at 77BE0000h - 77BF4000h
WINMM                            loaded at 76B40000h - 76B6C000h
foo_masstag                      loaded at 00B40000h - 00B50000h
foo_matroska                     loaded at 00B50000h - 00B8F000h
MSVCP60                          loaded at 55900000h - 55961000h
foo_monkey                       loaded at 00B90000h - 00BAE000h
foo_mpeg4u                       loaded at 00BB0000h - 00BD9000h
foo_nez                          loaded at 00BE0000h - 00C0C000h
foo_output_std                   loaded at 00C10000h - 00C19000h
foo_out_dsound_ex                loaded at 00C20000h - 00C29000h
DSOUND                           loaded at 51080000h - 510D6000h
VERSION                          loaded at 77C00000h - 77C07000h
foo_out_ks                       loaded at 00C40000h - 00C4B000h
SETUPAPI                         loaded at 76670000h - 76757000h
foo_read_http                    loaded at 00C50000h - 00C59000h
WS2_32                           loaded at 71AB0000h - 71AC4000h
WS2HELP                          loaded at 71AA0000h - 71AA8000h
foo_rgscan                       loaded at 00C60000h - 00C6B000h
foo_shuffle                      loaded at 00C70000h - 00C7D000h
foo_speex                        loaded at 00C80000h - 00C98000h
foo_toolame                      loaded at 00CA0000h - 00CB3000h
foo_ui_std                       loaded at 00CC0000h - 00CD7000h
foo_vis_bacon                    loaded at 00CE0000h - 00CE9000h
foo_vis_bubbla                   loaded at 00CF0000h - 00D04000h
OPENGL32                         loaded at 5ED00000h - 5EDC6000h
GLU32                            loaded at 68B20000h - 68B3E000h
DDRAW                            loaded at 51000000h - 51047000h
DCIMAN32                         loaded at 73BC0000h - 73BC6000h
foo_vis_manager                  loaded at 02CE0000h - 02CE8000h
foo_vis_simple_spectrum          loaded at 02CF0000h - 02CFA000h
foo_vis_vu_meter                 loaded at 02D00000h - 02D08000h
foo_vorbisenc                    loaded at 02D10000h - 02E0A000h
foo_wavpack                      loaded at 02E10000h - 02E1B000h
foo_wma                          loaded at 02E20000h - 02E39000h
WMVCore                          loaded at 08530000h - 0872D000h
WMASF                            loaded at 07260000h - 07299000h
OLEAUT32                         loaded at 77120000h - 771AB000h
avgoerun                         loaded at 02F40000h - 02F4B000h
UxTheme                          loaded at 5AD70000h - 5ADA4000h
wdmaud                           loaded at 72D20000h - 72D29000h
msacm32                          loaded at 72D10000h - 72D18000h
midimap                          loaded at 77BD0000h - 77BD7000h
vis_geiss2                       loaded at 03510000h - 03569000h
DevIL                            loaded at 03C60000h - 03DD3000h
ILU                              loaded at 03DE0000h - 03DF3000h
WININET                          loaded at 63000000h - 63096000h
CRYPT32                          loaded at 762C0000h - 76348000h
MSASN1                           loaded at 762A0000h - 762B0000h
vis_milk                         loaded at 03EA0000h - 04088000h
d3d8                             loaded at 03670000h - 03793000h
d3d8thk                          loaded at 037A0000h - 037A6000h
VIS_WhiteCap                     loaded at 031A0000h - 031E3000h
imagehlp                         loaded at 76C90000h - 76CB2000h
DBGHELP                          loaded at 6D510000h - 6D58D000h

Stack dump analysis:
Address: 031C8308h, location: "VIS_WhiteCap", loaded at 031A0000h - 031E3000h
Symbol: "winampVisGetHeader" (+00000468h)
Address: 031D6180h, location: "VIS_WhiteCap", loaded at 031A0000h - 031E3000h
Address: 031D6180h, location: "VIS_WhiteCap", loaded at 031A0000h - 031E3000h
Address: 031D6180h, location: "VIS_WhiteCap", loaded at 031A0000h - 031E3000h
Address: 031D7B40h, location: "VIS_WhiteCap", loaded at 031A0000h - 031E3000h
Address: 031C8531h, location: "VIS_WhiteCap", loaded at 031A0000h - 031E3000h
Symbol: "winampVisGetHeader" (+00000691h)
Address: 00CE6674h, location: "foo_vis_bacon", loaded at 00CE0000h - 00CE9000h
Address: 00CE270Bh, location: "foo_vis_bacon", loaded at 00CE0000h - 00CE9000h
Address: 031D7B40h, location: "VIS_WhiteCap", loaded at 031A0000h - 031E3000h
Address: 00CE2773h, location: "foo_vis_bacon", loaded at 00CE0000h - 00CE9000h
Address: 00CE0000h, location: "foo_vis_bacon", loaded at 00CE0000h - 00CE9000h
Address: 00CE51A4h, location: "foo_vis_bacon", loaded at 00CE0000h - 00CE9000h
Address: 00CE5128h, location: "foo_vis_bacon", loaded at 00CE0000h - 00CE9000h
Address: 77E7D33Bh, location: "kernel32", loaded at 77E60000h - 77F46000h
Symbol: "RegisterWaitForInputIdle" (+00000043h)
Address: 77E94809h, location: "kernel32", loaded at 77E60000h - 77F46000h
Symbol: "SetThreadExecutionState" (+00000097h)
Address: 77E83DB8h, location: "kernel32", loaded at 77E60000h - 77F46000h
Symbol: "OpenConsoleW" (+00001966h)
Address: 00CE2491h, location: "foo_vis_bacon", loaded at 00CE0000h - 00CE9000h

Version info:
foobar2000 v0.8 beta 10
UNICODE

Winamp-VIS-plugs in foobar

Reply #93
Quote
Could you make the directory where the plugin searches vis plugins user definable like in foo_looks?


Can someone confirm that this works? The bacon plugin will find Milkdrop, but milkdrop won't start...

I've tried several directories:

./components/Winamp Plugins
./components/bacon
./Winamp Plugins
./WinampPlugins

none of em worked except for:
./bacon

Maybe i just need a clean install...

Winamp-VIS-plugs in foobar

Reply #94
Uploaded minus0.8. [binary] [source]

Whitecap running + config problem should be fixed, as well as any other possible conflicts from opening configuration while vis is running. I hope.

It will also default to Winamp Plugins directory, if it's installed.

Also, that vis_*.dll change in minus0.9 was because I discovered an annoying delay the first time I loaded the configuration when it was pointed at a fully-laden Winamp plugins directory. Maybe I should make this configurable.

Winamp-VIS-plugs in foobar

Reply #95
Very nice work Bleh and Kode54.  The only problem I have is custom text does not work when I press "Y".

Winamp-VIS-plugs in foobar

Reply #96
No matter what directory I change the Bacon vis dir to, foo_vis_bacon always seems to want vis_milk.dll to be in ./foobar2000/bacon/ (along with its Milkdrop dir).

To replicate:
Delete ./foobar2000/bacon and install Milkdrop somewhere else like ./foobar2000/Winamp Plugins.  Then change the vis directory to where you installed it. See if Milkdrop works...

Winamp-VIS-plugs in foobar

Reply #97
the spectrum data sent by bacon is kinda strange (see screenshot).

the plugin used on the screenshot is my fixed version of nullsoft's vis_minisdk.
(original version wrote negative window positions to the ini...)
source and binary can be downloaded HERE.


Winamp-VIS-plugs in foobar

Reply #98
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. 

Winamp-VIS-plugs in foobar

Reply #99
@hartwork

This fits the slightly strange looking behaviour of whitecap - I thought I must be imagining things, but the spectrum seemed to sink where it should rise.

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

edit2: and the spectrum just looks magnified in fb2k to me.