Учитывая MP3, возможно ли использовать разные инструменты с помощью быстрого преобразования Фурье (БПФ)? - PullRequest
5 голосов
/ 09 августа 2011

Я работаю над музыкальным визуализатором, и я хотел бы отобразить разные визуальные элементы для каждого инструмента.Например, синяя полоса, представляющая вокал, красная полоса, представляющая гитару, желтая полоса, представляющая барабаны и т. Д.

Можно ли проанализировать результаты FFT, чтобы получить эту информацию?

Спасибо.

Ответы [ 2 ]

12 голосов
/ 09 августа 2011

Это сложная область исследований в области музыкальных технологий.

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

То, что вы пытаетесь сделать, называется разделением источника звука или разделением источника звука. Это преследует разделение аудиозаписи на ее составные элементы.

Этими элементами могут быть речь (несколько человек говорят одновременно - «проблема вечеринки с коктейлями») или инструменты (отделяющие один инструмент от другого в записи «слепое смешение»).

Существуют различные подходы, некоторые из которых основаны на характеристиках звука в частотной области, а другие - на пространственных свойствах.

Подход в частотной области может показаться довольно простым, если вы пытаетесь разделить бас-барабан и флейту (т. Е. Низкочастотные ячейки вашего БПФ будут бас-барабаном, а высокочастотные ячейки назначены для флейты), однако в звуки реальности редко аккуратно разделяются на полезные частотные области. Например, басовый барабан будет иметь гармоническое содержание вплоть до частотного спектра. Эти типы решений, следовательно, очень математически сложны и часто включают статистическое моделирование. Тяжелые вещи.

Разделение, основанное на пространственных свойствах звука, часто опирается на некоторые предварительные знания о том, где каждый источник находился до записи (это «не слепой»). Часто необходимо иметь более одного микрофона (по крайней мере, стереозапись). Используя некоторую умную математику, можно приблизиться к разделению источников, основываясь на знании того, где источник находится в пространстве, основываясь на соотношении сигналов на каждом микрофоне. Это также является основой для метода, называемого формированием луча, с помощью которого положение источника может быть определено с использованием массива микрофонов.

Итак, вернемся в нужное русло. Люди пытаются это сделать, но это сложно, а использование mp3 усложнит вашу жизнь!

Боюсь, я не знаю достаточно, чтобы лучше объяснить подходы, но я могу найти несколько ссылок, чтобы вы начали:

http://www.cs.tut.fi/~tuomasv/demopage.html

http://www.cs.northwestern.edu/~pardo/courses/eecs352/lectures/source%20separation.pdf (pdf предупреждение!)

Удачи!

4 голосов
/ 10 августа 2011

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

Что-то вроде:

sound = LoadMP3(...)
length = sound.SampleCount
left = sound.Channels[LEFT]
right = sound.Channels[RIGHT]
for i = 0:length
    difference[i] = left[i] - right[i]

Теперь вы можете посмотреть на умные способыдля визуализации БПФ (слева), БПФ (справа) и БПФ (разница).

Может быть, это сделает небольшой шаг к желаемому эффекту?

...