我一直在使用pygame.mixer
进行与声音有关的Pygame项目,但遇到了一个似乎无法解决的问题。我无法打开我尝试过的任何声音文件(.mp3和.midi)。
我在PyCharm 2018.3。上使用Python 3。我的Pygame主要是最新的(1.9.3版)。我尝试使用完整路径,已经完成pygame.init()
,mixer.init()
,但是我完全陷入困境。
这是我的代码:
import pygame
from pygame import mixer
pygame.init()
mixer.init(44100, 16, 2, 4096)
f = mixer.Sound("output.midi")
f.play()
print(bool(mixer.get_busy()))
while mixer.get_busy():
pass
这是错误(文件中的...
覆盖了实际的追溯):
Traceback (most recent call last):
File "/home/.../note.py", line 27, in <module>
f = mixer.Sound("output.midi")
pygame.error: Unable to open file 'output.midi'
该程序应该打开一个在程序另一部分(我已经注释掉)中创建的.midi
文件,并播放直到完成。相反,我只是得到了错误,没有声音播放。
答案 0 :(得分:0)
MIDI文件不是“声音文件”;它基本上是数字乐谱。您需要MIDI合成器才能从中产生声音。
然后用算法压缩MP3;这不是声音样本序列。
来自the PyGame.Mixer documentation:
可以从OGG音频文件或未压缩的WAV加载声音。
简而言之,您使用的工具错误。
答案 1 :(得分:0)
当然,您可以使用pygame播放MIDI文件。 MIdI文件的扩展名是.mid
(而不是代码中的.midi
)。这对我有用:
import pygame
def play_MIDI_pygame(midi_file):
freq = 44100 # audio CD quality
bitsize = -16 # unsigned 16 bit
channels = 2 # 1 is mono, 2 is stereo
buffer = 1024 # number of samples
clock = pygame.time.Clock()
pygame.mixer.init(freq, bitsize, channels, buffer)
pygame.mixer.music.set_volume(0.8) # volume 0 to 1.0
pygame.mixer.music.load(midi_file) # read the midi file
pygame.mixer.music.play() # play the music
while pygame.mixer.music.get_busy(): # check if playback has finished
clock.tick(30)
midi_file = 'myMidi.mid'
play_MIDI_pygame(midi_file)