pygame.mixer是乙個用來處理聲音的模組,其含義為「混音器」。遊戲中對聲音的處理一般包括製造聲音和**聲音兩部分,這裡僅學習了**聲音部分。
1、pygame.mixer啟動與初始化
pygame.mixer.init():mixer的初始化。程式中,使用時,一般放在最前面的幾句**中:
複製** **如下:
import pygame
pygame.init()
pygame.mixer.init()
2、**聲音片段w**檔案
**聲音片段w**檔案時,pygame.mixer使用sound物件,格式為:
複製** **如下:
soundw**=pygame.mixer.sound("filename.w**") #filename.w**檔名
soundw**.play()
在遊戲中,往往用下面的**來完成:
複製** **如下:
import pygame,sys
pygame.init()
pygame.mixer.init()
screen=pygame.display.set_mode([640,480])
pygame.time.delay(1000)#等待1秒讓mixer完成初始化
soundw**=pygame.mixer.sound("filename.w**")
soundw**.play()
while 1:
for event in pygame.event.get():
if event.type==pygame.quit:
sys.exit()
3、*****、wma、o程式設計客棧gg**檔案
這裡只是學習了乙個***檔案,如果非windows系統,那可以程式設計客棧試試ogg檔案。****檔案主要使用pygame.mixer中的music模組,主要方法為:
複製** **如下:
pygame.mixer.music.load("filename.***")
pygame.mixer.music.play(n,start,stop)#第乙個引數為**次數,如果是-1表示迴圈**,省略表示只**1次。第二個引數和第三個引數分別表示**的起始和結束位置。
完整的**為:
複製** **如下:
import pygame,sys
pygame.init()
pygame.mixer.init()
screen=pygame.display.set_mode([640,480])
pygame.time.delay(1000)
pygame.mixer.music.load("filename.***")
pygame.mixer.music.play()
while 1:
for event in pygame.event.get():
if event.type==pygame.quit:
sys.exit()
程式在執行時,一旦開始****,就會繼續做下一件事情,也就是說,如果我們要**兩首歌,那麼
複製** **如下:
pygame.mixer.music.load("filename1.***")
pygame.mixer.music.pwww.cppcns.comlay()
pygame.mixer.music.load("filename2.***")
pygame.mixer.music.play()
這段**執行後,就會出現兩首歌同時在**的情況。實際中,我們常常需要**完一首,再**另一首,這樣就需要利用pygame.mixer.music.get_busy()函式來判斷,如果函式返回值為true那麼說明目前處於忙的狀態,否則返回 false。例如:
複製** **如下:
import pygame,sys
pygame.init()
pygame.mixer.init()
screen=pygame.display.set_mode([640,480])
pygame.time.delay(1000)
pygame.mixer.music.load("filename.***")
pygame.mixer.music.play()
soundw**=pygame.mixer.sound("filename.w**")
while 1:
for event in pygame.event.get():
if event.type==p程式設計客棧ygame.quit:
sys.exit()
if not pygame.mixer.music.get_busy():
soundw**.play()
pygame.time.delay(5000)#等待5秒讓filename.w****結束
sys.exit()
4、控制音量pygame.mixer.music.set_volume()用來控制音量,取值範圍為0-1.0的浮點數。0為最小值,1為最大值。
5、製作*****器中遇到的問題
python+wxpython+pygame完全可以很容易方便的做出乙個*****器,但是在製作中遇到兩個問題:
一是中文歌曲名的顯示,通過搜尋已經解決,加上# encoding='gbk'
二是pygame在*****檔案時,發現並不是所有的***檔案都有**,常常會出現**聲音不正確的情況,有時只是雜響。經過與python學習***(2)中的すeasyげ交流,すeasyげ提出位速128kbps的***檔案可以**,但從網上下了幾個128kbps的***測試後,發現**不正常的情況依然存在。不知道哪位大牛能解決這一問題,希望能把解決方法告知一下,謝謝。
因此,如果您打算寫乙個***的**工具,python能做*****的模組很多,這裡,我覺得可以考慮使用***play模組,比較方便簡單。目前版本為***play 0.1.15,具體**位址為這裡簡單介紹一下其主要方法:
play(n,starms,endms):**,第乙個引數表示次數,第
二、三個引數表示**的起止位置,單位是毫秒。
stop(): 停止。
pause(), unpause(): 暫停和開始。
isplaying(): 判斷是否正在**,如果返回為true,表示正在**歌曲。
ispaused(): 判斷是否為暫停,如果返回為true,表示暫停。
seconds(): 返回***檔案共多少秒,注意這裡的單位是秒。
milliseconds(): 返回***檔案共多少毫秒,注意這裡的單位是毫秒。
***play首頁上給出的例子為:
複製** **如下:
rldzgotnimport ***play
filename = r'c:\music.***'#**c盤下的music.***檔案
clip = ***play.load(filename)
clip.play()
import time
time.sleep(min(30, clip.seconds()))#如果***檔案的長度小於30少時,全部**完,否則僅**30秒。
clip.stop()
本文位址:
聲音對比處理 《認識電影》讀書筆記 六 聲音
電影的聲音 不僅加強,而且數倍的放大影像的效果。黑澤明 本章內容 歷史背景 音效 歌舞片 語言 重點 有聲片對剪輯風格和默片表演有何影響 無聲的使用 語言的意識形態 文字和次文字 語言下的語言意義為何?有聲時代開始後,已經是全球速度最快的美國片節奏就更快了。20世紀30年代的大師霍克斯和卡普拉都要求...
MEF學習筆記(4) 宣告匯入
組成部件宣告匯入 system.componentmodel.composition.importattribute 特性。跟匯出類似,有幾個不同的方法即是通過字段,屬性和建構函式。屬性匯入 為了匯入乙個屬性值,用 system.componentmodel.composition.importat...
Golang學習筆記4 控制語句
1.基礎知識補充 指標 遞增遞減語句 指標 go雖然保留了指標,但是與其它程式語言不同的是,在go當中不支援指標運算以及 運算子,而直接採用 選擇符來操作指標目標物件的成員 在go中,與 是作為語句而並不是作為表示式 a 1 a 但不能這樣 a a 只能作為單獨的語句獨佔一行2.if判斷語句func...