2017-06-25 112 views
0

我試圖獲取/設置子類型爲kAudioUnitSubType_NewTimePitch的AudioUnit的速率。AudioUnit子類型上的設置速率kAudioUnitSubType_NewTimePitch

音頻單元被添加到AUGraph,通過AUNode,其具有以下組分的描述:

acd->componentType = kAudioUnitType_Effect; 
acd->componentSubType = kAudioUnitSubType_NewTimePitch; 
acd->componentManufacturer = kAudioUnitManufacturer_Apple; 

根據AudioUnitParameters.h,獲取/設置的速率應儘可能得簡單/設置的速率音頻單元上的參數。

// rate control. 
// Global, rate, 1/32 -> 32.0, 1.0 
kNewTimePitchParam_Rate       = 0, 

然而,當該值設置似乎得到的值沒有問題(不返回錯誤)產生一個OSStatus值爲-10878 (kAudioUnitErr_InvalidParameter)

這裏是我設置的值:

- (void)setTempo:(float)value { 
    OSStatus err = noErr; 
    err = AudioUnitSetParameter(tempoUnit, kNewTimePitchParam_Rate, kAudioUnitScope_Global, 0, (Float32)value, 0); 
    if (err != noErr) { 
     NSLog(@"Could not set tempo unit rate: %d", err); 
    } // no error 
} 

,以及如何我(試圖)得到它:

- (float)tempo { 
    OSStatus err = noErr; 
    Float32 value = 1.0; 
    err = AudioUnitGetParameter(tempoUnit, kNewTimePitchParam_Rate, kAudioUnitScope_Global, 0, &value); 
    if (err != noErr) { // -10878 
     NSLog(@"Could not get tempo unit rate: %d", err); 
    } 
    return value; 
} 

節點的輸入連接到調音臺節點,輸出到RemoteIO單元。

任何想法?

回答

0

事實證明,音頻單元的類型是錯誤的。

我更改爲kAudioUnitType_FormatConverter爲類型並保持相同的子類型。

無論是獲取/設置速度現在按預期工作。

我還不清楚爲什麼我沒有得到任何錯誤,既沒有設置音頻設備,也沒有設置速率值。

+0

我會將此答案標記爲正確,但歡迎評論和回答:) – Vince