
Цифровая АРУ 0...1
243433 просмотров, 284 ответов — стр. 6 из 19
3 ноября 2020 г. в 09:44#76

4 ноября 2020 г. в 12:24#77
Попробовал компрессор по приемуТак компрессор компрессору рознь. Поиграйтесь параметрами. В адау например там их есть несколько
4 ноября 2020 г. в 05:51#78
Потратил целый день на всякие алгоритмы, но не нашел лучше варианта Андрея. Кстати беру свои слова назад, алгоритм Андрея работает мягко. Да, есть провалы перед всплеском, но это не слышно, только видно. Напомню, алгоритм Андрея делает ару на фрейм, причем, первую 1 мсек нарастание идет плавно (это основная фишка алгоритма). И можно было бы бросить дальше что -то придумывать , но башка рукам покоя не дает.
Вот мой алгоритм (потом фишки расскажу)
Код: [Выделить]uint16_t countBack = 10;
void agcDo(float32_t *buffer) {
float32_t agcMetrTemp = 0;
if (tim > 0)tim--; //уменьшение задержки
for (uint16_t i = 0; i < FRAME_SIZE; i++) {
float32_t a;
a = (buffer[i] < 0.0f) ? -buffer[i] : buffer[i];// adc V
nowAgc = 1.0f / a; //coeff --> 1, nowAgc=чем меньше - тем сильнее загибаем pOutLms, 1 макс усиление.
if (a > agcMetrTemp) agcMetrTemp = a; //s-meter макс V
if (nowAgc < agcLevel) {
tim = 40;//задержка отпускания
agcLevel = nowAgc;
} else {
if (nowAgc > agcLevel) {
float32_t s = (1.0f / agcLevel);//скорость нарастания
if (tim == 0) {//активное нарастание
agcLevel += s;/// 0.01f;//скорость нарастания
} else {
if (!countBack) {//спокойное нарастание через шаг
agcLevel += 0.001f;
countBack = 5;// шаг , делаем плавное нарастание через 5 замеров
//если делать каждый шаг - растет имд
} else countBack--;
}
}
}
buffer[i] *= agcLevel;
}
agcMetr = agcMetrTemp; //s-meter
}
Вот мой алгоритм (потом фишки расскажу)
Код: [Выделить]uint16_t countBack = 10;
void agcDo(float32_t *buffer) {
float32_t agcMetrTemp = 0;
if (tim > 0)tim--; //уменьшение задержки
for (uint16_t i = 0; i < FRAME_SIZE; i++) {
float32_t a;
a = (buffer[i] < 0.0f) ? -buffer[i] : buffer[i];// adc V
nowAgc = 1.0f / a; //coeff --> 1, nowAgc=чем меньше - тем сильнее загибаем pOutLms, 1 макс усиление.
if (a > agcMetrTemp) agcMetrTemp = a; //s-meter макс V
if (nowAgc < agcLevel) {
tim = 40;//задержка отпускания
agcLevel = nowAgc;
} else {
if (nowAgc > agcLevel) {
float32_t s = (1.0f / agcLevel);//скорость нарастания
if (tim == 0) {//активное нарастание
agcLevel += s;/// 0.01f;//скорость нарастания
} else {
if (!countBack) {//спокойное нарастание через шаг
agcLevel += 0.001f;
countBack = 5;// шаг , делаем плавное нарастание через 5 замеров
//если делать каждый шаг - растет имд
} else countBack--;
}
}
}
buffer[i] *= agcLevel;
}
agcMetr = agcMetrTemp; //s-meter
}
4 ноября 2020 г. в 05:59#79
Вот так это выглядит.
Сперва плавный подъем потом основной. Зачем это надо? При долгом прослушивании музыки и эфира через всю системы (музыка в 3 кГц
) обнаружил, что иногда в тихих местах начинает срабатывать основной возврат (откат ару) и это прям сильно все портит. Тоже самое в эфире, когда человек говорит и иногда ару приспичевает сработать и это дает "ПШИК" . Я вспонил, что боролся с этим в Монстре и вспомнил как
мелкий дрифт ару туда-сюда, без задействования основной задержки. Просто постепенно +1 уе или -1 уе даю пока не придет что то серьезное - тогда полный запуск
PS на снимке во время возврата есть всплеск и опять назад - это так комп чудит совместно с видоуз. В нормальной жизни его нет.
Сперва плавный подъем потом основной. Зачем это надо? При долгом прослушивании музыки и эфира через всю системы (музыка в 3 кГц
) обнаружил, что иногда в тихих местах начинает срабатывать основной возврат (откат ару) и это прям сильно все портит. Тоже самое в эфире, когда человек говорит и иногда ару приспичевает сработать и это дает "ПШИК" . Я вспонил, что боролся с этим в Монстре и вспомнил как
мелкий дрифт ару туда-сюда, без задействования основной задержки. Просто постепенно +1 уе или -1 уе даю пока не придет что то серьезное - тогда полный запуск PS на снимке во время возврата есть всплеск и опять назад - это так комп чудит совместно с видоуз. В нормальной жизни его нет.
4 ноября 2020 г. в 06:03#80
Причем в генераторных условиях все достаточно обыденно, но в реалях это работает и дает мягкую подтяжку , стробирование сигнала в то время как основная задержка еще держит. Так же это все не плохо работает на шумовой дорожке - нет "ПШШШ" неожиданных.
4 ноября 2020 г. в 06:13#81
А где же работа компрессора, который должен был сразу резко поднять усиление, и АРУ, которая цепляется за шум, и имеет время отрабатывания несколько секунд?
Или это что-то другое?
Или это что-то другое?

4 ноября 2020 г. в 06:22#82
Вот запись 80м
Ару мое, фильтра мои.
СДР в Туле.
https://drive.google.com/file/d/1CJ-NMpZv79WvvCWnEGPIBw1HtxoT6Qc-/view?usp=sharing
Ару мое, фильтра мои.
СДР в Туле.
https://drive.google.com/file/d/1CJ-NMpZv79WvvCWnEGPIBw1HtxoT6Qc-/view?usp=sharing
4 ноября 2020 г. в 06:23#83
А где же работа компрессора, который должен был сразу резко поднять усиление, и АРУ, которая цепляется за шум, и имеет время отрабатывания несколько секунд?
Или это что-то другое?
Шутите

Я понял , что имел ввиду Андрей. Громкие станции должны звучать громче. Мы страниц 10 исписали когда я Монстра на прием запустил.
6 ноября 2020 г. в 08:17#84
После вчерашнего разговора с Игорем , нашёл серьёзный косяк в работе ару. Раньше я только догадывался , что где то косяк , а после разговора как лампочка зажглась
Когда в рамках одного фрейма идёт коррекция, то это выглядит вот "так" ! Нужен другой подход. Этот алгоритм обязательно будет стучать. И чем ниже частота тем сильнее это будет появляться. Зато теперь понятно почему когда я музыку слушал и там били низы зачастую проскакивал стук.
На фото оригинал и обработанный алгоритмом ару.
Когда в рамках одного фрейма идёт коррекция, то это выглядит вот "так" ! Нужен другой подход. Этот алгоритм обязательно будет стучать. И чем ниже частота тем сильнее это будет появляться. Зато теперь понятно почему когда я музыку слушал и там били низы зачастую проскакивал стук.
На фото оригинал и обработанный алгоритмом ару.
6 ноября 2020 г. в 08:26#85
Буду пробовать так (абсолютные значения замеров):
Нужно обрабатывать СКАТ , а не искать только пики.
Нужно обрабатывать СКАТ , а не искать только пики.
6 ноября 2020 г. в 01:02#86
Цитата: ra0ahcПосле вчерашнего разговора с Игорем , нашёл серьёзный косяк в работе ару.
Честно говоря, вообще не понимаю, в чём там могут быть проблемы.

Ставим АЦП, приведённый на вход максимальный сигнал должен быть -10 дБ от его перегрузки, т. е., её перегруз исключён по определению, разве что, на то время, пока сильносигнальная АРУ не отработает, а это единицы миллисекунд.
По умолчанию, выходной сигнал ЦАП вычисляется как 3162*вход АЦП (+70 дБ). Как только входной сигнал на АЦП превышает -80 дБ от максимума (как раз, сумма 70 и 10), коэффициент усиления пропорционально роняем, удерживая уровень на выходе ЦАП на пиках равным, на этом этапе можно и интегрирование сделать, допустив перегрузку ЦАП на коротких импульсах, он же, кстати, будет и лимитером работать по нулевому уровню.
Никто не запрещает работать в номинале на уровне -6 дБ от максимума ЦАП, получится лимитер +6 дБ, или те же 3 дБ, как у меня в последних версиях монстра.
Можно две петли сделать, как у меня - быструю и медленную - с одной все хотелки получить проблематично.

Естественно, после лимитера должен быть ФНЧ, в противном случае, расширение спектра на пиках будет слушаться ацтойно.
И никаких проблем нет, от слова вообще - полное повторение моего аналогового алгоритма АРУ, в котором никаких глюков нет и в помине, и адекватной реальной замены которому с полной объективной выкладкой получившихся результатов, а не только фантазиями, которых я и сам мастер нагнать 500 вариантов, пока что никто не придумал...
6 ноября 2020 г. в 01:49#87
Нарвался на пульсации блока питания компьютера
ару стремится даже их отработать.
ару стремится даже их отработать.
6 ноября 2020 г. в 02:42#88
Еще просидел. Теперь я знаю как компрессор делается, но к ару это мало отношение имеет. Бился, бился - все равно компрессор выходит и всё 
ОПЯТЬ ВСЕ УДАЛИЛ .

ОПЯТЬ ВСЕ УДАЛИЛ .
6 ноября 2020 г. в 04:16#89
По выше нарисованному чертежу новой ару сделал алгоритм.
Как то работате.
На рисунке стыковка шума (максимальное усиление) и два тона (с максимальной амплитудой мин усиление)
Как то работате.
На рисунке стыковка шума (максимальное усиление) и два тона (с максимальной амплитудой мин усиление)
6 ноября 2020 г. в 04:26#90
Да Вы ступеньки покажите с однотоновым перепадом 60 дБ, т. е., идёт 10 мкВ, потом 10 мВ, потом - назад, переходная характеристика интересна... 
