私がやりたいことは次のとおりです。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で見つけました。この例は私にとってはうまくいきます。
私の例を機能させる方法がわかりません。