Platform SDK: DirectX |
ここでは、DirectX for Visual Basic でのアプリケーション開発について説明する。
DLSEffects サンプルでは、笑い声、何か国語かのスピーチの断片、鼓動音など、ユーザーはさまざまなサウンド エフェクトを聞くことができる。これらのサウンドはすべて、1 つの DLS 音色に含まれている。
異なる音符の範囲、つまりリージョンに対して、異なるウェーブ サンプルを関連付けることができるので、1 つの音色でまったく異なるサウンドを演奏することができる。たとえば Boids.dls では、1 番目のスピーチは C0 〜 B3 のピッチ範囲に割り当てられている。この範囲の音符は、いずれも同じウェーブ サンプルに基づく。ルート音符は C3 である。これは、C3 の音符が演奏されたときに、ウェーブは本来の周波数で聞こえることを意味する。その他の音符では、ウェーブのピッチが修正される。
次のプロシージャは、グローバル変数 gVelocity で指定されるボリュームで音符を送信する。
Private Sub SendNote(chan As Integer, pitch As Byte, dur As Long) Dim noteMsg As DMUS_NOTE_PMSG noteMsg.velocity = gVelocity noteMsg.flags = DMUS_NOTEF_NOTEON noteMsg.midiValue = pitch noteMsg.mtDuration = dur Call perf.SendNotePMSG(0, DMUS_PMSGF_REFTIME, chan, noteMsg) End Sub
Boids.dls のウェーブは、1 つを除くすべてが単発のサンプルである。つまり、音符が演奏されるときに、ウェーブ サンプルは音符の長さにかかわらず一度しか演奏されない。例外は鼓動音のサンプルで、音符が演奏されている間、サンプルはループして演奏される。このループの動作は、音色コレクションのオーサーによって指定されている。
次のプロシージャは C3 の音符を送信する。C3 は、1 番目のスピーチ サンプルのルート音符である。したがって、このサンプルは正確なピッチで演奏される。定数 NoteDur は 6000 ミリ秒で、DirectMusic がノートオフの MIDI メッセージを生成する前に、このサンプルまたはその他のウェーブを完全に再生できるだけの十分な時間を設定している(この時間が経過する前に、ボタンをクリックして同一の音符を送信した場合、ノートオフ メッセージによって新しい音符もキャンセルされ、演奏が完全に行われない場合がある)。
Private Sub cmdC3_Click() SendNote channel, 36, NoteDur End Sub
DLSEffects アプリケーションでは、ほとんどのサンプルはそれぞれのルート音符で演奏される。ただし、鼓動音のサンプルの扱いは少し異なり、サウンド エフェクトのピッチをプログラム的に変更することができる。この項目については、「ステップ 3 : エフェクトの修正と停止」を参照すること。