問題タブ [audiounit]

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 に答える
171 参照

ios - AudioGraph に固定ゲインを追加するにはどうすればよいですか?

AudioGraph 内で固定ゲインを適用できる AudioUnit はありますか? 他の代替方法はありますか?

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

ios - RemoteIO によるバーチャル インストゥルメント アプリのレコーディング機能

私はiOS用の仮想楽器アプリを開発しており、ユーザーが楽器で作った音楽をアプリが録音および再生できるように録音機能を実装しようとしています。私は現在、OpenAL に基づいた CocosDenshion サウンド エンジンを使用しています (フェードなどを含む独自のハックがいくつかあります)。ネットで調べたところ、次の 2 つの選択肢があるようです。

  1. アプリがサウンドを再現できるように、ユーザーの入力 (つまり、どのノートがどの音量で再生されたか) の記録を保持します (ただし、これは共有/電子メールで送信することはできません)。
  2. AudioUnits & 具体的には RemoteIO を使用して独自の低レベル サウンド エンジンをハックし、すべてのサウンドを手動でミックスして最終出力バッファーを手動で入力し、そのバッファーをファイルに保存できるようにします。メールなどで共有できるようになります。

出力バッファをレンダリングするための RemoteIO コールバックを実装しましたが、バッファ内の以前に再生されたデータが得られることを期待していますが、残念ながらバッファは常にすべて 00 です。

私の質問は次のとおりです。上記のオプション 2 よりも、アプリがスピーカーに送信しているものを盗聴/聞く簡単な方法はありますか?

よろしくお願いします。

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

c++ - AudioUnit の入力バッファ構造

ステレオ ソースの左右のチャンネルを交換する単純な audiounit を作成しました。このコードの移植バージョンは、BASS ライブラリを使用するコマンドライン プログラムでは C で問題なく動作しましたが、同じコードをオーディオ ユニットの Xcode で動作させるのに問題があります。

たとえば、{1, 2, 3, 4, 5, 6} のバッファ入力の場合、ステレオ反転は {2, 1, 4, 3, 6, 5} であると予想されます。

私のコードは、この方法でサンプルを正しく反転しますが、サンプルのステレオ反転ではなく、ある種のローパス フィルタリングしか聞こえません。

入力バッファの最初の 4 つの値は次のとおりです。 0.000104 0.000101 0.000080 0.000113

出力は次のとおりです。 0.000101 0.000104 0.000113 0.000080

入力/出力バッファの構造について何か誤解していませんか?

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

ios - ステレオAudioBufferを適切に埋める方法

そのため、AppleのMixerHostサンプルコードを使用して、ステレオ合成の基本的なオーディオグラフのセットアップを行っています。バッファスライスをどのように埋める必要があるかを理解するのに問題があります。具体的には、左チャンネルでのみ音声を出力し、右チャンネルは無音です。

これは左チャンネルで正弦波を再生します...ピッチの種類は10秒ごとに変化します。これは、私が間違っていることを示すもう1つの指標です:]

アレイをステップスルーする他の方法を試しました。これにより、正弦波信号とはほど遠い興味深いサウンドが生成されました。ある時点で、両方のチャンネルでグリッチ/途切れ途切れの出力がありましたが、これは成功のようなものでした。

AudioBuffer構造体を調べると、2つのチャネルがあり、フレームあたりのバイトサイズは4であることが確認されます。つまり、フレームごとに2つのSInt16があります。1つは左チャネル用、もう1つは右チャネル用です..そしてそれらはインターリーブされることになっていますか?

固定小数点演算がわからないため、Appleの例とは異なるストリーム形式を使用していることに注意してください。

ストリーム形式は次のように設定されます。

だから私の質問は、上記のように設定されたステレオバッファをデータで満たして、それが正しく機能するようにするにはどうすればよいですか?

ありがとう!

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

iphone - Springboardから戻った後にユニバーサルスキップを引き起こすAudioUnits

AudioUnitsを使用しているアプリケーションで問題が発生しました。すべてのアプリケーションオーディオ(AudioUnitsで再生されないオーディオを含む)は、Springboardを終了してアプリケーションに戻った後、スキップを開始します。

私は問題を新しい別のテストアプリに分解しました。これを繰り返す手順は次のとおりです。

  • AVAudioPlayerを使用してオーディオファイルの再生を開始します。
  • 作成、削除、そしてもう一度AudioUnitを作成する
  • 踏み台に出る
  • アプリに戻る
  • AvAudioPlayerからのオーディオはスキップを開始します

これが私が使用したコードの一部です:

長いコードダンプは許してください。ただし、AudioUnitsは複雑であり、正しく設定または削除しているだけだと確信しています。

MySoundStreamクラス:

私がこのAudioUnitで間違っていることを誰かが見ることができれば、それは非常に役に立ちます。

編集:完全なソースをアップロードします。ここ

  1. Play Soundを押します(ヘッドフォンが必要な場合があります)
  2. ResetAudioUnitを押します
  3. 踏み台に戻る
  4. TestAudioUnitアプリを再入力してください

オーディオはスキップされます

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

iphone - AUMixer 後の RemoteIO コールバック

aumixer が完了した後に RemoteIO にコールバックを実装する正しい方法は何ですか。

私が使用する場合;

結果 = AUGraphSetNodeInputCallback(mGraph, outputNode,1, &remoteIOCallback);

それは私の関数を呼び出しません

私が使用する場合..

結果 = AudioUnitSetProperty(mIONode, kAudioOutputUnitProperty_SetInputCallback, kAudioUnitScope_Input, 1 , &remoteIOCallback, sizeof(remoteIOCallback));

コールバックを呼び出しますが、ioDataへのポインターを作成しようとすると

AudioSampleType *inData = (AudioSampleType *) ioData->mBuffers[0].mData;

クラッシュします。

問題がまったく見えません。これはバッファに問題がありますか? しかし、バッファには何も割り当てていません。バッファへのポインタだけです。

乾杯

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

iphone - iPhone:iPodのサウンドの上にサウンドを再生する方法は?

iPodの音楽の上でサウンドを再生しようとしていますが、アプリに入るとiPodのサウンドが自動的に消音されます。私は試した:

しかし、おそらくRemoteIO / Audio Unitsを使用してサウンドを再生しているため、これは効果がありません(それが原因かどうかはわかりませんが、何も起こらないことは確かです...サウンドはまだ停止します)

私は何かが足りないのですか?

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

iphone - AVAssetReaderを開始して、リモートI /OAudioUnitへのコールバックを停止します

AVAssetReaderを使用してiPodライブラリからオーディオを読み取ります。(ここを参照)次に、読み取りバッファーを取得して、AudioUnitを介して再生します。オーディオを再生するときに、コードを屈折させてオーディオにストリーミングしようとしています。ただし、AVAssetReaderが実行されている場合、AudioUnitはkAudioUnitProperty_SetRenderCallbackへの呼び出しの受信を停止します。

AudioUnitsコールバック内のファイルのみを再生するようにコードを簡略化しました...

次に、このコードを呼び出すと、AudioUnitの再生が停止し、UnitRenderCBは呼び出されなくなります。

ここにリストされているのと同じAudioUnitセットアップを使用しています

AVAssetReaderはAudioUnitシステムを使用していますか?それらを一緒に動作させる方法はありませんか?

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

ios - iPod ライブラリ アセットを Audio Queue Service に接続し、Audio Unit で処理するにはどうすればよいでしょうか?

iPod ライブラリからのオーディオを処理する必要があります。iPod ライブラリのアセットを読み取る唯一の方法は、AVAssetReader です。Audio Unit でオーディオを処理するには、ステレオ形式である必要があるため、左右のチャンネルの値を取得します。しかし、AVAssetReader を使用して iPod ライブラリからアセットを読み取ると、ステレオ フォーマットで取得できません。左右のオーディオ チャンネルに分割する方法がわからないインターリーブ形式で出力されます。

必要な場所に到達するには、次のいずれかを実行する必要があります。

  1. AVAssetReader を取得して、ステレオ形式の AudioBufferList を取得します
  2. インターリーブされたデータを非インターリーブに変換して、必要なステレオ出力を取得します
  3. Audio Queue Services を介して送信し、自動バッファリングで必要なものを取得します

既存のパブリック API でできることと、iPod ライブラリ アセットを読み取るときに AVAssetReader がサポートすることによって制限されているようです。あなたならどうしますか?Audio Unit で処理する必要があるものを取得するにはどうすればよいですか?

私が持っているもう 1 つの制限は、メモリがいっぱいになり、アプリがクラッシュするため、一度に曲全体を読み取ることができないことです。これが、Audio Queue Services を使用したい理由です。iPod ライブラリのアセットをステレオ形式のストリームとして扱うことができれば、すべての要件が満たされます。

これもできますか?これがどのように行われるかを説明するドキュメント、ブログ、または記事はどこかにありますか?

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

ios - AudioUnitInitialize がエラー コード 1852008051 で失敗しました

iOS の Audio Unit で録音しようとしています。
AudioComponentDescription の componentSubType をkAudioUnitSubType_VoiceProcessingIOに設定しました。
その場合、AudioUnitInitialize と AudioOutputUnitStart のエラー コードは両方とも1852008051('ncfs')です。
ドキュメントにこのエラー コードが見つかりません。
しかし、kAudioUnitSubType_VoiceProcessingIOkAudioUnitSubType_RemoteIOにすると、すべて問題ありません。
VoiceProcessingIO から RemoteIO に変更するときに何を変更する必要があるか教えてもらえますか?