問題タブ [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.
iphone - iPhone のサウンドのライブ更新に関するヘルプ
私の質問は少しトリッキーで、私は正確には経験がありません (いくつかの用語が間違っている可能性があります)。「Singer」というオブジェクトのインスタンスを宣言しています。インスタンスは「singer1」と呼ばれます。「singer1」は音声信号を生成します。以下は、オーディオ信号の詳細が決定されるコードです。
}
これの 99% は借用したコードなので、私はそれがどのように機能するかについての基本的な理解しか持っていません (OSStatus クラスやメソッド、またはこれが何であるかについては知りません。しかし、600、400、200 の 4 行が表示されます。それらの 100? それらは周波数を決定します. 今、私が (今のところ) やりたいことは、気まぐれで変更できる定数の代わりに独自の変数をそこに挿入することです. この変数は "fr1" と呼ばれます. fr1" はヘッダー ファイルで宣言されていますが、コンパイルしようとすると、"fr1" が宣言されていないというエラーが表示されます。現在、これを修正するための私の手法は次のとおりです。#import のすぐ下に次の行を追加します。
コードがコンパイルされ、singer1.fr1 が実際に値を変更するように指示すると、この種の作業が行われます。問題は次のとおりです。A)これはコンパイルされ、指定されたトーンが再生されますが (0.0 はトーンではありません)、「データ定義に型またはストレージ クラスがありません」および「宣言の型のデフォルトは 'int' です」という警告が表示されます。 'fr1'". これは、何らかの理由で、以前の宣言がヘッダー ファイルに (float として) 表示されないためだと思います。ただし、この行を省略すると、「fr1 が宣言されていない」ため、コードはコンパイルされません。B) fr1 の値を変更したからといって、singer1 が「playbackcallback」変数内に格納されている値または出力バッファーの更新を担当するものを更新するわけではありません。おそらく、これは別のコーディングで修正できますか?C)これが機能したとしても、オーディオを一時停止/再生するときにまだ顕著な「ギャップ」があり、これを排除する必要があります. これは、何も中断することなく新しい値を「動的に」挿入できるように、コードを完全にオーバーホールすることを意味する場合があります。ただし、投稿するためにこのすべての努力を行っている理由は、この方法がまさに私が望むことを行うためです (値を数学的に計算でき、DAC に直接送られます。つまり、将来それを使用して三角形を作成できることを意味します)。 、正方形などの波が簡単に)。私は Singer.h と .m をペーストビンにアップロードしました。申し訳ありませんが、2 つの HTML タグを投稿できないため、ここに完全なリンクを示します。(http://pastebin.com/ewhKW2Tk) (http://pastebin.com/CNAT4gFv) オーディオを一時停止/再生するとき、これを排除する必要があります。これは、何も中断することなく新しい値を「動的に」挿入できるように、コードを完全にオーバーホールすることを意味する場合があります。ただし、投稿するためにこのすべての努力を行っている理由は、この方法がまさに私が望むことを行うためです (値を数学的に計算でき、DAC に直接送られます。つまり、将来それを使用して三角形を作成できることを意味します)。 、正方形などの波が簡単に)。私は Singer.h と .m をペーストビンにアップロードしました。申し訳ありませんが、2 つの HTML タグを投稿できないため、ここに完全なリンクを示します。(http://pastebin.com/ewhKW2Tk) (http://pastebin.com/CNAT4gFv) オーディオを一時停止/再生するとき、これを排除する必要があります。これは、何も中断することなく新しい値を「動的に」挿入できるように、コードを完全にオーバーホールすることを意味する場合があります。ただし、投稿するためにこのすべての努力を行っている理由は、この方法がまさに私が望むことを行うためです (値を数学的に計算でき、DAC に直接送られます。つまり、将来それを使用して三角形を作成できることを意味します)。 、正方形などの波が簡単に)。私は Singer.h と .m をペーストビンにアップロードしました。申し訳ありませんが、2 つの HTML タグを投稿できないため、ここに完全なリンクを示します。(http://pastebin.com/ewhKW2Tk) (http://pastebin.com/CNAT4gFv) 何も中断せずに新しい値を挿入します。ただし、投稿するためにこのすべての努力を行っている理由は、この方法がまさに私が望むことを行うためです (値を数学的に計算でき、DAC に直接送られます。つまり、将来それを使用して三角形を作成できることを意味します)。 、正方形などの波が簡単に)。私は Singer.h と .m をペーストビンにアップロードしました。申し訳ありませんが、2 つの HTML タグを投稿できないため、ここに完全なリンクを示します。(http://pastebin.com/ewhKW2Tk) (http://pastebin.com/CNAT4gFv) 何も中断せずに新しい値を挿入します。ただし、投稿するためにこのすべての努力を行っている理由は、この方法がまさに私が望むことを行うためです (値を数学的に計算でき、DAC に直接送られます。つまり、将来それを使用して三角形を作成できることを意味します)。 、正方形などの波が簡単に)。私は Singer.h と .m をペーストビンにアップロードしました。申し訳ありませんが、2 つの HTML タグを投稿できないため、ここに完全なリンクを示します。(http://pastebin.com/ewhKW2Tk) (http://pastebin.com/CNAT4gFv) あなたの楽しみのためにpastebinにmしてください、おそらく彼らは助けになるでしょう. 申し訳ありませんが、2 つの HTML タグを投稿できないため、ここに完全なリンクを示します。(http://pastebin.com/ewhKW2Tk) (http://pastebin.com/CNAT4gFv) あなたの楽しみのためにpastebinにmしてください、おそらく彼らは助けになるでしょう. 申し訳ありませんが、2 つの HTML タグを投稿できないため、ここに完全なリンクを示します。(http://pastebin.com/ewhKW2Tk) (http://pastebin.com/CNAT4gFv)
TL;DR、私が本当にやりたいことは、4 つの波の現在の方程式/値を定義し、サウンドにギャップがないように頻繁に再定義できるようにすることです。ありがとう。(そして、投稿が混乱したり、軌道から外れていたりした場合は申し訳ありませんが、そうであったと確信しています。)
iphone - RemoteIOオーディオの問題-シミュレーター=良い-デバイス=悪い
OK、コアオーディオを使用して10の異なるサンプルソースからオーディオを抽出し、コールバック関数でそれらをミキシングしています。
シミュレーターで完璧に動作し、すべてが順調でした。しかし、4.2iphoneデバイスで実行しようとすると問題が発生しました。
コールバックで2つのオーディオファイルをミックスすれば、すべて問題ありません。5つまたは6つのオーディオファイルをミキシングすると、オーディオは再生されますが、しばらくするとオーディオが劣化し、最終的にはオーディオがスピーカーに送られなくなります。(コールバックは停止しません)。
10個のオーディオファイルをミックスしようとすると、コールバックは実行されますが、オーディオがまったく出力されません。
コールバックが時間切れになっているようです。これは、5または6をミキシングする場合を説明するかもしれませんが、オーディオがまったく再生されない10のオーディオソースをミキシングする最後のケースについては説明しません。
次の内容に関係があるかどうかはわかりませんが、デバッグ中は常にこのメッセージがコンソールに出力されます。これは、問題が何であるかについての何らかの兆候でしょうか?
**コールバックを設定します**
コールバック
オーディオフェッチ機能
編集1
@andreに応答して、コールバックを次のように変更しましたが、それでも役に立ちませんでした。
iphone - リモートI/O、AudioUnitRender-50リターンコードを使用した録音
iOS用の周波数検出アプリケーションに取り組んでいますが、ユーザー定義のAudioBufferListにマイクからのオーディオサンプルを入力する際に問題が発生します。
InputCallbackメソッドでAudioUnitRenderを呼び出すと、戻りコード-50が返されます。これは、私のパラメータの1つが無効であることを意味すると思います。AudioBufferListだと思いますが、何が悪いのかわかりません。ASBDで指定したデータ形式と一致するように設定したと思います。
以下は、間違っている可能性があると思われるリモートI/Oのセットアップと関数呼び出しです。
ASBD:
InputCallback宣言:
AudioBufferList宣言:
InputCallback関数:
注意すべきいくつかのこと:
- サンプルレート=22050Hz
- リモートI/Oデータの標準形式は8.24ビットの固定小数点であるため、サンプルはそれぞれ32ビット(または4バイト)であると想定しています。unsigned intは4バイトなので、これを使用してオーディオバッファを割り当てています。
- 入力のみではなくPassThruとしてオーディオデータフローを実装すると、オーディオを正しくレンダリングするための同じコードを取得できます。
- リモートI/Oに関するMichaelTysonのブログ投稿はすでに見ました。私がしていることと違うものは何も見られませんでした。
もう一度ありがとう、あなたはすべて素晴らしいです!
デメトリ
macos - コマンド ラインから AudioUnits を制御しますか?
AudioUnit パラメータを変更するためのコマンド ライン (またはその他のスクリプト) ユーティリティを提供する make 用のソフトウェアはありますか?
ユースケースは次のとおりです。
- デフォルト (組み込み) 入力
- より良い Gain Control AudioUnit を取り付けます (デフォルトの OS-X ゲイン コントロールでは不十分です)
- LR バランス コントロール (または「パン」) を取り付ける
- デフォルト出力へのパススルー (リンク) 別名 LineIn.app
- AudioUnit のスクリプト制御 2)。入力オーディオの 0 ~ 100% のボリューム コントロール用。OS-X のメインボリュームと同様に 1/16 刻み (6.5%) で。
- LR バランス(パン)制御用の AudioUnit 3) のスクリプト制御。
ここでの問題は、ステップ 5 と 6 にあります。
ステップ 1) から 4) までは、AudioHijackPro でグラフィカルに適切に実行できます。そこにパススルーとオーディオユニットを作成できます。また、非常に優れたゲイン コントロール ダイヤル/ノブも付属しています。ただし、これらの効果はすべて、GUI インターフェイスを介してのみ設定されます。
パラメータ値を設定し、設定パラメータ C api 関数を使用してこれらのオーディオ ユニットに送信できるコマンド ライン ツール (または「オーディオ ユニット ホスト」) を必死に探しています。
この種の機能を提供する Mac 上の既存のツールはありますか?
iphone - 基本的なシステム提供のオーディオユニットの実装
誰かが私にシステム提供のオーディオユニットの1つの簡単な実装を投稿または指示してくれるなら、私はそれが大好きです。iOSでAUPitchを使用したいと思っています(iPhoneはそのユニットもサポートしていますか?)。使用方法の簡単な説明はないようです。
前もって感謝します、
mIL3S
ios - コーデックにアクセスできませんでした。(-66672)
AudioUnitを使用してcafファイルをm4aファイルに変換しようとしています。変換するコードを実装しました。アプリケーションを実行しようとすると、次のエラーメッセージが表示されます。
次のリンクからサンプルコードを入手しました。
http://developer.apple.com/library/ios/#samplecode/iPhoneExtAudioFileConvertTest/Introduction/Intro.html
コード:
p>私はそれに対する解決策を得ていません。プロパティを出力ファイルに設定するように試しました。しかし、私は同じ問題を抱えています。
それを解決するのを手伝ってください。
iphone - 「真の」空間化で動作するiPhoneで3DMixerを持っている人はいますか?
iPhoneの3D Mixerをいじっていますが、サラウンドサウンドにHRTFの効果を与えることができないようです。このオーディオユニットで運が良くなった人はいますか...
iphone - オーディオコールバックスレッドのメモリリーク(iOS)
私のアプリには、RemoteIOAudioUnitフレームワークによって呼び出されるオーディオ録音コールバックがあります。AudioUnitは、メインスレッドとは異なるスレッドでコールバックを呼び出すため、自動解放プールはありません。このコールバックでは、次のことを行います。
- 記録されたサンプルにバッファーを割り当てます。
AudioUnitRender
このバッファをいっぱいにするために呼び出します。- を使用してログ用のファイルを開きます
freopen
。 - オーディオ処理メソッドを呼び出します。
- オーディオに応じて、
performSelectorOnMainThread
(View Controllerに送信される)を使用して、メインスレッドのUIを更新します。
さらに、オーディオセッションが初期化される前、つまりオーディオコールバックが初めて呼び出される前に、ViewControllerでtestFilter()
呼び出すベンチマークを実行するという関数があります。viewDidLoad
この関数では、(malloc / freeを使用して)バッファーを割り当て、上記と同じオーディオ処理メソッドを呼び出します。
ここで、問題は(シミュレータではなく、デバイス上で)次のとおりです。
- の呼び出しをコメントアウトすると、
testFilter()
メモリリーク関連のメッセージは表示されません。 - を呼び出すと
testFilter()
、オーディオコールバック内から一連のメッセージを取得し始めます(最初の5つのメッセージはtestFilter()
メソッドからのログです)。
2011-01-20 23:05:10.358 TimeKeeper [389:307]バッファを初期化しています...
2011-01-20 23:05:10.693 TimeKeeper [389:307]完了...
2011-01-20 23:05:10.696 TimeKeeper [389:307]処理バッファ..
2011-01-20 23:05:15.772 TimeKeeper [389:307]完了...
2011-01-20 23:05:15.775 TimeKeeper [389:307]経過時間5.073843
2011-01-20 23:05:16.319 TimeKeeper [389:660f] * __NSAutoreleaseNoPool():クラス__NSCFDataのオブジェクト0x137330が、プールが配置されていない状態で自動リリースされました-リークしているだけです
2011-01-20 23:05:16.327 TimeKeeper [389:660f] * __NSAutoreleaseNoPool():クラス__NSCFDataのオブジェクト0x1373a0が、プールが配置されていない状態で自動リリースされました-リークしているだけです
等々。ログに示されているように、コールバックには別のスレッドがあります。
オーディオセッションが初期化される前に呼び出されて終了した関数を呼び出した場合にのみ、これらの警告が発生するのはなぜですか?リークを検出するにはどうすればよいですか?
付録
関連する方法:
と:
iphone - iPhoneでAudioUnitストリームを分割する
私は、オーディオ入力を介して、いくつかのセンサー信号を1つの信号にまとめて変調し、iPhoneに取り込む手段を開発しています。私はいくつかのことをする必要があります:
- これらの信号を入力信号から簡単なフィルターチェーンを介して復調し、さらに処理するためにそれぞれを独自の信号パスに出力します。これはリアルタイムである必要があります。
- 各信号の可聴バージョンを再生します。できればリアルタイムで再生します。
- ネットワーク接続を介して各信号をストリーミングします。できればリアルタイムで送信します。
- 各信号をPCMファイルに保存します。リアルタイムである必要はありません。
このプロセスでシグナルチェーンを概念化するのに助けが必要です。AudioUnitsを使ってデザインをスケッチし始めました。まず第一に、私はオーディオユニットを選択することによって低レベルになりすぎましたか?これはオーディオキューサービスで実装できますか?それでも、変調信号が入って(まだ復調されていない)、リアルタイムで超音波処理し、超音波処理された信号を出力に戻すところまで来ています。ここで、この信号を信号チェーンの2つの別々のセクションに分割するために、リモートI / Oユニットの出力をマルチチャンネルミキサーユニットの2つの別々の入力バスにルーティングし、超音波処理/書き込みを行うようなことを想像します。 -マルチチャネルミキサーユニットのコールバックのディスク/ネットワークへの書き込み。
ただし、これはリアルタイムスレッドの処理が多すぎますか?私は本当にこれを達成できるようになるのでしょうか、それとも一部の機能をオフラインにする必要がありますか?次に、I / Oユニットの入力エレメントの出力をマルチチャンネルミキサーユニットの個別の入力エレメントにルーティングすることは可能ですか?そうでない場合は、マルチチャネルストリームの説明を指定して、オリジンを分割できますか?
ios - 「使用中のハードウェア」の問題 (エラー コード: 'hwiu') を解決するにはどうすればよいですか?
recording with AudioUnit
、Conversion
、Audio Editing
のMerging
パーツで iPhone アプリを作成しました。を除くすべてを行いConversion
ました。このアプリは iOS 4 以降でのみ動作します。
.caf を .m4a ファイルに変換しようとしました。しかし、私はkAudioConverterErr_HardwareInUse
エラーが発生しています。次に、.caf ファイルを .wav ファイルに変換しようとしました。次に、.wav ファイルを .m4a ファイルに変換します。しかし、私は同じ問題を抱えています。
この問題については明確ではありません。Appleのドキュメントでは、彼らは次のように言及しています。
AudioConverterFillComplexBuffer
「おそらくオーディオの中断が原因で、基盤となるハードウェア コーデックが利用できなくなった場合、関数から返されます。
このエラーを受け取ったら、アプリケーションは の呼び出しを停止する必要がありますAudioConverterFillComplexBuffer
。プロパティの値を確認して、kAudioConverterPropertyCanResumeFromInterruption
使用しているコンバーターが中断後に処理を再開できるかどうかを判断できます。その場合は、オーディオ セッション サービスからの割り込み終了コールを待ち、オーディオ セッションを再度アクティブにして、最後にコーデックの使用を再開します。
中断後にコンバーターが処理を再開できない場合は、中断時に変換を中止し、コンバーターを再インスタンス化して、変換を再度実行する必要があります。」
解決するのを手伝ってください。