2013-02-21 62 views
0

該文檔有點令人困惑 - 有人可以將我的代碼指向允許我讀取CoreAudio上的輸入音量的代碼嗎?我正在使用的代碼使用:使用CoreAudio讀取輸入音量OSX

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

適用於某些設備,但不適用於所有設備。我需要一些適用於所有設備的東西。

回答

0

如果沒有更多的上下文,就很難完全診斷。但是,您是否明確啓用了調音臺上的輸入測量?你會這樣做:

UInt32 enable = 1; 
AudioUnitSetProperty(mMixerUnit, 
        kAudioUnitProperty_MeteringMode, 
        kAudioUnitScope_Input, 
        0, 
        &enable, 
        sizeof(enable)); 
+0

我從其他人那裏拿這個代碼,我很抱歉不清楚。是的,輸入測量已啓用。問題是一臺設備(一臺Tascam US-144MKII)沒有提供有用的響應 - 該級別始終爲-120。我正在研究是否可以設置音頻隊列來監視音量 - 我可以在運行AUHAL的同時做到這一點嗎? – TomJeffries 2013-02-22 05:20:02

+0

攪拌機應該表現出設備中立性,我會想。一旦音頻離開AUHAL單元,它只是一個音頻數據流。對於某些流格式的輸入計量可能存在問題?在使用各種設備縮小可能的罪魁禍首時,您可以嘗試查詢AUHAL的輸出ASBD。此外,你是否只是想獲得音頻輸入水平?如您所說,將AUHAL附加到輸入並設置輸入回調(kAudioOutputUnitProperty_SetInputCallback)或使用AudioQueue可能會更容易。 – admsyn 2013-02-22 12:02:31