2017-06-25 10 views
0

サブタイプkAudioUnitSubType_NewTimePitchのAudioUnitのレートを取得/設定しようとしています。AudioUnitサブタイプのレートを設定するkAudioUnitSubType_NewTimePitch

オーディオユニットは、以下のコンポーネント記述有するAUNodeを通じて、AUGraphに添加する:AudioUnitParameters.hによれば

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

を取得/設定速度は、取得/設定速度と同じくらい簡単であるべきですパラメータを設定します。

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

しかし、値を設定しながらすることは値が値-10878 (kAudioUnitErr_InvalidParameter)OSStatusをもたらし取得(エラーが返されません)何の問題もないようです。

- (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; 
} 

ノードの入力ミキサーノードに接続されているが、ここで

は私が値を設定する方法ですリモートIOユニットに出力します。

アイデア?

答えて

0

オーディオユニットのタイプが間違っていたことが判明しました。

タイプがkAudioUnitType_FormatConverterに変更され、同じサブタイプが維持されました。

テンポの取得と設定の両方が、期待通りに機能するようになりました。

なぜ私はエラーが発生しなかったのか、オーディオユニットを設定するのか、レートの値を設定するのかについてはまだ不明です。

+0

この回答には正しいとマークしますが、コメントと回答は大歓迎です:) – Vince

関連する問題