DirectMusic DirectMusic 의 개요 오디오 데이터의 흐름의 개요   [목차열람] [주소복사] [슬롯비우기]
오디오 데이터의 흐름의 개요
 
Microsoft DirectX 9.0

오디오 데이터의 흐름의 개요

일반적으로, DirectMusic 애플리케이션은, 이하에 나타내는 1 개 혹은 복수의 소스의 것으로부터 사운드를 얻어온다.

  이러한 데이터 소스는 모두, 다른 파일은 아니고, 리소스로서 애플리케이션에 저장 할 수 있다.

이러한 소스로부터의 데이터는, 세그먼트(segment) 개체에 캡슐화된다. 각 세그먼트(segment) 개체는, 1 개의 소스로부터의 데이터를 나타낸다. 퍼포먼스의 어느 시점에서도, 1 개의 1차 세그먼트(segment)와 임의의 수의 2차 세그먼트(segment)를 연주할 수 있다. 소스 파일은 혼재시킬 수가 있다. 예를 들어, WAV 파일에 근거하는 2차 세그먼트(segment)를, 오쏘링 된 세그먼트(segment) 파일에 근거하는 1차 세그먼트(segment)와 함께 연주할 수가 있다.

1 개의 세그먼트(segment)에는 1 개 혹은 복수의 트랙이 포함되어 각각이 노트나 템포의 변경 등, 특정의 종류의 타임 데이터를 포함하고 있다. 대부분의 트랙은, 세그먼트(segment)가 퍼포먼스에 의해 연주될 때, 타임 스탬프 메시지를 생성한다. 그 외의 종류의 트랙은, 퍼포먼스로부터 문의가 있었을 때에만 데이터를 제공한다.

퍼포먼스는, 최초로, 애플리케이션으로 정의된 툴에 메시지를 디스패치 한다. 툴에서는, 메시지를 변경해 건네주거나 삭제하거나 새로운 메시지를 송신하거나 할 수가 있다. 툴은, 툴 그래프로 불리는 직렬세트에 배치된다. 메시지는, 이하의 툴 패스의 일부 또는 전부를, 이 순서로 통과한다.

최종적으로, 메시지는 출력 툴에 도달한다. 출력 툴은, 데이터를 MIDI 포맷으로 변환해 신디사이저에 건네준다. 채널 고유의 MIDI 메시지는, 신디사이저의 적절한 채널 그룹에 전송 된다. 신디사이저는 웨이브 폼을 생성 해, 싱크로 불리는 장치에 스트리밍 한다. 싱크는, 버스를 개입시킨 DirectSound 버퍼에의 데이터 전달을 관리한다.

DirectSound 버퍼에는, 이하의 3 개의 종류가 있다.

  애플리케이션에서는, DirectMusic 의 퍼포먼스의 일부인 2차 버퍼를 관리할 필요는 없다. 애플리케이션에서는, 이펙트를 추가하거나 프로퍼티를 변경하거나 하기 위해서 버퍼 개체를 얻어온다 (일)것은 할 수 있지만,IDirectSoundBuffer8 인터페이스를 사용해 버퍼의 잠금, 버퍼에의 쓰기, 버퍼의 기동과 정지를 실시할 수 없다.

다음 그림은 파일로부터 스피커에의 데이터 플로우의 개략도이다. 복수의 세그먼트(segment)를 동시에 연주할 수 있지만, 여기에서는 1 개의 세그먼트(segment)만이 나타나고 있다. 세그먼트(segment)는, 다음의 4 개의 소스의 어느쪽이든 1 개만으로부터 데이타를 뽑기 시작한다. 사용할 수 있는 소스는, WAV 파일, MIDI 파일, DirectMusic Producer 로 오쏘링 한 세그먼트(segment) 파일, 작곡가 개체에 의해 결합된 구성 요소 파일중 하나이다. 어느 경우도, 사용할 수 있는 것은, 파일은 아니고 리소스의 데이터이다.

데이터 플로우

퍼포먼스에 있어서의 메시지의 흐름을 상세하게 확인하려면 , 「DirectMusic 메시지의 사용법」을 참조할것.

이 그림에 나타나고 있는 프로세스의 처리 방법에 대해서는, 「오디오 데이터의 로드」 및 「사운드의 재생」을 참조할것.

↑TOP