IVX Написал:s3t, у меня есть завтра время, давай THD+N samples для сравнения с АР.http://xdxd.io/data/uploads/test_tones_48k_v1.zip
какой хочешь выбирай)) N, N2, N3 = разные уровни шума. PN = с ФШ, D = distortion (-100dBc).
Все файлики 48/24, не знаю какие у тебя там поддерживаются. Поэтому IMD кривенький с алиасами.
Шум тоже скорее всего с алиасами, т.к. я его не кондициировал ниразу. Но в итоге оно сложилось в пассбэнд и уж "как есть", т.е. считай что обычный шум))
шум Гауссовский. синусы кроме PN когерентны, особенно в IMD2 :)
1k Sine+D+N+PN.wav
1k Sine+D+N.wav
1k Sine+D+N2+PN.wav
1k Sine+D+N2.wav
1k Sine+D+N3.wav
1k Sine+D+PN.wav
1k Sine+D.wav
1k Sine.wav
IMD+D+N2.wav
IMD+D.wav
IMD.wav
IMD2+D+N2.wav
IMD2+D.wav
IMD2.wav
Noise.wav
Noise2.wav
Noise3.wav
Про ресемплер. В итоге такой, работает вполне сносно (даже на маленьких отстройках, хоть Fs*0.999999934392339):
апсемплинг *64..128 (zero stuffing + sinc-windowed FIR, window = Kaiser-9)
даунсемплинг через квадратическую интерполяцию между подходящими по местоположению сэмплами (кубическая и прочие криво-интерполяции не подошли т.к. имеют излом в точках стыков предидущих и последующих интерполяций, который вылазит ВЧ мусором на Фс и не только - в простонародье "non-differentiable").
Самое забавное, что линейная работала лучше кубической :)
В итоге можно подвинуть сэмплирование совсем чуточку по частоте сэмплирования, на уровне каждого сэмпла. Т.е. дай график плавающей частоты сэмплирования и получишь ФШ. Или наоборот вычтешь ФШ, как повезет :)
Теперь нужна считалка частоты из потока. Точная. Ну хоть заранее знаю чем ее значения интерполировать)
Аминь.