GPU Delay - A delay plugin running on a graphics card
-
Nils Schneider Nils Schneider https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=45370
- KVRist
- Topic Starter
- 279 posts since 22 Oct, 2004 from Neuss, Germany
Hello,
my occupation is game programming, my hobby is music. So I decided to check out if it isn't possible to use my graphics card for audio DSP processing like BionicFX promised some years ago. After heavy optimizing, trying out a lot of things etc..... It works
This is a proof-of-concept VST plugin to test if computation on a GPU is possible in a reasonable amount of time. At my machine (P4 2.8Ghz, Geforce FX 5900 AGP) my test plugin is at least faster than e.g. the Voxengo Tempo Delay (of course, my version lacks of features but it's still not pretty bad I think.) Well, here you are: http://nilsschneider.de/temp/GPUDelay.exe (2,2MB). Here you can at least grab a simple VST plugin that computes a delay of up to 1 second in length on your graphics processor.
This release is not intended to be something useful, but it would be nice if you could help me to TEST it. If everything is working well, I'll start with the implementation of more complex plugins ( receiving my Geforce 7800 GS+ next week ) so this will be a good alternative to CPU based plugins because these plugs don't eat up your CPU. This delay eats nearly nothing on my machine when working with Cubase SX 3 and a buffer size of 1024 samples. Other plugins, more complex ones, shouldn't eat more because the GPU is doing the processing.
Here are some things you should know:
- Needs at least a graphics board with pixel shader 2.0 and floating point render target support. Tested only with a NVidia Geforce FX 5900. Would be nice to have other results.
- DirectX 9.0c is required
- Buffer size can't be greater than 2048 (I'll change that in the future, but atm it's a deprecated limitation)
- There is no graphical interface yet.
- 3 Parameters: Feedback, InvertLR (mixes left<=>right so stereo delay is possible), Length (up to 1 second)
Would be nice if you could tell me if the plugin is loading on your system at all, if you have any crashes or something like that.
Note that Cubase SX "marks" a plugin as unloadable if it fails once. You have to re-enable it again in the plugin configuration.
If anything goes wrong, would be nice if you could send me all log files that are created in the installation directory.
THANKS in advance! This is going to be a quite cool thingy If my new graphics board is here, I'll start to bring you some more complex plugins
_______________________________________
EDIT: Note that meanwhile, there is also a 6 voice stereo chorus available:
http://nilsschneider.de/temp/GPUChorus.exe
It's a 6 (!) voice stereo chorus
Parameters:
- Depth
- Mix (0% = dry, 100% = wet)
- Speed
- Gain
- Spread (0% = mono chorus, all 6 voices in the center, 100% = 3 voices left, 3 voices right)
This one requires Pixel Shaders 2.x (sorry for all Radeon 9xxx Users).
Minimum graphics board for this plugin:
Geforce FX 5...
ATI Radeon X...
Regards,
Nils
my occupation is game programming, my hobby is music. So I decided to check out if it isn't possible to use my graphics card for audio DSP processing like BionicFX promised some years ago. After heavy optimizing, trying out a lot of things etc..... It works
This is a proof-of-concept VST plugin to test if computation on a GPU is possible in a reasonable amount of time. At my machine (P4 2.8Ghz, Geforce FX 5900 AGP) my test plugin is at least faster than e.g. the Voxengo Tempo Delay (of course, my version lacks of features but it's still not pretty bad I think.) Well, here you are: http://nilsschneider.de/temp/GPUDelay.exe (2,2MB). Here you can at least grab a simple VST plugin that computes a delay of up to 1 second in length on your graphics processor.
This release is not intended to be something useful, but it would be nice if you could help me to TEST it. If everything is working well, I'll start with the implementation of more complex plugins ( receiving my Geforce 7800 GS+ next week ) so this will be a good alternative to CPU based plugins because these plugs don't eat up your CPU. This delay eats nearly nothing on my machine when working with Cubase SX 3 and a buffer size of 1024 samples. Other plugins, more complex ones, shouldn't eat more because the GPU is doing the processing.
Here are some things you should know:
- Needs at least a graphics board with pixel shader 2.0 and floating point render target support. Tested only with a NVidia Geforce FX 5900. Would be nice to have other results.
- DirectX 9.0c is required
- Buffer size can't be greater than 2048 (I'll change that in the future, but atm it's a deprecated limitation)
- There is no graphical interface yet.
- 3 Parameters: Feedback, InvertLR (mixes left<=>right so stereo delay is possible), Length (up to 1 second)
Would be nice if you could tell me if the plugin is loading on your system at all, if you have any crashes or something like that.
Note that Cubase SX "marks" a plugin as unloadable if it fails once. You have to re-enable it again in the plugin configuration.
If anything goes wrong, would be nice if you could send me all log files that are created in the installation directory.
THANKS in advance! This is going to be a quite cool thingy If my new graphics board is here, I'll start to bring you some more complex plugins
_______________________________________
EDIT: Note that meanwhile, there is also a 6 voice stereo chorus available:
http://nilsschneider.de/temp/GPUChorus.exe
It's a 6 (!) voice stereo chorus
Parameters:
- Depth
- Mix (0% = dry, 100% = wet)
- Speed
- Gain
- Spread (0% = mono chorus, all 6 voices in the center, 100% = 3 voices left, 3 voices right)
This one requires Pixel Shaders 2.x (sorry for all Radeon 9xxx Users).
Minimum graphics board for this plugin:
Geforce FX 5...
ATI Radeon X...
Regards,
Nils
Last edited by Nils Schneider on Tue Feb 20, 2007 12:52 pm, edited 7 times in total.
https://k1v.nilsschneider.de - Kawai K1 emulated as VSTi/AU
https://heatvst.com - Android Synthesizer with full VST integration
https://gpuimpulsereverb.de - Use your GPU as reverberation DSP
https://heatvst.com - Android Synthesizer with full VST integration
https://gpuimpulsereverb.de - Use your GPU as reverberation DSP
-
- KVRian
- 928 posts since 21 Mar, 2006
awesome! Being a game artist first, this really appeals to me, as my hardware is always much more fit for gaming than musicmaking
i'll give this a go on a few different systems in a few days.
i'll give this a go on a few different systems in a few days.
-
Nils Schneider Nils Schneider https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=45370
- KVRist
- Topic Starter
- 279 posts since 22 Oct, 2004 from Neuss, Germany
Great! Many thanks for your help.
https://k1v.nilsschneider.de - Kawai K1 emulated as VSTi/AU
https://heatvst.com - Android Synthesizer with full VST integration
https://gpuimpulsereverb.de - Use your GPU as reverberation DSP
https://heatvst.com - Android Synthesizer with full VST integration
https://gpuimpulsereverb.de - Use your GPU as reverberation DSP
-
- KVRist
- 257 posts since 18 Dec, 2004
Interesting. Could you team up with some other developers and port their stuff for gpu acceleration?
Would it be possible to run such plugins on geforce 5200? (reason: silent card)
Would it be possible to run such plugins on geforce 5200? (reason: silent card)
-
Nils Schneider Nils Schneider https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=45370
- KVRist
- Topic Starter
- 279 posts since 22 Oct, 2004 from Neuss, Germany
This depends on the complexity of the algorithm VS the capabilities of the GPU, i.e. it's pixel shaders.
Not every algorithm can be ported, especially those that HAVE to go linearily through the buffer because they depend on the result of the previous sample. A GPU computes multiple pixels (i.e. audio samples) in parallel. This is a problem for e.g. some filter algorithms.
Feature-wise, a Geforce 5200 is identical to a 5900, so simple effects are not a problem (only slower), but more complicated ones won't run. This delay sample should work fine.
Not every algorithm can be ported, especially those that HAVE to go linearily through the buffer because they depend on the result of the previous sample. A GPU computes multiple pixels (i.e. audio samples) in parallel. This is a problem for e.g. some filter algorithms.
Feature-wise, a Geforce 5200 is identical to a 5900, so simple effects are not a problem (only slower), but more complicated ones won't run. This delay sample should work fine.
https://k1v.nilsschneider.de - Kawai K1 emulated as VSTi/AU
https://heatvst.com - Android Synthesizer with full VST integration
https://gpuimpulsereverb.de - Use your GPU as reverberation DSP
https://heatvst.com - Android Synthesizer with full VST integration
https://gpuimpulsereverb.de - Use your GPU as reverberation DSP
-
- KVRAF
- 3299 posts since 7 May, 2004 from Athens, Greece
My office PC has an ancient ATI9200 so no "pixel shader 2.0 and floating point render target support" I suppose (FYI didn't load here)/ I'll test it at home with an NVIDIA 6600GT.
Congrats for your efforts!
Congrats for your efforts!
If I go insane, please don't put your wires in my brain
- KVRAF
- 6478 posts since 16 Dec, 2002
Excellent work sir! I salute you. I studied the possibilities of GPU as generic DSP processor some years a go but decided I hadn't the skills for the implementation back then.
What interface do you have with the GPU? Are you using something like BrookGPU as the programming language (that promising looking C style generic code extension for GPUs)?
or did you simply write everything from scratch?
Cheers,
Mike
What interface do you have with the GPU? Are you using something like BrookGPU as the programming language (that promising looking C style generic code extension for GPUs)?
or did you simply write everything from scratch?
Cheers,
Mike
-
Nils Schneider Nils Schneider https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=45370
- KVRist
- Topic Starter
- 279 posts since 22 Oct, 2004 from Neuss, Germany
Thanks
I'm using the Ogre 3D engine, but it doesn't have any gpgpu capabilities, so everything is written from scratch for this special case.
I'm using the Ogre 3D engine, but it doesn't have any gpgpu capabilities, so everything is written from scratch for this special case.
https://k1v.nilsschneider.de - Kawai K1 emulated as VSTi/AU
https://heatvst.com - Android Synthesizer with full VST integration
https://gpuimpulsereverb.de - Use your GPU as reverberation DSP
https://heatvst.com - Android Synthesizer with full VST integration
https://gpuimpulsereverb.de - Use your GPU as reverberation DSP
-
- KVRAF
- 7237 posts since 7 Mar, 2003
Didn't work for me. I have onboard Geforce 6100. Can I assume that it just doesn't work with onboard GPU's ?
My Youtube Channel - Wires Dream Disasters :: My Band - Tacoma Narrows Bridge Disaster
Product owner working for inMusic Brands - posting here in a personal capacity, but I will assist with any BFD related questions - hit me up!
Product owner working for inMusic Brands - posting here in a personal capacity, but I will assist with any BFD related questions - hit me up!
-
- KVRer
- 10 posts since 18 Aug, 2004
this is as of topic as it gets but i got a bit confused here cause my name is nils schneider. But back to the topic:
Great! i hope more people start developing in the direction as my name mate.
cheers to you!
Great! i hope more people start developing in the direction as my name mate.
cheers to you!
-
- KVRist
- 38 posts since 23 Jun, 2006
any chance to work on Radeon cards?
got this error:
DynKib::load
Could not load dynamic library RenderSystem_Direct3D9.dll
File:\sgpu\source\ogre\OgreMain\src\OrgeDynLib.cpp
line:82
got this error:
DynKib::load
Could not load dynamic library RenderSystem_Direct3D9.dll
File:\sgpu\source\ogre\OgreMain\src\OrgeDynLib.cpp
line:82
-
- KVRian
- 829 posts since 13 Jul, 2002
I downloaded the plug and tested it in EnergyXT with my ATI Radeon 9550 card.
Yes he complained about missing the d3dx9_29.dll..
Googled and found out that my DirectX 9.0c does not include all 3d files.
Downloaded version 29 d3dx files and installed.
http://www.shdon.com/view?doc=d3dx
WORKS!
As I said, I'll design interfaces and help you out in any way I can for free!
This is HUGE!
//Daniel
Yes he complained about missing the d3dx9_29.dll..
Googled and found out that my DirectX 9.0c does not include all 3d files.
Downloaded version 29 d3dx files and installed.
http://www.shdon.com/view?doc=d3dx
WORKS!
As I said, I'll design interfaces and help you out in any way I can for free!
This is HUGE!
//Daniel
-
- KVRian
- 805 posts since 15 Dec, 2004
a common tweak for daws is tu turn video hardware acceleration off... Do the use of the GPU have any impact on the desktop video output, or the GPUs are only used for 3d games?
Sorry my ignorance
Sorry my ignorance
-
- KVRAF
- 3299 posts since 7 May, 2004 from Athens, Greece
Hey Nils, I did what ddumer suggested, loaded fine now in Tracktion (still same old ATI 9200) but no sound. Maybe that PixelSHader's missing here.ddummer wrote:I downloaded the plug and tested it in EnergyXT with my ATI Radeon 9550 card.
Yes he complained about missing the d3dx9_29.dll..
Googled and found out that my DirectX 9.0c does not include all 3d files.
Downloaded version 29 d3dx files and installed.
http://www.shdon.com/view?doc=d3dx
WORKS!
As I said, I'll design interfaces and help you out in any way I can for free!
This is HUGE!
//Daniel
If I go insane, please don't put your wires in my brain