如何用Python编写MIDI文件?

pst*_*p92 9 python midi

我正在编写一个脚本,根据各个像素的RGBA值将图片转换为MIDI音符.但是,我似乎无法完成最后一步,即将注释实际输出到文件中.我曾尝试使用MIDIUtil库,但它的文档并不是最好的,我似乎无法弄明白.如果有人能告诉我如何对音符进行排序(以便它们不是从头开始),我们将不胜感激.

提前致谢.

Hug*_*ell 17

看样品,像

from midiutil.MidiFile import MIDIFile

# create your MIDI object
mf = MIDIFile(1)     # only 1 track
track = 0   # the only track

time = 0    # start at the beginning
mf.addTrackName(track, time, "Sample Track")
mf.addTempo(track, time, 120)

# add some notes
channel = 0
volume = 100

pitch = 60           # C4 (middle C)
time = 0             # start on beat 0
duration = 1         # 1 beat long
mf.addNote(track, channel, pitch, time, duration, volume)

pitch = 64           # E4
time = 2             # start on beat 2
duration = 1         # 1 beat long
mf.addNote(track, channel, pitch, time, duration, volume)

pitch = 67           # G4
time = 4             # start on beat 4
duration = 1         # 1 beat long
mf.addNote(track, channel, pitch, time, duration, volume)

# write it to disk
with open("output.mid", 'wb') as outf:
    mf.writeFile(outf)
Run Code Online (Sandbox Code Playgroud)

  • @Cai 从 Python3.9 开始你不再需要这样做。使用“from midiutil.MidiFile import MIDIFile”可以解决问题 (2认同)

小智 12

我知道这是一个老帖子,但我是图书馆的作者,我想提一下现在已经统一了python 2和3支持,随着Google Code的消亡,代码现在托管在GitHub上,可以是通过pip安装,即:

pip install MIDIUtil
Run Code Online (Sandbox Code Playgroud)

阅读文档中提供了文档.

(试图发表评论,但我缺乏经验值.)

当文件写入磁盘时,会自动创建跟踪结束消息.

  • 嗨马克.我有一个连续时间戳的文件,对于文件中的每个时间戳,我想要播放一个音符,比如C64 Maj.没有节奏,就像即兴创作一样,邮票是随机的......我怎么办?将它们"按原样"放到midi文件中? (3认同)