問題タブ [audioeffect]

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.

0 投票する
0 に答える
345 参照

java - このカスタマイズされたライブラリを適用するには、コードをどのように変更する必要がありますか?

リアルタイムでのオーディオ録音についてフォークを作成し、オーディオエフェクト(遅延(エコー)、リバーブなど)を追加することに加えて、オーディオプログラミングの世界では初めてです

以下のようなトラブルがありました

jorenさんからライブラリ(be.tarsos.dsp)をもらいました アプリケーションに遅延効果を適用したい

ライブラリからディレイエフェクト用の新しい行を追加する前はデフォルトでうまく機能していますが、私には適用が難しいので助けてください

これは、下に遅延効果を適用したいメインのアクティビティです

MainActivity.java

================================================== =========

これは DelayEffect.java という Java ファイルです (Joren の be.tarsos.dsp ライブラリから)

DelayEffect.java

q1)ライブラリを Android アプリケーションに適用できるのだろうか?

q2) DelayEffect.Java から適用される MainActivity を変更するにはどうすればよいですか?

0 投票する
1 に答える
1861 参照

android - ベースブーストがAndroidで機能しない

*このコードを実行すると、単純なサウンドのみが再生されます。シーク バーを変更すると、BassBoost が機能しません。何か間違ったことをしたのでしょうか。Google でいくつかのチュートリアルを見てきましたが、stack-overflow ではどれも答えられませんでした。

0 投票する
1 に答える
1181 参照

c# - NAudio エフェクトが機能せず、異なるサウンド カードで異なる動作をする

グローバルなエコー効果を作成するために、つまり現在のオーディオ出力に影響を与えるために、 NAudioとWasapiLoopbackCaptureをWaveOutと組み合わせて使用​​しています。

しかし、私の実装はかなり貧弱に思えますが、まったくうまくいきません。マシンごとに音が異なり、クラッシュすることもあります。

これが私が思いついたコードです。オーディオ出力を記録し、75 ミリ秒ごとに WaveOut を使用して記録されたストリームを再生します。

ここで何が間違っているのですか、どうすれば改善できますか?

編集:2回目の試み:

今回はBufferedWaveProviderMarkさんの提案通り使ってみました。問題は、再生に遅延がないため、エコーではなくフィードバック ループが発生することです。出力は.5fボリュームがあり、機能させるためには約 75ms の遅延が必要です。

0 投票する
0 に答える
239 参照

android - PresetReverb がまったく機能しないのはなぜですか?

Android用のオーディオ録音アプリケーションをテストしています

以下のようなオーディオエフェクトを使用して、リアルタイムでオーディオ録音するアプリケーションを起動しています

developer.androidが提供するイコライザー、バスブースト、プリセットリバーブのAPIに適用しました

その結果、イコライザーとベースブーストエフェクトはうまく機能しているように見えますが、プリセットリバーブエフェクト.. Logcatにはエラーがなかったので理由はわかりません..

プリセットリバーブが全く効かない。ダメでも効くのを見てみたい..

だから私はあなたにSOFの専門家の助けを求めています

Q: ソース コードから原因を特定できますか?

私はあなたの助けを期待しようとしています。

0 投票する
1 に答える
105 参照

c# - FMOD を使用した動的 DSP.setParameter

効果音を鳴らしたい。

例では、ローパスとハイパスを使用しています。マウスの位置 (x、y) で 2 つのエフェクトのパラメーターを設定したいと考えています。

DSP.reset() と DSP.setParameter() を使用しましたが、問題があります。

マウスをどんどん速く動かすと、サウンドが滑らかになりません。

元のサウンドは、コード reset() と setParameter() の間で再生されます。

そのため、スパーク(「カチカチ!カチカチ!」)のような音が聞こえます。

スムーズにしたい。

何か方法はありますか??

0 投票する
2 に答える
4871 参照

java - Android AcousticEchoCanceler はほとんどのデバイスで動作しないようです

スピーカーからの音をキャンセルするためにマイクを必要とするアプリケーションを構築しています。まったく同じ問題を抱えている他の人が長期間にわたって応答されなかったため、この問題はほとんどオンラインの陰謀のようです.

Android のネイティブ ハードウェア アクセラレーション AcousticEchoCanceler は、ほとんどのデバイスで動作しないようです。Nexus 5 や Moto X など、多くのデバイスでテストが行​​われ、動作しているように見えたものもありましたが、テストしたほとんどすべての Samsung デバイスはバックグラウンド サウンドを除去できませんでした。注: テストしたすべての電話は、AcousticEchoCanceler.isAvailable()

ただし、Skype や WhatsApp などのアプリケーションは、アプリのコンテキスト外の音をキャンセルするように見えるため、解決策が必要です。つまり、通話がスピーカーで行われ、マイクが受信したフィードバックをキャンセルします。

この単純化された録音アプリは、サウンドをファイルに録音し、後で再生をクリックすると再生されます。

MainActivity.java

activity_main.xml

AndroidManfist.xml のアクセス許可

デバイスが動作するかどうかを確認するには、バックグラウンドで何かを再生し、クリックStart Recordingして小さなセクターを録音し、Stop Recordingこの時点でクリックPlay Backして、バックグラウンド サウンドが聞こえるかどうかを確認します。バックグラウンド サウンドが聞こえる場合は、AEC が機能していません。しかし、なぜこの不一致が発生するのか、またはエコー キャンセレーションをどのように達成するのですか (アプリ コンテキスト内のノイズ キャンセレーションのために、アプリ内で既に WebRTC を使用しています)。

どんな助けでも大歓迎です!

0 投票する
1 に答える
717 参照

java - Javaでピッチエフェクトを実装するには? (FFT、IFFT、振幅、位相)

オーディオ サンプル バッファで FFT と IFFT を変換するために、apache commons math ライブラリを使用します。FFT の outout は、複素数の配列を提供します。周波数は中央に反映されます。サンプル バッファ サイズが 4096 サンプルの場合、2048 の有用な複素数が得られます。私のエフェクトシーケンスの構造

Java には 2 つの実装があります。1 つは IFFT の前に最終的な配列を実行し、複素数を取得する位置の補間を計算します。つまり、基本的に私がやっていることは、別の周波数スケールで複素数をワープすることです.

この実装では、入力オーディオ信号のサンプルレートにより、複数のピッチ周波数が 1 つから得られるため、主に高域で副作用のあるサウンドのピッチが設定されます。私の他の実装では、受信する複素数の振幅とフェーズ アウトを計算します。次に、振幅スケールのみを新しい位置にワープし、元の位相値と新しい振幅値を使用して新しい複素数を計算します。長方形を極座標に変換し、長方形に戻すと、符号が失われます。複素数ベクトルの長さを変更するだけなので、入力符号を出力複素数に強制できます。

2 番目の実装は、最初の実装よりもはるかに優れています。実際、私が使用したほとんどの DJ アプリケーションよりも優れたサウンドに聞こえますが、その理由はわかりません。私は何か間違ったことをしていますか?比較できる Java の他の実装は見つかりませんでした。彼らは通常、周波数スケール全体を新しいスケールの振幅と位相でワープするだけですか、それとも振幅を取得して別のスケールの元の位相に強制するだけですか?