Как понизить звук на sdk Audioqueue iphone? - PullRequest
3 голосов
/ 09 октября 2009

Я использую RemoteIOPlayer Арана Малхоллана, использую аудио-очереди в iphone SDK. Могу без проблем - добавление двух сигналов для микширования звуков - увеличение громкости звука путем умножения UInt32, который я получаю из файлов wav

НО каждая другая операция дает мне искаженный и искаженный звук, и в частности я не могу разделить сигнал. Кажется, я не могу понять, что я делаю неправильно, фактический результат деления кажется хорошим; какой-то аспект обработки звука / сигнала, очевидно, ускользает от меня:)

Любая помощь приветствуется!

Ответы [ 3 ]

1 голос
/ 20 января 2010

Прежде всего упомянутый вами код не использует AudioQueues, он использует AudioUnits. Лучший способ микшировать звук в iphone - это использовать встроенные микшерные пульты. На сайте, где вы загрузили исходный пример, есть код с здесь . Кроме того, что я хотел бы проверить в вашем коде OS, что у вас есть правильный тип данных. Вы пробуете свои операции на неподписанных целочисленных, когда вы должны использовать подписанные? часто это приводит к искаженным результатам (понятно)

1 голос
/ 19 ноября 2009

Вы пробовали что-то подобное?

- (void)setQueue:(AudioQueueRef)ref toVolume:(float)newValue {
  OSStatus rc = AudioQueueSetParameter(ref, kAudioQueueParam_Volume, newValue);
  if (rc) {
    NSLog(@"AudioQueueSetParameter returned %d when setting the volume.\n", rc);
  }
}
0 голосов
/ 31 декабря 2009

iPhone обрабатывает аудио как 16-битное целое число. Большинство аудиофайлов уже нормализованы, поэтому пиковые значения семплов являются максимальными, которые помещаются в 16-разрядное целое число со знаком. Это означает, что если вы добавите два таких сэмпла вместе, вы получите переполнение или, в данном случае, обрезку звука. Если вы хотите смешать два аудиоисточника вместе и убедиться, что отсечения нет, вы должны усреднить сэмплы: сложить их вместе и разделить на два. Или вы установили громкость на половину. Если вы используете децибелы, это будет примерно на -6 дБ.

...