Music21笔记的四分之一持续时间少于0.25吗?

问题描述

我想使用Music21读取一个midi文件(来自here的Chopin Etude Opus 25 No. 2,编号),然后重新创建它。当我从文件中读取笔记时,所有比第16个笔记短的笔记都会被“四舍五入”,当我使用note.quarterLength时,它将返回0.25。我是在做错什么,还是Music21的限制?

这是我读取文件的方式:

for file in glob.glob(midi_folder + '/*.mid'):
    midi = converter.parse(file)

    midi_notes = None

    try:
        instruments = instrument.partitionByInstrument(midi)
        for inst in instruments:
            if inst.partName == 'Piano':
                midi_notes = inst.recurse()
                break          
    except:
        midi_notes = midi.flat.notes
        
    for element in midi_notes:
        # do stuff with the note ...

解决方法

默认情况下,MIDI文件被量化。您可以在http://web.mit.edu/music21/doc/moduleReference/moduleConverter.html?highlight=converter%20parse#music21.converter.parse

上了解有关function onEdit(e) { var range=e.range; if (range.getSheet().getName() == "HAI Tracking Tool" && range.getValue() == "FINISHED") { CopyRange(); } } function CopyRange() { var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('HAI Tracking Tool'); var range = ss.getRange('A7:K24'); var data = range.getValues().map(r=>[...r,new Date(),"name"]); // change "name" to anything else var ts = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Push Sheet'); ts.getRange(ts.getLastRow()+1,3,data.length,data[0].length).setValues(data); ss.getRange('D7:K24').clearContent(); ss.getRange('N2').clearContent(); } 的量化参数的信息,包括如何配置或关闭量化功能。