Audio Path 샘플
Audio Path 샘플
Audio Path 샘플에서는, 1 개의 오디오 패스로 복수가 다른 사운드를 재생하는 방법과 오디오 패스에서의 변경을 모든 사운드의 파라미터에 반영할 방법이 나타나고 있다.
패스
소스 :(SDK 루트) \Samples\C++\DirectMusic\AudioPath
실행 가능 파일 :(SDK 루트) \Samples\C++\DirectMusic\Bin
사용자가이드
다양한 사운드를 재생하려면 ,[Lullaby],[Snore],[Mumble] 를 클릭한다. 3D 공간에서의 사운드의 위치를 조정하려면 , 슬라이더를 사용한다. 다른 사운드를 재생해 다른 모든 사운드를 정지하려면 ,[Rude Awakening] 를 클릭한다.
프로그래밍 메모
이 샘플은,Play Audio 샘플과 형식이 자주(잘) 비슷하다. Audio Path 샘플에서는, 오디오 패스의 다양한 사용법이 몇개인가 나타나고 있다.
WM_INITDIALOG 에서는,OnInitDialog 함수는 다음의 처리를 실행한다.
- IDirectMusicPerformance8::CreateStandardAudioPath 를 호출해, DMUS_APATH_DYNAMIC_3D 를 건네주어 3D 오디오 패스를 생성 한다. 생성 된 IDirectMusicAudioPath8 인터페이스는,g_p3DAudiopath 로 나타난다.
- CMusicManager 프레임워크(framework) 클래스를 사용해, 파일의 리스트로부터 CMusicSegment 개체를 생성 한다.
- 오디오 패스로부터 IDirectSound3DListener8 인터페이스를 얻어온다.
- IDirectSound3DListener8::SetRolloffFactor 를 호출해, 사운드의 진폭의 거리가 떨어지는 것에 따라 소멸 할 때의 비율을 변경한다.
3D 위치 슬라이더가 변경되면SetPosition 함수는 다음의 처리를 실행한다.
- IDirectMusicAudioPath8::GetObjectInPath 를 호출해 IDirectSound3DBuffer8 인터페이스를 얻어온다.
- IDirectSound3DBuffer8::SetPosition 를 호출해 버퍼의 위치를 설정한다.
- 버퍼를 릴리즈 한다.
세그먼트(segment)를 연주 하면,PlaySegment 함수는 다음의 처리를 실행한다.
- [Lullaby] 를 클릭 하면, 세그먼트(segment)가 1차 세그먼트(segment)로서 오디오 패스상에서 연주된다.
- [Snore] 또는 [Mumble] 를 클릭 하면, 2차 세그먼트(segment)가 연주된다.
- [Rude Awakening] 를 클릭 하면, 오디오 패스가 pFrom 파라미터로서 IDirectMusicPerformance8::PlaySegmentEx 에게 건네지기 (위해)때문에, 오디오 패스 위에의 모든 사운드가 정지한다. 다음에, 새로운 1차 세그먼트(segment)로서 알람 사운드가 재생된다.
참조