1use jgenesis_common::audio::fir_resampler::LpfCoefficients;
2
3pub const LPF_TAPS: usize = 401;

Kaiser window, stopband attenuation 40 dB, cutoff frequency around 10000 Hz No, this isn't great quality, but the point of this filter is to be faster than the sinc resampler

7pub const LPF_COEFFICIENTS: &LpfCoefficients<LPF_TAPS> = &LpfCoefficients([
8    -0.0002284517947644082,
9    -0.00023537954028227047,
10    -0.0002422630637436776,
11    -0.00024909037556038036,
12    -0.0002558491747722877,
13    -0.0002625268548086573,
14    -0.0002691105096641641,
15    -0.00027558694048883045,
16    -0.00028194266259032796,
17    -0.0002881639128466984,
18    -0.0002942366575270618,
19    -0.0003001466005174135,
20    -0.00030587919194812976,
21    -0.00031141963721933324,
22    -0.00031675290641978987,
23    -0.0003218637441345337,
24    -0.0003267366796359461,
25    -0.0003313560374525396,
26    -0.00033570594830923084,
27    -0.0003397703604324125,
28    -0.0003435330512126823,
29    -0.00034697763921761384,
30    -0.0003500875965465055,
31    -0.0003528462615185985,
32    -0.0003552368516857893,
33    -0.0003572424771604534,
34    -0.00035884615424853377,
35    -0.0003600308193776433,
36    -0.00036077934330950613,
37    -0.0003610745456256455,
38    -0.0003608992094748407,
39    -0.0003602360965704697,
40    -0.0003590679624254789,
41    -0.000357377571812349,
42    -0.00035514771443506714,
43    -0.0003523612207997586,
44    -0.00034900097827030295,
45    -0.0003450499472949279,
46    -0.000340491177789462,
47    -0.000335307825662625,
48    -0.000329483169468458,
49    -0.0003230006271707071,
50    -0.0003158437730037296,
51    -0.0003079963544142405,
52    -0.000299442309067991,
53    -0.0002901657819052589,
54    -0.0002801511422288277,
55    -0.0002693830008079564,
56    -0.0002578462269816753,
57    -0.000245525965744588,
58    -0.00023240765479824163,
59    -0.00021847704155099817,
60    -0.00020372020004925543,
61    -0.00018812354782277955,
62    -0.00017167386262685234,
63    -0.00015435829906389287,
64    -0.00013616440506719046,
65    -0.0001170801382293756,
66    -9.709388195826548e-05,
67    -7.619446144276344e-05,
68    -5.437115941152174e-05,
69    -3.1613731667161554e-05,
70    -7.912422378921362e-06,
71    1.6742020883286877e-05,
72    4.235833239031084e-05,
73    6.894471378743416e-05,
74    9.650881993689146e-05,
75    0.00012505774508562813,
76    0.00015459800937452778,
77    0.0001851355457051005,
78    0.00021667568697938955,
79    0.0002492231537286146,
80    0.00028278204214578093,
81    0.0003173558125372047,
82    0.00035294727820759774,
83    0.00038955859479302687,
84    0.0004271912500557257,
85    0.0004658460541543731,
86    0.0005055231304030933,
87    0.0005462219065320135,
88    0.0005879411064618498,
89    0.000630678742604522,
90    0.000674432108701409,
91    0.0007191977732103645,
92    0.0007649715732521789,
93    0.000811748609126669,
94    0.0008595232394080938,
95    0.0009082890766291102,
96    0.0009580389835619057,
97    0.0010087650701046935,
98    0.0010604586907811406,
99    0.0011131104428598003,
100    0.00116671016510002,
101    0.0012212469371302534,
102    0.0012767090794640942,
103    0.0013330841541587893,
104    0.0013903589661203516,
105    0.0014485195650588343,
106    0.001507551248096671,
107    0.0015674385630323907,
108    0.0016281653122613886,
109    0.0016897145573548007,
110    0.0017520686242968988,
111    0.0018152091093807776,
112    0.0018791168857614745,
113    0.0019437721106650159,
114    0.0020091542332512386,
115    0.0020752420031275903,
116    0.0021420134795104634,
117    0.0022094460410299766,
118    0.002277516396173479,
119    0.0023462005943623867,
120    0.0024154740376563597,
121    0.00248531149307815,
122    0.002555687105551848,
123    0.002626574411446609,
124    0.002697946352717333,
125    0.002769775291633151,
126    0.002842033026083932,
127    0.0029146908054544824,
128    0.0029877193470554506,
129    0.003061088853099403,
130    0.003134769028209945,
131    0.0032087290974512103,
132    0.0032829378248644464,
133    0.0033573635324979302,
134    0.0034319741199158797,
135    0.003506737084171506,
136    0.003581619540228867,
137    0.003656588241817658,
138    0.0037316096027046304,
139    0.003806649718364806,
140    0.0038816743880352917,
141    0.0039566491371339696,
142    0.004031539240024983,
143    0.004106309743112513,
144    0.004180925488243961,
145    0.004255351136403288,
146    0.0043295511916748835,
147    0.004403490025458086,
148    0.004477131900912042,
149    0.0045504409976104354,
150    0.004623381436385209,
151    0.0046959173043383,
152    0.004768012680000019,
153    0.00483963165861261,
154    0.004910738377517289,
155    0.004981297041622904,
156    0.00505127194893419,
157    0.005120627516117476,
158    0.005189328304081626,
159    0.005257339043551866,
160    0.0053246246606141155,
161    0.005391150302207392,
162    0.005456881361541875,
163    0.005521783503420134,
164    0.005585822689439192,
165    0.005648965203050996,
166    0.005711177674459035,
167    0.005772427105328954,
168    0.0058326808932910364,
169    0.005891906856212653,
170    0.005950073256218895,
171    0.006007148823439865,
172    0.006063102779463118,
173    0.00611790486047026,
174    0.006171525340036678,
175    0.0062239350515738276,
176    0.0062751054103937455,
177    0.006325008435375681,
178    0.006373616770215284,
179    0.006420903704236878,
180    0.006466843192749901,
181    0.006511409876930931,
182    0.006554579103213134,
183    0.006596326942165388,
184    0.006636630206843741,
185    0.006675466470598464,
186    0.0067128140843202904,
187    0.006748652193110021,
188    0.006782960752356093,
189    0.006815720543205477,
190    0.006846913187413432,
191    0.0068765211615586155,
192    0.006904527810610308,
193    0.006930917360835277,
194    0.006955674932032353,
195    0.0069787865490833646,
196    0.007000239152809819,
197    0.0070200206101251736,
198    0.007038119723473414,
199    0.0070545262395450906,
200    0.007069230857262786,
201    0.007082225235028601,
202    0.007093501997226924,
203    0.007103054739976456,
204    0.007110878036126141,
205    0.007116967439490384,
206    0.007121319488319611,
207    0.0071239317080029,
208    0.007124802613000306,
209    0.0071239317080029,
210    0.007121319488319611,
211    0.007116967439490384,
212    0.007110878036126141,
213    0.007103054739976456,
214    0.007093501997226924,
215    0.007082225235028601,
216    0.007069230857262786,
217    0.0070545262395450906,
218    0.007038119723473414,
219    0.0070200206101251736,
220    0.007000239152809819,
221    0.0069787865490833646,
222    0.006955674932032353,
223    0.006930917360835277,
224    0.006904527810610308,
225    0.0068765211615586155,
226    0.006846913187413432,
227    0.006815720543205477,
228    0.006782960752356093,
229    0.006748652193110021,
230    0.0067128140843202904,
231    0.006675466470598464,
232    0.006636630206843741,
233    0.006596326942165388,
234    0.006554579103213134,
235    0.006511409876930931,
236    0.006466843192749901,
237    0.006420903704236878,
238    0.006373616770215284,
239    0.006325008435375681,
240    0.0062751054103937455,
241    0.0062239350515738276,
242    0.006171525340036678,
243    0.00611790486047026,
244    0.006063102779463118,
245    0.006007148823439865,
246    0.005950073256218895,
247    0.005891906856212653,
248    0.0058326808932910364,
249    0.005772427105328954,
250    0.005711177674459035,
251    0.005648965203050996,
252    0.005585822689439192,
253    0.005521783503420134,
254    0.005456881361541875,
255    0.005391150302207392,
256    0.0053246246606141155,
257    0.005257339043551866,
258    0.005189328304081626,
259    0.005120627516117476,
260    0.00505127194893419,
261    0.004981297041622904,
262    0.004910738377517289,
263    0.00483963165861261,
264    0.004768012680000019,
265    0.0046959173043383,
266    0.004623381436385209,
267    0.0045504409976104354,
268    0.004477131900912042,
269    0.004403490025458086,
270    0.0043295511916748835,
271    0.004255351136403288,
272    0.004180925488243961,
273    0.004106309743112513,
274    0.004031539240024983,
275    0.0039566491371339696,
276    0.0038816743880352917,
277    0.003806649718364806,
278    0.0037316096027046304,
279    0.003656588241817658,
280    0.003581619540228867,
281    0.003506737084171506,
282    0.0034319741199158797,
283    0.0033573635324979302,
284    0.0032829378248644464,
285    0.0032087290974512103,
286    0.003134769028209945,
287    0.003061088853099403,
288    0.0029877193470554506,
289    0.0029146908054544824,
290    0.002842033026083932,
291    0.002769775291633151,
292    0.002697946352717333,
293    0.002626574411446609,
294    0.002555687105551848,
295    0.00248531149307815,
296    0.0024154740376563597,
297    0.0023462005943623867,
298    0.002277516396173479,
299    0.0022094460410299766,
300    0.0021420134795104634,
301    0.0020752420031275903,
302    0.0020091542332512386,
303    0.0019437721106650159,
304    0.0018791168857614745,
305    0.0018152091093807776,
306    0.0017520686242968988,
307    0.0016897145573548007,
308    0.0016281653122613886,
309    0.0015674385630323907,
310    0.001507551248096671,
311    0.0014485195650588343,
312    0.0013903589661203516,
313    0.0013330841541587893,
314    0.0012767090794640942,
315    0.0012212469371302534,
316    0.00116671016510002,
317    0.0011131104428598003,
318    0.0010604586907811406,
319    0.0010087650701046935,
320    0.0009580389835619057,
321    0.0009082890766291102,
322    0.0008595232394080938,
323    0.000811748609126669,
324    0.0007649715732521789,
325    0.0007191977732103645,
326    0.000674432108701409,
327    0.000630678742604522,
328    0.0005879411064618498,
329    0.0005462219065320135,
330    0.0005055231304030933,
331    0.0004658460541543731,
332    0.0004271912500557257,
333    0.00038955859479302687,
334    0.00035294727820759774,
335    0.0003173558125372047,
336    0.00028278204214578093,
337    0.0002492231537286146,
338    0.00021667568697938955,
339    0.0001851355457051005,
340    0.00015459800937452778,
341    0.00012505774508562813,
342    9.650881993689146e-05,
343    6.894471378743416e-05,
344    4.235833239031084e-05,
345    1.6742020883286877e-05,
346    -7.912422378921362e-06,
347    -3.1613731667161554e-05,
348    -5.437115941152174e-05,
349    -7.619446144276344e-05,
350    -9.709388195826548e-05,
351    -0.0001170801382293756,
352    -0.00013616440506719046,
353    -0.00015435829906389287,
354    -0.00017167386262685234,
355    -0.00018812354782277955,
356    -0.00020372020004925543,
357    -0.00021847704155099817,
358    -0.00023240765479824163,
359    -0.000245525965744588,
360    -0.0002578462269816753,
361    -0.0002693830008079564,
362    -0.0002801511422288277,
363    -0.0002901657819052589,
364    -0.000299442309067991,
365    -0.0003079963544142405,
366    -0.0003158437730037296,
367    -0.0003230006271707071,
368    -0.000329483169468458,
369    -0.000335307825662625,
370    -0.000340491177789462,
371    -0.0003450499472949279,
372    -0.00034900097827030295,
373    -0.0003523612207997586,
374    -0.00035514771443506714,
375    -0.000357377571812349,
376    -0.0003590679624254789,
377    -0.0003602360965704697,
378    -0.0003608992094748407,
379    -0.0003610745456256455,
380    -0.00036077934330950613,
381    -0.0003600308193776433,
382    -0.00035884615424853377,
383    -0.0003572424771604534,
384    -0.0003552368516857893,
385    -0.0003528462615185985,
386    -0.0003500875965465055,
387    -0.00034697763921761384,
388    -0.0003435330512126823,
389    -0.0003397703604324125,
390    -0.00033570594830923084,
391    -0.0003313560374525396,
392    -0.0003267366796359461,
393    -0.0003218637441345337,
394    -0.00031675290641978987,
395    -0.00031141963721933324,
396    -0.00030587919194812976,
397    -0.0003001466005174135,
398    -0.0002942366575270618,
399    -0.0002881639128466984,
400    -0.00028194266259032796,
401    -0.00027558694048883045,
402    -0.0002691105096641641,
403    -0.0002625268548086573,
404    -0.0002558491747722877,
405    -0.00024909037556038036,
406    -0.0002422630637436776,
407    -0.00023537954028227047,
408    -0.0002284517947644082,
409]);