Simple stereo audio processing app


#1

Hi all,

I’ve not posted here for a while and so hello again. I have an application that is similar in function to an audio plugin. It takes a stereo input from the soundcard, processes the sound, and then sends the processed output back to the soundcard. At the moment, the audio IO and signal processing all occurs within a DLL that was auto-generated (using Matlab and real time workshop). The “processFrame” function in the DLL which processes each block of samples is called in a loop in one JUCE thread. Each time the function is called, it is supplied with new parameter values controlled by sliders in another thread. This clunky setup has been serving us well until now.

I would now like to hand all the audio IO control over to juce to make the code more portable between machines. I’m not entirely sure about the best way to go about this at the moment. I have made a test-bed program which is basically a stripped down version of the JUCE demos’s AudioDemoTabComponent, containing just the AudioDemoSetupPage, AudioDemoLatencyPage and AudioDemoSythPage. I have been fiddling (UNSUCESSFULLY) with the synth page to get a simple “Again” type demo (like the one in the VST sdk) up and running. If I can get a gain control working, I can then hack away at this to get my entire application up and running. I have also looked at TheVinn’s dspFilters (http://www.kvraudio.com/forum/viewtopic.php?p=4433032) JUCE demo for inspiration. This looks very cool indeed, but my C++ skill is rather lacking and I am unable to modify the code to allow me to filter a microphone input.

Should I be looking at the plugin demo instead? Would this be a more logical route to take, even though I have no intention of turning my processor into a plugin? The framework looks pretty logical for what I want to do, but I’d rather have a self contained app.

Does anyone know of the whereabouts of some source code that does something like I want to do. I’m happy to chop away, but not so confident at generating large amounts of code from scratch. Throw me a carrot!

:expressionless:


#2

You could make a plugin and then use the standalone wrapper… this should do what you are looking for.


#3

Yeah, this looks like the logical path. I found this thread (http://www.rawmaterialsoftware.com/viewtopic.php?f=2&t=4895&hilit=standalone+wrapper) and now have a “hello world” starting point to use as a springboard. The standalone wrapper is pretty cool but I didn’t know it was an option when using the new Jucer. Perhaps it would be a nice addition to the new Jucer?

Thanks for your input.


#4

All is progressing nicely. However, In the juce demo there is the option to switch between DirectSound/ASIO in the AudioDeviceSelectorComponent. In the standalone wrapper there is no such option and I cannot fathom how to get it to appear. I’m guessing that I’m missing something pretty simple.


#5

You need to build your app with ASIO support. I don’t know the standalone wrapper but in the Introjucer (new Jucer) it’s simply an option. Of course you also need the ASIO SDK.

Chris


#6

Got the sdk from Steinberg, set the flag in AppConfig.h, hit F5 and BINGO! We are now supporting ASIO. Thanks! :mrgreen:


#7

Hi again. Tonight, I have been attempting to build my project under xcode. I am very new to XCode. I am trying to find out how to set the target from a plugin to an executable. In VS there is a simple drop down menu in the preferences to change between dll and exe targets. Is there an equivalent in XCode? I have gone through the build settings in the JUCE demo line-by-line next to the build settings in my standalone plugin project and cannot find the setting that I’m looking for. Why I try to make a new target, it keeps on trying to open my app in an iPhone simulator - which is not what I’m after. Thanks for reading my ramblings!


#8

It’s in the ‘info’ panel for the target - I think on the ‘general’ tab? (It’s not in the normal build settings list)


#9

It is a field but it is not editable. …

I gave up on getting XCode to do it in the end. Got the job done by firing up the jucer and making a new project. My source code folder arrangement needed a little housekeeping anyhow. Show is back on the road . .