MIDI 전송

DMus 포트 드라이버는 DMus 미니포트 드라이버 신시사이저 작업의 앞면과 후면에 관련됩니다. 포트 드라이버는 타임스탬프를 적용한 MIDI 데이터로 구성된 MIDI 스트림을 입력하고 스트림을 시퀀서로 라우팅합니다. 시퀀서가 타임스탬프를 제거하고 타임스탬프를 기한에 따라 원시 MIDI 메시지를 미니포트 드라이버에 전달합니다. (DLS 데이터는 전처리 없이 포트 드라이버를 통해 미니포트 드라이버로 바로 전달됩니다.)

DMus 미니포트 드라이버의 MIDI 입력 스트림이 웨이브 데이터로 변환되면 해당 출력은 웨이브 싱크("신스 싱크" 또는 "렌더링 싱크"라고도 함)에 의해 관리됩니다.

DMus 포트 드라이버는 dmusic.dll DirectMusic 사용자 모드 구성 요소의 DirectMusic 데이터를 허용하는 입력 핀을 사용하여 커널 스트리밍 필터를 구현합니다. 또한 포트 드라이버에는 합성된 오디오 스트림을 내보내는 웨이브 출력 핀이 있습니다. 웨이브 싱크는 이 핀을 관리하고 메모리에서 데이터를 쓸 위치를 신디사이저에 알려줍니다. 이 배열은 커널 스트리밍의 세부 정보에서 신디사이저를 격리합니다. DMus 미니포트 드라이버는 입력 MIDI 스트림에서 웨이브 데이터를 합성하는 세부 정보만 처리하면 됩니다. 포트 드라이버는 웨이브 데이터를 시스템으로 보내고 SysAudio의 필터 그래프는 필터를 연결하여 모든 것이 올바르게 흐르도록 합니다. 다음 다이어그램과 같이 MIDI 데이터는 DMus 포트 드라이버로 들어오고 시퀀싱 후 DMus 미니포트 드라이버에 전달됩니다.

PortDMus 드라이버를 통한 MIDI 및 DLS 데이터의 흐름을 보여 주는 다이어그램

미니포트 드라이버는 MIDI 데이터를 웨이브 형식으로 변환합니다. 이 형식은 포트 드라이버의 다른 부분인 웨이브 싱크에 의해 지정된 버퍼로 렌더링됩니다. 그런 다음, 사용자 모드에서와 같이 DirectSound로 나가는 대신, 웨이브 출력은 KMixer 시스템 드라이버를 통해 오디오 하드웨어로 이동합니다. DirectSound는 실제로 KMixer를 노출하는 API일 뿐이며 DirectSound 가속은 KMixer가 소프트웨어에서 에뮬레이트하는 대신 하드웨어에서 가속되는 믹서 함수로 구성됩니다.

오디오 필터 그래프를 빌드하는 SysAudio 시스템 드라이버는 DMus 포트 드라이버를 하드웨어에 연결합니다. 포트 드라이버의 웨이브 싱크 부분은 SysAudio가 하드웨어 디바이스에 연결할 수 있는 웨이브 아웃 핀을 통해 데이터를 보냅니다. DMus 미니포트 드라이버(하드웨어 또는 소프트웨어 신디사이저인지 여부에 관계없이)에서 웨이브 데이터를 가져오고 모든 타이밍 문제를 처리합니다. 사용자 모드에 비해 미니포트 드라이버는 신디사이저와 유사하지만 웨이브 싱크는 포트 드라이버의 일부일 뿐입니다.

DMus 미니포트 드라이버가 출력을 호스트에 다시 제공할 수 있는 경우 SysAudio에서 KMixer를 인식하고 연결하는 KSPIN_DATAFLOW_OUT( KSPIN 참조)의 데이터 방향이 있는 웨이브 핀을 노출합니다.

웨이브 싱크에 대한 자세한 내용은 Kernel-Mode 소프트웨어 신시사이저용 웨이브 싱크를 참조하세요.

이 섹션에는 다음도 포함됩니다.

IMXF 인터페이스

할당자