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

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

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

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

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

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

Благодарю.

2 ответа

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

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

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

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

Другие вопросы по тегам