問題タブ [avaudioengine]

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 投票する
1 に答える
311 参照

ios - AVAudioUnitTimePitchを介して再生中にiOSがピッチを調整する

再生中にピッチを調整できるオーディオを取得しようとしています。私は Swift と iOS に非常に慣れていませんが、最初の試みは、timePitchNode.pitch再生中に変更することでした。ただし、プレイ中には更新されません。私の現在の試みは、 をリセットaudioEngineし、再生していた場所から再開することです (以下)。オーディオが現在どこにあるかを確認するにはどうすればよいですか? また、そこからオーディオを再開するにはどうすればよいですか?

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

objective-c - AVAudioEngineでマイクと音楽を同時に録音する

現在、プレイヤー ノードと入力ノードを同時に記録しようとしていますが、問題が発生しています。それらを個別に記録させることができ、ある時点で両方を記録するようにコードを設定しました。唯一の問題は、これを行うと、入力ノードから録音されたコンテンツがスピーカーから再生され、その録音がエコーを作成し、最終的に耐えられないほどのフィードバックを作成することです。そのため、入力ノードがスピーカーから再生されないように、次のようにコードを整形しようとしましたが、難しいと感じています。

次のようにコードを設定しようとしています。

いくつかの組み合わせを試しましたが、ここにすべてを掲載することはできないので、いくつかの基本的なコードをレイアウトし、誰かがこの分野で少し専門知識を持っていることを願っています.

まず、エンジンを作成してノードを接続します。

次に、エンジンの接続を行います (ここで、どこが間違っているのかを知る必要があります)。

あるミキサーを別のミキサーに直接接続しようとすると、エラーが発生します。

最後に、これをすべて記録関数にまとめようとする場所があります。表示される関数はプレーヤーを記録しますが、入力は記録しません。

入力を記録できる唯一の方法は、ノード タップを次のように設定することです。

しかし、それはプレーヤーを記録しません。

何をすべきかを知っている人がいると教えてください。

ありがとう、

ジョシュア

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

memory-management - ビュー コントローラが閉じられているにもかかわらず、AVAudioEngine が引き続き実行される

プレイヤーノードのミキサーノードと入力ノードを使用してコードをセットアップしました。また、機能の中断や特定の変更に対処するように設定しました。

ただし、これらの変更には大きな問題があります。つまり、View Controller を閉じると、アプリのメモリが解放されなくなるだけでなく、playernode が引き続き再生されます。プレーヤー ノードでビューに戻り、停止を押しても機能しません。プレイヤーを再びアクティブにすることもでき、止められないプレイヤーと一緒にプレイします。

問題の領域は、ハードウェア構成の変更がある場合にエンジンから通知を取得しようとするコードの下部にあります。このコードを削除すると、ビューが閉じられると、エンジンが使用しているすべてのメモリも削除されます。ただし、これは、誰かがヘッドフォンを接続すると、アプリがクラッシュすることも意味します。ご覧のコードが必要ですが、ビューが閉じられた場合にアプリが使用中のメモリを解放するようにコードを変更する必要があります。

何かアドバイス?

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

ios - AVAudioEngine API: AVAudioUnitTimePitch の CPU 使用率が高すぎます

ピッチシフトフィルターを使用して、単純なドラムパッドマシンアプリケーションを実装しようとしています. AVAudioEngine APIを使用しています。

アプリには12個のパッドがあります。各パッドには、独自のAVAudioPlayerNodeを持つ独自のクラスがあります。他のフィルターが接続されていない場合、アプリは非常に高速に動作します。ほとんど遅延なし。
しかし、AVAudioUnitTimePitchをチェーンにアタッチしようとすると、CPU使用率が 100% まで上昇し、初期化後にアプリがハングアップします。iPad3でテストされました。

このコードは、パッドの初期化ごとに実行されます。

どうにかしてCPU使用率を下げる方法はありますか?

PS また、このアプリをiPad Airでテストしました。そして、それは機能します。しかし、CPU 使用率は依然としてかなり高く、初期化後は25 ~ 30%です。オーディオの再生中は約50%です。

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

ios - AVAudioEngine 入力でマイクをタップしても機能しない

AVAudioEngine 実装をセットアップして、マイクからオーディオを取得し、それを websocket 接続にストリーミングします。まず最初に、マイク入力と、マイクのオーディオを 44khz から 11khz にダウンサンプリングする中間ミキサーをタップしました。どういうわけか、ダウンサンプリング ミキサーの「印刷」のみがログに表示されますが、マイク inputNode のタップからの「印刷」は発生しません。私は何を間違っていますか?私は間違った考え方で何かを想像していますか?

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

ios - AVAudioInputNode パーミッション

これは非常に基本的な質問のように思えるかもしれませんが、答えを見つけるのに苦労しています。私の知る限り、 AVAudioInputNode は iOS 8 以降で利用可能であり、たとえば iPhone のマイクから録音するために使用できます。

以前は、AVAudioRecorderSession を使用して録音の許可を要求し、許可があるかどうかを検査することを知っていました。私が苦労しているのは、AVAudioEngine を使用するときに許可を要求して確認する方法です。

それでは、以下のようなものでは、どうすればこれを行うことができますか?

マイクのプライバシー メッセージは plist で設定でき、audioEngine.inputNode を呼び出すとこのメッセージが表示されるようです。しかし、その許可が付与されているかどうかを確認する場所はまだわかりません。追加すると

行の直後にguard let inputNodeメッセージが表示されますが、アラートに応答する前に許可が与えられていないことが常に通知されます。

これについて最善の方法は何ですか?最初に audioSession メソッドを使用するようにフォールバックする必要がありますか? 多くの価値があるのは、SpeechRecognizer の周りの WWDC コードから持ち上げられたものです。彼らがマイクの許可を処理している場所がわかりません

実際、アクセス許可を要求するためのアラートが常に表示されるとは限りません。私が見つけた例では、この許可ステップをスキップしているように見えるため、ここで何が欠けていますか