Winamp "Center Cut" DSP Plugin released |
![]() ![]() |
Winamp "Center Cut" DSP Plugin released |
Jan 12 2004, 07:13
Post
#1
|
|
![]() Group: Members Posts: 193 Joined: 5-June 02 From: Virginia Beach, VA Member No.: 2227 |
dsp_centercut is Winamp plugin that separates stereo audio into side and center channels. It's based on the "center cut" filter from VirtualDub. The algorithm's author, Avery Lee, describes it as follows:
QUOTE The classic "vocal cut" filter, except that the output is stereo instead of mono. This is accomplished through FFT phase analysis; the output will have some warbling in it, but stereo separation is preserved. Download: dsp_centercut.zip (Binary and Source) - To use it, copy dsp_centercut.dll into your Winamp\Plugins directory and restart Winamp. Then go into Winamp's Preferences (CTRL+P) in the DSP/Effect Plug-ins section. Select "Center Cut v1.4.0" in the list, and you will see these options in the drop-down list below:
1.4.0 (2007-Jul-19)
Enjoy This post has been edited by Moitah: Jul 19 2007, 18:42 |
|
|
|
Jan 12 2004, 14:33
Post
#2
|
|
![]() Group: Developer Posts: 359 Joined: 29-October 02 Member No.: 3652 |
Very intersting...I might create a foobar2000 DSP based on this
|
|
|
|
Jan 12 2004, 19:23
Post
#3
|
|
![]() Group: Members Posts: 489 Joined: 13-June 02 Member No.: 2290 |
QUOTE (Chun-Yu @ Jan 12 2004, 06:33 AM) Very intersting...I might create a foobar2000 DSP based on this OMG, we need a vocal remover of some kind for Foobar2000. Please go ahead and make it. It would be very much appreciated. |
|
|
|
Jan 12 2004, 19:28
Post
#4
|
|
![]() Group: Members Posts: 193 Joined: 5-June 02 From: Virginia Beach, VA Member No.: 2227 |
I just discovered a bug that can cause this plugin to crash when switching between the options in the dropdown list. I think I've found the problem and will try to fix it tonight.
|
|
|
|
Jan 12 2004, 19:42
Post
#5
|
|
![]() Group: Members Posts: 489 Joined: 13-June 02 Member No.: 2290 |
This is BY FAR the most effective plugin with a vocal remover that I have ever used. Thanks for releasing this. We really need a Foobar2000 port for this though. I dunno if Moitah or Chun-Yu will do it, but either way, if one of you guys does a nice stable Foobar2000 version of this, a lot of people here on the forum are going to love you.
|
|
|
|
Jan 12 2004, 20:06
Post
#6
|
|
![]() Group: Members Posts: 193 Joined: 5-June 02 From: Virginia Beach, VA Member No.: 2227 |
I wouldn't say its very effective as a 'vocal remover', but it depends on the song obviously. I use it because I think it sounds cool and sometimes you can hear stuff you've never noticed in the song.
|
|
|
|
Jan 12 2004, 21:37
Post
#7
|
|
![]() Group: Developer Posts: 359 Joined: 29-October 02 Member No.: 3652 |
I'll do it later today, should be real simple.
|
|
|
|
Jan 12 2004, 21:51
Post
#8
|
|
![]() Group: Members Posts: 193 Joined: 5-June 02 From: Virginia Beach, VA Member No.: 2227 |
I'm having a hard time finding the problem. It doesn't help that I don't really know how to use the debugger
This post has been edited by Moitah: Jan 12 2004, 22:00 |
|
|
|
Jan 13 2004, 04:53
Post
#9
|
|
![]() Group: Members Posts: 193 Joined: 5-June 02 From: Virginia Beach, VA Member No.: 2227 |
Here's some more detailed information I have discovered after a lot of testing:
This other computer I tried it on is running Winamp 2.80. I copied the Winamp directory to my computer and ran it, and couldn't get the plugin to crash. So maybe it's only with newer versions of Winamp (I can get it to crash on 2.90, 2.95, and 5.0). Also, it seems like it's easiest to crash while playing FLAC and Monkey's Audio (I can get it to crash with MP3/Vorbis but it takes quite a bit longer). I'm not sure why this is, but keep this in mind if you are trying to reproduce the problem. Playing with the code, it appears that when the module type is changed in the dropdown list (switch between Side and Center... I don't think the Classic code crashes), the global variables are reset and the new module's "init" function is called WHILE the old module's "modifysamples" function is running. When the old module's "modifysamples" function resumes, the global variables are different than when it started and I think the memory it allocated has been freed (causing an access violation when the memory is written to). Any ideas? This post has been edited by Moitah: Jan 13 2004, 05:55 |
|
|
|
Jan 13 2004, 14:34
Post
#10
|
|
![]() Group: Developer Posts: 359 Joined: 29-October 02 Member No.: 3652 |
Update: I've got this working in foobar2000, but...as code for my experimental DSP plugin that runs C# code you enter :B A real version that doesn't require .NET should come soon. I'll probably release this C# component separately since it's kinda fun to use to experiment with an idea before implementing it as your own component.
|
|
|
|
Jan 16 2004, 14:10
Post
#11
|
|
![]() Group: Members Posts: 489 Joined: 13-June 02 Member No.: 2290 |
QUOTE (Chun-Yu @ Jan 13 2004, 06:34 AM) Update: I've got this working in foobar2000, but...as code for my experimental DSP plugin that runs C# code you enter :B A real version that doesn't require .NET should come soon. I'll probably release this C# component separately since it's kinda fun to use to experiment with an idea before implementing it as your own component. Nice, keep up the good work. Please make a thread for it on the Foobar forums when you are done. Looking very forward to this. |
|
|
|
Jan 16 2004, 14:20
Post
#12
|
|
![]() Group: Developer Posts: 359 Joined: 29-October 02 Member No.: 3652 |
|
|
|
|
Jan 20 2004, 03:43
Post
#13
|
|
![]() Group: Members Posts: 193 Joined: 5-June 02 From: Virginia Beach, VA Member No.: 2227 |
I finally found the problem
Chun-Yu: Good job on the foobar2000 plugin |
|
|
|
Jan 20 2004, 22:47
Post
#14
|
|
![]() Group: Banned Posts: 57 Joined: 26-March 03 Member No.: 5683 |
QUOTE (Chun-Yu @ Jan 12 2004, 05:33 AM) Very intersting...I might create a foobar2000 DSP based on this PLease do. Id be glad to have one for foobar2k |
|
|
|
Jan 20 2004, 23:15
Post
#15
|
|
![]() Group: Developer Posts: 359 Joined: 29-October 02 Member No.: 3652 |
|
|
|
|
Jan 21 2004, 17:52
Post
#16
|
|
![]() Group: Members Posts: 964 Joined: 29-December 01 Member No.: 830 |
Very interesting! After my humorously-flawed and tension-induced attempts to explain how something like this could be done, it's nice to learn that someone actually accomplished it! (... and to the few folks who congratulated me on the "Center Channel" that was causing my mental-aberrance, my wife's test proved otherwise. Phase-cancellation?
Just curious, but has anyone considered reworking this as a VST-based plugin? I don't know enough programming to do so myself, or I would have already tried it. - M. |
|
|
|
Mar 31 2004, 05:26
Post
#17
|
|
![]() Group: Members Posts: 193 Joined: 5-June 02 From: Virginia Beach, VA Member No.: 2227 |
Version 1.2.0 has been released, I've updated the first post.
|
|
|
|
Apr 1 2004, 05:32
Post
#18
|
|
|
Group: Members Posts: 3 Joined: 24-February 04 Member No.: 12227 |
Good work.
I have looked at the source and might have a go at a VST plugin. Only problem is I code in a real language (Pascal) (Of course, all in good fun If I get it up and running, I will add in my crosstalk cancel plugin before this one. Should make a lot of difference. And remove hopefully the echos from the removed vocals. Anyway again, good work. Don't Blame Me, I Only Work Here! -------------------- Don't Blame Me, I Only Work Here!
|
|
|
|
Apr 1 2004, 10:15
Post
#19
|
|
|
Group: Members Posts: 12 Joined: 7-January 04 Member No.: 11020 |
GREAT!
Know with larger FHT this become a very PRO plug-in! Good Work! Only one thing: I've tested it very deeply but sometimes I hear some strange "click" in the processed waves (both in realtime and in disk-streamed wav). It seems to me that sometimes exists some "gaps" between one buffer block and another because these little cracks are periodical (looking the wave I see some big level gap that of course produce cracks) and their occourrence vary with the size of the buffer: the larger the buffer, the longer are the time between one click and another. You can download a test wave I've produced using Winamp5 with the Disk-Write plugin on a stereo film soundtrack (the anime Boogiepop Phantom) using the center-cut (Side-Stereo) processing. Here'is the ORIGINAL and the PROCESSED wav files at 48KHz-16bit-Stereo. You can hear the cracks on the sonar-like sounds at the end of the file. This is the only problem I've found on this plugin that in my opinion sounds very very very good! |
|
|
|
Nov 13 2005, 07:29
Post
#20
|
|
|
Group: Members Posts: 1 Joined: 13-November 05 Member No.: 25733 |
Moitah, congratulations for your work! I was looking for some years for such an application, but you actually built it!
I got vers. 1.20. I don't know how much this helps you, but, I believe the reason of crashing Winamp when switching "Sides" to "Center" is some kind of de-synchronization. If you start Winamp in "center" mode, and then switch to "sides" mode, you'll note that music skips ahead with about a second. Maybe you should try to (somehow, I don't know), use the very same buffers for both of the two modes, "center" & "sides". I believe there's a change in buffer size Winamp doesn't like when going from "center" to "sides". It doesn't always crash, since this is sort of a source material dependant. Good luck! This post has been edited by clau23love: Nov 13 2005, 07:31 |
|
|
|
Nov 13 2005, 10:08
Post
#21
|
|
|
Group: Members Posts: 84 Joined: 16-January 05 Member No.: 19096 |
i just grabbed this too. great work Moitah!
(talk about bringing a thread back from the dead!) |
|
|
|
Nov 15 2005, 05:38
Post
#22
|
|
![]() Group: Members Posts: 193 Joined: 5-June 02 From: Virginia Beach, VA Member No.: 2227 |
QUOTE (clau23love @ Nov 13 2005, 02:29 AM) Moitah, congratulations for your work! I was looking for some years for such an application, but you actually built it! I got vers. 1.20. I don't know how much this helps you, but, I believe the reason of crashing Winamp when switching "Sides" to "Center" is some kind of de-synchronization. If you start Winamp in "center" mode, and then switch to "sides" mode, you'll note that music skips ahead with about a second. Maybe you should try to (somehow, I don't know), use the very same buffers for both of the two modes, "center" & "sides". I believe there's a change in buffer size Winamp doesn't like when going from "center" to "sides". It doesn't always crash, since this is sort of a source material dependant. Good luck! The crashing is because Winamp's threading is buggy (it unloads your plugin from one thread while ModifySamples is still running in another). There is a workaround in v1.2.0 which actually works pretty good but I guess not all the time. I mentioned it on the Winamp forums a while back in hope of getting it fixed, but I don't think they care The skipping is because Winamp unloads/reloads the plugin when you switch between options in the dropdown list, so the buffer is cleared. I could fix this by only having one option there, and switching between side/center in a GUI that comes up when you go into the plugin configuration. This would fix the crashing problem when switching between side/center, but it might still crash when switching between different DSP plugins. But I have never written any GUI in C++, and I haven't felt like learning how. I actually have a C# version that I wrote, but haven't released it because I'm not happy with the other code that I wrote to host it, called DSPDotNet. It doesn't have the problems you described, allows you to change the FHT window size in the GUI, has an option to use an algorithm modification made by Avery Lee in later versions of VirtualDub that usually makes the output sound crisper (though I have heard it mess up one sample), and also includes a fix discovered by myself recently to get rid of the clicking in the output (see here). I hope to fix it up sometime and release it, but I can't say when or if I will do it. Screenshot:
This post has been edited by Moitah: Nov 15 2005, 18:43 |
|
|
|
Nov 15 2005, 10:17
Post
#23
|
|
![]() Group: Members Posts: 477 Joined: 22-December 03 From: Malmö, Sweden Member No.: 10615 |
You wouldnt feel like porting your plugin to foobar2000? Chun-Yu ported v1.0 to foobar2000 but it would be nice to benefit from the improvements of the newer versions. Perhaps your waiting for the v0.9 SDK to be public first?
|
|
|
|
Jan 5 2006, 04:45
Post
#24
|
|
![]() Group: Members Posts: 193 Joined: 5-June 02 From: Virginia Beach, VA Member No.: 2227 |
I am releasing a beta of my DSPDotNet project, it's a wrapper written in Managed C++ and C# to allow Winamp DSP plugins to be written in .NET languages. I mentioned in my last post that I wasn't happy with it, so it has been completely rewritten
It includes my C# port of Center Cut. Features over the C++ version are switching between side/center without gaps, a "new algorithm" option (something Avery changed in the code which may or may not improve quality depending on the song), changing window size (it will eat some samples when you do this), and a modification by myself to fix clicking that occurred in the output sometimes. The Center Cut code is GPL of course, so here's the source for it. I plan to release the main DSPDotNet code (GPL) when it's finished and documented. BTW, this runs over 50% faster than the C++ version (both using window size of 8192), most likely because the way I coded the C++ version wasn't so great |
|
|
|
Jan 5 2006, 07:56
Post
#25
|
|
![]() Group: Members Posts: 477 Joined: 22-December 03 From: Malmö, Sweden Member No.: 10615 |
Works and sounds great in Winamp!
Unfortunately crashes in foobar with Winamp DSP wrapper, but thats for another thread I guess. Good work Moitah! |
|
|
|
![]() ![]() |
|
Lo-Fi Version | Time is now: 24th May 2013 - 12:43 |