diff --git a/analyzers.lib b/analyzers.lib index a7d4c4e6..e72e7da5 100644 --- a/analyzers.lib +++ b/analyzers.lib @@ -426,7 +426,7 @@ zcr(period, x) = ma.zc(x) : fi.lptau(period); // * "Tree-structured complementary filter banks using all-pass sections", // Regalia et al., IEEE Trans. Circuits & Systems, CAS-34:1470-1484, Dec. 1987 // * "Multirate Systems and Filter Banks", P. Vaidyanathan, Prentice-Hall, 1993 -// * Elementary filter theory: https://ccrma.stanford.edu/~jos/filters/ +// * Elementary filter theory: //======================================================================================== @@ -548,7 +548,7 @@ third_octave_filterbank(N) = mth_octave_filterbank_default(3,10000,N); // See, e.g., // Acoustics [the book], by L. L. Beranek // Amer. Inst. Physics for the Acoustical Soc. America, -// http://asa.aip.org/publications.html, 1986 (1st ed.1954) +// // Third-octave bands across the audio spectrum are too wide for current // typical computer screens, so half-octave bands are the default: diff --git a/compressors.lib b/compressors.lib index 485f27d8..ecc604eb 100644 --- a/compressors.lib +++ b/compressors.lib @@ -48,7 +48,7 @@ declare version "0.1"; //--------------------`(co.)peak_compression_gain_mono`------------------- // Mono dynamic range compressor gain computer. -// `peak_compression_gain_mono` is a standard Faust function +// `peak_compression_gain_mono` is a standard Faust function. // // #### Usage // @@ -105,7 +105,7 @@ with { //--------------------`(co.)peak_compression_gain_N_chan`------------------- // N channel dynamic range compressor gain computer. -// `peak_compression_gain_N_chan` is a standard Faust function +// `peak_compression_gain_N_chan` is a standard Faust function. // // #### Usage // @@ -164,7 +164,7 @@ peak_compression_gain_N_chan(strength,thresh,att,rel,knee,prePost,link,N) = //--------------------`(co.)FFcompressor_N_chan`------------------- // feed forward N channel dynamic range compressor. -// `FFcompressor_N_chan` is a standard Faust function +// `FFcompressor_N_chan` is a standard Faust function. // // #### Usage // @@ -218,7 +218,7 @@ FFcompressor_N_chan(strength,thresh,att,rel,knee,prePost,link,meter,N) = //--------------------`(co.)FBcompressor_N_chan`------------------- // feed back N channel dynamic range compressor. -// `FBcompressor_N_chan` is a standard Faust function +// `FBcompressor_N_chan` is a standard Faust function. // // #### Usage // @@ -273,7 +273,7 @@ FBcompressor_N_chan(strength,thresh,att,rel,knee,prePost,link,meter,N) = //--------------------`(co.)FFFBcompressor_N_chan`------------------- // feed forward / feed back N channel dynamic range compressor. // the feedback part has a much higher strength, so they end up sounding similar -// `FFFBcompressor_N_chan` is a standard Faust function +// `FFFBcompressor_N_chan` is a standard Faust function. // // #### Usage // @@ -387,7 +387,7 @@ with { //--------------------`(co.)RMS_compression_gain_N_chan`------------------- // RMS N channel dynamic range compressor gain computer. -// `RMS_compression_gain_N_chan` is a standard Faust function +// `RMS_compression_gain_N_chan` is a standard Faust function. // // #### Usage // @@ -441,7 +441,7 @@ RMS_compression_gain_N_chan(strength,thresh,att,rel,knee,prePost,link,N) = //--------------------`(co.)RMS_FFFBcompressor_N_chan`------------------- // RMS feed forward / feed back N channel dynamic range compressor. // the feedback part has a much higher strength, so they end up sounding similar -// `RMS_FFFBcompressor_N_chan` is a standard Faust function +// `RMS_FFFBcompressor_N_chan` is a standard Faust function. // // #### Usage // @@ -512,7 +512,7 @@ RMS_FBFFcompressor_N_chan(strength,thresh,att,rel,knee,prePost,link,FBFF,meter,N // The RMS compressor doesn't have to deal with the peaks, // and the peak limiter get's spared from the steady state signal. // the feedback part has a much higher strength, so they end up sounding similar -// `RMS_FBcompressor_peak_limiter_N_chan` is a standard Faust function +// `RMS_FBcompressor_peak_limiter_N_chan` is a standard Faust function. // // #### Usage // @@ -838,7 +838,7 @@ limiter_1176_R4_stereo = compressor_stereo(4,-6,0.0008,0.5); // // #### Reference: // -// http://iem.at/~zmoelnig/publications/limiter/. +// . //------------------------------------------------------------------------------ declare limiter_lad_N author "Dario Sanfilippo"; declare limiter_lad_N copyright "Copyright (C) 2020 Dario Sanfilippo @@ -878,7 +878,7 @@ limiter_lad_N(N, LD, ceiling, attack, hold, release) = // // #### Reference: // -// http://iem.at/~zmoelnig/publications/limiter/. +// . declare limiter_lad_mono author "Dario Sanfilippo"; declare limiter_lad_mono copyright "Copyright (C) 2020 Dario Sanfilippo "; @@ -905,7 +905,7 @@ limiter_lad_mono(LD) = limiter_lad_N(1, LD); // // #### Reference: // -// http://iem.at/~zmoelnig/publications/limiter/. +// . declare limiter_lad_stereo author "Dario Sanfilippo"; declare limiter_lad_stereo copyright "Copyright (C) 2020 Dario Sanfilippo "; @@ -933,7 +933,7 @@ limiter_lad_stereo(LD) = limiter_lad_N(2, LD); // // #### Reference: // -// http://iem.at/~zmoelnig/publications/limiter/. +// . declare limiter_lad_quad author "Dario Sanfilippo"; declare limiter_lad_quad copyright "Copyright (C) 2020 Dario Sanfilippo "; @@ -960,7 +960,7 @@ limiter_lad_quad(LD) = limiter_lad_N(4, LD); // // #### Reference: // -// http://iem.at/~zmoelnig/publications/limiter/. +// . declare limiter_lad_bw author "Dario Sanfilippo"; declare limiter_lad_bw copyright "Copyright (C) 2020 Dario Sanfilippo "; diff --git a/filters.lib b/filters.lib index db28a914..6d9526db 100644 --- a/filters.lib +++ b/filters.lib @@ -1225,7 +1225,7 @@ with { s = ba.take(n,sv); cross = _,_ <: !,_,_,!; }; //-------------------------`(fi.)tf2s` and `(fi.)tf2snp`-------------------------------- // Second-order direct-form digital filter, // specified by ANALOG transfer-function polynomials B(s)/A(s), -// and a frequency-scaling parameter. Digitization via the +// and a frequency-scaling parameter. Digitization via the // bilinear transform is built in. // // #### Usage @@ -1247,8 +1247,8 @@ with { s = ba.take(n,sv); cross = _,_ <: !,_,_,!; }; // #### Example // // A second-order ANALOG Butterworth lowpass filter, -// normalized to have cutoff frequency at 1 rad/sec, -// has transfer function +// normalized to have cutoff frequency at 1 rad/sec, +// has transfer function: // // ``` // 1 @@ -1345,8 +1345,8 @@ tf3slf(b3,b2,b1,b0,a3,a2,a1,a0) = tf3(b0d,b1d,b2d,b3d,a1d,a2d,a3d) with { // // #### Example // A first-order ANALOG Butterworth lowpass filter, -// normalized to have cutoff frequency at 1 rad/sec, -// has transfer function +// normalized to have cutoff frequency at 1 rad/sec, +// has transfer function: // // 1 // H(s) = ------- @@ -1671,8 +1671,8 @@ highpass_minus_lowpass_odd(N,fc) = highpass(N,fc) - lowpass(N,fc); // Elliptic (Cauer) Lowpass Filters // // #### References -// * +// * functions `ncauer` and `ellip` in Octave. //======================================================================================== //-----------------------------`(fi.)lowpass3e`----------------------------- @@ -2070,8 +2070,8 @@ pospass0(lpf) = unmodulate : lpf, lpf : modulate with { // * // * // * Digital Audio Signal Processing, Udo Zolzer, Wiley, 1999, p. 124 -// * https://ccrma.stanford.edu/~jos/filters/Low_High_Shelving_Filters.html> -// * https://ccrma.stanford.edu/~jos/filters/Peaking_Equalizers.html> +// * +// * // * maxmsp.lib in the Faust distribution // * bandfilter.dsp in the faust2pd distribution //======================================================================================== @@ -2301,7 +2301,7 @@ peak_eq_rm(Lfx,fx,tanPiBT) = _ <: _,A,_ : +,- : *(0.5),*(K/2.0) : + with { // J.O. Smith and H.F. Smith, // "Closed Form Fractional Integration and Differentiation via Real Exponentially Spaced Pole-Zero Pairs", // arXiv.org publication arXiv:1606.06154 [cs.CE], June 7, 2016, -// http://arxiv.org/abs/1606.06154 +// //------------------------------------------------------------ declare spectral_tilt author "Julius O. Smith III"; declare spectral_tilt copyright "Copyright (C) 2003-2019 by Julius O. Smith III "; @@ -2424,7 +2424,7 @@ levelfilterN(N,freq,L) = seq(i,N,levelfilter((L/N),freq)); // * "Tree-structured complementary filter banks using all-pass sections", // Regalia et al., IEEE Trans. Circuits & Systems, CAS-34:1470-1484, Dec. 1987 // * "Multirate Systems and Filter Banks", P. Vaidyanathan, Prentice-Hall, 1993 -// * Elementary filter theory: https://ccrma.stanford.edu/~jos/filters/ +// * Elementary filter theory: //======================================================================================== //------------------------`(fi.)mth_octave_filterbank[n]`------------------------- diff --git a/instruments.lib b/instruments.lib index aba5e8b4..89c0bca5 100644 --- a/instruments.lib +++ b/instruments.lib @@ -110,7 +110,7 @@ bow(offset,slope) = pow(abs(sample) + 0.75, -4) : saturationPos // offset = offset between 0 and 1 // slope = slope between 0 and 1 // REFERENCE: -// https://ccrma.stanford.edu/~jos/pasp/View_Single_Reed_Oscillation.html +// reed(offset,slope) = reedTable : saturationPos : saturationNeg with { @@ -138,7 +138,7 @@ poleZero(b0,b1,a1,x) = (b0*x + b1*x' - a1*_)~_; // _ : oneZero0(b0,b1) : _ // _ : oneZero1(b0,b1) : _ // REFERENCE: -// https://ccrma.stanford.edu/~jos/fp2/One_Zero.html +// oneZero0(b0,b1,x) = (*(b1) + x*b0)~_; oneZero1(b0,b1,x) = (x'*b1 + x*b0); @@ -232,7 +232,7 @@ nonLinearModulator(nonlinearity,env,freq,typeMod,freqMod,order) = // where // periodDuration = period duration of the tone being played in number of samples // REFERENCE: -// https://ccrma.stanford.edu/realsimple/faust_strings/ +// stereoizer(periodDuration) = _ <: _,widthdelay : stereopanner with { diff --git a/maths.lib b/maths.lib index f168c396..e0bc1faa 100644 --- a/maths.lib +++ b/maths.lib @@ -165,7 +165,9 @@ quadprecision INFINITY = 1.7976931348623158e+308; // _ : FTZ : _ // ``` // -// See : +// #### Reference +// +// //----------------------------------------------------------------------------- FTZ(x) = x * (abs(x) > MIN); @@ -768,6 +770,7 @@ avg_rect(period, x) = x : ba.slidingMean(rint(period * ma.SR)); // or to reach 1-1/e of its final value. // // #### Reference +// // //----------------------------------------------------------------------------- declare avg_tau author "Dario Sanfilippo and Julius O. Smith III"; @@ -795,6 +798,7 @@ avg_tau(period, x) = fi.lptau(period, x); // or to reach 1-1/1000 of its final value. // // #### Reference +// // //----------------------------------------------------------------------------- declare avg_t60 author "Dario Sanfilippo and Julius O. Smith III"; diff --git a/maxmsp.lib b/maxmsp.lib index 83670678..0a995481 100644 --- a/maxmsp.lib +++ b/maxmsp.lib @@ -46,7 +46,7 @@ atodb = db2lin; // // from : Cookbook formulae for audio EQ biquad filter coefficients // by : Robert Bristow-Johnson -// URL : http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt +// URL : // //------------------------------------------------------------------------- diff --git a/oscillators.lib b/oscillators.lib index e59cc1e7..8bd08409 100644 --- a/oscillators.lib +++ b/oscillators.lib @@ -1060,7 +1060,7 @@ released under LGPL, STK-4.3, MIT, BSD, or a similar FOSS license. // Author: Bart Brouns // License: GPLv3 // CZ oscillators by Mike Moser-Booth: -// https://forum.pdpatchrepo.info/topic/5992/casio-cz-oscillators +// // Ported from pd to Faust by Bart Brouns CZsaw(fund, index) = CZ.sawChooseP(fund, index, 0); @@ -1084,7 +1084,7 @@ CZsaw(fund, index) = CZ.sawChooseP(fund, index, 0); // Author: Bart Brouns // License: GPLv3 // CZ oscillators by Mike Moser-Booth: -// https://forum.pdpatchrepo.info/topic/5992/casio-cz-oscillators +// // Ported from pd to Faust by Bart Brouns CZsawP(fund, index) = CZ.sawChooseP(fund, index, 1); @@ -1107,7 +1107,7 @@ CZsawP(fund, index) = CZ.sawChooseP(fund, index, 1); // Author: Bart Brouns // License: GPLv3 // CZ oscillators by Mike Moser-Booth: -// https://forum.pdpatchrepo.info/topic/5992/casio-cz-oscillators +// // Ported from pd to Faust by Bart Brouns CZsquare(fund, index) = CZ.squareChooseP(fund, index, 0); @@ -1131,7 +1131,7 @@ CZsquare(fund, index) = CZ.squareChooseP(fund, index, 0); // Author: Bart Brouns // License: GPLv3 // CZ oscillators by Mike Moser-Booth: -// https://forum.pdpatchrepo.info/topic/5992/casio-cz-oscillators +// // Ported from pd to Faust by Bart Brouns CZsquareP(fund, index) = CZ.squareChooseP(fund, index, 1); @@ -1154,7 +1154,7 @@ CZsquareP(fund, index) = CZ.squareChooseP(fund, index, 1); // Author: Bart Brouns // License: GPLv3 // CZ oscillators by Mike Moser-Booth: -// https://forum.pdpatchrepo.info/topic/5992/casio-cz-oscillators +// // Ported from pd to Faust by Bart Brouns CZpulse(fund, index) = CZ.pulseChooseP(fund, index, 0); @@ -1178,7 +1178,7 @@ CZpulse(fund, index) = CZ.pulseChooseP(fund, index, 0); // Author: Bart Brouns // License: GPLv3 // CZ oscillators by Mike Moser-Booth: -// https://forum.pdpatchrepo.info/topic/5992/casio-cz-oscillators +// // Ported from pd to Faust by Bart Brouns CZpulseP(fund, index) = CZ.pulseChooseP(fund, index, 1); @@ -1201,7 +1201,7 @@ CZpulseP(fund, index) = CZ.pulseChooseP(fund, index, 1); // Author: Bart Brouns // License: GPLv3 // CZ oscillators by Mike Moser-Booth: -// https://forum.pdpatchrepo.info/topic/5992/casio-cz-oscillators +// // Ported from pd to Faust by Bart Brouns CZsinePulse(fund, index) = CZ.sinePulseChooseP(fund, index, 0); @@ -1225,7 +1225,7 @@ CZsinePulse(fund, index) = CZ.sinePulseChooseP(fund, index, 0); // Author: Bart Brouns // License: GPLv3 // CZ oscillators by Mike Moser-Booth: -// https://forum.pdpatchrepo.info/topic/5992/casio-cz-oscillators +// // Ported from pd to Faust by Bart Brouns CZsinePulseP(fund, index) = CZ.sinePulseChooseP(fund, index, 1); @@ -1248,7 +1248,7 @@ CZsinePulseP(fund, index) = CZ.sinePulseChooseP(fund, index, 1); // Author: Bart Brouns // License: GPLv3 // CZ oscillators by Mike Moser-Booth: -// https://forum.pdpatchrepo.info/topic/5992/casio-cz-oscillators +// // Ported from pd to Faust by Bart Brouns CZhalfSine(fund, index) = CZ.halfSineChooseP(fund, index, 0); @@ -1272,7 +1272,7 @@ CZhalfSine(fund, index) = CZ.halfSineChooseP(fund, index, 0); // Author: Bart Brouns // License: GPLv3 // CZ oscillators by Mike Moser-Booth: -// https://forum.pdpatchrepo.info/topic/5992/casio-cz-oscillators +// // Ported from pd to Faust by Bart Brouns CZhalfSineP(fund, index) = CZ.halfSineChooseP(fund, index, 1); @@ -1295,7 +1295,7 @@ CZhalfSineP(fund, index) = CZ.halfSineChooseP(fund, index, 1); // Author: Bart Brouns // License: GPLv3 // CZ oscillators by Mike Moser-Booth: -// https://forum.pdpatchrepo.info/topic/5992/casio-cz-oscillators +// // Ported from pd to Faust by Bart Brouns CZresSaw(fund,res) = CZ.resSaw(fund,res); @@ -1318,7 +1318,7 @@ CZresSaw(fund,res) = CZ.resSaw(fund,res); // Author: Bart Brouns // License: GPLv3 // CZ oscillators by Mike Moser-Booth: -// https://forum.pdpatchrepo.info/topic/5992/casio-cz-oscillators +// // Ported from pd to Faust by Bart Brouns CZresTriangle(fund,res) = CZ.resTriangle(fund,res); @@ -1341,7 +1341,7 @@ CZresTriangle(fund,res) = CZ.resTriangle(fund,res); // Author: Bart Brouns // License: GPLv3 // CZ oscillators by Mike Moser-Booth: -// https://forum.pdpatchrepo.info/topic/5992/casio-cz-oscillators +// // Ported from pd to Faust by Bart Brouns CZresTrap(fund, res) = CZ.resTrap(fund, res); diff --git a/reverbs.lib b/reverbs.lib index 1e5a6471..9a226c7c 100644 --- a/reverbs.lib +++ b/reverbs.lib @@ -410,7 +410,7 @@ with { allpasstuningL(3) = adaptSR(225); // Lowpass Feedback Combfilter: - // https://ccrma.stanford.edu/~jos/pasp/Lowpass_Feedback_Comb_Filter.html + // lbcf(dt, fb, damp) = (+:@(dt)) ~ (*(1-damp) : (+ ~ *(damp)) : *(fb)); origSR = 44100; diff --git a/tonestacks.lib b/tonestacks.lib index 0cbe4cfa..341d26fd 100644 --- a/tonestacks.lib +++ b/tonestacks.lib @@ -26,7 +26,7 @@ **/ declare name "Tonestack Emulation Library"; -declare author "Guitarix project (http://guitarix.sourceforge.net/)"; +declare author "Guitarix project ()"; declare copyright "Guitarix project"; declare version "0.28"; declare license "LGPL"; diff --git a/vaeffects.lib b/vaeffects.lib index 24cea643..0f683a7b 100644 --- a/vaeffects.lib +++ b/vaeffects.lib @@ -229,7 +229,7 @@ with{ // feedback paths found in the block diagram. These feedback paths are labeled // as connecting states. Rather than separately storing these connecting states // in the Faust implementation, they are simply implicitly calculated by -// tracing back to the other states (s1,s2,s3,s4) each recursive step. +// tracing back to the other states (`s1`,`s2`,`s3`,`s4`) each recursive step. // // This filter was implemented in Faust by Eric Tarr during the // [2019 Embedded DSP With Faust Workshop](https://ccrma.stanford.edu/workshops/faust-embedded-19/). @@ -449,7 +449,7 @@ with{ //==================================Oberheim Filters====================================== // The following filter (4 types) is an implementation of the virtual analog // model described in Section 7.2 of the Will Pirkle book, "Designing Software -// Synthesizer Plug-ins in C++. It is based on the block diagram in Figure 7.5. +// Synthesizer Plug-ins in C++". It is based on the block diagram in Figure 7.5. // // The Oberheim filter is a state-variable filter with soft-clipping distortion // within the circuit. @@ -621,9 +621,9 @@ oberheimLPF(normFreq,Q) = oberheim(normFreq,Q):!,!,!,_; // The simplest example is the 1st-order LPF (shown on the cover of Zavalishin // 2018 and Fig 4.3 of ). Here, the input // signal is split in parallel for the calculation of the output signal, `y`, and -// the state, s. The value of the state is only used for feedback to the next +// the state `s`. The value of the state is only used for feedback to the next // step of recursion. It is blocked (!) from also being routed to the output. -// A trick used for calculating the state, s, is to observe that the input to +// A trick used for calculating the state `s` is to observe that the input to // the delay block is the sum of two signal: what appears to be a feedforward // path and a feedback path. In reality, the signals being summed are identical // (signal*2) plus the value of the current state. @@ -707,13 +707,13 @@ sallenKeyOnePoleHPF(normFreq) = sallenKeyOnePole(normFreq) : !,_; // // This is also a good example of the next step for generalizing the Faust // programming approach used for all these VA filters. In this case, there are -// three things to calculate each recursive step (y,s1,s2). For each thing, the +// three things to calculate each recursive step (`y`,`s1`,`s2`). For each thing, the // circuit is only calculated up to that point. // -// Comparing the LPF to BPF, the output signal (y) is calculated similarly. +// Comparing the LPF to BPF, the output signal (`y`) is calculated similarly. // Except, the output of the BPF stops earlier in the circuit. Similarly, the -// states (s1 and s2) only differ in that s2 includes a couple more terms -// beyond what is used for s1. +// states (`s1` and `s2`) only differ in that `s2` includes a couple more terms +// beyond what is used for `s1`. // // #### Usage // diff --git a/wavedigitalfilters.lib b/wavedigitalfilters.lib index 27b061ce..55004b07 100644 --- a/wavedigitalfilters.lib +++ b/wavedigitalfilters.lib @@ -30,7 +30,7 @@ ABOUT THIS LIBRARY This library is intended as a tool to help generating function DSP algorithms using Wave Digital Filters (WDF) The library includes both port elements with which to build symbolic WDF trees and the tools to turn those trees into DSP algorithms -implementation examples can be found at https://github.com/droosenb/faust-wdf-library +implementation examples can be found at a description of how adaptors are structured is shown at the head of *Simple One Port Adaptors @@ -38,14 +38,14 @@ a description of how the library builds the DSP algorithm from the user-given tr Many of the more in depth comments within the library include jargon. I plan to create videos detailing the theory of WDF's For now I recommend Kurt Werner's PhD, Virtual analog modeling of audio circuitry using wave digital filters, found here: -https://searchworks.stanford.edu/view/11891203 + I have tried to maintain consistent syntax and notation to the thesis. This library currently includes the majority of the adaptors covered in chapter 1 and some from chapter 3. ==================================================Library Readme================================================ -this documentation is taken directly from the readme of https://github.com/droosenb/faust-wdf-library. Please refer to it for a more updated version. +this documentation is taken directly from the readme of . Please refer to it for a more updated version. # faust-wdf-library