問題タブ [avaudiopcmbuffer]
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.
swift - AVAudioPCMBuffer を NSData に変換して戻す
に変換する方法AVAudioPCMBuffer
はNSData
? として行う必要がある場合
では、どのように計算するのbufferLength
ですか?
に変換する方法NSData
はAVAudioPCMBuffer
?
ios - iOS (Swift) の AVAudioPlayerNode を介したバッファ再生での可聴グリッチ *シミュレーターでは機能しますが、デバイスでは機能しません
AVAudioPlayerNode を使用して短いバッファをスケジュールし、タッチ イベント ("Touch Up Inside") ですぐに再生する場合、テスト中に再生時に聞こえるグリッチ/アーティファクトに気付きました。iOS シミュレーターではオーディオにまったく問題はありませんが、実際の iOS デバイスでアプリを実行すると、再生時に歪みが聞こえます。可聴歪みはランダムに発生します (トリガーされたサウンドは、素晴らしいサウンドになることもあれば、歪んだサウンドになることもあります)。
さまざまなオーディオ ファイル、ファイル形式を使用して、prepareWithFrameCount メソッドを使用して再生用のバッファーを準備しようとしましたが、残念ながら結果は常に同じで、何が問題なのか疑問に思っています..
わかりやすくシンプルにするために、コードをグローバルに落としました。どんな助けや洞察も大歓迎です。これは、iOS アプリを開発する最初の試みであり、スタック オーバーフローに投稿された最初の質問です。
アップデート:
歪みの原因を特定できたと思います。出力時のノードのボリュームが大きすぎて、クリッピングが発生しています。私の startEngine 関数に次の 2 行を追加することで、歪みは発生しなくなりました。
ただし、出力を下げる必要がある理由はまだわかりません。オーディオ ファイル自体はクリップしません。AVAudioPlayerNodeBufferOptions.Interrupts が実装されている方法の結果である可能性があると推測しています。バッファが別のバッファを中断すると、中断の結果として出力ボリュームが増加し、出力クリッピングが発生する可能性がありますか? なぜこれが発生するのかについて、私はまだしっかりとした理解を求めています..誰かがこれについて明確にする意思がある/できるなら、それは素晴らしいことです!
objective-c - 音楽ファイルの AVAudioPCMBuffer
SpriteKit ゲームで音楽を再生しようとしていて、AVAudioPlayerNode
クラスを使用してAVAudioPCMBuffer
s. OS X プロジェクトをエクスポートするたびにクラッシュし、オーディオ再生に関するエラーが発生しました。過去 24 時間頭を壁にぶつけた後、WWDC セッション 501 (54:17 を参照) をもう一度見ることにしました。この問題に対する私の解決策は、プレゼンターが使用したものでした。これは、バッファーのフレームを小さな断片に分割して、読み取られているオーディオ ファイルを分割することです。
私の現在の問題は、プレーヤーがバッファに読み込まれた最後のフレームのみを再生することです。私が演奏している音楽の長さはわずか 2 分です。どうやら、これはバッファに完全に読み込むには長すぎます。readIntoBuffer:
メソッドがループ内で呼び出されるたびにバッファが上書きされていますか? 私はこのようなことにとても慣れていません...どうすればファイル全体を再生できますか?
これを機能させることができない場合、複数SKScene
の で音楽 (2 つの異なるファイル) を再生する良い方法は何ですか?
ios - audioFile から無音を削除する方法
AVAudioEngine を使用してオーディオ ファイルを録音しました。
次に、そのファイルのサンプルを取得して、ファイルの最初と最後にある無音部分を削除します。ファイルを読み取るためにバッファを使用しています:
次に、audioFile のサンプルの float 値にアクセスしようとしています。
I NSLog sampleLevel が常に 0.0 を返す場合。私は何を間違っていますか?audioFile のサンプルを正しい方法で取得していますか、それともここで完全に間違っていますか?
ios - モノ AVAudioPCMBuffer をステレオ AVAudioFile に書き込む
AVAudioEngine を使用してオーディオを録音し、サウンド ファイルとして保存しています。
ユーザーは音声ファイルのインポートを選択でき、必要に応じてこのファイルの最後に録音を続けることができます。インポートしたファイルからオーディオ データを取得して AVAudioPCMBuffer に読み込み、それを録音先のファイルに書き込みます。インポートされたファイルがステレオの場合、これはうまく機能します (書き込んでいるファイルもステレオであるため)。しかし、インポートされたファイルがモノラルの場合、AVAudioPCMBuffer をファイルに書き込もうとすると、単にチャンネル数が一致しないためにコードがクラッシュします。
processingFormat をステレオに設定して、モノ AVAudioPCMBuffer を av AVAudioFile に読み込むことは可能ですか? バッファをステレオに変換できますか?
インポートしたファイルからオーディオ バッファを取得する方法の例を次に示します。
そして、これは私が AVAudioEngine を使用して書き込んでいる AVAudioFile を作成する場所です:
最後に、オーディオ バッファをファイルに書き込む方法は次のとおりです。
オーディオをステレオに変換すると、すべてが機能します。
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 が再生されると、右のチャネルはまだ失われています。