Одновременное воспроизведение нескольких звуков с помощью AVAudioPlayer

#iphone #ios #cocoa-touch #avaudioplayer

#iPhone #iOS #cocoa-touch #avaudioplayer

Вопрос:

Может ли кто-нибудь помочь мне с функцией, которая запускает несколько AVAudioPlayer звуков одновременно? Прямо сейчас я пытаюсь добиться одновременного срабатывания двенадцати AVAudioPlayer секунд, если активированы двенадцать кнопок, но возникает задержка, и звучит так, как будто кто-то проводит пальцем по клавишам пианино вместо того, чтобы нажимать на все клавиши сразу.

Я посмотрел на службы очереди аудио и не могу понять, как на самом деле реализовать это в коде, но там говорится, что он может воспроизводить синхронизированные звуки. Я не уверен, как все это настроить. Я пытаюсь переделать приложение с тональной сеткой.

Комментарии:

1. Пожалуйста, покажите свою работу на данный момент.

2. Не могли бы вы просто создать AVComposition, содержащую до 12 треков? Или вам нужно, чтобы можно было запустить один из этих звуков после того, как другие уже воспроизводятся? Вам когда-нибудь нужно было остановить звук? Вы знаете, как долго это воспроизводится? Если вы умеете запускать и забывать, системные звуки могут вам подойти. Вы неявно микшируете, и наиболее подходящим API микширования на iOS является аудиоустройство AUMultichannelMixer, но вы звучите так, как будто вы довольно новичок, а аудиоустройства довольно жесткие.

Ответ №1:

Почему вы не используете http://www.hollance.com/2011/02/soundbankplayer-using-openal-to-play-musical-instruments-in-your-ios-app/

Вот вам и полифонический проигрыватель, прекрасно закодированный и готовый зажигать!

Некоторое время назад я использовал это в своем первом приложении: http://itunes.apple.com/gb/app/chordwheel-pro/id406836326?mt=8

Комментарии:

1. Хотя это интересно, это не ответ на вопрос ( каким бы расплывчатым ни был вопрос).

2. Что я делаю, так это смотрю за пределы вопроса на реальную ПРОБЛЕМУ и решаю ее.

Ответ №2:

Вызываете ли вы метод prepareToPlay во всех 12 AVAudioPlayer экземплярах. Из документации: «Вызывая этот метод, предварительно загружаются буферы и приобретается оборудование, чтобы минимизировать задержку».

Смотрите ссылку на класс AVAudioPlayer.