問題タブ [soundplayer]
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.
wpf - SoundPlayerの代替
このクラスを使用してSoundPlayer、WPFアプリケーションでWAVファイルを再生しています。ファイルは短く、アプリケーションの一部であり、プログラムで発生するイベントに応答して再生されます。ユーザーはどのサウンドを再生するかを制御できず、自分でサウンドを再生することを決定することはできません。WPFMediaPlayerコントロールも使用してみましたが、そのコントロールに問題がありました。はSoundPlayerうまく機能していますが、問題があります。
基本的に、私は音のキューを維持し、それらがキューに入れられるときに次々に音を再生する必要があります。状況によっては、再生中のサウンドを停止して、代わりに別のサウンドを再生する必要があります。SoundPlayerしたがって、コントロールと相互に排他的であることが判明した2つの要件があります。
- 私のコードは、サウンドの再生がいつ終了したかを知る必要があります。
- サウンドはバックグラウンドで再生する必要があります
これを実装するために、というクラスを作成しましたSoundController。これにはバックグラウンドスレッドがあり、Thread's Dispatcherを使用して、を使用してサウンドを再生するために使用するメソッドへの呼び出しをキューに入れますBeginInvoke。このメソッドは、サウンドを再生するSoundControllerために呼び出す前にイベントでイベントを発生させ、リターン後に別のイベントを発生させます。SoundPlayer.PlaySyncPlaySync
UIスレッドで、サウンドを停止する必要がある時点で、SoundControllerクラスのStopメソッドを呼び出します。SoundPlayerのStopメソッドを呼び出して、サウンドの再生を停止します。そして、ここで問題が発生します。SoundPlayer.Stop音が止まらないことがわかりますが、音が終わるのを待ってから戻ります。
これでGUIが機能しなくなります。非同期で呼び出すこともできますが、GUIは停止しませんが、サウンドも停止しません。
私が言ったように、WPF MediaPlayerは私たちのために機能せず、とにかくそれはやり過ぎでした。イベントを発生させ、バックグラウンドスレッドでサウンドを再生し、再生を停止する機能を提供するサウンドを再生するための他の代替手段はありますか?
2012年6月26日編集:
これは1か月以上ここにあり、応答がありません。SoundPlayerですから、コントロール に代わるものは他にないと思います。
問題に別の角度からやってくる新しい質問を投稿します。
asp.net - ASP.NET サウンド リソースが公開されていません
そこで、VS2010 で ASP.NET 4 アプリケーションを作成しました。これはエンド ユーザーにサウンドを再生する必要があり、ローカルの開発環境で完全に動作しています。問題は、サウンド リソースまたは Resources.resx がサーバーに公開されていないことです。理由はありますか?
私がしたこと:
1) プロジェクト プロパティ リソースの下に、soundbyte (soundbyte.wav を含む) というサウンド リソースを追加しました。これにより、wav ファイルを含む Resource フォルダーが作成され、プロジェクトの下にそのファイルを参照する Resources.resx ファイルが作成されることに気付きました
2) 私のコードでは、次のようにファイルを再生します。
c# - WAV再生後のC#SoundPlayer静的
このコードを使用してリソースからWAVファイルを再生し、オーディオは正しく再生されますが、再生後に静的な短いブラストが発生します(約1/2秒)。
上記の行のコメントを外すSystem.Media.SystemSounds.Beep.Play()と、リソースからのビープ音と通知音の両方が正しく再生され、静的な音は鳴りません。私は上記のコードのいくつかの異なるバリエーションを試しましたが、常に静的なものを取得しています。初期のガベージコレクションに関連するものがある場合に備えて、すべての変数を静的にしようとしましたが、それは役に立ちませんでした。
WAVファイルは私がc:\WINDOWS\Media\ding.wav(Windows XPで)コピーしたものであり、WindowsMediaPlayerで正常に再生されます。また、newを使用するSoundPlayer("c:\WINDOWS\Media\ding.wav")と、ファイルから正しく再生されます。
UnmanagedMemoryStreamそれはそれと関係があると思いますResources.Notify、そして多分私はそれを最初に管理されたストリームにロードする必要がありますか?new Bitmap(Resource.MyPNG)使用せずに直接使用しようとすると、PNGファイルで問題が発生したことはわかっているResource.MyPNGので、WAVリソースと似たようなものがありますか?
更新:当初はサウンドが再生されるたびに発生すると思っていましたが、今ではアプリでサウンドを再生するのは初めてのようです。では、初期化を行う必要があるのではないでしょうか。
私もこれを試しました、同じ問題:
c# - C# でサウンドを追加する方法
本を読んだり、チュートリアルを見たりして、独学で C# を勉強しています。そこで、より多くの経験を積み、知識を深めるために、同時に小さなプロジェクトを作成することにしました。グルジア語 (私の言語) でテキスト読み上げプログラムを作成しようとしていますが、異なる音を互いに追加する方法がわかりませんでした。たとえば、私のプログラムが「言語」と言いたい場合、単語を「ラ」「ン」「グ」「ア」「ゲ」に分割するので、これらの部分を記録し、それらを追加して単語を作成したいと考えています。MSDN.COM でクラスを探したところ、SoundPlayer が見つかりましたが、WAV 形式のサウンドを追加する方法がわかりませんでした。あるサウンドを別のサウンドに追加して、新しいサウンドを再生したい。たとえば、「aaa」と言うサウンドと「bbbb」と言うサウンドがある。
単語を分割するために、配列リストを作成し、このコードを使用しました。
私はこのプログラムを Java で作成しましたが、C# でも同じことをしたいので、これが Java の私のコードです。これは、後でサウンドを追加し、それらをarraylistに入れる方法です。
これらのhttp://msdn.microsoft.com/en-us/library/system.media.soundplayer.aspxからどのメソッドまたはクラスを使用する必要がありますか? C#で同じことを行うにはどうすればよいですか?
c# - .wav 形式のサウンドを相互に追加する方法
本を読んだり、チュートリアルを見たりして、独学で C# を勉強しています。そこで、より多くの経験を積み、知識を深めるために、同時に小さなプロジェクトを作成することにしました。グルジア語 (私の言語) でテキスト読み上げプログラムを作成しようとしています。Javaで同じプログラムを実行しましたが、C#に転送したいのですが、異なる音を互いに追加する方法がわかりませんでした。たとえば、私のプログラムが単語「一般」を言いたい場合、単語を分割しますこの「ge」-最初の「ne」-2 番目の「ra」-2 番目の「l」-2 番目のような部分 (これらの最初と 2 番目は、その部分が単語の最初の部分にあることを意味します。 -second は異なるイントネーションを持っています) そのため、これらの部分を .wav 形式で記録し、プログラムにそれらを追加して単語を作成させたいと考えています。MSDN.COM でクラスを探し、SoundPlayer を見つけましたが、WAV 形式のサウンドを相互に追加する方法がわかりませんでした。あるサウンドを別のサウンドに追加して、新しいサウンドを再生したい。たとえば、「aaa」というサウンドと「bbbb」というサウンドがあり、「aaabbbb」というサウンドを取得したい。
単語を分割するために、配列リストを作成し、このコードを使用しました。
Java プログラムで同じコードを使用しましたが (もちろん Java 構文で)、.wav ファイルを操作しようとすると問題が発生しました。使用する方法とこれらのサウンドを貼り付ける方法がわかりません。これが私がJavaで行った方法です。
今、私はC#でほぼ同じことをしたいと思っています。このページhttp://msdn.microsoft.com/en-us/library/system.media.soundplayer.aspxを見ましたが、何をすべきかわからなかったので、助けてください:)どの方法を使用すればよいですかどうやって?
c# - XML サウンドのバイト形式
.wav ファイルがあり、このバイト形式を XML に書き込みます。この曲を自分のフォームで再生したいのですが、正しいかどうか確信が持てず、うまくいきません。Str は私のファイルのバイト形式です。
c# - ナレーターを使用してすべての単語を再生する方法は?
私のプロジェクトはテキスト読み上げプロジェクトです。これが私のコードです。
ただし、テキスト「au」を入力すると、「u」の音だけが再生されます。しかし、ブレークポイントを置いて F11 を押すと、サウンドと u サウンドが再生されるだけです。背後にある理由は何ですか。助けてくれますか?
c# - SoundPlayer がバンドルされた Windows サウンドを再生しない PCM wav ファイル
C# では、System.Media から SoundPlayer クラスを取得して、次のコードを使用して C:\Windows\Media フォルダーから任意の wav を再生できません。私が得るのは音だけです:
「Gspot」というプログラムでウェーブファイル「tada.wav」を確認したところ、オーディオコーデックが「PCM Audio」であることがわかりました。コンパイラの警告やエラーは表示されず、プログラムを実行しても例外は発生しません。ただ音が出ません。スピーカーがオンになっており、Windows Media Player でファイルを再生できます。
wav をプロジェクト リソースとして追加しても、違いはありません。なぜ音が出ないのか誰か教えてください。
c# - SoundPlayerとシームレスな連続したサウンドの再生
私がやろうとしているのは、ループwavを再生することですが、音楽モジュールファイル(.it、s3m、.modなど)で使用されるサンプルのような特定のループ開始位置を使用します。SoundPlayerにはこの機能がないため、元のwavとループの開始位置までカットオフされたwavの2つの別々のファイルを作成しました。2つのファイルをシームレスに連続して再生したいのですが、最初に元のwavファイルをPlaySync()で再生し、次にループセクションをPlayLooping()で再生します。
残念ながら、最初のwavをPlaySync()した後、PlayLooping()がループwavの再生を開始すると、その間に一瞬の中断があります。
これは、2つの別々のサウンドを再生する場合は目立たない場合がありますが、必要なループメカニズムを解除しようとすると非常に目立ちます。音波は楽器のサンプルであり、非常に小さい(通常は0x1000バイト以下)。
c# - c#SoundPlayerプレイリストループ
簡単な質問かもしれませんが、MSDN から少し混乱しています。何かを使って音楽を再生したい。簡単に聞こえるかもしれません。
これは問題なく動作していますが、.PlayLooping でさらにサウンドを追加するにはどうすればよいでしょうか? またはボリュームを変更しますか?きっとSoundPlayerで解決できるはずですよね?
MOGREプログラムで使用したいと思い、最初に使用しようとしましたが、私には役に立ちMogreFreeSLません。
複数のサウンドを含むバックグラウンド ミュージックが必要なだけです。非常にシンプルでなければなりません。