[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
VB6 音量調節の仕方 Wav
仕事から帰ってきてまで、プログラムをする生活・・・。
今、とある英語塾の英単語練習ソフトで新しいソフトを開発中です。
今回は、画像を表示するとともに、音声も出力するというもの。
英語塾より、画像データと、音声データが送られてきたのでテストしてみたのですが、困ったことになりました。それは、画像を見て、OKでだったりNGだったりしたら、ボタンをクリックするのですが、そのときに出る音と、音声の音の大きさが若干違うというもの。
いまさら音声データを作り直すというわけにもいかないので、苦肉の策として、ソフト側で音声の音量を調整できるようにしようと思い立ったのでした。
しかし、これが苦難の道を歩むことになるとは・・・。
さて、開発環境は、VB6。音、および音声データは、Waveファイル。拡張子が.wavで、Windowsでは一般的に使われている音データファイルです。
最初に試みたのが、MCI(メディア・コントロール・インターフェイス)を使うもの。MCIは「再生」、「停止」、「ジャンプする」など様々な制御ができるというもの。API関数にて制御できるので便利なものなのだ。
'APIの宣言
Declare Function mciSendstring Lib "winmm.dll" Alias "mciSendStringA" (ByVal LpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Declare Function mciExecute Lib "winmm.dll" (ByVal LpstrCommand As String) As Long
Declare Function waveOutSetVolume Lib "winmm.dll" (ByVal wDeviceID As Integer, ByVal dwVolume As Long) As Integer
Declare Function waveOutGetVolume Lib "winmm.dll" (ByVal wDeviceID As Integer, dwVolume As Long) As Integer
Dim ret As Long
Dim fnm As String
Dim retstr As String
Dim DefVol
Dim Vol
'現在の音量を取得
ret = waveOutGetVolume(0,DefVol)
'ファイルを開く
fnm = "bgm.wav"
ret = mciSendString("open " + fnm + " alias bgm ",vbNullString, 0, 0)
'音量を8000にする
Vol = 8000
ret = mciExecute("setaudio bgm volume to " & Vol)
'音を出す
ret = mciExecute("play bgm notify")
音量を上げる部分がなければ、ちゃんと音は出ます。
しかし、私の開発環境では、音量を上げる部分で・・・
「デバイスはこのコマンドを認識できません」
とメッセージが出る(。、)シクシク..
ようは、音声デバイスによって、MCIコマンドが使えたり使えなかったりするのだ!
これでは、不特定多数の人が使うパソコンでは使い物になりません。簡単なのに・・・。
補足ですが、MCIで設定できる音量は0 - 10000です。
さてどうしよう・・・・。試行錯誤が続きます。
よって、続きはまた今度。
この記事へのトラックバック
- この記事にトラックバックする
Amazon
PR
ソフト関連
メーカー直販PC
周辺機器
ランキング
プロフィール
しかしながらあまりの激務に退職。もうシステム系はいやだと思っていたが、ひょんなことから企業の電算室に勤務することとなる。