|
本帖最后由 caileili 于 2010-4-4 02:05 编辑 2 o# g, m" ~3 Q$ Q
(2)采样频率2n->3n的算法,非整数倍…………
6 x4 ]5 j9 Q1 Y8 I& E2 x# H/ l1 M; J整数倍SRC和非整数倍有什么不同吗?没有的。其实非整数倍升频 = 整数倍升频 + 整数倍降频 而已,而且降频时还根本不需要计算,直接跳着取数就可以了。
/ |$ a# H3 ^2 S! l3 T
" K3 N2 t" Y* w0 ^! N% D! x引用 ...
) N8 u, G4 J& G6 S) C' W2 RTimme 发表于 2010-4-3 11:03 ![]() ; T0 W' l3 a% u+ p
* A# o. s) i* O+ ~" r/ A
![]()
2 O5 ^3 L+ X% ^
6 }5 O' D0 {3 S* ^1 f那就按这位兄台的高见对图例中非整数倍取样重新进行演算:(没时间画图,大家看步骤理解吧!)
7 e" k( }# _/ G, r; s原始:0,1,0,-1,0, 0,1,0 ……+ \; X" ]# `/ S' Q
整数倍升频:[0,0,0],[1,1,1],[0,0,0],[-1-1,-1],[0,0,0], [0,0,0],[1,1,1],[0,0,0] ……
/ Q( N H/ D) W9 \4 ^% @8 {# V低通(简单):[0,0,0.33],[0.66,1,0.66],[0.33,0,-0.33],[-0.66,-1,-0.66],[-0.33,0,0], [0,0,0.33],[0.66,1,0.66],[0.33,0,0] ……% E+ D5 ]$ _8 }
整数倍降频:[0,0.33],[1],[0.33,-0.33],[-1],[-0.33,0], [0],[0.66,0.66],[0] ……
( o$ \( q* s, v2 z# K输出:0,0.33,1,0.33,-0.33,-1,-0.33,0, 0,0.66,0.66,0 ……
( `$ ~0 @4 T8 q! f+ X1 K0 L
# s# }% M1 |. s) [7 X, a9 W原始的第二三四取样点之间是条直线波形[1,0,-1],经非整数倍取样后输出波形变成了[1,0.33,-0.33,-1]仍是条直线,此时没有失真;/ N# d! C, Z, Q1 u- x" i; `% c
原始的第四五取样点之间是条直线波形[-1,0],经非整数倍取样后输出波形变成了[-1,-0.33,0]是条折线,即对原始波形间存在变形/失真5 v9 a7 |7 a. H% C
原始的第六七八取样点之间是条上三角波形[0,1,0],经非整数倍取样后输出波形变成了[0,0.66,0.66,0]是个被削波的梯形,即对原始波形间存在较大变形/失真
8 K/ E5 Z% X2 X) P: S看来这种非整数倍SRC算法的失真确实是存在的(演示图片描述是恰当的),而且可以看到是在整数倍降频(直接跳着取数)过程中产生了失真,在输出时的时间位移上也会产生失真,这些不是改进低通平滑算法能解决的,所以不能说是我演示时低通算法的问题哦!& c% u; t: R4 G5 M" j; t) Y, l! v
3 @- V9 m! [) {5 p" }换个角度来说吧,如果这种简单的非整数倍SRC算法不存在失真,那AC97的SRC问题也就不会出现了,很多声卡也不会搞双晶振了,Foobar里面也不会开发这么多重采样插件了……!- `' C( P2 e, t) D- J x
Foobar里的SSRC X重采样插件的保真度挺高,所需CPU运算也挺高的,所以它的算法原理应该相当复杂的,不然也不会达到这么高的转换音质了! |
|