問題タブ [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.
ios - プログラムでボタンを有効にするのに数秒かかる
AVFoundation と AVAudioPlayerNode を使用して迅速なアプリを作成しています。再生中は再生ボタンを無効にし、プレーヤーの完了部分で有効にしますが、ボタンは 10 秒以上透明なままです。ボタンは使用可能で、私の print("complete") がすぐに表示されるため、ビューが更新されていないようです。これが私のコードです:
私は運がないので次のことを試しました:
objective-c - AVAudioPlayerNode を使用してファイルを保存するにはどうすればよいですか?
avaudioplayernode を使用して、オーディオにいくつかの効果を加えます。そして、結果を保存したいと思います。私はこのようにしようとします:
しかし、ファイルの保存は間違っています。出力を NSData に設定するのは間違ったステップだと思います。しかし、私は別の方法を知りません。そして、このようにしてみてください。新しいファイルを保存するにはどうすればよいですか?
ios - モノラル オーディオ データを AVAudioEnvironmentNode に渡す
AVAudioEnvironmentNode
を使用して、作業中のゲームの 3D 空間化サウンドを生成しようとしています。ドキュメントには、 「AVAudioEnvironmentNode
環境ノードへのモノ チャネル接続形式の入力のみが空間化されることに注意することが重要です。入力がステレオの場合、オーディオは空間化されずに通過します。現在、2 つ以上の接続形式の入力チャネルはサポートされていません。」私は確かにこれが事実であることを発見しました。2 つのチャネルを持つオーディオ バッファを にロードしAudioPlayerNode
、ノードを に接続するとAVAudioEnvironmentNode
、出力サウンドが空間化されません。私の質問は、どうすればモノデータを に送信できますAVAudioEnvironmentNode
か?
プログラムで正弦波データをロードするだけでなく、モノラル.wav
ファイルを作成しようとしました。どちらの方法でも、単一チャネルのオーディオ バッファを作成し、そのバッファを にロードしようとすると、プログラムが次のエラーでクラッシュすることがわかりました。Audacity
AVAudioPCMBuffer
AudioPlayerNode
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
私は、一般的に、またはオーディオデータを扱った経験がほとんどないと規定しています。あなたが提供できるどんな助けも大歓迎です。
swift - AVAudioPCMBuffer はプログラムで構築され、ステレオで再生されません
メトロノームを構築するために、Swift でプログラムで AVAudioPCMBuffer を埋めようとしています。これは私が構築しようとしている最初の実際のアプリであり、最初のオーディオ アプリでもあります。現在、メトロノームを正確にループさせるためのさまざまなフレームワークと方法を試しています。
AVAudioPlayerNode の scheduleBuffer メソッドの .Loops オプションを使用できるように、メジャー/バーの長さで AVAudioPCMBuffer を構築しようとしています。まず、ファイル (2 ch、44100 Hz、Float32、非インター、*.wav と *.m4a の両方に同じ問題があります) をバッファーにロードし、そのバッファー フレームを空のフレームで区切られたフレームごとに barBuffer にコピーします。以下のループは、私がこれを達成する方法です。
元のバッファを再生するようにスケジュールするとステレオで再生されますが、barBuffer をスケジュールすると左チャンネルしか取得できません。私がプログラミングの初心者であり、オーディオ プログラミングの経験がないと言ったように、これは 32 ビット フロート チャネルまたはこのデータ型に関する知識が不足している可能性がありますUnsafePointer<UnsafeMutablePointer<float>>
。floatChannelData プロパティを迅速に見ると、この説明では、2 つのチャネルをコピーする必要があるように聞こえます。
編集: i += 1
hotpaw2 のおかげで、明らかな間違いを削除しました。ただし、barBuffer が再生されると、右のチャネルはまだ失われています。
ios - ノードが既に AVAudioEngine にアタッチされているかどうかを確認します
AVAudioPlayer ノードを AVAudioEngine に正常に接続しました。ただし、これらのノードが既に接続されているかどうかを後で確認する必要があります (したがって、それらを再追加しません)。
エンジンに既にアタッチされているかどうかを確認できる特定のプロパティはありますか?
ios - AVAudioEngine がエラー !nodeimpl->HasEngineImpl()' でクラッシュする
エンジンにアタッチした AVAudioPlayerNode を再生した後、(CPU 使用率を抑えるため) デタッチします。ただし、その AVAudioPlayerNode をエンジンに再接続して再生しようとすると (以前の再生中に)、次のエラーでクラッシュします。
「必須条件が false: !nodeimpl->HasEngineImpl()」
これが何を言っているのか理解に苦しむ。
注: クラッシュは、前のサウンドの再生がまだ行われているときに AVAudiPlayerNode を再度再生しようとした場合にのみ発生します (たとえば、同じ AVAudioPlayerNode を介して同じサウンドを生成するボタンを 2 回続けてタップします)。
前の演奏が終わるのを待っていれば、クラッシュしません。
ios - AVAudioPlayerNode でファイルの終わりを検出する
Apple の AVFoundation を使用してオーディオ マルチトラック プレーヤーをセットアップしました。AVAudioEngine に接続された 9 つの AVAudioPlayerNodes を使用し、それらは正確に同時に再生されます。spriteKit では、私のゲーム シーンで、後続のコードを実行できるように、AVAudioPlayerNodes のいずれかでファイルの終わりを検出したいと考えています。それ、どうやったら出来るの?残念ながら、AVAudioPlayerNodes には、単純な AVAudioPlayer クラスと同じような便利な機能はありません。マルチトラック機能は次のとおりです。
ios - AVAudioFile はドキュメント ディレクトリからファイルを読み取ることができません
これはオーディオ ファイルを読み取ることができません。audioFile nil を返します。NSBundle から URL を渡すときと同じコードの場合
それは正常に動作します。ありがとうございました
ios - AVAudioEngine スケジュール サンプルの正確なパラメータ変更
AVAudioPlayerNode インスタンスと他の AUAudioUnits を組み合わせて EQ や圧縮などを使用してアプリを作成しようとしています。ただし、再生中に、ミキサーのゲインなどのパラメーターの変更を自動化して、変更が傾斜し (フェードアウトまたはフェードインなど)、変更がサンプルに正確であると確信できるようにしたいと考えています。
ノード(おそらくエンジンのミキサーノード)にタップを取り付け、その中で特定のユニットのゲインを調整することを検討した1つの解決策ですが、タップはユニットの出力にあるため、これを行うには常に遅すぎますオフセット計算を行わずに、ソースオーディオの再生を遅らせて、パラメーターの変更に合わせて、目的の効果(と思います)。scheduleParameterBlock
プロパティも見ましたAUAudioUnit
が、組み込みユニットを使用するのではなく、独自のカスタムユニットを実装してそれを利用する必要があるようです
WWDC セッション 508 : " ...スケジュールを実行するための最初の引数はサンプル時間です。Audio Unit がランプ可能であるとアドバタイズした場合、パラメーター値は時間の経過とともにランプすることができます。たとえば、Apple ミキサーはこれを行います。そして最後のもちろん、2 つのパラメーターは関数パラメーターで、変更するパラメーターのアドレスと新しいパラメーター値です...."
おそらくこれは、Apple Mixer が内部的にそれを使用することを意味し、ランプ可能な機能を利用できることを意味するわけではありません。この講演に添付されている Apple の例のようにカスタム オーディオ ユニットを実装する以外に、多くのドキュメントや例を見つけることができません。
私が見た他の潜在的な解決策にはNSTimer
、CADisplayLink
またはを使用することが含まれますdispatchAfter...
が、これらの解決策は、ユニットの出力に取り付けられたタップブロックからオフセットするよりも悪く、サンプルの精度が低くなります。
新しい AVAudioEngine API には他にも多くの意味をなす部分があり、古い AUGraph API ではサンプルの正確なシーケンシングとパラメーターの変更により多くのアクセスが許可されていたため、非常に明白な何かを見逃しているように感じます。
ios - AVAudioPlayerNode で stop を使用するとクリック/ポップ ノイズが発生する
ここで助けが必要です。OpenAL が IOS 9 でうまく動作しないように見えるため、IOS アプリ コードの一部を OpenAL から AVAudioEngine に変換しています。次の問題があります。AVAudioPlayerNode の停止メソッドを呼び出すと、非常に聞こえるクリック/ポップ ノイズが発生します。これは、デバイスとシミュレータで発生します。
念のため、別のオーディオ ファイルと形式で試してみましたが、それは問題ではありません。
何か案は?