【发布时间】:2017-06-25 08:41:07
【问题描述】:
我正在尝试获取/设置子类型为 kAudioUnitSubType_NewTimePitch 的 AudioUnit 的速率。
音频单元通过AUNode添加到AUGraph,其组件描述如下:
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 单元。
有什么想法吗?
【问题讨论】:
标签: ios core-audio audiounit