Platform SDK: DirectX

IDirectMusicPerformance::MusicToMIDI

IDirectMusicPerformance::MusicToMIDI メソッドは、DirectMusic ミュージック値を MIDI 音符の値に変換する。

HRESULT MusicToMIDI(
  WORD wMusicValue,
  DMUS_CHORD_KEY* pChord,
  BYTE bPlayMode,
  BYTE bChordLevel,
  BYTE *pbMIDIValue
);

パラメータ

wMusicValue
変換するミュージック値。ミュージック値については、「DMUS_NOTE_PMSG」を参照すること。
pChord
音符の変換で使われるコードとキー構造に関する情報を含む DMUS_CHORD_KEY 構造体のアドレス。これには、基調のスケールも含まれる。たとえば、コードが CM7 の場合、音符はルート音 C、メジャー 7 度のコード音程に照らして解釈される。この構造体は、8 個の平行したサブコードを、それぞれのコード音程、ルート音、スケール、および転回フラグと共に保持する。また、全体的なキーのルート音も保持する。
bPlayMode
ミュージック値がコードにどのように関連するかを決定する演奏モード。値のリストについては、「DMUS_PLAYMODE_FLAGS」を参照すること。
bChordLevel
使用できるサブコードを定義するサブコード レベル。「DMUS_SUBCHORD」を参照すること。
pbMIDIValue
MIDI 値を受け取る変数のアドレス。0 〜 127 の範囲で指定する。

戻り値

成功すれば次のいずれかを返す。「注意」を参照すること。

S_OK
DMUS_S_OVER_CHORD
DMUS_S_DOWN_OCTAVE
DMUS_S_UP_OCTAVE

失敗すれば次のエラー値のいずれかを返す。

DMUS_E_CANNOT_CONVERT
E_INVALIDARG

注意

メソッドが失敗した場合または DMUS_S_OVER_CHORD を返す場合、*pwMIDIValue は変更されない。

ミュージック値がコードの最高音より高い位置にある音符を持っているため、音符が計算されない場合は、DMUS_S_OVER_CHORD を返す。これは、DMUS_PLAYMODE_NORMALCHORD 演奏モードだけに適用される。アプリケーションは音符に対して何の処理もしてはならない。音符はこのコードに対して演奏されるものではない。

戻り値が DMUS_S_UP_OCTAVE または DMUS_DOWN_OCTAVE の場合、音符変換では 0 未満または 128 以上の音符の値が生成されるため、0 〜 127 の適切な MIDI 範囲に収まるように、1 または複数オクターブ分だけ上または下に移動される。これは、DMUS_PLAYMODE_FIXED 以外の演奏モードを使うときに発生することがある。

動作環境

  Windows NT/2000 : Windows 2000 が必要。
  Windows 95/98 : Windows 95 以降が必要。Windows 95 用に再配布可能な形で使用可能。
  ヘッダー : dmusici.h で宣言。

参照

IDirectMusicPerformance::MIDIToMusicミュージック値と MIDI 音符