GPU Delay - A delay plugin running on a graphics card

VST, AU, etc. plug-in Virtual Effects discussion
Nils Schneider
KVRist
166 posts since 22 Oct, 2004 from Neuss, Germany

Post Thu Oct 05, 2006 1:18 am

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
Last edited by Nils Schneider on Tue Feb 20, 2007 4:52 am, edited 7 times in total.
http://www.nilsschneider.de
http://gpuimpulsereverb.de - Use your ATI/NVIDIA GPU as reverberation DSP!
http://heatvst.com - Android Synthesizer with full VST integration

Mighty Pea
KVRian
932 posts since 21 Mar, 2006

Post Thu Oct 05, 2006 1:43 am

awesome! Being a game artist first, this really appeals to me, as my hardware is always much more fit for gaming than musicmaking :D
i'll give this a go on a few different systems in a few days.
Image

Nils Schneider
KVRist
166 posts since 22 Oct, 2004 from Neuss, Germany

Post Thu Oct 05, 2006 1:49 am

Great! :) Many thanks for your help.
http://www.nilsschneider.de
http://gpuimpulsereverb.de - Use your ATI/NVIDIA GPU as reverberation DSP!
http://heatvst.com - Android Synthesizer with full VST integration

bool
KVRist
257 posts since 18 Dec, 2004

Post Thu Oct 05, 2006 2:14 am

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)

Nils Schneider
KVRist
166 posts since 22 Oct, 2004 from Neuss, Germany

Post Thu Oct 05, 2006 2:26 am

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.
http://www.nilsschneider.de
http://gpuimpulsereverb.de - Use your ATI/NVIDIA GPU as reverberation DSP!
http://heatvst.com - Android Synthesizer with full VST integration

zeoy
KVRAF
3299 posts since 7 May, 2004 from Athens, Greece

Post Thu Oct 05, 2006 2:40 am

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!
If I go insane, please don't put your wires in my brain
Image

User avatar
Kingston
KVRAF
6474 posts since 16 Dec, 2002

Post Thu Oct 05, 2006 2:40 am

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

Nils Schneider
KVRist
166 posts since 22 Oct, 2004 from Neuss, Germany

Post Thu Oct 05, 2006 2:45 am

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.
http://www.nilsschneider.de
http://gpuimpulsereverb.de - Use your ATI/NVIDIA GPU as reverberation DSP!
http://heatvst.com - Android Synthesizer with full VST integration

Amberience
KVRAF
7042 posts since 7 Mar, 2003

Post Thu Oct 05, 2006 3:05 am

Didn't work for me. I have onboard Geforce 6100. Can I assume that it just doesn't work with onboard GPU's ?

schnilsen
KVRer
10 posts since 18 Aug, 2004

Post Thu Oct 05, 2006 3:42 am

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!

ddummer
KVRian
830 posts since 13 Jul, 2002

Post Thu Oct 05, 2006 4:25 am

I'll design a GUI if you need one.... or help you in any other way...

//Daniel :)

TRIAC
KVRist
38 posts since 23 Jun, 2006

Post Thu Oct 05, 2006 6:03 am

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

ddummer
KVRian
830 posts since 13 Jul, 2002

Post Thu Oct 05, 2006 6:19 am

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

marce
KVRian
805 posts since 15 Dec, 2004

Post Thu Oct 05, 2006 7:08 am

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

zeoy
KVRAF
3299 posts since 7 May, 2004 from Athens, Greece

Post Thu Oct 05, 2006 7:32 am

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 :)
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.
If I go insane, please don't put your wires in my brain
Image

Return to “Effects”