• 締切済み

VBでのwavファイルの再生について

実は今VB6を使ってゲームを作ってます。 wavファイルを再生させて音を出してるですが、少し困ったことがあります。使ってる関数はwin32APIのPlaySoundを使ってます。 普通に音を再生する分には問題ないのですが、非常に短い間隔で再生を繰り返すと音が鳴らなくなります。 再生時間0.07秒のwavファイルを再生し終わる前に、もう一度そのファイルを再生すると音が鳴らない。 PlaySoundの他にも音を再生するAPI関数があるようですけど、使い方が良く分かりません。 どうすればいいでしょうか? VB6で、OSはwindowsXP使ってます。

みんなの回答

  • gungnir7
  • ベストアンサー率43% (1124/2579)
回答No.1

ループサウンドを使うのならその機能を持ったmidi音源を用意して下さい。 WAVEよりは感応性は良いと思います。 ただし、ループで0.07秒は短すぎのような感もします。 可能ならそれを別途録音して1秒など必要な長さにした方がいいかもしれません。 その他の方法としてはMediaPlayerを使う方法とDirectXを使う方法です。 Mediaplayerは6.4相当(10年前ですから古くて当然)のものがActiveXとして 今でもWindowsに入っています。 これを使った人は多くいるのですが、ゲーム音源には不向きだと思います。 すると残りはDirectXです。 これはWindowsのマルチメディア中枢ですからかなり高度なことも行えます。 ただし、VB6対応のDirectX SDKの入手が今では困難です。 (配布されていることはいますが、どの版をDLすればいいのか分かりません) もし現状に不満があるのならVB.Netに移行された方がいいでしょう。

Finnissy
質問者

お礼

返事が遅くなりすいません。 回答ありがとうございます!! 「可能ならそれを別途録音して1秒など必要な長さにした方がいいかもしれません。」 提案していただいたこの方法を使いました。上手くいきました! これでゲームの続きが作れます、有難う御座いました!

関連するQ&A

  • VBで音声再生に関して

    ヘッダ情報のない16_khz,16_bitの音声ファイルをwavへの変換なしで直接取り出して 再生したいのですが、再生するAPIかなにかないでしょうか? メモリー上にバイト型配列でおきwavのヘッダ情報をつけ音声ファイルをくっつける という方法を考えついたのですが それだとPlaySound()APIではメモリー上から呼び出せず困っています。 wavファイルのヘッダ情報についてもわかりません。

  • wavの連続再生ってどうやるの?

    WindowsでC++のプログラミングをやっています。 wavで3つの音楽ファイルを連続再生させたいのですがどうすればよいのでしょうか?? 1曲を1回再生なら PlaySound("c:\\01.wav",NULL,SND_FILENAME | SND_ASYNC | NULL ); で、できたのですが、3曲連続で再生させようとしても PlaySound("c:\\01.wav",NULL,SND_FILENAME | SND_ASYNC | NULL ); PlaySound("c:\\02.wav",NULL,SND_FILENAME | SND_ASYNC | NULL ); PlaySound("c:\\03.wav",NULL,SND_FILENAME | SND_ASYNC | NULL ); とすると03.wavだけが再生されてしまいます。 実際全部再生されているのでしょうけど前のが全部再生されないうちに次のが再生されてしまっているのだと思います。 01.wavが1曲全部再生してから02.wavを再生させるようにするにはどうすればよいのでしょうか。 どなたかよろしくお願いします><

  • C# wavファイルの再生について

    C#に関しての質問なのでこちらでいいのかわからないのですが、タイトル通りwavファイルの再生についてです。 環境は .NET2003 です。 現在、学校の卒業制作としてC#でゲームの開発を行っているのですが、音楽ファイルの再生の仕方で困っています。 検索してみたところ、playsoundを使用したループ再生には非同期とループを指定すればいい、とありましたが うまく動きませんでした。 そこでThreadを使用しsleepを使うことで擬似的にループ再生をさせているのですが、それだと都合の悪いことが多く別の方法を探しています。 お力になっていただける方がいれば、宜しくお願いします。 ↓は現在のソースから抜き出したものです。 [DllImport("winmm.dll")] private static extern bool PlaySound(string pszSound, int hmod, uint fdwSound); static void Main(){    Thread t1 = new Thread(new ThreadStart(play)); t1.Start(); Thread.Sleep(1000000000); } public static void play(){ PlaySound("daichi.wav", 0, 0x00001 | 0x00008 ); }

  • wavファイルが一部再生できなくなりました

    つい先日まで、問題なく再生されいた wavファイルの一部がなぜか再生できなくなりました。 ミュートになっているとかそういうのではないです。 MIDIファイルは問題なく再生できますし、 wavファイルのなかでも再生できるものもあります。 (MSNメッセンジャーの新着メールの音などは  通常どおり問題なく再生されています。 音がでないwavファイルに関しては ボリュームコントロールのところをみると 一応動いてはいるのですが、音が全くでないのです。 1つではなくて、いくつか出ないものがあります。 (パソコン用のゲームソフトに含まれる  wavファイルの音声も全て再生できません。) 本当に突然のことで、原因がさっぱりわからなくて 困っております。お手数ですが アドバイスをお願いいたします。 OSはウィンドウズ98です。

  • midiファイルだと再生されるのですが、wavファイルだと再生できない

    24bit WAVE/MP3 RECORDER(EDIROL byRoland)で録音した wav形式のファイルをブラウザ上(IE7)で再生するようにしたのですが、 (あるページのリンクをクリックすると新しいウィンドウが表示され、その中で音が再生される) コントロールバーは表示されるのですが、音が再生されません。 (ミュートにはなっていませんでした) 同様の手順でmidi形式のファイルだと再生されます。 また、他のPC(IE7)で確認したところ、midiとwav両方が再生できました。 OSは両方のPCともwindowsXPです。 どうしたらwavファイルを再生できるようになるのでしょうか? 教えてください。

  • wave音源の再生

    現在Microsoft visual c++でプログラミングをしています。 wavファイルの再生をしたいのですが、 PlaySoundという関数を使って一応、再生はできたのですが この関数だと同時に1つの音しか出ない様なのです。 プログラム中で1曲BGMの様に常に流しておいて、その所々で効果音 が鳴る様にしたいのですが。。。 ご教授お願いします。

  • WAVファイルを再生したい

    WAVファイルを再生したい OSはwin7です。 ボイスレコーダーにて録音をしたのですが、パソコンで再生が出来ません。 説明書にはWAVファイル対応の音楽再生ソフトをご利用ください。と記載されています。 そこで、フリーでWAVファイルを再生、または変換させるソフトがあれば教えてください。 できれば初心者なので説明をしていただければ幸いです。

  • VB 音の波形を取得する関数は?

    wavデータから、データを読み込んで、その音データの波形を解析したいと思っています。  とりあえずは、VBで開発し、wavデータを再生することまでできました。しかし、音の波形を取得するには、どうすればよいかわからず、ここで質問させて頂きます。  関数、API、サイトなど、何か情報の書き込みをよろしくお願い致します。 m(_ _)m

  • WAVファイルの再生で途中から繰り返し再生するには。

    WAVファイルの再生ですが、WindowsMediaPlayerを使用していますが、途中から聞きなおそうとしても、できません。 聞き逃したところを聞きなおしたいと思っても、10秒前あたりから聞きなおしとか出来ません。 よくある横に長いバーなどが出てきて、好きなところから再生ができるソフトはありませんか。 できれば、一部を繰り返し再生してくれるソフトがあれば、もっといいのですが。 WAVファイルを使用していますが、他の標準的なファイルにも対応してくれるとありがたいです。

  • WAVファイルが再生されません

    WAVファイルが再生されません。MIDIは問題なく再生できているのですが。 Windowsのヘルプはほとんど試してみたのですが、うまくいきません。 まったく原因不明です。 Freesia(あまり聞いたことないないメーカ)のノートでOSはwin98seです。

専門家に質問してみよう