1 /* Effect: change sample rate Copyright (c) 2008,12 robs@users.sourceforge.net
3 * This library is free software; you can redistribute it and/or modify it
4 * under the terms of the GNU Lesser General Public License as published by
5 * the Free Software Foundation; either version 2.1 of the License, or (at
6 * your option) any later version.
8 * This library is distributed in the hope that it will be useful, but
9 * WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
11 * General Public License for more details.
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this library; if not, write to the Free Software Foundation,
15 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 static const sample_t half_fir_coefs_8
[] = {
19 0.3115465451887802, -0.08734497241282892, 0.03681452335604365,
20 -0.01518925831569441, 0.005454118437408876, -0.001564400922162005,
21 0.0003181701445034203, -3.48001341225749e-5,
24 #define CONVOLVE _ _ _ _ _ _ _ _
26 #define COEFS half_fir_coefs_8
27 #include "rate_half_fir.h"
29 static const sample_t half_fir_coefs_9
[] = {
30 0.3122703613711853, -0.08922155288172305, 0.03913974805854332,
31 -0.01725059723447163, 0.006858970092378141, -0.002304518467568703,
32 0.0006096426006051062, -0.0001132393923815236, 1.119795386287666e-5,
35 #define CONVOLVE _ _ _ _ _ _ _ _ _
37 #define COEFS half_fir_coefs_9
38 #include "rate_half_fir.h"
40 static const sample_t half_fir_coefs_10
[] = {
41 0.3128545521327376, -0.09075671986104322, 0.04109637155154835,
42 -0.01906629512749895, 0.008184039342054333, -0.0030766775017262,
43 0.0009639607022414314, -0.0002358552746579827, 4.025184282444155e-5,
44 -3.629779111541012e-6,
47 #define CONVOLVE _ _ _ _ _ _ _ _ _ _
49 #define COEFS half_fir_coefs_10
50 #include "rate_half_fir.h"
52 static const sample_t half_fir_coefs_11
[] = {
53 0.3133358837508807, -0.09203588680609488, 0.04276515428384758,
54 -0.02067356614745591, 0.00942253142371517, -0.003856330993895144,
55 0.001363470684892284, -0.0003987400965541919, 9.058629923971627e-5,
56 -1.428553070915318e-5, 1.183455238783835e-6,
59 #define CONVOLVE _ _ _ _ _ _ _ _ _ _ _
61 #define COEFS half_fir_coefs_11
62 #include "rate_half_fir.h"
64 static const sample_t half_fir_coefs_12
[] = {
65 0.3137392991811407, -0.0931182192961332, 0.0442050575271454,
66 -0.02210391200618091, 0.01057473015666001, -0.00462766983973885,
67 0.001793630226239453, -0.0005961819959665878, 0.0001631475979359577,
68 -3.45557865639653e-5, 5.06188341942088e-6, -3.877010943315563e-7,
71 #define CONVOLVE _ _ _ _ _ _ _ _ _ _ _ _
73 #define COEFS half_fir_coefs_12
74 #include "rate_half_fir.h"
76 static const sample_t half_fir_coefs_13
[] = {
77 0.3140822554324578, -0.0940458550886253, 0.04545990399121566,
78 -0.02338339450796002, 0.01164429409071052, -0.005380686021429845,
79 0.002242915773871009, -0.000822047600000082, 0.0002572510962395222,
80 -6.607320708956279e-5, 1.309926399120154e-5, -1.790719575255006e-6,
84 #define CONVOLVE _ _ _ _ _ _ _ _ _ _ _ _ _
86 #define COEFS half_fir_coefs_13
87 #include "rate_half_fir.h"
89 static struct {int num_coefs
; stage_fn_t fn
; float att
;} const half_firs
[] = {
100 #define VAR_LENGTH p->n
101 #define VAR_CONVOLVE while (j < FIR_LENGTH) _
102 #define VAR_POLY_PHASE_BITS p->phase_bits
104 #define FUNCTION vpoly0
105 #define FIR_LENGTH VAR_LENGTH
106 #define CONVOLVE VAR_CONVOLVE
107 #include "rate_poly_fir0.h"
109 #define FUNCTION vpoly1
110 #define COEF_INTERP 1
111 #define PHASE_BITS VAR_POLY_PHASE_BITS
112 #define FIR_LENGTH VAR_LENGTH
113 #define CONVOLVE VAR_CONVOLVE
114 #include "rate_poly_fir.h"
116 #define FUNCTION vpoly2
117 #define COEF_INTERP 2
118 #define PHASE_BITS VAR_POLY_PHASE_BITS
119 #define FIR_LENGTH VAR_LENGTH
120 #define CONVOLVE VAR_CONVOLVE
121 #include "rate_poly_fir.h"
123 #define FUNCTION vpoly3
124 #define COEF_INTERP 3
125 #define PHASE_BITS VAR_POLY_PHASE_BITS
126 #define FIR_LENGTH VAR_LENGTH
127 #define CONVOLVE VAR_CONVOLVE
128 #include "rate_poly_fir.h"
133 #define poly_fir_convolve_U100 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
134 #define FUNCTION U100_0
135 #define FIR_LENGTH U100_l
136 #define CONVOLVE poly_fir_convolve_U100
137 #include "rate_poly_fir0.h"
140 #define poly_fir_convolve_u100 _ _ _ _ _ _ _ _ _ _ _
141 #define FUNCTION u100_0
142 #define FIR_LENGTH u100_l
143 #define CONVOLVE poly_fir_convolve_u100
144 #include "rate_poly_fir0.h"
146 #define FUNCTION u100_1
147 #define COEF_INTERP 1
149 #define FIR_LENGTH u100_l
150 #define CONVOLVE poly_fir_convolve_u100
151 #include "rate_poly_fir.h"
154 #define FUNCTION u100_2
155 #define COEF_INTERP 2
157 #define FIR_LENGTH u100_l
158 #define CONVOLVE poly_fir_convolve_u100
159 #include "rate_poly_fir.h"
162 typedef struct {float scalar
; stage_fn_t fn
;} poly_fir1_t
;
163 typedef struct {float beta
; poly_fir1_t interp
[3];} poly_fir_t
;
165 static poly_fir_t
const poly_firs
[] = {
166 {-1, {{0, vpoly0
}, { 7.2, vpoly1
}, {5.0, vpoly2
}}},
167 {-1, {{0, vpoly0
}, { 9.4, vpoly1
}, {6.7, vpoly2
}}},
168 {-1, {{0, vpoly0
}, {12.4, vpoly1
}, {7.8, vpoly2
}}},
169 {-1, {{0, vpoly0
}, {13.6, vpoly1
}, {9.3, vpoly2
}}},
170 {-1, {{0, vpoly0
}, {10.5, vpoly2
}, {8.4, vpoly3
}}},
171 {-1, {{0, vpoly0
}, {11.85,vpoly2
}, {9.0, vpoly3
}}},
173 {-1, {{0, vpoly0
}, { 8.0, vpoly1
}, {5.3, vpoly2
}}},
174 {-1, {{0, vpoly0
}, { 8.6, vpoly1
}, {5.7, vpoly2
}}},
175 {-1, {{0, vpoly0
}, {10.6, vpoly1
}, {6.75,vpoly2
}}},
176 {-1, {{0, vpoly0
}, {12.6, vpoly1
}, {8.6, vpoly2
}}},
177 {-1, {{0, vpoly0
}, { 9.6, vpoly2
}, {7.6, vpoly3
}}},
178 {-1, {{0, vpoly0
}, {11.4, vpoly2
}, {8.65,vpoly3
}}},
180 {10.62, {{U100_l
, U100_0
}, {0, 0}, {0, 0}}},
181 {11.28, {{u100_l
, u100_0
}, {u100_1_b
, u100_1
}, {u100_2_b
, u100_2
}}},
182 {-1, {{0, vpoly0
}, { 9, vpoly1
}, { 6, vpoly2
}}},
183 {-1, {{0, vpoly0
}, { 11, vpoly1
}, { 7, vpoly2
}}},
184 {-1, {{0, vpoly0
}, { 13, vpoly1
}, { 8, vpoly2
}}},
185 {-1, {{0, vpoly0
}, { 10, vpoly2
}, { 8, vpoly3
}}},
186 {-1, {{0, vpoly0
}, { 12, vpoly2
}, { 9, vpoly3
}}},