I have been thinking about a possible platform for JUCE. The idea is that adding CORBA support for JUCE, and that part of JUCE can be run in a different processor. say a GPU. I am looking into porting JUCE on CUDA, with CORBA, and I can use the CPU the create JUCE objects and have CUDA to do the computational intensive part. My longer term goal is to put Nsythn engin under JUCE on CUDA, and make GPU to do audio.
Just want to get some feedback from you guys.
Why do you need JUCE for that? And why do you need CORBA for running audio code on the GPU?
Don’t forget that 99.99% of the audio DSP algorithms can’t run efficiently on a GPU.
Since JUCE is a mature product with both front end GUI, and backend MIDI and Audio processing, it make sense to start with JUCE, and move the audio processing out of the CPU. With IDL defines the JUCE objects, it makes it more portable and transparent when the other components/modules call those audio processing objects regardless what the audio processing unit really is. Audio processing unit can be DSPs, or GPU. In the case of DSP, since there are many different vendors, there is no uniform APIs. With CORBA, we don’t have change JUCE core code as long as we port ORB to the new DSPs.
For my day job, I have been working on software defined radio for 15 years, and we worked with different DSPs and many legacy radio applications, and each has different needs in RF processing. We achieved this by porting ORB on DSPs. Audio processing can be done the same way.
As for GPU, definitely the traditional audio processing on GPU may not be as efficient as many mature DSP. However, the Nsynth from Magenta gives a different perspective. Audio synthesis of different instrument is done through machine learning, the result is pretty instresting. So the question is can we integrate the power of audio synthesis from Nsynth and mature plugin platform like JUCE. With the massive parallel processing in CUDA/GPU, a lot can be done there even for audio processing.
With CORBA as the backend, we don’t need to know whether it is GPU or DSP or even a dedicated CPU core, CORBA gives us this flexibility.
I think you know little about DSP. Yes, synthesis can work on GPU, and when you say machine learning, I suppose you mean deep learning/neural networks. But for anything more than FIR effects, you can’t port them on GPU without being dead slow compared to CPU/DSP.
That’s the advantage of using CORBA here, by binding the servants on different platforms, for synthesis, it can be done on GPU, for other signal processing, it can be done on DSP.