当前位置: 首页 > 工具软件 > Mixer > 使用案例 >

模块七:mixer模块

有骏奇
2023-12-01

mixer模块主要用于加载和播放声音。在pygame中,声音主要用Sound对象来表示,所以说mixer模块实现声音的播放、暂停和一些其他的功能,也就是通过mixer模块中的一些函数来实现。

# 初始化mixer模块
pygame.mixer.init()
# 设置mixer模块的参数
pygame.mixer.pre_init()
# 取消初始化mixer模块
pygame.mixer.quit()
# 判断mixer模块是否初始化
pygame.mixer.get_init()
# 停止所有声道声音的播放
pygame.mixer.stop()
# 暂停所有声道声音的播放
pygame.mixer.pause()
# 恢复声音的播放
pygame.mixer.unpause()
# 在结束前淡出声音
pygame.mixer.fadeout()
# 设置播放的通道数
pygame.mixer.set_num_channels()
# 获取当前播放声音的通道数
pygame.mixer.get_num_channels()
# 设置保留通道的数量,如果声音在保留的通道上播放,那么将不会停止
pygame.mixer.set_reserved()
# 查找未使用的频道
pygame.mixer.find_channel()
# 判断mixer是否混合各个声道
pygame.mixer.get_busy()
# 获取mixer的SDL版本
pygame.mixer.get_sdl_mixer_version()
# 根据文件或者缓冲区创建一个Sound对象
pygame.mixer.Sound()
# 创建一个用于控制播放的Channel对象
pygame.mixer.Channel()

创建Sound对象有多个方法。

pygame.mixer.Sound(filename) 
pygame.mixer.Sound(file=filename) 
pygame.mixer.Sound(file=pathlib_path) 
pygame.mixer.Sound(buffer) 
pygame.mixer.Sound(buffer=buffer) 
pygame.mixer.Sound(object) 
pygame.mixer.Sound(file=object) 
pygame.mixer.Sound(array=object) 

对于某个Sound对象,pygame中的mixer模块提供了相应的控制方法。

# 根据文件或者缓冲区创建一个Sound对象
sound = pygame.mixer.Sound()
# 声音的播放,在可用通道上强制选择一个通道进行播放
# 参数loops表示播放后重复的次数,为1表示播放结束后再重复播放一次,为0表示不重复,为-1表示重复无限次
# 参数maxtime表示在给定的时间后停止播放,单位为毫秒,0表示不停止播放
# 参数fade_ms表示声音淡入淡出的时间,单位为毫秒,0表示不进行淡入淡出
sound.play(loops=0, maxtime=0, fade_ms=0)
# 声音的停止
sound.stop()
# 声音淡出后停止的时间
sound.fadeout(time=2000)
# 设置音量,值在0.0-1.0之间浮动
sound.set_volume(value=0.5)
# 获取音量
sound.get_volume()
# 计算声音播放的次数
sound.get_num_channels()
# 获取声音的长度,单位为秒
sound.get_length()
# 获取声音的字符串副本
sound.get_raw()

创建Channel对象,通过

pygame.mixer.Channel(id)

其中,id的值位于0到pygame.mixer.get_num_channels()之间。
对于某个Channel对象,也有许多控制方法,与Sound对象的方法类似。

# 声音在某个通道的播放
channel.play(sound, loops=0, maxtime=0, fade_ms=0)
# 声音在某个通道停止播放
channel.stop()
# 声音在某个通道上暂停播放
channel.pause()
# 声音在某个通道上恢复播放
channel.unpause()
# 声音在某个通道淡出后停止的时间
channel.fadeout(time=2000)
# 设置某个通道音量,值在0.0-1.0之间浮动
# 如果某个Channel对象和某个Sound对象都通过set_volume(0.5)设置过音量,那么声音在这个通道上播放的音量为0.5*0.5
channel.set_volume(value=0.5)
# 获取某个通道的音量
channel.get_volume()
# 判断通道是否处于活动状态
channel.get_busy()
# 获取当前的声音,返回一个Sound对象
channel.get_sound()
# 将另外一个Sound对象送入当前的队列中,当前Sound对象播放完毕后才播放另外一个Sound对象
channel.queue(sound)
# 返回待播放的Sound队列
channel.get_queue()
# 在播放停止时,向pygame中的事件队列中发送一个时间,可以通过pygame.event.get()获取
channel.set_endevent()
# 获取事件的类型
channel.get_endevent()

也可以通过mixer模块中的music子模块来播放、暂停、停止音乐。

函数描述
pygame.mixer.music.load加载音乐文件进行播放
pygame.mixer.music.unload卸载当前加载的音乐以释放资源
pygame.mixer.music.play开始播放音乐流
pygame.mixer.music.rewind重新开始音乐
pygame.mixer.music.stop停止音乐播放
pygame.mixer.music.pause暂时停止音乐播放
pygame.mixer.music.unpause恢复暂停的音乐
pygame.mixer.music.fadeout淡出后停止音乐播放
pygame.mixer.music.set_volume设置音乐音量
pygame.mixer.music.get_volume获取音乐音量
pygame.mixer.music.get_busy检查音乐流是否正在播放
pygame.mixer.music.set_pos设置播放位置
pygame.mixer.music.get_pos获取音乐播放时间
pygame.mixer.music.queue排队一个声音文件以跟随当前
pygame.mixer.music.set_endevent让音乐在播放停止时发送事件
pygame.mixer.music.get_endevent获取播放停止时频道发送的事件
 类似资料: