• ベストアンサー

mciSendCommand音量調節

MCIを使用したアプリを作成しています。 MCIのmciSendCommand関数を使用して、WAVファイルを音量調節して再生したいのですが、 コードの書き方が分かりません。 誰か簡単のソースサンプルと共に、教えていただけないでしょうか? ちなみに mciSendString関数を使用した場合は、音量調節できました。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

mciSendString() でオープンするときに "type ~" を指定しないで開いていたのであれば、mciSendCommand() を使う場合も同様にtype指定なしで開くことができるはずです。 MCI_OPEN_PARMS param = { 0 }; param.lpstrElementName = (ファイルパス); mciSendCommand(0, MCI_OPEN, MCI_OPEN_ELEMENT, (DWORD_PTR)&param); deviceID = param.wDeviceID; 明示的に "type mpegvideo" のような指定をしていたのであれば、 MCI_OPEN_PARMS param = { 0 }; param.lpstrDeviceType = _T("mpegvideo"); param.lpstrElementName = (ファイルパス); mciSendCommand(0, MCI_OPEN, MCI_OPEN_ELEMENT | MCI_OPEN_TYPE, (DWORD_PTR)&param); deviceID = param.wDeviceID; という感じになるかと。(エラー処理は省略してます)

shimada-yutaka
質問者

お礼

遅い時間に、ご対応頂き、本当に、どうもありがとうございます。 fresh_homepieさんのご説明を元に作成しましたところ、 mciSendCommandを使用して、WAVファイルの音量調節をおこなう事ができました。 作成しましたサンプルソースは以下の通りです。 理屈等は、分かりませんが、他の方のためにも、初心者レベルで、まとめておきます。 static MCI_OPEN_PARMS mci_open = {0}; static MCI_DGV_SETAUDIO_PARMS mci_vol = {0}; static MCI_PLAY_PARMS mci_play = {0}; // デバイスオープン mci_open.lpstrDeviceType = _T("mpegvideo"); // (※) mci_open.lpstrElementName = (LPWSTR)L"sample.wav"; mciSendCommand( NULL, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_ELEMENT, (DWORD) &mci_open ); // 音量調節 mci_vol.dwItem = MCI_DGV_SETAUDIO_VOLUME ; mci_vol.dwValue = 10; // 0~1000で調節可能 mciSendCommand( mci_open.wDeviceID, MCI_SETAUDIO, MCI_DGV_SETAUDIO_ITEM | MCI_DGV_SETAUDIO_VALUE, (DWORD) &mci_vol ); // WAVファイル再生 mciSendCommand( mci_open.wDeviceID, MCI_PLAY, MCI_WAIT, (DWORD) &mci_play ); (※)"waveaudio"としてオープンすると、    何故か、音量調節が反映されません。    "mpegvideo"としてオープンすると、    音量調節可能でした。    理由は、わかりません。

その他の回答 (1)

回答No.1

mciSendString() の場合には "setaudio" コマンドを使うかと思いますが、mciSendCommand の場合はそれに対応する MCI_SETAUDIO を使います。 #include <mmsystem.h> #include <digitalv.h> (...略...) MCIDEVICEID deviceID = (Open時に取得したデバイスID); MCI_DGV_SETAUDIO_PARMS param = { 0 }; param.dwItem = MCI_DGV_SETAUDIO_VOLUME ; param.dwValue = (ボリューム); mciSendCommand(deviceID, MCI_SETAUDIO, MCI_DGV_SETAUDIO_ITEM | MCI_DGV_SETAUDIO_VALUE, (DWORD_PTR)&param);

shimada-yutaka
質問者

お礼

迅速な回答どうもありがとうございます。 この場合、デバイスオープンには、 MCI_DGV_OPEN_PARMS 構造体を使用すべきでしょうか? また、 WAVではなく、MPEGVideoとして、オープンしなければ、正常動作しない等の 書き込みを他サイトで拝見しました(正しいか存じませんが。。。)。 MPEGVideoとして、オープンするための記述も教えていただけないでしょうか? もし、検討違いな質問をしているようでしたら、申し訳ありません。 どうぞ宜しくお願いいたします。

shimada-yutaka
質問者

補足

迅速な回答どうもありがとうございます。 この場合、デバイスオープンには、 MCI_DGV_OPEN_PARMS 構造体を使用すべきでしょうか? また、 WAVではなく、MPEGVideoとして、オープンしなければ、正常動作しない等の 書き込みを他サイトで拝見しました(正しいか存じませんが。。。)。 MPEGVideoとして、オープンするための記述も教えていただけないでしょうか? もし、検討違いな質問をしているようでしたら、申し訳ありません。 どうぞ宜しくお願いいたします。

関連するQ&A

  • delphiにて音量の調節

    mp3やらwavやら、 TMediaPlayerを用いて再生しています。 音量の調節をしたいのですが、 どのようにやればいいのか見つけられずに 困っています。 サウンドのボリュームだけスライダーなどで いじれればいいんです。左右バランスとか、 他の設定はいじりません。 どなたか教えていだたけないでしょうか? よろしくお願いいたします。

  • midi再生について

    visual basicを使ってゲームを作成しております。 あるサイトを見てmidiの再生をやってみようと下記のコードを入力しました。 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 Sub Sleep Lib "kernel32.dll" (ByVal dwMillsecounds As Long) Sub MCI_Test() Dim P As String, filename As String filename = "sample.mid" P = """" & ActiveWorkbook.Path & "\" & filename & """" Call mciSendString("open " & P & " alias sample", vbNullString, 0, 0) DoEvents Call mciSendString("play sample from 0", vbNullString, 0, 0) Call Sleep(10000) Call mciSendString("close sample", vbNullString, 0, 0) End Sub このコードでfilenameの部分を変更しwavファイルのsample.wavやMP3ファイルのsample.mp3は再生する事ができました。しかし、midiファイルはsample.midを同じフォルダ内に入れているにも関わらず全く音が鳴りません。どこが間違っているのでしょうか。教えてください。宜しくお願い致します。

  • パソコンの音量調節方法についてお聞きしたいのですが

    私はいつも音楽鑑賞をする際にはPCを使用するのですが、気になることがあります。 PCで音楽ファイル(MP3など)を再生するには、WINDWS MEDIA PLAYER などのプレーヤーを介して再生しますが、音量を変化させようと思ったとき、音量調節方法は基本的に2つありますよね?PC本体のほうで「ボリュームコントロールオプション(画面右下?)」で音量調節する方法と「WINDWS MEDIA PLAYER などのプレーヤー」本体で音量調節する方法がありますが、この2つの音量調節方法はどのように違うのでしょうか?また、音量調節方法の違いによって音質(音の良さ)などにも影響するのでしょうか? 詳しい方教えてください。

  • 音量の変換

    CDに録音するときに音量調節を間違えてかなり小さな音になって録音されてしまいました。その音楽をパソコンにcd2wavなどでwavファイルとして取り込んでそのあとaudio encoderなどでmp3にしたいのですが元の音量を上げて(mp3にして再生したときにプレイヤーの音量を上げなくても大きな音量になっているように)変換することは可能ですか?

  • 音量調節について

    こんにちは。 WAV形式で録音した音声を保存したのですが、音量が小さくて聞き取りにくい為、 音量を大きくしたいと思っています。音量を変更して知人に渡したいので、ど のPCで聞いても同じ音量。という具合がよいのです。 一度保存した音声ファイルの音を大きくする事ができるフリーソフトは存在す るのでしょうか? Windows2000を使用しています。

  • youtubeの音量調節が出来ない

    こんばんは。 色々調べてみてはいるのですが解決策が見当たらないので質問させていただきます。 ここ最近、youtubeで動画を再生するときに音量調節できなくなる場合があります。 (動画によっては調節ができる場合もあります) 画面の音量調節のところをクリックすると画像のような感じで、白い点々に囲まれてしまい音量調節が出来ない状態です。 そのためPC自体の音量を調節するしかないのですが、以前はできていたものがなぜできなくなっているのか、改善方法はあるのか知りたいです。 使用しているブラウザはSleipnir5(Sleipnir4でも同じ症状でした) PCはWin7(32bit)です。 何かわかる方がいらっしゃったらお願いします。

  • イヤホンの音量調節器

    通勤時、携帯音楽プレイヤーをイヤホンで聞いています。 カナル型のため普通にプレイヤーにプラグを挿して使うと大音量すぎて聞けず、mp3ファイルなどを音量調整ソフトを使って音楽データ自体の音量を低減させて聞いています。 ですがそれで音量は低減できるものの、歌詞などに比べホワイトノイズがかなり大きく困っています。 以前はイヤホンに付属の音量調節器(Ultimate ears製Super fi.3 studioについてきたサウンドレベル・アテニュエータ)を使用していたため、上記にあるような音量の低減作業をせずに済んでいましたが、これが故障してしまったために使えなくなり、このようなことになりました。 この付属品はよくあるイヤホン(のコード)と一体化しているものではなく、独立しているものです。次のように仲介するようにつなぎます。 イヤホン -- 音量調節器 -- プレイヤー この付属品の音量調節器と同様のものは販売していますか?

  • Easy CD.DVD Creater6で録音音量の調節

    上記ソフトウェアで、音楽CDを作ろうと思ったのですが、各曲(wav,mp3ファイル)の音量が違うので、sound editor で音量を調節しました。これで音量調節された曲は、rxs というファイルで保存されるようなのですが、いざCDを焼いてみると、音が全く聞こえません。やっぱりCDにするのは無理なのでしょうか。 もし無理な場合は、他に音量を調節してCDに録音できる簡単で良いソフトはありますか?

  • 【HTML?】ページ上で音量調節【Javaスクリプト?】

    ページを開いたら音が流れる、というHTMLファイルを作ったのですが、ページ上で音量が調節できるようにするにはどういうソースを書けばいいでしょうか?FLASHを使わないと駄目でしょうか。それが駄目なら、他のHTMLでできる方法(音を付けたり消したりするだけでも)はあるでしょうか。書いたソースは↓↓です。 <html> <head> <TITLE>タイトル</TItLE> <head> <body> <bgsound src="***.wav"> </body> </html>

    • ベストアンサー
    • HTML
  • WAVEの音量を個別に変更する方法

    みなさんこんにちは. 今,VisualStudio.Net2003を使ってWAVEの音量調節を可能にしたいです。 waveOut系の関数でWAVEデータを管理しているのですが、WAVEファイル一つだけに絞って音量調節したいのですが、よく分かりません。 waveOutsetVolumeだとマスターボリュームを弄るようなので殆どのアプリに影響がでてしまいます。 どなたか,再生中の音声のボリュームを変更する方法や関数を知っているかたがいらっしゃたら教えていただきたく存じ上げます. 何卒よろしくお願いいたします.