2017-06-25 113 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