I've been struggling playing multiple AUFilePlayers at the same time.

I use an AUGraph and setup all my AUFilePlayer regions like this:

memset(&audio_file_region_.mTimeStamp, 0,
audio_file_region_.mTimeStamp.mFlags = kAudioTimeStampSampleTimeValid;
audio_file_region_.mTimeStamp.mSampleTime = 0;
audio_file_region_.mCompletionProc = NULL;
audio_file_region_.mCompletionProcUserData = NULL;
audio_file_region_.mAudioFile = audio_file_ID;
audio_file_region_.mLoopCount = 0;
audio_file_region_.mStartFrame = 0;
audio_file_region_.mFramesToPlay = 0;

Notice that the `mFramesToPlay = 0` because I Play/Pause/Stop from the
AUFilePlayers and not the AUGraph.

This way I start the graph but I start the playback when I want by using
AUFilPlayer->Play(). Inside the Play() method I set the right number of
frames for `mFramesToPlay` and the playback start.

Everything works well this way.

But now let's say I've 2 different AUFilePlayer called file_player_1 and
file_player_2 which will play the same audio file.

When I do something like this:

// Do all the setup things

I can hear the mix of my AUFilePlayer but I hear that the playbacks are
phase shifted.
I think it's because of the delay caused by `file_player_1->Play();` so
before `file_player_2->Play();` is done the file_player_1 playback has
already started…

I looked at how to fix it and the workaround I found is to change the
`kAudioUnitProperty_ScheduleStartTimeStamp` property.
Instead of using `time_stamp_.mSampleTime = -1;` i.e start at the next
render cycle I used `time_stamp_.mSampleTime = 0;` and it seems to work.

But honestly I don't really know what
"kAudioUnitProperty_ScheduleStartTimeStamp" do, and if it's the good way to
play multiple AUFilePlayer playback in a sync since everybody uses
`time_stamp_.mSampleTime = -1`.

What would be your recommandation for this kind of behaviour?

Thank you
Laurent Noudohounsi.
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list      (Coreaudio-api@lists.apple.com)
Help/Unsubscribe/Update your Subscription:

This email sent to arch...@mail-archive.com

Reply via email to