2013-06-24 1 views
2

Ну, это мой первый вопрос о потоке stackoverflow, который так волнует его :) Вот он: Мой ввод - это волновой файл. На данный момент я записал пьесу с помощью своей гитары. Таким образом, файл волны содержит эту инструментальную запись. То, что я хочу сделать, - получить музыкальную нотацию (A, B, C и т. Д.) Каждой ноты, которая воспроизводится. Я слышал о таких методах, как FFT, но, учитывая мои плохие знания о том, как использовать FFT, я подумал об использовании библиотеки aubio.Получение музыкальных нот с использованием библиотеки aubio

Таким образом, aubio предоставляет: aubiopitch, который извлекает кандидатов высоты и aubiocut, который извлекает наборы.

Место, где я застрял: Как получить частоту в конкретном примечания, использованного aubio? По мне, помощник и абубиок помогут, но я не понимаю, как сделать сопоставление между ними. Любая помощь будет принята с благодарностью :)


Hi piem: Спасибо за ваш ответ. Не могли бы вы проанализировать этот результат?

aubiopitch -i Reverse_Open.wav

1,408 68,9486465454

1,536 81,7372512817

1,664 164,290893555

1,792 164,464691162

1,92 82,6862487793

2,048 328,539306641

2,176 218,885116577

2,304 219,06237793

2,432 219,042160034

2,56 219,133621216

2,688 145,751785278

2,816 146,437744141

2,944 146,199829102

3,072 195,059829712

3,2 194,912689209

3,328 195,724975586

3,456 195,517547607

3,584 247,317428589

3,712 246,764221191

3,84 246,857452393

3,968 145,454727173

4,096 328.569610596

4,224 329,625823975

4,352 329,16619873

4,48 328,906402588

4,608 328,96786499

4,736 329,187835693

4,864 145,741394043

Мои ноты с частотами: E(82 approx),A(110),D(147),G(197),B(247),E(329.2) , которые играют в 1.344,1.888,2.4,2.88,3.36,3.872 resp (согласно aubiopitch, который, я полагаю, является правильным). Любая идея, как извлечь эти 6 заметок и их время из выведенного выше результата?

ответ

4

aubiopitch выводит список кортежей. Каждый кортеж содержит два поплавка:

  • отметку времени в секундах
  • фундаментальная частота в герцах

Вот пример на гитарный звук:

$ aubiopitch -i guitar_Cold_Blood_-_Baby_I_Love_You.wav | head 
0.000000 0.000000 
0.005805 293.884338 
0.011610 386.387207 
0.017415 0.000000 
0.023220 551.689758 
0.029025 3608.569336 
0.034830 3588.231201 
0.040635 416.824066 
0.046440 3606.715576 
0.052245 417.116425 

, если Вам интересно (пожалуйста), вы можете получить последнюю версию git и попробовать демо-скрипт demo_pitch.py:

$ ./python/demos/demo_pitch.py bass_Don_Ellis_-_Conquistador.wav 

вы получите следующий сюжет:

aubio pitch demo plot

  • Первая строка представляет собой форму волны.
  • Вторая строка, извлеченная дорожка основного тона, в средней частоте.
  • Третье, доверие этих кандидатов высоты (с использованием алгоритма yinfft).

В этом примере басовой линии извлечение высоты тона во время переходных атак является более сложным, чем в устойчивом состоянии. Кандидаты с шагом, которые находятся ниже произвольного порога (здесь 0,8), могут быть отброшены (пунктирная зеленая линия), в то время как другие могут быть сохранены (сплошная синяя линия).

+0

@sarju, если вы хотите извлечь заметки, вы можете использовать медианный фильтр над кандидатами высоты, чтобы определить длинный участок с почти постоянным шагом. Это то, что делает «aubionotes», также комбинируя смолы с onsets. – piem

+0

piem: Получил заметки. Большое спасибо! Я действительно читал об aubionotes, но почему-то пропустил, что выход был на MIDI и отклонился от него. Спасибо, что указали на это :) Теперь работает отлично. – Sarju

 Смежные вопросы

  • Нет связанных вопросов^_^