GPU Delay - A delay plugin running on a graphics card

VST, AU, AAX, CLAP, etc. Plugin Virtual Effects Discussion
Post Reply New Topic
RELATED
PRODUCTS

Post

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

Post

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

Post

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

Post

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)

Post

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

Post

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

Post

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

Post

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

Post

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!

Post

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!

Post

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

//Daniel :)

Post

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

Post

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

Post

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

Post

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

Post Reply

Return to “Effects”