I'm not good with long replies when I'm limited to thumbs only, but just wanted to chime in... The processing you've described is very straightforward to do just in your callback. Super easy. Getting the signal chain setup, as you've found, is the most difficult part of the process first time around. Have you gotten your callback setup and processing samples?
Best, BB
Sent from my iPhone Thanks for propmt replies! Hi Charlie - thanks for your suggestion here, 1. create a remoteIO unit and a mixer unit 2. assign your
callback functions that produce sound to the mixer unit
3. assign a callback to the remoteIO unit that tells the mixer unit
to render and process the samples
Part 3 is what I was not certain about. -> Does part 3 mean calling the render callback function of the mixer unit manually from the render callback fn of the remote IO unit?
The actual problem I'm trying to solve is the distortion resulted from the standard mixer. I was thinking about simply limiting the output value of the mixer so that it won't exceed the max valid value.
This is of course not a nice solution. However, given that I can't create my own mixer, I suppose the only other alternative is to eliminate the standard mixer and do my own mixing in the IO unit callback fn?
So yeah, I'm also looking forward to any suggestions that allows assembling a signal pipeline like the following using the AUGraph somehow, saw generator -> low-pass filter -> envelope generator ->
reverb -> remoteIO (output) Or, if utilizing the AUGraph framework isn't applicable, if someone can confirm "yeah the best
solution is to do everything in your IO unit render callback" - that
would be nice too. Daniel On 29 June 2011 09:07, Charlie Roberts <email@hidden> wrote:
Hi Brian, thanks for the response. The original poster specifically mentioned needing access to the output samples of the mixer, so that's why I assumed that there would be no direct connection of the mixer node. As you mentioned, you can't have a callback and connection at the same node. I didn't mean to imply there couldn't be connections of nodes at all in the graph, but in the brief use case he outlined it doesn't seem like there would be.
I'm curious about your statement "there are many useful Apple AudioUnits to choose from". There's VoiceProcessing, iPodEQ, Mixer, and the format converter. It's not in anyway similar to the OS X audiounit landscape.
Any type of longer signal processing chain proved difficult for me to realize coming to AUGraphs as a newbie. Have you done a graph similar to the following in iOS?
remoteIO (mic / line in) -> distortion -> chorus -> delay -> reverb -> remoteIO (output)
or
saw generator -> low-pass filter -> envelope generator -> reverb -> remoteIO (output)
If so, I think an overview of how you did it would be a really useful contribution to the community... definitely at least for me :) I'm not sure I follow what you mean by a T-connection in this context.
My other question would be: what's the advantage of using a graph for the original poster? Why not just:
1. create a remoteIO unit and a mixer unit 2. assign your callback functions that produce sound to the mixer unit
3. assign a callback to the remoteIO unit that tells the mixer unit to render and process the samples
Thanks in advance for any thoughts. - Charlie
On Tue, Jun 28, 2011 at 3:22 PM, Brian Willoughby <email@hidden> wrote:
What makes you think that the nodes in an AUGraph would not actually be connected under iOS?
Granted, you cannot connect to custom AudioUnits, but there are many useful Apple AudioUnits to choose from, and I often find that I need them.
Also, if all you want is a single mixer, then, yes, all your inputs would be callbacks and your output would be a callback, so in effect it's as if there are no actual connections. But, if you create a graph that has more than one node then you certainly should have actual connections in your graph. In other words, assigning a callback only breaks the connection that you're specifying, but none of the other connections are affected.
Perhaps what you're noting is that you cannot have both a callback and a connection at the same node. You'd need some sort of T-connection for that. I guess we need more details about what you're trying to do and why you think AUGraph doesn't have actual connections, and then maybe we can get to the bottom of this.
Brian Willoughby
Sound Consulting
On Jun 28, 2011, at 12:37, Charlie Roberts wrote:
You could assign a callback to the input of remoteIO (or another mixer) that uses AURender to explicitly tell your mixer to render into a bufferlist. The nodes in the graph would not actually be connected, which sort of implies there's little point in using a graph in the first place.
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
|