2017-03-26 1 views
0

사운드를 할당하고 나중에 재생할 수있는 버튼이있는 tkinter에서 응용 프로그램을 만들려고합니다. 버튼 자체의 클릭은 play() 메서드 만 호출하기 때문에 사운드를로드하는 것은 미리 수행됩니다.pygame.mixer의 볼륨 변경 (거의) 효과 없음

슬라이더 (tk.Scale)로 볼륨 조절기를 만들려고했는데 제로에 가까워지기 전까지 대부분의 볼륨 값 사이에 눈에 띄는 차이가 없다는 것을 알았습니다 (슬라이더 해상도가 0.0에서 0.01까지 고려해야 함). 0.1). 약 0.02에서 나는 음량이 현저히 낮다는 것을 알았고 제로가되면 소리가 나지 않는다고 생각합니다. 재생중인 사운드가없는 동안 슬라이더를 움직이면 이런 일이 발생합니다.

재미있는 점은 내가 연주하는 동안 슬라이더를 움직일만큼 충분히 긴 소리를 들려 준다면, 바로 그 차이를 알 수 있습니다. 그러나 사운드가 재생을 멈추고 다시 연주하려고하면, 다시 "기본"볼륨으로 이동합니다.

필자는 파이어 밋 믹서를 직접 초기화하지 않고 가져온 모듈에서 직접 문제를 일으킬 수 있다고 생각하여 사운드, 사운드, GUI 녹음과 같은 여러 스크립트로 나누었습니다. 그래서 새로운 파이썬 스크립트를 만들어이 코드를 입력 : 1.0,0.5,0.078125 (다른 아래 하나) 볼륨이 참으로 설정되어 있는지 확인 (I 제대로 희망) :

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) 

운이 같은 일이 여기에서도 발생합니다

나는 채널과 같은 일을 시도했다.

나는 하루 종일 "파이 게임 믹서 볼륨 문제" "파이 게임 믹서 볼륨 설정 문제"와 비슷한 문구를 보냈지 만 운은별로 보지 못했습니다. 희망을 갖고 여기 누군가는 파이썬 방법에 의존하는 나의 학위를 고려할 때 도움이 될 수 있습니다. :)

미리 감사드립니다.

답변

1

나는 대답을 찾았습니다. (GAMEBOOK, PyGame IRC에서 감사드립니다).

문제는 Python이나 Pygame 자체가 아니라 Windows에서 발생합니다. 소리 강화가 어떻게 든 내 대본이 연주하고있는 소리 (또는 그 문제에 대한 다른 파이 게임 스크립트)의 작동 방식을 비웃는 것 같습니다.

나는 윈도우 10 그리고 난 그것을 어떻게이 있습니다 :

  1. 작업 표시 줄 오른쪽

  2. 선택 재생 장치에있는 스피커 아이콘을 클릭

  3. 스피커를 선택하고 속성
  4. 개선 사항 탭으로 이동하여 이퀄라이저 및 라우드니스 이퀄라이제이션의 선택을 취소하십시오.

그게 전부입니다.