Matthew van Eerde's web log

  • Matthew van Eerde's web log

    Nitpicking Sam Loyd - a wheel within a wheel

    • 0 Comments

    In August 1878 Sam Loyd published this mate in two and dedicated it to a friend of his named Wheeler:


    Mate in two; Black to move and mate in two; Selfmate in two; Black to move and selfmate in two

    While the mates appear to stand up, the problem position is not legal. White has three a-pawns; this implies at least three Black pieces were captured by a White pawn. But Black has fifteen pieces on the board; only one is missing!

    Looking at Black pawn captures - the b2-, c-, and d- pawns together account for three pawn captures. This seems OK at first glance since White has three pieces missing. But all the missing White pieces are pawns, and they are from the right half of the board... so they must have promoted. This implies more pawn captures to either get the Black pawns out of the way or to get the White pawns around them. (The promoted pieces could have been captured by the Black pawns, or the original pieces could have been captured in which case the promoted pieces are on the board now.)

    Finally, the h-pawns on h5 and h6 could not have got into their present position without at least one pawn capture by White, or at least two pawn captures by Black.

  • Matthew van Eerde's web log

    How to enumerate audio endpoint (IMMDevice) properties on your system

    • 12 Comments

    Source and binaries (amd64 and x86) attached.

    Pseudocode:

    CoCreateInstance(..., &pMMDeviceEnumerator);
    pMMDeviceEnumerator->EnumAudioEndpoints(..., &pMMDeviceCollection);
    for (each device in the collection) {
        pMMDevice->OpenPropertyStore(...,  &pPropertyStore);
        for (each property in the store) {
            log the property
        }
    }

    Output on my system:

    >audioendpoints.exe
    ID: {0.0.0.00000000}.{6d531641-b3e3-43c5-ba56-ba165b4a9bb6}
    State: 4 (DEVICE_STATE_NOTPRESENT)
    -- Properties (18) --
    {b3f8fa53-0004-438e-9003-51a46e139bfc},15:
        VT_BLOB of size 16
        db 07 06 00 03 00 01 00
        17 00 3a 00 2d 00 26 03
    DEVPKEY_Device_DeviceDesc:
        VT_LPWSTR Internal AUX Jack
    {b3f8fa53-0004-438e-9003-51a46e139bfc},6:
        VT_LPWSTR High Definition Audio Device
    {b3f8fa53-0004-438e-9003-51a46e139bfc},2:
        VT_LPWSTR {1}.HDAUDIO\FUNC_01&VEN_8384&DEV_7690&SUBSYS_102801BD&REV_1022\4&33D044FE&0&0001
    {83da6326-97a6-4088-9453-a1923f573b29},3:
        VT_LPWSTR hdaudio.inf:Microsoft.ntamd64:HdAudModel:6.1.7600.16385::hdaudio\func_01
    DEVPKEY_Device_BaseContainerId:
        VT_CLSID {00000000-0000-0000-ffff-ffffffffffff}
    DEVPKEY_Device_ContainerId:
        VT_CLSID {00000000-0000-0000-ffff-ffffffffffff}
    DEVPKEY_Device_EnumeratorName:
        VT_LPWSTR HDAUDIO
    {b3f8fa53-0004-438e-9003-51a46e139bfc},1:
        VT_BLOB of size 72
        a8 7f a4 d5 98 6d d1 11
        a2 1a 00 a0 c9 22 31 96
        9c ac 97 dc ec dd 59 4d
        b6 50 3b 8b a6 7b c2 a1
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        e0 cc 13 de 04 83 e9 4e
        ba ce 48 24 21 4e 3e a5
        00 00 02 00 01 00 00 00
    PKEY_AudioEndpoint_FormFactor:
        VT_UI4 10
    PKEY_AudioEndpoint_JackSubType:
        VT_LPWSTR {6994AD04-93EF-11D0-A3CC-00A0C9223196}
    DEVPKEY_DeviceClass_IconPath:
        VT_LPWSTR %windir%\system32\mmres.dll,-3018
    {840b8171-b0ad-410f-8581-cccc0382cfef},0:
        VT_BLOB of size 300
        01 00 00 00 28 01 00 00
        00 00 01 00 7b 00 32 00
        7d 00 2e 00 5c 00 5c 00
        3f 00 5c 00 68 00 64 00
        61 00 75 00 64 00 69 00
        6f 00 23 00 66 00 75 00
        6e 00 63 00 5f 00 30 00
        31 00 26 00 76 00 65 00
        6e 00 5f 00 38 00 33 00
        38 00 34 00 26 00 64 00
        65 00 76 00 5f 00 37 00
        36 00 39 00 30 00 26 00
        73 00 75 00 62 00 73 00
        79 00 73 00 5f 00 31 00
        30 00 32 00 38 00 30 00
        31 00 62 00 64 00 26 00
        72 00 65 00 76 00 5f 00
        31 00 30 00 32 00 32 00
        23 00 34 00 26 00 33 00
        33 00 64 00 30 00 34 00
        34 00 66 00 65 00 26 00
        30 00 26 00 30 00 30 00
        30 00 31 00 23 00 7b 00
        36 00 39 00 39 00 34 00
        61 00 64 00 30 00 34 00
        2d 00 39 00 33 00 65 00
        66 00 2d 00 31 00 31 00
        64 00 30 00 2d 00 61 00
        33 00 63 00 63 00 2d 00
        30 00 30 00 61 00 30 00
        63 00 39 00 32 00 32 00
        33 00 31 00 39 00 36 00
        7d 00 5c 00 65 00 6d 00
        69 00 63 00 69 00 6e 00
        74 00 6f 00 70 00 6f 00
        2f 00 30 00 30 00 30 00
        31 00 30 00 30 00 30 00
        30 00 00 00
    PKEY_AudioEndpoint_Association:
        VT_LPWSTR {00000000-0000-0000-0000-000000000000}
    PKEY_AudioEndpoint_Supports_EventDriven_Mode:
        VT_UI4 1
    DEVPKEY_Device_FriendlyName:
        VT_LPWSTR Internal AUX Jack (High Definition Audio Device)
    DEVPKEY_DeviceInterface_FriendlyName:
        VT_LPWSTR High Definition Audio Device
    PKEY_AudioEndpoint_GUID:
        VT_LPWSTR {6D531641-B3E3-43C5-BA56-BA165B4A9BB6}

    ID: {0.0.0.00000000}.{ca9fa848-1e60-401c-81e6-323546335d0a}
    State: 1 (DEVICE_STATE_ACTIVE)
    -- Properties (26) --
    {b3f8fa53-0004-438e-9003-51a46e139bfc},15:
        VT_BLOB of size 16
        da 07 0a 00 04 00 1c 00
        16 00 3a 00 3a 00 d1 00
    DEVPKEY_Device_DeviceDesc:
        VT_LPWSTR Speakers
    {b3f8fa53-0004-438e-9003-51a46e139bfc},6:
        VT_LPWSTR High Definition Audio Device
    {b3f8fa53-0004-438e-9003-51a46e139bfc},2:
        VT_LPWSTR {1}.HDAUDIO\FUNC_01&VEN_8384&DEV_7690&SUBSYS_102801BD&REV_1022\4&33D044FE&0&0001
    {83da6326-97a6-4088-9453-a1923f573b29},3:
        VT_LPWSTR hdaudio.inf:Microsoft.ntamd64:HdAudModel:6.1.7600.16385::hdaudio\func_01
    DEVPKEY_Device_BaseContainerId:
        VT_CLSID {00000000-0000-0000-ffff-ffffffffffff}
    DEVPKEY_Device_ContainerId:
        VT_CLSID {00000000-0000-0000-ffff-ffffffffffff}
    DEVPKEY_Device_EnumeratorName:
        VT_LPWSTR HDAUDIO
    {b3f8fa53-0004-438e-9003-51a46e139bfc},1:
        VT_BLOB of size 72
        a8 7f a4 d5 98 6d d1 11
        a2 1a 00 a0 c9 22 31 96
        9c ac 97 dc ec dd 59 4d
        b6 50 3b 8b a6 7b c2 a1
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        e0 cc 13 de 04 83 e9 4e
        ba ce 48 24 21 4e 3e a5
        00 00 02 00 01 00 00 00
    PKEY_AudioEndpoint_FormFactor:
        VT_UI4 1
    PKEY_AudioEndpoint_JackSubType:
        VT_LPWSTR {DFF21CE1-F70F-11D0-B917-00A0C9223196}
    DEVPKEY_DeviceClass_IconPath:
        VT_LPWSTR %windir%\system32\mmres.dll,-3010
    {840b8171-b0ad-410f-8581-cccc0382cfef},0:
        VT_BLOB of size 324
        01 00 00 00 40 01 00 00
        00 00 01 00 7b 00 32 00
        7d 00 2e 00 5c 00 5c 00
        3f 00 5c 00 68 00 64 00
        61 00 75 00 64 00 69 00
        6f 00 23 00 66 00 75 00
        6e 00 63 00 5f 00 30 00
        31 00 26 00 76 00 65 00
        6e 00 5f 00 38 00 33 00
        38 00 34 00 26 00 64 00
        65 00 76 00 5f 00 37 00
        36 00 39 00 30 00 26 00
        73 00 75 00 62 00 73 00
        79 00 73 00 5f 00 31 00
        30 00 32 00 38 00 30 00
        31 00 62 00 64 00 26 00
        72 00 65 00 76 00 5f 00
        31 00 30 00 32 00 32 00
        23 00 34 00 26 00 33 00
        33 00 64 00 30 00 34 00
        34 00 66 00 65 00 26 00
        30 00 26 00 30 00 30 00
        30 00 31 00 23 00 7b 00
        36 00 39 00 39 00 34 00
        61 00 64 00 30 00 34 00
        2d 00 39 00 33 00 65 00
        66 00 2d 00 31 00 31 00
        64 00 30 00 2d 00 61 00
        33 00 63 00 63 00 2d 00
        30 00 30 00 61 00 30 00
        63 00 39 00 32 00 32 00
        33 00 31 00 39 00 36 00
        7d 00 5c 00 65 00 73 00
        6c 00 61 00 76 00 65 00
        64 00 68 00 70 00 73 00
        70 00 65 00 61 00 6b 00
        65 00 72 00 74 00 6f 00
        70 00 6f 00 2f 00 30 00
        30 00 30 00 31 00 30 00
        30 00 30 00 31 00 00 00
        00 00 00 00
    PKEY_AudioEndpoint_Association:
        VT_LPWSTR {00000000-0000-0000-0000-000000000000}
    PKEY_AudioEndpoint_Supports_EventDriven_Mode:
        VT_UI4 1
    {9a82a7db-3ebb-41b4-83ba-18b7311718fc},1:
        VT_UI4 65536
    {233164c8-1b2c-4c7d-bc68-b671687a2567},1:
        VT_LPWSTR {2}.\\?\hdaudio#func_01&ven_8384&dev_7690&subsys_102801bd&rev_1022#4&33d044fe&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\eslavedhpspeakerwave
    {5a9125b7-f367-4924-ace2-0803a4a3a471},0:
        VT_UI4 1610652916
    {5a9125b7-f367-4924-ace2-0803a4a3a471},2:
        VT_UI4 1610644836
    {b3f8fa53-0004-438e-9003-51a46e139bfc},0:
        VT_UI4 1
    PKEY_AudioEngine_DeviceFormat:
        VT_BLOB of size 40
        fe ff 02 00 44 ac 00 00
        10 b1 02 00 04 00 10 00
        16 00 10 00 03 00 00 00
        01 00 00 00 00 00 10 00
        80 00 00 aa 00 38 9b 71
    {e4870e26-3cc5-4cd2-ba46-ca0a9a70ed04},0:
        VT_BLOB of size 40
        fe ff 02 00 44 ac 00 00
        20 62 05 00 08 00 20 00
        16 00 20 00 03 00 00 00
        03 00 00 00 00 00 10 00
        80 00 00 aa 00 38 9b 71
    {e4870e26-3cc5-4cd2-ba46-ca0a9a70ed04},1:
        VT_BLOB of size 8
        d3 8c 01 00 00 00 00 00
    DEVPKEY_Device_FriendlyName:
        VT_LPWSTR Speakers (High Definition Audio Device)
    DEVPKEY_DeviceInterface_FriendlyName:
        VT_LPWSTR High Definition Audio Device
    PKEY_AudioEndpoint_GUID:
        VT_LPWSTR {CA9FA848-1E60-401C-81E6-323546335D0A}

    ID: {0.0.1.00000000}.{4f5e42d9-227f-43ff-bf5b-a1ce5d0324cf}
    State: 8 (DEVICE_STATE_UNPLUGGED)
    -- Properties (28) --
    {b3f8fa53-0004-438e-9003-51a46e139bfc},15:
        VT_BLOB of size 16
        da 07 0a 00 04 00 1c 00
        16 00 3a 00 3a 00 0f 01
    DEVPKEY_Device_DeviceDesc:
        VT_LPWSTR Microphone
    {b3f8fa53-0004-438e-9003-51a46e139bfc},6:
        VT_LPWSTR High Definition Audio Device
    {b3f8fa53-0004-438e-9003-51a46e139bfc},2:
        VT_LPWSTR {1}.HDAUDIO\FUNC_01&VEN_8384&DEV_7690&SUBSYS_102801BD&REV_1022\4&33D044FE&0&0001
    {83da6326-97a6-4088-9453-a1923f573b29},3:
        VT_LPWSTR hdaudio.inf:Microsoft.ntamd64:HdAudModel:6.1.7600.16385::hdaudio\func_01
    DEVPKEY_Device_BaseContainerId:
        VT_CLSID {00000000-0000-0000-ffff-ffffffffffff}
    DEVPKEY_Device_ContainerId:
        VT_CLSID {00000000-0000-0000-ffff-ffffffffffff}
    DEVPKEY_Device_EnumeratorName:
        VT_LPWSTR HDAUDIO
    {b3f8fa53-0004-438e-9003-51a46e139bfc},1:
        VT_BLOB of size 72
        a8 7f a4 d5 98 6d d1 11
        a2 1a 00 a0 c9 22 31 96
        9c ac 97 dc ec dd 59 4d
        b6 50 3b 8b a6 7b c2 a1
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        e0 cc 13 de 04 83 e9 4e
        ba ce 48 24 21 4e 3e a5
        00 00 02 00 01 00 00 00
    PKEY_AudioEndpoint_FormFactor:
        VT_UI4 4
    PKEY_AudioEndpoint_JackSubType:
        VT_LPWSTR {DFF21BE1-F70F-11D0-B917-00A0C9223196}
    DEVPKEY_DeviceClass_IconPath:
        VT_LPWSTR %windir%\system32\mmres.dll,-3014
    {840b8171-b0ad-410f-8581-cccc0382cfef},0:
        VT_BLOB of size 300
        01 00 00 00 28 01 00 00
        00 00 01 00 7b 00 32 00
        7d 00 2e 00 5c 00 5c 00
        3f 00 5c 00 68 00 64 00
        61 00 75 00 64 00 69 00
        6f 00 23 00 66 00 75 00
        6e 00 63 00 5f 00 30 00
        31 00 26 00 76 00 65 00
        6e 00 5f 00 38 00 33 00
        38 00 34 00 26 00 64 00
        65 00 76 00 5f 00 37 00
        36 00 39 00 30 00 26 00
        73 00 75 00 62 00 73 00
        79 00 73 00 5f 00 31 00
        30 00 32 00 38 00 30 00
        31 00 62 00 64 00 26 00
        72 00 65 00 76 00 5f 00
        31 00 30 00 32 00 32 00
        23 00 34 00 26 00 33 00
        33 00 64 00 30 00 34 00
        34 00 66 00 65 00 26 00
        30 00 26 00 30 00 30 00
        30 00 31 00 23 00 7b 00
        36 00 39 00 39 00 34 00
        61 00 64 00 30 00 34 00
        2d 00 39 00 33 00 65 00
        66 00 2d 00 31 00 31 00
        64 00 30 00 2d 00 61 00
        33 00 63 00 63 00 2d 00
        30 00 30 00 61 00 30 00
        63 00 39 00 32 00 32 00
        33 00 31 00 39 00 36 00
        7d 00 5c 00 65 00 6d 00
        69 00 63 00 69 00 6e 00
        74 00 6f 00 70 00 6f 00
        2f 00 30 00 30 00 30 00
        31 00 30 00 30 00 30 00
        31 00 00 00
    PKEY_AudioEndpoint_Association:
        VT_LPWSTR {00000000-0000-0000-0000-000000000000}
    PKEY_AudioEndpoint_Supports_EventDriven_Mode:
        VT_UI4 1
    {24dbb0fc-9311-4b3d-9cf0-18ff155639d4},3:
        VT_BOOL 0xffffffff
    {24dbb0fc-9311-4b3d-9cf0-18ff155639d4},4:
        VT_BOOL 0xffffffff
    {9a82a7db-3ebb-41b4-83ba-18b7311718fc},1:
        VT_UI4 65536
    {233164c8-1b2c-4c7d-bc68-b671687a2567},1:
        VT_LPWSTR {2}.\\?\hdaudio#func_01&ven_8384&dev_7690&subsys_102801bd&rev_1022#4&33d044fe&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\emicinwave
    {5a9125b7-f367-4924-ace2-0803a4a3a471},0:
        VT_UI4 1610712932
    {5a9125b7-f367-4924-ace2-0803a4a3a471},2:
        VT_UI4 1610708836
    {b3f8fa53-0004-438e-9003-51a46e139bfc},0:
        VT_UI4 3
    PKEY_AudioEngine_DeviceFormat:
        VT_BLOB of size 40
        fe ff 02 00 44 ac 00 00
        10 b1 02 00 04 00 10 00
        16 00 10 00 03 00 00 00
        01 00 00 00 00 00 10 00
        80 00 00 aa 00 38 9b 71
    {e4870e26-3cc5-4cd2-ba46-ca0a9a70ed04},0:
        VT_BLOB of size 40
        fe ff 02 00 44 ac 00 00
        20 62 05 00 08 00 20 00
        16 00 20 00 03 00 00 00
        03 00 00 00 00 00 10 00
        80 00 00 aa 00 38 9b 71
    {e4870e26-3cc5-4cd2-ba46-ca0a9a70ed04},1:
        VT_BLOB of size 8
        d3 8c 01 00 00 00 00 00
    DEVPKEY_Device_FriendlyName:
        VT_LPWSTR Microphone (High Definition Audio Device)
    DEVPKEY_DeviceInterface_FriendlyName:
        VT_LPWSTR High Definition Audio Device
    PKEY_AudioEndpoint_GUID:
        VT_LPWSTR {4F5E42D9-227F-43FF-BF5B-A1CE5D0324CF}

    ID: {0.0.1.00000000}.{6712184b-f8f0-474d-ad36-808cc90a7cfd}
    State: 4 (DEVICE_STATE_NOTPRESENT)
    -- Properties (29) --
    {b3f8fa53-0004-438e-9003-51a46e139bfc},15:
        VT_BLOB of size 16
        db 07 03 00 01 00 15 00
        10 00 3b 00 21 00 f4 00
    DEVPKEY_Device_DeviceDesc:
        VT_LPWSTR Microphone Array
    {b3f8fa53-0004-438e-9003-51a46e139bfc},6:
        VT_LPWSTR Microphone Array
    {b3f8fa53-0004-438e-9003-51a46e139bfc},2:
        VT_LPWSTR {1}.USB\VID_045E&PID_FFF0&MI_01\6&1474EDB6&0&0001
    {83da6326-97a6-4088-9453-a1923f573b29},3:
        VT_LPWSTR wdma_usb.inf:Microsoft.ntamd64:USBAudio:6.1.7600.16385:usb\class_01
    DEVPKEY_Device_BaseContainerId:
        VT_CLSID {9132f6ea-a152-5472-8685-61c0d297a30b}
    DEVPKEY_Device_ContainerId:
        VT_CLSID {9132f6ea-a152-5472-8685-61c0d297a30b}
    DEVPKEY_Device_EnumeratorName:
        VT_LPWSTR USB
    {b3f8fa53-0004-438e-9003-51a46e139bfc},1:
        VT_BLOB of size 72
        30 f1 1c 4e 79 16 3b 46
        a7 2f a5 bf 64 c8 6e ba
        4e 5a cd ab 63 c2 3b 46
        a7 2f a5 bf 64 c8 6e ba
        f0 75 12 8f e9 26 64 42
        ba 4d 39 ff f0 1d 94 aa
        a6 54 57 fc f8 2d 3b 46
        a7 2f a5 bf 64 c8 6e ba
        02 00 00 00 09 00 00 00
    PKEY_AudioEndpoint_FormFactor:
        VT_UI4 4
    PKEY_AudioEndpoint_JackSubType:
        VT_LPWSTR {DFF21BE5-F70F-11D0-B917-00A0C9223196}
    DEVPKEY_DeviceClass_IconPath:
        VT_LPWSTR %windir%\system32\mmres.dll,-3020
    {840b8171-b0ad-410f-8581-cccc0382cfef},0:
        VT_BLOB of size 236
        01 00 00 00 e8 00 00 00
        00 00 01 00 7b 00 32 00
        7d 00 2e 00 5c 00 5c 00
        3f 00 5c 00 75 00 73 00
        62 00 23 00 76 00 69 00
        64 00 5f 00 30 00 34 00
        35 00 65 00 26 00 70 00
        69 00 64 00 5f 00 66 00
        66 00 66 00 30 00 26 00
        6d 00 69 00 5f 00 30 00
        31 00 23 00 36 00 26 00
        31 00 34 00 37 00 34 00
        65 00 64 00 62 00 36 00
        26 00 30 00 26 00 30 00
        30 00 30 00 31 00 23 00
        7b 00 36 00 39 00 39 00
        34 00 61 00 64 00 30 00
        34 00 2d 00 39 00 33 00
        65 00 66 00 2d 00 31 00
        31 00 64 00 30 00 2d 00
        61 00 33 00 63 00 63 00
        2d 00 30 00 30 00 61 00
        30 00 63 00 39 00 32 00
        32 00 33 00 31 00 39 00
        36 00 7d 00 5c 00 67 00
        6c 00 6f 00 62 00 61 00
        6c 00 2f 00 30 00 30 00
        30 00 31 00 30 00 30 00
        30 00 31 00 00 00 00 00
        00 00 00 00
    PKEY_AudioEndpoint_Association:
        VT_LPWSTR {00000000-0000-0000-0000-000000000000}
    PKEY_AudioEndpoint_Supports_EventDriven_Mode:
        VT_UI4 1
    {24dbb0fc-9311-4b3d-9cf0-18ff155639d4},3:
        VT_BOOL 0x0
    {24dbb0fc-9311-4b3d-9cf0-18ff155639d4},4:
        VT_BOOL 0xffffffff
    {9a82a7db-3ebb-41b4-83ba-18b7311718fc},1:
        VT_UI4 65536
    {233164c8-1b2c-4c7d-bc68-b671687a2567},1:
        VT_LPWSTR {2}.\\?\usb#vid_045e&pid_fff0&mi_01#6&1474edb6&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\global
    {5a9125b7-f367-4924-ace2-0803a4a3a471},0:
        VT_UI4 1610713736
    {5a9125b7-f367-4924-ace2-0803a4a3a471},2:
        VT_UI4 1610709736
    {b3f8fa53-0004-438e-9003-51a46e139bfc},0:
        VT_UI4 3
    PKEY_AudioEngine_DeviceFormat:
        VT_BLOB of size 40
        fe ff 04 00 80 3e 00 00
        00 f4 01 00 08 00 10 00
        16 00 10 00 00 00 00 00
        01 00 00 00 00 00 10 00
        80 00 00 aa 00 38 9b 71
    {e4870e26-3cc5-4cd2-ba46-ca0a9a70ed04},0:
        VT_BLOB of size 40
        fe ff 04 00 80 3e 00 00
        00 e8 03 00 10 00 20 00
        16 00 20 00 00 00 00 00
        03 00 00 00 00 00 10 00
        80 00 00 aa 00 38 9b 71
    {e4870e26-3cc5-4cd2-ba46-ca0a9a70ed04},1:
        VT_BLOB of size 8
        a0 86 01 00 00 00 00 00
    {9855c4cd-df8c-449c-a181-8191b68bd06c},0:
        VT_BLOB of size 16
        00 00 f0 41 00 00 f0 41
        00 00 f0 41 00 00 f0 41
    DEVPKEY_Device_FriendlyName:
        VT_LPWSTR Microphone Array (Microphone Array)
    DEVPKEY_DeviceInterface_FriendlyName:
        VT_LPWSTR Microphone Array
    PKEY_AudioEndpoint_GUID:
        VT_LPWSTR {6712184B-F8F0-474D-AD36-808CC90A7CFD}

    The unrecognized properties could be private properties used by the OS, or by the audio driver, or they might be defined in some public header that I didn't bother to scour.

    UPDATE 2011-09-09: added WAVEFORMATEX logging for properties known to be audio formats.

  • Matthew van Eerde's web log

    Linearity of Windows volume APIs - render session and stream volumes

    • 0 Comments

    We have talked about some of the volume APIs Windows exposes. We have also talked about what it means for a volume control to be linear in magnitude, linear in power, or linear in dB. We have also talked about how to read IAudioMeterInformation and how the limiter can attenuate full-scale signals.

    The last post had a volume-linearity.exe which, when called with --signal, showed that IAudioMeterInformation is linear in amplitude.

    Today we'll look at the --stream, --channel, and --session arguments, which explore the linearity of IAudioStreamVolume, IChannelAudioVolume, and ISimpleAudioVolume respectively. Each of these modes plays a half-scale square wave, then set the volume API to various levels, and reads the resulting IAudioMeterInformation. We use a half-scale square wave to avoid running afoul of the limiter; we expect a meter reading of 0.5 when the volume is set to 1.  The graphs below have their meter readings doubled to account for the fact that we're using a half-scale square wave rather than a full-scale.

    Here's what we get for IAudioStreamVolume, graph-inated for your convenience:

    And IChannelAudioVolume:

    And ISimpleAudioVolume:

    We already know that IAudioMeterInformation is linear in amplitude. We now know that IAudioStreamVolume, IChannelAudioVolume, and ISimpleAudioVolume have a linear effect (with slope 1 and intercept 0) on IAudioMeterInformation. We infer that IAudioStreamVolume, IChannelAudioVolume, and ISimpleAudioVolume are linear in amplitude.

Page 1 of 1 (3 items)

June, 2011