2013-03-03 15 views
1

傳遞自定義參數到音頻單元kAudioUnitSubType_HighPassFilter截止我想達成什麼是改變切斷參數編程由UISlider例1(正常狀態下)發送值:通過UISlider

Float32 highPassFilterCutoff = 4000.0; 
CheckError(AudioUnitSetParameter(_auHighPassFilter, 
           kHipassParam_CutoffFrequency, 
           kAudioUnitScope_Global, 
           0, 
           highPassFilterCutoff, 
           0), 
      "Coulnd't set kHipassParam_CutoffFrequency "); 

我想要什麼:

NSLog(@"cutOffSlider.value in effect %f",cutOffslider.value); 
    Float32 highPassFilterCutoff = cutOffslider.value; 
CheckError(AudioUnitSetParameter(_auHighPassFilter, 
           kHipassParam_CutoffFrequency, 
           kAudioUnitScope_Global, 
           0, 
           highPassFilterCutoff, 
           0), 
      "Coulnd't set kHipassParam_CutoffFrequency "); 

我試圖像這樣...

-(IBAction)cutOffslider:(id)sender { 
    [cutOffslider setMinimumValue:0.0]; 
    [cutOffslider setMaximumValue:6000.0]; 
    NSLog(@"SliderValue ... %d",(int)sender); 
} 

輸出的調試控制檯上

PlayBasic[567:c07] cutOffSlider.value in effect 0.500000 

你怎麼能看到我可以從滑塊獲取浮點值,但是當我遞增或模擬器上通過滑塊遞減價值的影響也不會改變切斷參數。任何想法在運行時更改參數?

回答

1

首先這個

NSLog(@"SliderValue ... %d", (int)sender); 

是錯誤的。 Sender是一個對象,即發送消息的對象:UISliderView,這不能只是被強制轉換爲int

您需要的(IBAction)cutoffSlider:(id)sender連接到UISliderView的動作,然後設置它的過濾器值,如:

-(IBAction)cutOffslider:(id)sender { 
    [cutOffslider setMinimumValue:0.0]; 
    [cutOffslider setMaximumValue:6000.0]; 
    NSLog(@"SliderValue ... %d",(int)sender); 

    Float32 highPassFilterCutoff = cutOffslider.value; 
    CheckError(AudioUnitSetParameter(_auHighPassFilter, 
          kHipassParam_CutoffFrequency, 
          kAudioUnitScope_Global, 
          0, 
          highPassFilterCutoff, 
          0), 
     "Couldn't set kHipassParam_CutoffFrequency "); 
} 
+0

坦克你iain,就在今晚我是臥底的錯誤,我找到了相同的解決方案,你是建議的方式!我認爲這對所有社區都有用。偉大的....但如果我可以利用你的好意,我有我神祕的問題:我可以開始augraph,並從發電機單元聽音樂,但溫單擊停止augraph要恢復:我需要重新啓動應用程序!任何想法? – sundsx 2013-03-06 09:14:45

+0

如果您有其他問題,請打開另一個問題 – iain 2013-03-06 09:25:53