DirectX7からVBもサポートされるようになりました。そこで、DirectMusicを使ってMIDIを再生仕様と思います。DirectMusicを使うとソフトシンセにより通常のMIDI機器による再生のようにクォリティのばらつきがおこりません。 まずメニューのプロジェクト-参照設定を選び、DirectX7
for Visual Basic Type Liblary にチェックをいれてください。これでDirectX7が利用可能になります。
では、DirectMusicを利用する方法を解説します。
まず、標準モジュールにでも以下のように記述してください。
Dim DX7 As New DirectX7
Dim Perf As DirectMusicPerformance
Dim Seg As DirectMusicSegment
Dim SegState As DirectMusicSegmentState
Dim Loader As DirectMusicLoader
|
つぎにDirectMusic初期化関数、再生関数、終了関数を作ります。
'【 DirectMusicの初期化
】
' 最初によんでください
'
Public Sub OpenDirectMusic()
Set Loader = DX7.DirectMusicLoaderCreate()
Set Perf =
DX7.DirectMusicPerformanceCreate()
Call Perf.Init(Nothing, 0) '初期化する
Perf.SetPort -1, 1 'MicrosoftSynthesizerを使う
Call Perf.SetMasterAutoDownload(True) 'SoundFontを自動読み込みにする
End Sub
'【 MIDIファイルの再生
】
' 引数:再生したいFileのフルパス
'
Public Sub PlayDirectMusic(FileName As String)
If Perf Is Nothing Then
OpenDirectMusic
End If
'停止する。
Call Perf.Stop(Seg, SegState, 0, 0)
Call Perf.Reset(0) 'GMリセット
Set Loader = Nothing
Set Loader = DX7.DirectMusicLoaderCreate
Set Seg = Loader.LoadSegment(FileName) 'ファイルを読み込む
Seg.SetStandardMidiFile 'MIDI
'再生開始位置を先頭にする
Seg.SetStartPoint (0)
'再生
Set SegState = Perf.PlaySegment(Seg,
0, 0)
End Sub
'【 DirectMusicの破棄
】
' 終了時によんでください
'
Public Sub CloseDirectMusic()
If Not (Perf Is Nothing) Then
Perf.CloseDown
End Sub
|
プログラム開発室にSoftPlayというソースコード付きのサンプルを置いています。
使用例
Private Sub Form_Load()
OpenDirectMusic
PlayDirectMusic
"C:\Media\Koto.mid"
End Sub
Private Sub Form_Unload(Cancel As Integer)
CloseDirectMusic
End Sub |
|