问题描述
我想使用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();
}
的量化参数的信息,包括如何配置或关闭量化功能。