1 /* 2 * signalprocessing.h 3 * 4 * (c) 2018 Luka Marohnić 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation; either version 3 of the License, or 9 * (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 #ifndef __SIGNALPROCESSING_H 20 #define __SIGNALPROCESSING_H 21 #ifdef HAVE_CONFIG_H 22 #include "config.h" 23 #endif 24 #include "first.h" 25 #include "gen.h" 26 #include "unary.h" 27 28 #ifndef NO_NAMESPACE_GIAC 29 namespace giac { 30 #endif // ndef NO_NAMESPACE_GIAC 31 32 enum filter_type { 33 _LOWPASS_FILTER, 34 _HIGHPASS_FILTER 35 }; 36 37 bool is_sound_data(const gen &g,int &nc,int &bd,int &sr,int &len); 38 vecteur decode_chdata(const vecteur &data,int bd,int start=0,int len=-1); 39 vecteur encode_chdata(const vecteur &data,int bd,double ratio,GIAC_CONTEXT); 40 gen filter(const vecteur &args,filter_type typ,GIAC_CONTEXT); 41 42 gen _createwav(const gen &g,GIAC_CONTEXT); 43 gen _stereo2mono(const gen &g,GIAC_CONTEXT); 44 gen _plotwav(const gen &g,GIAC_CONTEXT); 45 gen _plotspectrum(const gen &g,GIAC_CONTEXT); 46 gen _channels(const gen &g,GIAC_CONTEXT); 47 gen _bit_depth(const gen &g,GIAC_CONTEXT); 48 gen _samplerate(const gen &g,GIAC_CONTEXT); 49 gen _duration(const gen &g,GIAC_CONTEXT); 50 gen _channel_data(const gen &g,GIAC_CONTEXT); 51 gen _cross_correlation(const gen &g,GIAC_CONTEXT); 52 gen _auto_correlation(const gen &g,GIAC_CONTEXT); 53 gen _lowpass(const gen &g,GIAC_CONTEXT); 54 gen _highpass(const gen &g,GIAC_CONTEXT); 55 gen _moving_average(const gen &g,GIAC_CONTEXT); 56 gen _resample(const gen &g,GIAC_CONTEXT); 57 gen _convolution(const gen &g,GIAC_CONTEXT); 58 gen _threshold(const gen &g,GIAC_CONTEXT); 59 gen _bartlett_hann_window(const gen &g,GIAC_CONTEXT); 60 gen _blackman_harris_window(const gen &g,GIAC_CONTEXT); 61 gen _blackman_window(const gen &g,GIAC_CONTEXT); 62 gen _bohman_window(const gen &g,GIAC_CONTEXT); 63 gen _cosine_window(const gen &g,GIAC_CONTEXT); 64 gen _gaussian_window(const gen &g,GIAC_CONTEXT); 65 gen _hamming_window(const gen &g,GIAC_CONTEXT); 66 gen _hann_poisson_window(const gen &g,GIAC_CONTEXT); 67 gen _hann_window(const gen &g,GIAC_CONTEXT); 68 gen _parzen_window(const gen &g,GIAC_CONTEXT); 69 gen _poisson_window(const gen &g,GIAC_CONTEXT); 70 gen _riemann_window(const gen &g,GIAC_CONTEXT); 71 gen _triangle_window(const gen &g,GIAC_CONTEXT); 72 gen _tukey_window(const gen &g,GIAC_CONTEXT); 73 gen _welch_window(const gen &g,GIAC_CONTEXT); 74 gen _fourier(const gen &g,GIAC_CONTEXT); 75 gen _ifourier(const gen &g,GIAC_CONTEXT); 76 gen _addtable(const gen &g,GIAC_CONTEXT); 77 gen _rect(const gen &g,GIAC_CONTEXT); 78 gen _boxcar(const gen &g,GIAC_CONTEXT); 79 gen _tri(const gen &g,GIAC_CONTEXT); 80 gen _sinc(const gen &g,GIAC_CONTEXT); 81 82 extern const unary_function_ptr * const at_createwav; 83 extern const unary_function_ptr * const at_plotwav; 84 extern const unary_function_ptr * const at_plotspectrum; 85 extern const unary_function_ptr * const at_channels; 86 extern const unary_function_ptr * const at_samplerate; 87 extern const unary_function_ptr * const at_bit_depth; 88 extern const unary_function_ptr * const at_duration; 89 extern const unary_function_ptr * const at_channel_data; 90 extern const unary_function_ptr * const at_cross_correlation; 91 extern const unary_function_ptr * const at_auto_correlation; 92 extern const unary_function_ptr * const at_lowpass; 93 extern const unary_function_ptr * const at_highpass; 94 extern const unary_function_ptr * const at_convolution; 95 extern const unary_function_ptr * const at_threshold; 96 extern const unary_function_ptr * const at_bartlett_hann_window; 97 extern const unary_function_ptr * const at_blackman_harris_window; 98 extern const unary_function_ptr * const at_blackman_window; 99 extern const unary_function_ptr * const at_bohman_window; 100 extern const unary_function_ptr * const at_cosine_window; 101 extern const unary_function_ptr * const at_gaussian_window; 102 extern const unary_function_ptr * const at_hamming_window; 103 extern const unary_function_ptr * const at_hann_poisson_window; 104 extern const unary_function_ptr * const at_hann_window; 105 extern const unary_function_ptr * const at_parzen_window; 106 extern const unary_function_ptr * const at_poisson_window; 107 extern const unary_function_ptr * const at_riemann_window; 108 extern const unary_function_ptr * const at_triangle_window; 109 extern const unary_function_ptr * const at_tukey_window; 110 extern const unary_function_ptr * const at_welch_window; 111 extern const unary_function_ptr * const at_fourier; 112 extern const unary_function_ptr * const at_ifourier; 113 extern const unary_function_ptr * const at_addtable; 114 extern const unary_function_ptr * const at_rect; 115 extern const unary_function_ptr * const at_boxcar; 116 extern const unary_function_ptr * const at_tri; 117 extern const unary_function_ptr * const at_sinc; 118 119 #ifndef NO_NAMESPACE_GIAC 120 } // namespace giac 121 #endif // ndef NO_NAMESPACE_GIAC 122 #endif // __SIGNALPROCESSING_H 123