音乐中的旋律搜索、模式替换与伸缩变换
1. 旋律搜索基础
旋律搜索的结果“answers”是一个位置匹配列表。例如,在某个搜索中,在位置(1, 2)处有一个匹配,也就是在音乐的半音符处。默认的搜索是基于轮廓和结构匹配,通常不会对和声语境轨道(HCT)进行匹配,比如调性主音。不过,也可以进行精确的调性主音匹配。
以下是一段示例代码,展示了如何进行旋律搜索:
from search.melodicsearch.global_search_options import GlobalSearchOptions
from search.melodicsearch.melodic_search import MelodicSearch
lge = LineGrammarExecutor()
pattern = '{<C-Major: I> qC:4 D}'
target = '{qC:4 D <E-Major: v> F# <Ab-Minor: ii> Bb C Db <D-Major: I> D E F#}'
target_line, target_hct = lge.parse(target)
search = MelodicSearch.create(pattern)
answers = search.search_hct(target_hct, GlobalSearchOptions())
answers = search.search(target_line, target_hct,
GlobalSearchOpti