Для согласованного темпа на iPhone, есть ли лучшее решение, чем системные звуки? - PullRequest
0 голосов
/ 29 октября 2009

Я давно работаю над приложением метронома. После примера Apple'e Metronome я использовал таймер в фоновом потоке (с высоким приоритетом) для воспроизведения системных звуков. Мои результаты в порядке, но далеко не идеальны. Вот некоторые проблемы, с которыми я сталкиваюсь:

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

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

Теперь мне интересно, кто-нибудь может направить меня к лучшей, более надежной структуре для этой задачи?

Ответы [ 3 ]

2 голосов
/ 29 октября 2009

Аудио библиотеки OSX называются «Core Audio». Существует несколько различных способов взаимодействия с аудиооборудованием и платформами Core Audio. Существует OpenAL (как уже упоминалось в другом комментарии), который является кроссплатформенным стандартным подходом к аудио, как и OpenGL для графики. Существует также Audio Unit, который является интерфейсом на основе обратного вызова непосредственно к аудиооборудованию, что позволяет вам передавать необработанный звук PCM в режиме реального времени. Аудиоустройства чрезвычайно ограничены во времени, поэтому, если вы ищете метрономический ритм, аудиоустройства могут сделать это для вас. Существует также слой поверх аудиоустройств, известный как AudioQueue, который позволяет планировать поток аудио для воспроизведения в режиме реального времени. Одним из преимуществ AudioQueue является то, что он может автоматически декодировать сжатые форматы, такие как MP3 или AAC.

Выполните поиск по "Основному обзору аудио" в документах, чтобы узнать больше о различных аудиофреймах для iPhone.

1 голос
/ 29 октября 2009

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

В документации на странице «Начало работы со звуком» перечислено несколько способов воспроизведения звука, один из которых четко гласит «Для воспроизведения звуков с наименьшей задержкой ввода-вывода или для обеспечения одновременного ввода и вывода звука, ...» (я вероятно, нарушает некоторые NDA здесь все что угодно)

По крайней мере, пика в документах, прежде чем задать вопрос здесь

1 голос
/ 29 октября 2009

Вы можете использовать OpenAL для работы со звуком. Он использует низкоуровневый API и работает быстро. Также вы должны прочитать Apple's AudioSessionProgrammingGuide. Там вы найдете много ответов на возможные вопросы.

...