New directory tree, with preprocessor/ inside interpretor/.
[Faustine.git] / interpretor / faust-0.9.47mr3 / architecture / maxmsp.lib
diff --git a/interpretor/faust-0.9.47mr3/architecture/maxmsp.lib b/interpretor/faust-0.9.47mr3/architecture/maxmsp.lib
deleted file mode 100644 (file)
index 27b2e92..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-/************************************************************************
- ************************************************************************
-       FAUST library file
-       Copyright (C) 2003-2011 GRAME, Centre National de Creation Musicale
-    ---------------------------------------------------------------------
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as 
-       published by the Free Software Foundation; either version 2.1 of the 
-       License, or (at your option) any later version.
-
-    This program 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 Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-       License along with the GNU C Library; if not, write to the Free
-       Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-       02111-1307 USA. 
- ************************************************************************
- ************************************************************************/
-
-declare name "MaxMSP compatibility Library";
-declare author "GRAME";
-declare copyright "GRAME";
-declare version "1.0";
-declare license "LGPL"; 
-
-import("music.lib");
-
-
-atodb = db2lin;
-
-//-------------------------------------------------------------------------
-// 
-// Implementation of MaxMSP filtercoeff 
-// 
-//             from : Cookbook formulae for audio EQ biquad filter coefficients
-//        by : Robert Bristow-Johnson  <rbj@audioimagination.com>
-//       URL : http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt
-// 
-//-------------------------------------------------------------------------
-
-filtercoeff(f0, dBgain, Q) = environment 
-{
-       //----------------------------------------
-       // biquad coeffs for various filters 
-       // usage : filtercoeff(f0, dBgain, Q).LPF 
-       //----------------------------------------
-       
-               LPF = rbjcoef( a0, a1, a2, b0, b1, b2 ) 
-                               with {
-                                   b0 =  (1 - cos(w0))/2;
-                                   b1 =   1 - cos(w0);
-                                   b2 =  (1 - cos(w0))/2;
-                                   a0 =   1 + alpha;
-                                   a1 =  -2*cos(w0);
-                                   a2 =   1 - alpha;
-                               };
-                               
-               HPF = rbjcoef( a0, a1, a2, b0, b1, b2 ) 
-                               with {
-                                   b0 =  (1 + cos(w0))/2;
-                                   b1 = -1 - cos(w0);
-                                   b2 =  (1 + cos(w0))/2;
-                                   a0 =   1 + alpha;
-                                   a1 =  -2*cos(w0);
-                                   a2 =   1 - alpha;
-                               };
-                               
-               BPF = rbjcoef( a0, a1, a2, b0, b1, b2 ) // constant 0 dB peak gain
-                               with {
-                                   b0 =   alpha;
-                                   b1 =   0;
-                                   b2 =  -alpha;
-                                   a0 =   1 + alpha;
-                                   a1 =  -2*cos(w0);
-                                   a2 =   1 - alpha;
-                               };
-                               
-         notch = rbjcoef( a0, a1, a2, b0, b1, b2 ) 
-                               with {
-                                   b0 =   1;
-                                   b1 =  -2*cos(w0);
-                                   b2 =   1;
-                                   a0 =   1 + alpha;
-                                   a1 =  -2*cos(w0);
-                                   a2 =   1 - alpha;
-                               };
-                               
-               APF = rbjcoef( a0, a1, a2, b0, b1, b2 ) 
-                               with {
-                                   b0 =   1 - alpha;
-                                   b1 =  -2*cos(w0);
-                                   b2 =   1 + alpha;
-                                   a0 =   1 + alpha;
-                                   a1 =  -2*cos(w0);
-                                   a2 =   1 - alpha;
-                               };
-                               
-  peakingEQ    = rbjcoef( a0, a1, a2, b0, b1, b2 ) 
-                               with {
-                       b0 =   1 + alpha*A;
-                       b1 =  -2*cos(w0);
-                       b2 =   1 - alpha*A;
-                       a0 =   1 + alpha/A;
-                       a1 =  -2*cos(w0);
-                       a2 =   1 - alpha/A;
-                               };
-                               
-  peakNotch    = rbjcoef( a0, a1, a2, b0, b1, b2 ) 
-                               with {
-                       b0 =   1 + alpha*G;
-                       b1 =  -2*cos(w0);
-                       b2 =   1 - alpha*G;
-                       a0 =   1 + alpha/G;
-                       a1 =  -2*cos(w0);
-                       a2 =   1 - alpha/G;
-                               };
-                               
-   lowShelf = rbjcoef( a0, a1, a2, b0, b1, b2 ) 
-                               with {
-                       b0 =    A*( (A+1) - (A-1)*cos(w0) + 2*sqrt(A)*alpha );
-                       b1 =  2*A*( (A-1) - (A+1)*cos(w0)                   );
-                       b2 =    A*( (A+1) - (A-1)*cos(w0) - 2*sqrt(A)*alpha );
-                       a0 =        (A+1) + (A-1)*cos(w0) + 2*sqrt(A)*alpha;
-                       a1 =   -2*( (A-1) + (A+1)*cos(w0)                   );
-                       a2 =        (A+1) + (A-1)*cos(w0) - 2*sqrt(A)*alpha;
-                               };
-                               
-  highShelf    = rbjcoef( a0, a1, a2, b0, b1, b2 ) 
-                               with {
-                                   b0 =    A*( (A+1) + (A-1)*cos(w0) + 2*sqrt(A)*alpha );
-                                   b1 = -2*A*( (A-1) + (A+1)*cos(w0)                   );
-                                   b2 =    A*( (A+1) + (A-1)*cos(w0) - 2*sqrt(A)*alpha );
-                                   a0 =        (A+1) - (A-1)*cos(w0) + 2*sqrt(A)*alpha;
-                                   a1 =    2*( (A-1) - (A+1)*cos(w0)                   );
-                                   a2 =        (A+1) - (A-1)*cos(w0) - 2*sqrt(A)*alpha;
-                               };
-
-       // --------------------- implementation ------------------------------
-       
-       // convert rbj coeffs to biquad coeffs
-       rbjcoef(a0,a1,a2,b0,b1,b2) = (b0/a0, b1/a0, b2/a0,-a1/a0,-a2/a0);
-       
-       // common values
-//     alpha   = sin(w0)/(2*Q);
-//     w0              = 2*PI*f0/Fs;
-       alpha   = sin(w0)/(2*max(0.001,Q));
-       w0              = 2*PI*max(0,f0)/Fs;
-       Fs              = SR;
-       A               = 10^(dBgain/40);                       // (for peaking and shelving EQ filters only)
-       G               = sqrt(max(0.00001, dBgain));   // When gain is a linear values (i.e. not in dB)
-};
-
-
-//-------------------------------------------------------------------------
-// Implementation of MaxMSP biquad~
-// y[n] = a0 * x[n] + a1 * x[n-1] + a2 * x[n-2] + b1 * y[n-1] + b2 * y[n-2] 
-//-------------------------------------------------------------------------
-
-biquad(x,a0,a1,a2,b1,b2) = x : conv3(a0, a1, a2) : + ~ conv2(b1, b2)
-       with {
-               conv2(c0,c1,x) = c0*x+c1*x';
-               conv3(c0,c1,c2,x) = c0*x+c1*x'+c2*x'';
-       };
-
-
-//-------------------------------------------------------------------------
-// 
-// Filters using filtercoeff and biquad
-//
-//-------------------------------------------------------------------------
-
-
-// Low Pass Filter
-LPF(x, f0, gain, Q)            = x , filtercoeff(f0,gain,Q).LPF : biquad;
-
-// High Pass Filter
-HPF(x, f0, gain, Q)            = x , filtercoeff(f0,gain,Q).HPF : biquad;
-
-// Band Pass Filter
-BPF(x, f0, gain, Q)            = x , filtercoeff(f0,gain,Q).BPF : biquad;
-
-// notch Filter
-notch(x, f0, gain, Q)          = x , filtercoeff(f0,gain,Q).notch : biquad;
-       
-// All Pass Filter
-APF(x, f0, gain, Q)            = x , filtercoeff(f0,gain,Q).APF : biquad;
-       
-// ????
-peakingEQ(x, f0, gain, Q)      = x , filtercoeff(f0,gain,Q).peakingEQ : biquad;
-       
-// Max peakNotch is like peakingEQ but with a linear gain
-peakNotch(x, f0, gain, Q)      = x , filtercoeff(f0,gain,Q).peakNotch : biquad;
-       
-// ????
-lowShelf(x, f0, gain, Q)       = x , filtercoeff(f0,gain,Q).lowShelf : biquad;
-       
-// ????
-highShelf(x, f0, gain, Q)      = x , filtercoeff(f0,gain,Q).highShelf : biquad;
-
-
-
-
-//-------------------------------------------------------------------------
-// Implementation of Max/MSP line~. Generate signal ramp or envelope 
-// 
-// USAGE : line(value, time)
-//     value : the desired output value
-//     time  : the interpolation time to reach this value (in milliseconds)
-//
-// NOTE : the interpolation process is restarted every time the desired
-// output value changes. The interpolation time is sampled only then.
-//-------------------------------------------------------------------------
-
-line (value, time) = state ~ ( _ , _ ) : ! , _ 
-       with {
-               state (t , c) = nt , if( nt <= 0 , value , c + (value - c) / nt)
-               with {
-                       nt = if( value != value' , samples, t - 1) ;
-                       samples = time * SR / 1000.0 ;
-               } ;
-       } ;
-
-