pygame學習筆記(4) 聲音控制

2022-10-04 23:12:48 字數 3571 閱讀 7236

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...