問題タブ [audioqueue]
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 - プライムが失敗しました('nope'); 停止します(1/5925フレーム)
オーディオキューを開始すると、オーディオを再生できますが、プレーヤーの進行状況を手動で変更すると、AudioQueuePrimeが失敗し、Primeの出力が失敗します(「nope」)。は停止し(1/5925フレーム)、返されるエラーコードは1852797029ですが、次のAudioQueueStartは成功するため、プレーヤーは動作し、AudioQueuePrimeだけが失敗することがあります。なぜ?
objective-c - AudioQueue からオーディオをリアルタイムで再生できますか?
マイクからオーディオを取得し、tcp 接続を使用して他のデバイスに渡す必要があります。AudioQueue から AudioBuffer を再生できるかどうかはわかりません。
現在、私は以下のコードでバッファを取得しています:
このブロックは、mAudioData を NSData にプッシュするだけです。NSData は、デバイス間でデータを転送するための重要なデータ型です。
この mAudioData を他のデバイスで実行する方法がわかりません。その他のことは、オーディオを継続的に取得する方法です。すべてのバッファーがいっぱいになると、データを受信しなくなり、バッファーをクリーンアップする必要があると思います。
どんなアイデアでも大歓迎です、ありがとう!
objective-c - Objective-C - ストリーミング データを Audio Queue に渡す
私は現在、iOS で IMA-ADPCM オーディオ データを TCP ソケット経由で読み取り、それを PCM に変換してストリームを再生するアプリを開発しています。この段階で、ストリームからデータをプルする (プッシュに反応すると言うべきか) クラスを完成させ、それを PCM にデコードしました。また、Audio Queue クラスをセットアップし、テスト トーンを再生します。サポートが必要なのは、Audio Queue にデータを渡す最善の方法です。
オーディオ データは、ADPCM デコーダーから 8 Khz 16 ビット LPCM として 1 チャンク 640 バイトで出力されます。(元は 160 バイトの ADPCM データですが、640 バイトに解凍されます)。これは uint_8t 配列として関数に入り、NSData オブジェクトを渡します。ストリームは「プッシュ」ストリームであるため、オーディオが送信されるたびにオブジェクトが作成/フラッシュされます。
Audio Queue コールバックはもちろん、実行ループの各パスでデータを検索するプル関数です。実行される各パスで:
私はこれに数日間取り組んできましたが、PCM 変換は非常に負担が大きく、2 つの間のデータを橋渡しする最善の方法を頭の中で組み立てるのに少し苦労しています。データを作成しているわけではありません。データがプッシュされているのではなく、単純にデータ作成を fillbuffer ルーチンに組み込むことができます。
uint16_t[] で 0.5 秒の循環バッファーをセットアップしました ~ しかし、脳が疲れ果てており、バッファーからプッシュおよびプルする適切な方法を見つけることができなかったと思います。 .
私は主に Android でプロジェクトを完了しましたが、AudioTrack は Core-Audio Queues とはまったく異なる獣であることがわかりました。
この段階で、Adamson と Avila による Learning Core Audio のコピーを手に取り、これがコア オーディオの謎を解こうとしている人にとって優れたリソースであることがわかったと言いたいと思います。
更新: バッファ管理コードは次のとおりです。
私が言ったように、私がこれを書いたとき、私の脳はぼんやりしていました。
上記のコードは、コールバックによって呼び出されます。
convAudio配列側では、ログに記録するためにそれをダンプしましたが、循環的にいっぱいになり、再いっぱいになっているので、少なくともそのビットが機能していることがわかります。
ios - リモート IO を使用して設定された長さのメトロノームに対して録音する
私は avaudioplayer と avaudiorecorder に必要な正確な機能を作成することができましたが、もちろん遅延の問題が発生しました。したがって、Web 上のほぼすべての記事を読み、サンプル コードのスタックを確認した後でも、次のことを実現する方法がわかりません。
- ユーザーは、プリロール/カウントインを使用して、長さ 2 小節 (小節あたり 4 ビート) のサンプルを録音することを選択します。
- ユーザーのクリック数の記録
- 4拍でカウントするメトロノームがスタート(アクセントは1拍目)
- アプリは次のバーの開始時に自動的に記録を開始します
- アプリは、3 小節目 (2 小節 + プレロール) の終わりに録音を自動的にオフにします。
- その後、ユーザーは録音を再生するか、削除してからやり直すことができます。
そのため、avaudioplayer と avaudiorecorder を使用して、正しい bpm に設定されたメトロノームを使用して audacity を使用して「カフェ」を作成しました (bpm はアプリに設定されています)。次に、avaudioplayer をセットアップして再生し、audiodidfinishsuccessfully デリゲート メソッドを使用して、レコーダーの開始、プレーヤーの再起動、ループ カウントの維持などのロジックを実行して、録音とオーディオをオフにしました。
前述したように、求めているユーザー エクスペリエンスをほぼ実現できましたが、遅延の問題は受け入れられません。
私はオーディオ ユニットとリモート IO を使用しており、再生コールバックとレコーダー コールバックなどを使用してプロジェクトをセットアップしましたが、上記の説明に基づいてこれを機能させる方法の問題に直面しています。手始めに、次のことを解決しようとしています。
- 1 ビートの caf ファイルを作成する場合、オーディオ ユニットとリモート IO を使用して x のビート数を再生してから停止するにはどうすればよいですか?
- プリロールを実行して、4 ビート後に録音コールバックを開始するにはどうすればよいですか
誰かが私にいくつかのアイデアを与えたり、正しい方向に向けたりすることはできますか? すでに述べたように、コア オーディオ ブックの購入、atastypixel.com、timbolstad.com などのすべての記事の読み取り、Apple ドキュメントのトロールなど、さまざまな調査を既に行っています。
よろしくお願いします。
nstimer - Iphone SDK の Audio Queues を使用して .wav ファイルを再生する方法
私はiosアプリケーション開発に不慣れです.現在、正確なタイミングが必要な音楽プロジェクトに取り組んでいます.そのため、Audio Queue APIを使用して.wav形式のメインバンドルにあるサウンドファイルを再生することにしました. 2週間経ちましたが、これに苦労しています。誰かこの問題を解決してください。
誰かがこのためのサンプルコードを送ってくれたら、それは私にとって大きな助けになるでしょう.
ありがとうございました...
nsdate - 曲のビートの正確なタイミングを見つけるために Audio Queue API で曲を再生する方法
現在、正確なタイミングが必要な音楽プロジェクトに取り組んでいます。すでに NSTimer、NSdate を使用していますが、ビート (ビート、つまりtik tok ) の再生中に遅延が発生するため、Audio Queue API を使用してサウンド ファイルを再生することにしました。 .wav 形式のメイン バンドルに含まれています。2 週間この問題に取り組んでいます。誰かこの問題を解決してください。
iphone - AudioQueue 録音オーディオ サンプル
私は現在、iPhone のマイクからオーディオを読み取り、いくつかの処理とビジュアルを行うアプリケーションを構築中です。もちろん、最初はオーディオから始めていますが、小さな問題が 1 つあります。
サンプリング レートを 44100 Hz に定義し、バッファを 4096 サンプルを保持するように定義しています。どちらがそうです。ただし、このデータを印刷して MATLAB にコピーし、精度を再確認します。使用する必要があるサンプル レートは、iPhone で定義したレートの半分、つまり 22050 Hz です。
次のコードと、パケットごとに 2 バイトを配置する方法と関係があると思います。バッファをループすると、バッファはパケット全体を吐き出します。これは私のコードでは単一の数値であると想定されています。そこで気になるのは、どうやってそれらのパケットを分割して個々の番号として読み取るかということです。
私が説明したことが不明な場合は、お知らせください。ありがとう!
編集
データの印刷に使用したコードを追加する
ios - AudioQueueを停止する方法は?
テキスト読み上げを使用しています。音声の開始は正常に機能しますが、停止できません。これが私がオーディオを始める方法です:
合成InBackground
合成する
AudioQueueCallback
AudioQueuePropertyListener
他のメソッド(UIAlertViewデリゲートメソッド)で停止しようとしています:
すべての操作をキャンセルしてAudioQueueDisposeを呼び出しています。これもAudioQueueStopで試しましたが、ここでは何も機能しません。
だから私の質問は、どうすればここでオーディオを停止できますか?
core-audio - Core Audio のミリ秒未満の遅延
Core Audio を使用してサブミリ秒のレイテンシーでサウンドを再生することは可能ですか?
さまざまなサイズと数のバッファーで AudioQueues を使用してみました。また、AudioUnits を使用してみましたが、30 ミリ秒未満のレイテンシーを実現できませんでした。
オシロスコープを使用して、Arduino のプッシュボタンが押されてからオーディオ ジャックから音が出るまでの時間を測定しています。Arduino 通信が 1 ミリ秒を超える遅延を引き起こすことはありません。
ios - speakhere の例から AQRecorder を使用する方法
speakHere の例から AQRecorder をコピーし、その他の必要なファイルをすべてコピーしました。その後、コンパイル エラーが発生したため、それを使用するチェーン内のクラスの名前を .mm に変更しましたが、これは現在解決されているようです。ただし、 AQRecorder クラスの使用方法はまだわかりません。その例には SpeakHereController という別のクラスがありますが、それも機能しませんでした。私の最近の試みのコードは次のとおりです。
エラー: レシーバーのタイプ「AQRecorder」が正しくありません
これがコンストラクターを呼び出さないといういくつかの理由で機能しないことはわかっています。また、これはポインターであるべきだと思います。私にはさまざまなバリエーションがあり、前述のように、SpeakHereController も使用してみました。
ただし、これによりエラーが発生します。
アーキテクチャ i386 の未定義シンボル: "AQPlayer::StopQueue()"、参照元: -[SpeakHereController stopPlayQueue] in SpeakHereController.o
「AQPlayer::PauseQueue()」、次から参照: -[SpeakHereController pausePlayQueue] in SpeakHereController.o
「AQPlayer::DisposeQueue(unsigned char)」、参照元: -[SpeakHereController stopRecord] in SpeakHereController.o
「AQPlayer::CreateQueueForFile(__CFString const*)」、次から参照: -[SpeakHereController stopRecord] in SpeakHereController.o
「AQPlayer::StartQueue(signed char)」、次から参照: -[SpeakHereController play:] SpeakHereController.o 内の
「AQPlayer::AQPlayer()」、次から参照: -[SpeakHereController awakeFromNib] in SpeakHereController.o
「AQPlayer::~AQPlayer()」、次から参照: -[SpeakHereController dealloc] in SpeakHereController.o