X-Git-Url: http://git.johnwright.org/?p=fmit.git;a=blobdiff_plain;f=libs%2FMusic%2FFilter.h;fp=libs%2FMusic%2FFilter.h;h=3728db3df9270a73334ec92189fd5c1e158bc8a4;hp=b297a283b62c6e82d9f976dd1d6b820399ced7c0;hb=49947d1cd4506f5574b3be62ee90e9f00227d9fd;hpb=82c9faab9421b3d87a0faa84a73f55aaccbbb689 diff --git a/libs/Music/Filter.h b/libs/Music/Filter.h index b297a28..3728db3 100644 --- a/libs/Music/Filter.h +++ b/libs/Music/Filter.h @@ -26,6 +26,47 @@ namespace Music { + /************************************************************************** + * Parks-McClellan algorithm for FIR filter design (C version) + *------------------------------------------------- + * Copyright (c) 1995,1998 Jake Janovetz (janovetz@uiuc.edu) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + *************************************************************************/ + + #define BANDPASS 1 + #define DIFFERENTIATOR 2 + #define HILBERT 3 + + #define NEGATIVE 0 + #define POSITIVE 1 + +// #define Pi 3.1415926535897932 +// #define Pi2 6.2831853071795865 + + #define GRIDDENSITY 16 + #define MAXITERATIONS 40 + + /* Function prototype for remez() - the only function that should need be + * called from external code + */ + void remez(double h[], int numtaps, + int numband, double bands[], double des[], double weight[], + int type); + std::vector fir1_lowpass(int n, double cutoff); std::vector fir1_highpass(int n, double cutoff); std::vector fir1_bandpass(int n, double low_cutoff, double high_cutoff); @@ -50,7 +91,7 @@ namespace Music public: FIRRTFilter(){m_imp_res=std::vector(1, 1.0);} FIRRTFilter(std::vector& imp_res); - void setImpulseResponse(std::vector& imp_res) {m_imp_res=imp_res;} + void setImpulseResponse(std::vector imp_res) {m_imp_res=imp_res;} virtual int getLength() {return m_imp_res.size();}