music21 の WindowAnalysis を試してみました。ただし、ウィンドウのインデックスを曲の時間 (秒単位) に変換する方法を知りたいと思っていました。たとえば、最初のウィンドウが再生された時刻をどのように知ることができますか? 例: 曲の 2.5 秒
s = music21.converter.parse('../data/medley/15046.midi')
p = music21.analysis.discrete.KrumhanslSchmuckler()
wa = music21.analysis.windowed.WindowedAnalysis(s, p)
windo_count=4
a, b = wa.analyze(windo_count)
song = pm.PrettyMIDI('../data/medley/15046.midi')
cello_program = pm.instrument_name_to_program('Cello')
cello = pm.Instrument(program=cello_program)
prev=a[0]
change_loc=[]
#some code that detects change and should append now the time in seconds
for i,beat in enumerate(a[1:]):
#i is the tuple (key,major/minor/etc,time)
if beat[0]!=prev[0] and beat[1]!=prev[1]:
#key changed, at index
change_loc.append(my_question)