2011-08-09 5 views
0

C++에서 SDL로 볼륨을 음소거 할 수 있습니까?
스피커가 헤드폰 잭 소켓에 연결되어 있습니다. 볼륨이 음소거되면 백그라운드 노이즈가 들릴 수 있지만 음소거 ('amixer set Headphone mute'로)하면 멈 춥니 다. Mix_VolumeMusic() 및 Mix_Volume()을 사용하여 볼륨을 0으로 설정하여 동일한 효과를 얻으려고 시도했지만 음악 voulme 만 변경하면 잡음이 여전히 존재합니다.C++의 SDL 음소거 볼륨

환경 :
데비안
패키지를 Sqeeze : libsdl1.2-DEV
버전 : 나는 SDL 당신이 무슨 일을하는지 넘어 음소거 기능이 있다고 생각하지 않습니다 1.2.14-6.1

답변

0

, 심지어 나는 그 기능을 libsdl.org 웹 사이트의 설명서에서 보지는 못 하겠지만. API를 살펴보면, 내부 소프트웨어 믹서 (PCM 볼륨 컨트롤은 SDL 1.3 위시리스트에 있음)를 제어하는 ​​것으로 추측되지만, 볼륨을 조정하고 alsamixer로 시스템 볼륨 설정을 불러 와서 확인할 수 있습니다 (<Esc> 키를 눌러 종료). 더러운 해결 방법은 시스템 호출을 사용하여 amixer 프로그램을 실행하는 것입니다. #include <stdlib.h>이 (가) 있고 system("amixer set Headphone mute");을 실행해야합니다. 그 외에도, 진짜 벙어리에 대해 alsa와 같은 다른 것을 조사해보고 자신의 음소거 기능을 작성하므로 나중에 쉽게 대체 할 수 있습니다. Windows를 지원해야하는 경우 내부에 #ifdef _WIN32/#else/#endif 블록을 쓸 수 있습니다.

하드웨어로 소프트웨어 문제를 수정하는 것을지지하지는 않지만 더 나은 사운드 카드가 필요할 수 있습니다. 또한 컴퓨터의 뒤쪽 단자를 앞면 단자보다 더 잘 사용하면 소리가 좋아집니다. 나는 항상 마더 보드에 꽂혀있는 얇은 사운드 케이블에서 많은 잡음을 포착했습니다.

+0

다른 해결책이 없기 때문에 나는 당신을 받아들입니다. 감사! – face

관련 문제