다음을 통해 공유


KSPROPSETID_Synth

속성 집합에는 KSPROPSETID_Synth synth 노드(KSNODETYPE_SYNTHESIZER)의 구성에 전역적인 속성이 포함되어 있습니다.

이 집합의 속성 항목은 헤더 파일 Dmusprop.h에 정의된 대로 KSPROPERTY_SYNTH 열거형 값으로 지정됩니다.

사용량 요약 테이블

KSPROPERTY_SYNTH_CAPS 속성은 시스템에서 신시사이저의 기능을 확인하는 데 사용됩니다.

가져오기 설정 대상 속성 설명자 형식 속성 값 형식

Yes

아니요

Pin

KSNODEPROPERTY

SYNTHCAPS

속성 값(작업 데이터)은 SYNTHCAPS 형식의 구조이며 신시사이저의 기능을 지정합니다. 이러한 기능은 다음과 같습니다.

  • 사용 가능한 샘플 메모리 양

  • 채널 그룹의 최대 수

  • 최대 음성 수

  • 최대 오디오 채널 수

  • 렌더링 효과

자세한 내용은 SYNTHCAPS를 참조하세요.

반환 값

KSPROPERTY_SYNTH_CAPS 속성 요청은 STATUS_SUCCESS 반환하여 성공적으로 완료되었음을 나타냅니다. 그렇지 않으면 요청은 코드에 적절한 오류 상태 반환합니다.

신시사이저 기능에 대한 자세한 내용은 Microsoft Windows SDK 설명서의 IDirectMusicPort::GetCaps 메서드 및 DMUS_PORTCAPS 구조를 참조하세요.

사용량 요약 테이블

KSPROPERTY_SYNTH_CHANNELGROUPS 속성은 시스템에서 핀 instance 활성 채널 그룹 수를 설정하거나 가져오는 데 사용됩니다. 채널 그룹은 각 핀 instance 0부터 번호가 매겨집니다.

가져오기 설정 대상 속성 설명자 형식 속성 값 형식

Yes

Yes

Pin

KSNODEPROPERTY

ULONG

속성 값(작업 데이터)은 ULONG 형식이며 핀이 지원하는 채널 그룹 수를 지정합니다. 핀이 n 채널 그룹을 지원하는 경우 핀의 채널 그룹에는 0에서 n-1로 번호가 매겨집니다.

반환 값

KSPROPERTY_SYNTH_CAPS 속성 요청은 STATUS_SUCCESS 반환하여 성공적으로 완료되었음을 나타냅니다. 그렇지 않으면 요청은 코드에 적절한 오류 상태 반환합니다. 다음 표에서는 가능한 오류 코드 중 일부를 보여 줍니다.

상태 코드 의미

STATUS_BUFFER_TOO_SMALL

버퍼가 너무 작아서 작업을 완료할 수 없습니다.

STATUS_UNSUCCESSFUL

작업이 성공적으로 완료되지 않았습니다.

채널 그룹에 대한 자세한 내용은 Microsoft Windows SDK 설명서의 IDirectMusicPort::GetNumChannelGroupsIDirectMusicPort::SetNumChannelGroups 메서드에 대한 설명을 참조하세요.

사용량 요약 테이블

KSPROPERTY_SYNTH_LATENCYCLOCK 속성은 항상 master 클록 시간보다 큰 스트림의 현재 대기 시간 클록 시간에 대한 미니포트 드라이버를 쿼리하는 데 사용됩니다.

가져오기 설정 대상 속성 설명자 형식 속성 값 형식

Yes

아니요

Pin

KSNODEPROPERTY

ULONGLONG

속성 값(작업 데이터)은 ULONGLONG 형식이며 신시사이저의 현재 대기 시간 시간을 나타냅니다. 이 시간은 master 클록을 기준으로 지정되고 100나노초 단위로 표현됩니다.

반환 값

KSPROPERTY_SYNTH_LATENCYCLOCK 속성 요청은 STATUS_SUCCESS 반환하여 성공적으로 완료되었음을 나타냅니다. 그렇지 않으면 요청은 코드에 적절한 오류 상태 반환합니다. 다음 표에서는 가능한 오류 코드 중 일부를 보여 줍니다.

상태 코드 의미

STATUS_BUFFER_TOO_SMALL

버퍼가 너무 작아서 작업을 완료할 수 없습니다.

STATUS_UNSUCCESSFUL

작업이 성공적으로 완료되지 않았습니다.

STATUS_INVALID_DEVICE_REQUEST

이 디바이스에 대한 작업이 잘못되었습니다.

대기 시간 클록은 일반적으로 여러 디바이스 간에 오디오 출력 스트림을 동기화하는 데 사용됩니다.

KSPROPERTY_SYNTH_LATENCYCLOCK get-property 요청은 현재 master 클록 시간과 동일한 대기 시간 클록 시간과 스트림이 통과하는 오디오 필터의 최소 보장 대기 시간을 반환해야 합니다. 오디오 데이터를 현재 대기 시간 시간보다 일찍 재생하도록 예약하는 애플리케이션 프로그램은 데이터가 늦게 재생될 위험이 있습니다.

대기 시간 클록에 대한 자세한 내용은 다음을 참조하세요.

  • 대기 시간 클록의 KSPROPERTY_SYNTH_LATENCYCLOCK 속성에 대한 설명입니다.

  • Microsoft Windows SDK 설명서의 IDirectMusicPort::GetLatencyClockIReferenceClock::GetTime 메서드에 대한 설명입니다.

사용량 요약 테이블

KSPROPERTY_SYNTH_PORTPARAMETERS 속성은 음악 데이터를 보내거나 받는 디바이스의 DirectMusic 용어인 DirectMusic 포트에 대한 구성 매개 변수를 가져오는 데 사용됩니다. (KS 용어에서 DirectMusic 포트는 DMus 포트 드라이버에 해당하지 않습니다. DirectMusic 필터의 렌더링 또는 캡처 핀에 해당합니다.)

가져오기 설정 대상 속성 설명자 형식 속성 값 형식

Yes

아니요

Pin

KSNODEPROPERTY + SYNTH_PORTPARAMS

SYNTH_PORTPARAMS

속성 설명자(instance 데이터)는 KSNODEPROPERTY 구조체로 구성되며 SYNTH_PORTPARAMS 구조가 바로 뒤따릅니다. 속성 요청을 보내기 전에 클라이언트는 요청된 매개 변수 값을 SYNTH_PORTPARAMS 구조에 기록하여 지정합니다.

속성 값(작업 데이터)도 SYNTH_PORTPARAMS 형식입니다. 미니포트 드라이버는 포트를 구성하는 데 실제로 사용하는 매개 변수 값으로 이 구조를 로드합니다.

반환 값

미니포트 드라이버가 호출자가 지정한 대로 DirectMusic 포트를 정확히 구성하는 데 성공하면 STATUS_SUCCESS 코드가 반환됩니다. 그렇지 않으면 적절한 오류 코드를 반환합니다. 다음 표에서는 코드에 상태 가능한 오류 중 일부를 나타냅니다.

상태 코드 의미

STATUS_NOT_ALL_ASSIGNED

작업이 성공했지만 미니포트 드라이버는 호출자가 속성 값에서 유효한 것으로 표시된 매개 변수 값 중 하나 이상을 수정해야 했습니다.

STATUS_UNSUCCESSFUL

작업이 성공적으로 완료되지 않았습니다.

이는 처리할 DirectMusic 속성 항목 중 가장 복잡합니다. 이 속성은 get 요청만 지원하지만 get 요청은 포트 매개 변수도 설정합니다. 포트는 속성 요청에 대한 속성 설명자로 SYNTH_PORTPARAMS 구조를 전달합니다. 속성 값 버퍼는 속성 요청과 함께 사용되지만 가져오기 요청이므로 버퍼는 미니포트 드라이버에서 정보를 검색하는 데만 사용됩니다.

미니포트 드라이버는 먼저 속성 설명자에서 속성 값 버퍼로 SYNTH_PORTPARAMS 구조를 복사해야 합니다. 다음으로 검사 호출자가 요청한 모든 매개 변수 값을 지원할 수 있는지 확인해야 합니다(유효한 것으로 표시됨). 미니포트 드라이버가 요청된 매개 변수 값 중 하나 이상을 지원할 수 없는 경우 이러한 특정 매개 변수에 대해 요청된 값을 지원할 수 있는 값으로 덮어써야 합니다(속성 값 버퍼의 SYNTH_PORTPARAMS 구조에서).

미니포트 드라이버가 호출자의 SYNTH_PORTPARAMS 변경하지 않으면 호출자는 호출자가 원래 미니포트 드라이버로 보낸 속성 설명자의 매개 변수와 정확히 일치하는 속성 값을 다시 가져와야 합니다.

규칙에 따라 드라이버는 SYNTH_PORTPARAMS dwValidParams 멤버에 설정된 해당 비트가 없는 매개 변수의 값도 채웁니다. 이렇게 하면 호출자가 이러한 매개 변수에 사용되는 미니포트 드라이버의 기본값을 확인할 수 있습니다. 미니포트 드라이버는 웨이브 인터페이스 디바이스를 빌드하는 데 사용한 실제 매개 변수 값을 출력합니다.

미니포트 드라이버의 KSPROPERTY_SYNTH_PORTPARAMETERS 처리기는 샘플 속도 변경에 대한 요청을 올바르게 처리할 수 있도록 준비해야 합니다.

사용 요약 테이블

KSPROPERTY_SYNTH_RUNNINGSTATS 속성은 미니포트 드라이버에서 신시사이저의 성능 통계를 쿼리하는 데 사용됩니다.

가져오기 설정 대상 속성 설명자 형식 속성 값 형식

Pin

KSNODEPROPERTY

SYNTH_STATS

속성 값(작업 데이터)은 SYNTH_STATS 형식의 구조입니다. 미니포트 드라이버의 속성 처리기는 다음 통계를 이 구조에 씁니다.

  • 재생되는 평균 음성 수

  • CPU 사용량

  • 손실된 노트 수

  • 사용 가능한 메모리 양

  • 최대 볼륨 수준

반환 값

KSPROPERTY_SYNTH_RUNNINGSTATS 속성 요청은 성공적으로 완료되었음을 나타내는 STATUS_SUCCESS 반환합니다. 그렇지 않으면 요청이 적절한 오류 상태 코드를 반환합니다. 다음 표에서는 몇 가지 가능한 오류 코드를 보여 줍니다.

상태 코드 의미

STATUS_BUFFER_TOO_SMALL

버퍼가 너무 작아서 작업을 완료할 수 없습니다.

STATUS_UNSUCCESSFUL

작업이 성공적으로 완료되지 않았습니다.

STATUS_INVALID_DEVICE_REQUEST

이 디바이스에 대한 작업이 잘못되었습니다.

신시사이저의 성능 통계는 디바이스가 KSSTATE_RUN 상태로 유지되는 동안 지속적으로 업데이트됩니다. 디바이스가 이 상태가 될 때마다 최대 볼륨 및 손실된 노트 수와 같은 누적 값을 0으로 설정하는 통계를 다시 설정합니다.

자세한 내용은 Microsoft Windows SDK 설명서에서 IDirectMusicPort::GetRunningStats 메서드 및 DMUS_SYNTHSTATS 구조에 대한 설명을 참조하세요.

사용 요약 테이블

KSPROPERTY_SYNTH_VOICEPRIORITY 속성은 미니포트 드라이버가 음성 캐시에서 음성을 범프해야 할 때 MIDI 신시사이저에서 특정 음성의 우선 순위를 지정합니다.

가져오기 설정 대상 속성 설명자 형식 속성 값 형식

Pin

KSNODEPROPERTY + SYNTHVOICEPRIORITY_INSTANCE

DWORD

속성 설명자(instance 데이터)는 음성의 채널 그룹(16개의 MIDI 채널 집합) 및 채널 번호(그룹 내)를 지정하는 SYNTHVOICEPRIORITY_INSTANCE 구조가 바로 뒤따르는 KSNODEPROPERTY 구조로 구성됩니다.

속성 값(작업 데이터)은 우선 순위를 지정하는 DWORD입니다. 클라이언트는 KSPROPERTY_SYNTH_VOICEPRIORITY set-property 요청을 사용하여 음성의 새 우선 순위를 미니포트 드라이버에 보내고, KSPROPERTY_SYNTH_VOICEPRIORITY get-property 요청을 사용하여 미니포트 드라이버에서 음성의 현재 우선 순위를 검색합니다.

음성 우선 순위

다음 채널 그룹 우선 순위는 헤더 파일 Dmusprop.h에 정의되어 있습니다.

  DAUD_CRITICAL_VOICE_PRIORITY
  DAUD_HIGH_VOICE_PRIORITY
  DAUD_STANDARD_VOICE_PRIORITY
  DAUD_LOW_VOICE_PRIORITY
  DAUD_PERSIST_VOICE_PRIORITY

앞의 목록은 목록 맨 위에 우선 순위가 가장 높고 맨 아래에는 가장 낮은 순서로 정렬됩니다. 이러한 우선 순위는 채널 그룹 내의 각 채널에 대한 음성 우선 순위에 도달하기 위해 채널 우선 순위 오프셋으로 ORed됩니다. 결과 우선 순위는 get- 및 set-property 요청에 전달됩니다.

이전 채널 그룹 우선 순위 값은 채널 우선 순위 오프셋에 비해 큽니다. 그 결과 채널 그룹 우선 순위를 변경하면 채널 그룹 내 채널의 상대적 우선 순위를 변경하지 않고 다른 채널 그룹을 기준으로 전체 채널 그룹의 우선 순위가 높거나 낮아집니다.

기본 우선 순위

신시사이저 미니포트 드라이버를 만들 때 각 음성에 기본 우선 순위를 할당합니다. 기본값은 다음과 같이 정의됩니다.

  • 기본적으로 우선 순위는 채널 그룹 간에 동일합니다. 예를 들어 채널 그룹 1의 채널 5는 채널 그룹 2의 채널 5와 동일한 우선 순위를 가짐을 의미합니다.

  • DLS 수준 1 사양에 따라 채널 10(MIDI 타악기 채널)의 우선 순위가 가장 높고 1~9, 11~16이 우선합니다.

헤더 파일 Dmusprop.h는 다음 우선 순위 오프셋을 정의합니다.

  DAUD_CHAN10_VOICE_PRIORITY_OFFSET
  DAUD_CHAN1_VOICE_PRIORITY_OFFSET
  DAUD_CHAN2_VOICE_PRIORITY_OFFSET
  DAUD_CHAN3_VOICE_PRIORITY_OFFSET
  DAUD_CHAN4_VOICE_PRIORITY_OFFSET
  DAUD_CHAN5_VOICE_PRIORITY_OFFSET
  DAUD_CHAN6_VOICE_PRIORITY_OFFSET
  DAUD_CHAN7_VOICE_PRIORITY_OFFSET
  DAUD_CHAN8_VOICE_PRIORITY_OFFSET
  DAUD_CHAN9_VOICE_PRIORITY_OFFSET
  DAUD_CHAN11_VOICE_PRIORITY_OFFSET
  DAUD_CHAN12_VOICE_PRIORITY_OFFSET
  DAUD_CHAN13_VOICE_PRIORITY_OFFSET
  DAUD_CHAN14_VOICE_PRIORITY_OFFSET
  DAUD_CHAN15_VOICE_PRIORITY_OFFSET
  DAUD_CHAN16_VOICE_PRIORITY_OFFSET

앞의 오프셋 목록은 목록 맨 위에 우선 순위가 가장 높은 순서로 정렬됩니다. 헤더 파일 Dmusprop.h는 또한 각 오프셋을 DAUD_STANDARD_VOICE_PRIORITY 사용하여 각 오프셋을 비트 단위로 ORing하여 각 채널 그룹의 채널의 기본 우선 순위를 정의합니다. 예를 들어 다음 정의는 각 채널 그룹의 채널 1에 대한 기본 우선 순위를 지정합니다.

  #define DAUD_CHAN1_DEF_VOICE_PRIORITY \
    (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN1_VOICE_PRIORITY_OFFSET)

반환 값

KSPROPERTY_SYNTH_VOICEPRIORITY 속성 요청은 성공적으로 완료되었음을 나타내는 STATUS_SUCCESS 반환합니다. 그렇지 않으면 요청이 적절한 오류 상태 코드를 반환합니다. 다음 표에서는 몇 가지 가능한 오류 코드를 보여 줍니다.

상태 코드 의미

STATUS_BUFFER_TOO_SMALL

버퍼가 너무 작아서 작업을 완료할 수 없습니다.

STATUS_UNSUCCESSFUL

작업이 성공적으로 완료되지 않았습니다.

음성 우선 순위에 대한 자세한 내용은 Microsoft Windows SDK 설명서에서 IDirectMusicPort::GetChannelPriorityIDirectMusicPort::SetChannelPriority 메서드에 대한 설명을 참조하세요.

사용 요약 테이블

KSPROPERTY_SYNTH_VOLUME 속성은 신시사이저 디바이스의 볼륨 수준을 가져오거나 설정합니다.

가져오기 설정 대상 속성 설명자 형식 속성 값 형식

Pin

KSPROPERTY

LONG

속성 값(작업 데이터)은 LONG 형식이며 신시사이저 디바이스의 볼륨 수준을 지정합니다. 볼륨 설정은 데시벨의 1/100번째 단위로 지정됩니다. 미니포트 드라이버는 요청이 속성을 가져올지 또는 설정할지에 따라 볼륨을 변경하거나 볼륨을 보고해야 합니다.

반환 값

KSPROPERTY_SYNTH_VOLUME 속성 요청은 성공적으로 완료되었음을 나타내는 STATUS_SUCCESS 반환합니다. 그렇지 않으면 요청이 적절한 오류 상태 코드를 반환합니다. 다음 표에서는 몇 가지 가능한 오류 코드를 보여 줍니다.

상태 코드 의미

STATUS_BUFFER_TOO_SMALL

버퍼가 너무 작아서 작업을 완료할 수 없습니다.

STATUS_UNSUCCESSFUL

작업이 성공적으로 완료되지 않았습니다.

사용 요약 테이블

KSPROPERTY_SYNTH_VOLUMEBOOST 속성은 신시사이저 디바이스의 볼륨이 증가되는 양을 지정합니다.

가져오기 설정 대상 속성 설명자 형식 속성 값 형식

Pin

KSNODEPROPERTY

LONG

속성 값(작업 데이터)은 LONG 형식이며 혼합 단계 후 오디오 신호를 높일 정도를 지정합니다. 이는 모든 음성 관절 및 혼합이 완료된 후 신시사이저의 최종 출력에 추가할 볼륨의 양입니다. 볼륨 증가 크기는 데시벨의 1/100번째에 지정됩니다. 이 값은 양수 또는 음수일 수 있습니다.

반환 값

KSPROPERTY_SYNTH_VOLUMEBOOST 속성 요청은 성공적으로 완료되었음을 나타내는 STATUS_SUCCESS 반환합니다. 그렇지 않으면 요청이 적절한 오류 상태 코드를 반환합니다. 다음 표에서는 몇 가지 가능한 오류 코드를 보여 줍니다.

상태 코드 의미

STATUS_BUFFER_TOO_SMALL

버퍼가 너무 작아서 작업을 완료할 수 없습니다.

STATUS_UNSUCCESSFUL

작업이 성공적으로 완료되지 않았습니다.

출력에 다른 부스트를 추가하면 안 됩니다. 신시사이저는 굴절을 위해 엄격한 DLS 수준 1 규칙을 따라야 합니다.

이 속성은 시스템의 다른 오디오 출력과 신시사이저의 볼륨을 균등화하는 데 사용되므로 모든 장치에서 일관된 방식으로 해석되어야 합니다.