상세 컨텐츠

본문 제목

DSound 사용시 1차 버퍼를 그대로 사용하면 안됩니다.|작성자 제프 Direct Sound 동시 사운드 (동시 믹싱 예상)

프로그래밍 관련/사운드

by AlrepondTech 2020. 9. 17. 10:29

본문

반응형

 

 

 

 

=================================

=================================

=================================

 

 

 

 

 

15.sound.ppt
0.24MB


출처: http://zeprod.org/60062124110

소리가 1가지밖에 안난답니다. (...)

1차버퍼를 이용해 사운드 파일을 읽어온후, 쿼리를 이용해서 2차 버퍼로 옮겨줘야 합니다.

soundbuffer: IDirectSoundBuffer
soundbuffer8: IDirectSoundBuffer8

hr = m_pDSound - > CreateSoundBuffer( & bufdesc, & (soundbuffer), NULL);

if (SUCCEEDED(hr)) {
    hr = soundbuffer - > QueryInterface(IID_IDirectSoundBuffer8, (LPVOID * ) & soundbuffer8);
    soundbuffer - > Release();
}



대략 이런느낌으로 옮겨줍니다.

1차 버퍼를 재생할때에는 그대로 음원을 재생할 뿐이라, 동시발음을 시도할 수 없습니다.

가장 처음 켠 소리만 재생되는 걸로 봐서는 (뒷소리가 나오는지 안나오는지 확인은 못했으니) 이후 요청이 묵살되거나, 실행이 보류된 상태로 추정됩니다만

어느쪽이던 원하는 결과는 아닙니다.

2차 버퍼로 설정된 아이들을 재생할때에는 DSound가 1차 버퍼에 합성을 한 후 재생을 할 수 있기때문에 동시발음이 가능하지요.


이렇게 소리를 출력할 때, 거리, 방향에 맞추어 볼륨과 패닝 조절만 해주면 그럭저럭 들을만한 소리가 납니다.

//데브피아 질답

[Q] IDirectSoundBuffer의 Play를 이용한 믹싱데이타 얻는방법에 대해 알고싶습니다.  | Music & Sound 질문

IDirectSoundBuffer 인터페이스를 얻어

m_lpDSBuffer를 만들었습니다.
m_lpDSBuffer에 wav를 읽고 Play(0,0,NULL); 하니 웨이브가 출력되더군요
m_lpDSBuffer를 여러게 만들어 동시에 Play하니 
여러개의 웨이브 소리를 동시에 들을수 있었습니다.

IDirectSoundBuffer에 Play는 사운드장치에 데이타를 보낼때. 기존데이타와
믹싱을하여서 사운드 장치로 보내나 봅니다.

Play이시 제가 믹싱된 pcm을 참조할 방법은 없겠습니까?(pcm데이타를 얻고 싶습니다)
가능하다고 들은거 같은데.. (다이렉트X로 믹싱하여 사용합니다라는 답을 들었습니다)


답변 부탁드립니다.

[답변][참고] 하세요... 

 

 

 

=================================

=================================

=================================

 

 

 

 

 

반응형


관련글 더보기

댓글 영역