10-полосный эквалайзер с использованием НОВОКАИНА

#ios #novocaine

#iOS #новокаин

Вопрос:

Я пытаюсь создать 10-полосный эквалайзер с использованием НОВОКАИНА. Я скопировал Equaliser.mm код в viewWillAppear , и добавил еще 9 ползунков в файл xib, и также изменил IBAction код этого :

 -(void)HPFSliderChanged:(UISlider *)sender {
PEQ[sender.tag - 1].centerFrequency = sender.value;
NSLog(@"%f",sender.value);
} 
  

Что я хочу знать, так это правильно ли я это делаю или нет? и каков будет диапазон ползунков? Как и в HPF примере, диапазон изменения ползунка составляет от 2 до 8 кб. Здесь нужны некоторые рекомендации.

Спасибо.

Ответ №1:

РЕДАКТИРОВАТЬ: после вашего комментария, я думаю, стало понятнее, о чем вы спрашиваете.

Возьмите код для создания экземпляра NVPeakingEQFilter :

         NVPeakingEQFilter* PEQ = [[NVPeakingEQFilter alloc] initWithSamplingRate:self.samplingRate];
        PEQ.Q = QFactor;
        PEQ.G = gain;
        PEQ.centerFrequency = centerFrequencies;
  

вам нужно определить 3 параметра: Q, G и центральную частоту. Как Q, так и центральная частота обычно фиксированы (QFactor в моем случае является константой, равной 2.0).

Итак, у вас есть 10 ползунков: каждый соответствует фиксированному centerFrequency . Я предложил значения iTunes: 32 Гц, 64 Гц, 125 Гц, 250 Гц, 500 Гц, 1 кГц, 2 кГц, 4 кГц, 8 кГц, 16 кГц. Вы не хотите изменять эти значения при изменении значения ползунка.

Что вы хотите изменить при изменении значения ползунка, так это коэффициент усиления (G). Во время инициализации G может быть установлен на 0.0. Это означает «нет усиления /ослабления».

Когда ползунок перемещается, вы меняете G, так что на самом деле вы бы сделали:

 PEQ[sender.tag - 1].G = sender.value * kNominalGainRange;
  

где номинальный диапазон частот равен 12,0, поэтому, если sender.value изменяется от -1,0 до 1,0, G изменяется от -12 до 12.

Надеюсь, это поможет.

Что я хочу знать, так это правильно ли я это делаю или нет?

вы не показываете много кода, но HPFSliderChanged кажется правильным. Если у вас есть какая-либо конкретная проблема, вы должны описать ее и опубликовать дополнительный код.

и каков будет диапазон ползунков?

На самом деле, нет жесткого правила, когда дело доходит до эквалайзеров. iTunes поддерживает диапазон от -12 дБ до 12 дБ, но вы могли бы использовать другие диапазоны (с единственной оговоркой — искажение).

Как и в примере с HPF, диапазон регулировки составляет от 2 до 8 кб. Здесь нужны некоторые рекомендации.

опять же, вы можете взять iTunes equaliser в качестве примера (32 Гц, 64 Гц, 125 Гц, 250 Гц, 500 Гц, 1 кГц, 2 кГц, 4 кГц, 8 кГц, 16 кГц), или вы можете поискать в Google изображения реальных эквалайзеров и посмотреть, какие диапазоны они используют.

Комментарии:

1. На самом деле 1) в примере HPF он делает это `_HPF_cornerFrequency = sender.value;. и я устанавливаю центральную частоту. итак, я все делаю правильно. 2) Я знаю, что iTunes изменяется от -12 дБ до 12 дБ, но я не знаю, каковы эти значения.

2. Не могли бы вы объяснить еще 2 вещи, пожалуйста. 1) почему у разных плееров разные частоты, например, в iTunes значения равны 32,64,125… 16k Гц, а в VLC они разные — 16 Гц, 170, 310… 16 кГц? 2) и почему диапазон G (усиления) составляет от -12 до 12?

3. без особой причины, я думаю, настраиваю вещи так, чтобы они звучали лучше … но это субъективно … если вы допускаете, например, большее усиление, вы легко получите некоторое искажение…