Realtime audio by JUCE : Newbie Q


#1

Hey, I was wondering if any of you JUCE followers have developed a realtime audio application whose template you’d be willing to share?

I’m a DSP prof looking to give some exceptional students a challenge and make some cool audio DSP demos. I can tolerate a lot more latency than would be needed for live playing, but I want it realtime enough so that (for instance) if a student presses down a computer key to start a sawtooth generator, he/she can hear the effect of changing a filter’s Q by adjusting an onscreen knob. That sort of thing. DirectSound is fine…don’t need the hassles of having them install an ASIO driver first. Haydxn pointed out JUCE to me…what a great solution!

Anyway, my students know DSP and C++, but they (and I) don’t know how to modify a realtime datastream while playing. If you can point me in the right direction (even a “RTFM, Chapter 5”) we would much appreciate it! :smiley:

Thanks,

  • Jim

#2

Well the thing to do is to create an AudioSource and use it as part of a chain of sources, so that it can process an input source and squirt out its results.

The audio section of the juce demo does this kind of thing, though it might seem a bit complex. It just creates a synth source and a file-player source and runs them, so you could tweak that to add your own source.


#3

Thanks for the prompt reply, Jules! This seems pretty straightforward…can’t wait to start this project up.

One last question for anyone in the community: How do you rate JUCE for my desired audio DSP principle demonstration application vs. the Intel IPP library?

Clearly JUCE’s price and license agreement wins hands-down, and its multi-platform support wins too. Just wondering if anyone has any experience with IPP.

Thanks,

  • Jim

#4

Oh, and JUCE’s support, based on my initial experience with both, far, far, far superior to IPP.


#5

[quote=“jcsquire”]Thanks for the prompt reply, Jules! This seems pretty straightforward…can’t wait to start this project up.

One last question for anyone in the community: How do you rate JUCE for my desired audio DSP principle demonstration application vs. the Intel IPP library?

Clearly JUCE’s price and license agreement wins hands-down, and its multi-platform support wins too. Just wondering if anyone has any experience with IPP.

Thanks,

  • Jim[/quote]

They’re completely different, aren’t they? I’ve not looked at IPP for a long time, but thought it just gives you dsp acceleration primitives, not any kind of framework for playing audio. And juce is kind of the other way round.


#6

Jules,

I think you’re talking about MKS, the sister product to IPP (maybe they were once part of the same library). MKS has the BLAS, LAPACK (e.g. FFT), EISPACK, all of those computational primitives, upgraded to work across multicore processors. IPP lets one open audio or video streams and then decode/encode/play/show them, as well as include low level generic library components, for example, string handling.

I think both would work for what I want to do, but I bet one would be simpler. JUCE clearly wins on cost, multiplatform support, and user support (my only response from Intel tech support was a couple of generic links to marketing material, their resellers don’t have a clue, and educational versions don’t get phone numbers to tech supt). :x I think the best choice is pretty clear.

The only remaining q is: which is more suitable (simple) to use for the task of building audio DSP theory demonstrations? Oh, what the heck. Time’s too valuable to waste on support misdirection and it’s clear one can build impressive professional audio apps with JUCE. I’m “sold”. I hope my students go on to purchase many full licenses from you when they graduate and go to private industry! :slight_smile:

  • Jim

#7

Jules,

I think you’re talking about MKS, the sister product to IPP (maybe they were once part of the same library). MKS has the BLAS, LAPACK (e.g. FFT), EISPACK, all of those computational primitives, upgraded to work across multicore processors. IPP lets one open audio or video streams and then decode/encode/play/show them, as well as include low level generic library components, for example, string handling.

I think both would work for what I want to do, but I bet one would be simpler. JUCE clearly wins on cost, multiplatform support, and user support (my only response from Intel tech support was a couple of generic links to marketing material, their resellers don’t have a clue, and educational versions don’t get phone numbers to tech supt). :x I think the best choice is pretty clear.

The only remaining q is: which is more suitable (simple) to use for the task of building audio DSP theory demonstrations? Oh, what the heck. Time’s too valuable to waste on support misdirection and it’s clear one can build impressive professional audio apps with JUCE. I’m “sold”. I hope my students go on to purchase many full licenses from you when they graduate and go to private industry! :slight_smile:

  • Jim

#8

Glad you’re going for Juce then!

I just meant that although IPP has lots of stuff for handling the audio stream data, I don’t think it has anything to actually open an audio device, so you’d be stuck writing your own DSound code to actually get the data in and out.


#9

I realize this thread is a couple years old, but thought I’d wake it up in case anyone else is using IPP. I’m using a “customized” graph to chain effects, and the idea of course is once you’re in the process block loop, to get out of there as quickly as possible. I’m using IPP for basic stuff like vector math, F/IIR and delay line stuff in hopes I’ll get some performance out of it by using the CPU as if it were a DSP, which it’s not.

I’m a little concerned there isn’t more talk of IPP here, and I’m just walking in circles, but I imagine the geeks in here are probably writing their own assembly for this kinda stuff, which I’m painfully slow at. The downside of course is it leaves PowerPC out of the loop, but I’m not about to learn RISC assembly, so for now I’m just using C++ equivalents there.

Is anyone here using IPP in their projects, and if so, what kind of performance improvements have you seen, if any?

Thanks :slight_smile:


#10