#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. без особой причины, я думаю, настраиваю вещи так, чтобы они звучали лучше … но это субъективно … если вы допускаете, например, большее усиление, вы легко получите некоторое искажение…