Аудиомикшер iPhone SDK

#iphone #objective-c #audio #mixer

#iPhone #objective-c #Аудио #микшер

Вопрос:

Что мне нужно сделать, так это иметь возможность микшировать 4 канала звука (не из живого источника, а просто предварительно записанные аудиофайлы в комплекте приложений) и изменять их громкость по отдельности в режиме реального времени, предпочтительно с помощью MP3. Какой наилучший / правильный путь для меня выбрать в отношении всех различных звуковых API для iPhone?

Спасибо!

Ответ №1:

Storm Sim делает это с помощью AVAudioPlayer, который, безусловно, является самым простым методом. Вы можете вызвать prepareToPlay для каждого из объектов проигрывателя, а затем запустить их с помощью play позже, чтобы не было никаких задержек. Я также использую пустой аудиоплеер продолжительностью 1 секунда в режиме eternal loop, чтобы вести обратный отсчет времени устройства, поэтому вы можете использовать playAfter для указания определенного времени устройства в будущем, чтобы все сэмплы воспроизводились синхронно или со смещением относительно друг друга (deviceTime помечается только в том случае, если воспроизводится какой-либо звук). AVAudioPlayerDelegate прервал / возобновил события и завершил воспроизведение, чтобы вы могли получать уведомления о происходящем.

Однако существует только один аппаратный MP3 / AAC-декодер, поэтому остальные три будут использовать процессор (и, следовательно, батарею) для декодирования. Если вы хотите увеличить время автономной работы, используйте файлы CAF в IMA4@44100. Это примерно 1/4 размера необработанных WAV-файлов, поэтому он не так хорош, как MP3, но производительность намного выше, особенно если вы используете много маленьких звуковых дорожек. Если вы используете голос, вам может сойти с рук гораздо меньшая точность воспроизведения и еще больше испортить файлы. afconvert в терминале может помочь вам получить ваши исходные файлы в формате CAF (вы должны использовать файлы CAF независимо от кодировки).