MIDI Yokeの入力デバイスがMIDI APIで取得できない

2020/06/07

MIDI デバイス取得関連で少しはまったので備忘用にメモしておきます。

C++ MIDIインプットデバイスのリストアップ(Windows) と同じ処理ですが、以下のような関数で入力MIDIデバイスを取得しようとしました。

void PrintMidiInputDevices()
{
    MMRESULT result;
    MIDIINCAPS midi_in_caps;
    const s32 BUFF_SIZE = 32;
    u32 num_devices =  midiInGetNumDevs();
    std::string message = "number of devices: " + std::to_string(num_devices);
    printf(message.c_str());

    for( u32 dev_id=0; dev_id<num_devices; ++dev_id )
    {
        UINT cbMidiInCaps;
        result = midiInGetDevCaps(
                        dev_id,
                        &midi_in_caps,
                        sizeof(midi_in_caps)
                    );
        if (result != MMSYSERR_NOERROR)
        {
            printf("failed to get MIDI device of ID %u", dev_id);
            continue;
        }

        message = "ID=" + std::to_string(dev_id) + ": " + midi_in_caps.szPname;
        printf(message.c_str());
    }
}

しかし、MIDI Yokeの入力デバイスが取得できませんでした。具体的には midiInGeNumDevs() が 0 を返してしまいます。調べてみたら、MIDI Yoke は 32 bitのアプリでしか取得できないとのことでした。32 bit でアプリをビルドし直したら取得できるようになりました。


  このエントリーをはてなブックマークに追加    

<<「ソフトウェア開発」の記事一覧に戻る

関連記事