Jump to content

    

Распознавание нот

Здравствуйте. Решил научиться программно распознавать ноты на гитарном грифе. Нашел таблицу частот, где по горизонтали - номера ладов, по вертикали- номера струн:

Получается, что частота, например,  330 Гц встречается 5 раз на грифе. Каким образом я могу распознать конкретное место на грифе если они звучат одинаково? 

FretFreq.jpg

Share this post


Link to post
Share on other sites
1 minute ago, Skryppy said:

распознавать ноты

А что в качестве датчика? Иначе не понятно, как "распознавать"?

Share this post


Link to post
Share on other sites

Я взял wav файл и обработал небольшую часть его в матлаб. С помощью алгоритма Герцеля успешно детектирую частоты. Но они звенят на разных струнах одинаково ( открытая первая струна  и вторая струна на 5 ладу равны 330 Герц)

Share this post


Link to post
Share on other sites

Ни разу не спец, но может остальные ноты, соответствующие ладу, искать? Если весь лад поджал, то соседние струны тоже должны колебаться по идее. 

Share this post


Link to post
Share on other sites

Вот, какое распределение амплитуд время обработки = 1/16 ноты, когда звучит следующая пачка все сдвигается синхронно

Первый момент времени:

Следующий момент 1/16 ноты:

 

IMG_20200514_163730.jpg

IMG_20200514_164005.jpg

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

Share this post


Link to post
Share on other sites

Не спец, но. Без датчика положения руки/прижатия лада мне непонятно, как детектировать, на какому ладу зажата струна. Допустим, полный аккорд можно оценить по комбинации отклика со всех струн, как выше сказали. Но и то - эти отклики будут перекрываться.

Но всё портит возможность сыграть одну струну на любом ладу.

Детектор нот - пожалуйста. Но вот детектор аккордов...

Share this post


Link to post
Share on other sites
54 minutes ago, Skryppy said:

Каким образом я могу распознать конкретное место на грифе если они звучат одинаково

Так ищите сразу аккорды, т.е., комбинации найденных нот.

Share this post


Link to post
Share on other sites
17 minutes ago, blackfin said:

Так ищите сразу аккорды, т.е., комбинации найденных нот.

как-бы "аккорд" будет даже на одной струне, за счет гармоник. Да, основная частота будет на толстой и тонкой струнах одинакова, 

но мех. характеристики "резонаторов" разные, соотв-но тембра будут отличаться.

Share this post


Link to post
Share on other sites
5 minutes ago, k155la3 said:

как-бы "аккорд" будет даже на одной струне, за счет гармоник.

Я не про гармоники. Я про то, что пальцы на грифе нельзя одномоментно растопырить шире чем на 10 см. 

Share this post


Link to post
Share on other sites

Буду пробовать определять по тембру. Я так понял, что тембр - это набор гармоник - 1,2,3 и т.д., а также их сум и разностей. Завтра попробую сделать бпф и посмотреть на амплитудное распределение всех гармоник, а не только тех, что могут звучать на ладах гитары. 

Share this post


Link to post
Share on other sites
2 hours ago, Skryppy said:

Получается, что частота, например,  330 Гц встречается 5 раз на грифе. Каким образом я могу распознать конкретное место на грифе если они звучат одинаково? 

вы гитару хоть раз сами на слух настраивали?

вторая струна настраивается так, чтобы зажатая на пятом ладу звучала так же как и первая открытая.

третья на 4м ладу как открытая вторая и т.д.

и отличить их не удастся, гармоники там тоже будут сильно похожими.

только, как предложил blackfin, наложить дополнительные ограничения чтобы последовательные/одновременно звучащие ноты были физически рядом на грифе.

Share this post


Link to post
Share on other sites
14 minutes ago, Skryppy said:

Буду пробовать определять по тембру. Я так понял, что тембр - это набор гармоник - 1,2,3 и т.д., а также их сум и разностей. Завтра попробую сделать бпф и посмотреть на амплитудное распределение всех гармоник, а не только тех, что могут звучать на ладах гитары. 

Если у Вас не электрогитара, а акуст. звук, или запись, то будет сложно, по причине "послезвука" и резонансов в самом корпусе.

Share this post


Link to post
Share on other sites

Автор топика, изобретаете "Шазам" только с выдачей нот/табулатур сразу?

Just now, k155la3 said:

то будет сложно, по причине "послезвука" и резонансов в самом корпусе.

А если ещё и "дисторшн" сверху...

Share this post


Link to post
Share on other sites
6 minutes ago, Skryppy said:

Буду пробовать определять по тембру.

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

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

 

Это, естественно, только для электрогитары прокатит, если это съем акустической гитары микрофоном, то там все реверберация поломает нафиг.

47 minutes ago, blackfin said:

Я не про гармоники. Я про то, что пальцы на грифе нельзя одномоментно растопырить шире чем на 10 см. 

Есть еще масса возможностей аккордов с открытыми струнами. Например, прижатые пятая и четвертая струна на седьмом и пятом ладу соответственно (а остальные струны нигде не прижаты, открыты, как говорят) - вполне себе ми-минор, а расстояние там будь здоров.

 

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

 

Ах да,  вишенкой на тортике еще есть такая шутка, как бэнды. Утягиваешь пальцем струну, чтобы повысить тон звучания. Бывают на целое число полутонов, а бывают и на четверть тона, в блюзе например. Очень распространенная вещь в игре на гитаре.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now