Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.129.25.216] |
|
Сообщ.
#1
,
|
|
|
Повстречался ревербератор
http://i.imgur.com/i5mpZrB.png Исходный код можно прочитать тут https://git.cinelerra-cv.org/gitweb?p=Cinel...ef750fd;hb=HEAD "Уровень исходного сигнала" мсек. Предзадержка" "Уровень первых отражений" "Уровень последних отражений" "Число отражений" "мсек. Время реверберации" Не пойму что означают параметры: `Start band for lowpass` и `End band for lowpass` Насколько я понимаю, речь идет о фильтре нижних частот (lowpass). Но вот эти вот "приставки" Start band * End band * Что это может означать ? Подскажите пожалуйста. Ведь lowpass пропуск н.ч. то-бишь фильтр нижних частот работает в диапазоне от 0 до границы среза. А тут вроде как получается мы можем задавать нижнюю (отличную от нуля) и верхнюю границу полосы пропускания фильтра нижних частот ? Я задавал этот вопрос многим пользователям, но похоже, что точку в вопросе может поставить только тот, кто прочитает исходный код. Мы смотрели действие эффекта по спектрограмме, выдвигались разные предположения и мнения Ниже - цитаты: -- что это " на самом деле не ФНЧ, а ПФ (полосовой фильтр)" - что это действительно "ФНЧ, но в эффекте их не один, а два, но с разным действием" (кстати, в коде они так и числятся как LOWPASS 1 LOWPASS 2) - была идея, что " 2 частоты задают крутизну спада фильтра(то есть: start band - это аналог cutoff frequency - начальная частота, с которой фильтр начнёт работу, а end band for lowpass - это ширина (по оси Х) участка с затуханием), но оказалось, что они меняются независимо и могут быть в "неправильном" порядке. Если end < start то спектрограмма показывает, что это обычный band pass фильтр, а не lowpass filter. Получается, что это или так и было задумано, или это логическая ошибка. Потому что в "нормальных" условиях ( случай, когда выставляются значения start < end ) спектрограмма подтверждает гипотезу, что разница между end и start определяет интенсивность затухания. Видно, что полоса затухающих частот становится уже или шире." - выдвигалось предположение, что "ФНЧ здесь имеет изменяемую полосу. Сначала полоса больше, Start Band, а с каждым отражением уменьшается, вплоть до End Band." -- ".. это не тривиальный фильтр. Их там много на самом деле, в зависимости от количества отражений. Частоты задают границы изменения частоты фильтров. Возможно он даже LP-типа (я по коду не возьмусь определить), но их там несколько, с разными частотами для каждого отражения, если я правильно уловил что внутри происходит. " -- и вот ниже пользователь пробовал читать исходный код: 237 // set changing levels 238 ref_levels[j] = db.fromdb(config.ref_level1 + (config.ref_level2 - config.ref_level1) / (config.ref_total - 1) * (j - 2)); 239 //ref_levels[i][j] /= 100; 240 241 // set changing lowpass as linear 242 ref_lowpass[i][j] = (int64_t)(config.lowpass1 + (double)(config.lowpass2 - config.lowpass1) / (config.ref_total - 1) * (j - 2)); 243 lowpass_in1[i][j] = 0; 244 lowpass_in2[i][j] = 0; [I] j - номер отражения ref_lowpass заполняется равномерно частотами из интервала [lowpass1, lowpass2] Осталось понять, что именно делает фильтр: int ReverbEngine::process_overlay(double *in, double *out, double &out1, double &out2, double level, int64_t lowpass, int64_t samplerate, int64_t size) 467 { 468 // Modern niquist frequency is 44khz but pot limit is 20khz so can't use 469 // niquist 470 if(lowpass == -1 || lowpass >= 20000) 471 { 472 // no lowpass filter 473 for(int i = 0; i < size; i++) out += in[i] * level; 474 } 475 else 476 { 477 double coef = 0.25 * 2.0 * M_PI * (double)lowpass / (double)plugin->project_sample_rate; 478 double a = coef * 0.25; 479 double b = coef * 0.50; 480 481 for(int i = 0; i < size; i++) 482 { 483 out2 += a * (3 * out1 + in[i] - out2); 484 out2 += b * (out1 + in[i] - out2); 485 out2 += a * (out1 + 3 * in[i] - out2); 486 out2 += coef * (in[i] - out2); 487 out1 = in[i]; 488 out[i] += out2 * level; 489 } 490 } 491 } [I] Тут какая-то фильтрация с MAGIC_NUMBERS и без комментариев. Короче, эти 2 частоты каким-то образом влияют на фильтрацию применительно к отражениям сигнала. Затруднительно сказать как именно... .. надо найти специалиста по фильтрации, которые объяснит, что делает фильтр если F2< F1 (F1 > F2) частоты фильтров для отражений распределяются в обратном порядке. Не знаю как это влияет на результат. -------------- Вот такая вот головоломка. |