Подтвердить что ты не робот

Использование AVFoundation/CoreMedia/Другие рамки для обнаружения Beats/Onsets

(Предисловие: Это мой первый связанный с аудио вопрос о переполнении стека, поэтому я постараюсь рассказать об этом как можно лучше. Edits welcome.)

Я создаю приложение, которое позволит пользователям зацикливать музыку. На данный момент наши прототипы позволяют этим "маркерам петли" (реализованным как UISliders) мгновенно щелкнуть каждую секунду, указав начало и конец цикла. Очевидно, что при циклизации музыки секунды являются очень грубым способом справиться с этим, поэтому я хотел бы использовать биты вместо этого.

Я не хочу делать ничего, кроме отметок, для UISliders для привязки к:

  • Подайте наш loadMusic метод аудиофайла.
  • Запустите его через библиотеку для обнаружения ударов или интервалов между ними (возможно).
  • Подайте это значение в метод слайдера setNumberOfTickMarks:.
  • Profit!

К сожалению, большинство результатов, с которыми я столкнулся через Google и SO, дали гораздо более продвинутые библиотеки обнаружения бит, такие как те, которые будут использовать ремиксеры. Overkill в моем случае.

Это то, что может обрабатывать CoreMedia, AVFoundation или AudioToolbox? Если нет, существуют ли другие библиотеки, которые могут справиться с этим? Мои исследования в документации Apple дали только соответствующие результаты... для файлов MIDI. Но у собственного программного обеспечения Apple есть такие функции, как функциональность iMovie для привязки к ударам.

Любое руководство, код или тезисы были бы чрезвычайно полезны на этом этапе.

EDIT: После того, как вы немного поработаете, кажется, что правильная терминология для того, что я ищу, - это обнаружение начала.

4b9b3361

Ответ 1

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

если вы хотите быстро и просто определить, где биты:

  • Отрежьте музыкальный сигнал на небольшие сегменты (20-50ms куски)

  • Вычислить среднеквадратичное значение среднего значения сигнала: Sum(Xn ^2) / N (где N - число выборок за 20-50ms)

Если вы хотите изучить более сложные методы:

http://bingweb.binghamton.edu/~ahess2/Onset_Detection_Nov302011.pdf

или для лечения хардкора:

http://www.elec.qmul.ac.uk/people/juan/Documents/Bello-TSAP-2005.pdf