2013-05-12 157 views
0

我想用pygame聲音播放聲音。我的代碼是這樣的:Pygame播放聲音阻止

from tkinter import * 
import pygame 
root= Tk() 
pygame.init() 
bass = pygame.mixer.Sound('sounds\\bass.wav') 
snare = pygame.mixer.Sound('sounds\snare.wav') 
crash = pygame.mixer.Sound('sounds\crash.wav') 
bass.play() 
snare.play() 
crash.play() 
root.mainloop() 

當我運行此代碼時,所有三個波形文件一起播放。

我想一個接一個地播放它們,並且可能控制每個連續聲音之間的時間差。

什麼是一個優雅的方式來做到這一點?

非常感謝您的回覆。

回答

1

pygame.mixer.music模塊允許您排列要播放的文件,但我不知道如何在聲音之間指定緩衝區。

http://www.pygame.org/docs/ref/music.html#pygame.mixer.music.queue

pygame.mixer.music.load('sounds\bass.wav') 
pygame.mixer.music.queue('sounds\snare.wav') 
pygame.mixer.music.queue('sounds\crash.wav') 
pygame.mixer.music.play() 

要知道,mixer.music流音頻,不像mixer.Sound對象,它會首先加載整個文件。

+0

嗨,這個代碼只播放第一個加載的聲音。我需要初始化一些添加的參數。我目前使用pygame.init(),它只播放第一個聲音。 wav文件全部是一秒鐘,如果這是一個令人擔憂的問題 – oat 2013-05-14 09:20:56

+0

嗯。在文檔中,它顯示了正在加載的第一個聲音,然後播放,並且在播放時,其他聲音正在排隊。你嘗試過嗎? – Haz 2013-05-14 13:56:06

+0

是的,我嘗試這個例子以及pygame文檔中顯示的一個。我仍然只能播放第一個聲音:( – oat 2013-05-14 16:39:08