-
Notifications
You must be signed in to change notification settings - Fork 7
/
synthesis_filters.jl
126 lines (109 loc) · 3.46 KB
/
synthesis_filters.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
function test_filt_base!(f::Function, order, delay, args...)
srand(98765)
dummy_input = rand(1024)
dummy_sp = abs.(fft(dummy_input))
dummy_logsp = log.(dummy_sp)
dummy_mgceps = rand(order + 1)
@assert applicable(f, first(dummy_input), dummy_mgceps, args..., delay)
for x in dummy_input
@test isfinite.(f(x, dummy_mgceps, args..., delay))
end
end
println("test waveform generation filters")
println("-- test_poledf")
for order in [20, 25, 30]
println(" where order = $order")
delay = poledf_delay(order)
test_filt_base!(poledf, order, delay)
end
let
@test_throws DimensionMismatch poledf(0.0, ones(10), ones(1))
end
println("-- test_lmadf")
for order in [20, 25, 30]
for pd in 4:5
println(" where order = $order, pd = $pd")
delay = lmadf_delay(order, pd)
test_filt_base!(lmadf, order, delay, pd)
end
end
let
# invalid delay length
@test_throws DimensionMismatch lmadf(0.0, ones(10), 5, ones(1))
# invalid pade
@test_throws ArgumentError lmadf(0.0, ones(10), 3, lmadf_delay(9, 3))
end
println("-- test_lspdf")
for order in [20, 21, 25, 26, 30, 31]
println(" where order = $order")
delay = lspdf_delay(order)
test_filt_base!(lspdf, order, delay)
end
let
@test_throws DimensionMismatch lspdf(0.0, ones(10), ones(1))
@test_throws DimensionMismatch lspdf(0.0, ones(9), ones(1))
end
println("-- test_ltcdf")
for order in [20, 21, 25, 26, 30, 31]
println(" where order = $order")
delay = ltcdf_delay(order)
test_filt_base!(ltcdf, order, delay)
end
let
@test_throws DimensionMismatch ltcdf(0.0, ones(10), ones(1))
end
println("-- test_glsadf")
for order in [20, 21, 25, 26, 30, 31]
for stage in 1:10
println(" where order = $order, stage = $stage")
delay = glsadf_delay(order, stage)
test_filt_base!(glsadf, order, delay, stage)
end
end
let
# invalid delay length
@test_throws DimensionMismatch glsadf(0.0, ones(10), 1, ones(1))
# invalid stage
@test_throws ArgumentError glsadf(0.0, ones(10), 0, glsadf_delay(9, 0))
end
println("-- test_mlsadf")
for order in [20, 25, 30]
for α in [0.0, 0.35, 0.41, 0.5]
for pd in 4:5
println(" where order = $order, α = $α, pd = $pd")
delay = mlsadf_delay(order, pd)
test_filt_base!(mlsadf, order, delay, α, pd)
end
end
end
let
# invalid delay length
@test_throws DimensionMismatch mlsadf(0.0, ones(10), 0.41, 5, ones(1))
# invalid pade
@test_throws ArgumentError mlsadf(0.0, ones(10), 0.41, 3, mlsadf_delay(9, 3))
end
println("-- test_mglsadf")
for order in [20, 25, 30]
for α in [0.0, 0.35, 0.41, 0.5]
for stage in 1:10
println(" where order = $order, α = $α, stage = $stage")
delay = mglsadf_delay(order, stage)
test_filt_base!(mglsadf, order, delay, α, stage)
end
end
end
let
# invalid delay length
@test_throws DimensionMismatch mglsadf(0.0, ones(10), 0.41, 1, ones(1))
# invalid stage
@test_throws ArgumentError mglsadf(0.0, ones(10), 0.41, 0, glsadf_delay(9, 0))
end
let
@test applicable(SPTK.poledf_delay_length, 10)
@test applicable(SPTK.lmadf_delay_length, 10, 5)
@test applicable(SPTK.lspdf_delay_length, 10)
@test applicable(SPTK.ltcdf_delay_length, 10)
@test applicable(SPTK.glsadf_delay_length, 10, 1)
@test applicable(SPTK.mlsadf_delay_length, 10, 5)
@test applicable(SPTK.mglsadf_delay_length, 10, 1)
end