Audio Perfection Forum

Полная версия: FFT и прочее - как правильно?
Вы просматриваете упрощённую версию нашего контента. Просмотр полной версии с полным форматированием.
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Какое-то оно не людски крутое вьіходит
Я никуда не делся, все это время пилю чтоб работало))
Работают
- асио
- васапи эксклюзив
- васапи лупбэк (чтение потока до выхода на звуковушку, можно мерять всякие звукопроизводящие програмки)
- демо (разные режимы - с/без шумом, искажениями, и 2 синуса 19+20). С симуляцией битности и ЧД :) Полезно для понимания всего всея, т.к. параметры сигналов заведомо известны, считай калибровочные - 0дб синус, -120дб шум, -100дб гармошки).

Прикручиваю мат функции между каналами,
- сумма
- аверейдж
- разница (можно делать псевдо-дифф)
- чередование LRLR (RLRL) каналов с удваиванием ЧД - для PCM4222 режима 384кГц через 192кГц спдиф (оно один и тот-же канал чередует между L и R)
- кросс-корреляшки, наконец-то. Хотя до конца не понял куда их прикручивать))
(upd: опять печалька, нужно делать после ффт, https://www.edn.com/design/test-and-meas...ical-guide )

кстати, про режим ФШ. я его всегда делал через одно место, брал частоту пика, помечал как "0 Гц" и рисовал все, что правее. Такой себе SSB.
Но во всех девайсах используют digital downconversion, т.е. перемножают сигнал с частотой "конверсии", и уже из него естественным образом получают SSB. фигня та-же и оставить деревенский способ, или все-же мучаться с даунконвертером? :)


и нужно, наконец-то, прикрутить компенсатор оконных функций, не каким-то чудо-циферкой, а все-же высчитывать из самой функции, т.к. их у меня много и странных))
s3t Написал:Аминь
Аллелуйа
Пока шлялся по инетам и искал что такое HFT95 наткнулся вот на такой софт
https://www.hpw-works.com
Может, конечно баян, а может что интересное там увидится для S3T`s FFT.

Это мануал к нему.
http://download.hpw-works.com/HpW-Works32_3_7_2.zip
Black_Jack Написал:Пока шлялся по инетам и искал что такое HFT95 наткнулся вот на такой софт
https://www.hpw-works.com

Дык, это штука давно известная. Я пробовал когда-то, оно смогла даже 768 переварить. Но триал у меня давно закончился,уже не запускается.

Была на diyaudio кроме HpW еще одна программка, забыл название, тоже весьма дорогая. Ее продавали там с большой скидкой, в составе RTX ADC/DAC от Дженса. Говорят неплохая, я не пробовал.
s3t Написал:прикрутить компенсатор оконных функций, не каким-то чудо-циферкой, а все-же высчитывать из самой функции, т.к. их у меня много и странных
То то я смотрю ты их так быстро прикрутил :)
Там часть точно не нужна, например Кайзеры мелких порядков (бетта меньше 5) не интересны, они похожи на другие не очень высокоизбирательные окна, которые у тебя уже есть.
Кайзер с бетта 7-11 в принципе может быть интересен. Можешь ввести задание бетты или оставить парочку высоких порядков.
Вопрос про фазу луныгарошек, относительно несущей.
Может ли быть гармошка с фазой, отличной от 0 и 180 относительно несущей?
Мои методы синтеза чот дают только 0 и 180 Sad

И... как считать нечетные гармошки, они по стандарту перевернуты (180) или таки "0"?
Как-то криво обьясняю...
Допустим есть ряд гармошек
sin(x)
sin(2x)
sin(3x)
sin(4x)
^^ это правильный ряд, или должно быть
sin(x)
cos(2x)
sin(3x)
cos(4x)
? :)

наверное опять непонятно. видимо я до конца не понял чего сделал, но оно научилось рисовать фазу гармошек, зачастую 0 и 180 :)
s3t Написал:видимо я до конца не понял чего сделал
Сделай тестовый сигнал, пару гармошек сдвинутых по фазе. И посмотри.
Не, с фазой все печально.

Беру ее из максимальных бинов, в 360-градусном виде,
p1 = 180 * atan2(im,re) / pi;

затем для каждой гармошки,
h1 = p1 - p1; //0
h2 = p2 - 2 * p1 - 1*90;
h3 = p3 - 3 * p1 - 2*90;

приходится заворачивать фазу в 0..180 для стабильного результата, иначе - если заворачивать в 0..360, то она иногда прыгает между +0 и +180 градусов на тех-же сигналах.

почему все эти манипуляции с циферками при вычитании?
- ффт на выходе всегда крутит фазу +90 градусов, так уж оно работает
- почему-то обычное вычитание фазы несущей из гармошек не работало (вернее работало в одном только случае, когда частота сигнала кратна сэмплрейту). а в таком виде - работает, почему-то, всегда :)

решить проблему с 360-градусной фазой я не осилил.
В интернетах пишут про пост-коррекцию результатов ФФТ, находя из трех максимальных бинов настоящий максимум по всяким аппроксимизациям формы оконной функции - с правильными значениями частоты и прочего. Реализовал для Ханна, частота на лишних 3-4 знака стала точней, но все всеравно криво - плюс это для каждого окна нужно придумывать коррекцию.
ну и все эти алгоритмы разваливаются, стоит добавить немножко шума Sad ( https://indico.cern.ch/event/132526/cont...ements.pdf )
Вот вавчик, какие там фазы у 1к и 2к получаются сразу после ффт?
Пишет 90 :) хотя на самом деле может быть и 270.
[attachment=6618]

гы, сначала обломался т.к. нету куда вавки засовывать в проге... а потом просто сграбил вывод звуковушки (цифро-лупбек васапи, удобно), правда в 48к но не страшно :)
* 96к тоже работает, но нужно ручками выставлять в звуковушке. хм...
Вот, а на самом деле — 45.

[attachment=6619]
А, хотя нет, 90 :) Это у меня 1к на 45 сдвинут, т.е. относительно него 2к как раз 90 :) Тогда вот так надо, тут 45
Ага)
[attachment=6621]
Ну значит должно быть правильно :)
Вместо того, чтоб завернуть и отправить, я прикручиваю фичи Sad

С другой стороны - в процессе вылавливаются и баги...

Встречайте, автоопределялка сигнал-шум. Т.е. спуры отдельно, шум отдельно.
Теперь для ТХД можно считать HD, HD+Spurs, HD+Spurs+Noise, и все составляющие поотельности :)

Получив только шум (без сигнала), теоретически можно высчитать вклад каждого шума - розовый, белый, и частота пересечения)
хз зачем))

А, вспомнил. Если хочется посмотреть одновременно и на шум и на сигнал, то это в обычном виде невозможно ввиду различных скэйлингов для шума с сигнала. Отделив их, и прифотошопив обратно после скэйлинга - можно получить правильное отображение всего всея :)

[attachment=6622]
[attachment=6623]
Осталось прикрутить нетворк аналайзер и всё :)
Оказалось, что HD считалка в корне не верна. И, кажется, у всех))
Сигнал, торчащий на 6дб из шумовой полки, на самом деле находится в ровень с полкой.
Вернее торчащий на 3дБ в мощности) т.к. сумма мощностей двух равных сигналов (полка + сигнал) дают +3дб мощи :)
Благодаря определению шумовой полки, получилось сделать и этот "компенсатор".
Эталонный "-100дБ" искажений с шумовой полкой "-100дб макс" ранее мерялся как -96дб, а сейчас - -99--103дБ.

Заодно отдельный скейлинг полки и сигналов в зависимости от окна. Результат - смена окна не влияет на шумовую полку, и она всегда правильна.

Блин, теперь это все в UI прикручивать каким-то логическим образом.
И это, расчет уровня гармошек "селективным микровольтметром" не самая хорошая затея, ловит много мусора рядом, если реальный шум уровнем с сами гармошки, и результат от длинного ФФТ не улучшается.
При высоком шуме следует брать максимумы, они получше, хотя страдают от scalloping-а (попадания частоты между бинами и потери уровня).
Последнее фиг скомпенсируешь. Вернее можно, но нужно знать поведение оконной функции на пиках. И пик ли это воще... Хотя... раз уж я считаю ENBW из множителей окна, почему бы его не пропустить через ффт... хм) чорт.

компенсация уровня гармошек из
https://www.edn.com/design/test-and-meas...ical-guide

описание глюков ФФТ
https://kluedo.ub.uni-kl.de/frontdoor/de...ements.pdf
S3t... пора тебе диссертацию писать.

Хотя, не исключаю, что у тебя уже есть :)
не, меня из школы выгнали, не будет дессиртации) развишто ввиде кода))
я математику ваще не понимаю)) вот есть программирование, в нем все просто. Что написал - то и работает)
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18