Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.22.51.241] |
|
Сообщ.
#1
,
|
|
|
Всем доброго времени суток.. Раньше никогда не работал со звуком, ну разве что с MMSystem... Видел множество алгоритмов БПФ, но если честно не могу их осилить без посторонней помощи (знаю что таких тем много) и сам БПФ у меня вроде бы адекватно работает. Но у меня проблема в другом.
1. Подскажите пожалуйста, как мне узнать какая нота проигрываются на данный момент. Понимаю что нота зависит от частоте колебаний, но что есть что - не могу понять. Т.е. с мат. точки зрения я знаю что такое амплитуда и период... но как это все работает в FFT алгоритмах затрудняюсь понять. 2. Даже если получится опредилить ноту сыгранную на одной струне (электрогитара), то как правильно нужно будет разбирать FFT где играет аккорд (две и более нот). Прикрепляю пример с исходником, звук берется с LineIn входа. Прикреплённый файлПроект.7z (174,48 Кбайт, скачиваний: 458) И пример с BASSом, где идет анализ MP3. Прикреплённый файлSampleVis.7z (117,94 Кбайт, скачиваний: 408) По какому примеру вам будет удобнее подсказать, по такому и подскажите..а я там уже сам постараюсь разобраться...Хотя планирую работать не с MP3 а с линейным входом, но еще не понял как в BASS брать с него в реал-тайм звук. Буду очень благодарен за любую помощь. |
Сообщ.
#2
,
|
|
|
Какая конечная цель проекта?
|
Сообщ.
#3
,
|
|
|
Сделать наглядную визуализацию игры на музыкальном инструменте подключенному по линейному входу... Будь то бас гитара, электроскрипка или синтезатор. Т.е. отображение динамики, акцентов, музыкальных интервалов и т.п. А на деле - 2D движок Andorra с системой частиц, которая будет анимированна на графике где X - ноты, а Y октавы.
А вот сама таблица частот нот... только я не знаю, где и как вытащить эти частоты для сравнения в FFT.. Прикреплённый файлtabl.gif (14,53 Кбайт, скачиваний: 2408) |
Сообщ.
#4
,
|
|
|
Нужен миди-датчик или миди-инструмент.
Выдрать нотную последовательность и частично динамику из аудио в принципе возможно для случая одноголосия. Вы взяли сложную задачу, а со звуком, как вы говорите, вообще не работали. Трудно вам что-то конкретное присоветовать. Возьмите для начала аудиоредактор, например, cooledit, позаписывайте звук гитары: отдельно звучащей струны, две-три струны, поиграйте. Посмотрите как выглядит и изменяется спектр. Наглядное представление полезно. Некоторые вопросы отпадут, появятся другие. Аналогичный спектр будет у вас после FFT. Математика математикой, но необходимо понимать, что именно вы собираетесь анализировать, а вы пока этого вообще не представляете. Имхо. |
Сообщ.
#5
,
|
|
|
Prince Спасибо за честный ответ... Я примерно так же думал про одноголосие и многоголосие.. там анализ сложный нужно делать... Ну, буду эксперементировать, anything - thanks...
|
Сообщ.
#6
,
|
|
|
Визуализация необходима для каких-то практических целей или "для красоты"?
Задачу (для начала?) можно упростить. Если разбить непрерывный спектр на интервалы, центры которых совпадают с частотами звукоряда и анализировать уровень звука в каждом интервале, а потом отобразить их в выбранной вами системе координат: октава-нота - получится в общем-то нечто подобное задуманному. Только будет отображаться не нотный состав а гармонический состав. Скажем, вместо одной ноты будет отображаться 5-9, по числу "обнаруженных" гармоник. |
Сообщ.
#7
,
|
|
|
Prince И для красоты и для практических целей.. для тренировки игры крайне желательно видеть динамику игры.. (громкость и силу атаки), длительности нот и сами ноты... играя и наблюдая - намного быстрее получится обжить гриф...
Цитата Prince @ Если разбить непрерывный спектр на интервалы, центры которых совпадают с частотами звукоряда и анализировать уровень звука в каждом интервале, а потом отобразить их в выбранной вами системе координат: октава-нота - получится в общем-то нечто подобное задуманному. Только будет отображаться не нотный состав а гармонический состав. Скажем, вместо одной ноты будет отображаться 5-9, по числу "обнаруженных" гармоник. Видимо это мне и нужно А как такое можно сделать и где можно вытянуть данные в FFT с частотами? |
Сообщ.
#8
,
|
|
|
Какие я вижу проблемы данного подхода:
1. Для нормального разбора нижних частот понадобится большой фрейм для FFT. 2. Полного качественного реалтайма не получится, программа будет реагировать с задержкой на рамер FFT-фрейма. 3. Пики атак и длительность нот также будут определятся дискретно по той же причине. Ну а разного рода алгоритмы можешь посмотреть здесь: http://musicdsp.org/archive.php?classid=2 Спектр FFT представляет собой линейное представление веса частот. Т.е. если надо найти вес 220 герц, то искать надо где-то в районе (Размер фрейма) * 220 / (Частота дискретизации сигнала). Из данной формулы видно, что если размер фрейма очень маленький, то низкие частоты просто сольются в несколько значений спектра. В общем дерзай, флаг, как говорится, в руки :-) |
Сообщ.
#9
,
|
|
|
Оооо!!))
Полезная информация Значит не я один интересуюсь данным вопросом |