Re: Two AUHALs, one ring buffer, and one AU filter. But no sound.
Re: Two AUHALs, one ring buffer, and one AU filter. But no sound.
- Subject: Re: Two AUHALs, one ring buffer, and one AU filter. But no sound.
- From: William Stewart <email@hidden>
- Date: Thu, 1 Jul 2004 16:45:40 -0700
This is why you use the varispeed between the input and the output side.
The varispeed's rate is set as the relationship between the rate scalar
of the input and output devices...
We're preparing some sample code that does this
Bill
On 01/07/2004, at 4:27 PM, Robert Grant wrote:
>
Hey John,
>
>
Well in my head I'm thinking that if the ring buffer is getting filled
>
at a different rate than being emptied then the read and write heads
>
will eventually meet (overflow or underflow) and thus cause you to
>
make a decision (drop or duplicate a buffer) - that decision will
>
cause a subtle audio glitch. Of course the closer they are in sync the
>
longer it'll take for that to happen.
>
>
At least that's what I think will happen - I'm hiding from the problem
>
currently :-)
>
>
Robert.
>
>
>
On Jul 1, 2004, at 7:19 PM, john wrote:
>
>
> Hi Chilton,
>
>
>
> What Robert suggested is good. Though I'm not sure why he says you'll
>
> eventually get audio glitches (can you answer Robert?).
>
>
>
> I use a similar method - using MTCoreAudio's MTByteBuffer I grab data
>
> from the input proc, do stuff with it, then when the AudioUnit output
>
> calls back I just return to it the amount of data it wants. I never
>
> have any audio glitches (at least that I notice).
>
>
>
> -- John
>
>
>
>
>
>> Hi Chilton,
>
>>
>
>> What you're trying to do is not impossible. You can pass the audio
>
>> from the input device (the iMic) through your buffer to the output
>
>> device. The syncing issue is that the two devices may be running at
>
>> slightly different actual sample rates - even though they're both
>
>> set to 44.1 kHz (for example) - meaning that you're eventually going
>
>> to get subtle audio glitches.
>
>>
>
>> It sounds like you need to build things bit by bit:
>
>> Get input working with your render proc
>
>> Then start putting it in the ring buffer.
>
>> Then start pulling from the buffer using the render callback from
>
>> your Output Unit.
>
>> Then insert your filter.
>
>>
>
>> Trying to do it all in one go seems to be adding confusion...?
>
>>
>
>> Best,
>
>>
>
>> Robert.
>
_______________________________________________
>
coreaudio-api mailing list | email@hidden
>
Help/Unsubscribe/Archives:
>
http://www.lists.apple.com/mailman/listinfo/coreaudio-api
>
Do not post admin requests to the list. They will be ignored.
>
>
--
mailto:email@hidden
tel: +1 408 974 4056
________________________________________________________________________
__
Culture Ship Names:
Ravished By The Sheer Implausibility Of That Last Statement [GSV]
I said, I've Got A Big Stick [OU]
Inappropiate Response [OU]
Far Over The Borders Of Insanity And Still Accelerating [Eccentric]
________________________________________________________________________
__
_______________________________________________
coreaudio-api mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/coreaudio-api
Do not post admin requests to the list. They will be ignored.