問題タブ [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 に答える
2473 参照

ios - モノラル オーディオ データを AVAudioEnvironmentNode に渡す

AVAudioEnvironmentNodeを使用して、作業中のゲームの 3D 空間化サウンドを生成しようとしています。ドキュメントには、 「AVAudioEnvironmentNode環境ノードへのモノ チャネル接続形式の入力のみが空間化されることに注意することが重要です。入力がステレオの場合、オーディオは空間化されずに通過します。現在、2 つ以上の接続形式の入力チャネルはサポートされていません。」私は確かにこれが事実であることを発見しました。2 つのチャネルを持つオーディオ バッファを にロードしAudioPlayerNode、ノードを に接続するとAVAudioEnvironmentNode、出力サウンドが空間化されません。私の質問は、どうすればモノデータを に送信できますAVAudioEnvironmentNodeか?

プログラムで正弦波データをロードするだけでなく、モノラル.wavファイルを作成しようとしました。どちらの方法でも、単一チャネルのオーディオ バッファを作成し、そのバッファを にロードしようとすると、プログラムが次のエラーでクラッシュすることがわかりました。AudacityAVAudioPCMBufferAudioPlayerNode

2016-02-17 06:36:07.695 テスト シーン[1577:751557] 06:36:07.694 エラー:
[0x1a1691000] AVAudioPlayerNode.mm:423: ScheduleBuffer: 必要な条件が false: _outputFormat.channelCount == buffer.format.channelCount 2016-02-17 06:36:07.698 テスト シーン[1577:751557] *** キャッチされない例外 'com.apple.coreaudio.avfaudio' が原因でアプリを終了します。理由: '必要な条件が false: _outputFormat.channelCount == バッファー.format.channelCount'

出力バスを確認すると、AVAudioPlayerNode実際に 2 チャンネルが必要であることがわかります。これをどのように変更できるか、または変更する必要があるかどうかはわかりません。

AVFoundation私は、一般的に、またはオーディオデータを扱った経験がほとんどないと規定しています。あなたが提供できるどんな助けも大歓迎です。

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

swift - AVAudioPCMBuffer はプログラムで構築され、ステレオで再生されません

メトロノームを構築するために、Swift でプログラムで AVAudioPCMBuffer を埋めようとしています。これは私が構築しようとしている最初の実際のアプリであり、最初のオーディオ アプリでもあります。現在、メトロノームを正確にループさせるためのさまざまなフレームワークと方法を試しています。

AVAudioPlayerNode の scheduleBuffer メソッドの .Loops オプションを使用できるように、メジャー/バーの長さで AVAudioPCMBuffer を構築しようとしています。まず、ファイル (2 ch、44100 Hz、Float32、非インター、*.wav と *.m4a の両方に同じ問題があります) をバッファーにロードし、そのバッファー フレームを空のフレームで区切られたフレームごとに barBuffer にコピーします。以下のループは、私がこれを達成する方法です。

元のバッファを再生するようにスケジュールするとステレオで再生されますが、barBuffer をスケジュールすると左チャンネルしか取得できません。私がプログラミングの初心者であり、オーディオ プログラミングの経験がないと言ったように、これは 32 ビット フロート チャネルまたはこのデータ型に関する知識が不足している可能性がありますUnsafePointer<UnsafeMutablePointer<float>>。floatChannelData プロパティを迅速に見ると、この説明では、2 つのチャネルをコピーする必要があるように聞こえます。

編集: i += 1hotpaw2 のおかげで、明らかな間違いを削除しました。ただし、barBuffer が再生されると、右のチャネルはまだ失われています。

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

ios - 一部のデバイスで音が出ない

AVAudioSession を使用するサウンドボード アプリがあります。AVAudioPlayerNodes を AVAudioEngine にアタッチして、オーディオ ファイルを再生します。

すべてが iOS 9.2 で問題なく動作しますが、私のレビューの多くはサウンドが機能しないと言っています。また、iOS 8 を実行している iPhone 5s で試してみたところ、サウンドが機能しません。

アプリを更新する前は問題なく動作していたので、これがなぜなのかわかりません。また、音の出し方に大きな変更は加えていません。AVFoundation と iOS8 または私が認識していない古いデバイスとの互換性の問題はありますか?

更新: エンジンに接続されているノードの数を減らすと、サウンドが再び機能します。一部のデバイスは、接続しているノードの量を処理できないようです? これを回避するには、1 つだけではなく複数のエンジン オブジェクトを作成することでしょうか?

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

ios - ノードが既に AVAudioEngine にアタッチされているかどうかを確認します

AVAudioPlayer ノードを AVAudioEngine に正常に接続しました。ただし、これらのノードが既に接続されているかどうかを後で確認する必要があります (したがって、それらを再追加しません)。

エンジンに既にアタッチされているかどうかを確認できる特定のプロパティはありますか?

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

ios - AVAudioEngine がエラー !nodeimpl->HasEngineImpl()' でクラッシュする

エンジンにアタッチした AVAudioPlayerNode を再生した後、(CPU 使用率を抑えるため) デタッチします。ただし、その AVAudioPlayerNode をエンジンに再接続して再生しようとすると (以前の再生中に)、次のエラーでクラッシュします。

「必須条件が false: !nodeimpl->HasEngineImpl()」

これが何を言っているのか理解に苦しむ。

注: クラッシュは、前のサウンドの再生がまだ行われているときに AVAudiPlayerNode を再度再生しようとした場合にのみ発生します (たとえば、同じ AVAudioPlayerNode を介して同じサウンドを生成するボタンを 2 回続けてタップします)。

前の演奏が終わるのを待っていれば、クラッシュしません。

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

swift - ヘッドホンを抜き差しすると SKAudioNode() がクラッシュする

SKAudioNode()ゲームでバックグラウンド ミュージックを再生するために を使用しています。再生/一時停止機能があり、ヘッドフォンを差し込むまではすべて正常に動作しています。まったく音が出ず、一時停止/再生機能を呼び出すと、このエラーが発生します

AVAudioPlayerNode.mm:333: 開始: 必須条件が false: _engine->IsRunning() com.apple.coreaudio.avfaudio', reason: '必須条件が false: _engine->IsRunning()

これが何を意味するか知っている人はいますか?

コード:

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

ios - AVAudioEngine を使用してリアルタイムでピッチを検出することは可能ですか?

ピッチの検出がすべての核となる音楽アプリを作成しようとしています。この問題の解決策と AppStore のアプリを見てきました。しかし、それらのほとんどはかなり時代遅れであり、これをやりたいのは Swift です。これを行う方法として AVAudioEngine を検討してきましたが、ドキュメントが不足しているか、十分に調べていない可能性があります。

私が見つけたのは、次のようにinputNodeバスをタップできることです。

バスは 1 秒あたり 2 ~ 3 回タップされ、バッファーにはタップごとに 16000 を超えるフロートが含まれています。これらはマイクからの振幅サンプルですか?

ドキュメントでは、少なくともノードからの出力であると主張しています

AVAudioEngine を使用してリアルタイムでピッチを検出することは可能ですか、それとも別の方法で行う必要がありますか?

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

ios - Filter(AVAudioUnitEQ) を適用した後にオーディオ ファイルを保存し、最後に mp3 として保存しますか?

フィルターを適用した後に音声ファイルを保存するのはとてもイライラします。フィルターは AVAudioPlayerNode にのみ適用されます。これは、プレーヤーでの再生中にフィルターを適用するのに最適であることを意味しますが、これを保存するにはどうすればよいですか? 私はこの 3 日間とても苦労しています。これらの以下のコードは私が使用している、

engine = [[AVAudioEngine alloc] init];

これらは正常に動作するサンプルです。しかし、どうすればこれと同じ周波数でオーディオ ファイルを保存できますか? 音声ファイルは mp3 形式である必要があります。Appleでは、保存ファイルをm4aとしてのみ対象としています。

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

ios - AVAudioEngine: AVAudioPlayerNodes のセットを一度に開始する

多数のループを同時に開始し、それらの同期を維持する必要があるアプリに取り組んでいます。

この問題に対する以前の素朴なアプローチ (AVAudioEngine を使用していない) を使用したところ、プログラムで多数のオーディオ プレーヤーを順番に起動すると、呼び出し間に十分な遅延が発生し、結果が役に立たなくなることがわかりました。ビートは明らかに同期していませんでした。

AVAudioEngine を使用してこの種の機能を実現できますか?

現在、AVAudioPlayerNodes をミキサーに配線しており、それらにバッファーを接続し、そこからの入力を制御しています。しかし、それらをすべて同時に開始することはできますか?

play を呼び出すまでノードがサウンドを生成し始めないようで、エンジンが始動する前にそれを行うことはできません...