• 締切済み

win32 mciについて

WindowsVISTA 32bit にて Microsoft Visual C++ 2008を使い ゲームを作成しています。 mciSendCommandでBGMを鳴らし、PlaySoundで効果音を鳴らしています。 上記WindowsVISTA 32bitでは正常に動作しています。 ただ、Windows7 64bitで動作させると効果音が何度目かの再生の時に タイムラグが発生してwindowsも一時的に止まってしまいます。 このとき、BGMは鳴っていますが、タイムラグが解消しプログラムに 戻るとき一瞬BGMがとまります。 タイムラグの長さは0.5秒から3秒ほどで、頻度はすぐに発生することもあり、 数十回再生後に発生することもあります。 mciSendCommandはファイルからですが、 PlaySoundはファイルからでも、メモリからでも症状は同じです。 リソースはまだためしてはいません。 また、 mciSendCommandを使ってBGMを2回以上ミキシングしても 何回目かの再生で同じ症状が出ますし、 BGMをメモリにおいてPlaySoundで鳴らし、効果音をmciSendCommandで ファイルから鳴らしても何度目かで同じ症状が出ます。 プログラム実行後にSleepやタイマーで2/100秒ほどのウェイトを入れると 少し軽減されるようですが症状は出ます。 64bitOSがMCIをサポートしないというのをネット上で見ましたが、 何か対処の方法はないでしょうか? どなたかご存知の方いらっしゃれば教えてください。

みんなの回答

  • sygh
  • ベストアンサー率76% (42/55)
回答No.2

MCIはループ再生のパフォーマンスが厳しいので、ゲーム向きではありません。 PlaySoundなどのWinAPIも複数チャンネルSEのミキシングなどのゲームで必要とされる機能に対応していないので、せっかくWindows VistaとVisual C++ 2008が使えるのであれば、最新のDirectX SDKをインストールしてXACTの利用を検討してみては? (XACTの日本語資料やC++サンプルがほとんどないため、XNAのヘルプやC#サンプルを参考にするしかないのがつらいところですが)

  • ohtawa
  • ベストアンサー率23% (9/38)
回答No.1

解決できるかどうか断定はできませんが waitオプションは使っていらっしゃいますか もし使っていなかったら 使ってみてはいかがでしょうか 使い方は検索すれば出てきます

tomatomatorin
質問者

お礼

早速のご返事ありがとうございます。 waitオプションということでmciSendString関数のオプションでしょうか? PlaySoundにも同期で動作するSND_SYNCがありますが、 ゲームという特性上すぐに返ってこないので使用していません。 waitオプションの解釈が間違っていたらごめんなさい。 詳しく教えて頂けないでしょうか?

関連するQ&A

  • wave音源の再生

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

  • 音楽ファイルを平行して再生するにはどうしたら?

    XPのVisualStudioでプログラムしています. あるBGMを流しながら効果音のような音楽を流すにはどうしたらいいのでしょうか. 単純に音楽再生ソフトとPlaySoundを並行すると音が鳴らないですよね. どうしたらいいのかわからず悩んでいます>< どなたか教えてください!

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

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

  • Qt(キュート)でPlaySound関数を使用したいのですが、

    Qt(キュート)でPlaySound関数を使用したいのですが、 VC++などでのソースのサンプルや使用方法は色々なサイトに掲載されてますが、 QtでのPlaySound関数の実装方法を説明されてあるサイトが無く困っています。 まずは単純に音が鳴るだけのプログラムを作りたいと思っていますが、 PlaySound関数や音楽ファイルの拡張子(.wmvやmp3)にこだわっているわけではなく、 とにかくQtで音を再生できるような方法が教えていただきたいと思っています。 環境 QtCreater4.6.2 C++ WindowsVista を使用しています。 追記 winmm.libをリンクさせればPlaySound関数が使える(?)ので、 Qtの設定をどうにかすればいいのかな、と現在いろいろと調べています。

  • ツクール2000のBGMが再生されなくなりました。

    パソコン初心者です。 最近まで正常だったのですが・・ ツクール2000のフリーゲームのBGMが鳴らなくなってしまいました。 効果音は正常に再生されます。 (効果音)WAVファイルは正常に関連付けされているようなのですが、(BGM)MIDIシーケンスファイルが自動再生されません。フォルダを開いてMIDIシーケンスファイルをクリックすると音は再生されるのでファイルが壊れているわけではないと思います。ツクール2000を数回インストゥールし直しましたが効果がありません。 BGMがゲームプレイ中に自動再生されるよう、ご指導ください。

  • 描画とサウンドのタイミングがデタラメになります。

    描画とサウンドのタイミングがデタラメになります。 60枚ほどのbitmapを切り替えながら(20コマ/秒程度)フォームに描画し、要所要所で playsound()で.wavの効果音を再生したいのですが、描画が遅れて効果音がめちゃくちゃ なタイミングで鳴ります(0.3秒程度のずれですが)。見ているともうどうしようもなく変 な感じ(6コマもずれてしまうため)ですが、DirectXを使用するとぴったり実行されるでしょうか?よろしくお願いします。

  • mp3の音が出たり出なかったりします。

    mp3の音が出たり出なかったりします。 ■症状について PCを5~6日程度起動しっぱなしにしていると、mp3を再生しても音が出なくなります。 プレーヤーはarX MusicPlayerという、動作が比較的軽いフリーソフトをmp3に関連付けて使用しています。 この症状はPCを再起動すると復旧しますが、できれば再起動はさせたくなく、 原因が分からず困っています。 症状が発生してしまうと、mp3ファイルをダブルクリックするとファイルは再生状態となりますが、 そのまま再生していてもまったく音が出ず、1:00あたりなど適当な時間をクリックすると、 ちゃんと音が出ることがあります。 その後、別のmp3ファイルを再度ダブルクリックしても症状は変わらず、 「再生状態になるが音が出ず、再生位置を調整するとたまに音が再生できる」 という状態のままでした。 この状態でWMPを起動してmp3を再生しても、一切音は出ませんでした。 この症状発生後に4つのmp3ファイルを再生してみましたが、全てのファイルで発生し PCを再起動すると5~6日はちゃんと音が出るようになります。 また、症状発生中でもシャットダウン時の音は鳴ります。 ■使用環境 1日1回程度の頻度でmp3を再生しています。 最初はWMPを使用していました。 長時間起動する環境のためリソース不足になっているかもしれないと思い、 動作の軽さを売りにしていたプレーヤーに変えてみましたが 同様の症状が発生してしまいました。 この状態でタスクマネージャを確認してみましたが、 物理メモリの合計約3.2GBに対しコミットチャージの最大値は約600MBでした。 補足ですが、フリーのSNMP監視ツールを常に起動しています。 15ノード程度のSNMP Trapの監視と3分に一度全ノードにポーリングを実施しています。 ■PCの機種について PCはNEC製のPC Mate Jという機種で、昨年の10月頃購入したものです。 OSはXP Pro(32bit)を使用しています。メモリは4GBです。 メーカーに一度相談し、原因が分からず基盤交換(おそらくマザーボードを交換したのだと思います)を してもらっていますが、その後も症状は改善しませんでした。 ■試してみたこと ・サウンドドライバの再インストール ・BIOSの初期化 ・PCの再セットアップ ・PCの基盤交換  →どれを実施しても症状は改善しませんでした。 現在は症状を確認するたびにPCを再起動して復旧させていますが、 なるべく再起動はさせたくありません。 2~3ヶ月前から症状が出るようになりましたが、ソフトの追加など PCの環境に変化が出るようなことは当時実施しておりません。 原因や対策に何か心当たりがありましたら、教えていただけませんでしょうか。

  • win98のMIDI再生音がおかしい

    パソコンのOSはvistaですが、virtualPCを使ってwindows98を使っています。 今はプレイできないゲームをプレイするためです。 しかし、このwin98でゲームをプレイすることは問題なくできたのですが、BGMがおかしいんです。 音がバラバラで、原曲を知っているので「あ、この曲か」とわかりますが、なんと言うか若干お経ぽいと言いますか…とにかくおかしな音なんです。 ゲームを終了すると、同時にBGMは消えるはずですが、後追いのように高い音がピロリローとフェードアウトするように流れ、とまります。2,3秒くらいです。時と場合によって音は違います。が、いつも同じ音色です。 おそらく、MIDIファイルの再生がうまくいってないのだと思います。 SEは問題なく鳴ります。 プレイするには問題ないですが、やはりBGMがこんなだと…ムードがありません。。。 この症状はwin98をインストールした当初からあります。インストールしたのは3日前です。 ゲーム以外には特に何もダウンロードしていません。 まっさらの状態で、ゲームを入れてプレイしたときからMIDIがおかしかったです。 RPGツクール95製とclick&cliate製のゲームで全く同じ症状だったので、win98側の問題だと思います。 ちなみにvistaで同じMIDIを鳴らすときちんと流れます。 どなたかお詳しい方お助けください! 本当にお願いします!

  • 効果音をループさせたい

    フリーで効果音を落とせるページからMP3を落としてきました。数秒の効果音で1Mもありません。この効果音を何十回か繰り返して数十秒、数分のMP3ファイルを作りたいと思います。ループで再生するメディアプレイヤーなどは見つかるのですが、同じ音をつなげて1つのMP3ファイルにするソフトウェアはないでしょうか?MP3ではなくてもWavでも何でもOKです。

  • javaアプリケーションの動作が急に重くなりました

    javaであるゲームを作っているのですが、昨日までは問題なかったのに 今日アプリケーションを実行してみると動作がとても重くなっていました。 ソースコードは何も変更していません。再起動、デフラグも行ってみましたが効果ありませんでした。 以下詳しい症状です。 ・自キャラ、敵キャラの動く速度が1/2程度で、  スローモーションのような状態になる(マリオ系のゲームです) ・アイテムを取ったりして音を再生すると一時的に改善する(BGMは無) ・しばらく音を鳴らさないと、また突然重くなる プログラムは書き換えておらず、また参考にしていたサンプルゲームを落として実行してみても動作が重いので(昨日までは問題なし)問題はPCの方にあると思います。 私が思いつくのは、システムなどのアップデートが行われて影響が出た、ということくらいです。 この症状に心当たりのある方は何か解決策を教えていただきたいです。 以下スペックです vista Home Premium Service Pack 1 (32bit) Intel Core 2 T5500 1.66GHz メモリ 2GB

    • ベストアンサー
    • Java