Microsoft DirectX 8.0 (Visual Basic)

ウェーブ セグメント

DirectMusic ローダーは、オーディオ圧縮マネージャ (ACM) でサポートされているフォーマットの圧縮されたウェーブフォーム オーディオ ファイル、および非圧縮ウェーブ ファイルをロードできる。

ウェーブ ファイルに基づくセグメントは、ほかのセグメントと同様に演奏される。このようなセグメントは、メッセージとしてパフォーマンスに渡され、常にオーディオパスのチャンネル 0 で演奏される。ウェーブについてはノートとは異なる意味の合成が行われるが、ウェーブもシンセサイザに渡されて、MIDI コントローラで操作できる。

次のサンプル コードでは、ピッチ チェンジ MIDI メッセージをデフォルトのオーディオパスのチャンネル 0 に送信している。dmpDirectMusicPerformance8 オブジェクトである。ピッチの変更は、そのオーディオパスで再生されるすべてのウェーブに影響する。

Private Sub sldrPitch_Change()

    Dim hi As Byte, lo As Byte
    
    ' 値を 7 ビット バイトに分割する。スライダから返される値は
    ' 0 〜 16383 の範囲である。
 
    hi = Fix(sldrPitch.Value / 128)
    lo = CByte(sldrPitch.Value And 127)
    
    ' ピッチ ベンド メッセージを送信する。
 
    Call dmp.SendMIDIPMSG(0, DMUS_PMSGF_REFTIME, 0, &HE0, _
        lo, hi)
 
End Sub

  アプリケーションが複数のオーディオパスを使用する場合、この例に示されている手法が機能しないことがある。DirectX for Visual Basic では、アプリケーションで作成されたメッセージを特定のオーディオパスに送信する方法はない。パフォーマンス チャンネル 0 は、オーディオパスごとに、シンセサイザの異なるチャンネルにマップされるので、あるパスでの MIDI コントローラの変更はほかのパスに影響しない。詳細については、「アプリケーションで作成されたメッセージ」を参照すること。

ウェーブもまた DirectMusic Producer ファイルに埋め込んで、さまざまなバリエーションのあるスタイルのように動作させることができる。例については、AudioScripts サンプル アプリケーションを参照すること。このサンプルの ScriptDemoBaseball.spt スクリプトは、ボタンがクリックされるたびに物売りの叫び声のバリエーションを再生する。

セグメント (.sgt) ファイルのウェーブは、再生する前にダウンロードする必要がある。セグメントのバンドをダウンロードすると、これらのウェーブもダウンロードされる。詳細については、「バンドのダウンロードとアンロード」を参照すること。