设置 AudioUnit 子类型的速率 kAudioUnitSubType_NewTimePitch
Setting rate on AudioUnit subtype kAudioUnitSubType_NewTimePitch
我正在尝试 get/set 子类型为 kAudioUnitSubType_NewTimePitch
的 AudioUnit 的速率。
音频单元通过 AUNode
添加到 AUGraph
,它具有以下组件描述:
acd->componentType = kAudioUnitType_Effect;
acd->componentSubType = kAudioUnitSubType_NewTimePitch;
acd->componentManufacturer = kAudioUnitManufacturer_Apple;
根据 AudioUnitParameters.h
,get/set 速率应该与 get/set 音频单元上的速率参数一样简单。
// 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 单元。
有什么想法吗?
原来Audio Unit的类型不对。
我将类型更改为 kAudioUnitType_FormatConverter
,并保留相同的子类型。
两个 get/set 速度现在都按预期工作。
我仍然不清楚为什么我没有收到任何错误,无论是在设置音频单元时还是在设置速率值时。
我正在尝试 get/set 子类型为 kAudioUnitSubType_NewTimePitch
的 AudioUnit 的速率。
音频单元通过 AUNode
添加到 AUGraph
,它具有以下组件描述:
acd->componentType = kAudioUnitType_Effect;
acd->componentSubType = kAudioUnitSubType_NewTimePitch;
acd->componentManufacturer = kAudioUnitManufacturer_Apple;
根据 AudioUnitParameters.h
,get/set 速率应该与 get/set 音频单元上的速率参数一样简单。
// 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 单元。
有什么想法吗?
原来Audio Unit的类型不对。
我将类型更改为 kAudioUnitType_FormatConverter
,并保留相同的子类型。
两个 get/set 速度现在都按预期工作。
我仍然不清楚为什么我没有收到任何错误,无论是在设置音频单元时还是在设置速率值时。