MIDIファイルを再生するには

<MIDIファイルプレーヤーを作ろう>

宣言(準備としてまず次のMciSendStringの宣言を追加します)

Private Declare Function mciSendString Lib "WINMM" Alias "mciSendStringA" (ByVal CMD$, ByVal RET$, ByVal RETLEN&, ByVal HwndBack&) As Long

※Privateは必要に応じて削除またはPublicに変更

使 用 方 法

MCISendString CMD$,RET$,RETLEN&,HwndBack&

引 数 説 明


CMD

String

処理内容。
書式:コマンド名 ファイル名またはAlias名 パラメータ

RET

Long

実行結果をこの変数に入れる(mciGetErrorString使用時に使う)

RETLEN

String

RET$の大きさ

HwndBack

Long(HWND)

ファイルの再生終了などを通知するウィンドウのハンドル。VB5でAddressOfが使用できるようになって使用できるようになった。SetWindowLongを使用しメッセージをフックして使用する。CMDにnotifyが指定されている場合のみ有効。

C M D に 関 す る 追 加 説 明

次のコードをCMD$に代入することで次の機能を追加することができま

コード 機能 使用頻度
Open File.mid (Alias *******) File.midというファイルを開く A
Play File.mid File.midというファイルを再生(再生する前にOpenを実行) A
Stop File.mid File.midの再生をストップ A
Close File.mid File.midというファイルを閉じる(CloseするまえにStopを実行) A
Seek File.mid to start File.midのまき戻し(繰り返し再生に使用) A
Pause File.mid File.midの再生の一時停止 B
Status File.mid MODE File.midの状態(繰り返し再生に使用) *RET$がplayingなら再生中、stoppedなら停止中 B

まだまだたくさん命令があるのですが、ここでは説明しきれません。詳しくは「Win32 APIプログラマーズリファレンス」(Visual Basicのプロフェッショナルエディション以上やVisual C++などの開発ソフトに含まれています)などを見てください。

サ ン プ ル プ ロ グ ラ ム

まず、VisualBasicを起動してプロジェクトを新しく作成してください。そしてタイマーを1つ配置してください。そして次のコードを貼り付けてください。このサンプルコードはプログラム実行時に「TEST.MID」というファイルを再生し、終了時に再生を停止するものです(繰り返し再生機能つき)。なお再生にはc:¥ディレクトリに「TEST.MID」というファイルが必要になります。あらかじめ用意しておいてください。でもいい加減(5分で作った)なのでエラー処理がありません。ちゃんとエラー処理はするようにしましょう(>自分)

動作確認:Visual Basic 5.0(Visual Basic 4.0でも問題なく動作するはずです),Windows98

Private Declare Function mciSendString Lib "WINMM" Alias "mciSendStringA" (ByVal CMD$, ByVal Ret$, ByVal RETLEN&, ByVal HwndBack&) As Long
Private Sub Form_Load()
Dim Ret As String * 255
Dim Ret2 As String * 255
Timer1.Interval = 100 'タイマーの設定
mciSendString "open c:\test.mid", Ret, 255, 0 'ファイルを開く
mciSendString "play c:\test.mid", Ret2, 255, 0 '再生する
End Sub


Private Sub Form_Unload(Cancel As Integer)
Dim Ret As String * 255
Dim Ret2 As String * 255
mciSendString "stop c:\test.mid", Ret, 255, 0 '再生停止
mciSendString "close c:\test.mid", Ret2, 255, 0 'ファイルを閉じる
End Sub

Private Sub Timer1_Timer()
Dim Ret As String * 255
Dim Ret2 As String * 255
Dim Ret3 As String * 255
mciSendString "status c:\test.mid mode", Ret, 255, 0 '再生中?停止中?
Form1.Caption = "MIDIファイル再生サンプル モード:" + Ret
If Mid(Ret, 1, 7) = "stopped" Then '停止中なら実行
mciSendString "seek c:\test.mid to start", Ret2, 255, 0 'まき戻し
mciSendString "play c:\test.mid", Ret3, 255, 0 '再び再生
End If
End Sub

本格サンプル(本当か?)「MultiMedia Viewer」ダウンロード(WAV,MID,AVI形式対応)
サンプル2「MultiMedia Format Changer」ダウンロード

トップに戻る
Visual Basicワンポイントテクニック目次に戻る

楽天モバイル[UNLIMITが今なら1円] ECナビでポインと Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!


無料ホームページ 無料のクレジットカード 海外格安航空券 解約手数料0円【あしたでんき】 海外旅行保険が無料! 海外ホテル