問題タブ [avaudioplayernode]

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

ios - AudioEngine で効果音を使用する

背景 - Apple の最近の WWDC で公開された次のビデオのリストから、オーディオに効果音を適用するために「AVAudioEngine in Practice」というタイトルのビデオを見ました。 https://developer.apple.com/videos/wwdc/2014/

その後、次のコードでオーディオのピッチを変更することに成功しました。

私が理解していることから、AudioEngine を使用して AudioPlayerNode を AudioEffect にアタッチし、それを出力にアタッチしました。

オーディオに複数の効果音を追加することに興味があります。たとえば、ピッチ変更とリバーブ。オーディオに複数の効果音を追加するにはどうすればよいですか?

また、ここで IBAction で行った方法ではなく、 viewDidLoad でノードをアタッチして接続することは理にかなっていますか?

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

ios - iOS (Swift) の AVAudioPlayerNode を介したバッファ再生での可聴グリッチ *シミュレーターでは機能しますが、デバイスでは機能しません

AVAudioPlayerNode を使用して短いバッファをスケジュールし、タッチ イベント ("Touch Up Inside") ですぐに再生する場合、テスト中に再生時に聞こえるグリッチ/アーティファクトに気付きました。iOS シミュレーターではオーディオにまったく問題はありませんが、実際の iOS デバイスでアプリを実行すると、再生時に歪みが聞こえます。可聴歪みはランダムに発生します (トリガーされたサウンドは、素晴らしいサウンドになることもあれば、歪んだサウンドになることもあります)。

さまざまなオーディオ ファイル、ファイル形式を使用して、prepareWithFrameCount メソッドを使用して再生用のバッファーを準備しようとしましたが、残念ながら結果は常に同じで、何が問題なのか疑問に思っています..

わかりやすくシンプルにするために、コードをグローバルに落としました。どんな助けや洞察も大歓迎です。これは、iOS アプリを開発する最初の試みであり、スタック オーバーフローに投稿された最初の質問です。

アップデート:

歪みの原因を特定できたと思います。出力時のノードのボリュームが大きすぎて、クリッピングが発生しています。私の startEngine 関数に次の 2 行を追加することで、歪みは発生しなくなりました。

ただし、出力を下げる必要がある理由はまだわかりません。オーディオ ファイル自体はクリップしません。AVAudioPlayerNodeBufferOptions.Interrupts が実装されている方法の結果である可能性があると推測しています。バッファが別のバッファを中断すると、中断の結果として出力ボリュームが増加し、出力クリッピングが発生する可能性がありますか? なぜこれが発生するのかについて、私はまだしっかりとした理解を求めています..誰かがこれについて明確にする意思がある/できるなら、それは素晴らしいことです!

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

ios8 - AVAudioEngine の時間管理と AVAudioPlayerNode のコールバックが正しくない

iOS8 の新しいオーディオ エンジンに重大な問題があります。AVAudioPlayer で構築されたアプリケーションがあり、新しいアーキテクチャに移行する方法を見つけようとしていますが、次の問題にぶつかりました (これは深刻で基本的な障害であることに同意していただけると思います)。 :

私のヘッダーファイル:

私のmファイル(viewDidLoad内):

上記のコードは、エンジンとノードを初期化し、使用しているファイルの再生を開始します。最初に音楽ファイルの長さを出力し、次に再生終了後、コールバック関数でプレーヤーの現在の時間を出力します。これらの 2 つの値は同じか、最悪の場合、互いに非常に近いはずですが、そうではありません。これら 2 つの値の差は非常に大きくなります。たとえば、

私は何か間違ったことをしていますか?これはかなり簡単なはずです。さまざまなファイル形式、ファイル長、数十の音楽ファイルを試してみましたが、違いは常に約 1 秒未満です。

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

ios - Swift: 必要な条件が false: ファイル != nil

アプリは正常に動作しますが、chipmunkBut​​ton をタップするとすぐにアプリがクラッシュし、次のエラーが表示されます。

ERROR: AVAudioPlayerNode.mm:678: -[AVAudioPlayerNode scheduleFile:atTime:completionHandler:]: required condition is false: file != nil 2015-05-10 17:24:25.269 Pitch Perfect[50278:1897012] *** 終了アプリ例外 'com.apple.coreaudio.avfaudio' がキャッチされていないため、理由: '必要な条件が false: ファイル != nil' です。

0 投票する
3 に答える
2621 参照

ios - AVAudioEngine を使用して低遅延メトロノームのサウンドをスケジュールする

大規模なアプリの一部としてメトロノームを作成しており、個々のサウンドとして使用する非常に短い wav ファイルがいくつかあります。NSTimer には重大な遅延の問題があり、Core Audio を Swift に実装するのはかなり難しいように思われるため、AVAudioEngine を使用したいと考えています。私は次のことを試みていますが、現在、最初の 3 つの手順を実装できず、より良い方法があるかどうか疑問に思っています。

コードの概要:

  1. メトロノームの現在の設定に従って、ファイル URL の配列を作成します (小節ごとのビート数とビートごとのサブディビジョンの数。ビート用のファイル A、サブディビジョン用のファイル B)。
  2. ファイルのテンポと長さに基づいて、適切な数の無音フレームを含む wav ファイルをプログラムで作成し、それを各サウンド間の配列に挿入します。
  3. それらのファイルを単一の AudioBuffer または AudioBufferList に読み込みます
  4. audioPlayer.scheduleBuffer(buffer, atTime:nil, options:.Loops, completionHandler:nil)

これまでのところ、単一のサウンド ファイルのループ バッファー (ステップ 4) を再生することはできましたが、ファイルの配列からバッファーを作成したり、プログラムで無音を作成したりすることはできませんでした。また、StackOverflow に関する回答も見つかりませんでした。これに対処します。したがって、これは最善のアプローチではないと推測しています。

私の質問は次のとおりです: AVAudioEngine を使用して低レイテンシーでサウンドのシーケンスをスケジュールし、そのシーケンスをループすることは可能ですか? そうでない場合、Swift でコーディングするときにサウンドをスケジューリングするのに最適なフレームワーク/アプローチはどれですか?

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

ios - AVAudioSession を使用して音楽からボーカルを削除/音量を下げる方法

音楽の再生中にオーディオを録音する必要があるアプリを開発しています。音楽と一緒に音をうまく録音できます。しかし、音楽からボーカルを取り除くことはできません。ボーカルの立ち上がり時に音量を下げることもできれば最高です。

音楽再生中の録音にはAVAudioSession、AVAudioPlayerNodeを使用しています。

どんな助けでも感謝されます。