2011-12-28 2 views
3

Я реализовал AUGraph, аналогичный тому, который был на iOS Developer's Library. В моем приложении, однако, мне нужно иметь возможность воспроизводить звук при разных частотах дискретизации (возможно, двух разных).Изменение частоты дискретизации AUGraph на iOS

Я искал документацию Apple и не нашел способа установить частоту дискретизации во время выполнения. Я думал о трех возможных обходах:

  1. Повторно инициализировать AUGraph каждый раз, когда мне нужно изменить частоту дискретизации;
  2. Инициализируйте другой AUGraph для каждой другой частоты дискретизации;
  3. Преобразование частоты дискретизации каждого звука перед воспроизведением;

Эти методы кажутся действительно неуклюжими и тяжелыми на процессоре.

Каков наилучший способ изменения частоты дискретизации AUGraph во время выполнения?

+0

После некоторых тестов я обнаружил, что повторная инициализация AUGraph не так плоха, как выглядела. Я сейчас буду следовать # 1, возможно, перейдя на # 2 в будущем. Всем спасибо! – rahzark

ответ

1

обычно # 1 для сценариев непрерывного аудиопотока.

ваша программа может иметь особые потребности или выгоды, используя другой подход вы перечислили:

  • # 2: вам нужно обрабатывать где переинициализация не является проблемой.
  • # 3: вам нужно одновременно смешивать и обрабатывать два потока с разными частотами дискретизации, особенно если вы обнаружите, что SRCing сигнал несколько раз.

, но если вам просто нужно воспроизведение с использованием SRC и низкая латентность, это не проблема, вы можете попробовать AudioQueue.

0

Я уверен, что это невозможно сделать во время выполнения. Решение №2 - ваш лучший выбор, а также №3. Для преобразования частоты дискретизации файл libsndfile может быть адаптирован к вашим потребностям.

+0

Повторная выборка может быть выполнена во время выполнения. iOS 5 может иметь новую аудиоустройку, которая может выполнить повторную выборку для вас. – hotpaw2

0

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

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

Смежные вопросы