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

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

宣言(準備としてまず次の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.wav (Alias *******)

File.wavというファイルを開く(再生モード)

A

Play File.wav

File.wavというファイルを再生(再生する前にOpenを実行)

A

Stop File.wav

File.wavの再生をストップ

A

Close File.wav

File.wavというファイルを閉じる(CloseするまえにStopを実行)

A

Seek File.wav to start

File.wavのまき戻し(繰り返し再生に使用)

A

Pause File.wav

File.wavの再生の一時停止

B

Status File.wav MODE

File.wavの状態(繰り返し再生に使用) *RET$がplayingなら再生中、stoppedなら停止中

B

record File.wav

File.wavというファイルに録音する

C

open new type waveaudio alias file

fileというAlias名で新しくWAVEファイルを作成(このfileというAlias名とファイル名は関係ありません)

C

record file

fileというAlias名で録音する

C

stop file

fileというAlias名の録音をストップ(このあとセーブをするならセーブをして、同じAlias名でCloseを実行)

C

save file file.wav

fileというAlias名のデータをfile.wavという名前でセーブする

C

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

サ ン プ ル プ ロ グ ラ ム

まず、VisualBasicを起動してプロジェクトを新しく作成してください。そして次のコードを貼り付けてください。このサンプルコードはプログラム実行時に録音を開始し、終了時に録音結果を出力するものです。マイクか何かでしゃべってみるか、何かのファイルを再生してみましょう。なお、セーブはルートディレクトリーに「file.wav」という名前でされます。MIDIファイル時と同じくこれもエラー処理してません。

動作確認:Visual Basic 5.0(Visual Basic 4.0でも問題なく動作するはずです),Windows98,95でもOKだと思う。

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

mciSendString "open new type waveaudio alias file", Ret, 255, 0 '新しくWAVEファイルを再生
mciSendString "record file", Ret2, 255, 0 '録音開始!!
End Sub

Private Sub Form_Unload(Cancel As Integer)
Dim Ret As String * 255
Dim Ret2 As String * 255
Dim Ret3 As String * 255

mciSendString "stop file", Ret, 255, 0 '録音停止!!
mciSendString "save file file.wav", Ret2, 255, 0 '録音結果ををセーブ
mciSendString "close file", Ret3, 255, 0 '録音データを閉じる
End Sub

備 考

なおWAVEファイルを再生するには、sndPlaySoundというAPIもあります。こちらのほうが手軽にファイルが再生できますが、WAVEファイルの操作が出来ないのでMciSendString命令を使うことをお勧めします。

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

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

Gポイントポイ活 Amazon Yahoo 楽天

無料ホームページ 楽天モバイル[UNLIMITが今なら1円] 海外格安航空券 海外旅行保険が無料!