Как выяснить паттерны песни (ритм) с помощью AS3 SoundMixer.computeSpectrum?

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

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

я использую SoundMixer.computeSpectrum чтобы получить ByteArray состоит из интенсивности / частоты спец. это ByteArray это кормить каждые 1/10 секунды. Я пытаюсь сгруппировать аналогичные данные интенсивности / частоты в словарях, чтобы выяснить паттерны песни.

Фигура, которая объясняет это лучше

Я получаю шаблоны по:

  • Семьи (вся спецификация int/freq каждая 1/10): Однако повторять семью в песне очень редко. Практически никогда не бывает.
  • Член семьи (индивидуумы int/freq ids): члены семьи обычно повторяются, но в одиночку они бесполезны.
  • Twin Family Brothers (группа членов семьи, которая всегда звучит вместе): Это работает, но я получаю МНОГО групп близнецов, поэтому очень сложно их проанализировать и выяснить, какие из них являются основными.

Знаете ли вы, есть ли лучший способ выяснить паттерны песни (ритм), используя AS3 SoundMixer.computeSpectrum или любой другой объект / рамки / API?

П.Д.: У меня нет передовой теории музыки.

1 ответ

Julapy опубликовал демо-версию и код, который обнаруживает очевидный удар. Julapy собирает энергию от computeSpectrum. Julapy агрегирует в широкой полосе частот, а не в узких полосах (члены семьи): http://www.julapy.com/blog/2007/12/30/beat-detection-in-flash/

Честно говоря, я никогда не кодировал алгоритмы ниже, но на странице 2 статьи "Алгоритмы обнаружения ударов" предлагается оценивать удары в минуту, оценивая периоды одной и той же полосы частот. Похоже, вы могли бы расширить подход Юлапи: http://archive.gamedev.net/archive/reference/programming/features/beatdetection/page2.html

Кстати, демонстрация звукового анализатора и код в платформе HYPE также визуализируют computeSpectrum новыми способами. Хотя эта проблема не решается, возможно, стоит прочитать код, связанный с computeSpectrum: http://www.hypeframework.org/02_examples/soundanalyzer/content/01_soundanalyzer/

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