1

我正在为一个项目使用 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()

4

0 回答 0