WAVEファイルを再生するには
<WAVEファイルプレーヤーを作ろう>
宣言(準備としてまず次のMciSendStringの宣言を追加します) |
Private Declare Function mciSendString Lib "WINMM" Alias "mciSendStringA" (ByVal CMD$, ByVal RET$, ByVal RETLEN&, ByVal HwndBack&) As Long |
使 用 方 法 |
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」ダウンロード