python-2.7 - 在 pygame.mixer 中改变音量(几乎)没有效果

标签 python-2.7 pygame windows-10 mixer

我正在尝试在 tkinter 中创建一个应用程序,该应用程序具有许多按钮,您可以分配声音并稍后播放。点击按钮本身只调用play()方法,所以声音的加载是预先完成的。

我尝试使用 slider (tk.Scale) 进行某种音量控制,我注意到大多数音量值之间没有明显差异,直到我非常接近零(考虑到 slider 分辨率从 0.0 到 0.1 为 0.01 )。 在 0.02 左右,我认为我注意到音量显着降低,如果我达到零,声音就会静音。请注意,如果我在没有声音播放的情况下移动 slider ,就会发生这种情况。

有趣的是,如果我尝试播放足够长的声音以让我在播放时移动 slider ,我可以立即注意到差异,但如果声音停止播放并且我再次尝试播放,它再次进入“默认”音量。

由于我根据应用程序的功能(录制声音、播放声音、GUI)将应用程序划分为多个脚本,因此我认为可能是我没有直接初始化 pygame 混音器,而是从导入的模块中初始化的问题,所以我制作了一个新的 python 脚本并输入了这段代码:

import pygame
import time
pygame.mixer.pre_init(frequency=44100, size=-16, channels=1, buffer=512)
pygame.mixer.init()

sound1=pygame.mixer.Sound("sound.wav")
sound1.set_volume(1.0)
print sound1.get_volume()
sound1.play()
time.sleep(sound1.get_length())
sound1.set_volume(0.5)
print sound1.get_volume()
sound1.play()
time.sleep(sound1.get_length())
sound1.set_volume(0.08)
print sound1.get_volume()
sound1.play()
time.sleep(sound1.get_length())

输出如下:1.0,0.5,0.078125(一个低于另一个)确认音量确实已设置(我希望正确)。

我唯一能注意到差异的是第三种情况,实际上并没有那么明显,我希望音量增加是线性的,这远非如此。

我在 channel 上尝试过同样的事情:

sound1=pygame.mixer.Sound("sound.wav")
channel=pygame.mixer.find_channel(True)
channel.set_volume(1.0)
channel.play(sound1)
time.sleep(sound1.get_length()/2)
channel.set_volume(0.5)
print "Volume set"
time.sleep(sound1.get_length()/2)

不走运,同样的事情也发生在这里。

我花了一整天的时间在谷歌上搜索“pygame 混音器音量问题”“pygame 混音器音量设置问题”和类似的短语,但没有运气。考虑到我的文凭依赖于 python 方法,希望这里有人可以提供帮助。 :)

提前致谢。

最佳答案

我找到了答案(感谢 PyGame IRC 的 Gummbum)。

问题不在于 Python 或 Pygame 本身,而在于 Windows。似乎声音增强在某种程度上摆弄了我的脚本播放声音的方式(或任何其他 Pygame 脚本)。

我使用的是 Windows 10,我就是这样做的:

  1. 右键单击任务栏中的扬声器图标

  2. 选择播放设备

  3. 选择扬声器和属性
  4. 转到增强选项卡并取消选中均衡器和响度均衡

就是这样。

关于python-2.7 - 在 pygame.mixer 中改变音量(几乎)没有效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43034494/

相关文章:

python - 在python中按名称忽略忽略列表中的项目

python - Pygame 碰撞检测

Python 已停止工作

windows - 在 Windows 10 中使用 powershell 在多个桌面上启动程序

python - 为什么 platform.release() 在 Windows 10 中返回 "8"?

python - 在 cassandra 中保存 zip 文件并读取它

python - 如何检查requirements.txt文件中包含哪些包?

python - 如何根据传递到 __init__ 方法的字符串值来命名类内的变量?

python - 粒子没有移动,那么问题出在哪里呢?

python - 如何让键绑定(bind)在 pygame 中工作?