CUDA and AUDIO ACCELERATION Is this possible? Can it be done?

I am extremely new to any development around CUDA. I pretty much understand its capabilities and cant imagine it not being implemented in the audio workstation (DAW) sector.

Just for a start and general purpose to get things rolling:

:whistling: I would like to know if it is possible to accelerate FL Studio or any digital audio program that utilizes VST’s, VSTi’s and DXi’s. Do you think there is a way to accelerate the “generator processing” of the .dll files associated with the plugins?

:geek: For instance - There are plenty of accelerator cards out there, like pro tools, that greatly enhance usability of specific plugins associated with that specific hardware. There are actually alot of accelerator cards as well that do this. They all seem to be proprietary. WHY!?

:no: I cannot simply imagine CUDA not being able to handle the processing of these plugins! It’s all math!

:w00t: What I CAN imagine is CUDA DRAMATICALLY enhancing the processing of these plugins.

(!) Has anyone heard anything about development of this kind of acceleration?

(!) If so, who, what, where and why!?

(!) You guys are the best!

Thanks for your enthusiasm. Audio processing is certainly possible in CUDA, but it requires software developers to write specific CUDA versions of their software.

So far this is the only VST plug-in I know of that supports CUDA:
http://www.acusticaudio.net/modules.php?na…ts&file=nebula3

Thanks for taking the time to respond. I have downloaded the free version already of Nebula 3 which unfortunately doesn’t support CUDA. Only the pay version does.

I understand exactly what you mean. But I was thinking, can there be a small program that “hosts” vst’s… or a program developed with cuda in mind that you can plug your vst’s into? I remember seeing a vst host program that would allow you to open up your vst’s to check them out. It was relatively small and simple looking. People make VST’s all the time. I guess it is time to start making some of my own and figuring out just how this all works.

I looked into this briefly, and you’d definitely have to write your own VSTs with CUDA explicitly in mind.

There appears to be a free convolution reverb in development –>here<–

No, it has to be the other way around. The host will do (the inexepensive) routing between plugins and your CUDA aware plugin will use the GPU for most of its calculations, leaving the CPU free for other uses.

edit: … Unless you had something slightly different in mind, like say:

[i]

Could there be a vendor neutral VST-host-like CUDA program that runs a set of arbitrary CUDA-plugins - the one after each other or in parallel - without the need to move data back and forth between CPU and GPU after each plugin completes its run (which would otherwise potentially ruin low-latency performance?) Can one general purpose kernel call another specialized kernel for which there is no source available and only is known in its binary form?

If so, wouldn’t it then also be possible for vendors to agree on a calling convention defining the current state of the plugin, where to find the input data and controls, and where to put the result(s)?

[/i]

Thanks for commenting and adding input. I have seen and read all kinds of ideas in other forums. I wasn’t aware about the convolution reverb that jma has pointed out, thanks for that! I tried it out and was able to get about 5 or 6 instances of it running at once before it closed FL Studio completely, without warning. I run XP x64 with 6GB of ram. I have an 8800GT gpu and it got it up around 10% with those 5 open and relatively small wave samples. I guess its a start! That nebula plugin has some wicked effects that offer extremely nice reverbs. I dont have the cuda version though, just the free one. I haven’t had any problems with it running slow. It is just the latency with the plugin itself is about 1 second or so. Maybe a little less or more depending on which one you use.

I wish I knew more about the development of VST’s and Hosts. I could learn it, of course… but by now it is so far advanced would I be wasting my time?

What do you mean by that? Certainly if you could reverse-engineer a vst like that, maybe you could convert it to CUDA.

I totally agree. I need to learn how to reverse-engineer first though! :) Is there simple code to start with that I could mess around with? Im not completely foreign to the idea of coding… I used to put some code together for Flash websites I have done. So, maybe I could do somethin. Kinda like that convolution reverb jma had mentioned, not nebula, but… it seemed pretty simple. :">

Here’s another VST convolution plugin, see http://www.kvraudio.com/forum/viewtopic.php?t=240824

i work with the commercial version of nebula on mac os x and are very satisfied with their cuda-implementation.
there are great-sounding reverbs for nebula, which eat a lot of cpu. with the cuda-bridge it works very nice.
mathias

I have been working on an openAL project to load an audio buffer into GPU mem like a VBO in openGL. We should collaborate on this. Let me know if you have since started an open source project on sourceforge.net or anything. Thanks