ホーム > DirectMusic > スムーズな演奏の変更と停止

スムーズな演奏の変更と停止

目次

  1. スムーズな演奏の変更と停止
  2. サンプル

スムーズな演奏の変更と停止

あるセグメントを再生しているとき、現在のセグメントを停止して他のセグメントを再生すると、耳障りな中断が発生します。トランジションはこれらの症状を解決してくれます。トランジションを利用するにはまずコンポーザーを作成します。

IDirectMusicComposer8* g_lpComposer = NULL;
CoCreateInstance( CLSID_DirectMusicComposer, NULL, CLSCTX_INPROC,
                  IID_IDirectMusicComposer8, (LPVOID*)&g_lpComposer );

トランジションを利用するには下記の関数を利用します。第2引数にセグメントを指定すれば演奏が再開され、NULLを指定すれば演奏が停止します。

g_lpComposer->AutoTransition(
  g_lpPerformance,        // パフォーマンス
  g_lpSegment,            // 次に演奏するセグメント。NULLで停止。
  DMUS_COMMANDT_INTRO,    // トランジションの作り方。
  DMUS_COMPOSEF_MEASURE,  // トランジションをどこから作るか。
  NULL,                   // トランジションのコードマップ
  NULL,                   // トランジションを受け取る変数のアドレス
  NULL,                   // 次のセグメントの状態を受け取る変数のアドレス
  NULL                    // トランジションの状態を受け取る変数のアドレス
);

サンプル

ここまでの作業でスムーズな演奏の変更や停止を実現できます。例のソースを置いておきます。



Last Update 2006/11/24.
Copyright © 2002-2004 Toru All Rights Reserved.
inserted by FC2 system