スタイル ベースの再生: Microsoft DirectMusic スタイル ファイル入門

Scott Selfon
Audio Content Consultant, Xbox Advanced Technology Group

November 2001

要約: 本ドキュメントは、Microsoft DirectMusic 用のコンテンツ作成ツールである Microsoft DirectMusic Producer のさまざまな側面を扱った一連の記事のうちの一編です。この記事では、可変的なインタラクティブ ミュージックの基本要素であるスタイルを紹介します。

はじめに

Microsoft® DirectMusic® セグメントのパターン トラックとウェーブ トラックは、リニアに作成されたコンテンツに可変性を追加するための簡単な手段として使えます。しかし、ゲーム デザイン上、よりインタラクティブなスコアが要求される場合には、DirectMusic スタイルの使用を検討してください。スタイル ファイル (.stp/.sty) により、コンテンツ作成者はミュージックの再生方法に大きな柔軟性を持たせることができます。また、これは DirectMusic の再生プロセスを開発者に対して抽象化するためのツールの1つでもあります。

この記事では以下のトピックを扱っています。

  • スタイルとセグメント
  • インタラクティブなオーディオ ソリューションのためのスタイルの使用
  • スタイルのコンポーネント
  • グルーブ レベルの使用
  • セグメント内でのスタイルの使用
  • 任意のパターンの選択
  • サウンド オブ サイレンス
  • パターンの迅速な切り替え
  • 装飾
  • 関連情報

スタイルとセグメント

セグメントは DirectMusic における再生の基本単位であり、従来のリニアなウェーブ ファイルや MIDI ファイルのダイナミックなバージョンと考えることができます。セグメントは、関連するデータを含んでいる 1 つまたは複数のトラックから構成されています。いくつかのトラックは、実際に音を鳴らすための情報を含んでいます。ウェーブ トラックはウェーブ データを含んでおり、シーケンスおよびパターン トラックは 1 つまたは複数パートのためのノート データを含んでいます。それ以外の種類のトラックは、パフォーマンスを変更したり、それ自体では耳に聞こえない情報を提供します。たとえば、テンポ トラック、タイム シグニチャ トラック、コード トラックなどがあります。

スタイル ベースのセグメントは、特定のスタイル ファイル (通常は 1 セグメントについて 1 つ) を要求するためのスタイル トラックを含んでいます。また、個々の瞬間にどんな種類のパターンを再生するかという情報を提供するグルーブ トラックも含んでいます。

スタイル ファイルはさまざまなパターン トラックのコレクションと考えることができます、再生時は一度に 1 つのパターンが選択されます。どのパターンが選択されるかは、現在のグルーブ レベルなどを含むいくつかの要因に依存します。また、そのパターンはエンディングやイントロなどの特殊な役割を持つ場合もあります。通常、この選択にはある程度のランダム性があります。あるパターンが終了すると、セグメントはスタイルに戻って別のパターンを要求しますが、そのパターンは前に選択したものと同じであることも、別のものであることもあります。同じパターンが選択され、何度も再生される場合でも、バリエーションと低レベルの可変性を利用することで、再生のたびに微妙にまたは大きく違って聞こえるようにすることが可能です。

インタラクティブなオーディオ ソリューションのためのスタイルの使い方

これ以上の新用語を紹介する前に、スタイルの一般的な使用例をいくつか示しましょう。まず、スタイルが実現する動作の多くは、パターン トラックとスクリプティングを含んだセグメントで実現されるものと、開発者の関与によって実現されるものがあります。ただし、一般にスタイルは、ノンリニアでダイナミックなミュージックの作成に付随するいくつかの重要な問題を比較的簡単に解決できます。以下に例を示します。

  • 異なるインテンシティ間でのミュージックのスムーズなトランジション。

    例: ゲーム キャラクタが環境内で移動するときに再生するバックグラウンド スコアを作成したとします。健康状態や敵の数などの要因に基づいて、楽曲スコアの音色、オーケストレーション、音楽的情報を変更できます。最も基本的なレベルでは、アプリケーションはグローバル パラメータを変更するだけで音楽のインテンシティを変更し、どのパターンを再生するかを決定できます。

  • 複数のミュージック間でのスムーズなトランジション。

    例: あるシーンで再生されるミュージックと、別のシーンで再生される別のミュージックがあるとします。シーンを切り替えるとき、アプリケーションは前者のエンディング パターンを要求し、続けて後者のイントロ パターンを要求します。

    この種の動作は独立したセグメントによって作ることもできますが、スタイルを利用すれば、アプリケーション開発者は特定のセグメントの名前を知らなくても、適切なパターン タイプを呼び出すだけで済みます。このため、コンテンツ作成者はトランジションの可変性をより簡単にコントロールできます。アプリケーションはエンディング パターンを要求し、複数のオプションがある場合には、現在のパフォーマンスのさまざまな側面に基づいて、いずれかのオプションを選択することになります。

  • MIDI データ サイズの最適化と、反復コンテンツの簡単な作成。

    例: あるシーンのためのダンス ミュージックを作成しているとします。同じドラムビートをコピーして数百メジャー分貼り付ける代わりに、個々のインテンシティ レベルに対応するバー 1 つかそれ以上の長さのパターンを作成できます。

    たしかに、MIDI スタイル データのサイズは、一般にダウンローダブル サウンド (DLS) コレクションやストリーミングされるウェーブフォムと比べれば小さなものです。しかし、特にダンス ミュージック スタイルのスコアでは、静的なコントローラ データやノート データは大量なものになるので、節約するだけの価値はあるかもしれません。また、編集が楽にもなります。変更を加えるときには、そのパターン トラック パートを使っていた全インスタンスの変更を適用しなくても済みます。

  • ダイナミックなコード変更の影響を受ける音楽的情報。

    例: あるパターンを頻繁に繰り返す場合、それが退屈に聞こえないようにする方法としては、別のコードで再生したり、異なるコード進行で再生するなどが考えられます。

    スタイルを使うと、コードの変化にダイナミックに反応するコンテンツをかなり簡単に作成できます。

次に、スタイルのいくつかの制限について説明します。スタイル ベースの再生は、まったく問題なく他のコンテンツと混在させられることに注意してください。

  • DLS 再生のみ パターンはノートのみを含んでいるので、スタイル内でウェーブの可変シーケンスを作成できません。ただし、ウェーブを DLS 音色に変換し、それらをノートとして再生するようにすれば、スタイル内でウェーブを使用することが可能です。また、ウェーブ トラックの中でバリエーションの使用もできます。

  • スタイル内ではセグメント機能を利用できない スタイル パターンは、Chords for Composition トラックとパターン トラックの 2 つのトラック タイプしか持つことができません。つまり、DirectMusic の多くの動作は、セグメント レベルでしか利用できないということです。たとえば、パターンの再生中にテンポを変更したい場合やどのパターンが選択されたかに応じてテンポを変更したい場合、このスタイルの再生に使用されるセグメント内に埋め込んで、これらの変更をスクリプト ルーチンに追加するか、開発者に実装してもらう必要があります。同じように、マーカー、スクリプト トラック、歌詞などの、他のトラック タイプに含まれている情報を、これらのスタイルを参照するセグメント内に埋め込む必要があります。

  • 別のファイルを追跡しなくてはならない セグメントが選択するパターンがスタイルに格納されていないということは、スタイルの長所でもあり、また潜在的な障害でもあります。分岐を行うミュージックの作成に役立つことがありますが、配信するランタイム ファイルにスタイルを入れることを忘れないようにする必要があります。一番簡単なのは、セグメント内にスタイル ファイルを埋め込む方法です。これにより、セグメントがランタイム ファイルとして保存されれば、スタイルは自動的にその中に保存されます。この方法を使わないのであれば、スタイル ファイルを別途保存し、配信しなくてはなりません。

    図 1. セグメントに埋め込まれたスタイル

    スタイルを確実に開発者に配信するためには、使用するセグメントにそのスタイルを埋め込むのが一番簡単です。セグメントを右クリックし、ショートカット メニューの[New]をクリックし、[Container] をクリックします。

スタイルのコンポーネント

スタイルは、バンド、モチーフ、およびパターンの3種類のコンテンツから構成されます。ただし、ほとんどの用途では、1つまたは複数のパターンと1つのバンドのみで十分です。新しいスタイルを作成するときのプロジェクト ツリーは、次のようになっています。

図 2. 新しく作成した、パターン1つとバンド 1 つを含んでいるスタイル

バンドをダブルクリックすると、[Band Editor]ウィンドウが開きます。これは、セグメントのバンド トラックに置かれたバンドと同じように扱えます。ここではパッチの割り当てをセットアップできます。

次に、デフォルトのパターンを見てみましょう。プロジェクト ツリーの中でパターンをダブルクリックすると、[Segment Designer] ウィンドウによく似た Pattern Editor が開きます。

図 3. [Pattern Editor] ウィンドウ

ここでは Chords for Composition トラックについての説明は省略します。これは、セグメント内でコードを使用している場合にのみ関係してくるからです。第 2 のトラックは、セグメント内のパターン トラックと同じものです。この例では、このパターンはパフォーマンス チャンネル (PChannel) 1 上に 1 つのパートを持っています。パートをダブルクリックするか、トラックの右側の最大化アイコンをクリックすると、パートを最大化できます。パートのパフォーマンス チャネルは [Properties] ウィンドウで変更することができ、セグメント内のパターン トラックと同じ方法で、1 つまたは複数のバリエーションにノートを追加できます。新しいパートを追加するには、右クリックし、ショートカット メニューの [Add Pattern Part(s)] をクリックするか、キーボード ショートカット CTRL+SHIFT+INSERT を使います。

グルーブ レベルの使用

これで最初のパターンが作成されました。セグメントにグルーブ トラックとスタイル トラックを挿入すれば、各種のトラック タイプを使って、コード、音色、テンポといったパフォーマンスのさまざまな側面を時系列的に変化させながら、好きな方法で再生できます。しかし、スタイルが真に有効なのは、複数のパターンが含まれていて、再生エンジンが再生時に適当なパターンを選択するというような使い方をする場合です。これにより、アプリケーション開発者にそれほどの負担をかけずに済みます。

次に、グルーブ レベルの概念について説明します。グルーブ レベルは、パフォーマンスに対して、特定のタイミングで再生したいパターンの種類、あるいは特定のパターンを指示するために使います。

**注   **グルーブ レベルの使用はオプションです。ただし、セグメントがグルーブ トラックを含んでおらず、前のセグメントでグルーブ レベルが設定されていたり、アプリケーションが動的にグルーブ レベルを設定していなかった場合には、デフォルトのグルーブ レベル62が適用されます。

パターンの[Properties] ウィンドウを開くと、他の要素とともに、パターンのグルーブ範囲を決定する 2 つのテキスト ボックスが表示されます。

図 4. パターンの [Properties] ウィンドウ

これらの設定は、特定の条件で、どのパターンを選択するかを決定するために使います。[Low][High] の値は、1~100 の範囲の任意の数に設定できます。このグルーブ範囲は、DirectMusic がどのパターンを再生するかを決めるときに最初に参照する値です。

その動作を、例を使って説明してみましょう。ここではかなり一般的なシナリオを取り上げます。開発者はゲームの状態に基づくインテンシティ レベルを送信し、われわれはそのインテンシティに合った適切なパターンを再生します。話を単純にするために、最も低いインテンシティはグルーブ レベル 1~10 に、中ぐらいのインテンシティはグルーブ レベル 11~20 に、最も高いインテンシティはグルーブ レベル 21~30 に対応するものとします。

**注   **一般には、高いグルーブ レベルは高いインテンシティに対応するものと考えると便利ですが、グルーブ レベルは自分の好きな方法で使用できます。たとえば、特定のグルーブ レベルを、ゲーム内の特定の状況のために予約しておくこともできます。

個々のインテンシティ レベルに異なる種類のミュージックを用意したい場合、最初のステップとしては、少なくとも3種類のパターンを作成しなくてはなりません。低いインテンシティのパターンに新しいパートを追加して、パターンのインテンシティを高めるということはよく行われるので、この方法を使うことにします。

上で作成した、パートを 1 つ含んでいるパターンを出発点とします。[Properties] ウィンドウで、パターンのグルーブ範囲を 1~10 に設定します。

次に、第 2 のパターンを作成します。PChannel 1 上のパートは同一のものなので、クリップボードを使用してパターンをコピーするか、パートのリンクを使用できます。

2 つのパートをリンクすると、その両方が 1 つの音楽的情報のコピーを参照するようになります。必要なら、リンクされたパートを別々の PChannel に置き、異なる音色で再生するようにすることもできます。また、これらのパートは同じパターン内にあっても、異なるパターン内にあってもかまいません。パートを 1 か所で編集すると、そのパートを含んでいる他のすべてのパターンに影響が及びます。パートをリンクすることによて、スタイル ファイルのサイズを大幅に減らすことができます。

新しく作成したパートを既存のパートにリンクするときには、次の 2 つのオプションがあります。

  • ショートカット メニューの [Add Pattern Part(s)] をクリックしたときに表示される [Add New Part Display] ダイアログ ボックスで、希望の PChannel を選択し、[Link To Existing Part] をクリックします。

    図 5. [Add New Part Display] ダイアログ ボックス

    [Link to Existing Part] ダイアログ ボックスで、この新しいパートをリンクしたい既存のパートを選択し、[OK] をクリックします。 .

    図 6. [Link to Existing Part] ダイアログ ボックス

  • 新しいパターン内の個々のパートを、別のパターン内の対応するパートにリンクするためのショートカットがあります。われわれのシナリオでは、これを利用できます。プロジェクト ツリーの Patterns フォルダを右クリックし、[New Pattern] をクリックします。

    図 7. [New Pattern] ダイアログ ボックス

    下のオプション ボタンをクリックし、リンクしたいパターンを選択すると、個々のパートが既存のパターンの対応するパートにリンクされている新しいパターンが作成されます。この新しいパターンを開くと、パートのタイトル バーに"L"という文字が含まれています。これは、これが別のパターンにリンクされていることを示しています。

    図 8. 新しくリンクされたパターン

ところで、後で 2 つのパート間のリンクを切断し、2 つの独立したノート データのコピーを作成したくなった場合には、パートを右クリックして、ショートカット メニューの [Unlink Part Reference] をクリックします。パートから "L" が削除され、編集を行っても他のパートには影響が及ばなくなります。

われわれのシナリオに戻ると、1 つのパートを持つ 1 つのパターンが存在しています。第 2 のパターンを作成し、これに第 2 のパートを追加することにしましょう。たとえば、第 1 のパターンのドラムに合わせたベース ラインです。このパートはまだ他のパートにはリンクされていないので、[Add New Part Display] ダイアログ ボックスの [Create New Part] をクリックし、パートにいくつかのノートを追加します。最後に、この第 2 のパートのグルーブ範囲を 11~20 に設定します。

次に、このプロセスを繰り返して、すべてのパートがさきほど作成した第2のパターンにリンクされている新しいパートを作成し、これに第 3 の (リンクされていない) パートを追加し、そのグルーブ範囲を 21~30 に設定します。

すべてのパターンがどのように積み重なっているかを見たい場合には、[Style Designer] ウィンドウを開いて、すべてのプロパティを一括表示できます。プロジェクト ツリーでスタイル ノードをダブルクリックしてください。この例のスタイルは、次のようになっています。

図 9. [Style Designer] ウィンドウ

トップ フレームには 3 つのパターンが表示されています。それぞれに設定したグルーブ範囲が表示されていることに注目してください。

セグメント内でのスタイルの使用

いくつかのパターンを持つスタイルが作成できたので、これらをセグメントの中で使ってみましょう。まず、1 つのスタイル トラックと 1 つのグルーブ トラックを持つセグメントを作成します。次に、プロジェクト ツリーからスタイル トラックにスタイルをドラッグします。他の 2 つの情報が、セグメントに自動的に追加されることに注意してください。

  • スタイル内のバンドのコピーが、自動的にバンド トラック内に作成されます。これはいくぶんわかりにくいかもしれません。バンドはコピーであり、スタイル内のバンドにはリンクされていません。一方に変更を加えても、他方に自動的に変更が伝播されることはありません。このことをはっきりさせるために、セグメント内のバンドの名前を変更しておくとよいでしょう。
  • スタイルのテンポが、セグメントのテンポ トラックにコピーされます。スタイルのテンポは、スタイルの [Properties] ウィンドウか [Style Designer] ウィンドウで変更できます。この情報もやはりリンクはされていません。セグメント内でテンポを変更しても、スタイルのテンポは更新されません。

次に、セグメントにグルーブ チェンジをいくつか追加します。グルーブ トラックをクリックし、INSERT キーを押して、[Properties] ウィンドウでグルーブ レベルを選択することにより、グルーブ チェンジをいくつか追加します。

図 10. グルーブ トラック内のグルーブ チェンジのための [Properties] ウィンドウ

図 11. グルーブ トラック内の時系列的なグルーブ チェンジ

上で作成したセグメントを再生すると、最初の 2 つのバーは Style1 に対してグルーブ レベル 10 のパターンを要求します。上記のリストを見ると、グルーブ レベル 10 を含んでいるパターンはパターン 1 だけなので、最初の 2 つのバーではつねにパターン 1 が再生されることになります。同じように、バー 3 ではパターン 3、バー 4 以降ではパターン 2 が再生されます。

**注   **プラス/マイナス記号のラベルが付いたボックスに値を入力することで、個々のグルーブ レベル チェンジにランダム要素を追加できます。図の [Properties] ウィンドウに 5 を入力すると、実際のグルーブ レベルは 15~25 の値になり、パターン 2 とパターン 3 のどちらかが再生されることになります。

このようにグルーブ トラックを使うことで、グルーブ レベル チェンジのプログラミングやオーディションを行うことができます。ただし、最終的なコンテンツでは、オープニングかデフォルトのグルーブ レベルの設定にのみにグルーブ トラックを使うのが一般的です。すると、実行中のゲームの中では、以下の方法でグルーブ レベルを変更できます。

  • アプリケーション開発者は、ゲームの状態に基づいて、グルーブ チェンジを動的に適用します。ここで注意しなくてはならないのは、セグメントが先頭にループバックしたり、グルーブ トラック中の別の変更を受けた場合、アプリケーションはそれをインターセプトし、セグメント内で設定されていた既存のグルーブ レベルを削除しなくてはならないということです。さもないと、動的な設定は失われます。
  • アプリケーションまたはスクリプトは、マスター グルーブ レベルに合わせて動的に調整を行います。これは、セグメント内に存在するすべてのグルーブ レベルに適用されるオフセットです。たとえば、マスター グルーブ レベルが -10 だった場合、図の例のセグメントはグルーブ レベル 1 (レベルは1未満になることはできません) のパターンを発見し、その後は 20、10 のパターンを発見します。

任意のパターンの選択

グルーブ レベルを使うと、複雑なことを簡単に行うことができます。たとえば、互いにオーバーラップするまたは同一のグルーブ範囲を持つ複数のパターンが、スタイルの中にあったとします。セグメントのグルーブ トラックが、オーバーラップしている領域内のグルーブを要求した場合には、どちらのパターンも選択される可能性があります。

しかし、DirectMusic パフォーマンスがどのパターンを再生するかの選択時には、グルーブ レベル以外の要素も影響します。次のリストは、DirectMusic が再生するパターンを選択時に考慮する他のいくつかの要因を示しています。これらは優先順位の順で並べられています。各ステップにおいて、それまでのパラメータにマッチしたパターンとの比較が行われます。これらの要因すべてを検討した上で、複数のパターンが候補に残っていた場合には、そのうちの 1 つをランダムに選択します。

  • **パターンの長さ
    **要求されたグルーブ レベルにマッチする 2 つのパターンが異なる長さだった場合、エンジンはセグメント内によりよくフィットする方を選ぼうとします。これは通常は、最も長いパターンが選ばれることを意味します。これは、短いパターンだと再生時間を埋めるためにループしなくてはならないため、長いパターンの方が音楽的な効果が強いと考えられるからです。例外はセグメントの終わりの場合 (最長のパターンがセグメントの終わりを越えてしまう場合)と、別のグルーブ チェンジが現れる場合です。このような場合には、これらの境界を越えない最長のパターンを選択します。

  • **コード リズム
    **これは [Pattern Properties] ウィンドウのオプションの 1 つです。このオプションは、コンテンツの中でコード チェンジを使用している場合にのみ適用されます。コードの変化の頻度に基づいて、特定のパターンが選ばることがあります。詳細については、DirectMusic Producer のヘルプで "chord rhythm" を検索してください。

  • デスティネーション グルーブ レベル 特定のグルーブ レベルに適したパターンが複数用意されていることがあります。ミュージックがより低いグルーブ レベルに落ちようとしているときに特に適しているパターンが存在しているとしたら、どうすればよいでしょうか? あるいは、まったく別のグルーブ レベルの別のミュージックにトランジションする場合はどうでしょうか? このようなときには、デスティネーション グルーブ レベルが役に立ちます。DirectMusic パフォーマンスは、どのパターンを再生するかを選択する際に、このパターンが終了したときにグルーブ レベルがどうなるかを先読みします。たとえば、1 バーのパターンが 2 つあり、どちらもグルーブ範囲 1~50 に割り当てられているが、一方のデスティネーション グルーブ レベルが 1~50 で、もう一方のデスティネーション グルーブ レベルが 25~100 だったとします。すると、次のセグメントが再生されます。

    図 12. 2 つのグルーブ レベル チェンジを持つセグメント

    バー 1 と 2 では、どちらのパターンもランダムに選択できます。デスティネーション グルーブ レベルは依然として (両方のパターンのデスティネーション範囲に収まる) 25 だからです。しかし、バー 3 では、パフォーマンスはグルーブ レベルが 75 に変わろうとしていることを検知します。これは第 2 のパターンには該当しますが、第 1 のパターンの範囲は超えています。このため、第 3 メジャーでは、つねに第 2 のパターンが再生されることになります。

これでもまだ柔軟性が足りないのであれば、すべてのパラメータが同一だったときでも、パターンの選択をある程度制御できます。このためには、[Properties] ウィンドウで、グルーブ トラック内のグルーブ チェンジを表示します。[Repeat Pattern] ドロップダウン リストでは、ランダム パターンを選択するときに、それまでの選択が与える影響を指定できます。たとえば、同じものを選び続けたり、すべてのパターンを順番に再生したり、シャッフルさせることが可能です。

サウンド オブ サイレンス

セグメント内のいくつかのポイントで無音状態にしたい場合にはどうすればいいでしょうか? 選択肢はいくつかあります。一番簡単なのは、コンテンツを持たないパターンを、おそらくは最も低いグルーブ レベルで作成するという方法でしょう。こうしておけば、グルーブ レベルが低下したら、ミュージックは消えます。また、セグメント内の特定の時間帯を無音状態にしたい場合には、第 2 の空のスタイルを作成し、スタイル トラック内の該当する時間にドロップすればよいでしょう。パフォーマンスはセグメント内で再生するコンテンツを探し、そのようなコンテンツが見つからないため、無音で再生を行います。

パターンの迅速な切り替え

DirectMusic Producer のグルーブ トラックでは、グルーブ チェンジを 1 バーの境界でしか挿入できません。さらに、グルーブ チェンジをプログラム的にドロップすると、ケースによっては、現在再生中のパターンが終了するのを待ってから、パターンの切り替えが行われることがあります。この動作が適しているタイプのミュージックもありますが、迅速に切り替えたい場合もあります。このような場合には、どのような変化を望んでいるかによって、いくつかのオプションがあります。

  • 新しいパターンを最初から開始したい場合には、開発者またはスクリプト作成者に対し、コンテンツ作成者が選択した境界 (次のビート、次のマーカー、次のメジャーなど) を使って、グルーブ チェンジを行った後にこのセグメントへのトランジションを行うよう指示します。

  • 新しく選択されたパターンを、既存のパターンと同じ相対位置から開始したい場合には、開発者またはスクリプト作成者に対し、コンテンツ作成者が選択した境界で「セグメントに合わせて」、このセグメントへのトランジションを行うように指示します。開発者の言葉では、現在のセグメントを DMUS_SEGF_NOINVALIDATE | DMUS_SEGF_SEGMENTEND | DMUS_SEGF_ALIGN | DMUS_SEGF_VALID_START_xxx を使って再トリガすることになります。最後のフラグは、切り替えを行う境界を指定します(マーカーを使用する場合には、このフラグを省略します)。これと等価なスクリプト コマンドは次のようになります。

    segment.Play NoCutoff Or AlignToSegment Or AtBeat 
    

    AtBeat は他の境界フラグに置き換えることができます。

    このトランジションにより、セグメントは現在位置から再生を続けますが、現在再生中のパターンは同じ位置で新しいパターンに置き換えられます。たとえば、低インテンシティのパターンのバー 2、ビート 3 にいた場合には、そこから高インテンシティのパターンのバー 2、ビート 3 に直接ジャンプして、そこから再生を続行できます。もちろん、この場合には、すべてのパターンを同じ長さにしておくと楽になります。

装飾 (Embellishments)

スタイルの紹介の最後の話題として、装飾について簡単に説明します。例として、キャラクタが悪者を打ち負かしたときに、グルーブ レベルは同じに保ちたいが、そのグルーブ レベルに応じた華麗な音楽的エフェクトを再生したいものとします。このようなケースでは、装飾が役に立ちます。特定のパターンを装飾として指定しておけば、そのパターンは、アプリケーションまたはスクリプトがその種の装飾を要求したときにのみ選択されるようになります。複数のパターンが特定のグルーブ レベルでの特定の装飾にマッチする場合には、前述のすべてのパラメータを使って、最適なものが選択されます。

**注   **装飾をモチーフと混同してはなりません。モチーフは、プライマリ セグメントの上でセカンダリ セグメントとして再生されるパターンです。装飾は、メインのミュージカル シーケンスの一部として、通常はプライマリ セグメントの中で再生されるパターンです。モチーフはつねにアプリケーションが明示的に選択します。装飾は DirectMusic パフォーマンスが選択します。

装飾は、一般にイントロダクションとエンディングとして使用されます。この動作は、独立したセグメント ファイルを使っても実現することができるでしょう。しかし、開発者の立場から見ると、1 つの新しいセグメントにキューを出す方が、2 つまたは 3 つのセグメントにキューを出すよりも簡単です。オーディオ スクリプトでは、Segment.Play の呼び出しで PlayIntro、PlayEnd、または PlayEndAndIntro フラグを使うことで、トランジション中に簡単に装飾をトリガできます。アプリケーション開発者の作業はいくぶん複雑で、IDirectMusicComposer8::AutoTransition メソッドを使う必要があります。

また、必要ならセグメントのグルーブ トラックの中で装飾を直接呼び出すこともできます。[Groove Level Properties] ウィンドウには、使用可能な各種の装飾タイプのリストがあります。他の場合と同様に、その装飾にマッチするパターンが見つからなかった場合には、いずれかのパターンがランダムに選択されます。

関連情報

DirectMusic の、この記事で説明している側面についての詳細を知りたい場合は、DirectMusic Producer のヘルプを参照してください。アプリケーションからのスタイルの操作方法については、DirectX Software Development Kit (SDK) のヘルプを参照してください。

このシリーズの以下の記事では、DirectMusic Producer の使い方に関する詳しい情報を提供しています。