問題タブ [winmm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windbg - 「アクセス違反」の原因を見つける方法
一言で言えば、wav ファイルの再生を制御する (基本的に open、play、pause、stop、status、close ) ために、( dllimport を介して) 多くの mciSendString 呼び出しを行う C# アプリケーションがあります。そして、しばらく実行すると、「アクセス違反」でアプリが予告なしにクラッシュします。
vs2012 からアプリを実行していますが、Visual Studio では例外がキャッチされません。「例外で強制的に中断」オプションを使用しても、vs2012 からこれをデバッグできませんでした。代わりに、WER をセットアップしてクラッシュ ダンプを生成し、windbg と psscor2.dll プラグインを使用してデバッグしています。
次に、次のコマンドを順番に使用して、これが得られます(読みやすくするために不可欠に短縮します):
$>.ecxr
$>~*キロバイト
$>!analyze -v
Unloaded_mciwave.dll のスレッド #30 で例外が発生しているようですが、デバッグをさらに進める方法がわかりません。
これらの 2 つの行の間で何が起こっているかを知るにはどうすればよいですか?
よろしくお願いいたします。
c# - Windows Phone Dev: winmm.dll を使用して内部 mp3 ファイルを再生する
mp3 プレーヤー ファイルの実行についてサポートが必要です。インターネットで検索したところ、外部ディレクトリから mp3 ファイルを取得する必要がある場合にのみ、winmm.dll ライブラリを使用する方法が見つかりました。アプリの内部ディレクトリ用に変更する必要があります。
コードを示しましょう:
次のように Mp3Player クラスを作成します。
ここで内部ファイルを開くように呼び出します。
これにより、ファイルを開くときにエラーが発生するため、クラスに送信するディレクトリ パスに問題があると確信しています。私はいくつかのバージョンを試しましたが、誰も動作せず、インターネット上で私を助けるものを見つけることができません. あなたの誰かが、その機能を機能させるための正しい道を私に言うことができますか?
本当にありがとうございました。
本当に下手な英語ですみません。
c# - TIME_KILL_SYNCHRONOUS の意味は何ですか?
マルチメディア タイマー用の C# ラッパーを作成しました。Start
メソッドtimeSetEvent
はユーザー指定のコールバックで呼び出し、Stop
メソッドは単純に を呼び出しますtimeKillEvent
。
私はそれが機能することを確認するはずの単体テストを持っていStop
ます:
私の問題は、 を呼び出した後にイベントがもう一度発生するため、このテストが失敗することがあるということStop
です。作成時にフラグを追加しようとしましたTIME_KILL_SYNCHRONOUS
が、うまくいかないようです。ドキュメントから正確に何をすべきかを理解できません。MSDNによると:
TIME_KILL_SYNCHRONOUS および TIME_CALLBACK_FUNCTION フラグを使用してイベントを作成すると、timeKillEvent 関数が呼び出された後にイベントが発生するのを防ぐことができます。
これは、保留中のイベントが実行されないということですか? それともtimeKillEvent
、保留中のすべてのイベントが実行された後、メソッドが返されないのでしょうか?
オンラインで検索しましたが、答えが見つかりませんでした。
いずれにせよ、これは私のテストには役立ちません。テストを常にパスさせる唯一の方法は、Sleep
を呼び出した後にshort を追加することStop
です。
c# - シンプルな MP3 プレーヤー、通知が機能しない
C#初心者です。曲が終わったらすぐにプレーヤーを停止させたいので、こちらに記載されている解決策を試してみました。問題は、曲の終了後にプレーヤーが停止せず、別の曲を選択するために手動で停止ボタンを押す必要があることです。私はどこかで間違ったことをしましたか?
どうもありがとう!
winapi - waveOutGetDevCaps() が再生できると言っているのに、Windows Vista 以降の waveOutOpen() が、デフォルトの出力デバイスが 44100hz モノラル 8 ビット PCM を再生できないと言うのはなぜですか?
ソフトウェアの自動変換なしで winmm() を使用して 44100hz 8 ビット モノラル PCM ストリームを開こうとしていますwaveOutXxxx()
(このような変換の結果として生じる可能性のあるフィルタリングを行わずに、出力波形を完全に制御したいと考えています)。
これは Windows XP と wine で問題なく動作します。しかし、Windows Vista 以降 (Vista、7、および 8.1 を試しました) では、
それでは、それをしましょう:
そして今、出力は
...しかし、待ってくださいWAVE_FORMAT_4M08
。サポート対象としてリストされています!
何を与える?ありがとう。
c# - C#4.0 winmm.dll を使用して 192kbps を超える .mp3 ファイルを再生する際の問題
MCIERR_INTERNALI は、アプリ内で単純なメディア プレーヤーを作成しようとしていますが、ファイルが 192kbps 以下の低ビットレートでない限り、私のコードは音楽を再生しないことに気付きました。問題は、私の音楽のほとんどが 260 ~ 320kbps 前後であることです。
これが私のコードです。「利用可能な」ビットレートオプションを上げるために何かできることがあれば教えてください。それ以外の場合は、新しい DLL の提案が必要です!
**編集: -Winform アプリケーション
- Windows 7 sp1 を使用
-Visual Studio 2013 コミュニティ エディションの使用
- エラー キャッチから、エラー番号が 289、-256 = 22: MCIERR_INTERNAL であることがわかりました。
c++ - MMSYSERR_NOMEM 他の midi アプリが開いているときにのみ midiInOpen() を呼び出す場合
midiInOpen を使用して Windows で midi ポートを開こうとしています。この呼び出しは通常はうまく機能しますが (私は RtMidi ラッパーを使用しており、コードは非常にクリーンです)、Ableton Live が開いている場合は MMSYSERR_NOMEM を返します。マシンには十分な RAM (4GB) が残っており、他のアプリケーションを閉じても効果がないようです。
winmm である種の内部リソース制限に達していますか?
私は新しい Intel NUC マシンで Windows 7 を実行しています。呼び出しは RtMidi.cpp から来ており、それらを CPython モジュールでラップしていますが、他に特別なことはしていません。私は経験豊富な C++ 開発者であり、誰かが道を示すことができれば、これを理解することができます。
ありがとう!
audio - クリップを立て続けに再生するときのクリック音
押されたボタンに応じて 4 つの異なるトーンを再生する非常に単純なプログラムがあります。複数のトーンまたは同じトーンを立て続けに再生すると、不快なクリック ノイズが発生することがわかりました。これらのクリックがオーディオ サンプルに存在しないことを確認しました。これは間違いなく、クリップを次々とすばやく再生することが原因です。
グーグルで調べた後、クリックはクリップ間のピッチの急激な変化によるものであると確信しています. 問題のあるオーディオからの再生の波形を見ると、次のクリップを開始する前に、クリップが最初に数分の 1 の間キャンセルされているように見えます。これが特に明白と思われるセクションを強調しました。
これらのオーディオ クリックを紹介するクリップは、こちらからダウンロードすることもできます。
私のコードはとてもシンプルです。XInput を使用して、再生するトーンを決定する接続されたコントローラーから入力を読み取り、WinMM を使用して wav ファイルからサウンドを出力しています。これは D プログラミング言語で書かれていますが、できるだけ C に似せて混乱を避けるために、D 固有の機能を使用しないように変更しました。
クリック音のソースに関して私が正しいと仮定すると、解決策は各サンプルを次のサンプルにフェードインさせることだと思います。ただし、WinMM のドキュメントは比較的まばらなようで、経験が浅いため、これを行う方法がわかりません。
各サンプルが次のサンプルにフェードインするようにオーディオ サンプルを再生するときのクリックの問題の解決策はありますか? もしそうなら、WinMM を使用してこれを達成するにはどうすればよいですか? そうでない場合、私が試すことができる別の解決策はありますか?