你記得倒回你的StringIO緩衝區嗎?
我經歷了你所做的所有步驟,並得到了同樣的錯誤。然後,我在sourceforge(2006年)追蹤了012ops164RWops庫,並準備對此負責。
然後,在模塊tempfile中的對象成功後,我嘗試從模塊IO的ByteIO。他們都工作,但我在裝載之前與他們一起尋找(0)。
所以我回到了StringIO,並且在加載之前做了一次seek(0),並且成功了!
這裏是樣品的編輯和修改凝結從midutil:
from midiutil.MidiFile import MIDIFile
from StringIO import StringIO
# CREATE MEMORY FILE
memFile = StringIO()
MyMIDI = MIDIFile(1)
track = 0
time = 0
channel = 0
pitch = 60
duration = 1
volume = 100
MyMIDI.addTrackName(track,time,"Sample Track")
MyMIDI.addTempo(track,time,120)
# WRITE A SCALE
MyMIDI.addNote(track,channel,pitch,time,duration,volume)
for notestep in [2,2,1,2,2,2,1]:
time += duration
pitch += notestep
MyMIDI.addNote(track,channel,pitch,time,duration,volume)
MyMIDI.writeFile(memFile)
# PLAYBACK
import pygame
import pygame.mixer
from time import sleep
pygame.init()
pygame.mixer.init()
memFile.seek(0) # THIS IS CRITICAL, OTHERWISE YOU GET THAT ERROR!
pygame.mixer.music.load(memFile)
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
sleep(1)
print "Done!"
驚人的傢伙,我已經想這是一個失敗的事業。如果有人說你需要「回放」文件來播放它,我會認爲那個人很瘋狂。但儘管如此,它像一個魅力。 – 2014-12-17 08:05:29