Search results for '오디오'

윈도우 비스타에서의 볼륨 컨트롤

2009. 10. 13. 04:03

  나의 윈 폼 어플리케이션 처녀작인 Laptop Guard를 만든지도 어언 1년이 다 다되었다. 이 작품 덕에 삼성 소프트웨어 멤버십이라는 멋진 곳에 모자란 내가 들어갈 수도 있었고, 프로그래밍에 깊은 재미를 느낄 수 있었던 것 같다.

 

  작년 학교 축제기간의 우리과 소프트웨어 전시회 때에는 아직 Laptop Guard가 미구현 된 점도 많고, 내가 그런 전시회에 작품을 냈다가 망신만 당하는 것은 아닐까 하는 생각에 참여를 못했었는데, 올해 작품 전시회에 이 작품을 전시하게 되었다.

  1년간 한 쪽 구석에 처박아뒀기에 아직 잘 돌아가나 테스트를 해보니. 아뿔사. XP환경에서 개발했었는데, 지금 내가 사용중인 OS는 비스타이다.

 

 

  코드 프로젝트에서 구해서 이용했던 WaveLibMixer.dll 이 XP환경에서만 오디오 볼륨 조절이 가능했던 것이다.


http://www.codeproject.com/KB/audio-video/AudioLib.aspx?display=PrintAll&fid=217323&df=90&mpp=25&noise=3&sort=Position&view=Quick&fr=26&select=2685226


Comment를 보니 나처럼 이 프로젝트가 비스타에서 작동하지 않음을 호소하는 글들이 몇 개 눈에 들어왔고, 윈도우 비스타와 XP는 사운드 시스템 체계가 다르다는 것 또한 알 수 있었다.

 

결국 비스타에서 오디오 조절 방법을 찾다가 코드 프로젝트에서 CoreAudioApi 프로젝트를 찾았다. 시스템에서의 오디오장치를 이용하는 MMDevice API와 볼륨, 피크미터에 접근이 가능한 EndPointVolume API를 이용한 방법이었다.


http://www.codeproject.com/KB/vista/CoreAudio.aspx?display=PrintAll


프로젝트를 다운 받아 분석하고 바로 Laptop Guard에 적용시켰다. 이 전과 다른 점이라면 이전에는 볼륨이 0~65535까지 였는데, 이번엔 0.0~1.0 까지로 볼륨 크기를 나누었다는 것 정도.

 

  1년 만에 내 코드를 다시 보니 부끄럽다. 손이 가는대로 막코딩하다보니 코드도 너저분하고, 쓸데없는 변수들의 남용들, 비효율적인 구조… 으하하하.

 

  새로 컴파일 하고 실행해보니 잘 비스타에서 잘 작동한다.

휴.. 다음에 여유가 생기면 새로 설계 후 다시 깔끔하게, 배포할 수 있을 정도로 만들어봐야겠다. 아직은 도서관 등에서 사용하기에는 너무 치명적인 버그들이 존재하기에 ㅋㅋㅋ

박상근 프로그래밍/Laptop Guard