2016-12-08 6 views
1

Я обрабатываю большую часть файлов midi, которые сделаны для существующих поп-песен с использованием music21.music21: выбор мелодии трека

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

Я предполагаю, что один из способов сделать это - выбрать дорожку, состоящую из отдельных заметок, а не перекрывающихся гармоник (аккордов) и той, которая играет по всей песне, но есть ли другой эффективный способ?

ответ

1

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

import music21 
from music21 import * 

piece = converter.parse("full_path_to_piece.midi") 
for part in piece.parts: 
    print(part[0].bestName()) # replace this print statement with a relevant if statement 
+0

Thanx! Использует ли bestName имена треков, установленные пользователем, или автоматически соответствует имени звукового патча? Кроме того, что происходит, когда bestName возвращает None? – ytrewq

+0

Согласно документам на bestName(), он говорит, что он делает это: «Найдите жизнеспособное имя, глядя сначала на инструмент, затем часть, затем сокращения». Я предполагаю, что он вернет None, если ни одно из этих предметов не будет дано имя в исходном файле. Вот документация: http://web.mit.edu/music21/doc/moduleReference/moduleInstrument.html?highlight=bestname#music21.instrument.Instrument.bestName – Alex

0

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

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

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