The..........PICTURE.....
IBasicAudio에서 put_Volume을 통해 볼륨조절 시

IBasicAudio 인터페이스(Com오브젝트)는 사운드 관련 처리를 하는 인터페이스입니다.
get_Volume과 put_Volume 및 양쪽(스트레오) 스피커의 밸런스를 맞추는 역할을 하는데요.

문제는 get_Volume과 put_Volume 입출력 값이 -10000 ~ 0 입니다.
(http://msdn.microsoft.com/en-us/library/aa929894.aspx)

무엇이 문제냐 하면 아시다 시피 데시벨은 로그 형태로 나타나기 때문입니다.
그것도 모르고 사용자 입력값을 그냥 넣어줬더니
볼륨이 선형적으로 변하지 않고 최대값부분에서 갑자기 커지는 효과가...

그래서 그나마 선형적으로 조절하기 위해서 아래 루틴 첨가.
--------------------------------------------------------------
// volume은 0~100값을 가진다. (CSliderControl을 통해 가지고 옴)
volume = volume > 100 ? 100 : volume;
 volume = volume < 0 ? 0 : volume;
 volume = (volume * -1) + 100;

 double result = pow( (double)1.1, (double)volume);
 double max = pow(1.1, 100);
 result = -10000 + ((1 - (result/max)) * (double)10000);
 hr = pBasicAudio->put_Volume( result);
--------------------------------------------------------------
4line에서 volume값을 뒤집는 이유는 묻지마세요.. -0-; 귀차니즘...
식을 바꾸려고 했건만 머리가 나쁜 관계로 패스... 잘 작동하니깐...
max를 구하는 pow(1.1, 100) 같은 경우는 define으로 잡으면 편하겠네요...
아님 처음에만 구하도록 지역변수 static으로 둬서 해도 좋을것 같구요
(언젠가 비슷한 것이 쓰일 것 같아서.. 로그,제곱 <-> 선형 )

이상 끝

========================================
추가 : 위의 1.1 값을 1.065 로 바꿔서 하니깐 좀더 부드럽게 되네요.
1.1은 중간(50이상의 volume값)부터 최대 소리가 나버리네...

출처 : 내 머리

by 희돌군 | 2009/05/13 03:09 | ☆컴공부☆ | 트랙백(1) | 덧글(1)
트랙백 주소 : http://glintist.egloos.com/tb/2346721
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from PPang Commun.. at 2009/10/22 11:25

제목 : Directshow : IBasicAudio Vol..
출처 : http://glintist.egloos.com/tag/IBasicAudio/page/1 : 로그 값을 선형적으로 변하게 잘 만들었다. 주의점(위의 내용을 참조하여 구현시 내 경험을 적어 본다) - 최대 값에 도달하는 것을 조정할 필요 있음(1.1 => 1.065 => ? 1.01) - pow(1.1,100)을 미리 계산해서 define해서 사용하여 퍼포먼스 향상 시키자! - 완변하게 적용되지 않을시 고려사항 : WaveOutSetVo......more

Commented by MainBuU at 2009/10/22 11:27
좋은 글 감사히 보고 갑니다. ^^

:         :

:

비공개 덧글






◀ 이전 페이지 다음 페이지 ▶



-사진인생- 세번째 이야기
by 희돌군
메뉴릿
최근 등록된 덧글
정말 정말 감사합니다. ..
by 똔별이 at 12/11
진주린 불상합니다.
by 골드 군 at 11/18
난 모르고 있었는데,..
by 푸른나무 at 11/14
http://www.gisdeve..
by aa at 11/10
잠깐... http://deve..
by 희돌군 at 11/09
링크만 걸어놨습니다 :)
by hks9999 at 10/28
퍼 가겠습니다 ^^ ..
by hks9999 at 10/28
믿고 사는 세상을 위해..
by 희돌군 at 10/28
마지막 하트 사진과 ..
by 푸른나무 at 10/28
'아 어떡해' 하고 '빵공..
by 푸른나무 at 10/28
카테고리
전체
☆끄적☆
☆삽질☆
☆군대☆
☆낚시☆
☆사진☆
☆느낌☆
☆컴공부☆
☆취미☆
전북대학교
멤버십
불가리아
컴퓨터-Windows
컴퓨터-Linux
컴퓨터-Programming
컴퓨터-Database
컴퓨터-Web
컴퓨터-iPod
미분류
최근 등록된 트랙백
Directshow : IBasic..
by PPang Community
내 별 찾기
by He is fond of sweet..
Best gambling onlin..
by Online casino gamb..
Online gambling re..
by Online gambling re..
Online gambling.
by History of gambling.
넌 그러하냐 난 이러하다.
by input[0] = Meat; i..
포토로그
메모장
이글루링크
He is fond of sweet..
푸른나무그늘
병든 냥이의 외로운 거..
일상.
까망군
BLUE DEVILS 한 여..
작은별님의 이글루
이글루 파인더
태그
MonoProject PlatformNotSupportedException Slider 헌재 ipod 리눅스 모노 설치 Mono 아이팟 미를친헌재 dialog iphone 복구 thread 아이팟개발 windows IBasicAudio 별자리 부산여행 미친헌재 put_Volume 윈도우즈 iPod_App 데시벨 부트로더 mfc ms-sql windowmobile mssql
rss

skin by teatime