2013-05-21 46 views
0

當我開發一個卡拉OK software.and打算使用audiounit混合音頻設置範圍和元素,但我不知道如何設置,例如範圍和元素:如何使用音頻單元

UInt32 busCount = 2; 
OSStatus result = AudioUnitSetProperty (
    mixerUnit, 
    kAudioUnitProperty_ElementCount 
    kAudioUnitScope_Input, 
    0, 
    &busCount, 
    sizeof (busCount 
); 

爲什麼範圍是'kAudioUnitScope_Input'和元素是'0',這是什麼意思?

回答

4

此圖從Apple Docs使它很清楚:

甲範圍是音頻單元內的編程環境。雖然名稱全局範圍可能會有其他建議,但這些上下文不會嵌套。您可以通過使用音頻單元範圍枚舉中的 常數來指定要定向的範圍。

0表示「輸出總線」。

元素是嵌套在音頻單元範圍內的編程上下文。當元素是輸入或輸出示波器的一部分時,其類似於物理音頻設備中的信號總線,因此有時稱爲總線。這兩個術語 - 元素和 總線 - 在音頻單元編程中指的是完全相同的東西。 文件在強調信號流時使用「總線」,並在強調音頻單元的特定功能方面時使用「元素」 ,例如I/O單元的輸入和輸出元件(請參見「必需 I/O單元「)。

這是最好使用定義給公交值語義:

// put this in header file 
#define kOutputBus 0 
#define kInputBus 1 
+0

這是一個偉大的答案。感謝您帶入圖表! – Warpling

1

AudioUnitSetProperty被定義爲

OSStatus AudioUnitSetProperty (
    AudioUnit   inUnit, 
    AudioUnitPropertyID inID, 
    AudioUnitScope  inScope, 
    AudioUnitElement  inElement, 
    const void   *inData, 
    UInt32    inDataSize 
); 

,其中0,在你的代碼,對應AudioUnitElementkAudioUnitScope_Input是您定義的AudioUnitScope,其解釋爲

範圍 - 屬性適用的音頻單位內的編程上下文。 屬性適用於一個或多個範圍,如本文檔中所述。 iOS中的音頻單元範圍 是輸入,輸出和全局。在OS X中,音頻單元具有附加的MIDI相關示波器: 組,部件和註釋。

看看的AudioUnitSetProperty 的文檔以及Audio Unit Properties Reference

相關問題