問題タブ [novocaine]
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 - iOS アプリは、kAudioSessionCategory_MediaPlayback であっても、マイクへのアクセスを要求します
https://github.com/alexbw/novocaineの Novocaine ライブラリを使用してwav ファイルを再生しています。iOS には独自のメディア プレーヤー API があることは知っていますが、その制限はプリセット イコライザーにあります。NVDSP https://github.com/bartolsthoorn/NVDSPを使用して 10 バンドのグラフィック イコライザーを実装しているため、Novocaine を使用する必要があります。
Apple は、マイクへのアクセスを要求するという理由で提出されたアプリを拒否しましたが、これは再生アプリにすぎません。彼らは言った:
「マイクの同意要求は、AVAudioSessionCategoryRecord または AVAudioSessionCategoryPlayAndRecord オーディオ カテゴリを使用して生成されます」
Novocaine.m では、setupAudio を次のように変更しました。
これらのそれぞれに:
ただし、上記の各ケースで、アプリは引き続きマイクへのアクセスを要求しました。
すべてのコードを検索しましたが、これはオーディオ セッション カテゴリが設定されている唯一の場所です。
テストするには、すべての変更後に、iPod で次の操作を行う必要があります。
設定 -> 一般 -> リセット -> 位置情報とプライバシーをリセット
それ以外の場合、テストは無効です。
XCode デバッガーを使用して Novocaine コードのほぼすべてを 1 ステップ実行しましたが、マイク アクセス ポップアップはビューが表示されているときにのみ表示されるため、診断が非常に困難です。
マイクへのアクセスを要求する、または副作用としてマイクへのアクセスに影響を与えるコード内の他の場所はありますか?
iOS SDK 7.0 で XCode 5.0.2 (5A3005) を使用しています。私の唯一のテスト デバイスは iPod Touch 第 5 世代です。
pcm - novocaine audiomanager に pcm s16be 配列を挿入する
@alexbw とその友人へ、まず、この素晴らしいコードに感謝します。バイト配列に pcm データ (符号付き 16 ビット ビッグ エンディアン) があり、それを Novocaine AudioManager setOutputBlock で再生したいと考えています。最初に float 配列に変換する必要があることを理解しています。それとももっと速い方法がありますか?乾杯フィリップ
ios - NOVOCAINEを使用した10バンドイコライザー
NOVOCAINEを使用して 10 バンドのイコライザーを構築しようとしています。Equaliser.mm のコードを にコピーしviewWillAppear
、xib ファイルにさらに 9 つのスライダーを追加し、IBAction
コードも次のように変更しました。
私が知りたいのは、これを正しい方法で行っているかどうかです。スライダーの範囲はどうなりますか?例のようHPF
に、スライダーの範囲は 2k から 8k です。ここでいくつかのガイダンスが必要です。
ありがとう。
ios - ノボカインによるアクティブノイズキャンセリング
アクティブ ノイズ キャンセリングの目的で、Novocaine を使用して逆位相信号を生成するにはどうすればよいですか? つまり、 内でNovocaineOutputBlock
、入力と 180 度位相がずれている出力を生成する方法は?
これまでの私のコードは次のとおりです。
ios - 低遅延の入出力 AudioQueue
私は 2 つの iOS AudioQueues を持っています。1 つの入力は、サンプルを 1 つの出力に直接送ります。残念ながら、かなり目立つエコー効果があります:(
AudioQueues を使用して低遅延のオーディオを実行することは可能ですか、それとも本当に AudioUnits を使用する必要がありますか? (私は AudioUnits を使用する Novocaine フレームワークを試しましたが、ここではレイテンシーがはるかに小さくなっています。また、このフレームワークは CPU リソースの使用量が少ないように見えることにも気付きました。残念ながら、大きな変更を加えなければ、私の Swift プロジェクトでこのフレームワークを使用することはできませんでした。 .)
これは、C で実装する必要があるコールバックを除いて、主に Swift で行われる私のコードの抜粋です。
そして、コールバックを Swift に戻すように設定する C コード:
ios - IOS、AVAudioSession、および Novocaine: サンプルレートを動的に設定する方法は?
ピッチ検出には、マイクでキャプチャしたデータを処理するために Novocaine フレームワークを使用します。
最初に、独自の (縮小された) サンプルレートを設定するために、元の Novocaine クラスを上書きしました。
低周波数 (20 Hz ~ 100 Hz の間) もキャプチャするために、サンプルレートを 44100.0 / 4.0 に下げました。これは非常にうまく機能します!
より高い周波数 (500 Hz から始まる s.th.) を取得しようとすると、サンプル レートが低いために偏差が発生します。したがって、精度を上げるには、サンプルレートを 44100.0 に上げる必要があります。
私の質問: Novocaine はシングルトンであるため、出力ブロック内でサンプルレートを動的に変更する方法はありますか?
Novocaine は AVAudioSession に依存しているため、次のことを試みましたが無駄でした:
ただし、これは Novocaine フレームワークのサンプル レートには影響しません。
新しいオーディオ セッションを作成せずにサンプル レートを変更する可能性はありますか? 問題は、出力ブロックが現在実行中のセッションに属していることです。
ios - 拡張オーディオ ファイルを使用したオーディオ ファイルの書き込みと読み取り
ExtAudioFileWriteAsync を使用して、デバイス録音の使用中にオーディオ ファイルを書き込んでいますが、録音が終了したら、ExtAudioFileRead 関数を使用して読み込もうとしますが、取得したサンプルは、私が書いているサンプルとは異なります...なぜこれが起こる可能性がありますか?
書き込み用:
読むために:
ところで、デバイスのオーディオを取得するためにNovocaineプロジェクトを使用しています。Novocaineコードまたは他のプレーヤーで保存されたオーディオを再生できます。
ExtAudioFileRef 出力を書き込む場合:
outputFileDesc の場所
AudioStreamBasicDescription outputFileDesc = {44100.0, kAudioFormatMPEG4AAC, 0, 0, 1024, 0, thisNumChannels, 0, 0}; outputFileDesc.mFormatFlags = kAudioFormatFlagIsBigEndian | kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked;
ExtAudioFileRef inputFile を読み取る場合:
どちらの場合も (書き込みと読み取り)、同じ形式が適用されます。
ちなみに、読み取りサンプルと書き込みサンプルが等しくなくても、両方の信号の平均値は非常に似ています。しかし、完全に等しくない理由がよくわかりません!
私が間違っていることは何か分かりますか?
ios - iOS - iOS 用のシンプルなリサンプリング オーディオ機能
オーディオ処理 iOS アプリ用に、オーディオの録音に Novocaine を使用しています。録音後に適用するカスタム オーディオ フィルタがあります。ここで、オーディオを 8kHz でリサンプリングします。したがって、基本的には、オーディオ データ バッファーを渡し、単純にリサンプリングされたオーディオを取得する単純なモジュール/関数が必要です。
私はインターネットを調べましたが、iOS の要件に従って、一般的なリサンプリング オーディオ データ ソリューションが見つかりませんでした。
私を助けてください、私はあなたにとても感謝します。