我正在尝试创建一个小程序,它将读取我在文本文件中编写的注释并将其作为钢琴音乐播放。
我正在使用pygame并使用调音台播放.aiff
声音文件。一切正常,但它不会超过8个音符。有人对这个有了解吗?我尝试了不同的文件和笔记,它总是在第8个音符后停止,但它将完整地播放该音符。
以下是一些代码:
lines = f.readlines()
while lines[x] != '':
line = lines[x]
readingframe = line[b:b+4]
for t in times:
if t in readingframe:
c = line.index(t,b)
note = line[b:c]
sound = mixer.Sound('C:/Python27/piano/' + note +'.aiff')
sound.play()
time.sleep(timeCorrespondence[t])
b = c+1
这是我用来测试的样本音乐之一(O Canada):
a4hc5qc5if4hg4qa4qbb4qc5qdb5qg4wz
使用'z'是因为我设置的阅读框是4,有些作品以白色键结束,只有三个字母(abc),其中a是音符,b表示位置,c表示长度。
答案 0 :(得分:1)
这个小修补程序可以解决您的问题:
lines = f.readlines()
while lines[x] != '':
line = lines[x]
readingframe = line[b:b+4]
while b < len(readingframe):
for t in times:
if t in readingframe:
c = line.index(t,b)
note = line[b:c]
maxTime = timeCorrespondence[t] * 1000
sound = mixer.Sound('C:/Python27/piano/' + note +'.aiff')
sound.play(maxtime=maxTime)
b = c+1
break
希望这对你有所帮助。
答案 1 :(得分:0)
Pygame默认有8个频道。
调音台默认支持8个同步声音文件。您可以使用set_num_channels()函数随时更改可用声道数。
https://www.pygame.org/docs/ref/mixer.html#pygame.mixer.get_busy