如何使用python根据音符音高分割midi文件?

Posted

技术标签:

【中文标题】如何使用python根据音符音高分割midi文件?【英文标题】:How to split midi file based on notes pitch using python? 【发布时间】:2020-09-20 14:18:02 【问题描述】:

如何使用 python 根据音高分割 MIDI 文件?我尝试了 music21 库,但我真的不知道它是如何工作的......

【问题讨论】:

你所说的“在球场上分开”是什么意思? 例如,当我有一个较低的 c 和一个较高的 c 时,它应该分成两个 .mid 文件。 【参考方案1】:

试试这个代码:

import pretty_midi
import copy

pitch_cutoff = 65

mid = pretty_midi.PrettyMIDI('my_file.mid')
low_notes = copy.deepcopy(mid)
high_notes = copy.deepcopy(mid)

for instrument in low_notes.instruments:
    for note in instrument.notes:
        if note.pitch > pitch_cutoff:
            note.velocity = 0

for instrument in high_notes.instruments:
    for note in instrument.notes:
        if note.pitch < pitch_cutoff:
            note.velocity = 0

low_notes.write("low_notes.mid")
high_notes.write("high_notes.mid")

它使用pretty_midi 模块将一个midi 文件拆分为两个不同的文件。名为“high_notes.mid”的文件将仅在您将pitch_cutoff 变量设置为的上方有注释,而“low_notes.mid”将仅在其下方有注释。只需将“my_file.mid”更改为您的文件名并尝试一下。如果您有任何问题,请告诉我。

【讨论】:

以上是关于如何使用python根据音符音高分割midi文件?的主要内容,如果未能解决你的问题,请参考以下文章

Python 编写 MIDI 文件

AudioKit:如何更改使用 AKMIDIEvent 播放的音符的音量或音高?

从 MIDI 中提取音符开始

LSTM 多特征、多类、多输出

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

如何在Java声音中连续改变音高?