单个歌曲的多音量控制

时间:2011-03-31 12:08:48

标签: iphone core-audio

我正在创建一个使用两首歌曲的应用程序:一首来自本地文件,另一首来自用户的iPod库。我想创建一个软件混音工具,这意味着每个音频的音量可以独立设置。我为两个卷使用了两个UISlider

我想实现交叉渐变类型的行为,这意味着如果一个组件的组件设置为最大,则另一个音频的组件设置为零。我该如何实现呢?

2 个答案:

答案 0 :(得分:0)

您可以设置与库中歌曲音量相关的滑块current_value,以及MAX_Slider_Value - current_Value来自本地文件的歌曲音量,我想这可以做到这一点

答案 1 :(得分:0)

您可以使用键值编码(KVC)键值观察(KVO)来实现此类行为。如果更改了第一个滑块的值,请相应地更改第二个滑块的值。但请确保您不会触发任何KVO通知,否则您将陷入无限循环。

- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    if ([[object class] isEqual:NSClassFromString(@"UISlider")] {
        if ([keyPath isEqual:@"value"]) {
            if (object == volumeSlider1) {
                // set value of second slider without firing KVO notifications
            } else {
                // set value of first slider without firing KVO notifications
            }
        }
    }
}

- (void) viewDidLoad
{
    [volumeSlider1 addObserver:self forKeyPath:@"value" options:NSKeyValueObservingOptionNew context:NULL]; 
    [volumeSlider2 addObserver:self forKeyPath:@"value" options:NSKeyValueObservingOptionNew context:NULL];
}
相关问题