Hello all, Jules,
I want to convert my existing Core Audio engine (AudioUnits in an AUGraph) to Juce. I’m using it to power a basic multitrack play/record setup. It goes something like this:
HAL Input -> Recording Callback (write input to file(s))
-> Matrix Mixer 1 (feed input to processing line for monitoring as shown below)
Track 1: AUFilePlayer -> Matrix Mixer 1 -> Track 1 plugins…. -> Matrix Mixer 2 -> Hal Output.
Track n: AUFilePlayer -> Matrix Mixer 1 -> Track n plugins…. -> Matrix Mixer 2
Hal Input 1 -> (mixed into track 1)
Hal Input n -> (mixed into track n)
-All the tracks and Hal inputs are fed into Matrix Mixer 1.
-Hal Inputs are fed over into the track outputs of Matrix Mixer 1.
-Track processing is done between the 2 mixers.
-The second matrix mixer combines the tracks down to stereo for output to the device.
Should I use AudioProcessorGraph and AudioProcessors and try to build up a similar system? I’m suspecting that my current architecture won’t translate directly into Juce so I’m open to a new approach. I’ve read in the forum that you (Jules) had plans to create AudioProcessors for reading files and so forth, but your efforts there seemed to stop short of doing so. Should I be trying to wrap AudioSources with AudioProcessors to complete the graph?
Core Audio’s AudioFilePlayer allows many regions to be loaded up for which it handles the playback at the specified time. There doesn’t seem to be anything to do that here. I’m gathering that I’ll need to represent each clip with an AudioFormatReaderSource and then watch the sample count in processAudioBlock (from the wrapper processor) to determine when to start and stop providing data. Does that sound right? Does AudioTransportSource fit in here somewhere?
Also, I generally like to stay out of the dsp stuff and I’ve found Core Audio to be convenient in that regard as it provides a number of built in units to handle panning, reverb, compression…etc. Juce doesn’t appear to offer anything in this regard. Does everybody write their own here or is there a place where I can find commercial friendly code that I could wrap into processors?
Just to note, I have read through everything I can manage to find, including the Juce demo, Plugin Host Demo, Plugin Demo, the api docs and the forum!