параметры AudioPath

Тема в разделе "WASM.DirectX", создана пользователем Kozyr__, 18 авг 2006.

  1. Kozyr__

    Kozyr__ New Member

    Публикаций:
    0
    Регистрация:
    28 янв 2005
    Сообщения:
    213
    Адрес:
    Ukraine
    задача следующая: необходимо указать в AudioPath каким синтезатор проигрывать миди (не хочу пользоваться только установленным по умолчанию).

    Код (Text):
    1.     DMUS_PORTCAPS    PortCaps;
    2.     ZeroMemory(&PortCaps, sizeof(PortCaps));
    3.     PortCaps.dwSize = sizeof(PortCaps);
    4.     pDirectMusic->EnumPort(iPort, &PortCaps)
    так я нашел 2 порта:
    - Realtek AC97 Audio
    - Microsoft Synthesizer

    если я буду задавать dmus_param.clsidDefaultSynth значением нужного мне порта, я фактически изменю используемый AudioPath'ом порт или нет?
    Код (Text):
    1.     DMUS_AUDIOPARAMS dmus_param;
    2.     ZeroMemory(&dmus_param, sizeof(dmus_param));
    3.     dmus_param.dwSize            = sizeof(dmus_param);
    4.     dmus_param.dwSampleRate      = iRate;
    5.     dmus_param.dwFeatures        = DMUS_AUDIOF_ALL;
    6.     dmus_param.clsidDefaultSynth = PortCaps.guidPort;
    7.  
    8.     pPerformance->InitAudio(&pDirectMusic, NULL, NULL, DMUS_APATH_DYNAMIC_MONO, 64, DMUS_AUDIOF_ALL, &dmus_param)
    9.  
    10.     pPerformance->CreateStandardAudioPath(DMUS_APATH_DYNAMIC_STEREO, 64, TRUE, &pAudioPath)
    По косвенным признакам определить какой испозуется порт не получается, так как нет хорошей звуковой, а у этих двух синтезаторов основные параметры совпадают (BitsPerSample, SamplePerSecond и тп)...
     
  2. keYMax

    keYMax New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2003
    Сообщения:
    276
    Адрес:
    Новоуральск
    А раздел в help'e по dx 9 -> Using DirectMusic Ports может чем-то помочь?
    У performance есть метод PChannelInfo. Он даст указатель на интерфейс IDirectMusicPort а в нем можно вызвать GetCaps. Может быть можно после InitAudio посмотреть какой порт задействован?
     
  3. Kozyr__

    Kozyr__ New Member

    Публикаций:
    0
    Регистрация:
    28 янв 2005
    Сообщения:
    213
    Адрес:
    Ukraine
    keYMax
    А раздел в help'e по dx 9 -> Using DirectMusic Ports может чем-то помочь?

    не-а, первая фраза этой статьи:
    This section covers access to DirectMusic ports by applications that do not use audiopaths
    а мне нужно с audiopaths :dntknw:

    посмотрел с помощью PChannelInfo - работает только Microsoft Synthesizer.

    может я не правильно заполняю структуру DMUS_AUDIOPARAMS? В параметр (CLSID) DMUS_AUDIOPARAMS.clsidDefaultSynth пишу (GUID) DMUS_PORTCAPS.guidPort? Можно по GUID узнать CLSID?
     
  4. Kozyr__

    Kozyr__ New Member

    Публикаций:
    0
    Регистрация:
    28 янв 2005
    Сообщения:
    213
    Адрес:
    Ukraine
    еще такой нюанс: посмотрел с помощью GetCaps у "Realtek AC97 Audio" отсутствует флаг DMUS_PC_AUDIOPATH (установлены только 2 флага: DMUS_PC_DLS, DMUS_PC_SOFTWARESYNTH).

    судя по всему, не получится создать AudioPath для "Realtek AC97 Audio", а мне нужно идти покупать нормальную звуковуху?