如何使用 Python 中的长笛乐器从音符制作 MIDI 文件(music21 库)

Posted

技术标签:

【中文标题】如何使用 Python 中的长笛乐器从音符制作 MIDI 文件(music21 库)【英文标题】:How to make MIDI file from notes with Flute instrument in Python (music21 library) 【发布时间】:2019-03-14 19:01:09 【问题描述】:

我有一些笔记,我想要的是用长笛乐器创建 MIDI 文件。但是会发生的是输出的 MIDI 文件播放的是钢琴,而不是长笛。我尝试了其他乐器,但总是一样,钢琴。怎么回事?

(...)
new_note = note.Note(pattern)
new_note.offset = offset
new_note.storedInstrument = instrument.Piano()
output_notes.append(new_note)
(...)
midi_stream = stream.Stream(output_notes)
midi_stream.write('midi', fp='output.midi')

【问题讨论】:

【参考方案1】:

根据documentation,具有storedInstrument 属性的唯一类是note.Unpitched

还有:

Unpitched 对象目前没有做任何事情,不应使用。

无论如何,music21/midi/translate.py 中的testMidiProgramChangeA/B 函数显示了如何完成此操作:只需将仪器对象添加到应该使用它的Notes 之前的Stream 中:

output_notes.append(instrument.Flute())
new_note = ...
output_notes.append(new_note)
...

【讨论】:

以上是关于如何使用 Python 中的长笛乐器从音符制作 MIDI 文件(music21 库)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 unix 中将 midi 音符输出到 midi 乐器?

Java MIDI - ControllerEventListener(如何更改乐器)

Java 从 MIDI 序列中获取乐器列表

音频处理乐器音符播放时电流处理 ( 使用均衡器调节低频 )

music21:从平面乐谱中获取 midi 声音的声音/程序/乐器?

如何在 Python 中演奏音符?