MIDIOUTCAPS

MIDI 出力デバイスの能力についての情報を記述します。

#define MAXPNAMELEN      32

typedef struct tagMIDIOUTCAPS {
    WORD  wMid;                 // メーカーID
    WORD  wPid;                 // プロダクトID
    MMVERSION vDriverVersion;   // バージョン
    TCHAR szPname[MAXPNAMELEN]; // プロダクト名
    WORD  wTechnology;          // デバイスタイプ
    WORD  wVoices;              // ボイス数
    WORD  wNotes;               // 最大同時発音数
    WORD  wChannelMask;         // チャンネル
    DWORD dwSupport;            // サポートされる機能
} MIDIOUTCAPS, *PMIDIOUTCAPS, *NPMIDIOUTCAPS, *LPMIDIOUTCAPS;

メンバ

wMid

MIDI 出力デバイスのためのデバイスドライバのメーカー ID が格納されます。

wPid

MIDI 出力デバイスのプロダクト ID です。

vDriverVersion

MIDI 出力デバイスのためのデバイスドライバのバージョン番号が格納されます。

szPname

プロダクト名が格納されます。

wTechnology

MIDI 出力デバイスの型を示すフラグが格納されます。以下の値のいずれかになります。

MIDI 出力デバイスの型
1 (MOD_MIDIPORT) MIDI ハードウェアポート
2 (MOD_SYNTH) シンセサイザ
3 (MOD_SQSYNTH) square wave synthesizer
4 (MOD_FMSYNTH) FM シンセサイザ
5 (MOD_MAPPER) Microsoft MIDI mapper
wVoices

内部シンセサイザデバイスがサポートするボイス数が格納されます。デバイスがポートの場合はこのメンバは 0 になります。

wNotes

内部シンセサイザデバイスがサポートする最大同時発音数が格納されます。デバイスがポートの場合はこのメンバは 0 になります。

wChannelMask

内部シンセサイザデバイスが応じることのできるチャンネルが格納されます。最下位ビットがチャンネル 0 を、最上位ビットがチャンネル 15 を指しています。すべてのチャンネルを送るポートデバイスの場合はこのメンバは 0xFFFF になります。

dwSupport

デバイスがサポートする機能を示す値が格納されます。以下の値の組み合わせになります。

サポートする機能
0x0001 (MIDICAPS_VOLUME) ボリュームコントロール
0x0002 (MIDICAPS_LRVOLUME) 左右独立したボリュームコントロール
0x0004 (MIDICAPS_CACHE) パッチキャッシュ
0x0008 (MIDICAPS_STREAM) midiStreamOut 関数のダイレクトサポート

デバイスが左右独立したボリュームコントロールをサポートする場合は、 MIDICAPS_VOLUME と MIDICAPS_LRVOLUME の両方がセットされます。

対応情報

Windows 95 以降 / Windows NT 4.0 以降

変数との対応 (ANSI 版の場合)

HSP 変数 メンバ
メンバ名 オフセット サイズ
moc.0
1バイト目 wMid 0 2
2バイト目
3バイト目 wPid 2 2
4バイト目
moc.1 vDriverVersion 4 4
moc.2 szPname 8 32
moc.9
moc.10
1バイト目 wTechnology 40 2
2バイト目
3バイト目 wVoices 42 2
4バイト目
moc.11
1バイト目 wNotes 44 2
2バイト目
3バイト目 wChannelMask 46 2
4バイト目
moc.12 dwSupport 48 4

wMid, wPid, wTechnology, wVoices, wNotes, wChannelMask の各メンバを取得するには

wMid         =  moc.0 & 0xFFFF
wPid         = (moc.0 >> 16) & 0xFFFF
wTechnology  =  moc.10 & 0xFFFF
wVoices      = (moc.10 >> 16) & 0xFFFF
wNotes       =  moc.11 & 0xFFFF
wChannelMask = (moc.11 >> 16) & 0xFFFF

または

wpeek wMid, moc, 0
wpeek wPid, mod, 2
wpeek wTechnology, mod, 40
wpeek wVoices, mod, 42
wpeek wNotes, mod, 44
wpeek wChannelMask, mod, 46

szPname メンバを取得するには

szName = ""
(w)peek  szName, moc, 8