Как быстро просмотреть циклы аудио и определить их значения семплов (амплитуда / уровень мощности и т. Д.) В Core Audio? - PullRequest
1 голос
/ 01 августа 2011

То, что я пытаюсь сделать, в основном таково:

  1. Откройте файл, определите, сколько «сэмплов» мне понадобится, исходя из его продолжительности
  2. Деление файла на x образцов; определить (средний) уровень мощности / амплитуду для каждого образца.
  3. Используя эти примеры значений, приступайте к рисованию формы волны, представляющей аудио (следуя этим рекомендациям , возможно)

Я провел около трех дней, тщательный поиск по онлайн-форумам, книгам и API-интерфейсам безрезультатно. Я застрял на самом важном этапе -> определении уровня мощности для фрагмента (буфера) аудио.

Прочитав большую часть будущей книги Core Audio , я освоился с низкоуровневой средой AudioQueues, аудиоустройствами и в некоторой степени - OpenAL. Тем не менее, все примеры и объяснения, которые я видел (в этой книге и в других местах в Интернете), имеют дело с определением значений уровня мощности либо во время воспроизведения или записи аудиофайла (то есть в реальном времени).

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

Спасибо.

Ответы [ 2 ]

1 голос
/ 07 августа 2011

Есть несколько способов добиться этого.Вы можете прочитать весь файл в память и затем применить анализ.Или прочитайте фрагменты файла и получите средний уровень для каждого фрагмента, используя AudioFileReadPackets (...) в AudioFile.h.

0 голосов
/ 07 августа 2011

На какой части вы застряли? Я еще не играл с чтением или записью в файл, так что кто-то другой может помочь вам с этим аспектом. Но с точки зрения фактической обработки аудиопотока вы захотите использовать ускорение фреймворка. Он содержит функции для получения нужных вам данных. Для получения уровня мощности, я не уверен, нужно ли вам сначала БПФ сигнал.

Если да, я написал длинный ответ Использование Apple FFT и Accelerate Framework о том, как сделать FFT с ускоренной структурой.

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

...