Import upstream version 0.99.2
[fmit.git] / libs / Music / Filter.h
index b297a28..3728db3 100644 (file)
 
 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<double> fir1_lowpass(int n, double cutoff);
        std::vector<double> fir1_highpass(int n, double cutoff);
        std::vector<double> fir1_bandpass(int n, double low_cutoff, double high_cutoff);
@@ -50,7 +91,7 @@ namespace Music
          public:
                FIRRTFilter(){m_imp_res=std::vector<double>(1, 1.0);}
                FIRRTFilter(std::vector<double>& imp_res);
-               void setImpulseResponse(std::vector<double>& imp_res)   {m_imp_res=imp_res;}
+               void setImpulseResponse(std::vector<double> imp_res)    {m_imp_res=imp_res;}
 
                virtual int getLength()                                                                 {return m_imp_res.size();}