Я пытаюсь воспроизвести звук при нажатии кнопки, и я использую аудиоустройство iX 5 для проигрывателя файлов.Установить ScheduledAudioFileRegion, чтобы начать заново
Файл проигрыватель воспроизводит звук с помощью ScheduledAudioFileRegion и могут быть запланированы, чтобы играть столько кадров, сколько нужно
ScheduledAudioFileRegion rgn;
memset (&rgn.mTimeStamp, 0, sizeof(rgn.mTimeStamp));
rgn.mTimeStamp.mFlags = kAudioTimeStampSampleTimeValid;
rgn.mTimeStamp.mSampleTime = 0;
rgn.mCompletionProc = NULL;
rgn.mCompletionProcUserData = NULL;
rgn.mAudioFile = audioFile;
rgn.mLoopCount = INT_MAX;
rgn.mStartFrame = 0;
rgn.mFramesToPlay = nPackets * fileASBD.mFramesPerPacket; // plays entire file.
Как я могу сказать, этот файл плеер для воспроизведения звука с самого начала, когда кнопка нажата, или мне нужно создавать новый регион и каждый раз менять его? Я хочу, чтобы звук воспроизводился, когда кнопка нажата от начала до конца, но когда кнопка снова нажата, она должна начинаться с начала, даже если файл в данный момент воспроизводится. Возможно ли это с аудиоустройством файлового проигрывателя?
Вам не нужно использовать 'INT_MAX' для получения неопределенного цикла, установка' mLoopCount' в '-1' приведет к тому, что область будет работать бесконечно. –
В этом случае вы * только * хотите, чтобы звуковой файл воспроизводился при нажатии кнопки или вы хотите сделать больше, чем, например, триггер накладывать звуковые файлы, добавлять эффекты и т. д.? Если это просто простой триггер, было бы гораздо проще использовать «AudioServicesPlaySystemSound», как описано [здесь] (http://stackoverflow.com/a/2778996/172218). AudioUnits являются излишними для запуска простого звукового файла. –
Я использую звуковые модули с основным звуком, чтобы захватывать звуки и создавать аграфы с помощью подграфов. Мне нужно захватить эти запущенные звуки в основном миксе. – jarryd