1

(これは最近尋ねられた質問のより明確なバージョンです)

いくつかの問題を修正するためにいくつかのコードを引き継いでいますが、そのうちの 1 つが私を困惑させています。

アプリケーションは、必要に応じてユーザーが調整できるように、入力レベルを監視して表示する必要があります。現在のコードは、ほとんどのデバイスで完全に機能します。メータリング モードが有効になり、次の 2 行がタイマー ルーチンによって呼び出され、1 つのデバイスを除いて機能します。

AudioUnitGetParameter(mMixerUnit, k3DMixerParam_PreAveragePower, kAudioUnitScope_Input, 0, &levels[0]);
AudioUnitGetParameter(mMixerUnit, k3DMixerParam_PrePeakHoldLevel, kAudioUnitScope_Input, 0, &peaks[0]);

選択した入力デバイスが Tascam US-144MKII の場合、値はレベルとピークの両方で常に -120 です。Tascam ユニットにはいくつかの違いがあります。たとえば、4 つのチャンネルがリストされ、安全オフセットが 0 になっています。ただし、これらのいずれかがこの特定の問題をどのように引き起こすかはわかりません。今のところ、Tascam の USBAudio ドライバーに、予想とは異なる動作をしている何かがあると思います。

ボリュームは Audacity を使用して表示されますが、コードを正しく読んでいれば、Audacity は非推奨の関数を使用しています。データをキャプチャするためではなく、単に入力レベルを取得できるように、別の AudioQueue を実行することは可能ですか?

あなたの答えに感謝します!

4

1 に答える 1

0

それを見つけた!

Tascam ユニットが入力として選択されている場合、コード内の入力コールバックは呼び出されません。その正確な理由はまだ定義されていませんが、本質的には音量レベルを取得するだけではなく、Tascam ユニットが入力デバイスとして選択されているときに何も機能していません。

于 2013-02-25T05:10:03.893 に答える