Platform SDK: DirectX

アレンジ用のプログラミングの概要

実行時にアレンジされる音楽を実装するときに、既にオーサリングされているオブジェクトをビルディング ブロックとして使用する。オーサーやほかのコンテント プロバイダと相談しながら、小さなビルディング ブロックとして取得するミュージック データを選択することにより、実行時に最も高い柔軟性やバリエーションを実現したり、音楽をより完成された形で定義するために、あらかじめ作成された要素をより多く利用できる。

[C++]

最大のビルディング ブロックを使って、演奏する音楽についてパフォーマンスに指示しなければならない情報のすべてが含まれている、高度に構造化されたセグメント (スタイル ベースまたは MIDI ベース) をロードする。必要なのは、セクションをロードして、IDirectMusicSegment インターフェイスのクエリを行うことだけである。このインターフェイス ポインタを IDirectMusicPerformance::PlaySegment メソッドに渡す。スタイル再生エンジンは、スタイルからパターン バリエーションを選択し、固定コード進行に従ってこれらを演奏する。また、MIDI ベースのセグメントの場合は、MIDI シーケンスを演奏する。同様にバンド チェンジは、通常、セグメントに含まれる。

[Visual Basic]

最大のビルディング ブロックを使って、演奏する音楽についてパフォーマンスに指示しなければならない情報のすべてが含まれている、高度に構造化されたセグメント (スタイル ベースまたは MIDI ベース) をロードする。必要な作業は、DirectMusicLoader.LoadSegment または DirectMusicLoader.LoadSegmentFromResource メソッドを使ってセグメントをロードすることだけである。続いて、返された DirectMusicSegment オブジェクトを DirectMusicPerformance.PlaySegment メソッドに渡す。スタイル再生エンジンは、スタイルからパターン バリエーションを選択し、固定コード進行に従ってこれらを演奏する。また、MIDI ベースのセグメントの場合は、MIDI シーケンスを演奏する。同様にバンド チェンジは、通常、セグメントに含まれる。

より小さなビルディング ブロックを使う場合は、次の要素を取得する。

[C++]

IDirectMusicComposer::ComposeSegmentFromTemplate メソッドを使って、コード マップ、スタイル、およびテンプレートを組み合わせ、セグメントを構築する。

実行時の音楽アレンジをより柔軟に行うには、IDirectMusicComposer::ComposeSegmentFromShape メソッドを使って、テンプレートではなく定義済みのシェイプに基づくセグメントを作成する。シェイプは、コマンドおよびサインポスト トラックの作成に使用され、装飾パターン、コード進行、およびコード変更の頻度の選択を制御する。

セグメントを演奏するときに、パートの演奏に使用するバンドを制御することもできる。通常、バンドはスタイルおよびテンプレートの一部としてオーサリングされるが、アプリケーションが動的にバンド チェンジを行えるよう、バンドを個別のファイルとして供給することもできる。その場合、IDirectMusicBand::CreateSegment メソッドを使って、バンドだけからなるセカンダリ セグメントを作成し、音色や音色の設定をプライマリ セグメントに割り当てるときに、このセカンダリ セグメントを演奏しなければならない。詳細については、「バンドの使い方」を参照すること。

[Visual Basic]

DirectMusicComposer.ComposeSegmentFromTemplate メソッドを使って、コード マップ、スタイル、およびテンプレートを組み合わせ、セグメントを構築する。

実行時の音楽アレンジをより柔軟に行うには、DirectMusicComposer.ComposeSegmentFromShape メソッドを使って、テンプレートではなく定義済みのシェイプに基づくセグメントを作成する。シェイプは、コマンドおよびサインポスト トラックの作成に使用され、装飾パターン、コード進行、およびコード変更の頻度の選択を制御する。

セグメントを演奏するときに、パートの演奏に使用するバンドを制御することもできる。通常、バンドはスタイルおよびテンプレートの一部としてオーサリングされるが、アプリケーションが動的にバンド チェンジを行えるよう、バンドを個別のファイルとして供給することもできる。その場合、DirectMusicBand.CreateSegment メソッドを使って、バンドだけからなるセカンダリ セグメントを作成し、音色や音色の設定をプライマリ セグメントに割り当てるときに、このセカンダリ セグメントを演奏しなければならない。詳細については、「バンドの使い方」を参照すること。