我想要做的是:创建一个 MIDI 文件,但只在内存中,并将其输入pygame.mixer.music.load()
. 这是我一直在尝试的(我从这里使用 MidiFile ):
import pygame.mixer
import MidiFile3
import io
pygame.mixer.init()
midi = MidiFile3.MIDIFile(1) # midi file with one track
midi.addTrackName(0,0,"Track 1") #Track Name on track 0, position 0
midi.addTempo(0,0,120) #Tempo to 120 bpm on track 0, position 0
for i in range(8):
midi.addNote(0,0,60,i,1,100) #add 8 c1-notes to the track
bytestream = io.BytesIO()
midi.writeFile(bytestream)
pygame.mixer.music.load(bytestream.getvalue())
在这里我收到错误消息
pygame.error: File path 'MThd' contains null characters
当我做
bytestream = open('file.mid','wb')
midi.writeFile(bytestream)
bytestream.close()
pygame.mixer.music.load('file.mid')
它按预期工作。
当然,我知道包含文件名的字符串和包含文件内容的字节字符串之间是有区别的。但我在 Daniweb 上找到了这篇使用字节流的帖子,这个例子对我有用。
我只是不知道如何让我的例子起作用。