2011-07-29 13 views
1

この質問は非常に具体的なものかもしれませんが、私はこれを初めてお持ちで、本当に助けが必要です。異なる制御値を送信する複数のDCSlider(Xcode)

私はiPhoneのシンセアプリを構築しています。 DCSlidersにDCKnobsを使用しています(標準のUISlidersよりも美しく見えます)。

https://github.com/domesticcatsoftware/DCControls#readme

私も(ピュアデータライブラリ)libpdで働いているので、オーディオDSPは、埋め込まれた純粋なデータパッチによって処理されます。

https://gitorious.org/pdlib

私は自分のインタフェースに複数のDCSlidersとDCKnobsを持っています。私は

...

- (void)loadView { 
    [super loadView]; 
    self.mySlider = [[[DCSlider alloc] initWithDelegate:self] autorelease]; 
    self.mySlider.frame = CGRectMake(10.0, 10.0, 20.0, 120.0); 

    [self.view addSubview:self.mySlider]; 
} 
クラスにDCSliderのデリゲートを作ることによって純粋なデータへのスライダー/ノブから制御値を送信することができるよそれから私は純粋データで受信機に制御値を送信するためのメソッドを実装します。 ..

- (void)controlValueDidChange:(float)value sender:(id)sender { 
    [PdBase sendFloat:value toReceiver:@"beatvol"]; 
} 

これはすべて正常です。

問題は、すべてのスライダが同じ制御値を送信していることです。

各DCSliderに、独立した制御値をPure Dataの異なる受信者に送信させるにはどうすればよいですか?

答えて

1

タグをスライダに割り当てる必要があります。次にcontrolValueDidChange:でタグを取得し、タグに従ってアクションを実行する必要があります。

- (void)loadView 
{ 
    [super loadView]; 
    mySlider = [[[DCSlider alloc] initWithDelegate:self] autorelease]; 
    mySlider.frame = CGRectMake(10.0, 10.0, 20.0, 120.0); 
    mySlider.tag = 0; 
    [self.view addSubview: mySlider]; 
} 
- (void)controlValueDidChange:(float)value sender:(id)sender 
{ 
    DCSlider * slider = (DCSlider *)sender; 

    switch (slider.tag) 
    { 
     case 0: 
     { 
      [PdBase sendFloat:value toReceiver:@"beatvol"]; 
     } 
      break; 
     case 1: 
     { 
      /* do something for the 2nd slider */; 
     } 
      break; 
    }   
} 
+0

私はこれを試してもまだ動作しませんでした。 –

+0

2番目のスライダ(mySlider2)の場合、 self.mySlider2.tag = 1 –

+0

ケース1の場合: [PdBase sendFloat:value toReceiver:@ "bassvol"]; –

関連する問題