VB.NetでMIDIを使用して音をならせる


海音  2004-08-13 11:42:05  No: 85123  IP: [192.*.*.*]

ひさしぶりにこちらにお世話になります。
今回VB.Netの方に手をだしております
本当に初心者で、これぐらい・・・って感じかもしれませんが
過去ログを読んでも意味がわからない
という状態なので、質問させていただきます

そこで、本題なのですが、
ぉ題の通り「MIDIを使用して音を鳴らせる」
ということをしたいのです。

API関数を使うことはわかりましたが
どこにコードを書けばよいのか???というかんじです
ボタンをつくるのか
それとも、Form_Lordにかくのか・・・

現在知っている情報!?は↓の通りです

'使用できるMIDI音源デバイスの数を取得するAPI関数
'この関数の戻り値が0の場合、
MIDI音源がセットアップされていない事になるので、
MIDIで音を鳴らすことはできない

    Public Declare Function midiOutGetNumDevs Lib "winmm" Alias "midiOutGetNumDevs" () As Integer

'MIDI音源を開くAPI関数
'MIDI再生開始前に実行する。
戻り値にMIDI Outデバイスのハンドルが返される

    Public Declare Function midiOutOpen Lib "winmm.dll" Alias "midiOutOpen" (ByVal lphMidiOut As Integer, ByVal uDeviceID As Integer, ByVal dwCallback As Integer, ByVal dwInstance As Integer, ByVal dwFlags As Integer) As Integer

'MIDI音源から音を鳴らすAPI関数

    Public Declare Function midiOutShortMsg Lib "winmm.dll" Alias "midiOutShortMsg" (ByVal hMidiOut As Integer, ByVal dwMsg As Integer) As Integer

'MIDI音源を閉じるAPI関数
'アプリケーション終了後必ず実行する。
これを実行し忘れると次回からMIDI音源で音が出なくなるので注意!

    Public Declare Function midiOutClose Lib "winmm.dll" Alias "midiOutClose" (ByVal hMidiOut As Integer) As Integer

'MIDI音源の音量をセットするAPI関数(CC7,CC11メッセージとは違い音源そのものの出力音量の設定)

    Public Declare Function midiOutSetVolume Lib "winmm.dll" Alias "midiOutSetVolume" (ByVal uDeviceID As Integer, ByVal dwVolume As Integer) As Integer

これは、宣言?みたいなものなのでそのまま書いたんですが
これだけではやはり鳴らないんですよね。。。
midiStreamというAPIを使う方法
とかいろいろあるようなのですが
初心者なものでこれをどういうふうに使用するのかが
まったくわかりません・・・
もう、ホントに初心者なんです・・・
あと、過去ログを検索していると
ファイル名がどうとかってでてきたのですが、
まず、MIDIの音をどこからか取ってきてファイルに保存しないと
音はならないものですか?

編集 削除