我正在为一个项目使用 Music21 python 模块。我的代码输出生成一个 MIDI 文件。我希望这个 MIDI 文件听起来像吉他,但听起来像钢琴。我在这里看到了一个类似的问题,它说我应该在输出音符序列中的音符之前添加 instrument.Guitar() 。
但仍然像键盘一样弹奏音符。
这是根据一系列输入注释生成输出注释的代码:
for pattern in in_notes:
# pattern is a chord
if len(self.intervals)<1:
self.set_intervals()
if ('.' in pattern) or pattern.isdigit():
notes_in_chord = pattern.split('.')
notes = []
for current_note in notes_in_chord:
new_note = note.Note(int(current_note))
notes.append(new_note)
new_chord = chord.Chord(notes)
new_chord.offset = offset
output_notes.append(instrument.ElectricGuitar())
output_notes.append(new_chord)
# pattern is a note
else:
new_note = note.Note(pattern)
new_note.offset = offset
output_notes.append(instrument.ElectricGuitar())
output_notes.append(new_note)
# increase offset each iteration so that notes do not stack
offset += self.intervals[0]
self.intervals.pop(0)
以及生成输出 MIDI 文件的部分:
midi_stream = stream.Stream(output_notes)
key = midi_stream.analyze('key')
i=interval.Interval(key.tonic,pitch.Pitch(self.key))
midi = midi_stream.transpose(i)
midi.write('midi', fp=f'{self.file_name}.midi')
如何让它听起来像吉他?如果我尝试将乐器更改为小提琴,output_notes.append(instrument.Violin())
但不适用于任何吉他:- Guitar()、AcousticGuitar()、ElectricGuitar()