신시사이저를 레거시 디바이스로 노출

신디사이저 하드웨어를 DirectMusic 디바이스와 레거시 MIDI 디바이스(즉, Windows 멀티미디어 midiOutXxx API를 통해)로 노출하는 단일 디바이스 드라이버를 작성할 수 있습니다. 이 기술은 다음 세 가지 경우에 유용할 수 있습니다.

  1. 디바이스가 DLS를 지원하지 않는 경우 예를 들어 MPU-401 드라이버(Windows 드라이버 키트 [WDK]의 mpu401 샘플 참조), ROM 집합만 있는 디바이스 및 고정 함수 소프트웨어 신디사이저(예: FM)가 있습니다.

    이 경우 디바이스는 레거시 MIDI 인터페이스와 DirectMusic 인터페이스를 노출할 수 있습니다. 하나의 레거시 MIDI 핀만 노출해야 합니다. WDM Audio가 레거시 MIDI 디바이스로 열거하도록 먼저 레거시 인터페이스를 사용하여 핀을 나열하는 것이 중요합니다.

  2. 디바이스가 DLS를 지원하지만 로드된 상태에서 전원을 공급하는 경우 이 디바이스에는 DLS용 RAM과 GM/GS/XG 웨이브 테이블이 포함된 ROM이 모두 있습니다.

    이 경우 디바이스는 두 인터페이스를 모두 노출할 수도 있습니다. 두 인터페이스가 상호 배타적인 경우(즉, 항목을 다운로드하면 ROM이 표시되지 않음) 두 개의 핀이 아닌 두 개의 인터페이스 중에서 선택할 수 있는 단일 핀이어야 합니다.

  3. 디바이스가 DLS를 지원하지만 "빈"(예: DirectMusic 소프트웨어 신디사이저)을 활성화하므로 웨이브 테이블을 초기화하려면 DLS 다운로드가 필요합니다.

    이 초기화는 디바이스에 DLS 다운로드가 필요하지 않거나(예: ROM에 기본 샘플 집합이 있는 경우) DirectMusic 핀이 열려 있는 경우(DirectMusic API는 DLS 다운로드가 발생하도록 보장)할 필요가 없습니다.

    레거시 API를 통해 DLS 디바이스를 노출하려면 몇 가지 추가 작업이 필요합니다. DLS 계측이 필요한 디바이스에서 레거시 핀을 열면 드라이버는 사용할 DLS 컬렉션이 포함된 파일을 찾아서 열어야 합니다. 그런 다음 드라이버는 업데이트 및 은행 변경 내용을 가로채 DLS 파일에서 적절한 데이터를 검색하고 디바이스에 필요한 DLS 다운로드를 수행해야 합니다.

    WDMAud 시스템 드라이버 및 다른 클라이언트가 컬렉션을 다운로드해야 한다는 사실을 인식하지 못하기 때문에 이 경우 문제가 됩니다. MIDI 업데이트 변경 내용 및 메모를 보내기 시작합니다.