마음 속 하늘은 항상 맑음~!

비스타 믹서. 본문

프로그래밍

비스타 믹서.

파르셀수스 2009. 8. 26. 11:56

 윈도우즈 비스타 그리고 7으로 넘어가면서 새로운 사운드 드라이버 레이어를 가진다.

 XP까지는 모든 음성 출력은 'WAVE OUT'이라는 하나의 볼륨 컨트롤로 음량을 제어가 가능했지만 비스타 이상에서는 이 'WAVE OUT'이 어플리케이션 단위(AudioSession)로 나누어져 각각의 프로그램에 대한 볼륨을 가진다.



 이렇게 구분되어진 AudioSession은 윈도우즈 비스타에서는 공식적으로 개별적으로 접근이 불가능하다. 그러나 분명히 sndvol.exe에서는 이 세션을 구분해서 컨트롤할 수 있으며, 이는 가능한 다른 방법이 있다는 것을 의미한다. 단지 마이크로소프트가 이 접근 가능한 방법에 대해 알리지 않았을 뿐이다. 결국 이는 윈도우즈 7에서는 이 세션을 모두 찾을 수 있도록 새로운 인터페이스를 제공한다. 그러나 아마도 윈도우즈 비스타에서는 이 세션을 접근하기 위한 인터페이스의 공식적인 지원은 없을 것 같다.

 이 문제를 해결하고자 하는 이유는 비스타에서 몇몇 윈앰프 방송을 하는 분들이 믹서 문제로 어려움을 겪고 있고 그것을 해결할만한 방법이 없을까 하는 호기심에서 시작되었다. 혼합출력(스테레오믹스라고 함)은 활성화 시키면 간단히 해결되지만 어플리케이션 세션의 볼륨 조정은 여전히 해결할 수 없는 문제였다. 단지 해결 방법은 높은 가격의 하드웨어 믹서를 이용하는 방법 뿐이다.

 이렇게 저렇게 검색으로 혹시 누군가 해결한 사례가 없나하고 뒤적인 결과, 긍정적인 내용을 발견했다. 이는 세션을 질의할 수 있고 그 질의된 세션의 PID(ProcessID)를 얻어내어 현재의 프로그램의 오디오 세션을 구분할 수 있도록 한다.

 그렇게 방법론을 새로운 코드로 작성해 만들어낸 프로그램이 바로 VistaMixer라는 프로그램으로 이는 윈앰프의 PID를 얻어서 윈앰프의 볼륨을 컨트롤한다. 아직 베타 단계이어서 완전하다고는 볼 수 없지만, 정상적으로 윈앰프의 볼륨이 조절되는 것을 확인했다. 그리고 마이크 볼륨도 정상적으로 조절되는 것도 확인을 했으나, 마이크가 고장인지 마이크 입력 레벨에 대한 정확한 확인을 하지 못했다.



 그리고 비스타에서는 '스피커'라는 장치 안에 다른 특성의 볼륨컨트롤이 하나 더 있는데, 이는 각각의 장치들이 스피커에서 들려지는 음량에 대한 조절을 하는 부분이다. 이는 입력 볼륨과는 다르다.

 만들어진 프로그램의 모습은 대략 아래와 같다.


 '!' 버튼은 윈앰프를 나중에 실행시켰거나 다시 시작했을 때 다시 컨트롤을 얻어내는 기능을 하는 것으로 윈앰프가 재구동되면 항상 한번은 눌러주는 것이 좋다. 그렇지 않으면 제대로된 윈앰프 볼륨 믹서에 대한 컨트롤을 가지지 못한다. 아래는 간단한 구동을 시연한 동영상.

 


 이를 실행하기 위해서는 관리자 권한이 필요하다. 그냥 VISTA의 UAC를 꺼버리는 것도 하나의 방법이다.

 아직은 베타 버전이어서 완전히 테스트되지 못해서 일부 장치에 대해서 작동을 하지 못할수도 있다. 자신의 장치들을 제대로 인식시키기 위한 문장은 INI 파일에 저장되므로 이 파일의 일부분을 수정하면 자신의 장치를 제대로 인식시킬 수 있다.

 

'프로그래밍' 카테고리의 다른 글

프로그래밍.  (1) 2009.10.15
비스타 볼륨 조절 그리고 리얼텍 HD  (0) 2009.09.02
팜(Palm), WebOS 소스 공개  (0) 2009.06.21
SmallSee 1.0.6.144  (0) 2009.06.06
자바 스토어  (0) 2009.06.04