ASIO First Time


I previously built an ASIO driver with the Steinberg SDK. After recent successes of building VST plugins with JUCE for both PC and Mac, I won’t to go back and use JUCE for my ASIO driver.

I’ve been able to get the ASIO to compile in the demo by setting the JUCE_ASIO flag. I can see ASIO support in the device drop when when I have my device connected.

My confusion is when I use the IntroJucer to setup my plugin project, I’m a bit confused on the settings. I don’t want a VST so I’ve disabled that option, along with the RTAS. Should I disable the AudioUnit as well?

I’ve seen in the documentation that I can use the AudioDeviceType to create the AudioDevice of ASIO. Using the IntroJucer I get the default PluginEditor and PluginProcessor. Where do I instantiate the AudioDevice?


Okay…so far no answers on my original question. How about this one…can an ASIO client be built as a plugin with Introjucer? If so, does JUCE handle the registering/unregistering of the DLL (windows) or bundle (Mac)?

The code in the demo seems to just be a host.

I want to port my current ASIO driver because I didn’t build a control panel for it with the Steinberg SDK. I want to use JUCE to re-do so that I can build the interface with the Jucer.

You seem very confused… There’s no earthly reason why you’d want to use ASIO (or any other kind of audio device) inside a plugin - the whole point of a plugin is that the host handles the i/o for you. Or maybe I’ve totally misunderstood your question?

Perhaps I am confused. :slight_smile:

I have an ASIO client but did not implement a control panel since I didn’t like how the Steinberg GUI interfaced with the SDK. So, I had a simple CMD window that pumped info to my ASIO driver.

After using JUCE for a VST plugin I figured perhaps JUCE can handle ASIO as well. I saw in the forum that it does.

When using the IntroJucer the options on the projects are “GUI”, “Console,” and “Plugin”. Since an ASIO driver is a DLL I guessed “Plugin”. Obviously I’m wrong.

Can I create an ASIO driver with JUCE? If so, where in the demo code should I focus my attention?


Similar to VST. Your VST wrapper provides the interface calls to the host and allows me to use a gui.

I want to do similar with with ASIO. I see the interfaces in AudioIODevice. I want to access those but have a control panel.

You say you want to write an ASIO driver, but you’re talking about using an existing ASIO driver… Sorry, I’ve no idea what you’re trying to do. But it ain’t an audio plugin, that’s for sure.

Ok. Understood. So current users of Juce doing ASIO are they just making Introjucer projects as GUI or console projects?

I want to use the audioiodevice class…it has what I need and be able to build a GUI with JUCe.

So, not a plugin. How is it done using JUCE?

Basically I wrote an ASIO driver with the Strindberg sdk I want to rewrite it with juce. Sorry for my unclarity.

Can you maybe explain where exactly you plan on using JUCE in your driver?
Do you want to implement the control panel with it, or what exactly is it you’re trying to do?

JUCE afaik only provides for the client side of ASIO, so for writing a driver with it you would still have to us the Steinberg ASIO SDK stuff.
But of course JUCE can come in handy in implementing a control panel for your driver.
However, a more detailed description of what you are aiming for is necessary in order to be able to answer your question.