2017-03-26 9 views
0

サウンドを割り当てて後で再生できるボタンがいくつかあるtkinterでアプリケーションを作成しようとしています。ボタン自体のクリックはplay()メソッドのみを呼び出すので、サウンドのロードは事前に行われます。pygame.mixerでボリュームを変更する(ほとんど)効果がありません

私はスライダ(tk.Scale)で何らかのボリュームコントロールを作ってみましたが、私はゼロに非常に近づくまでほとんどのボリューム値に顕著な違いがないことに気付きました(スライダの解像度は0.0から0.0 0.1)。 約0.02私は音量が大幅に低いことに気付くと思うし、私がゼロになると、音はミュートされます。再生中の音がないときにスライダを動かすと、これが発生します。

興味深いのは、再生中にスライダーを動かすのに十分な長さのサウンドを再生しようとすると、すぐに違いがわかるはずですが、サウンドが再生を停止してもう一度再生しようとすると、再度「デフォルト」ボリュームに移動します。

私はアプリケーションを複数のスクリプトに分けたので(サウンド、サウンド、GUIの録音)、私はPygameミキサーを直接初期化していないのではなく、 (私は適切に願っています)ボリュームが実際に設定されていることを確認1.0,0.5,0.078125(他の下記1):私は新しい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()) 

私が気付くことができる唯一の時間は、本当に目立ったものではない3番目のケースです。私はボリュームの増加を線形にしたい、これはこれから遠いです。

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) 

ありません運が、同じことがあまりにもここに起こる:

私は、チャネルと同じことを試してみました。

私はいつもグーグル "パイゲミキサーボリューム問題" "パイゲームミキサーボリュームセット問題"と同様のフレーズを過ごしましたが、運はありませんでした。うまくいけば、私の卒業証書がPythonメソッドに依存していることを考えれば、誰かが助けになることができます。 :)

ありがとうございます。

答えて

1

私は答えを見つけました(PyGame IRCのGummbumに感謝します)。

この問題は、PythonやPygame自体ではなく、Windowsで発生します。サウンドの強化は、私のスクリプトが演奏しているサウンド(またはそのような他のPygameスクリプト)のやり方に何らかの形でかかっているようです。

私は、Windows 10上だと、これは私がそれをやった方法です:

  1. 右タスクバーにあるスピーカーのアイコンを

  2. 選択再生デバイス

  3. 選択スピーカー、[プロパティ]をクリックします
  4. [拡張機能]タブに移動し、[イコライザとラウドネスの均等化]のチェックを外します。

それだけです。

関連する問題