attempt to add a nfm deemphasis filter (recreating the others, too)

pull/48/head
Jakob Ketterl 2019-06-01 17:50:56 +02:00
rodzic 6ef2a74206
commit 5002ab9e09
2 zmienionych plików z 14 dodań i 6 usunięć

Wyświetl plik

@ -1115,6 +1115,7 @@ int deemphasis_nfm_ff (float* input, float* output, int input_size, int sample_r
DNFMFF_ADD_ARRAY(44100)
DNFMFF_ADD_ARRAY(8000)
DNFMFF_ADD_ARRAY(11025)
DNFMFF_ADD_ARRAY(12000)
if(!taps_length) return 0; //sample rate n
int i;

Wyświetl plik

@ -39,10 +39,12 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// - they are most likely needed at given fixed sample rates
/*octave>
pkg load signal
function mkdeemph(sr,tapnum,norm_freq)
% Make NFM deemphasis filter. Parameters: samplerate, filter length, frequency to normalize at (filter gain will be 0dB at this frequency)
normalize_at_freq = @(vect,freq) vect/dot(vect,sin(2*pi*freq*[0:1/sr:size(vect)(1)/sr]));
normalize_at_freq = @(vect,freq) vect/dot(vect,sin(2*pi*freq*[0:1/sr:(size(vect)(1)-1)/sr]));
freqvect=[0,200, 200,400, 400,3700, 3700,sr/2];
coeffs=firls(tapnum,freqvect/(sr/2),[0,0,0,1,1,0.1,0,0]);
coeffs=normalize_at_freq(coeffs,norm_freq);
@ -54,15 +56,20 @@ end
//mkdeemph(48000,199,500)
float deemphasis_nfm_predefined_fir_48000[] =
{ 0.00172568, 0.00179665, 0.00191952, 0.00205318, 0.00215178, 0.00217534, 0.00209924, 0.00192026, 0.00165789, 0.0013502, 0.00104545, 0.000790927, 0.000621911, 0.000553077, 0.000574554, 0.000653624, 0.000741816, 0.000785877, 0.000740151, 0.000577506, 0.000296217, -7.89273e-05, -0.0005017, -0.000914683, -0.00126243, -0.00150456, -0.00162564, -0.0016396, -0.00158725, -0.00152751, -0.00152401, -0.00163025, -0.00187658, -0.00226223, -0.00275443, -0.003295, -0.0038132, -0.00424193, -0.00453375, -0.00467274, -0.00467943, -0.00460728, -0.00453119, -0.00453056, -0.00467051, -0.00498574, -0.00547096, -0.00608027, -0.00673627, -0.00734698, -0.00782705, -0.00811841, -0.00820539, -0.00812057, -0.00793936, -0.00776415, -0.00770111, -0.00783479, -0.00820643, -0.00880131, -0.00954878, -0.0103356, -0.0110303, -0.011514, -0.0117094, -0.0116029, -0.0112526, -0.0107795, -0.010343, -0.0101053, -0.0101917, -0.0106561, -0.0114608, -0.0124761, -0.0135018, -0.0143081, -0.0146885, -0.0145126, -0.0137683, -0.0125796, -0.0111959, -0.00994914, -0.00918404, -0.00917447, -0.0100402, -0.0116822, -0.0137533, -0.0156723, -0.0166881, -0.0159848, -0.0128153, -0.00664117, 0.00274383, 0.0151313, 0.0298729, 0.0459219, 0.0619393, 0.076451, 0.0880348, 0.0955087, 0.098091, 0.0955087, 0.0880348, 0.076451, 0.0619393, 0.0459219, 0.0298729, 0.0151313, 0.00274383, -0.00664117, -0.0128153, -0.0159848, -0.0166881, -0.0156723, -0.0137533, -0.0116822, -0.0100402, -0.00917447, -0.00918404, -0.00994914, -0.0111959, -0.0125796, -0.0137683, -0.0145126, -0.0146885, -0.0143081, -0.0135018, -0.0124761, -0.0114608, -0.0106561, -0.0101917, -0.0101053, -0.010343, -0.0107795, -0.0112526, -0.0116029, -0.0117094, -0.011514, -0.0110303, -0.0103356, -0.00954878, -0.00880131, -0.00820643, -0.00783479, -0.00770111, -0.00776415, -0.00793936, -0.00812057, -0.00820539, -0.00811841, -0.00782705, -0.00734698, -0.00673627, -0.00608027, -0.00547096, -0.00498574, -0.00467051, -0.00453056, -0.00453119, -0.00460728, -0.00467943, -0.00467274, -0.00453375, -0.00424193, -0.0038132, -0.003295, -0.00275443, -0.00226223, -0.00187658, -0.00163025, -0.00152401, -0.00152751, -0.00158725, -0.0016396, -0.00162564, -0.00150456, -0.00126243, -0.000914683, -0.0005017, -7.89273e-05, 0.000296217, 0.000577506, 0.000740151, 0.000785877, 0.000741816, 0.000653624, 0.000574554, 0.000553077, 0.000621911, 0.000790927, 0.00104545, 0.0013502, 0.00165789, 0.00192026, 0.00209924, 0.00217534, 0.00215178, 0.00205318, 0.00191952, 0.00179665, 0.00172568 };
{ 0.00541841, 0.00564124, 0.00602704, 0.00644671, 0.00675629, 0.00683028, 0.00659131, 0.00602936, 0.00520553, 0.00423946, 0.00328257, 0.0024834, 0.00195271, 0.00173658, 0.00180402, 0.00205229, 0.0023292, 0.00246755, 0.00232397, 0.00181329, 0.000930082, -0.000247821, -0.00157527, -0.00287198, -0.00396386, -0.0047241, -0.0051043, -0.00514813, -0.00498376, -0.00479616, -0.00478518, -0.00511876, -0.00589219, -0.00710309, -0.00864853, -0.0103459, -0.0119729, -0.0133191, -0.0142353, -0.0146718, -0.0146928, -0.0144662, -0.0142273, -0.0142253, -0.0146647, -0.0156545, -0.0171781, -0.0190912, -0.021151, -0.0230685, -0.0245759, -0.0254907, -0.0257638, -0.0254975, -0.0249285, -0.0243784, -0.0241804, -0.0246002, -0.025767, -0.0276349, -0.0299819, -0.0324523, -0.0346338, -0.0361523, -0.0367658, -0.0364315, -0.0353317, -0.0338462, -0.0324757, -0.0317294, -0.0320006, -0.0334587, -0.0359854, -0.0391733, -0.0423937, -0.0449254, -0.0461197, -0.0455677, -0.0432305, -0.0394981, -0.0351537, -0.0312389, -0.0288366, -0.0288066, -0.0315247, -0.0366806, -0.0431834, -0.0492089, -0.0523984, -0.0501902, -0.0402382, -0.0208524, 0.00861525, 0.0475102, 0.0937968, 0.144189, 0.194481, 0.240046, 0.276417, 0.299884, 0.307992, 0.299884, 0.276417, 0.240046, 0.194481, 0.144189, 0.0937968, 0.0475102, 0.00861525, -0.0208524, -0.0402382, -0.0501902, -0.0523984, -0.0492089, -0.0431834, -0.0366806, -0.0315247, -0.0288066, -0.0288366, -0.0312389, -0.0351537, -0.0394981, -0.0432305, -0.0455677, -0.0461197, -0.0449254, -0.0423937, -0.0391733, -0.0359854, -0.0334587, -0.0320006, -0.0317294, -0.0324757, -0.0338462, -0.0353317, -0.0364315, -0.0367658, -0.0361523, -0.0346338, -0.0324523, -0.0299819, -0.0276349, -0.025767, -0.0246002, -0.0241804, -0.0243784, -0.0249285, -0.0254975, -0.0257638, -0.0254907, -0.0245759, -0.0230685, -0.021151, -0.0190912, -0.0171781, -0.0156545, -0.0146647, -0.0142253, -0.0142273, -0.0144662, -0.0146928, -0.0146718, -0.0142353, -0.0133191, -0.0119729, -0.0103459, -0.00864853, -0.00710309, -0.00589219, -0.00511876, -0.00478518, -0.00479616, -0.00498376, -0.00514813, -0.0051043, -0.0047241, -0.00396386, -0.00287198, -0.00157527, -0.000247821, 0.000930082, 0.00181329, 0.00232397, 0.00246755, 0.0023292, 0.00205229, 0.00180402, 0.00173658, 0.00195271, 0.0024834, 0.00328257, 0.00423946, 0.00520553, 0.00602936, 0.00659131, 0.00683028, 0.00675629, 0.00644671, 0.00602704, 0.00564124, 0.00541841 };
//mkdeemph(8000,79,500)
float deemphasis_nfm_predefined_fir_8000[] =
{ 1.43777e+11, 1.45874e+11, -4.67746e+11, 9.98433e+10, -1.47835e+12, -3.78799e+11, -2.61333e+12, -1.07042e+12, -3.41242e+12, -1.57042e+12, -3.34195e+12, -1.4091e+12, -1.96864e+12, -2.26212e+11, 8.48259e+11, 2.04875e+12, 4.80451e+12, 5.06875e+12, 9.09434e+12, 8.04571e+12, 1.24874e+13, 9.85837e+12, 1.35433e+13, 9.28407e+12, 1.09287e+13, 5.30975e+12, 3.76762e+12, -2.54809e+12, -8.06152e+12, -1.39895e+13, -2.37664e+13, -2.77865e+13, -4.16745e+13, -4.16797e+13, -5.94708e+13, -5.17628e+13, -7.46014e+13, -4.66449e+13, -8.47575e+13, 1.51722e+14, 4.98196e+14, 1.51722e+14, -8.47575e+13, -4.66449e+13, -7.46014e+13, -5.17628e+13, -5.94708e+13, -4.16797e+13, -4.16745e+13, -2.77865e+13, -2.37664e+13, -1.39895e+13, -8.06152e+12, -2.54809e+12, 3.76762e+12, 5.30975e+12, 1.09287e+13, 9.28407e+12, 1.35433e+13, 9.85837e+12, 1.24874e+13, 8.04571e+12, 9.09434e+12, 5.06875e+12, 4.80451e+12, 2.04875e+12, 8.48259e+11, -2.26212e+11, -1.96864e+12, -1.4091e+12, -3.34195e+12, -1.57042e+12, -3.41242e+12, -1.07042e+12, -2.61333e+12, -3.78799e+11, -1.47835e+12, 9.98433e+10, -4.67746e+11, 1.45874e+11, 1.43777e+11 };
{ 1.44868e+11, 1.4698e+11, -4.71294e+11, 1.00601e+11, -1.48956e+12, -3.81673e+11, -2.63316e+12, -1.07854e+12, -3.43831e+12, -1.58233e+12, -3.3673e+12, -1.41979e+12, -1.98358e+12, -2.27928e+11, 8.54694e+11, 2.06429e+12, 4.84096e+12, 5.10721e+12, 9.16333e+12, 8.10674e+12, 1.25821e+13, 9.93316e+12, 1.36461e+13, 9.3545e+12, 1.10116e+13, 5.35003e+12, 3.7962e+12, -2.56742e+12, -8.12268e+12, -1.40956e+13, -2.39467e+13, -2.79973e+13, -4.19906e+13, -4.19959e+13, -5.9922e+13, -5.21555e+13, -7.51673e+13, -4.69988e+13, -8.54005e+13, 1.52873e+14, 5.01975e+14, 1.52873e+14, -8.54005e+13, -4.69988e+13, -7.51673e+13, -5.21555e+13, -5.9922e+13, -4.19959e+13, -4.19906e+13, -2.79973e+13, -2.39467e+13, -1.40956e+13, -8.12268e+12, -2.56742e+12, 3.7962e+12, 5.35003e+12, 1.10116e+13, 9.3545e+12, 1.36461e+13, 9.93316e+12, 1.25821e+13, 8.10674e+12, 9.16333e+12, 5.10721e+12, 4.84096e+12, 2.06429e+12, 8.54694e+11, -2.27928e+11, -1.98358e+12, -1.41979e+12, -3.3673e+12, -1.58233e+12, -3.43831e+12, -1.07854e+12, -2.63316e+12, -3.81673e+11, -1.48956e+12, 1.00601e+11, -4.71294e+11, 1.4698e+11, 1.44868e+11 };
float deemphasis_nfm_predefined_fir_44100[] =
{ 0.0025158, 0.00308564, 0.00365507, 0.00413598, 0.00446279, 0.00461162, 0.00460866, 0.00452474, 0.00445739, 0.00450444, 0.00473648, 0.0051757, 0.0057872, 0.00648603, 0.00715856, 0.00769296, 0.00801081, 0.00809096, 0.00797853, 0.00777577, 0.00761627, 0.00762871, 0.00789987, 0.00844699, 0.00920814, 0.0100543, 0.0108212, 0.0113537, 0.011551, 0.0113994, 0.0109834, 0.0104698, 0.0100665, 0.00996618, 0.0102884, 0.0110369, 0.0120856, 0.0131998, 0.0140907, 0.0144924, 0.0142417, 0.0133401, 0.0119771, 0.0105043, 0.00935909, 0.00895022, 0.00952985, 0.0110812, 0.0132522, 0.015359, 0.0164664, 0.0155409, 0.0116496, 0.00416925, -0.00703664, -0.021514, -0.0382135, -0.0555955, -0.0718318, -0.0850729, -0.0937334, -0.0967458, -0.0937334, -0.0850729, -0.0718318, -0.0555955, -0.0382135, -0.021514, -0.00703664, 0.00416925, 0.0116496, 0.0155409, 0.0164664, 0.015359, 0.0132522, 0.0110812, 0.00952985, 0.00895022, 0.00935909, 0.0105043, 0.0119771, 0.0133401, 0.0142417, 0.0144924, 0.0140907, 0.0131998, 0.0120856, 0.0110369, 0.0102884, 0.00996618, 0.0100665, 0.0104698, 0.0109834, 0.0113994, 0.011551, 0.0113537, 0.0108212, 0.0100543, 0.00920814, 0.00844699, 0.00789987, 0.00762871, 0.00761627, 0.00777577, 0.00797853, 0.00809096, 0.00801081, 0.00769296, 0.00715856, 0.00648603, 0.0057872, 0.0051757, 0.00473648, 0.00450444, 0.00445739, 0.00452474, 0.00460866, 0.00461162, 0.00446279, 0.00413598, 0.00365507, 0.00308564, 0.0025158 };
//mkdeemph(44100,199,500)
float deemphasis_nfm_predefined_fir_44100[] =
{ 0.0030065, 0.00309255, 0.0030577, 0.00290449, 0.00266639, 0.00239921, 0.00216618, 0.00202055, 0.00199073, 0.00207174, 0.00222582, 0.00239205, 0.00250258, 0.00250118, 0.00235906, 0.00208346, 0.00171657, 0.00132468, 0.000980505, 0.000743175, 0.000641509, 0.000665222, 0.000766698, 0.000873166, 0.000906173, 0.000803195, 0.000535459, 0.000116945, -0.000398196, -0.000929437, -0.0013914, -0.00171742, -0.00187861, -0.00189312, -0.00182255, -0.00175623, -0.0017872, -0.00198634, -0.00238174, -0.00294927, -0.0036173, -0.00428485, -0.00484862, -0.00523173, -0.00540621, -0.00540273, -0.00530436, -0.00522541, -0.00528056, -0.00555258, -0.00606748, -0.00678434, -0.00760358, -0.00839199, -0.00901847, -0.00939109, -0.00948505, -0.00935324, -0.00911555, -0.00892856, -0.00894315, -0.00926102, -0.00990242, -0.0107947, -0.0117866, -0.0126857, -0.01331, -0.0135413, -0.0133635, -0.0128758, -0.0122737, -0.011801, -0.0116834, -0.0120611, -0.0129385, -0.014168, -0.0154741, -0.0165186, -0.0169894, -0.0166956, -0.0156386, -0.0140407, -0.0123142, -0.0109717, -0.0104924, -0.0111719, -0.0129904, -0.0155356, -0.0180054, -0.0193036, -0.0182187, -0.0136568, -0.00488761, 0.00824906, 0.0252209, 0.0447977, 0.0651747, 0.0842086, 0.0997311, 0.109884, 0.113415, 0.109884, 0.0997311, 0.0842086, 0.0651747, 0.0447977, 0.0252209, 0.00824906, -0.00488761, -0.0136568, -0.0182187, -0.0193036, -0.0180054, -0.0155356, -0.0129904, -0.0111719, -0.0104924, -0.0109717, -0.0123142, -0.0140407, -0.0156386, -0.0166956, -0.0169894, -0.0165186, -0.0154741, -0.014168, -0.0129385, -0.0120611, -0.0116834, -0.011801, -0.0122737, -0.0128758, -0.0133635, -0.0135413, -0.01331, -0.0126857, -0.0117866, -0.0107947, -0.00990242, -0.00926102, -0.00894315, -0.00892856, -0.00911555, -0.00935324, -0.00948505, -0.00939109, -0.00901847, -0.00839199, -0.00760358, -0.00678434, -0.00606748, -0.00555258, -0.00528056, -0.00522541, -0.00530436, -0.00540273, -0.00540621, -0.00523173, -0.00484862, -0.00428485, -0.0036173, -0.00294927, -0.00238174, -0.00198634, -0.0017872, -0.00175623, -0.00182255, -0.00189312, -0.00187861, -0.00171742, -0.0013914, -0.000929437, -0.000398196, 0.000116945, 0.000535459, 0.000803195, 0.000906173, 0.000873166, 0.000766698, 0.000665222, 0.000641509, 0.000743175, 0.000980505, 0.00132468, 0.00171657, 0.00208346, 0.00235906, 0.00250118, 0.00250258, 0.00239205, 0.00222582, 0.00207174, 0.00199073, 0.00202055, 0.00216618, 0.00239921, 0.00266639, 0.00290449, 0.0030577, 0.00309255, 0.0030065 };
//mkdeemph(11025,79,500)
float deemphasis_nfm_predefined_fir_11025[] =
{ 0.00113162, 0.000911207, 0.00173815, -0.000341385, -0.000849373, -0.00033066, -0.00290692, -0.00357326, -0.0031917, -0.00607078, -0.00659201, -0.00601551, -0.00886603, -0.00880243, -0.00759841, -0.0100344, -0.0088993, -0.00664423, -0.00835258, -0.00572919, -0.00214109, -0.00302443, 0.00132902, 0.00627003, 0.00596494, 0.0120731, 0.0180437, 0.0176243, 0.0253776, 0.0316572, 0.0298485, 0.0393389, 0.0446019, 0.0389943, 0.0516463, 0.0521951, 0.0350192, 0.0600945, 0.0163128, -0.217526, -0.378533, -0.217526, 0.0163128, 0.0600945, 0.0350192, 0.0521951, 0.0516463, 0.0389943, 0.0446019, 0.0393389, 0.0298485, 0.0316572, 0.0253776, 0.0176243, 0.0180437, 0.0120731, 0.00596494, 0.00627003, 0.00132902, -0.00302443, -0.00214109, -0.00572919, -0.00835258, -0.00664423, -0.0088993, -0.0100344, -0.00759841, -0.00880243, -0.00886603, -0.00601551, -0.00659201, -0.00607078, -0.0031917, -0.00357326, -0.00290692, -0.00033066, -0.000849373, -0.000341385, 0.00173815, 0.000911207, 0.00113162 };
//mkdeemph(12000,79,500)
float deemphasis_nfm_predefined_fir_12000[] =
{ -0.000797535, -0.00062889, -0.000440927, -0.00285251, -0.00356201, -0.00294376, -0.00520536, -0.00674245, -0.00568865, -0.00717659, -0.00925804, -0.007806, -0.00789726, -0.0100409, -0.00829135, -0.00649798, -0.00810243, -0.00624269, -0.00234178, -0.00279327, -0.00111539, 0.00475363, 0.00597673, 0.00706616, 0.0143584, 0.0176202, 0.0175866, 0.0253651, 0.030897, 0.0289982, 0.0359555, 0.044091, 0.0389462, 0.0431552, 0.0553087, 0.0421578, 0.0378057, 0.0628383, -0.0103318, -0.23323, -0.369357, -0.23323, -0.0103318, 0.0628383, 0.0378057, 0.0421578, 0.0553087, 0.0431552, 0.0389462, 0.044091, 0.0359555, 0.0289982, 0.030897, 0.0253651, 0.0175866, 0.0176202, 0.0143584, 0.00706616, 0.00597673, 0.00475363, -0.00111539, -0.00279327, -0.00234178, -0.00624269, -0.00810243, -0.00649798, -0.00829135, -0.0100409, -0.00789726, -0.007806, -0.00925804, -0.00717659, -0.00568865, -0.00674245, -0.00520536, -0.00294376, -0.00356201, -0.00285251, -0.000440927, -0.00062889, -0.000797535 };