Лучшая стратегия для управления звуковыми экземплярами, позволяющая перекрестное затухание и т. Д. - PullRequest
0 голосов
/ 29 декабря 2018

Я работаю над приложением для iOS, которое работает с разными звуковыми фрагментами.Каждый фрагмент аудио привязан к отдельной кнопке (аналогично функциональности, которую вы видите в приложении на звуковой панели).

В простом приложении на звуковой карте у вас есть экземпляр объекта проигрывателя (AVAudioPlayer или узел проигрывателя AVAudioEngine), который срабатывает при каждом нажатии кнопки.

Если нажать buttonOne, то sound1 начнет играть.

Если вы нажмете buttonOne еще раз, пока sound1 все еще играет, текущий экземпляр прерывается и «заменяется» новым экземпляром sound1, который начинается заново в начале.

Если вы нажмете buttonOne, ТО затем нажмите buttonTwo до того, как sound1 закончится, экземпляр sound1 будет прерван и заменен на sound2, опять же, воспроизводится с начала.

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

Основываясь на этом, предположим, что вы пытаетесь одновременно воспроизводить разные комбинации звуков.Либо идея о том, что большое количество звуков (возможно, целая звуковая панель) могут воспроизводиться без прерывания друг друга.Или, возможно, возможность воспроизведения нескольких звуков одновременно, например, sound1 - это музыкальная кровать, а sound2 ... soundXX - это звуковые эффекты, которые должны воспроизводиться через музыкальную кровать без прерывания.it.

ВОПРОСЫ: какова наилучшая стратегия проектирования для управления экземплярами вашего игрока в этой ситуации?Предположим, у вас есть сетка кнопок 5 х 5 на вашей деки.Если, гипотетически, вы сможете воспроизводить все 25 звуков одновременно, потребуется ли вам инициировать 25 экземпляров игрока при настройке?(это кажется очень анти-СУХОЙ и не особенно эффективным).Или есть какой-то способ динамического управления количеством нужных вам экземпляров (может быть, с помощью переменной lazy?), Чтобы дополнительные экземпляры создавались только по мере необходимости, например, когда у вас воспроизводится x звуков и вы запускаете другой, дополнительный экземплярсоздан, чтобы содержать недавно добавленный звук?

1 Ответ

0 голосов
/ 29 декабря 2018

Какова наилучшая стратегия проектирования для управления экземплярами AVAudioPlayer в этой ситуации

Нет.Вы должны использовать AVAudioEngine.Это именно то, что это, набор звуковых плат / патчей.

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

Если я заказал 25экземпляры вещи, где одна возможность вообще не является экземпляром, это звучит как массив опций.

...