From bb97866e5ffd1b8e30abd9f241fbcbcdbaba5f8e Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Tue, 26 May 2026 14:49:39 +0100 Subject: [PATCH] Persist physical voice research packet --- docs/physical-voice-modeling-research.md | 7 +- research/physical-voice-modeling/README.md | 13 + research/physical-voice-modeling/SOURCES.md | 39 + research/physical-voice-modeling/SUMMARY.md | 85 + .../sources/faust-2.85.5-delays.lib | 564 ++ .../sources/faust-2.85.5-physmodels.lib | 5115 +++++++++++++++++ .../sources/frontiers-2023-ddsp-review.html | 102 + ...-rodriguez-2006-fractional-elongation.html | 819 +++ ...ward-murphy-2006-waveguide-vocal-tract.pdf | Bin 0 -> 746082 bytes state/evidence.jsonl | 1 + state/spine.yaml | 1 + 11 files changed, 6745 insertions(+), 1 deletion(-) create mode 100644 research/physical-voice-modeling/README.md create mode 100644 research/physical-voice-modeling/SOURCES.md create mode 100644 research/physical-voice-modeling/SUMMARY.md create mode 100644 research/physical-voice-modeling/sources/faust-2.85.5-delays.lib create mode 100644 research/physical-voice-modeling/sources/faust-2.85.5-physmodels.lib create mode 100644 research/physical-voice-modeling/sources/frontiers-2023-ddsp-review.html create mode 100644 research/physical-voice-modeling/sources/mathur-story-rodriguez-2006-fractional-elongation.html create mode 100644 research/physical-voice-modeling/sources/mullen-howard-murphy-2006-waveguide-vocal-tract.pdf diff --git a/docs/physical-voice-modeling-research.md b/docs/physical-voice-modeling-research.md index 879754f..55b8ec7 100644 --- a/docs/physical-voice-modeling-research.md +++ b/docs/physical-voice-modeling-research.md @@ -1,5 +1,11 @@ # Physical Voice Modeling Research Pass +Canonical research packet: `research/physical-voice-modeling/`. + +That folder contains downloaded/captured sources where possible, a source +manifest with hashes, and the distilled implementation summary. This document +remains the docs-facing copy of the same architectural direction. + ## Objective Generalize AquaSynth voice modeling beyond Pink Trombone. The target is a @@ -190,4 +196,3 @@ Add model records before more audio golf: Then lower the current PT fixtures through those records as one larynx-shaped configuration. A syrinx should be expressible by adding two source ports and a bronchial/tracheal branch topology, not by forking the tract voice. - diff --git a/research/physical-voice-modeling/README.md b/research/physical-voice-modeling/README.md new file mode 100644 index 0000000..a281429 --- /dev/null +++ b/research/physical-voice-modeling/README.md @@ -0,0 +1,13 @@ +# Physical Voice Modeling Research Packet + +This folder preserves the source material and distilled direction for the next +AquaSynth voice architecture pass. + +- `SUMMARY.md`: distilled implementation summary. +- `SOURCES.md`: source manifest, URLs, notes, and hashes. +- `sources/`: downloaded/captured source files where available. + +The working conclusion: model voices as acoustic port networks with continuous +morphology, source ports, branch/radiation ports, and wave-clock policies. Pink +Trombone is a larynx-shaped reference configuration, not the architecture. + diff --git a/research/physical-voice-modeling/SOURCES.md b/research/physical-voice-modeling/SOURCES.md new file mode 100644 index 0000000..0183dc3 --- /dev/null +++ b/research/physical-voice-modeling/SOURCES.md @@ -0,0 +1,39 @@ +# Physical Voice Modeling Sources + +Downloaded or captured on 2026-05-26. + +## Local Source Files + +| File | Source | Notes | SHA-256 | +| --- | --- | --- | --- | +| `sources/faust-2.85.5-delays.lib` | Local Faust 2.85.5 install, `C:\Program Files\Faust\share\faust\delays.lib` | Fractional delay implementations: linear, Lagrange, Thiran/allpass, variable delay. | `3089afb6654e6a37105d910f8b58f5c3bc4384acd57c5644227d69cb62486a39` | +| `sources/faust-2.85.5-physmodels.lib` | Local Faust 2.85.5 install, `C:\Program Files\Faust\share\faust\physmodels.lib` | Physical modeling primitives: bidirectional chains, length conversion, waveguides, tubes, terminations, wind/string models. | `4eaa76825372db0f79d0863912b46b21be73607dc99ac63dca3c` | +| `sources/mullen-howard-murphy-2006-waveguide-vocal-tract.pdf` | White Rose Research Online, `https://eprints.whiterose.ac.uk/id/document/715711` | Open PDF: waveguide vocal tract acoustics and increased-dimensionality discussion. | `cdb98482ea5dd2ac153e5097caa743f3691de0ddb747b0ae40466c2932ea106b` | +| `sources/mathur-story-rodriguez-2006-fractional-elongation.html` | Arizona Board of Regents page, `https://experts.azregents.edu/en/publications/vocal-tract-modeling-fractional-elongation-of-segment-lengths-in-/` | Metadata/abstract page for half-sample vocal-tract model with fractional-delay segment elongation. | `5ff7d56bb888b7dc7c7f402d38c51c31552edd0345ee7d5a972e9a784e6b236c` | +| `sources/frontiers-2023-ddsp-review.html` | Frontiers, `https://www.frontiersin.org/journals/signal-processing/articles/10.3389/frsip.2023.1284100/full` | Review article covering differentiable DSP for music/speech, including differentiable source-filter and Pink Trombone-style articulatory estimation. | `6f4f8cdfb5741df8a5e5be41304914cdbe887a8d5345161a8a63b8842fa54678` | + +## Sources Not Fully Downloaded + +- Mathur, Story, Rodriguez, "Vocal-tract modeling: Fractional elongation of + segment lengths in a waveguide model with half-sample delays", IEEE TASLP + 2006, DOI `10.1109/TSA.2005.858550`. + The local file is the accessible metadata/abstract page, not the full IEEE + article PDF. + +## Key Local Search Anchors + +Useful terms inside the downloaded Faust libraries: + +- `pm.l2s` +- `pm.chain` +- `pm.waveguideUd` +- `pm.waveguideFd` +- `pm.waveguideFd2` +- `pm.waveguideFd4` +- `de.fdelay` +- `de.fdelayltv` +- `de.fdelay1a` +- `de.fdelay2a` +- `de.fdelay3a` +- `de.fdelay4a` + diff --git a/research/physical-voice-modeling/SUMMARY.md b/research/physical-voice-modeling/SUMMARY.md new file mode 100644 index 0000000..1ff6d6b --- /dev/null +++ b/research/physical-voice-modeling/SUMMARY.md @@ -0,0 +1,85 @@ +# Physical Voice Modeling Research Summary + +## Objective + +Build AquaSynth voice synthesis around reusable physical-acoustic primitives, +not a Pink Trombone-shaped module. The same language should express a human +larynx, a bird-like syrinx, and alien anatomies by changing source ports, +branches, geometry, and radiation, not by adding special-case engines. + +## Distilled Model + +The right abstraction is an acoustic port network: + +- `AcousticMorphology` owns continuous geometry: named paths, lengths, + area/diameter curves, branch locations, and radiation openings. +- `AcousticSourcePort` owns excitation at a physical location: glottal folds, + paired syrinx labia, reed-like oscillators, turbulence jets, click cavities, + or synthetic/alien pressure sources. +- `AcousticBranch` owns topology and coupling: nasal coupling, bronchial split, + lateral channels, side vents, secondary resonators, and alien branch graphs. +- `AcousticRadiationPort` owns boundary behavior: lips, nostrils, beak exits, + membranes, vents, or other apertures. +- `WaveClockPolicy` owns physical length to delay conversion and the lowering + strategy: unit grid, half-sample grid, fractional delay, and smoothing. +- Differentiable controls should be normalized physical controls: path position, + area/opening, pressure, tension, coupling, loss, and source balance. Raw + emitted section indices are a backend detail. + +## Faust Implications + +Faust already has useful primitives: + +- `physmodels.lib` + - `pm.l2s`: length in meters to samples using sample rate and speed of sound. + - `pm.chain`: bidirectional physical-model chain composition. + - `pm.waveguideUd`, `pm.waveguideFd`, `pm.waveguideFd2`, `pm.waveguideFd4`: + unit and fractional bidirectional waveguides. +- `delays.lib` + - `de.fdelay`: linear fractional delay. + - `de.fdelayltv` and `de.fdelay1..5`: Lagrange fractional delays. + - `de.fdelay1a..4a`: Thiran/allpass delays, useful when magnitude-flat + interpolation matters and delay constraints are respected. + +The clean Aqua approach is hybrid: + +- Use Faust delay/waveguide primitives for tube segments where they match the + required delay behavior. +- Continue generating custom scattering equations where Aqua needs live area + controls, multi-port branch junctions, inspectable parameter paths, and + training-friendly graph structure. +- Avoid exposing `substeps` as a musical primitive. It is a historical clue + about PT's half-sample wave clock, not the owner of voice physics. + +## Implementation Direction + +Next model records should likely be: + +- `AcousticPath`: name, length, area curve, wave speed, loss. +- `AcousticSourcePort`: path, normalized position, source type, pressure, + tension/opening/noise controls. +- `AcousticBranch`: source path/position, target path/position, opening, + coupling, passivity constraints. +- `AcousticRadiationPort`: path/position, opening, reflection, radiation + filter/loss. +- `WaveClockPolicy`: delay strategy, fractional-delay order, max delay, and + smoothing mode. + +Pink Trombone then becomes one larynx-shaped preset over these primitives: +one glottal source port, one oral path, one nasal branch, and two radiation +ports. A syrinx becomes two source ports plus bronchial/tracheal topology. Alien +voices become more ports, branches, nonlinear junctions, and radiation surfaces. + +## Open Questions + +- Whether the primary training renderer should be the full waveguide network or + a differentiable response proxy periodically checked against waveguide audio. +- Which fractional-delay family is best for realtime moving morphology: + first-order Thiran/allpass for magnitude preservation, Lagrange for FIR-like + behavior, or crossfaded variable delay for fast geometry motion. +- How to constrain branch/source/radiation controls so learned parameters remain + passive or bounded enough to avoid explosive acoustic networks. +- How to expose syrinx-specific controls without hardcoding "bird mode": + paired source balance, independent tension/pressure, bronchial coupling, and + shared tract loading seem like source-port/topology controls. + diff --git a/research/physical-voice-modeling/sources/faust-2.85.5-delays.lib b/research/physical-voice-modeling/sources/faust-2.85.5-delays.lib new file mode 100644 index 0000000..1a04461 --- /dev/null +++ b/research/physical-voice-modeling/sources/faust-2.85.5-delays.lib @@ -0,0 +1,564 @@ +//################################ delays.lib ########################################## +// Delays library. Its official prefix is `de`. +// +// This library provides reusable building blocks for delay-based processing: +// single and multi-tap delays, fractional delays and utilities for echo and spatial effects. +// +// The Delays library is organized into 4 sections: +// +// * [Basic Delay Functions](#basic-delay-functions) +// * [Lagrange Interpolation](#lagrange-interpolation) +// * [Thiran Allpass Interpolation](#thiran-allpass-interpolation) +// * [Others](#others) +// +// #### References +// +// * +//######################################################################################## + +/************************************************************************ +************************************************************************ +FAUST library file +Copyright (C) 2003-2016 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. + +EXCEPTION TO THE LGPL LICENSE : As a special exception, you may create a +larger FAUST program which directly or indirectly imports this library +file and still distribute the compiled code generated by the FAUST +compiler, or a modified version of this compiled code, under your own +copyright and license. This EXCEPTION TO THE LGPL LICENSE explicitly +grants you the right to freely choose the license for the resulting +compiled code. In particular the resulting compiled code has no obligation +to be LGPL or GPL. For example you are free to choose a commercial or +closed source license or any other license if you decide so. +************************************************************************ +************************************************************************/ + +ma = library("maths.lib"); +ba = library("basics.lib"); +si = library("signals.lib"); +fi = library("filters.lib"); + +declare name "Faust Delay Library"; +declare version "1.2.0"; + +//==================================Basic Delay Functions================================= +//======================================================================================== + +//-------`(de.)delay`---------- +// Simple `d` samples delay where `n` is the maximum delay length as a number of +// samples. Unlike the `@` delay operator, here the delay signal `d` is explicitly +// bounded to the interval [0..n]. The consequence is that delay will compile even +// if the interval of d can't be computed by the compiler. +// `delay` is a standard Faust function. +// +// #### Usage +// +// ``` +// _ : delay(n,d) : _ +// ``` +// +// Where: +// +// * `n`: the max delay length in samples +// * `d`: the delay length in samples (integer) + +// #### Test +// ``` +// de = library("delays.lib"); +// os = library("oscillators.lib"); +// delay_test = os.osc(440) : de.delay(44100, 22050); +// ``` +// +// TODO: add MBH np2 +//----------------------------- +delay(n,d,x) = x @ min(n, max(0,d)); + + +//-------`(de.)fdelay`---------- +// Simple `d` samples fractional delay based on 2 interpolated delay lines where `n` is +// the maximum delay length as a number of samples. +// +// `fdelay` is a standard Faust function. +// +// #### Usage +// +// ``` +// _ : fdelay(n,d) : _ +// ``` +// +// Where: +// +// * `n`: the max delay length in samples +// * `d`: the delay length in samples (float) +// +// #### Test +// ``` +// de = library("delays.lib"); +// os = library("oscillators.lib"); +// fdelay_test = os.osc(440) : de.fdelay(44100, 22050.5); +// ``` +//----------------------------- +fdelay(n,d,x) = delay(n+1,int(d),x)*(1 - ma.frac(d)) + delay(n+1,int(d)+1,x)*ma.frac(d); + + +//--------------------------`(de.)sdelay`---------------------------- +// s(mooth)delay: a mono delay that doesn't click and doesn't +// transpose when the delay time is changed. +// +// #### Usage +// +// ``` +// _ : sdelay(n,it,d) : _ +// ``` +// +// Where: +// +// * `n`: the max delay length in samples +// * `it`: interpolation time (in samples), for example 1024 +// * `d`: the delay length in samples (float) +// +// #### Test +// ``` +// de = library("delays.lib"); +// os = library("oscillators.lib"); +// sdelay_test = os.osc(440) : de.sdelay(44100, 1024, 22050.5); +// ``` +//----------------------------- +sdelay(n, it, d) = ctrl(it,d),_ : ddi(n) +with { + // ddi(n,i,d0,d1) + // DDI (Double Delay with Interpolation) : the input signal is sent to two + // delay lines. The outputs of these delay lines are crossfaded with + // an interpolation stage. By acting on this interpolation value one + // can move smoothly from one delay to another. When is 0 we can + // freely change the delay time of line 1, when it is 1 we can freely change + // the delay time of line 0. + // + // = maximal delay in samples + // = interpolation value between 0 and 1 used to crossfade the outputs of the + // two delay lines (0.0: first delay line, 1.0: second delay line) + // = delay time of delay line 0 in samples between 0 and -1 + // = delay time of delay line 1 in samples between 0 and -1 + // < > = the input signal we want to delay + ddi(n, i, d0, d1) = _ <: delay(n,d0), delay(n,d1) : si.interpolate(i); + + // ctrl(it,d) + // Control logic for a Double Delay with Interpolation according to two + // + // USAGE : ctrl(it,d) + // where : + // an interpolation time (in samples, for example 256) + // a delay time (in samples) + // + // ctrl produces 3 outputs : an interpolation value and two delay + // times and . These signals are used to control a ddi (Double Delay with Interpolation). + // The principle is to detect changes in the input delay time d, then to + // change the delay time of the delay line currently unused and then by a + // smooth crossfade to remove the first delay line and activate the second one. + // + // The control logic has an internal state controlled by 4 elements + // : the interpolation variation (0, 1/it, -1/it) + // : the interpolation value (between 0 and 1) + // : the delay time of line 0 + // : the delay time of line 1 + // + // Please note that the last stage (!,_,_,_) cut because it is only + // used internally. + ctrl(it, d) = \(v,ip,d0,d1).((nv, nip, nd0, nd1) + with { + // interpolation variation + nv = ba.if (v!=0.0, // if variation we are interpolating + ba.if ((ip>0.0) & (ip<1.0), v, 0), // should we continue or not ? + ba.if ((ip==0.0) & (d!=d0), 1.0/it, // if true xfade from dl0 to dl1 + ba.if ((ip==1.0) & (d!=d1), -1.0/it, // if true xfade from dl1 to dl0 + 0))); // nothing to change + // interpolation value + nip = ip+nv : min(1.0) : max(0.0); + + // update delay time of line 0 if needed + nd0 = ba.if ((ip >= 1.0) & (d1!=d), d, d0); + + // update delay time of line 1 if needed + nd1 = ba.if ((ip <= 0.0) & (d0!=d), d, d1); + }) ~ (_,_,_,_) : (!,_,_,_); +}; + + +//------------------`(de.)prime_power_delays`---------------- +// Prime Power Delay Line Lengths. +// +// #### Usage +// +// ``` +// si.bus(N) : prime_power_delays(N,pathmin,pathmax) : si.bus(N); +// ``` +// +// Where: +// +// * `N`: positive integer up to 16 (for higher powers of 2, extend 'primes' array below) +// * `pathmin`: minimum acoustic ray length in the reverberator (in meters) +// * `pathmax`: maximum acoustic ray length (meters) - think "room size" +// +// #### Test +// ``` +// de = library("delays.lib"); +// prime_power_delays_test = de.prime_power_delays(4, 1, 10); +// ``` +// +// #### References +// +// * +//------------------------------------------------------------ +declare prime_power_delays author "Julius O. Smith III"; + +prime_power_delays(N,pathmin,pathmax) = par(i,N,delayvals(i)) with { + Np = 16; + primes = 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53; + prime(n) = primes : ba.selector(n,Np); // math.lib + + // Prime Power Bounds [matlab: floor(log(maxdel)./log(primes(53)))] + maxdel = 8192; // more than 63 meters at 44100 samples/sec & 343 m/s + ppbs = 13,8,5,4, 3,3,3,3, 2,2,2,2, 2,2,2,2; // 8192 is enough for all + ppb(i) = ba.take(i+1,ppbs); + + // Approximate desired delay-line lengths using powers of distinct primes: + c = 343; // soundspeed in m/s at 20 degrees C for dry air + dmin = ma.SR*pathmin/c; + dmax = ma.SR*pathmax/c; + dl(i) = dmin * (dmax/dmin)^(i/float(N-1)); // desired delay in samples + ppwr(i) = floor(0.5+log(dl(i))/log(prime(i))); // best prime power + delayvals(i) = prime(i)^ppwr(i); // each delay a power of a distinct prime +}; + + +//===============================Lagrange Interpolation=================================== +//======================================================================================== + +//----------------------`(de.)fdelaylti` and `(de.)fdelayltv`------------------------- +// Fractional delay line using Lagrange interpolation. +// +// #### Usage +// +// ``` +// _ : fdelaylt[i|v](N, n, d) : _ +// ``` +// +// Where: +// +// * `N=1,2,3,...` is the order of the Lagrange interpolation polynomial (constant numerical expression) +// * `n`: the max delay length in samples +// * `d`: the delay length in samples +// +// `fdelaylti` is most efficient, but designed for constant/slowly-varying delay. +// `fdelayltv` is more expensive and more robust when the delay varies rapidly. +// +// Note: the requested delay should not be less than `(N-1)/2`. +// +// #### Test +// ``` +// de = library("delays.lib"); +// os = library("oscillators.lib"); +// fdelaylti_test = os.osc(440) : de.fdelaylti(3, 44100, 22050.5); +// ``` +// +// #### References +// +// * +// * [Fixed-delay case](https://ccrma.stanford.edu/~jos/Interpolation/Efficient_Time_Invariant_Lagrange_Interpolation.html) +// * [Variable-delay case](https://ccrma.stanford.edu/~jos/Interpolation/Time_Varying_Lagrange_Interpolation.html) +// * Timo I. Laakso et al., "Splitting the Unit Delay - Tools for Fractional Delay Filter Design", IEEE Signal Processing Magazine, vol. 13, no. 1, pp. 30-60, Jan 1996. +// * Philippe Depalle and Stephan Tassart, "Fractional Delay Lines using Lagrange Interpolators", ICMC Proceedings, pp. 341-343, 1996. +//------------------------------------------------------------ +declare fdelaylti author "Julius O. Smith III"; + +fdelaylti(N,n,d,x) = delay(n,id,x) <: seq(i,N,section(i)) : !,_ +with { + o = (N-1.00001)/2; // offset to ~center FIR interpolator + dmo = d - o; // assumed nonnegative [d > (N-1)/2] + id = int(dmo); + fd = o + ma.frac(dmo); + section(i,x,y) = (x-x') * c(i) <: _,+(y); + c(i) = (i - fd)/(i+1); +}; + +declare fdelayltv author "Julius O. Smith III"; + +fdelayltv(N,n,d,x) = sum(i, N+1, delay(n,id+i,x) * h(N,fd,i)) +with { + o = (N-1.00001)/2; // ~center FIR interpolator + dmo = d - o; // assumed nonnegative [d > (N-1)/2] + id = int(dmo); + fd = o + ma.frac(dmo); + h(N,d,n) = facs1(N,d,n) * facs2(N,d,n); + facs1(N,d,n) = select2(n,1,prod(k,max(1,n),select2(k +//======================================================================================== + +//----------------`(de.)fdelay[N]a`------------- +// Delay lines interpolated using Thiran allpass interpolation. +// +// #### Usage +// +// ``` +// _ : fdelay[N]a(n, d) : _ +// ``` +// +// (exactly like `fdelay`) +// +// Where: +// +// * `N=1,2,3, or 4` is the order of the Thiran interpolation filter (constant numerical expression), +// and the delay argument is at least `N-1/2`. First-order: `d` at least 0.5, second-order: `d` at least 1.5, +// third-order: `d` at least 2.5, fourth-order: `d` at least 3.5. +// * `n`: the max delay length in samples +// * `d`: the delay length in samples +// +// #### Test +// ``` +// de = library("delays.lib"); +// os = library("oscillators.lib"); +// fdelay2a_test = os.osc(440) : de.fdelay2a(44100, 22050.5); +// ``` +// +// #### Note +// +// The interpolated delay should not be less than `N-1/2`. +// (The allpass delay ranges from `N-1/2` to `N+1/2`). +// This constraint can be alleviated by altering the code, +// but be aware that allpass filters approach zero delay +// by means of pole-zero cancellations. +// +// Delay arguments too small will produce an UNSTABLE allpass! +// +// Because allpass interpolation is recursive, it is not as robust +// as Lagrange interpolation under time-varying conditions +// (you may hear clicks when changing the delay rapidly). +// +//------------------------------------------------------------ +declare fdelay1a author "Julius O. Smith III"; + +fdelay1a(n,d,x) = delay(n,id,x) : fi.tf1(eta,1,eta) +with { + o = 0.49999; // offset to make life easy for allpass + dmo = d - o; // assumed nonnegative + id = int(dmo); + fd = o + ma.frac(dmo); + eta = (1-fd)/(1+fd); // allpass coefficient +}; + +declare fdelay2a author "Julius O. Smith III"; +fdelay2a(n,d,x) = delay(n,id,x) : fi.tf2(a2,a1,1,a1,a2) +with { + o = 1.49999; + dmo = d - o; // delay range is [order-1/2, order+1/2] + id = int(dmo); + fd = o + ma.frac(dmo); + a1o2 = (2-fd)/(1+fd); // share some terms (the compiler does this anyway) + a1 = 2*a1o2; + a2 = a1o2*(1-fd)/(2+fd); +}; + +declare fdelay3a author "Julius O. Smith III"; +fdelay3a(n,d,x) = delay(n,id,x) : fi.iir((a3,a2,a1,1),(a1,a2,a3)) +with { + o = 2.49999; + dmo = d - o; + id = int(dmo); + fd = o + ma.frac(dmo); + a1o3 = (3-fd)/(1+fd); + a2o3 = a1o3*(2-fd)/(2+fd); + a1 = 3*a1o3; + a2 = 3*a2o3; + a3 = a2o3*(1-fd)/(3+fd); +}; + +declare fdelay4a author "Julius O. Smith III"; +fdelay4a(n,d,x) = delay(n,id,x) : fi.iir((a4,a3,a2,a1,1),(a1,a2,a3,a4)) +with { + o = 3.49999; + dmo = d - o; + id = int(dmo); + fd = o + ma.frac(dmo); + a1o4 = (4-fd)/(1+fd); + a2o6 = a1o4*(3-fd)/(2+fd); + a3o4 = a2o6*(2-fd)/(3+fd); + a1 = 4*a1o4; + a2 = 6*a2o6; + a3 = 4*a3o4; + a4 = a3o4*(1-fd)/(4+fd); +}; + +//==================================Others================================================ +//======================================================================================== + +//----------------`(de.)multiTapSincDelay`------------- +// +// Variable delay line using multi-tap sinc interpolation. +// +// This function implements a continuously variable delay line by superposing (2K+2) auxiliary delayed signals +// whose positions and gains are determined by a sinc-based interpolation method. It extends the traditional +// crossfade delay technique to significantly reduce spectral coloration artifacts, which are problematic in +// applications like Wave Field Synthesis (WFS) and auralization. +// +// Operation: +// +// - If tau1 and tau2 are very close (|tau2 - tau1| ≈ 0), a simple fixed fractional delay is applied +// - Otherwise, a variable delay is synthesized by: +// +// - Computing (2K+2) taps symmetrically distributed around tau1 and tau2 +// - Applying sinc-based weighting to each tap, based on its offset from the target interpolated delay tau +// - Summing all the weighted taps to produce the output +// +// Features: +// +// - Smooth delay variation without introducing Doppler pitch shifts +// - Significant reduction of comb-filter coloration compared to classical crossfading +// - Switching between fixed and variable delay modes to ensure stability +// +// #### Usage +// +// ``` +// _ : multiTapSincDelay(K, MaxDelay, tau1, tau2, alpha) : _ +// ``` +// +// Where: +// +// * `K (integer)`: number of auxiliary tap pairs (a constant numerical expression). Total number of taps = 2*K + 2 +// * `MaxDelay`: maximum allowable delay in samples (buffer size) +// * `tau1`: initial delay in samples (can be fractional) +// * `tau2`: target delay in samples (can be fractional) +// * `alpha`: interpolation factor between tau1 and tau2 (in [0,1] with 0 = tau1, 1 = tau2) +// +// #### Test +// ``` +// de = library("delays.lib"); +// os = library("oscillators.lib"); +// multiTapSincDelay_test = os.osc(440) : de.multiTapSincDelay(2, 4096, 1024.0, 1536.0, 0.5); +// ``` +// +// #### References +// +// T. Carpentier, "Implementation of a continuously variable delay line by crossfading between several tap delays", 2024: +//------------------------------------------------------------ +multiTapSincDelay(K, MaxDelay, tau1, tau2, alpha, input) = output with { + + // Total number of taps used in the sum (2K + 2). + numTaps = 2 * K + 2; + + // Normalized Sinc function: sinc(x) = sin(pi*x)/(pi*x) + // Handles the case where x ≈ 0 to avoid division by zero and return 1. + sinc(x) = ba.if(abs(x) < ma.EPSILON, 1, sin(ma.PI * x) / (ma.PI * x)); + + // Computes the difference between two delays: delta = tau2 - tau1 + delta(t1, t2) = t2 - t1; + + // Computes the target interpolated delay: tau = (1-alpha)*tau1 + alpha*tau2 + // This is the center of the sinc function for the hk gains. + tau(t1, t2, a) = (1 - a) * t1 + a * t2; + + // Computes the position (delay in samples) of the i-th tap (tk), + // according to equation (17) of the article. + tk(i, t1, t2) = ba.if(i <= K, + t1 - (K - i) * delta(t1, t2), + t2 + (i - K - 1) * delta(t1, t2)); + + // Computes the gain (hk) of the i-th tap, according to equation (19) of the paper. + // hk = sinc((tk - tau) / delta) + hk(i, t1, t2, a) = sinc(offset) with { + d = delta(t1, t2); + denom = ba.if(abs(d) < ma.EPSILON, 1, d); + offset = (tk(i, t1, t2) - tau(t1, t2, a)) / denom; + }; + + // Computes the sum of delayed signals weighted by their gains. + // This is the core of the variable multi-tap effect. + tapSum(sig, t1, t2, a) = + // Iterates from i = 0 to numTaps-1 + sum(i, numTaps, + // For each tap 'i': + // 1. Delays the signal 'sig' by tk(i) samples (fractional) + // using an internal delay line (fdelay). + // 2. Multiplies the delayed signal by the gain hk(i). + sig : fdelay(MaxDelay, tk(i, t1, t2)) * hk(i, t1, t2, a) + ); + + // Simple function to apply a fixed delay (potentially fractional). + // Used when tau1 and tau2 are very close. + fixedDelay(x, t) = x : fdelay(MaxDelay, t); + + // Determines if delays tau1 and tau2 are close enough to be + // considered fixed (to avoid unstable calculations when delta ≈ 0). + // isFixed equals 1 if delta ≈ 0, otherwise 0. + isFixed = abs(delta(tau1, tau2)) < ma.EPSILON; + + // Computes the output corresponding to the fixed delay (used if isFixed=1). + fd = fixedDelay(input, tau1); + + // Computes the output corresponding to the variable multi-tap delay (used if isFixed=0). + mt = tapSum(input, tau1, tau2, alpha); + + // Selects the final output based on isFixed. + output = ba.if(isFixed, fd, mt); +}; + + +//////////////////////////////////Deprecated Functions//////////////////////////////////// +// This section implements functions that used to be in music.lib but that are now +// considered as "deprecated". +////////////////////////////////////////////////////////////////////////////////////////// + +delay1s(d) = delay(65536,d); +delay2s(d) = delay(131072,d); +delay5s(d) = delay(262144,d); +delay10s(d) = delay(524288,d); +delay21s(d) = delay(1048576,d); +delay43s(d) = delay(2097152,d); + +fdelay1s(d) = fdelay(65536,d); +fdelay2s(d) = fdelay(131072,d); +fdelay5s(d) = fdelay(262144,d); +fdelay10s(d) = fdelay(524288,d); +fdelay21s(d) = fdelay(1048576,d); +fdelay43s(d) = fdelay(2097152,d); diff --git a/research/physical-voice-modeling/sources/faust-2.85.5-physmodels.lib b/research/physical-voice-modeling/sources/faust-2.85.5-physmodels.lib new file mode 100644 index 0000000..e16d950 --- /dev/null +++ b/research/physical-voice-modeling/sources/faust-2.85.5-physmodels.lib @@ -0,0 +1,5115 @@ +//##################################### physmodels.lib ################################### +// Faust physical modeling library. Its official prefix is `pm`. +// +// This library provides an environment to facilitate physical modeling of musical +// instruments. It includes waveguide, mass-spring, and digital wave +// models for strings, membranes, bars, and resonant systems used in physical modeling +// synthesis and acoustic simulation research. It contains dozens of functions implementing +// low and high level elements going from a simple waveguide to fully operational models with +// built-in UI, etc. +// +// It is organized as follows: +// +// * [Global Variables](#global-variables): useful pre-defined variables for +// physical modeling (e.g., speed of sound, etc.). +// * [Conversion Tools](#conversion-tools-1): conversion functions specific +// to physical modeling (e.g., length to frequency, etc.). +// * [Bidirectional Utilities](#bidirectional-utilities): functions to create +// bidirectional block diagrams for physical modeling. +// * [Basic Elements](#basic-elements-1): waveguides, specific types of filters, etc. +// * [String Instruments](#string-instruments): various types of strings +// (e.g., steel, nylon, etc.), bridges, guitars, etc. +// * [Bowed String Instruments](#bowed-string-instruments): parts and models +// specific to bowed string instruments (e.g., bows, bridges, violins, etc.). +// * [Wind Instrument](#wind-instruments): parts and models specific to wind +// instruments (e.g., reeds, mouthpieces, flutes, clarinets, etc.). +// * [Exciters](#exciters): pluck generators, "blowers", etc. +// * [Modal Percussions](#modal-percussions): percussion instruments based on +// modal models. +// * [Vocal Synthesis](#vocal-synthesis): functions for various vocal synthesis +// techniques (e.g., fof, source/filter, etc.) and vocal synthesizers. +// * [Misc Functions](#misc-functions): any other functions that don't fit in +// the previous category (e.g., nonlinear filters, etc.). +// +// This library is part of the Faust Physical Modeling ToolKit. +// More information on how to use this library can be found on this [page](https://ccrma.stanford.edu/~rmichon/pmFaust) or this [video](https://faust.grame.fr/community/events/#introduction-to-the-faust-physical-modeling-toolkit-romain-michon). Tutorials on how to make +// physical models of musical instruments using Faust can be found +// [here](https://ccrma.stanford.edu/~rmichon/faustTutorials/#making-physical-models-of-musical-instruments-with-faust) as well. +// +// #### References +// +// * +//######################################################################################## +// Authors: Romain Michon, Pierre-Amaury Grumiaux, and Yann Orlarey + +import("stdfaust.lib"); + +declare name "Faust Physical Models Library"; +declare version "1.2.0"; + +/* +TODO: + - It'd be cool to have a version of the block diagram generator that automatically flips + things based on the use of chains, etc. + - When setting pole of filters by hand (e.g. smooth, should adjust pole in function of SR) + - Probably need a single resonator function / see how to integrate that with "mode" + - Need a non-linear function and see how this can be integrated with modal synthesis + - See how bowed modal models could be integrated to this + - Currently still missing keyboard instruments + - Currently still missing vocal synth: easy to fix (create a formant filter function) + - Real polyphonic instruments should be designated with some kind of prefix (e.g., + full) +*/ + +//=============================Global Variables=========================================== +// Useful pre-defined variables for physical modeling. +//======================================================================================== + +//--------------`(pm.)speedOfSound`---------- +// Speed of sound in meters per second (340m/s). +//-------------------------------------- +speedOfSound = 340; + +//--------------`(pm.)maxLength`---------- +// The default maximum length (3) in meters of strings and tubes used in this +// library. This variable should be overriden to allow longer strings or tubes. +//-------------------------------------- +maxLength = 3; + +//================================Conversion Tools======================================= +// Useful conversion tools for physical modeling. +//======================================================================================== + +//--------------`(pm.)f2l`---------- +// Frequency to length in meters. +// +// #### Usage +// +// ``` +// f2l(freq) : distanceInMeters +// ``` +// +// Where: +// +// * `freq`: the frequency +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// f2l_test = pm.f2l(440); +// ``` +//------------------------------- +f2l(freq) = speedOfSound/freq; + +//--------------`(pm.)l2f`---------- +// Length in meters to frequency. +// +// #### Usage +// +// ``` +// l2f(length) : freq +// ``` +// +// Where: +// +// * `length`: length/distance in meters +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// l2f_test = pm.l2f(0.75); +// ``` +//------------------------------- +l2f(length) = speedOfSound/length; + +//--------------`(pm.)l2s`---------- +// Length in meters to number of samples. +// +// #### Usage +// +// ``` +// l2s(l) : numberOfSamples +// ``` +// +// Where: +// +// * `l`: length in meters +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// l2s_test = pm.l2s(1.2); +// ``` +//------------------------------- +l2s(l) = l*ma.SR/speedOfSound; + +//=============================Bidirectional Utilities==================================== +// Set of fundamental functions to create bi-directional block diagrams in Faust. +// These elements are used as the basis of this library to connect high level +// elements (e.g., mouthpieces, strings, bridge, instrument body, etc.). Each +// block has 3 inputs and 3 outputs. The first input/output carry left going +// waves, the second input/output carry right going waves, and the third +// input/output is used to carry any potential output signal to the end of the +// algorithm. +//======================================================================================== + +//--------------`(pm.)basicBlock`---------- +// Empty bidirectional block to be used with [`chain`](#chain): 3 signals ins +// and 3 signals out. +// +// #### Usage +// +// ``` +// chain(basicBlock : basicBlock : etc.) +// ``` +// +// Where: +// +// * `basicBlock`: any bidirectional block with 3 inputs and 3 outputs +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// basicBlock_test = 0.25, -0.15, 0.05 : pm.basicBlock; +// ``` +//------------------------------- +basicBlock = _,_,_; + +//-------`(pm.)chain`---------- +// Creates a chain of bidirectional blocks. +// Blocks must have 3 inputs and outputs. The first input/output carry left +// going waves, the second input/output carry right going waves, and the third +// input/output is used to carry any potential output signal to the end of the +// algorithm. The implied one sample delay created by the `~` operator is +// generalized to the left and right going waves. Thus, `n` blocks in `chain()` +// will add an `n` samples delay to both left and right going waves. +// +// #### Usage +// +// ``` +// leftGoingWaves,rightGoingWaves,mixedOutput : chain( A : B ) : leftGoingWaves,rightGoingWaves,mixedOutput +// with { +// A = _,_,_; +// B = _,_,_; +// }; +// ``` +// +// Where: +// +// * `A`: first bidirectional block in the chain +// * `B`: next bidirectional block in the chain +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// chain_test = 0.25, -0.15, 0.05 : pm.chain(pm.basicBlock); +// ``` +//----------------------------- +chain(A:As) = ((ro.crossnn(1),_',_ : _,A : ro.crossnn(1),_,_ : _,chain(As) : ro.crossnn(1),_,_)) ~ _ : !,_,_,_; +chain(A) = A; + +//-------`(pm.)inLeftWave`-------------- +// Adds a signal to left going waves anywhere in a [`chain`](#chain) of blocks. +// +// #### Usage +// +// ``` +// model(x) = chain(A : inLeftWave(x) : B) +// ``` +// +// Where: +// +// * `A`: preceding bidirectional block +// * `x`: signal added to the left-going wave +// * `B`: following bidirectional block +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// inLeftWave_test = 0, 0, 0 : pm.inLeftWave(0.25); +// ``` +//-------------------------------- +inLeftWave(x) = +(x),_,_; + +//-------`(pm.)inRightWave`-------------- +// Adds a signal to right going waves anywhere in a [`chain`](#chain) of blocks. +// +// #### Usage +// +// ``` +// model(x) = chain(A : inRightWave(x) : B) +// ``` +// +// Where: +// +// * `A`: preceding bidirectional block +// * `x`: signal added to the right-going wave +// * `B`: following bidirectional block +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// inRightWave_test = 0, 0, 0 : pm.inRightWave(0.25); +// ``` +//-------------------------------- +inRightWave(x) = _,+(x),_; + +//-------`(pm.)in`-------------- +// Adds a signal to left and right going waves anywhere in a [`chain`](#chain) +// of blocks. +// +// #### Usage +// +// ``` +// model(x) = chain(A : in(x) : B) +// ``` +// +// Where: +// +// * `A`: preceding bidirectional block +// * `x`: signal added to both left- and right-going waves +// * `B`: following bidirectional block +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// in_test = 0, 0, 0 : pm.in(0.25); +// ``` +//-------------------------------- +in(x) = +(x),+(x),_; + +//-------`(pm.)outLeftWave`-------------- +// Sends the signal of left going waves to the output channel of the [`chain`](#chain). +// +// #### Usage +// +// ``` +// chain(A : outLeftWave : B) +// ``` +// +// Where: +// +// * `A`: preceding bidirectional block +// * `B`: following bidirectional block +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// outLeftWave_test = pm.outLeftWave(0.1, 0.2, 0.3); +// ``` +//-------------------------------- +outLeftWave(x,y,s) = x,y,x+s; + +//-------`(pm.)outRightWave`-------------- +// Sends the signal of right going waves to the output channel of the [`chain`](#chain). +// +// #### Usage +// +// ``` +// chain(A : outRightWave : B) +// ``` +// +// Where: +// +// * `A`: preceding bidirectional block +// * `B`: following bidirectional block +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// outRightWave_test = pm.outRightWave(0.1, 0.2, 0.3); +// ``` +//-------------------------------- +outRightWave(x,y,s) = x,y,y+s; + +//-------`(pm.)out`-------------- +// Sends the signal of right and left going waves to the output channel of the +// [`chain`](#chain). +// +// #### Usage +// +// ``` +// chain(A : out : B) +// ``` +// +// Where: +// +// * `A`: preceding bidirectional block +// * `B`: following bidirectional block +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// out_test = pm.out(0.1, 0.2, 0.3); +// ``` +//-------------------------------- +out(x,y,s) = x,y,x+y+s; + +//-------`(pm.)terminations`-------------- +// Creates terminations on both sides of a [`chain`](#chain) without closing +// the inputs and outputs of the bidirectional signals chain. As for +// [`chain`](#chain), this function adds a 1 sample delay to the bidirectional +// signal, both ways. Of course, this function can be nested within a +// [`chain`](#chain). +// +// #### Usage +// +// ``` +// terminations(a,b,c) +// with { +// a = *(-1); // left termination +// b = chain(D : E : F); // bidirectional chain of blocks (D, E, F, etc.) +// c = *(-1); // right termination +// }; +// ``` +// +// Where: +// +// * `a`: left termination filter +// * `b`: bidirectional chain to terminate +// * `c`: right termination filter +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// terminations_test = 0.25, -0.15, 0.05 : pm.terminations(*(-1), pm.basicBlock, *(-1)); +// ``` +//---------------------------------------- +terminations(a,b,c) = (_,ro.crossnn(1),_,_ : +,+,_ : b) ~ (a,c : ro.crossnn(1)); + +//-------`(pm.)lTermination`---------- +// Creates a termination on the left side of a [`chain`](#chain) without +// closing the inputs and outputs of the bidirectional signals chain. This +// function adds a 1 sample delay near the termination and can be nested +// within another [`chain`](#chain). +// +// #### Usage +// +// ``` +// lTermination(a,b) +// with { +// a = *(-1); // left termination +// b = chain(D : E : F); // bidirectional chain of blocks (D, E, F, etc.) +// }; +// ``` +// +// Where: +// +// * `a`: left termination filter +// * `b`: bidirectional chain to terminate +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// lTermination_test = 0.25, -0.15, 0.05 : pm.lTermination(*(-1), pm.basicBlock); +// ``` +//---------------------------------------- +lTermination(a,b) = (ro.crossnn(1),_,_ : _,+,_ : b) ~ a; + +//-------`(pm.)rTermination`---------- +// Creates a termination on the right side of a [`chain`](#chain) without +// closing the inputs and outputs of the bidirectional signals chain. This +// function adds a 1 sample delay near the termination and can be nested +// within another [`chain`](#chain). +// +// #### Usage +// +// ``` +// rTermination(b,c) +// with { +// b = chain(D : E : F); // bidirectional chain of blocks (D, E, F, etc.) +// c = *(-1); // right termination +// }; +// ``` +// +// Where: +// +// * `b`: bidirectional chain to terminate +// * `c`: right termination filter +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// rTermination_test = 0.25, -0.15, 0.05 : pm.rTermination(pm.basicBlock, *(-1)); +// ``` +//---------------------------------------- +rTermination(b,c) = (_,_,_,_ : +,_,_ : b) ~ (!,c); + +//-------`(pm.)closeIns`---------- +// Closes the inputs of a bidirectional chain in all directions. +// +// #### Usage +// +// ``` +// closeIns : _,_,_ +// ``` +// Typical use: `closeIns : chain(...) : _,_,_` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// closeIns_test = pm.closeIns, 0.25; +// ``` +//---------------------------------------- +closeIns = 0,0,0; + +//-------`(pm.)closeOuts`---------- +// Closes the outputs of a bidirectional chain in all directions except for the +// main signal output (3d output). +// +// #### Usage +// +// ``` +// _,_,_ : chain(...) : _ +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// closeOuts_test = ((0.25, -0.15, 0.05) : pm.closeOuts), 0.25; +// ``` +//---------------------------------------- +closeOuts = !,!,_; + +//-------`(pm.)endChain`---------- +// Closes the inputs and outputs of a bidirectional chain in all directions +// except for the main signal output (3d output). +// +// #### Usage +// +// ``` +// endChain(chain(...)) : _ +// ``` +// +// Where: +// +// * `b`: bidirectional chain to close on all non-audio ports +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// endChain_test = pm.endChain((_, _, _ + 0.25)); +// ``` +//---------------------------------------- +endChain(b) = closeIns : b : closeOuts; + + +//==================================Basic Elements======================================== +// Basic elements for physical modeling (e.g., waveguides, specific filters, +// etc.). +//======================================================================================== + +//-------`(pm.)waveguideN`---------- +// A series of waveguide functions based on various types of delays (see +// [`fdelay[n]`](#fdelayn)). +// +// #### List of functions +// +// * `waveguideUd`: unit delay waveguide +// * `waveguideFd`: fractional delay waveguide +// * `waveguideFd2`: second order fractional delay waveguide +// * `waveguideFd4`: fourth order fractional delay waveguide +// +// #### Usage +// +// ``` +// chain(A : waveguideUd(nMax,n) : B) +// ``` +// +// Where: +// +// * `nMax`: the maximum length of the delays in the waveguide +// * `n`: the length of the delay lines in samples. +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// waveguideUd_test = 0.25, -0.15, 0.05 : pm.waveguideUd(512, 32); +// ``` +//---------------------------------- +waveguideUd(nMax,n) = par(i,2,de.delay(nMax,n)),_; +waveguideFd(nMax,n) = par(i,2,de.fdelay(nMax,n)),_; +waveguideFd2(nMax,n) = par(i,2,de.fdelay2(nMax,n)),_; +waveguideFd4(nMax,n) = par(i,2,de.fdelay4(nMax,n)),_; + + +//-------`(pm.)waveguide`---------- +// Standard `pm.lib` waveguide (based on [`waveguideFd4`](#waveguiden)). +// +// #### Usage +// +// ``` +// chain(A : waveguide(nMax,n) : B) +// ``` +// +// Where: +// +// * `nMax`: the maximum length of the delays in the waveguide +// * `n`: the length of the delay lines in samples. +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// waveguide_test = 0.25, -0.15, 0.05 : pm.waveguide(512, 32); +// ``` +//---------------------------------- +waveguide(nMax,n) = waveguideFd4(nMax,n); + + +//-------`(pm.)bridgeFilter`---------- +// Generic two zeros bridge FIR filter (as implemented in the +// [STK](https://ccrma.stanford.edu/software/stk/)) that can be used to +// implement the reflectance violin, guitar, etc. bridges. +// +// #### Usage +// +// ``` +// _ : bridgeFilter(brightness,absorption) : _ +// ``` +// +// Where: +// +// * `brightness`: controls the damping of high frequencies (0-1) +// * `absorption`: controls the absorption of the brige and thus the t60 of +// the string connected to it (0-1) (1 = 20 seconds) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// bridgeFilter_test = os.osc(110) : pm.bridgeFilter(0.6, 0.4); +// ``` +//---------------------------------- +// TODO: perhaps, the coefs of this filter should be adapted in function of SR +bridgeFilter(brightness,absorption,x) = rho * (h0 * x' + h1*(x+x'')) +with { + freq = 320; + t60 = (1-absorption)*20; + h0 = (1.0 + brightness)/2; + h1 = (1.0 - brightness)/4; + rho = pow(0.001,1.0/(freq*t60)); +}; + + +//-------`(pm.)modeFilter`---------- +// Resonant bandpass filter that can be used to implement a single resonance +// (mode). +// +// #### Usage +// +// ``` +// _ : modeFilter(freq,t60,gain) : _ +// ``` +// +// Where: +// +// * `freq`: mode frequency +// * `t60`: mode resonance duration (in seconds) +// * `gain`: mode gain (0-1) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// modeFilter_test = os.osc(110) : pm.modeFilter(440, 1.5, 0.8); +// ``` +//---------------------------------- +modeFilter(freq,t60,gain) = fi.tf2(b0,b1,b2,a1,a2)*gain +with { + b0 = 1; + b1 = 0; + b2 = -1; + w = 2*ma.PI*freq/ma.SR; + r = pow(0.001,1/float(t60*ma.SR)); + a1 = -2*r*cos(w); + a2 = r^2; +}; + + +//================================String Instruments====================================== +// Low and high level string instruments parts. Most of the elements in +// this section can be used in a bidirectional chain. +//======================================================================================== + +//-------`(pm.)stringSegment`---------- +// A string segment without terminations (just a simple waveguide). +// +// #### Usage +// +// ``` +// chain(A : stringSegment(maxLength,length) : B) +// ``` +// +// Where: +// +// * `maxLength`: the maximum length of the string in meters (should be static) +// * `length`: the length of the string in meters +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// stringSegment_test = 0.25, -0.15, 0.05 : pm.stringSegment(1.0, 0.5); +// ``` +//---------------------------------- +stringSegment(maxLength,length) = waveguide(nMax,n) +with { + nMax = maxLength : l2s; + n = length : l2s/2; +}; + + +//-------`(pm.)openString`---------- +// A bidirectional block implementing a basic "generic" string with a +// selectable excitation position. Lowpass filters are built-in and +// allow to simulate the effect of dispersion on the sound and thus +// to change the "stiffness" of the string. +// +// #### Usage +// +// ``` +// chain(... : openString(length,stiffness,pluckPosition,excitation) : ...) +// ``` +// +// Where: +// +// * `length`: the length of the string in meters +// * `stiffness`: the stiffness of the string (0-1) (1 for max stiffness) +// * `pluckPosition`: excitation position (0-1) (1 is bottom) +// * `excitation`: the excitation signal +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// ba = library("basics.lib"); +// openString_test = 0.25, -0.15, 0.05 : pm.openString(0.8, 0.5, 0.2, pm.impulseExcitation(ba.pulse(64))); +// ``` +//---------------------------------- +openString(length,stiffness,pluckPosition,excitation) = chain(stringSegment(maxStringLength,ntbd) : in(excitation) : dispersionFilters : stringSegment(maxStringLength,btbd)) +with { + dispersionFilters = par(i,2,si.smooth(stiffness)),_; // one pole filters + maxStringLength = maxLength; + ntbd = length*pluckPosition; // length of the upper portion of the string + btbd = length*(1-pluckPosition); // length of the lower portion of the string +}; + + +//-------`(pm.)nylonString`---------- +// A bidirectional block implementing a basic nylon string with selectable +// excitation position. This element is based on [`openString`](#openstring) +// and has a fix stiffness corresponding to that of a nylon string. +// +// #### Usage +// +// ``` +// chain(... : nylonString(length,pluckPosition,excitation) : ...) +// ``` +// +// Where: +// +// * `length`: the length of the string in meters +// * `pluckPosition`: excitation position (0-1) (1 is bottom) +// * `excitation`: the excitation signal +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// ba = library("basics.lib"); +// nylonString_test = 0.25, -0.15, 0.05 : pm.nylonString(0.8, 0.3, pm.impulseExcitation(ba.pulse(64))); +// ``` +//---------------------------------- +nylonString(length,pluckPosition,excitation) = +openString(length,stiffness,pluckPosition,excitation) +with { + stiffness = 0.4; // empirically set but it sounds good ;) +}; + + +//-------`(pm.)steelString`---------- +// A bidirectional block implementing a basic steel string with selectable +// excitation position. This element is based on [`openString`](#openstring) +// and has a fix stiffness corresponding to that of a steel string. +// +// #### Usage +// +// ``` +// chain(... : steelString(length,pluckPosition,excitation) : ...) +// ``` +// +// Where: +// +// * `length`: the length of the string in meters +// * `pluckPosition`: excitation position (0-1) (1 is bottom) +// * `excitation`: the excitation signal +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// ba = library("basics.lib"); +// steelString_test = 0.25, -0.15, 0.05 : pm.steelString(0.8, 0.3, pm.impulseExcitation(ba.pulse(64))); +// ``` +//---------------------------------- +steelString(length,pluckPosition,excitation) = +openString(length,stiffness,pluckPosition,excitation) +with { + stiffness = 0.05; // empirically set but it sounds good ;) + // in fact, we could almost get rid of the filters in that case, + // but I think it's good to keep them for consistency +}; + + +//-------`(pm.)openStringPick`---------- +// A bidirectional block implementing a "generic" string with selectable +// excitation position. It also has a built-in pickup whose position is the +// same as the excitation position. Thus, moving the excitation position +// will also move the pickup. +// +// #### Usage +// +// ``` +// chain(... : openStringPick(length,stiffness,pluckPosition,excitation) : ...) +// ``` +// +// Where: +// +// * `length`: the length of the string in meters +// * `stiffness`: the stiffness of the string (0-1) (1 for max stiffness) +// * `pluckPosition`: excitation position (0-1) (1 is bottom) +// * `excitation`: the excitation signal +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// openStringPick_test = pm.endChain(pm.openStringPick(0.8, 0.4, 0.3, pm.impulseExcitation(button("pm.openStringPick/gate")))); +// ``` +//---------------------------------- +openStringPick(length,stiffness,pluckPosition,excitation) = strChain +with { + dispersionFilters = par(i,2,si.smooth(stiffness)),_; + maxStringLength = maxLength; + nti = length*pluckPosition; // length of the upper portion of the string + itb = length*(1-pluckPosition); // length of the lower portion of the string + strChain = chain(stringSegment(maxStringLength,nti) : in(excitation) : out : + dispersionFilters : stringSegment(maxStringLength,itb)); +}; + + +//-------`(pm.)openStringPickUp`---------- +// A bidirectional block implementing a "generic" string with selectable +// excitation position and stiffness. It also has a built-in pickup whose +// position can be independenly selected. The only constraint is that the +// pickup has to be placed after the excitation position. +// +// #### Usage +// +// ``` +// chain(... : openStringPickUp(length,stiffness,pluckPosition,pickupPosition,excitation) : ...) +// ``` +// +// Where: +// +// * `length`: the length of the string in meters +// * `stiffness`: the stiffness of the string (0-1) (1 for max stiffness) +// * `pluckPosition`: pluck position between the top of the string and the +// pickup (0-1) (1 for same as pickup position) +// * `pickupPosition`: position of the pickup on the string (0-1) (1 is bottom) +// * `excitation`: the excitation signal +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// openStringPickUp_test = pm.endChain(pm.openStringPickUp(0.8, 0.4, 0.6, 0.7, pm.impulseExcitation(button("pm.openStringPickUp/gate")))); +// ``` +//---------------------------------- +openStringPickUp(length,stiffness,pluckPosition,pickupPosition,excitation) = strChain +with { + dispersionFilters = par(i,2,si.smooth(stiffness)),_; + maxStringLength = maxLength; + nti = length*pluckPosition; // top to excitation length + nto = nti*pickupPosition; // nuts to pickup length + oti = nti*(1-pickupPosition); // pickup to excitation length + itb = length*(1-pluckPosition); // pickup to bottom length + strChain = chain(stringSegment(maxStringLength,nto) : out : + stringSegment(maxStringLength,oti) : in(excitation) : dispersionFilters : + stringSegment(maxStringLength,itb)); +}; + + +//-------`(pm.)openStringPickDown`---------- +// A bidirectional block implementing a "generic" string with selectable +// excitation position and stiffness. It also has a built-in pickup whose +// position can be independenly selected. The only constraint is that the +// pickup has to be placed before the excitation position. +// +// #### Usage +// +// ``` +// chain(... : openStringPickDown(length,stiffness,pluckPosition,pickupPosition,excitation) : ...) +// ``` +// +// Where: +// +// * `length`: the length of the string in meters +// * `stiffness`: the stiffness of the string (0-1) (1 for max stiffness) +// * `pluckPosition`: pluck position on the string (0-1) (1 is bottom) +// * `pickupPosition`: position of the pickup between the top of the string +// and the excitation position (0-1) (1 is excitation position) +// * `excitation`: the excitation signal +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// openStringPickDown_test = pm.endChain(pm.openStringPickDown(0.8, 0.4, 0.6, 0.5, pm.impulseExcitation(button("pm.openStringPickDown/gate")))); +// ``` +//---------------------------------- +openStringPickDown(length,stiffness,pluckPosition,pickupPosition,excitation) = +strChain +with { + dispersionFilters = par(i,2,si.smooth(stiffness)),_; + maxStringLength = maxLength; + nto = length*pickupPosition; // top to pickup length + nti = nto*pluckPosition; // top to excitation length + ito = nto*(1-pluckPosition); // excitation to pickup length + otb = length*(1-pickupPosition); // pickup to bottom length + strChain = chain(stringSegment(maxStringLength,nti) : in(excitation) : + stringSegment(maxStringLength,ito) : out : dispersionFilters : + stringSegment(maxStringLength,otb)); +}; + + +// TODO: eventually, we'd want to implement a generic function here that +// automatically switches the position of elements in the algorithm +// depending on the position of the pick. Even though this is currently +// possible, it will pose optimization issues (we'd want the new mute +// feature of Faust to be generalized in order to do that) + +//-------`(pm.)ksReflexionFilter`---------- +// The "typical" one-zero Karplus-strong feedforward reflexion filter. This +// filter will be typically used in a termination (see below). +// +// #### Usage +// +// ``` +// _ : ksReflexionFilter : _ +// ``` +// Typical use: `terminations(_,chain(...),ksReflexionFilter)` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// ksReflexionFilter_test = os.osc(220) : pm.ksReflexionFilter; +// ``` +//---------------------------------- +ksReflexionFilter = _ <: (_+_')/2; + + +//-------`(pm.)rStringRigidTermination`---------- +// Bidirectional block implementing a right rigid string termination (no damping, +// just phase inversion). +// +// #### Usage +// +// ``` +// _,_,_ : rStringRigidTermination +// ``` +// Typical use: `chain(rStringRigidTermination : stringSegment : ...)` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// rStringRigidTermination_test = 0.25, -0.15, 0.05 : pm.rStringRigidTermination; +// ``` +//---------------------------------- +rStringRigidTermination = rTermination(basicBlock,*(-1)); + + +//-------`(pm.)lStringRigidTermination`---------- +// Bidirectional block implementing a left rigid string termination (no damping, +// just phase inversion). +// +// #### Usage +// +// ``` +// _,_,_ : lStringRigidTermination +// ``` +// Typical use: `chain(... : stringSegment : lStringRigidTermination)` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// lStringRigidTermination_test = 0.25, -0.15, 0.05 : pm.lStringRigidTermination; +// ``` +//---------------------------------- +lStringRigidTermination = lTermination(*(-1),basicBlock); + + +//-------`(pm.)elecGuitarBridge`---------- +// Bidirectional block implementing a simple electric guitar bridge. This +// block is based on [`bridgeFilter`](#bridgeFilter). The bridge doesn't +// implement transmittance since it is not meant to be connected to a +// body (unlike acoustic guitar). It also partially sets the resonance +// duration of the string with the nuts used on the other side. +// +// #### Usage +// +// ``` +// _,_,_ : elecGuitarBridge +// ``` +// Typical use: `chain(... : stringSegment : elecGuitarBridge)` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// elecGuitarBridge_test = 0.25, -0.15, 0.05 : pm.elecGuitarBridge; +// ``` +//---------------------------------- +elecGuitarBridge = rTermination(basicBlock,-bridgeFilter(0.8,0.6)); + + +//-------`(pm.)elecGuitarNuts`---------- +// Bidirectional block implementing a simple electric guitar nuts. This +// block is based on [`bridgeFilter`](#bridgeFilter) and does essentially +// the same thing as [`elecGuitarBridge`](#elecguitarbridge), but on the +// other side of the chain. It also partially sets the resonance duration of +// the string with the bridge used on the other side. +// +// #### Usage +// +// ``` +// _,_,_ : elecGuitarNuts +// ``` +// Typical use: `chain(elecGuitarNuts : stringSegment : ...)` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// elecGuitarNuts_test = 0.25, -0.15, 0.05 : pm.elecGuitarNuts; +// ``` +//---------------------------------- +elecGuitarNuts = lTermination(-bridgeFilter(0.8,0.6),basicBlock); + + +//-------`(pm.)guitarBridge`---------- +// Bidirectional block implementing a simple acoustic guitar bridge. This +// bridge damps more hight frequencies than +// [`elecGuitarBridge`](#elecguitarbridge) and implements a transmittance +// filter. It also partially sets the resonance duration of the string with +// the nuts used on the other side. +// +// #### Usage +// +// ``` +// _,_,_ : guitarBridge +// ``` +// Typical use: `chain(... : stringSegment : guitarBridge)` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// guitarBridge_test = 0.25, -0.15, 0.05 : pm.guitarBridge; +// ``` +//---------------------------------- +guitarBridge = rTermination(basicBlock,reflectance) : _,transmittance,_ +with { + reflectance = -bridgeFilter(0.4,0.5); + transmittance = _; // TODO +}; + + +//-------`(pm.)guitarNuts`---------- +// Bidirectional block implementing a simple acoustic guitar nuts. This +// nuts damps more hight frequencies than +// [`elecGuitarNuts`](#elecguitarnuts) and implements a transmittance +// filter. It also partially sets the resonance duration of the string with +// the bridge used on the other side. +// +// #### Usage +// +// ``` +// chain(guitarNuts : stringSegment : ...) +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// guitarNuts_test = 0.25, -0.15, 0.05 : pm.guitarNuts; +// ``` +//---------------------------------- +guitarNuts = lTermination(-bridgeFilter(0.4,0.5),basicBlock); + + +//-------`(pm.)idealString`---------- +// An "ideal" string with rigid terminations and where the plucking position +// and the pick-up position are the same. Since terminations are rigid, this +// string will ring forever. +// +// #### Usage +// +// ``` +// _ : idealString(length,pluckPosition,excitation) : _ +// ``` +// +// Where: +// +// * `length`: the length of the string in meters +// * `pluckPosition`: the plucking position (0.001-0.999) +// * `excitation`: the excitation signal +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// idealString_test = pm.closeIns : pm.idealString(0.9, 0.2, pm.impulseExcitation(button("pm.idealString/gate"))); +// ``` +//---------------------------------------------------------- +idealString(length,pluckPosition,excitation) = wg +with { + maxStringLength = maxLength; + lengthTuning = 0.08; // tuned "by hand" + tunedLength = length-lengthTuning; + nUp = tunedLength*pluckPosition; // upper string segment length + nDown = tunedLength*(1-pluckPosition); // lower string segment length + wg = chain(lStringRigidTermination : stringSegment(maxStringLength,nUp) : + in(excitation) : out : stringSegment(maxStringLength,nDown) : + rStringRigidTermination); // waveguide chain +}; + + +//-------`(pm.)ks`---------- +// A Karplus-Strong string (in that case, the string is implemented as a +// one dimension waveguide). +// +// #### Usage +// +// ``` +// ks(length,damping,excitation) : _ +// ``` +// +// Where: +// +// * `length`: the length of the string in meters +// * `damping`: string damping (0-1) +// * `excitation`: excitation signal +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// ks_test = pm.ks(0.9, 0.3, pm.impulseExcitation(button("pm.ks/gate"))); +// ``` +//---------------------------------- +ks(length,damping,excitation) = endChain(ksChain) +with { + maxStringLength = maxLength; + lengthTuning = 0.05; // tuned "by hand" + tunedLength = length-lengthTuning; + refCoef = (1-damping)*0.2+0.8; + refFilter = ksReflexionFilter*refCoef; + ksChain = terminations(_,chain(in(excitation) : + stringSegment(maxStringLength,tunedLength) : out),refFilter); +}; + + +//-------`(pm.)ks_ui_MIDI`---------- +// Ready-to-use, MIDI-enabled Karplus-Strong string with buil-in UI. +// +// #### Usage +// +// ``` +// ks_ui_MIDI : _ +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// ks_ui_MIDI_test = pm.ks_ui_MIDI; +// ``` +//---------------------------------- +ks_ui_MIDI = gate : impulseExcitation*gain : ks( (freq : f2l), damping ) +with { + f = hslider("v:karplus/h:[0]params/[0]freq[style:knob]",440,50,1000,0.01); + bend = ba.semi2ratio(hslider("v:karplus/h:[0]params/[1]bend[style:knob][hidden:1][midi:pitchwheel]" + ,0,-2,2,0.01)) : si.polySmooth(gate,0.999,1); + gain = hslider("v:karplus/h:[0]params/[2]gain[style:knob]",0.8,0,1,0.01); + s = hslider("v:karplus/h:[0]params/[3]sustain[hidden:1][midi:ctrl 64][style:knob]" + ,0,0,1,1); + damping = hslider("v:karplus/h:[0]params/[1]damping[midi:ctrl 1][style:knob]" + ,0.01,0,1,0.01) : si.smoo; + t = button("v:karplus/[1]gate"); + + gate = t+s : min(1); + freq = f*bend; +}; + + +//-------`(pm.)elecGuitarModel`---------- +// A simple electric guitar model (without audio effects, of course) with +// selectable pluck position. +// This model implements a single string. Additional strings should be created +// by making a polyphonic application out of this function. Pitch is changed by +// changing the length of the string and not through a finger model. +// +// #### Usage +// +// ``` +// elecGuitarModel(length,pluckPosition,mute,excitation) : _ +// ``` +// +// Where: +// +// * `length`: the length of the string in meters +// * `pluckPosition`: pluck position (0-1) (1 is on the bridge) +// * `mute`: mute coefficient (1 for no mute and 0 for instant mute) +// * `excitation`: excitation signal +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// elecGuitarModel_test = pm.elecGuitarModel(0.9, 0.3, 0.8, pm.impulseExcitation(button("pm.elecGuitarModel/gate"))); +// ``` +//---------------------------------- +elecGuitarModel(length,pluckPosition,mute,excitation) = endChain(egChain) +with { + maxStringLength = maxLength; + lengthTuning = 0.11; // tuned "by hand" + stringL = length-lengthTuning; + muteBlock = *(mute),*(mute),_; + egChain = chain( + elecGuitarNuts : + openStringPick(stringL,0.05,pluckPosition,excitation) : + muteBlock : + elecGuitarBridge); +}; + + +//-------`(pm.)elecGuitar`---------- +// A simple electric guitar model with steel strings (based on +// [`elecGuitarModel`](#elecguitarmodel)) implementing an excitation +// model. +// This model implements a single string. Additional strings should be created +// by making a polyphonic application out of this function. +// +// #### Usage +// +// ``` +// elecGuitar(length,pluckPosition,mute,gain,trigger) : _ +// ``` +// +// Where: +// +// * `length`: the length of the string in meters +// * `pluckPosition`: pluck position (0-1) (1 is on the bridge) +// * `mute`: mute coefficient (1 for no mute and 0 for instant mute) +// * `gain`: gain of the pluck (0-1) +// * `trigger`: trigger signal (1 for on, 0 for off) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// elecGuitar_test = pm.elecGuitar(0.9, 0.3, 0.8, 0.6, button("pm.elecGuitar/gate")); +// ``` +//---------------------------------- +elecGuitar(stringLength,pluckPosition,mute,gain,trigger) = +pluckString(stringLength,1,1,1,gain,trigger) : +elecGuitarModel(stringLength,pluckPosition,mute); + + +//-------`(pm.)elecGuitar_ui_MIDI`---------- +// Ready-to-use MIDI-enabled electric guitar physical model with built-in UI. +// +// #### Usage +// +// ``` +// elecGuitar_ui_MIDI : _ +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// elecGuitar_ui_MIDI_test = pm.elecGuitar_ui_MIDI; +// ``` +//---------------------------------- +elecGuitar_ui_MIDI = elecGuitar(stringLength,pluckPosition,1,gain,gate)*outGain +with { + f = hslider("v:elecGuitar/h:[0]midi/[0]freq[style:knob]",440,50,1000,0.01); + bend = ba.semi2ratio(hslider("v:elecGuitar/h:[0]midi/[1]bend[hidden:1][midi:pitchwheel][style:knob]" + ,0,-2,2,0.01)) : si.polySmooth(gate,0.999,1); + gain = hslider("v:elecGuitar/h:[0]midi/[2]gain[style:knob]",0.8,0,1,0.01); + s = hslider("v:elecGuitar/h:[0]midi/[3]sustain[hidden:1] + [midi:ctrl 64][style:knob]",0,0,1,1); + pluckPosition = hslider("v:elecGuitar/[1]pluckPosition[midi:ctrl 1]",0.8,0,1,0.01) : si.smoo; + outGain = hslider("v:elecGuitar/[2]outGain",0.5,0,1,0.01); + t = button("v:elecGuitar/[3]gate"); + gate = t+s : min(1); + freq = f*bend; + stringLength = freq : f2l; +}; + + +//-------`(pm.)guitarBody`---------- +// WARNING: not implemented yet! +// Bidirectional block implementing a simple acoustic guitar body. +// +// #### Usage +// +// ``` +// chain(... : guitarBody) +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// guitarBody_test = 0.25, -0.15, 0.05 : pm.guitarBody; +// ``` +//---------------------------------- +// TODO: not implemented yet +guitarBody = reflectance,transmittance,_ +with { + transmittance = _; + reflectance = _; +}; + + +//-------`(pm.)guitarModel`---------- +// A simple acoustic guitar model with steel strings and selectable excitation +// position. This model implements a single string. Additional strings should be created +// by making a polyphonic application out of this function. Pitch is changed by +// changing the length of the string and not through a finger model. +// WARNING: this function doesn't currently implement a body (just strings and +// bridge). +// +// #### Usage +// +// ``` +// guitarModel(length,pluckPosition,excitation) : _ +// ``` +// +// Where: +// +// * `length`: the length of the string in meters +// * `pluckPosition`: pluck position (0-1) (1 is on the bridge) +// * `excitation`: excitation signal +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// guitarModel_test = pm.guitarModel(0.9, 0.25, pm.impulseExcitation(button("pm.guitarModel/gate"))); +// ``` +//---------------------------------- +guitarModel(length,pluckPosition,excitation) = endChain(egChain) +with { + maxStringLength = maxLength; + lengthTuning = 0.1; // tuned "by hand" + stringL = length-lengthTuning; + egChain = chain(guitarNuts : steelString(stringL,pluckPosition,excitation) : + guitarBridge : guitarBody : out); +}; + + +//-------`(pm.)guitar`---------- +// A simple acoustic guitar model with steel strings (based on +// [`guitarModel`](#guitarmodel)) implementing an excitation model. +// This model implements a single string. Additional strings should be created +// by making a polyphonic application out of this function. +// +// #### Usage +// +// ``` +// guitar(length,pluckPosition,gain,trigger) : _ +// ``` +// +// Where: +// +// * `length`: the length of the string in meters +// * `pluckPosition`: pluck position (0-1) (1 is on the bridge) +// * `gain`: gain of the excitation +// * `trigger`: trigger signal (1 for on, 0 for off) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// guitar_test = pm.guitar(0.9, 0.25, 0.8, button("pm.guitar/gate")); +// ``` +//---------------------------------- +guitar(stringLength,pluckPosition,gain,trigger) = +pluckString(stringLength,1,1.5,1,gain,trigger) : guitarModel(stringLength, pluckPosition); + + +//-------`(pm.)guitar_ui_MIDI`---------- +// Ready-to-use MIDI-enabled steel strings acoustic guitar physical model with +// built-in UI. +// +// #### Usage +// +// ``` +// guitar_ui_MIDI : _ +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// guitar_ui_MIDI_test = pm.guitar_ui_MIDI; +// ``` +//---------------------------------- +guitar_ui_MIDI = guitar(stringLength,pluckPosition,gain,gate)*outGain +with { + f = hslider("v:guitar/h:[0]midi/[0]freq[style:knob]",440,50,1000,0.01); + bend = ba.semi2ratio(hslider("v:guitar/h:[0]midi/[1]bend[hidden:1][midi:pitchwheel] + [style:knob]",0,-2,2,0.01)) : si.polySmooth(gate,0.999,1); + gain = hslider("v:guitar/h:[0]midi/[2]gain[style:knob]",0.8,0,1,0.01); + s = hslider("v:guitar/h:[0]midi/[3]sustain[hidden:1][midi:ctrl 64] + [style:knob]",0,0,1,1); + pluckPosition = hslider("v:guitar/pluckPosition[midi:ctrl 1]" + ,0.8,0,1,0.01) : si.smoo; + outGain = hslider("v:guitar/outGain",0.5,0,1,0.01); + t = button("v:guitar/[4]gate"); + gate = t+s : min(1); + freq = f*bend; + stringLength = freq : f2l; +}; + + +//-------`(pm.)nylonGuitarModel`---------- +// A simple acoustic guitar model with nylon strings and selectable excitation +// position. This model implements a single string. Additional strings should be created +// by making a polyphonic application out of this function. Pitch is changed by +// changing the length of the string and not through a finger model. +// WARNING: this function doesn't currently implement a body (just strings and +// bridge). +// +// #### Usage +// +// ``` +// nylonGuitarModel(length,pluckPosition,excitation) : _ +// ``` +// +// Where: +// +// * `length`: the length of the string in meters +// * `pluckPosition`: pluck position (0-1) (1 is on the bridge) +// * `excitation`: excitation signal +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// nylonGuitarModel_test = pm.nylonGuitarModel(0.9, 0.25, pm.impulseExcitation(button("pm.nylonGuitarModel/gate"))); +// ``` +//---------------------------------- +nylonGuitarModel(length,pluckPosition,excitation) = endChain(egChain) +with { + maxStringLength = maxLength; // meters + lengthTuning = 0.11; + stringL = length-lengthTuning; + egChain = chain(guitarNuts : nylonString(stringL,pluckPosition,excitation) : + guitarBridge : guitarBody : out); +}; + + +//-------`(pm.)nylonGuitar`---------- +// A simple acoustic guitar model with nylon strings (based on +// [`nylonGuitarModel`](#nylonguitarmodel)) implementing an excitation model. +// This model implements a single string. Additional strings should be created +// by making a polyphonic application out of this function. +// +// #### Usage +// +// ``` +// nylonGuitar(length,pluckPosition,gain,trigger) : _ +// ``` +// +// Where: +// +// * `length`: the length of the string in meters +// * `pluckPosition`: pluck position (0-1) (1 is on the bridge) +// * `gain`: gain of the excitation (0-1) +// * `trigger`: trigger signal (1 for on, 0 for off) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// nylonGuitar_test = pm.nylonGuitar(0.9, 0.25, 0.8, button("pm.nylonGuitar/gate")); +// ``` +//---------------------------------- +nylonGuitar(stringLength,pluckPosition,gain,trigger) = +pluckString(stringLength,1,1.5,1,gain,trigger) : nylonGuitarModel(stringLength, pluckPosition); + + +//-------`(pm.)nylonGuitar_ui_MIDI`---------- +// Ready-to-use MIDI-enabled nylon strings acoustic guitar physical model with +// built-in UI. +// +// #### Usage +// +// ``` +// nylonGuitar_ui_MIDI : _ +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// nylonGuitar_ui_MIDI_test = pm.nylonGuitar_ui_MIDI; +// ``` +//---------------------------------- +nylonGuitar_ui_MIDI = nylonGuitar(stringLength,pluckPosition,gain,gate)*outGain +with { + f = hslider("v:nylonGuitar/h:[0]midi/[0]freq[style:knob]",440,50,1000,0.01); + bend = ba.semi2ratio(hslider("v:nylonGuitar/h:[0]midi/[1]bend[hidden:1][midi:pitchwheel] + [style:knob]",0,-2,2,0.01)) : si.polySmooth(gate,0.999,1); + gain = hslider("v:nylonGuitar/h:[0]midi/[2]gain[style:knob]",0.8,0,1,0.01); + s = hslider("v:nylonGuitar/h:[0]midi/[3]sustain[hidden:1][midi:ctrl 64] + [style:knob]",0,0,1,1); + pluckPosition = hslider("v:nylonGuitar/pluckPosition[midi:ctrl 1]" + ,0.8,0,1,0.01) : si.smoo; + outGain = hslider("v:nylonGuitar/outGain",0.5,0,1,0.01); + t = button("v:nylonGuitar/[4]gate"); + gate = t+s : min(1); + freq = f*bend; + stringLength = freq : f2l; +}; + + +//-------`(pm.)modeInterpRes`---------- +// Modular string instrument resonator based on IR measurements made on 3D +// printed models. The 2D space allowing for the control of the shape and the +// scale of the model is enabled by interpolating between modes parameters. +// More information about this technique/project can be found here: +// . +// +// #### Usage +// +// ``` +// _ : modeInterpRes(nModes,x,y) : _ +// ``` +// +// Where: +// +// * `nModes`: number of modeled modes (40 max) +// * `x`: shape of the resonator (0: square, 1: square with rounded corners, 2: round) +// * `y`: scale of the resonator (0: small, 1: medium, 2: large) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// modeInterpRes_test = os.osc(110) : pm.modeInterpRes(20, 1.0, 1.5); +// ``` +//---------------------------------- +modeInterpRes(nModes,x,y) = _ <: par(i,min(40,nModes),modeFilter(modeFreq(i),modeT60(i),modeGain(i))) :> /(nModes) +with { + // modes parameters + roundBigCenterFreq(i) = ba.take(i+1,(286.134404,476.384455,602.872587,831.823345,862.773611,1024.985313,1209.932428,1515.548598,1777.819591,2001.806241,2674.135433,3154.282144,3329.555657,3431.385589,3673.656995,4228.801853,4389.842060,4552.745406,4766.151594,4854.354993,4970.516137,5064.203325,5200.399916,5347.650831,5459.807495,5630.144253,5870.258034,6121.961406,6244.522341,6677.052569,7233.100711,7520.031251,7677.902736,7805.138717,9918.905945,10418.988301,11296.101954,11432.719867,13422.238365,13679.232778)); + roundBigCenterGain(i) = ba.take(i+1,(1.000000,0.609711,0.222375,0.025505,0.026108,0.026840,0.605767,0.368186,0.093526,0.016656,0.159600,0.013836,0.044000,0.023103,0.107971,0.013696,0.043615,0.039848,0.041903,0.043671,0.055018,0.041730,0.062832,0.030464,0.028049,0.012880,0.047154,0.084707,0.050532,0.032735,0.031938,0.023554,0.017534,0.017268,0.026202,0.013725,0.015611,0.021294,0.011486,0.011875)); + roundBigCenterT60(i) = ba.take(i+1,(0.283544,0.076723,0.287423,0.058391,0.075172,0.120794,0.131540,0.081173,0.088549,0.034991,0.060237,0.014153,0.074709,0.068893,0.033354,0.032013,0.019088,0.020992,0.026703,0.018040,0.015815,0.016671,0.028732,0.017929,0.021520,0.024622,0.022706,0.023138,0.027323,0.020556,0.024577,0.023669,0.024714,0.024420,0.017733,0.017881,0.018715,0.017737,0.015660,0.016464)); + roundMidCenterFreq(i) = ba.take(i+1,(380.910663,615.862831,933.855656,1128.769825,1231.353452,1404.948092,1764.641239,2095.586536,2451.220548,2566.435588,2781.467120,2946.757398,3522.047891,3748.375254,3892.352583,4340.896246,4454.851770,4629.302932,4806.417393,5024.545475,5604.684752,5671.112515,6533.147087,6751.949816,6862.781990,6951.226279,7180.863112,7901.631311,8074.662174,8979.395914,10075.249374,10521.350963,11964.859921,14227.213322,15501.455250,15587.852956,16290.138756,16418.172746,16663.266694,17991.614994)); + roundMidCenterGain(i) = ba.take(i+1,(1.000000,0.437495,0.110598,0.025858,0.010841,0.022400,0.245241,0.187990,0.029650,0.058174,0.007035,0.013188,0.009767,0.059284,0.160848,0.007463,0.016816,0.008689,0.031644,0.045608,0.019773,0.018546,0.013495,0.018482,0.020130,0.015417,0.031109,0.007624,0.008526,0.032539,0.009846,0.007605,0.019866,0.007583,0.008991,0.009194,0.010128,0.008557,0.009333,0.007494)); + roundMidCenterT60(i) = ba.take(i+1,(0.193654,0.076056,0.197517,0.019475,0.043087,0.063829,0.074308,0.059791,0.082616,0.081949,0.042855,0.036140,0.068564,0.041711,0.043799,0.025988,0.057494,0.028353,0.018586,0.018651,0.025380,0.021250,0.019217,0.016326,0.019469,0.020754,0.019487,0.019590,0.011348,0.015969,0.015674,0.016305,0.026772,0.010597,0.009926,0.007595,0.008676,0.008274,0.011471,0.012424)); + roundSmallCenterFreq(i) = ba.take(i+1,(511.119501,860.897453,977.675690,1245.454667,1408.823199,1604.478891,1825.857776,1960.985105,2340.204377,2594.337460,2700.041698,3277.766643,3388.510632,3505.100505,4151.457765,4257.308449,4425.319123,4526.878869,4629.688075,4819.012204,5493.628166,6323.383769,6514.513248,6709.979636,6823.104590,7009.748398,7198.916858,9019.248381,9492.252653,9706.451249,9858.889433,10080.422278,10252.000811,10389.864946,12327.892342,12465.475093,13491.187794,15072.291233,15176.746743,20143.302052)); + roundSmallCenterGain(i) = ba.take(i+1,(1.000000,0.686570,0.362616,0.178685,0.113981,0.158727,0.024067,0.023659,0.085113,0.192224,0.174412,0.160279,0.042275,0.042204,0.027219,0.040505,0.064866,0.069074,0.029473,0.033054,0.055311,0.073694,0.071341,0.068366,0.026735,0.037359,0.026008,0.025958,0.025327,0.052859,0.082911,0.038156,0.046079,0.034839,0.022738,0.024480,0.158056,0.026848,0.028009,0.031387)); + roundSmallCenterT60(i) = ba.take(i+1,(0.200041,0.030199,0.050855,0.020135,0.020101,0.026910,0.043249,0.040814,0.058128,0.047490,0.051189,0.069063,0.047344,0.049448,0.024720,0.027275,0.028407,0.030171,0.026606,0.030289,0.040772,0.023856,0.020889,0.032859,0.027543,0.026427,0.032154,0.020576,0.032990,0.019344,0.019827,0.018571,0.017213,0.019002,0.020440,0.021329,0.023027,0.018833,0.018344,0.018811)); + semBigCenterFreq(i) = ba.take(i+1,(318.812824,545.646717,727.103717,813.406232,938.026296,1067.472803,1239.311077,1478.409235,1567.366603,1840.215865,2162.299536,2302.660906,2394.006715,2499.397129,2724.662564,2876.713036,3051.447083,3219.116214,3378.667296,3507.736722,3687.907343,3827.904993,4039.858029,4208.742422,4385.651803,4574.818448,4744.136436,4866.893882,5090.532579,5200.283111,5448.339367,5751.719886,6040.059676,6500.665192,6780.883377,6878.732474,7127.463954,7701.025454,10337.623684,17411.019601)); + semBigCenterGain(i) = ba.take(i+1,(1.000000,0.386065,0.297923,0.235171,0.346593,0.219093,0.050655,0.310031,0.175387,0.180464,0.064716,0.070721,0.027399,0.076973,0.086367,0.024188,0.100553,0.028776,0.027974,0.040200,0.031680,0.021694,0.035362,0.031821,0.027726,0.037219,0.026308,0.016164,0.022938,0.046669,0.031128,0.027430,0.032404,0.018356,0.026887,0.041003,0.012779,0.028785,0.013346,0.017281)); + semBigCenterT60(i) = ba.take(i+1,(0.195061,0.269748,0.108389,0.132557,0.127125,0.113759,0.159514,0.058527,0.067333,0.071996,0.067001,0.054194,0.052818,0.050935,0.045373,0.051611,0.051410,0.061272,0.050844,0.029415,0.021966,0.023483,0.022866,0.023418,0.033572,0.026764,0.017334,0.021394,0.025984,0.026146,0.018801,0.018242,0.022440,0.020939,0.011937,0.011739,0.020314,0.013848,0.016504,0.085830)); + semMidCenterFreq(i) = ba.take(i+1,(316.511541,548.598445,682.927606,764.088220,1145.795222,1280.068992,1524.562996,1677.146625,2083.900770,2285.783756,2452.226740,2779.274140,3196.405966,3569.262928,3798.251779,4071.264178,4413.799330,4550.364404,4966.398087,5156.799448,5363.124121,5611.038360,5995.650074,6162.624225,6583.973014,7029.525719,7207.893991,7706.775019,7844.032020,10298.804956,10564.531850,11615.688447,12056.168362,12661.205157,12876.405687,13082.890228,13851.437211,14452.383106,15683.910228,16667.950883)); + semMidCenterGain(i) = ba.take(i+1,(0.999641,0.798181,0.200080,0.280473,0.042761,0.079955,0.286673,0.162652,1.000000,0.309945,0.097527,0.023964,0.124529,0.155314,0.075600,0.178980,0.089168,0.134962,0.120730,0.036885,0.024020,0.102628,0.085255,0.059439,0.023339,0.027443,0.141618,0.044053,0.024269,0.046682,0.034465,0.068930,0.070502,0.025912,0.076088,0.024972,0.038501,0.051135,0.027801,0.022469)); + semMidCenterT60(i) = ba.take(i+1,(0.210670,0.062329,0.097470,0.136802,0.077790,0.025877,0.054632,0.060485,0.061625,0.061352,0.060614,0.030867,0.039440,0.030054,0.037956,0.030948,0.046137,0.045345,0.025326,0.025515,0.022514,0.043142,0.018663,0.015057,0.052844,0.016478,0.025993,0.017880,0.014006,0.022971,0.017720,0.032173,0.015391,0.009217,0.028936,0.011895,0.012607,0.018141,0.018341,0.018180)); + semSmallCenterFreq(i) = ba.take(i+1,(440.578370,637.619026,828.182637,978.279267,1088.401911,1321.315700,1648.932125,1817.216790,1938.686740,2173.897496,2450.967026,2582.312643,2748.003128,2858.292897,2973.003533,3235.482621,3348.561906,3496.046199,3706.507771,3934.307821,4418.408376,5239.069796,5428.018005,5771.733971,6106.378549,6304.512786,6788.234913,6905.001294,7054.694449,7227.988097,7348.344488,8450.449049,9000.316477,10930.327581,11271.451255,11418.301881,13448.385700,13938.733921,14334.394664,17413.449273)); + semSmallCenterGain(i) = ba.take(i+1,(1.000000,0.297197,0.715097,0.178811,0.229363,0.183731,0.107685,0.120764,0.060436,0.503361,0.352264,0.056432,0.042926,0.090906,0.224894,0.128151,0.257120,0.076416,0.096971,0.078669,0.065573,0.057421,0.085378,0.085397,0.050578,0.046534,0.213480,0.090142,0.078632,0.089706,0.276299,0.061182,0.038941,0.045447,0.043447,0.051347,0.055647,0.071836,0.040813,0.066853)); + semSmallCenterT60(i) = ba.take(i+1,(0.136710,0.070656,0.049965,0.034104,0.023973,0.032990,0.049605,0.026798,0.024777,0.040671,0.039262,0.035240,0.019214,0.053001,0.045917,0.045864,0.048770,0.040981,0.020747,0.022565,0.031089,0.026788,0.013828,0.023917,0.022485,0.035319,0.017955,0.014831,0.018902,0.014661,0.032984,0.027729,0.025067,0.021211,0.016910,0.027488,0.013164,0.012325,0.019985,0.079428)); + squareBigCenterFreq(i) = ba.take(i+1,(222.231629,336.343611,555.041069,772.219662,911.261442,1096.774273,1203.102824,1404.011001,1540.420421,1628.944840,1994.925663,2197.106949,2533.354244,2672.470165,2821.185962,2967.436266,3342.189608,3479.723368,3631.705350,3806.882908,3910.078404,4173.779128,4292.901543,4519.288440,4631.053559,4855.405142,5079.828139,5182.392108,5328.291818,5636.817979,5983.629129,6104.013800,6184.547942,6602.614840,6718.247643,6835.844044,6882.254514,7220.774814,7283.263950,7407.672066)); + squareBigCenterGain(i) = ba.take(i+1,(0.581227,1.000000,0.167366,0.663184,0.127173,0.141424,0.232076,0.043454,0.168681,0.244908,0.193343,0.147543,0.062214,0.112585,0.383899,0.053139,0.104651,0.093521,0.029220,0.027646,0.020979,0.031887,0.052610,0.045000,0.023542,0.049426,0.029063,0.049062,0.015097,0.030925,0.032215,0.032146,0.050862,0.016861,0.019228,0.021428,0.021039,0.016988,0.017971,0.033065)); + squareBigCenterT60(i) = ba.take(i+1,(0.417113,0.247980,0.103791,0.131234,0.194764,0.130569,0.119615,0.103862,0.102785,0.079975,0.068871,0.120830,0.066401,0.064964,0.037272,0.057999,0.038435,0.036927,0.036970,0.069147,0.036096,0.049136,0.046268,0.029452,0.025066,0.020942,0.040527,0.027374,0.030986,0.019875,0.028632,0.032344,0.033709,0.024938,0.063833,0.032297,0.028473,0.025768,0.024877,0.026385)); + squareMidCenterFreq(i) = ba.take(i+1,(306.243391,426.381556,523.626577,637.813655,855.576390,992.200454,1098.863347,1226.922784,1545.950522,1704.776255,1839.163057,1983.832482,2190.814571,2445.409860,2672.907579,2782.642755,2983.850376,3268.313978,3458.038380,3590.850048,3783.143602,4123.002328,4250.310528,4408.442518,4531.916055,4865.211680,5248.660726,5387.011592,5780.593786,5880.954673,6095.291499,6432.605387,6596.403501,6820.917687,6907.055108,7030.829711,7337.883035,7602.739152,7926.836412,12248.346109)); + squareMidCenterGain(i) = ba.take(i+1,(1.000000,0.292592,0.554710,0.359595,0.041223,0.283249,0.182057,0.078666,0.898203,0.105021,0.037156,0.128493,0.302569,0.134081,0.090181,0.116704,0.041711,0.268207,0.079651,0.034128,0.296838,0.051959,0.124454,0.077586,0.084915,0.126202,0.019697,0.017643,0.077301,0.068367,0.023764,0.015924,0.022163,0.017954,0.029917,0.021449,0.019083,0.026076,0.017965,0.017018)); + squareMidCenterT60(i) = ba.take(i+1,(0.236061,0.179001,0.084440,0.165197,0.083836,0.055543,0.067029,0.054547,0.046195,0.055390,0.052760,0.079021,0.073765,0.059744,0.071780,0.050510,0.036326,0.036162,0.039268,0.031777,0.037990,0.072567,0.045824,0.026516,0.027684,0.034229,0.040867,0.037800,0.026894,0.023151,0.023381,0.021277,0.023057,0.020207,0.019672,0.016358,0.024757,0.017036,0.016600,0.010195)); + squareSmallCenterFreq(i) = ba.take(i+1,(375.008194,527.945584,775.002560,981.584262,1125.203834,1287.701398,1394.790058,1577.138666,1727.825366,1860.700270,1950.809059,2020.169063,2185.798879,2382.343983,2587.140759,2792.652735,2970.443881,3047.515682,3332.695227,3416.636119,3513.876416,3994.492272,4128.261485,4247.828681,4425.131019,4686.893838,4731.141754,5553.904972,5702.206389,6415.071752,6552.422900,6785.461423,6990.104471,7256.116515,7884.508530,8787.479467,10529.849261,10641.861836,12075.018006,17405.170359)); + squareSmallCenterGain(i) = ba.take(i+1,(0.991070,1.000000,0.515946,0.549911,0.115279,0.157813,0.463743,0.206985,0.131491,0.244054,0.160114,0.116274,0.161678,0.048839,0.071332,0.072482,0.097678,0.083415,0.057484,0.059259,0.034662,0.064479,0.061452,0.110522,0.045770,0.053318,0.051225,0.034998,0.051538,0.081127,0.039422,0.226011,0.053013,0.052620,0.041956,0.058147,0.061262,0.046118,0.038256,0.124151)); + squareSmallCenterT60(i) = ba.take(i+1,(0.102256,0.088069,0.026433,0.131998,0.050149,0.052897,0.066531,0.060621,0.045315,0.047413,0.058375,0.059098,0.029950,0.018537,0.024086,0.032984,0.036868,0.032205,0.023710,0.023430,0.015516,0.022773,0.025265,0.028872,0.019743,0.036565,0.032704,0.025234,0.028383,0.018356,0.018609,0.017534,0.018699,0.015762,0.022800,0.013151,0.012300,0.018114,0.013192,0.085670)); + + // computing modes freq in function of x and y + modeFreq(i) = zxd + (zxu-zxd)*select2(y<1,(y-1),y) + with { + zx0 = squareSmallCenterFreq(i) + (semSmallCenterFreq(i)-squareSmallCenterFreq(i))*x; + zx1 = semSmallCenterFreq(i) + (roundSmallCenterFreq(i)-semSmallCenterFreq(i))*(x-1); + zx2 = squareMidCenterFreq(i) + (semMidCenterFreq(i)-squareMidCenterFreq(i))*x; + zx3 = semMidCenterFreq(i) + (roundMidCenterFreq(i)-semMidCenterFreq(i))*(x-1); + zx4 = squareBigCenterFreq(i) + (semBigCenterFreq(i)-squareBigCenterFreq(i))*x; + zx5 = semBigCenterFreq(i) + (roundBigCenterFreq(i)-semBigCenterFreq(i))*(x-1); + zxd = select2(y<1,select2(x<1,zx3,zx2),select2(x<1,zx1,zx0)); + zxu = select2(y<1,select2(x<1,zx5,zx4),select2(x<1,zx3,zx2)); + }; + + // computing modes gain in function of x and y + modeGain(i) = zxd + (zxu-zxd)*select2(y<1,(y-1),y) + with { + zx0 = squareSmallCenterGain(i) + (semSmallCenterGain(i)-squareSmallCenterGain(i))*x; + zx1 = semSmallCenterGain(i) + (roundSmallCenterGain(i)-semSmallCenterGain(i))*(x-1); + zx2 = squareMidCenterGain(i) + (semMidCenterGain(i)-squareMidCenterGain(i))*x; + zx3 = semMidCenterGain(i) + (roundMidCenterGain(i)-semMidCenterGain(i))*(x-1); + zx4 = squareBigCenterGain(i) + (semBigCenterGain(i)-squareBigCenterGain(i))*x; + zx5 = semBigCenterGain(i) + (roundBigCenterGain(i)-semBigCenterGain(i))*(x-1); + zxd = select2(y<1,select2(x<1,zx3,zx2),select2(x<1,zx1,zx0)); + zxu = select2(y<1,select2(x<1,zx5,zx4),select2(x<1,zx3,zx2)); + }; + + // computing modes T60 in function of x and y + modeT60(i) = zxd + (zxu-zxd)*select2(y<1,(y-1),y) //: min(0.1) + with { + zx0 = squareSmallCenterT60(i) + (semSmallCenterT60(i)-squareSmallCenterT60(i))*x; + zx1 = semSmallCenterT60(i) + (roundSmallCenterT60(i)-semSmallCenterT60(i))*(x-1); + zx2 = squareMidCenterT60(i) + (semMidCenterT60(i)-squareMidCenterT60(i))*x; + zx3 = semMidCenterT60(i) + (roundMidCenterT60(i)-semMidCenterT60(i))*(x-1); + zx4 = squareBigCenterT60(i) + (semBigCenterT60(i)-squareBigCenterT60(i))*x; + zx5 = semBigCenterT60(i) + (roundBigCenterT60(i)-semBigCenterT60(i))*(x-1); + zxd = select2(y<1,select2(x<1,zx3,zx2),select2(x<1,zx1,zx0)); + zxu = select2(y<1,select2(x<1,zx5,zx4),select2(x<1,zx3,zx2)); + }; +}; + + +//-------`(pm.)modularInterpBody`---------- +// Bidirectional block implementing a modular string instrument resonator +// (see [`modeInterpRes`](#pm.modeinterpres)). +// +// #### Usage +// +// ``` +// chain(... : modularInterpBody(nModes,shape,scale) : ...) +// ``` +// +// Where: +// +// * `nModes`: number of modeled modes (40 max) +// * `shape`: shape of the resonator (0: square, 1: square with rounded corners, 2: round) +// * `scale`: scale of the resonator (0: small, 1: medium, 2: large) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// modularInterpBody_test = 0.25, -0.15, 0.05 : pm.modularInterpBody(20, 1.0, 1.5); +// ``` +//---------------------------------- +modularInterpBody(nModes,shape,scale) = _,modeInterpRes(nModes,shape,scale),_; + + +//-------`(pm.)modularInterpStringModel`---------- +// String instrument model with a modular body (see +// [`modeInterpRes`](#pm.modeinterpres) and +// ). +// +// #### Usage +// +// ``` +// modularInterpStringModel(length,pluckPosition,shape,scale,bodyExcitation,stringExcitation) : _ +// ``` +// +// Where: +// +// * `stringLength`: the length of the string in meters +// * `pluckPosition`: pluck position (0-1) (1 is on the bridge) +// * `shape`: shape of the resonator (0: square, 1: square with rounded corners, 2: round) +// * `scale`: scale of the resonator (0: small, 1: medium, 2: large) +// * `bodyExcitation`: excitation signal for the body +// * `stringExcitation`: excitation signal for the string +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// modularInterpStringModel_test = pm.modularInterpStringModel(0.9, 0.3, 1.0, 1.5, pm.impulseExcitation(button("pm.modularInterpStringModel/body")), pm.impulseExcitation(button("pm.modularInterpStringModel/string"))); +// ``` +//---------------------------------- +modularInterpStringModel(stringLength,pluckPosition,shape,scale,bodyExcitation,stringExcitation) = endChain(egChain)*0.5 +with { + maxStringLength = maxLength; + lengthTuning = 0.1; // tuned "by hand" + stringL = stringLength-lengthTuning; + nBodyModes = 40; + egChain = chain(guitarNuts : steelString(stringL,pluckPosition,stringExcitation) : + guitarBridge : inRightWave(bodyExcitation) : modularInterpBody(nBodyModes,shape,scale) : out); +}; + + +//-------`(pm.)modularInterpInstr`---------- +// String instrument with a modular body (see +// [`modeInterpRes`](#pm.modeinterpres) and +// ). +// +// #### Usage +// +// ``` +// modularInterpInstr(stringLength,pluckPosition,shape,scale,gain,tapBody,triggerString) : _ +// ``` +// +// Where: +// +// * `stringLength`: the length of the string in meters +// * `pluckPosition`: pluck position (0-1) (1 is on the bridge) +// * `shape`: shape of the resonator (0: square, 1: square with rounded corners, 2: round) +// * `scale`: scale of the resonator (0: small, 1: medium, 2: large) +// * `gain`: of the string excitation +// * `tapBody`: send an impulse in the body of the instrument where the string is connected (1 for on, 0 for off) +// * `triggerString`: trigger signal for the string (1 for on, 0 for off) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// modularInterpInstr_test = pm.modularInterpInstr(0.9, 0.3, 1.0, 1.5, 0.8, button("pm.modularInterpInstr/body"), button("pm.modularInterpInstr/string")); +// ``` +//---------------------------------- +modularInterpInstr(stringLength,pluckPosition,shape,scale,gain,tapBody,triggerString) = +(tapBody : ba.impulsify), pluckString(stringLength,1,1,1,gain,triggerString) : +modularInterpStringModel(stringLength,pluckPosition,shape,scale); + + +//-------`(pm.)modularInterpInstr_ui_MIDI`---------- +// Ready-to-use MIDI-enabled string instrument with a modular body (see +// [`modeInterpRes`](#pm.modeinterpres) and +// ) +// with built-in UI. +// +// #### Usage +// +// ``` +// modularInterpInstr_ui_MIDI : _ +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// modularInterpInstr_ui_MIDI_test = pm.modularInterpInstr_ui_MIDI; +// ``` +//---------------------------------- +modularInterpInstr_ui_MIDI = modularInterpInstr(stringLength,pluckPosition,shape,scale,gain,tapBody,gate)*outGain +with { + f = hslider("v:modularInterpInstr/h:[0]midi/[0]freq[style:knob]",440,50,1000,0.01); + bend = ba.semi2ratio(hslider("v:modularInterpInstr/h:[0]midi/[1]bend[hidden:1][midi:pitchwheel] + [style:knob]",0,-2,2,0.01)) : si.polySmooth(gate,0.999,1); + gain = hslider("v:modularInterpInstr/h:[0]midi/[2]gain[style:knob]",0.8,0,1,0.01); + s = hslider("v:modularInterpInstr/h:[0]midi/[3]sustain[hidden:1][midi:ctrl 64] + [style:knob]",0,0,1,1); + shape = hslider("v:modularInterpInstr/h:[1]body/[0]shape[style:knob]",0,0,1,0.01)*2; + scale = hslider("v:modularInterpInstr/h:[1]body/[1]scale[style:knob]",0,0,1,0.011)*2; + tapBody = button("v:modularInterpInstr/h:[1]body/[2]tapBody"); + pluckPosition = hslider("v:modularInterpInstr/[2]pluckPosition[midi:ctrl 1]" + ,0.8,0,1,0.01) : si.smoo; + outGain = hslider("v:modularInterpInstr/[3]outGain",0.5,0,1,0.01); + t = button("v:modularInterpInstr/[4]gate"); + gate = t+s : min(1); + freq = f*bend; + stringLength = freq : f2l; +}; + + +//=============================Bowed String Instruments=================================== +// Low and high level basic string instruments parts. Most of the elements in +// this section can be used in a bidirectional chain. +//======================================================================================== + +//-------`(pm.)bowTable`---------- +// Extremely basic bow table that can be used to implement a wide range of +// bow types for many different bowed string instruments (violin, cello, etc.). +// +// #### Usage +// +// ``` +// excitation : bowTable(offset,slope) : _ +// ``` +// +// Where: +// +// * `excitation`: an excitation signal +// * `offset`: table offset +// * `slope`: table slope +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// bowTable_test = pm.bowTable(0.4, 0.1); +// ``` +//---------------------------------- +bowTable(offset,slope) = pow(abs(sample) + 0.75, -4) : min(1) +with { + sample = +(offset)*slope; +}; + + +//-------`(pm.)violinBowTable`---------- +// Violin bow table based on [`bowTable`](#bowtable). +// +// #### Usage +// +// ``` +// bowVelocity : violinBowTable(bowPressure) : _ +// ``` +// +// Where: +// +// * `bowVelocity`: velocity of the bow/excitation signal (0-1) +// * `bowPressure`: bow pressure on the string (0-1) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// violinBowTable_test = pm.violinBowTable(0.4, 0.1); +// ``` +//---------------------------------- +violinBowTable(bowPressure) = bowTable(0,tableSlope) +with { + tableSlope = 5 - (4*bowPressure); +}; + + +//-------`(pm.)bowInteraction`---------- +// Bidirectional block implementing the interaction of a bow in a +// [`chain`](#chain). +// +// #### Usage +// +// ``` +// chain(... : stringSegment : bowInteraction(bowTable) : stringSegment : ...) +// ``` +// +// Where: +// +// * `bowTable`: the bow table +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// bowInteraction_test = pm.bowInteraction((0.4, 0.05)); +// ``` +//---------------------------------- +bowInteraction(b) = (_,_ <: b,_,_ :> _,_),_; + + +//-------`(pm.)violinBow`---------- +// Bidirectional block implementing a violin bow and its interaction with +// a string. +// +// #### Usage +// +// ``` +// chain(... : stringSegment : violinBow(bowPressure,bowVelocity) : stringSegment : ...) +// ``` +// +// Where: +// +// * `bowVelocity`: velocity of the bow / excitation signal (0-1) +// * `bowPressure`: bow pressure on the string (0-1) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// violinBow_test = pm.violinBow(0.4, 0.05); +// ``` +//---------------------------------- +violinBow(bowPressure,bowVelocity) = bowInteraction(bowSystem) +with { + bowSystem = + : bowVelocity-_ <: *(violinBowTable(bowPressure)) <: _,_; +}; + + +//-------`(pm.)violinBowedString`---------- +// Violin bowed string bidirectional block with controllable bow position. +// Terminations are not implemented in this model. +// +// #### Usage +// +// ``` +// chain(nuts : violinBowedString(stringLength,bowPressure,bowVelocity,bowPosition) : bridge) +// ``` +// +// Where: +// +// * `stringLength`: the length of the string in meters +// * `bowVelocity`: velocity of the bow / excitation signal (0-1) +// * `bowPressure`: bow pressure on the string (0-1) +// * `bowPosition`: the position of the bow on the string (0-1) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// violinBowedString_test = 0.25, -0.15, 0.05 : pm.violinBowedString(0.82, 0.35, 0.2, 0.15); +// ``` +//---------------------------------- +violinBowedString(stringLength,bowPressure,bowVelocity,bowPosition) = + chain( + stringSegment(maxStringLength,ntbd) : + violinBow(bowPressure,bowVelocity) : + stringSegment(maxStringLength,btbd) + ) + with { + maxStringLength = maxLength; + ntbd = stringLength*bowPosition; // upper portion of the string length + btbd = stringLength*(1-bowPosition); // lower portion of the string length + }; + + +//-------`(pm.)violinNuts`---------- +// Bidirectional block implementing simple violin nuts. This function is +// based on [`bridgeFilter`](#bridgefilter). +// +// #### Usage +// +// ``` +// _,_,_ : violinNuts +// ``` +// Typical use: `chain(violinNuts : stringSegment : ...)` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// violinNuts_test = 0.25, -0.15, 0.05 : pm.violinNuts; +// ``` +//---------------------------------- +violinNuts = lTermination(-bridgeFilter(0.6,0.1),basicBlock); + + +//-------`(pm.)violinBridge`---------- +// Bidirectional block implementing a simple violin bridge. This function is +// based on [`bridgeFilter`](#bridgefilter). +// +// #### Usage +// +// ``` +// chain(... : stringSegment : violinBridge +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// violinBridge_test = 0.25, -0.15, 0.05 : pm.violinBridge; +// ``` +//---------------------------------- +// TODO: +// * reflectance is not implemented yet +violinBridge = rTermination(basicBlock,reflectance) : _,transmittance,_ +with { + reflectance = -bridgeFilter(0.2,0.9); + transmittance = _; +}; + + +//-------`(pm.)violinBody`---------- +// Bidirectional block implementing a simple violin body (just a simple +// resonant lowpass filter). +// +// #### Usage +// +// ``` +// chain(... : stringSegment : violinBridge : violinBody) +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// violinBody_test = 0.25, -0.15, 0.05 : pm.violinBody; +// ``` +//---------------------------------- +// TODO: +// * reflectance is not implemented yet +violinBody = reflectance,transmittance,_ +with { + transmittance = fi.resonbp(500,2,1); + reflectance = _; +}; + + +//-------`(pm.)violinModel`---------- +// Ready-to-use simple violin physical model. This model implements a single +// string. Additional strings should be created +// by making a polyphonic application out of this function. Pitch is changed +// by changing the length of the string (and not through a finger model). +// +// #### Usage +// +// ``` +// violinModel(stringLength,bowPressure,bowVelocity,bowPosition) : _ +// ``` +// +// Where: +// +// * `stringLength`: the length of the string in meters +// * `bowPressure`: bow pressure on the string (0-1) +// * `bowVelocity`: velocity of the bow / excitation signal (0-1) +// * `bowPosition`: the position of the bow on the string (0-1) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// violinModel_test = pm.violinModel(0.82, 0.4, 0.05, 0.15); +// ``` +//---------------------------------- +violinModel(stringLength,bowPressure,bowVelocity,bowPosition) = + endChain(modelChain) +with { + stringTuning = 0.08; + stringL = stringLength-stringTuning; + modelChain = chain( + violinNuts : + violinBowedString(stringL,bowPressure,bowVelocity,bowPosition) : + violinBridge : + violinBody : + out + ); +}; + + +//-------`(pm.)violin_ui`---------- +// Ready-to-use violin physical model with built-in UI. +// +// #### Usage +// +// ``` +// violinModel_ui : _ +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// violin_ui_test = pm.violinModel(0.82, 0.4, 0.05, 0.15); +// ``` +//---------------------------------- +violin_ui = violinModel(stringLength,bowPress,bowVel,bowPos)*outGain +with { + stringLength = hslider("v:violin/v:[0]string/[0]length",0.75,0,2,0.01) : si.smoo; + bowVel = hslider("v:violin/v:[1]bow/[0]velocity",0,0,1,0.01) : si.smoo; + bowPress = hslider("v:violin/v:[1]bow/[1]pressure",0.5,0,1,0.01) : si.smoo; + bowPos = hslider("v:violin/v:[1]bow/[2]position",0.7,0,1,0.01) : si.smoo; + outGain = hslider("v:violin/outGain",0.5,0,1,0.01); +}; + + +//-------`(pm.)violin_ui_MIDI`---------- +// Ready-to-use MIDI-enabled violin physical model with built-in UI. +// +// #### Usage +// +// ``` +// violin_ui_MIDI : _ +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// violin_ui_MIDI_test = pm.violin_ui_MIDI; +// ``` +//---------------------------------- +violin_ui_MIDI = violinModel(stringLength,bowPress,bowVel,bowPos)*outGain +with { + f = hslider("v:violin/h:[0]midi/[0]freq[style:knob]",440,50,1000,0.01); + bend = ba.semi2ratio(hslider("v:violin/h:[0]midi/[1]bend[hidden:1][midi:pitchwheel] + [style:knob]",0,-2,2,0.01)) : si.polySmooth(gate,0.999,1); + gain = hslider("v:violin/h:[0]midi/[2]gain[style:knob] + ",0.6,0,1,0.01); + envAttack = hslider("v:violin/h:[0]midi/[3]envAttack[style:knob] + ",1,0,30,0.01)*0.001; + s = hslider("v:violin/h:[0]midi/[4]sustain[hidden:1][midi:ctrl 64] + [style:knob]",0,0,1,1); + bowPress = hslider("v:violin/h:[1]bow/[0]pressure[style:knob] + [midi:ctrl 1]",0.5,0,1,0.01) : si.smoo; + bowPos = hslider("v:violin/h:[1]bow/[1]position[style:knob] + ",0.7,0,1,0.01) : si.smoo; + vibratoFreq = hslider("v:violin/h:[2]otherParams/[0]vibratoFrequency + [style:knob]",6,1,10,0.01); + vibratoGain = hslider("v:violin/h:[2]otherParams/[1]vibratoGain + [style:knob]",0.5,0,1,0.01)*0.01; + outGain = hslider("v:violin/h:[2]otherParams/[2]outGain[style:knob] + ",0.5,0,1,0.01); + t = button("v:violin/[3]gate"); + + gate = t+s : min(1); + vibrato = 1+os.osc(vibratoFreq)*vibratoGain*envelope; + freq = f*bend*vibrato; + envelope = gate*gain : si.smooth(ba.tau2pole(envAttack)); + + stringLength = freq : f2l; + bowVel = envelope; +}; + + +//=================================Wind Instruments======================================= +// Low and high level basic wind instruments parts. Most of the elements in +// this section can be used in a bidirectional chain. +//======================================================================================== + +//-------`(pm.)openTube`---------- +// A tube segment without terminations (same as [`stringSegment`](#stringsegment)). +// +// #### Usage +// +// ``` +// chain(A : openTube(maxLength,length) : B) +// ``` +// +// Where: +// +// * `maxLength`: the maximum length of the tube in meters (should be static) +// * `length`: the length of the tube in meters +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// openTube_test = 0.25, -0.15, 0.05 : pm.openTube(pm.maxLength, 0.9); +// ``` +//---------------------------------- +openTube = stringSegment; + + +//-------`(pm.)reedTable`---------- +// Extremely basic reed table that can be used to implement a wide range of +// single reed types for many different instruments (saxophone, clarinet, etc.). +// +// #### Usage +// +// ``` +// excitation : reedTable(offset,slope) : _ +// ``` +// +// Where: +// +// * `excitation`: an excitation signal +// * `offset`: table offset +// * `slope`: table slope +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// reedTable_test = os.osc(220) : pm.reedTable(0.4, 0.2); +// ``` +//---------------------------------- +reedTable(offset,slope) = reedTable : min(1) : max(-1) +with { + reedTable = *(slope) + offset; +}; + + +//-------`(pm.)fluteJetTable`---------- +// Extremely basic flute jet table. +// +// #### Usage +// +// ``` +// excitation : fluteJetTable : _ +// ``` +// +// Where: +// +// * `excitation`: an excitation signal +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// fluteJetTable_test = os.osc(220) : pm.fluteJetTable; +// ``` +//---------------------------------- +fluteJetTable = _ <: *(* : -(1)) : clipping +with { + clipping = min(1) : max(-1); +}; + + +//-------`(pm.)brassLipsTable`---------- +// Simple brass lips/mouthpiece table. Since this implementation is very basic +// and that the lips and tube of the instrument are coupled to each other, the +// length of that tube must be provided here. +// +// #### Usage +// +// ``` +// excitation : brassLipsTable(tubeLength,lipsTension) : _ +// ``` +// +// Where: +// +// * `excitation`: an excitation signal (can be DC) +// * `tubeLength`: length in meters of the tube connected to the mouthpiece +// * `lipsTension`: tension of the lips (0-1) (default: 0.5) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// brassLipsTable_test = os.osc(220) : pm.brassLipsTable(0.3, 0.2); +// ``` +//---------------------------------- +brassLipsTable(tubeLength,lipsTension) = *(0.03) : lipFilter <: * : clipping +with { + clipping = min(1) : max(-1); + freq = (tubeLength : l2f)*pow(4,(2*lipsTension)-1); + filterR = 0.997; + a1 = -2*filterR*cos(ma.PI*2*freq/ma.SR); + lipFilter = fi.tf2(1,0,0,a1,pow(filterR,2)); // resonance with same freq as tube +}; + + +//-------`(pm.)clarinetReed`---------- +// Clarinet reed based on [`reedTable`](#reedtable) with controllable +// stiffness. +// +// #### Usage +// +// ``` +// excitation : clarinetReed(stiffness) : _ +// ``` +// +// Where: +// +// * `excitation`: an excitation signal +// * `stiffness`: reed stiffness (0-1) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// clarinetReed_test = os.osc(440) : pm.clarinetReed(0.6); +// ``` +//---------------------------------- +clarinetReed(stiffness) = reedTable(0.7,tableSlope) +with { + tableSlope = -0.44 + 0.26*stiffness; +}; + + +//-------`(pm.)clarinetMouthPiece`---------- +// Bidirectional block implementing a clarinet mouthpiece as well as the various +// interactions happening with traveling waves. This element is ready to be +// plugged to a tube... +// +// #### Usage +// +// ``` +// chain(clarinetMouthPiece(reedStiffness,pressure) : tube : etc.) +// ``` +// +// Where: +// +// * `pressure`: the pressure of the air flow (DC) created by the virtual performer (0-1). +// This can also be any kind of signal that will directly injected in the mouthpiece +// (e.g., breath noise, etc.). +// * `reedStiffness`: reed stiffness (0-1) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// clarinetMouthPiece_test = 0.25, -0.15, 0.05 : pm.clarinetMouthPiece(0.6, 0.4); +// ``` +//---------------------------------- +clarinetMouthPiece(reedStiffness,pressure) = lTermination(reedInteraction,in(pressure)) +with { + reedInteraction = *(-1) <: *(clarinetReed(reedStiffness)); +}; + + +//-------`(pm.)brassLips`---------- +// Bidirectional block implementing a brass mouthpiece as well as the various +// interactions happening with traveling waves. This element is ready to be +// plugged to a tube... +// +// #### Usage +// +// ``` +// chain(brassLips(tubeLength,lipsTension,pressure) : tube : etc.) +// ``` +// +// Where: +// +// * `tubeLength`: length in meters of the tube connected to the mouthpiece +// * `lipsTension`: tension of the lips (0-1) (default: 0.5) +// * `pressure`: the pressure of the air flow (DC) created by the virtual performer (0-1). +// This can also be any kind of signal that will directly injected in the mouthpiece +// (e.g., breath noise, etc.). +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// brassLips_test = 0.25, -0.15, 0.05 : pm.brassLips(0.3, 0.2, 0.1); +// ``` +//---------------------------------- +brassLips(tubeLength,lipsTension,pressure) = lTermination(mpInteraction,basicBlock) +with { + absorption = *(0.85); // absorption coefficient + p = pressure*0.3; // scaling pressure + mpInteraction = absorption <: + (p-_ : brassLipsTable(tubeLength,lipsTension) <: *(p),1-_),_ : _,* : + : fi.dcblocker; +}; + + +//-------`(pm.)fluteEmbouchure`---------- +// Bidirectional block implementing a flute embouchure as well as the various +// interactions happening with traveling waves. This element is ready to be +// plugged between tubes segments... +// +// #### Usage +// +// ``` +// chain(... : tube : fluteEmbouchure(pressure) : tube : etc.) +// ``` +// +// Where: +// +// * `pressure`: the pressure of the air flow (DC) created by the virtual +// performer (0-1). +// This can also be any kind of signal that will directly injected in the +// mouthpiece (e.g., breath noise, etc.). +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// fluteEmbouchure_test = 0.25, -0.15, 0.05 : pm.fluteEmbouchure(0.5); +// ``` +//---------------------------------- +fluteEmbouchure(pressure) = +(_ <: _,_),_,_ : _,*(0.5)+(pressure-_*0.5 : fluteJetTable),_; + + +//-------`(pm.)wBell`---------- +// Generic wind instrument bell bidirectional block that should be placed at +// the end of a [`chain`](#chain). +// +// #### Usage +// +// ``` +// chain(... : wBell(opening)) +// ``` +// +// Where: +// +// * `opening`: the "opening" of bell (0-1) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// wBell_test = 0.25, -0.15, 0.05 : pm.wBell(0.4); +// ``` +//---------------------------------- +wBell(opening) = rTermination(basicBlock,si.smooth(opening)); + + +//-------`(pm.)fluteHead`---------- +// Simple flute head implementing waves reflexion. +// +// #### Usage +// +// ``` +// _,_,_ : fluteHead +// ``` +// Typical use: `chain(fluteHead : tube : ...)` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// fluteHead_test = 0.25, -0.15, 0.05 : pm.fluteHead; +// ``` +//---------------------------------- +fluteHead = lTermination(*(absorption),basicBlock) +with { + absorption = 0.95; // same as for foot +}; + + +//-------`(pm.)fluteFoot`---------- +// Simple flute foot implementing waves reflexion and dispersion. +// +// #### Usage +// +// ``` +// chain(... : tube : fluteFoot) +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// fluteFoot_test = 0.25, -0.15, 0.05 : pm.fluteFoot; +// ``` +//---------------------------------- +fluteFoot = rTermination(basicBlock,*(absorption) : dispersion) +with { + dispersion = si.smooth(0.7); // just a simple lowpass + absorption = 0.95; // same as for head +}; + + +//-------`(pm.)clarinetModel`---------- +// A simple clarinet physical model without tone holes (pitch is changed by +// changing the length of the tube of the instrument). +// +// #### Usage +// +// ``` +// clarinetModel(tubeLength,pressure,reedStiffness,bellOpening) : _ +// ``` +// +// Where: +// +// * `tubeLength`: the length of the tube in meters +// * `pressure`: the pressure of the air flow created by the virtual performer (0-1). +// This can also be any kind of signal that will directly injected in the mouthpiece +// (e.g., breath noise, etc.). +// * `reedStiffness`: reed stiffness (0-1) +// * `bellOpening`: the opening of bell (0-1) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// clarinetModel_test = pm.clarinetModel(0.9, 0.4, 0.3, 0.2); +// ``` +//---------------------------------- +clarinetModel(tubeLength,pressure,reedStiffness,bellOpening) = endChain(modelChain) +with { + lengthTuning = 0.05; // empirical adjustment of the tuning of the tube + maxTubeLength = maxLength; + tunedLength = tubeLength/2-lengthTuning; // not really sure why we had to shift octave here + modelChain = + chain( + clarinetMouthPiece(reedStiffness,pressure) : + openTube(maxTubeLength,tunedLength) : + wBell(bellOpening) : out + ); +}; + + +//-------`(pm.)clarinetModel_ui`---------- +// Same as [`clarinetModel`](#clarinetModel) but with a built-in UI. This function +// doesn't implement a virtual "blower", thus `pressure` remains an argument here. +// +// #### Usage +// +// ``` +// clarinetModel_ui(pressure) : _ +// ``` +// +// Where: +// +// * `pressure`: the pressure of the air flow created by the virtual performer (0-1). +// This can also be any kind of signal that will be directly injected in the mouthpiece +// (e.g., breath noise, etc.). +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// clarinetModel_ui_test = pm.clarinetModel_ui(0.4); +// ``` +//---------------------------------- +clarinetModel_ui(pressure) = clarinetModel(tubeLength,pressure,reedStiffness,bellOpening)*outGain +with { + tubeLength = hslider("v:clarinetModel/[0]tubeLength",0.8,0.01,3,0.01) : si.smoo; + reedStiffness = hslider("v:clarinetModel/[1]reedStiffness",0.5,0,1,0.01); + bellOpening = hslider("v:clarinetModel/[2]bellOpening",0.5,0,1,0.01); + outGain = hslider("v:clarinetModel/[3]outGain",0.5,0,1,0.01); +}; + + +//-------`(pm.)clarinet_ui`---------- +// Ready-to-use clarinet physical model with built-in UI based on +// [`clarinetModel`](#clarinetmodel). +// +// #### Usage +// +// ``` +// clarinet_ui : _ +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// clarinet_ui_test = pm.clarinet_ui; +// ``` +//---------------------------------- +clarinet_ui = hgroup("clarinet",blower_ui : clarinetModel_ui); + + +//-------`(pm.)clarinet_ui_MIDI`---------- +// Ready-to-use MIDI compliant clarinet physical model with built-in UI. +// +// #### Usage +// +// ``` +// clarinet_ui_MIDI : _ +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// clarinet_ui_MIDI_test = pm.clarinet_ui_MIDI; +// ``` +//---------------------------------- +clarinet_ui_MIDI = +clarinetModel(tubeLength,blow,reedStiffness,bellOpening)*outGain +with { + f = hslider("v:clarinet/h:[0]midi/[0]freq[style:knob]",440,50,1000,0.01); + bend = ba.semi2ratio(hslider("v:clarinet/h:[0]midi/[1]bend[hidden:1][midi:pitchwheel] + [style:knob]",0,-2,2,0.01)) : si.polySmooth(gate,0.999,1); + gain = hslider("v:clarinet/h:[0]midi/[2]gain[style:knob] + ",0.6,0,1,0.01); + envAttack = hslider("v:clarinet/h:[0]midi/[3]envAttack[style:knob] + ",1,0,30,0.01)*0.001; + s = hslider("v:clarinet/h:[0]midi/[4]sustain[hidden:1][midi:ctrl 64] + [style:knob]",0,0,1,1); + reedStiffness = hslider("v:clarinet/h:[1]otherParams/[0]reedStiffness + [midi:ctrl 1][style:knob]",0.5,0,1,0.01); + bellOpening = hslider("v:clarinet/h:[1]otherParams/[1]bellOpening + [midi:ctrl 3][style:knob]",0.5,0,1,0.01); + vibratoFreq = hslider("v:clarinet/h:[1]otherParams/[2]vibratoFreq + [style:knob]",5,1,10,0.01); + vibratoGain = hslider("v:clarinet/h:[1]otherParams/[3]vibratoGain + [style:knob]",0.25,0,1,0.01)*0.01; + outGain = hslider("v:clarinet/h:[1]otherParams/[4]outGain[style:knob] + ",0.5,0,1,0.01); + t = button("v:clarinet/[2]gate"); + + gate = t+s : min(1); + vibrato = 1+os.osc(vibratoFreq)*vibratoGain*envelope; + freq = f*bend*vibrato; + envelope = gate*gain : si.smooth(ba.tau2pole(envAttack)); + + tubeLength = freq : f2l; + pressure = envelope; // TODO: double vibrato here!! + blow = blower(pressure,0.05,2000,vibratoFreq,vibratoGain); +}; + + +//-------`(pm.)brassModel`---------- +// A simple generic brass instrument physical model without pistons +// (pitch is changed by changing the length of the tube of the instrument). +// This model is kind of hard to control and might not sound very good if +// bad parameters are given to it... +// +// #### Usage +// +// ``` +// brassModel(tubeLength,lipsTension,mute,pressure) : _ +// ``` +// +// Where: +// +// * `tubeLength`: the length of the tube in meters +// * `lipsTension`: tension of the lips (0-1) (default: 0.5) +// * `mute`: mute opening at the end of the instrument (0-1) (default: 0.5) +// * `pressure`: the pressure of the air flow created by the virtual performer (0-1). +// This can also be any kind of signal that will directly injected in the mouthpiece +// (e.g., breath noise, etc.). +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// brassModel_test = pm.brassModel(0.9, 0.4, 0.2, 0.6); +// ``` +//---------------------------------- +brassModel(tubeLength,lipsTension,mute,pressure) = endChain(brassChain) +with { + maxTubeLength = maxLength; + lengthTuning = 0; // Not that important for that one because of lips tension + tunedLength = tubeLength + lengthTuning; + brassChain = chain(brassLips(tunedLength,lipsTension,pressure) : openTube(maxTubeLength,tunedLength) : wBell(mute) : out); +}; + + +//-------`(pm.)brassModel_ui`---------- +// Same as [`brassModel`](#brassModel) but with a built-in UI. This function +// doesn't implement a virtual "blower", thus `pressure` remains an argument here. +// +// #### Usage +// +// ``` +// brassModel_ui(pressure) : _ +// ``` +// +// Where: +// +// * `pressure`: the pressure of the air flow created by the virtual performer (0-1). +// This can also be any kind of signal that will be directly injected in the mouthpiece +// (e.g., breath noise, etc.). +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// brassModel_ui_test = pm.brassModel_ui(0.4); +// ``` +//---------------------------------- +brassModel_ui(pressure) = brassModel(tubeLength,lipsTension,mute,pressure) +with { + tubeLength = hslider("v:brassModel/[1]tubeLength",0.5,0.01,2.5,0.01) : si.smoo; + lipsTension = hslider("v:brassModel/[2]lipsTension",0.5,0,1,0.01) : si.smoo; + mute = hslider("v:brassModel/[3]mute",0.5,0,1,0.01) : si.smoo; +}; + + +//-------`(pm.)brass_ui`---------- +// Ready-to-use brass instrument physical model with built-in UI based on +// [`brassModel`](#brassmodel). +// +// #### Usage +// +// ``` +// brass_ui : _ +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// brass_ui_test = pm.brass_ui; +// ``` +//---------------------------------- +brass_ui = hgroup("brass",blower_ui : brassModel_ui); + + +//-------`(pm.)brass_ui_MIDI`---------- +// Ready-to-use MIDI-controllable brass instrument physical model with built-in UI. +// +// #### Usage +// +// ``` +// brass_ui_MIDI : _ +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// brass_ui_MIDI_test = pm.brass_ui_MIDI; +// ``` +//---------------------------------- +brass_ui_MIDI = brassModel(tubeLength,lipsTension,mute,pressure)*outGain +with { + f = hslider("v:brass/h:[0]midi/[0]freq[style:knob]",440,50,1000,0.01); + bend = ba.semi2ratio(hslider("v:brass/h:[0]midi/[1]bend[hidden:1][midi:pitchwheel] + [style:knob]",0,-2,2,0.01)) : si.polySmooth(gate,0.999,1); + gain = hslider("v:brass/h:[0]midi/[2]gain[style:knob] + ",0.5,0,1,0.01); + envAttack = hslider("v:brass/h:[0]midi/[3]envAttack[style:knob] + ",1,0,30,0.01)*0.001; + s = hslider("v:brass/h:[0]midi/[4]sustain[hidden:1][midi:ctrl 64] + [style:knob]",0,0,1,1); + lipsTension = hslider("v:brass/h:[1]otherParams/[0]lipsTension[style:knob] + [midi:ctrl 1]",0.5,0,1,0.01) : si.smoo; + mute = hslider("v:brass/h:[1]otherParams/[1]mute[style:knob] + ",0.5,0,1,0.01) : si.smoo; + vibratoFreq = hslider("v:brass/h:[1]otherParams/[2]vibratoFreq[style:knob] + ",5,1,10,0.01); + vibratoGain = hslider("v:brass/h:[1]otherParams/[3]vibratoGain[style:knob] + ",0.5,0,1,0.01)*0.04; + outGain = hslider("v:brass/h:[1]otherParams/[4]outGain[style:knob] + ",0.5,0,1,0.01); + t = button("v:brass/[2]gate"); + + gate = t+s : min(1); + vibrato = 1+os.osc(vibratoFreq)*vibratoGain*envelope; + freq = f*bend; + envelope = gate*gain : si.smooth(ba.tau2pole(envAttack)); + + tubeLength = freq : f2l; + pressure = envelope*vibrato; +}; + + +//-------`(pm.)fluteModel`---------- +// A simple generic flute instrument physical model without tone holes +// (pitch is changed by changing the length of the tube of the instrument). +// +// #### Usage +// +// ``` +// fluteModel(tubeLength,mouthPosition,pressure) : _ +// ``` +// +// Where: +// +// * `tubeLength`: the length of the tube in meters +// * `mouthPosition`: position of the mouth on the embouchure (0-1) (default: 0.5) +// * `pressure`: the pressure of the air flow created by the virtual performer (0-1). +// This can also be any kind of signal that will directly injected in the mouthpiece +// (e.g., breath noise, etc.). +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// fluteModel_test = pm.fluteModel(0.9, 0.4, 0.6); +// ``` +//---------------------------------- +// TODO: this model is out of tune and we're not really sure why +fluteModel(tubeLength,mouthPosition,pressure) = endChain(fluteChain) : fi.dcblocker +with { + maxTubeLength = maxLength; + tubeTuning = 0.27; // set "by hand" + tLength = tubeLength+tubeTuning; // global tube length + embouchurePos = 0.27 + (mouthPosition-0.5)*0.4; // position of the embouchure on the tube + tted = tLength*embouchurePos; // head to embouchure distance + eted = tLength*(1-embouchurePos); // embouchure to foot distance + fluteChain = chain(fluteHead : openTube(maxTubeLength,tted) : fluteEmbouchure(pressure) : openTube(maxTubeLength,eted) : fluteFoot : out); +}; + + +//-------`(pm.)fluteModel_ui`---------- +// Same as [`fluteModel`](#fluteModel) but with a built-in UI. This function +// doesn't implement a virtual "blower", thus `pressure` remains an argument here. +// +// #### Usage +// +// ``` +// fluteModel_ui(pressure) : _ +// ``` +// +// Where: +// +// * `pressure`: the pressure of the air flow created by the virtual performer (0-1). +// This can also be any kind of signal that will be directly injected in the mouthpiece +// (e.g., breath noise, etc.). +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// fluteModel_ui_test = pm.fluteModel_ui(0.4); +// ``` +//---------------------------------- +fluteModel_ui(pressure) = +fluteModel(tubeLength,mouthPosition,pressure)*outGain +with { + tubeLength = hslider("v:fluteModel/[0]tubeLength",0.8,0.01,3,0.01) : si.smoo; + mouthPosition = hslider("v:fluteModel/[1]mouthPosition",0.5,0,1,0.01) : si.smoo; + outGain = hslider("v:fluteModel/[2]outGain",0.5,0,1,0.01); +}; + + +//-------`(pm.)flute_ui`---------- +// Ready-to-use flute physical model with built-in UI based on +// [`fluteModel`](#flutemodel). +// +// #### Usage +// +// ``` +// flute_ui : _ +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// flute_ui_test = pm.flute_ui; +// ``` +//---------------------------------- +flute_ui = hgroup("flute",blower_ui : fluteModel_ui); + + +//-------`(pm.)flute_ui_MIDI`---------- +// Ready-to-use MIDI-controllable flute physical model with built-in UI. +// +// #### Usage +// +// ``` +// flute_ui_MIDI : _ +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// flute_ui_MIDI_test = pm.flute_ui_MIDI; +// ``` +//---------------------------------- +flute_ui_MIDI = fluteModel(tubeLength,mouthPosition,blow)*outGain +with { + f = hslider("v:flute/h:[0]midi/[0]freq[style:knob]",440,50,1000,0.01); + bend = ba.semi2ratio(hslider("v:flute/h:[0]midi/[1]bend[hidden:1][midi:pitchwheel] + [style:knob]",0,-2,2,0.01)) : si.polySmooth(gate,0.999,1); + gain = hslider("v:flute/h:[0]midi/[2]gain[style:knob] + ",0.9,0,1,0.01); + envAttack = hslider("v:flute/h:[0]midi/[3]envAttack[style:knob] + ",1,0,30,0.01)*0.001; + s = hslider("v:flute/h:[0]midi/[4]sustain[hidden:1][midi:ctrl 64] + [style:knob]",0,0,1,1); + mouthPosition = hslider("v:flute/h:[1]otherParams/[0]mouthPosition + [style:knob][midi:ctrl 1]",0.5,0,1,0.01) + : si.smoo; + vibratoFreq = hslider("v:flute/h:[1]otherParams/[1]vibratoFreq[style:knob] + ",5,1,10,0.01); + vibratoGain = hslider("v:flute/h:[1]otherParams/[2]vibratoGain[style:knob] + ",0.5,0,1,0.01)*0.04; + outGain = hslider("v:flute/h:[1]otherParams/[3]outGain[style:knob] + ",0.5,0,1,0.01); + t = button("v:flute/[2]gate"); + + gate = t+s : min(1); + freq = f*bend; + envelope = gate*gain : si.smooth(ba.tau2pole(envAttack)); + + tubeLength = freq : f2l; + pressure = envelope; + blow = blower(pressure,0.05,2000,vibratoFreq,vibratoGain); +}; + + +//=====================================Exciters=========================================== +// Various kind of excitation signal generators. +//======================================================================================== + +//-------`(pm.)impulseExcitation`-------------- +// Creates an impulse excitation of one sample. +// +// #### Usage +// +// ``` +// gate = button('gate'); +// impulseExcitation(gate) : chain; +// ``` +// +// Where: +// +// * `gate`: a gate button +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// impulseExcitation_test = pm.impulseExcitation(button("pm.impulseExcitation/gate")); +// ``` +//-------------------------------------- +impulseExcitation(trigger) = trigger : ba.impulsify; + + +//-------`(pm.)strikeModel`-------------- +// Creates a filtered noise excitation. +// +// #### Usage +// +// ``` +// gate = button('gate'); +// strikeModel(LPcutoff,HPcutoff,sharpness,gain,gate) : chain; +// ``` +// +// Where: +// +// * `HPcutoff`: highpass cutoff frequency +// * `LPcutoff`: lowpass cutoff frequency +// * `sharpness`: sharpness of the attack and release (0-1) +// * `gain`: gain of the excitation +// * `gate`: a gate button/trigger signal (0/1) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// strikeModel_test = pm.strikeModel(200, 4000, 0.5, 0.8, button("pm.strikeModel/gate")); +// ``` +//-------------------------------------- +strikeModel(HPcutoff,LPcutoff,sharpness,gain,trigger) = +no.noise : fi.highpass(2,HPcutoff) : fi.lowpass(2,LPcutoff) : +*(en.ar(att,rel,trigger))*gain +with { + att = 0.002*sharpness; + rel = att; +}; + + +//-------`(pm.)strike`-------------- +// Strikes generator with controllable excitation position. +// +// #### Usage +// +// ``` +// gate = button('gate'); +// strike(exPos,sharpness,gain,gate) : chain; +// ``` +// +// Where: +// +// * `exPos`: excitation position wiht 0: for max low freqs and 1: for max high +// freqs. So, on membrane for example, 0 would be the middle and 1 the edge +// * `sharpness`: sharpness of the attack and release (0-1) +// * `gain`: gain of the excitation +// * `gate`: a gate button/trigger signal (0/1) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// strike_test = pm.strike(0.4, 0.5, 0.8, button("pm.strike/gate")); +// ``` +//-------------------------------------- +strike(exPos,sharpness,gain,trigger) = strikeModel(HPcutoff,LPcutoff,sharpness,gain,trigger) +with { + HPcutoff = 40+exPos*500; + LPcutoff = 500+exPos*15000; +}; + + +//-------`(pm.)pluckString`-------------- +// Creates a plucking excitation signal. +// +// #### Usage +// +// ``` +// trigger = button('gate'); +// pluckString(stringLength,cutoff,maxFreq,sharpness,gain,trigger) +// ``` +// +// Where: +// +// * `stringLength`: length of the string to pluck +// * `cutoff`: cutoff ratio (1 for default) +// * `maxFreq`: max frequency ratio (1 for default) +// * `sharpness`: sharpness of the attack and release (1 for default) +// * `gain`: gain of the excitation (0-1) +// * `trigger`: trigger signal (1 for on, 0 for off) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// pluckString_test = pm.pluckString(0.9, 1, 1, 1, 0.6, button("pm.pluckString/gate")); +// ``` +//-------------------------------------- +pluckString(stringLength,cutoff,maxFreq,sharpness,gain,trigger) = +no.noise : fi.lowpass(2,cutoffreq) : *(en.ar(att,rel,trigger))*gain +with { + freq = stringLength : l2f; + maxF = 2000*maxFreq; + att = 0.002*sharpness*pow((1 - freq/maxF),2); + rel = att; + cutoffreq = freq*5*cutoff; +}; + + +//-------`(pm.)blower`-------------- +// A virtual blower creating a DC signal with some breath noise in it. +// +// #### Usage +// +// ``` +// blower(pressure,breathGain,breathCutoff,vibratoFreq,vibratoGain) : _ +// ``` +// +// Where: +// +// * `pressure`: pressure (0-1) +// * `breathGain`: breath noise gain (0-1) (recommended: 0.005) +// * `breathCutoff`: breath cutoff frequency (Hz) (recommended: 2000) +// * `vibratoFreq`: vibrato frequency in Hz (recommended: 5) +// * `vibratoGain`: vibrato depth (0-1) (recommended: 0.2) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// blower_test = pm.blower(0.5, 0.05, 2000, 5, 0.2); +// ``` +//-------------------------------------- +blower(pressure,breathGain,breathCutoff,vibratoFreq,vibratoGain) = pressure + vibrato + breathNoise +with { + vibrato = os.osc(vibratoFreq)*vibratoGain; + breathNoise = no.noise : fi.lowpass(2,breathCutoff) : *(pressure*breathGain); +}; + + +//-------`(pm.)blower_ui`-------------- +// Same as [`blower`](#blower) but with a built-in UI. +// +// #### Usage +// +// ``` +// blower : somethingToBeBlown +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// blower_ui_test = pm.blower_ui; +// ``` +//-------------------------------------- +blower_ui = blower(pressure,breathGain,breathCutoff,vibratoFreq,vibratoGain) +with { + pressure = hslider("v:blower/[0]pressure",0,0,1,0.01) : si.smoo; + breathGain = hslider("v:blower/[1]breathGain",0.1,0,1,0.01)*0.05; + breathCutoff = hslider("v:blower/[2]breathCutoff",2000,20,20000,0.1); + vibratoFreq = hslider("v:blower/[3]vibratoFreq",5,0.1,10,0.1); + vibratoGain = hslider("v:blower/[4]vibratoGain",0.25,0,1,0.01)*0.03; +}; + + +//============================Modal Percussions=========================================== +// High and low level functions for modal synthesis of percussion instruments. +//======================================================================================== + +//-------`(pm.)djembeModel`---------- +// Dirt-simple djembe modal physical model. Mode parameters are empirically +// calculated and don't correspond to any measurements or 3D model. They +// kind of sound good though :). +// +// #### Usage +// +// ``` +// excitation : djembeModel(freq) +// ``` +// +// Where: +// +// * `excitation`: excitation signal +// * `freq`: fundamental frequency of the bar +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// djembeModel_test = os.impulse : pm.djembeModel(110); +// ``` +//---------------------------------- +djembeModel(freq) = _ <: par(i,nModes,modeFilter(modeFreqs(i),modeT60s(i),modeGains(i))) :> /(nModes) +with { + nModes = 20; + theta = 0; // angle + modeFreqs(i) = freq + 200*i; + modeT60s(i) = (nModes-i)*0.03; + modeGains(i) = cos((i+1)*theta)/float(i+1)*(1/(i+1)); +}; + + +//-------`(pm.)djembe`---------- +// Dirt-simple djembe modal physical model. Mode parameters are empirically +// calculated and don't correspond to any measurements or 3D model. They +// kind of sound good though :). +// +// This model also implements a virtual "exciter". +// +// #### Usage +// +// ``` +// djembe(freq,strikePosition,strikeSharpness,gain,trigger) +// ``` +// +// Where: +// +// * `freq`: fundamental frequency of the model +// * `strikePosition`: strike position (0 for the middle of the membrane and +// 1 for the edge) +// * `strikeSharpness`: sharpness of the strike (0-1, default: 0.5) +// * `gain`: gain of the strike +// * `trigger`: trigger signal (0: off, 1: on) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// djembe_test = pm.djembe(110, 0.3, 0.5, 0.8, button("pm.djembe/gate")); +// ``` +//---------------------------------- +djembe(freq,strikePosition,strikeSharpness,gain,trigger) = +strike(strikePosition,strikeSharpness,gain,trigger) : djembeModel(freq); + +//-------`(pm.)djembe_ui_MIDI`---------- +// Simple MIDI controllable djembe physical model with built-in UI. +// +// #### Usage +// +// ``` +// djembe_ui_MIDI : _ +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// djembe_ui_MIDI_test = pm.djembe_ui_MIDI; +// ``` +//---------------------------------- +djembe_ui_MIDI = +djembe(freq,strikePosition,strikeSharpness,gain,gate)*outGain +with { + freq = hslider("v:djembe/h:[0]midi/[0]freq[style:knob]",60,50,100,0.01); + gain = hslider("v:djembe/h:[0]midi/[2]gain[style:knob]",1,0,1,0.01); + strikePosition = hslider("v:djembe/h:[1]otherParams/[0]strikePosition + [midi:ctrl 1][style:knob]",0.5,0,1,0.01); + strikeSharpness = hslider("v:djembe/h:[1]otherParams/[1]strikeSharpness[style:knob]",0.5,0.01,5,0.01); + outGain = hslider("v:djembe/h:[1]otherParams/[2]outGain + [style:knob]",1,0,1,0.01); + gate = button("v:djembe/[3]gate"); +}; + + +//-------`(pm.)marimbaBarModel`---------- +// Generic marimba tone bar modal model. +// +// This model was generated using +// `mesh2faust` from a 3D CAD model of a marimba tone bar +// (`libraries/modalmodels/marimbaBar`). The corresponding CAD model is that +// of a C2 tone bar (original fundamental frequency: ~65Hz). While +// `marimbaBarModel` allows to translate the harmonic content of the generated +// sound by providing a frequency (`freq`), mode transposition has limits and +// the model will sound less and less like a marimba tone bar as it +// diverges from C2. To make an accurate model of a marimba, we'd want to have +// an independent model for each bar... +// +// This model contains 5 excitation positions going linearly from the center +// bottom to the center top of the bar. Obviously, a model with more excitation +// position could be regenerated using `mesh2faust`. +// +// #### Usage +// +// ``` +// excitation : marimbaBarModel(freq,exPos,t60,t60DecayRatio,t60DecaySlope) +// ``` +// +// Where: +// +// * `excitation`: excitation signal +// * `freq`: fundamental frequency of the bar +// * `exPos`: excitation position (0-4) +// * `t60`: T60 in seconds (recommended value: 0.1) +// * `t60DecayRatio`: T60 decay ratio (recommended value: 1) +// * `t60DecaySlope`: T60 decay slope (recommended value: 5) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// marimbaBarModel_test = os.impulse : pm.marimbaBarModel(220, 2, 0.1, 1, 5); +// ``` +//---------------------------------- +marimbaBarModel(freq,exPos,t60,t60DecayRatio,t60DecaySlope) = _ <: par(i,nModes,modeFilter(modesFreqs(i),modesT60s(i),modesGains(int(exPos),i))) :> /(nModes) +with { + nModes = 50; + nExPos = 5; + modesFreqRatios(n) = ba.take(n+1,(1,3.31356,3.83469,8.06313,9.44778,14.1169,18.384,21.0102,26.1775,28.9944,37.0728,37.8703,40.0634,47.6439,51.019,52.43,58.286,63.5486,65.3628,66.9587,74.5301,78.692,80.8375,89.978,92.9661,95.1914,97.4807,110.62,112.069,113.826,119.356,127.045,129.982,132.259,133.477,144.549,149.438,152.033,153.166,155.597,158.183,168.105,171.863,174.464,178.937,181.482,185.398,190.369,192.19,195.505)); + modesFreqs(i) = freq*modesFreqRatios(i); + modesGains(p,n) = waveform{1,0.776725,0.625723,0.855223,0.760159,0.698373,0.768011,0.641127,0.244034,0.707754,0.634013,0.247527,0.660849,0.450396,0.567783,0.106361,0.716814,0.66392,0.291208,0.310599,0.801495,0.635292,0.307435,0.874124,0.497668,0.487088,0.459115,0.733455,0.541818,0.441318,0.31392,0.40309,0.685353,0.60314,0.400552,0.453511,0.634386,0.291547,0.131605,0.368507,0.839907,0.60216,0.288296,0.57967,0.0242493,0.262746,0.368588,0.890284,0.408963,0.556072,0.884427,0.83211,0.612015,0.757176,0.919477,1,0.827963,0.89241,0.0357408,0.480789,0.752872,0.0546301,0.235937,0.362938,0.444472,0.101751,0.703418,0.453136,0.316629,0.490394,0.982508,0.551622,0.602009,0.666957,0.77683,0.905662,0.0987197,0.402968,0.829452,0.307645,0.64048,0.983971,0.584205,0.650365,0.334447,0.58357,0.540191,0.672534,0.245712,0.687298,0.883058,0.79295,0.600619,0.572682,0.122612,0.388248,0.290658,0.380255,0.290967,0.567819,0.0737721,0.42099,0.0786578,0.393995,0.268983,0.260614,0.494086,0.238026,0.0987824,0.277879,0.440563,0.0770212,0.450591,0.128137,0.0368275,0.128699,0.329605,0.374512,0.36359,0.272594,0.379052,0.305241,0.0741129,0.345728,0.29935,0.221284,0.0261391,0.293202,0.361885,0.11433,0.239005,0.434156,0.329583,0.21946,0.284175,0.198555,0.431976,0.302985,1,0.146221,0.140701,0.264243,0.185997,0.426322,0.30478,0.34399,0.19543,0.386955,0.1876,0.172812,0.0434115,0.303761,0.069454,0.453943,0.832451,0.317817,0.940601,1,0.180658,0.737921,0.832297,0.402352,0.126786,0.594398,0.485455,0.32447,0.365102,0.777922,0.588272,0.401353,0.610735,0.158693,0.0746072,0.825099,0.925459,0.65377,0.260792,0.719384,0.559908,0.37259,0.360035,0.622939,0.210271,0.444595,0.311286,0.464309,0.557231,0.52408,0.0701056,0.320749,0.19446,0.727609,0.522062,0.394004,0.235035,0.395646,0.494796,0.517318,0.109752,0.692849,0.00632009,0.0207583,0.00306107,0.0637191,0.081661,0.03511,0.127814,0.202294,0.0764145,0.263127,0.400199,0.267278,0.633385,1,0.739902,0.413763,0.41811,0.612715,0.672374,0.339674,0.21172,0.459645,0.1025,0.32589,0.148154,0.265442,0.0974305,0.286438,0.275213,0.109111,0.575089,0.370283,0.29411,0.259826,0.0648719,0.583418,0.282663,0.182004,0.117421,0.417727,0.16965,0.24853,0.122819,0.185486,0.0433618,0.373849,0.252768,0.195103,0.0927835,0.166543},int(p*nModes+n) : rdtable : select2(modesFreqs(n)<(ma.SR/2-1),0); + modesT60s(i) = t60*pow(1-(modesFreqRatios(i)/195.955)*t60DecayRatio,t60DecaySlope); +}; + + +//-------`(pm.)marimbaResTube`---------- +// Simple marimba resonance tube. +// +// #### Usage +// +// ``` +// marimbaResTube(tubeLength,excitation) +// ``` +// +// Where: +// +// * `tubeLength`: the length of the tube in meters +// * `excitation`: the excitation signal (audio in) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// marimbaResTube_test = os.impulse : pm.marimbaResTube(0.5); +// ``` +//---------------------------------- +marimbaResTube(tubeLength,excitation) = endChain(tubeChain) +with { + maxTubeLength = maxLength; + lengthTuning = 0.04; + tunedLength = tubeLength-lengthTuning; + endTubeReflexion = si.smooth(0.95)*0.99; + tubeChain = + chain( + in(excitation) : + terminations(endTubeReflexion, + openTube(maxTubeLength,tunedLength), + endTubeReflexion) : + out + ); +}; + + +//-------`(pm.)marimbaModel`---------- +// Simple marimba physical model implementing a single tone bar connected to +// tube. This model is scalable and can be adapted to any size of bar/tube +// (see [`marimbaBarModel`](#marimbabarmodel) to know more about the +// limitations of this type of system). +// +// #### Usage +// +// ``` +// excitation : marimbaModel(freq,exPos) : _ +// ``` +// +// Where: +// +// * `excitation`: the excitation signal +// * `freq`: the frequency of the bar/tube couple +// * `exPos`: excitation position (0-4) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// marimbaModel_test = os.impulse : pm.marimbaModel(220, 2); +// ``` +//---------------------------------- +marimbaModel(freq,exPos) = +marimbaBarModel(freq,exPos,maxT60,T60Decay,T60Slope) : marimbaResTube(resTubeLength) +with { + resTubeLength = freq : f2l; + maxT60 = 0.1; + T60Decay = 1; + T60Slope = 5; +}; + + +//-------`(pm.)marimba`---------- +// Simple marimba physical model implementing a single tone bar connected to +// tube. This model is scalable and can be adapted to any size of bar/tube +// (see [`marimbaBarModel`](#marimbabarmodel) to know more about the +// limitations of this type of system). +// +// This function also implements a virtual exciter to drive the model. +// +// #### Usage +// +// ``` +// marimba(freq,strikePosition,strikeCutoff,strikeSharpness,gain,trigger) : _ +// ``` +// +// Where: +// +// * `freq`: the frequency of the bar/tube couple +// * `strikePosition`: strike position (0-4) +// * `strikeCutoff`: cutoff frequency of the strike generator (recommended: ~7000 Hz) +// * `strikeSharpness`: sharpness of the strike (recommended: ~0.25) +// * `gain`: gain of the strike (0-1) +// * `trigger`: signal (0: off, 1: on) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// marimba_test = pm.marimba(220, 0.4, 1, 0.5, 0.8, button("pm.marimba/gate")); +// ``` +//---------------------------------- +marimba(freq,strikePosition,strikeCutoff,strikeSharpness,gain,trigger) = +strikeModel(10,strikeCutoff,strikeSharpness,gain,trigger) : +marimbaModel(freq,strikePosition); + + +//-------`(pm.)marimba_ui_MIDI`---------- +// Simple MIDI controllable marimba physical model with built-in UI +// implementing a single tone bar connected to +// tube. This model is scalable and can be adapted to any size of bar/tube +// (see [`marimbaBarModel`](#marimbabarmodel) to know more about the +// limitations of this type of system). +// +// #### Usage +// +// ``` +// marimba_ui_MIDI : _ +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// marimba_ui_MIDI_test = pm.marimba_ui_MIDI; +// ``` +//---------------------------------- +marimba_ui_MIDI = +marimba(freq,strikePosition,strikeCutoff,strikeSharpness,gain,gate)*outGain +with { + freq = hslider("v:marimba/h:[0]midi/[0]freq[style:knob]",440,50,1000,0.01); + gain = hslider("v:marimba/h:[0]midi/[2]gain[style:knob]",1,0,1,0.01); + strikePosition = nentry("v:marimba/h:[1]otherParams/[0]strikePosition + [midi:ctrl 1]",0,0,4,1); + strikeCutoff = hslider("v:marimba/h:[1]otherParams/[1]strikeCutOff + [midi:ctrl 1][style:knob]",6500,20,20000,1); + strikeSharpness = hslider("v:marimba/h:[1]otherParams/[2]strikeSharpness + [style:knob]",0.5,0.01,5,0.01); + outGain = hslider("v:marimba/h:[1]otherParams/[2]outGain + [style:knob]",0.8,0,1,0.01); + gate = button("v:marimba/[3]gate"); +}; + + +//-------`(pm.)churchBellModel`---------- +// Generic church bell modal model generated by `mesh2faust` from +// `libraries/modalmodels/churchBell`. +// +// Modeled after T. Rossing and R. Perrin, Vibrations of Bells, Applied +// Acoustics 2, 1987. +// +// Model height is 301 mm. +// +// This model contains 7 excitation positions going linearly from the +// bottom to the top of the bell. Obviously, a model with more excitation +// position could be regenerated using `mesh2faust`. +// +// #### Usage +// +// ``` +// excitation : churchBellModel(nModes,exPos,t60,t60DecayRatio,t60DecaySlope) +// ``` +// +// Where: +// +// * `excitation`: the excitation signal +// * `nModes`: number of synthesized modes (max: 50) +// * `exPos`: excitation position (0-6) +// * `t60`: T60 in seconds (recommended value: 0.1) +// * `t60DecayRatio`: T60 decay ratio (recommended value: 1) +// * `t60DecaySlope`: T60 decay slope (recommended value: 5) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// churchBellModel_test = os.impulse : pm.churchBellModel(50, 0, 30, 1, 2.5); +// ``` +//---------------------------------- +churchBellModel(nModes,exPos,t60,t60DecayRatio,t60DecaySlope) = _ <: par(i,nModes,modeFilter(modesFreqs(i),modesT60s(i),modesGains(int(exPos),i))) :> /(nModes) +with { + nExPos = 7; + modesFreqs(n) = ba.take(n+1,(451.918,455,864.643,871.402,1072.47,1073.98,1292.23,1292.48,1504.6,1532.41,1646.2,1647,1677.83,1678.13,1866.63,1882.08,1985.2,1989.87,2114.93,2356.81,2444.32,2446.22,2528.77,2530.92,2668.86,2669.63,2738.06,2749.03,2750.53,2753.11,2827.19,2842.32,2992.56,2996.84,3172.61,3330.79,3390.33,3403.1,3516.43,3538.54,3582.79,3583.82,3730.04,3739.35,3758.66,3903.78,3942.59,3981.74,3983.25,4033.97)); + modesGains(p,n) = waveform{0.525285,0.814174,0.483261,0.296745,0.975056,0.472244,0.409501,0.425364,0.687559,0.288381,0.309285,0.123054,0.286333,0.576706,0.908322,0.626974,0.0801852,0.309835,0.45143,0.132845,0.470635,0.417008,0.265112,0.0752802,0.46347,0.47181,0.275324,0.547027,0.512519,0.394078,0.595404,0.941306,0.392501,0.381435,0.391232,0.118924,0.339495,0.101421,0.241755,0.0873255,0.378944,0.637705,0.171946,0.149859,0.23329,0.54181,1,0.115554,0.244172,0.574329,0.606171,0.938397,0.392555,0.277359,0.86857,0.432489,0.408856,0.407932,0.299815,0.256659,0.549572,0.406347,0.312331,0.627578,0.670167,0.524648,0.406926,0.637524,0.555837,1,0.818979,0.705347,0.678141,0.427382,0.674404,0.636105,0.643635,0.699136,0.836201,0.613085,0.319019,0.725259,0.545519,0.479861,0.49836,0.488654,0.861672,0.314287,0.671052,0.531905,0.421781,0.815066,0.772032,0.488722,0.0896674,0.291286,0.65873,0.635632,0.679357,0.459497,0.36024,0.582289,0.650605,0.49095,0.38191,0.157261,0.479624,0.477491,0.174435,0.013094,0.879113,0.608069,0.268877,0.604479,0.24513,0.170507,0.292888,0.545849,0.476646,0.922316,0.669192,0.578094,0.578797,0.311396,0.60121,0.549955,1,0.66573,0.980115,0.537848,0.0740531,0.252472,0.25575,0.223974,0.0865103,0.138209,0.198623,0.0453034,0.432453,0.292407,0.39441,0.857659,0.271668,0.201545,0.583994,0.0602378,0.190618,0.849505,0.975542,0.17314,0.206472,0.344793,0.761011,0.558125,0.117245,0.0338485,0.337597,0.336646,0.174253,0.23017,0.934873,0.593647,0.393225,0.683704,0.0566093,0.0405012,0.148972,0.338722,0.283419,0.394007,0.237475,0.269964,0.428313,0.177499,0.462585,0.443963,0.981793,0.408239,0.676527,0.402865,0.0163303,0.0515114,0.34139,0.311135,0.613276,0.805884,0.95329,0.406091,0.578705,0.386785,0.434103,0.77526,1,0.635909,0.782052,0.0137183,0.0387725,0.618964,0.857071,0.131522,0.184988,0.299495,0.789212,0.603114,0.0704989,0.0129339,0.252481,0.254121,0.189206,0.357713,0.950308,0.552573,0.466454,0.77736,0.0307886,0.0251943,0.378886,0.740187,0.247637,0.235201,0.493045,0.51785,0.883954,0.429473,0.409433,0.415266,0.940198,0.282334,0.43789,0.375385,0.0157366,0.0171763,0.485555,0.461015,0.858958,0.907991,0.935191,0.37551,1,0.585493,0.269981,0.423053,0.666067,0.43509,0.790252,0.00889586,0.0208844,0.449735,0.790808,0.159856,0.089599,0.161546,0.528168,0.380642,0.0206276,0.00726426,0.0315352,0.0315841,0.197649,0.475057,0.517232,0.360922,0.421204,0.63134,0.00952139,0.016105,0.499615,0.922958,0.214983,0.0655141,0.50397,0.514848,1,0.483619,0.254027,0.228372,0.436105,0.233125,0.152242,0.279513,0.00906739,0.0132332,0.451257,0.388566,0.737226,0.479378,0.233037,0.103767,0.845609,0.644127,0.261359,0.371457,0.527229,0.381373,0.334492,0.00833749,0.00861982,0.255919,0.254197,0.0872333,0.0461512,0.113018,0.345986,0.236344,0.01078,0.00816506,0.405181,0.38718,0.343681,0.816493,0.259082,0.211906,0.432455,0.696886,0.00576224,0.013131,0.455969,0.811609,0.426544,0.128489,0.215937,0.233934,0.72307,0.351623,0.394231,0.323766,0.168803,0.276932,0.264684,0.227703,0.00680935,0.0170703,0.603018,0.476461,0.585925,0.71696,1,0.576527,0.475524,0.447322,0.356902,0.597573,0.697246,0.505333,0.285421,0.0147193,0.0141618,0.136188,0.0336537,0.216437},int(p*nModes+n) : rdtable; + modesT60s(i) = t60*pow(1-(modesFreqs(i)/4035.44)*t60DecayRatio,t60DecaySlope); +}; + + +//-------`(pm.)churchBell`---------- +// Generic church bell modal model. +// +// Modeled after T. Rossing and R. Perrin, Vibrations of Bells, Applied +// Acoustics 2, 1987. +// +// Model height is 301 mm. +// +// This model contains 7 excitation positions going linearly from the +// bottom to the top of the bell. Obviously, a model with more excitation +// position could be regenerated using `mesh2faust`. +// +// This function also implements a virtual exciter to drive the model. +// +// #### Usage +// +// ``` +// churchBell(strikePosition,strikeCutoff,strikeSharpness,gain,trigger) : _ +// ``` +// +// Where: +// +// * `strikePosition`: strike position (0-6) +// * `strikeCutoff`: cutoff frequency of the strike generator (recommended: ~7000 Hz) +// * `strikeSharpness`: sharpness of the strike (recommended: ~0.25) +// * `gain`: gain of the strike (0-1) +// * `trigger`: signal (0: off, 1: on) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// churchBell_test = pm.churchBell(0.4, 2000, 0.5, 0.8, button("pm.churchBell/gate")); +// ``` +//---------------------------------- +churchBell(strikePosition,strikeCutoff,strikeSharpness,gain,trigger) = +strikeModel(10,strikeCutoff,strikeSharpness,gain,trigger) : +churchBellModel(50,strikePosition,30,1,2.5); + + +//-------`(pm.)churchBell_ui`---------- +// Church bell physical model based on [`churchBell`](#pmchurchbell) with +// built-in UI. +// +// #### Usage +// +// ``` +// churchBell_ui : _ +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// churchBell_ui_test = pm.churchBell_ui; +// ``` +//---------------------------------- +churchBell_ui = +churchBell(strikePosition,strikeCutoff,strikeSharpness,gain,gate) +with { + strikePosition = nentry("v:churchBell/[0]strikePosition", + 0,0,4,1); + strikeCutoff = hslider("v:churchBell/[1]strikeCutOff", + 6500,20,20000,1); + strikeSharpness = hslider("v:churchBell/[2]strikeSharpness", + 0.5,0.01,5,0.01); + gain = hslider("v:churchBell/[3]gain",1,0,1,0.01); + gate = button("v:churchBell/[4]gate"); +}; + + +//-------`(pm.)englishBellModel`---------- +// English church bell modal model generated by `mesh2faust` from +// `libraries/modalmodels/englishBell`. +// +// Modeled after D.Bartocha and Baron, Influence of Tin Bronze Melting and +// Pouring Parameters on Its Properties and Bell' Tone, Archives of Foundry +// Engineering, 2016. +// +// Model height is 1 m. +// +// This model contains 7 excitation positions going linearly from the +// bottom to the top of the bell. Obviously, a model with more excitation +// position could be regenerated using `mesh2faust`. +// +// #### Usage +// +// ``` +// excitation : englishBellModel(nModes,exPos,t60,t60DecayRatio,t60DecaySlope) +// ``` +// +// Where: +// +// * `excitation`: the excitation signal +// * `nModes`: number of synthesized modes (max: 50) +// * `exPos`: excitation position (0-6) +// * `t60`: T60 in seconds (recommended value: 0.1) +// * `t60DecayRatio`: T60 decay ratio (recommended value: 1) +// * `t60DecaySlope`: T60 decay slope (recommended value: 5) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// englishBellModel_test = os.impulse : pm.englishBellModel(50, 0, 30, 1, 3); +// ``` +//---------------------------------- +englishBellModel(nModes,exPos,t60,t60DecayRatio,t60DecaySlope) = _ <: par(i,nModes,modeFilter(modesFreqs(i),modesT60s(i),modesGains(int(exPos),i))) :> /(nModes) +with { + nExPos = 7; + modesFreqs(n) = ba.take(n+1,(259.429,261.855,493.331,494.472,603.048,604.742,724.566,724.777,786.985,931.893,932.846,943.429,946.533,947.109,952.782,1024.24,1034.86,1211.59,1212.21,1236.28,1340.21,1341.15,1452.63,1453.38,1453.77,1457.45,1459.23,1460.7,1482.81,1483.04,1519.55,1547.27,1565.95,1576.95,1697.47,1826.61,1892.56,1896.09,1899.86,1908.29,2003.95,2005.07,2005.89,2005.99,2067.42,2082.42,2086.81,2120.56,2129.79,2133.23)); + modesGains(p,n) = waveform{0.694274,0.471698,0.17239,0.585446,0.397986,0.919579,0.531947,0.100205,0.639469,0.672209,0.144345,0.416595,0.124108,0.380591,0.256578,0.646031,0.8522,0.0224376,0.382762,0.143925,0.368691,0.430556,0.32318,0.142956,0.274521,0.713824,0.442794,0.352473,0.247756,0.415152,1,0.401869,0.197981,0.27951,0.210249,0.36974,0.369227,0.155769,0.272368,0.335712,0.31645,0.714103,0.285781,0.22006,0.827704,0.206342,0.180177,0.311478,0.197607,0.575475,0.473311,0.587232,0.50288,0.337308,0.304514,0.429039,0.351522,0.341373,0.175081,0.561748,0.439172,0.323164,0.540518,0.536523,0.0743865,0.213417,0.358012,0.474494,0.310274,0.839413,0.241372,0.202343,0.480634,0.995685,0.37374,0.133998,0.520674,0.207514,1,0.101239,0.279536,0.185985,0.436293,0.62411,0.334519,0.283585,0.179317,0.353847,0.449545,0.574128,0.135172,0.538275,0.476424,0.832903,0.164198,0.188562,0.135978,0.390128,0.131045,0.312065,0.142139,0.0255901,0.266947,0.371607,0.0168435,0.0249468,0.508917,0.35441,0.283348,0.628155,0.292478,0.35835,0.342569,0.441237,0.886699,0.0174698,0.00641843,0.55532,0.880129,0.0306909,0.290081,0.248816,0.981736,0.324624,0.213676,0.432885,0.0981559,0.444149,0.395554,0.525069,0.0771308,0.0488804,0.591321,0.108044,0.443802,0.740318,0.599438,0.293093,1,0.141662,0.910031,0.226126,0.299702,0.341472,0.0568061,0.222494,0.918718,0.199478,0.21662,0.107759,0.692324,0.556336,0.281718,0.430832,0.341656,0.608095,0.342129,0.311312,0.229953,0.695087,0.0761489,0.349818,0.361706,0.577611,0.147797,0.327376,0.465715,0.342902,0.521381,0.836828,0.241112,0.284394,0.539316,0.143408,0.51702,1,0.236336,0.480333,0.676744,0.807582,0.468621,0.236953,0.411604,0.579251,0.425098,0.37599,0.461176,0.27653,0.462368,0.613004,0.666849,0.954715,0.161507,0.170433,0.290461,0.117303,0.365133,0.233794,0.194568,0.338874,0.523381,0.39835,0.447839,0.652891,0.15708,0.340354,0.44217,0.338764,0.184397,0.771607,0.160502,0.324487,0.477499,0.831519,0.0168764,0.154264,0.201865,0.237786,0.390066,0.880164,0.284234,0.162837,0.437557,0.227846,0.39934,1,0.158107,0.396903,0.513029,0.676457,0.204282,0.0895575,0.55541,0.732486,0.125062,0.171229,0.081646,0.0541394,0.39616,0.454288,0.466863,0.928842,0.155393,0.26285,0.113453,0.133163,0.302021,0.612616,0.228392,0.195617,0.287236,0.198762,0.499884,0.809139,0.00929925,0.0840299,0.286446,0.182112,0.186044,0.754138,0.279556,0.266948,0.494291,1,0.321284,0.0230981,0.0375537,0.262531,0.602204,0.489925,0.633077,0.407409,0.422256,0.0910641,0.357935,0.550179,0.106192,0.132366,0.376231,0.351151,0.0420302,0.0372183,0.696335,0.840821,0.855235,0.249248,0.860011,0.340481,0.28558,0.363039,0.324122,0.515699,0.228131,0.172592,0.0188723,0.168243,0.995105,0.741759,0.107093,0.070349,0.136636,0.0780455,0.315748,0.502201,0.0190422,0.033914,0.225724,0.160236,0.184101,0.564203,0.247317,0.284225,0.327153,0.651443,0.593471,0.0163899,0.0141048,0.52113,1,0.105109,0.530936,0.363724,0.924809,0.25041,0.69288,0.414122,0.0793658,0.347813,0.441731,0.476428,0.0808834,0.0581638,0.557239,0.556515,0.746084,0.582228,0.177231,0.158425,0.850903,0.755271,0.673614,0.31706,0.0515386,0.201898,0.0577938,0.232031,0.734988,0.141594,0.267062,0.145807},int(p*nModes+n) : rdtable; + modesT60s(i) = t60*pow(1-(modesFreqs(i)/2137.04)*t60DecayRatio,t60DecaySlope); +}; + + +//-------`(pm.)englishBell`---------- +// English church bell modal model. +// +// Modeled after D.Bartocha and Baron, Influence of Tin Bronze Melting and +// Pouring Parameters on Its Properties and Bell' Tone, Archives of Foundry +// Engineering, 2016. +// +// Model height is 1 m. +// +// This model contains 7 excitation positions going linearly from the +// bottom to the top of the bell. Obviously, a model with more excitation +// position could be regenerated using `mesh2faust`. +// +// This function also implements a virtual exciter to drive the model. +// +// #### Usage +// +// ``` +// englishBell(strikePosition,strikeCutoff,strikeSharpness,gain,trigger) : _ +// ``` +// +// Where: +// +// * `strikePosition`: strike position (0-6) +// * `strikeCutoff`: cutoff frequency of the strike generator (recommended: ~7000 Hz) +// * `strikeSharpness`: sharpness of the strike (recommended: ~0.25) +// * `gain`: gain of the strike (0-1) +// * `trigger`: signal (0: off, 1: on) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// englishBell_test = pm.englishBell(0.4, 2000, 0.5, 0.8, button("pm.englishBell/gate")); +// ``` +//---------------------------------- +englishBell(strikePosition,strikeCutoff,strikeSharpness,gain,trigger) = +strikeModel(10,strikeCutoff,strikeSharpness,gain,trigger) : +englishBellModel(50,strikePosition,30,1,3); + + +//-------`(pm.)englishBell_ui`---------- +// English church bell physical model based on [`englishBell`](#pmenglishbell) with +// built-in UI. +// +// #### Usage +// +// ``` +// englishBell_ui : _ +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// englishBell_ui_test = pm.englishBell_ui; +// ``` +//---------------------------------- +englishBell_ui = +englishBell(strikePosition,strikeCutoff,strikeSharpness,gain,gate) +with { + strikePosition = nentry("v:englishBell/[0]strikePosition",0,0,6,1); + strikeCutoff = hslider("v:englishBell/[1]strikeCutOff",6500,20,20000,1); + strikeSharpness = hslider("v:englishBell/[2]strikeSharpness",0.5,0.01,5,0.01); + gain = hslider("v:englishBell/[3]gain",1,0,1,0.01); + gate = button("v:englishBell/[4]gate"); +}; + + +//-------`(pm.)frenchBellModel`---------- +// French church bell modal model generated by `mesh2faust` from +// `libraries/modalmodels/frenchBell`. +// +// Modeled after D.Bartocha and Baron, Influence of Tin Bronze Melting and +// Pouring Parameters on Its Properties and Bell' Tone, Archives of Foundry +// Engineering, 2016. +// +// Model height is 1 m. +// +// This model contains 7 excitation positions going linearly from the +// bottom to the top of the bell. Obviously, a model with more excitation +// position could be regenerated using `mesh2faust`. +// +// #### Usage +// +// ``` +// excitation : frenchBellModel(nModes,exPos,t60,t60DecayRatio,t60DecaySlope) +// ``` +// +// Where: +// +// * `excitation`: the excitation signal +// * `nModes`: number of synthesized modes (max: 50) +// * `exPos`: excitation position (0-6) +// * `t60`: T60 in seconds (recommended value: 0.1) +// * `t60DecayRatio`: T60 decay ratio (recommended value: 1) +// * `t60DecaySlope`: T60 decay slope (recommended value: 5) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// frenchBellModel_test = os.impulse : pm.frenchBellModel(50, 0, 30, 1, 3); +// ``` +//---------------------------------- +frenchBellModel(nModes,exPos,t60,t60DecayRatio,t60DecaySlope) = _ <: par(i,nModes,modeFilter(modesFreqs(i),modesT60s(i),modesGains(int(exPos),i))) :> /(nModes) +with { + nExPos = 7; + modesFreqs(n) = ba.take(n+1,(439.077,440.305,606.452,611.776,709.617,709.877,856.966,899.051,1064.37,1064.75,1073.03,1074.43,1076.58,1145.42,1148.9,1197.09,1199.91,1387.7,1400.16,1402.37,1512.06,1513.06,1592.47,1593.35,1663.45,1666.47,1691.32,1693.77,1804.83,1808.84,1820.07,1847.14,1910.73,1927.7,2035.07,2038.73,2054.66,2055.67,2078.69,2091.76,2115.78,2127.01,2209.86,2214.05,2296.15,2298.08,2298.97,2307.62,2404.44,2408.99)); + modesGains(p,n) = waveform{0.97289,0.542393,0.495832,0.897966,0.552367,0.557895,0.614213,0.353694,0.436039,0.441024,0.674913,0.566754,0.755008,0.69903,0.164398,0.91004,0.628373,0.201718,0.429517,0.503715,0.871174,0.106886,0.761173,0.673602,0.291937,0.58859,0.31528,0.413081,0.274464,0.494062,0.696121,0.61201,0.382757,0.995113,0.228806,0.198449,0.595847,0.306263,0.252397,0.0883567,0.236086,1,0.245278,0.379388,0.198824,0.548892,0.492764,0.420871,0.794637,0.605634,1,0.604159,0.399841,0.799347,0.507187,0.50981,0.477383,0.310226,0.426976,0.437623,0.735712,0.630728,0.625785,0.651168,0.277738,0.850858,0.578079,0.645354,0.3837,0.370598,0.782542,0.181325,0.614391,0.740684,0.342441,0.586186,0.286909,0.405197,0.259215,0.566983,0.748219,0.655898,0.36826,0.940814,0.336157,0.413702,0.561557,0.402176,0.117698,0.329369,0.254571,0.870706,0.260981,0.274122,0.206247,0.6453,0.400758,0.363622,0.636834,0.584566,0.975603,0.616937,0.295401,0.650447,0.464221,0.465057,0.312467,0.238358,0.383695,0.399674,0.753912,0.662012,0.504268,0.599248,0.378665,0.725363,0.493214,1,0.332836,0.265889,0.674073,0.320401,0.440018,0.769782,0.316419,0.529968,0.380509,0.578676,0.249013,0.591384,0.761717,0.687057,0.324437,0.818864,0.505369,0.672485,0.461783,0.426198,0.0678875,0.435329,0.347955,0.708394,0.293322,0.328986,0.258254,0.893512,0.320131,0.433554,0.459302,0.542213,0.817241,0.51623,0.205302,0.467354,0.388683,0.388216,0.171262,0.150865,0.29172,0.311414,0.658876,0.570647,0.383619,0.502455,0.364114,0.532313,0.352989,1,0.261984,0.219591,0.544031,0.337199,0.279173,0.668303,0.208439,0.39923,0.418674,0.648618,0.234133,0.504729,0.645347,0.572851,0.232828,0.614292,0.485272,0.666264,0.31657,0.320355,0.191421,0.340131,0.342069,0.538371,0.281131,0.393115,0.251394,0.890725,0.310644,0.5037,0.29909,0.442478,0.733128,0.455217,0.199322,0.315699,0.375856,0.37649,0.029145,0.0200283,0.279578,0.3168,0.655957,0.546843,0.349666,0.470249,0.353765,0.286794,0.180185,1,0.210831,0.280133,0.535853,0.376488,0.15367,0.634745,0.0510449,0.485575,0.593111,0.917884,0.380477,0.422925,0.599373,0.311421,0.135654,0.359954,0.295748,0.474439,0.353339,0.116743,0.454313,0.112858,0.35931,0.483897,0.301608,0.577342,0.262663,0.794986,0.54958,0.808086,0.152511,0.439591,0.535941,0.308018,0.419837,0.579191,0.250428,0.25212,0.10286,0.288332,0.599679,0.665108,0.636285,0.495234,0.251613,0.208527,0.0939072,0.458415,0.318952,0.23535,0.215189,0.313412,0.0472787,0.0386893,0.0863359,0.222346,0.361511,0.997037,0.238509,0.38214,1,0.203554,0.472087,0.509015,0.206371,0.441013,0.794008,0.971623,0.796384,0.55043,0.68778,0.554298,0.0436545,0.0595577,0.214685,0.58147,0.27732,0.368466,0.121382,0.152739,0.0782244,0.190497,0.316269,0.180456,0.405196,0.518716,0.159365,0.165808,0.194372,0.614764,0.553415,0.644794,0.44178,0.44149,0.221588,1,0.579371,0.606339,0.529167,0.0214475,0.417046,0.663152,0.894841,0.475752,0.168289,0.46859,0.304604,0.666369,0.308337,0.295091,0.768945,0.350911,0.49068,0.516584,0.400117,0.820687,0.545486,0.709357,0.509759,0.472006,0.152455,0.981265,0.459134,0.698666,0.247154,0.623253,0.255508,0.830815,0.088709,0.126082,0.0770623,0.263328},int(p*nModes+n) : rdtable; + modesT60s(i) = t60*pow(1-(modesFreqs(i)/2555.3)*t60DecayRatio,t60DecaySlope); +}; + + +//-------`(pm.)frenchBell`---------- +// French church bell modal model. +// +// Modeled after D.Bartocha and Baron, Influence of Tin Bronze Melting and +// Pouring Parameters on Its Properties and Bell' Tone, Archives of Foundry +// Engineering, 2016. +// +// Model height is 1 m. +// +// This model contains 7 excitation positions going linearly from the +// bottom to the top of the bell. Obviously, a model with more excitation +// position could be regenerated using `mesh2faust`. +// +// This function also implements a virtual exciter to drive the model. +// +// #### Usage +// +// ``` +//frenchBell(strikePosition,strikeCutoff,strikeSharpness,gain,trigger) : _ +// ``` +// +// Where: +// +// * `strikePosition`: strike position (0-6) +// * `strikeCutoff`: cutoff frequency of the strike generator (recommended: ~7000 Hz) +// * `strikeSharpness`: sharpness of the strike (recommended: ~0.25) +// * `gain`: gain of the strike (0-1) +// * `trigger`: signal (0: off, 1: on) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// frenchBell_test = pm.frenchBell(0.4, 2000, 0.5, 0.8, button("pm.frenchBell/gate")); +// ``` +//---------------------------------- +frenchBell(strikePosition,strikeCutoff,strikeSharpness,gain,trigger) = +strikeModel(10,strikeCutoff,strikeSharpness,gain,trigger) : +frenchBellModel(50,strikePosition,30,1,3); + + +//-------`(pm.)frenchBell_ui`---------- +// French church bell physical model based on [`frenchBell`](#pmfrenchbell) with +// built-in UI. +// +// #### Usage +// +// ``` +// frenchBell_ui : _ +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// frenchBell_ui_test = pm.frenchBell_ui; +// ``` +//---------------------------------- +frenchBell_ui = +frenchBell(strikePosition,strikeCutoff,strikeSharpness,gain,gate) +with { + strikePosition = nentry("v:frenchBell/[0]strikePosition",0,0,6,1); + strikeCutoff = hslider("v:frenchBell/[1]strikeCutOff",6500,20,20000,1); + strikeSharpness = hslider("v:frenchBell/[2]strikeSharpness",0.5,0.01,5,0.01); + gain = hslider("v:frenchBell/[3]gain",1,0,1,0.01); + gate = button("v:frenchBell/[4]gate"); +}; + + +//-------`(pm.)germanBellModel`---------- +// German church bell modal model generated by `mesh2faust` from +// `libraries/modalmodels/germanBell`. +// +// Modeled after D.Bartocha and Baron, Influence of Tin Bronze Melting and +// Pouring Parameters on Its Properties and Bell' Tone, Archives of Foundry +// Engineering, 2016. +// +// Model height is 1 m. +// +// This model contains 7 excitation positions going linearly from the +// bottom to the top of the bell. Obviously, a model with more excitation +// position could be regenerated using `mesh2faust`. +// +// #### Usage +// +// ``` +// excitation : germanBellModel(nModes,exPos,t60,t60DecayRatio,t60DecaySlope) +// ``` +// +// Where: +// +// * `excitation`: the excitation signal +// * `nModes`: number of synthesized modes (max: 50) +// * `exPos`: excitation position (0-6) +// * `t60`: T60 in seconds (recommended value: 0.1) +// * `t60DecayRatio`: T60 decay ratio (recommended value: 1) +// * `t60DecaySlope`: T60 decay slope (recommended value: 5) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// germanBellModel_test = os.impulse : pm.germanBellModel(50, 0, 30, 1, 2.5); +// ``` +//---------------------------------- +germanBellModel(nModes,exPos,t60,t60DecayRatio,t60DecaySlope) = _ <: par(i,nModes,modeFilter(modesFreqs(i),modesT60s(i),modesGains(int(exPos),i))) :> /(nModes) +with { + nExPos = 7; + modesFreqs(n) = ba.take(n+1,(238.909,240.235,406.25,408.214,561.105,562.923,749.632,749.88,781.389,800.68,801.547,884.486,942.52,942.715,958.571,960.581,1016.87,1018.29,1022.29,1206.2,1206.87,1213.93,1222.77,1231.68,1345.65,1355.18,1356.55,1357.3,1389.29,1391.11,1420.17,1424.05,1424.31,1426.54,1582.3,1631.07,1638.15,1720.28,1726.7,1803.79,1827.08,1829.44,1922.87,1926.94,1940.96,1944.47,1948.2,1969.86,1992.24,2011.85)); + modesGains(p,n) = waveform{0.761411,0.797803,0.586057,0.225039,0.926354,0.813875,0.529871,0.158915,0.662516,0.30841,0.0454785,0.556082,0.784713,0.213035,0.956227,0.795165,0.313508,0.158531,0.301586,0.16832,0.281267,0.154237,0.217235,0.247239,0.522688,0.170303,0.320614,0.154857,0.414941,0.788364,0.713299,0.381592,0.707011,1,0.0106946,0.359763,0.0746156,0.431124,0.118053,0.52729,0.255303,0.646855,0.201145,0.919908,0.359389,0.253494,0.865695,0.0829263,0.222589,0.0415736,0.735774,0.769678,0.381416,0.197543,0.682389,0.614766,0.249525,0.289883,0.300319,0.443691,0.275272,0.370218,0.74879,0.161247,0.634353,0.498498,0.221988,0.350637,0.436817,0.436463,0.52508,0.842646,0.195324,0.224755,0.545681,0.353778,0.269044,0.327814,0.448952,0.852305,0.380503,1,0.458063,0.565058,0.354635,0.659529,0.449485,0.802014,0.283446,0.521563,0.374639,0.652112,0.181042,0.468394,0.430116,0.157207,0.414995,0.292737,0.487785,0.47768,0.481445,0.556988,0.561132,0.378265,0.291462,0.32325,0.482602,0.328248,0.196792,0.712254,0.389806,0.307751,0.792876,0.199098,0.288838,0.146811,0.0178444,0.394017,0.588212,0.489226,0.701486,0.940303,0.213191,0.0778845,0.474463,0.609972,0.16338,0.408376,0.330864,0.88999,0.0798101,1,0.167172,0.208727,0.227549,0.825903,0.531897,0.580946,0.215339,0.247319,0.268148,0.504088,0.160955,0.170316,0.230769,0.151191,0.0825031,0.141328,0.288079,0.499676,0.420355,0.487764,0.75371,0.492248,0.181364,0.20594,0.52497,0.325641,0.236827,0.931842,0.472981,0.312162,0.901032,0.270478,0.167112,0.0709698,0.166004,0.290745,0.425893,0.403633,0.581772,0.855694,0.0325587,0.0568359,0.241923,0.79931,0.181962,0.530283,0.41561,1,0.0291501,0.831155,0.119755,0.102188,0.132037,0.76603,0.442221,0.1749,0.142175,0.0140794,0.4375,0.85186,0.196836,0.0907522,0.551673,0.256528,0.0424377,0.490363,0.108178,0.503276,0.226584,0.312758,0.824079,0.48412,0.0347338,0.0619428,0.255097,0.145273,0.190359,0.995297,0.50342,0.217575,0.793975,0.357179,0.0409728,0.0187931,0.414458,0.15844,0.346233,0.0771673,0.175111,0.380567,0.497409,0.316164,0.488669,1,0.420657,0.442333,0.24706,0.796407,0.0104146,0.227079,0.10684,0.0289873,0.76757,0.0643122,0.0423098,0.715522,0.472117,0.392577,0.660433,0.803575,0.188653,0.0191653,0.873212,0.448719,0.0147128,0.618967,0.30718,0.345899,0.131394,0.193225,0.715283,0.40562,0.040637,0.0503336,0.0544331,0.0452023,0.152302,0.894549,0.443343,0.172071,0.647667,0.328993,0.0416014,0.0229488,0.551071,0.423544,0.862362,0.363526,0.769929,0.123452,0.710702,0.394895,0.556638,1,0.450925,0.422849,0.092187,0.413892,0.00995372,0.321146,0.160624,0.0300681,0.915385,0.4755,0.506951,0.387549,0.275591,0.468281,0.184776,0.186837,0.188195,0.0202785,0.697136,0.408862,0.0116935,0.349823,0.202301,0.461379,0.0559023,0.0582571,0.260608,0.181875,0.0271739,0.0249578,0.685089,0.470384,0.283194,0.33105,0.138349,0.338068,0.481992,0.178242,0.0155942,0.0110435,0.783771,0.442707,0.616478,0.381542,0.510892,0.045985,0.303119,0.0731909,0.547715,0.348941,0.149981,0.302158,0.284482,0.398177,0.00413049,0.180739,0.062839,0.0133459,0.347088,0.57637,0.240764,0.978481,0.452755,0.529742,0.340471,0.662282,0.444305,0.0429901,1,0.36194,0.0183372,0.626893,0.55285,0.384936},int(p*nModes+n) : rdtable; + modesT60s(i) = t60*pow(1-(modesFreqs(i)/2016.94)*t60DecayRatio,t60DecaySlope); +}; + + +//-------`(pm.)germanBell`---------- +// German church bell modal model. +// +// Modeled after D.Bartocha and Baron, Influence of Tin Bronze Melting and +// Pouring Parameters on Its Properties and Bell' Tone, Archives of Foundry +// Engineering, 2016. +// +// Model height is 1 m. +// +// This model contains 7 excitation positions going linearly from the +// bottom to the top of the bell. Obviously, a model with more excitation +// position could be regenerated using `mesh2faust`. +// +// This function also implements a virtual exciter to drive the model. +// +// #### Usage +// +// ``` +// germanBell(strikePosition,strikeCutoff,strikeSharpness,gain,trigger) : _ +// ``` +// +// Where: +// +// * `strikePosition`: strike position (0-6) +// * `strikeCutoff`: cutoff frequency of the strike generator (recommended: ~7000 Hz) +// * `strikeSharpness`: sharpness of the strike (recommended: ~0.25) +// * `gain`: gain of the strike (0-1) +// * `trigger`: signal (0: off, 1: on) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// germanBell_test = pm.germanBell(0.4, 2000, 0.5, 0.8, button("pm.germanBell/gate")); +// ``` +//---------------------------------- +germanBell(strikePosition,strikeCutoff,strikeSharpness,gain,trigger) = +strikeModel(10,strikeCutoff,strikeSharpness,gain,trigger) : +germanBellModel(50,strikePosition,30,1,2.5); + + +//-------`(pm.)germanBell_ui`---------- +// German church bell physical model based on [`germanBell`](#pmgermanbell) with +// built-in UI. +// +// #### Usage +// +// ``` +// germanBell_ui : _ +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// germanBell_ui_test = pm.germanBell_ui; +// ``` +//---------------------------------- +germanBell_ui = +germanBell(strikePosition,strikeCutoff,strikeSharpness,gain,gate) +with { + strikePosition = nentry("v:germanBell/[0]strikePosition",0,0,6,1); + strikeCutoff = hslider("v:germanBell/[1]strikeCutOff",6500,20,20000,1); + strikeSharpness = hslider("v:germanBell/[2]strikeSharpness",0.5,0.01,5,0.01); + gain = hslider("v:germanBell/[3]gain",1,0,1,0.01); + gate = button("v:germanBell/[4]gate"); +}; + + +//-------`(pm.)russianBellModel`---------- +// Russian church bell modal model generated by `mesh2faust` from +// `libraries/modalmodels/russianBell`. +// +// Modeled after D.Bartocha and Baron, Influence of Tin Bronze Melting and +// Pouring Parameters on Its Properties and Bell' Tone, Archives of Foundry +// Engineering, 2016. +// +// Model height is 2 m. +// +// This model contains 7 excitation positions going linearly from the +// bottom to the top of the bell. Obviously, a model with more excitation +// position could be regenerated using `mesh2faust`. +// +// #### Usage +// +// ``` +// excitation : russianBellModel(nModes,exPos,t60,t60DecayRatio,t60DecaySlope) +// ``` +// +// Where: +// +// * `excitation`: the excitation signal +// * `nModes`: number of synthesized modes (max: 50) +// * `exPos`: excitation position (0-6) +// * `t60`: T60 in seconds (recommended value: 0.1) +// * `t60DecayRatio`: T60 decay ratio (recommended value: 1) +// * `t60DecaySlope`: T60 decay slope (recommended value: 5) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// russianBellModel_test = os.impulse : pm.russianBellModel(50, 0, 30, 1, 3); +// ``` +//---------------------------------- +russianBellModel(nModes,exPos,t60,t60DecayRatio,t60DecaySlope) = _ <: par(i,nModes,modeFilter(modesFreqs(i),modesT60s(i),modesGains(int(exPos),i))) :> /(nModes) +with { + nExPos = 7; + modesFreqs(n) = ba.take(n+1,(136.491,136.992,258.958,260.419,316.489,318.411,393.852,393.949,454.677,467.493,503.594,503.637,530.46,531.046,541.16,546.158,578.335,579.863,660.026,708.34,716.915,717.23,775.839,776.066,783.356,783.464,788.826,789.463,800.348,806.758,876.788,880.414,887.297,888.222,916.815,919.711,937.686,984.606,1057.2,1058.45,1065.48,1082.27,1083.93,1086.55,1086.77,1108.2,1116.17,1149,1150.54,1199.54)); + modesGains(p,n) = waveform{0.925507,0.59752,0.0965671,0.45412,0.989773,0.593498,0.512541,0.124241,0.705411,0.292396,0.673399,0.302181,0.026234,0.286249,0.556267,1,0.250426,0.107711,0.427299,0.336295,0.616257,0.21442,0.0845294,0.231363,0.522724,0.559114,0.34847,0.854197,0.835576,0.735036,0.288494,0.117122,0.409686,0.363575,0.484943,0.170862,0.420531,0.164793,0.233847,0.861232,0.214037,0.283462,0.173153,0.876122,0.607809,0.294745,0.143142,0.332009,0.491878,0.626104,0.962027,0.584298,0.213653,0.420452,0.812329,0.545172,0.380744,0.331536,0.386801,0.248909,0.688756,0.313904,0.377894,0.595846,0.412274,0.739626,0.541148,0.393005,0.656637,0.847672,0.930653,0.288289,0.404938,0.657989,0.763949,0.574085,0.282241,1,0.429131,0.572049,0.734868,0.577477,0.520789,0.355593,0.890067,0.272391,0.448223,0.423969,0.392237,0.856091,0.0583794,0.784967,0.359527,0.576567,0.201513,0.642013,0.419308,0.340667,0.42319,0.860812,0.69402,0.423568,0.376987,0.568453,0.502302,0.280716,0.464041,0.395601,0.19985,0.0950398,0.64279,0.228326,0.484911,0.842353,0.161404,0.403432,0.655549,0.409098,0.699392,0.87605,1,0.185606,0.414255,0.695205,0.732612,0.478298,0.24947,0.927739,0.213135,0.227382,0.976352,0.642745,0.376311,0.260674,0.811034,0.264631,0.239979,0.261897,0.191642,0.78167,0.390679,0.382437,0.206714,0.22472,0.0676332,0.502611,0.301455,0.241029,0.224505,0.721193,0.436348,0.254062,0.480496,0.772371,0.210681,0.103415,0.485338,0.378334,0.228484,0.114877,0.68676,0.296942,0.50742,0.99747,0.0377103,0.132212,0.319547,0.192032,0.520574,0.585844,0.419362,0.0847317,0.134544,0.194762,0.616689,0.39736,0.298809,0.914746,0.0513371,0.0543569,0.989159,0.602892,0.145582,0.102149,0.129022,0.116485,0.279988,0.39427,0.290139,1,0.708655,0.780555,0.387526,0.0395217,0.00964067,0.24368,0.0740625,0.619315,0.447395,0.292497,0.295458,0.163748,0.521375,0.864533,0.0773408,0.0334231,0.345121,0.27886,0.223876,0.307756,0.763106,0.424707,0.487201,0.968962,0.00911747,0.0324653,0.334275,0.166787,0.312498,0.264262,0.35488,0.37559,0.261094,0.565006,0.474935,0.31352,0.251249,0.735352,0.0189072,0.0153634,0.786225,0.503299,0.369038,0.250765,0.673019,0.387573,0.742025,0.749056,0.261714,0.751868,0.771816,1,0.459484,0.0124402,0.0105394,0.964109,0.457052,0.532316,0.407128,0.697241,0.1522,0.0895893,0.406175,0.65104,0.0233951,0.010107,0.0722347,0.066634,0.195489,0.41674,0.654451,0.382782,0.305396,0.631501,0.00162802,0.0140906,0.762915,0.410245,0.189436,0.0604462,0.624941,0.439781,0.516273,0.896678,0.273298,0.202868,0.0996022,0.257657,0.0174508,0.0157859,0.429433,0.202184,0.443111,0.343811,0.447562,0.268694,0.753551,0.529426,0.0772973,0.097696,0.446414,0.261678,0.169035,0.0116219,0.0207399,1,0.488856,0.413029,0.252661,0.148369,0.0919644,0.0330634,0.268764,0.441849,0.0139873,0.0108584,0.657799,0.488248,0.375433,0.958179,0.761492,0.40949,0.151709,0.314931,0.0036118,0.013307,1,0.605343,0.550506,0.363516,0.255278,0.137537,0.448881,0.867615,0.483247,0.308622,0.348444,0.534835,0.0157716,0.0128965,0.147608,0.0762611,0.762224,0.511585,0.985863,0.540227,0.691691,0.905296,0.397521,0.69794,0.423289,0.924613,0.491559,0.00567911,0.0106002,0.647916,0.324182,0.579449,0.451936,0.877897},int(p*nModes+n) : rdtable; + modesT60s(i) = t60*pow(1-(modesFreqs(i)/1201.01)*t60DecayRatio,t60DecaySlope); +}; + + +//-------`(pm.)russianBell`---------- +// Russian church bell modal model. +// +// Modeled after D.Bartocha and Baron, Influence of Tin Bronze Melting and +// Pouring Parameters on Its Properties and Bell' Tone, Archives of Foundry +// Engineering, 2016. +// +// Model height is 2 m. +// +// This model contains 7 excitation positions going linearly from the +// bottom to the top of the bell. Obviously, a model with more excitation +// position could be regenerated using `mesh2faust`. +// +// This function also implements a virtual exciter to drive the model. +// +// #### Usage +// +// ``` +// russianBell(strikePosition,strikeCutoff,strikeSharpness,gain,trigger) : _ +// ``` +// +// Where: +// +// * `strikePosition`: strike position (0-6) +// * `strikeCutoff`: cutoff frequency of the strike generator (recommended: ~7000 Hz) +// * `strikeSharpness`: sharpness of the strike (recommended: ~0.25) +// * `gain`: gain of the strike (0-1) +// * `trigger`: signal (0: off, 1: on) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// russianBell_test = pm.russianBell(0.4, 2000, 0.5, 0.8, button("pm.russianBell/gate")); +// ``` +//---------------------------------- +russianBell(strikePosition,strikeCutoff,strikeSharpness,gain,trigger) = +strikeModel(10,strikeCutoff,strikeSharpness,gain,trigger) : +russianBellModel(50,strikePosition,30,1,3); + + +//-------`(pm.)russianBell_ui`---------- +// Russian church bell physical model based on [`russianBell`](#pmrussianbell) with +// built-in UI. +// +// #### Usage +// +// ``` +// russianBell_ui : _ +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// russianBell_ui_test = pm.russianBell_ui; +// ``` +//---------------------------------- +russianBell_ui = +russianBell(strikePosition,strikeCutoff,strikeSharpness,gain,gate) +with { + strikePosition = nentry("v:russianBell/[0]strikePosition",0,0,6,1); + strikeCutoff = hslider("v:russianBell/[1]strikeCutOff",6500,20,20000,1); + strikeSharpness = hslider("v:russianBell/[2]strikeSharpness",0.5,0.01,5,0.01); + gain = hslider("v:russianBell/[3]gain",1,0,1,0.01); + gate = button("v:russianBell/[4]gate"); +}; + +//-------`(pm.)standardBellModel`---------- +// Standard church bell modal model generated by `mesh2faust` from +// `libraries/modalmodels/standardBell`. +// +// Modeled after T. Rossing and R. Perrin, Vibrations of Bells, Applied +// Acoustics 2, 1987. +// +// Model height is 1.8 m. +// +// This model contains 7 excitation positions going linearly from the +// bottom to the top of the bell. Obviously, a model with more excitation +// position could be regenerated using `mesh2faust`. +// +// #### Usage +// +// ``` +// excitation : standardBellModel(nModes,exPos,t60,t60DecayRatio,t60DecaySlope) +// ``` +// +// Where: +// +// * `excitation`: the excitation signal +// * `nModes`: number of synthesized modes (max: 50) +// * `exPos`: excitation position (0-6) +// * `t60`: T60 in seconds (recommended value: 0.1) +// * `t60DecayRatio`: T60 decay ratio (recommended value: 1) +// * `t60DecaySlope`: T60 decay slope (recommended value: 5) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// standardBellModel_test = os.impulse : pm.standardBellModel(50, 0, 30, 1, 2.5); +// ``` +//---------------------------------- +standardBellModel(nModes,exPos,t60,t60DecayRatio,t60DecaySlope) = _ <: par(i,nModes,modeFilter(modesFreqs(i),modesT60s(i),modesGains(int(exPos),i))) :> /(nModes) +with { + nExPos = 7; + modesFreqs(n) = ba.take(n+1,(490.25,493.646,924.838,927.779,1181.21,1186.94,1348.84,1349.5,1560.33,1635.97,1706.73,1712.89,1745.05,1745.25,2005.51,2025.47,2053.88,2142.37,2151.4,2408.16,2534.11,2536.42,2623.3,2628.4,2711.57,2712.46,2823.23,2827.22,2863.42,2874.19,2923,2925.69,3032.52,3042.15,3208.57,3392.52,3485.92,3493.65,3539.8,3550.56,3678.71,3719.04,3722.59,3786.28,3789.38,3993.59,3998.43,4123.41,4164.83,4187.98)); + modesGains(p,n) = waveform{0.691911,0.622333,0.548651,0.463306,0.826946,0.749513,0.2242,0.642678,0.760442,0.326054,0.276463,0.359344,0.18258,0.686765,0.457159,0.839015,0.845338,0.372377,0.306417,0.147381,0.359707,0.653537,0.27553,0.401233,0.435417,0.251481,0.190062,0.773372,0.315014,0.228812,0.521512,0.411542,0.720762,1,0.286502,0.338938,0.119995,0.432289,0.409677,0.156272,0.298871,0.250786,0.640776,0.209431,0.17001,0.390014,0.301698,0.799413,0.980581,0.385,0.82544,0.818894,0.349616,0.235396,0.783164,0.821914,0.28411,0.430286,0.507671,0.326254,0.260488,0.273364,0.20518,0.714852,0.47995,0.803637,0.683943,0.355371,0.406924,0.656257,0.423025,0.413515,0.38636,0.384787,0.389448,0.813367,0.234988,1,0.311268,0.350245,0.403856,0.646143,0.500485,0.833553,0.431768,0.467064,0.298979,0.487413,0.514907,0.369383,0.106197,0.494224,0.816079,0.535807,0.379873,0.380201,0.606306,0.516117,0.748449,0.556948,0.587066,0.584423,0.394866,0.341121,0.433458,0.455987,0.361237,0.42939,0.122969,0.133175,0.505176,0.513985,0.0554619,0.604942,0.372074,0.381126,0.314354,0.499636,0.518711,0.923792,0.259544,0.576517,0.553915,0.585444,0.245369,1,0.117757,0.977318,0.652862,0.509314,0.14855,0.506402,0.180059,0.356005,0.38681,0.279354,0.205792,0.551055,0.689107,0.445724,0.306857,0.324747,0.603621,0.394466,0.288613,0.264697,0.60612,0.20274,0.267271,0.925656,0.439228,0.425884,0.626633,0.547204,0.230022,0.225654,0.392697,0.493474,0.149857,0.0604048,0.693889,0.740271,0.175485,0.704998,0.329732,0.153026,0.125744,0.286995,0.278878,0.812372,0.0562174,0.241479,0.294525,0.358834,0.171047,0.847604,0.17228,0.97521,0.892073,0.613987,0.0659213,0.301583,0.0610847,0.125438,0.145151,0.180086,0.124231,0.260161,0.337573,0.203743,0.655798,0.425893,0.902347,0.500686,0.311173,0.215561,0.349591,0.0854218,0.0805062,1,0.338652,0.295396,0.698314,0.664972,0.118983,0.0881905,0.31158,0.391136,0.151915,0.239504,0.685742,0.884332,0.288516,0.768688,0.274851,0.0490311,0.0357865,0.293303,0.249461,0.493771,0.340984,0.467623,0.216631,0.255235,0.0988695,0.46198,0.147247,0.640196,1,0.551938,0.0453732,0.189907,0.0197542,0.0309217,0.769837,0.360418,0.384041,0.867434,0.398948,0.171848,0.748652,0.301957,0.860611,0.958674,0.54903,0.272753,0.372753,0.0180728,0.0292353,0.8502,0.224583,0.214805,0.670319,0.586433,0.0435142,0.0388574,0.144811,0.157061,0.155569,0.418334,0.673656,0.749573,0.337354,0.747254,0.255997,0.0239656,0.0310719,0.721087,0.700616,0.199051,0.511844,0.849485,0.700682,0.778658,0.171289,0.261973,0.129228,0.328597,0.781821,0.583813,0.0806713,0.416876,0.0118202,0.00868563,1,0.461884,0.186882,0.641364,0.994705,0.501902,0.566449,0.0678845,0.139737,0.462582,0.318656,0.233947,0.495941,0.0314028,0.0146478,0.70432,0.124953,0.132549,0.457126,0.378636,0.0169362,0.0195494,0.204155,0.294401,0.271367,0.730857,0.459322,0.433078,0.325171,0.734536,0.416205,0.012873,0.0388489,0.821567,0.863683,0.0920531,0.393972,0.539544,0.832052,0.842732,0.241144,0.479558,0.283092,0.477845,0.385473,0.436587,0.144308,0.642395,0.0215791,0.00779029,0.563714,0.838279,0.410004,0.829086,1,0.630598,0.0233729,0.496217,0.711042,0.914266,0.695042,0.331894,0.898442,0.028568,0.0174966,0.482846},int(p*nModes+n) : rdtable; + modesT60s(i) = t60*pow(1-(modesFreqs(i)/4191.95)*t60DecayRatio,t60DecaySlope); +}; + + +//-------`(pm.)standardBell`---------- +// Standard church bell modal model. +// +// Modeled after T. Rossing and R. Perrin, Vibrations of Bells, Applied +// Acoustics 2, 1987. +// +// Model height is 1.8 m. +// +// This model contains 7 excitation positions going linearly from the +// bottom to the top of the bell. Obviously, a model with more excitation +// position could be regenerated using `mesh2faust`. +// +// This function also implements a virtual exciter to drive the model. +// +// #### Usage +// +// ``` +// standardBell(strikePosition,strikeCutoff,strikeSharpness,gain,trigger) : _ +// ``` +// +// Where: +// +// * `strikePosition`: strike position (0-6) +// * `strikeCutoff`: cutoff frequency of the strike generator (recommended: ~7000 Hz) +// * `strikeSharpness`: sharpness of the strike (recommended: ~0.25) +// * `gain`: gain of the strike (0-1) +// * `trigger` signal (0: off, 1: on) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// standardBell_test = pm.standardBell(0.4, 2000, 0.5, 0.8, button("pm.standardBell/gate")); +// ``` +//---------------------------------- +standardBell(strikePosition,strikeCutoff,strikeSharpness,gain,trigger) = +strikeModel(10,strikeCutoff,strikeSharpness,gain,trigger) : +standardBellModel(50,strikePosition,30,1,2.5); + + +//-------`(pm.)standardBell_ui`---------- +// Standard church bell physical model based on [`standardBell`](#pmstandardbell) with +// built-in UI. +// +// #### Usage +// +// ``` +// standardBell_ui : _ +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// standardBell_ui_test = pm.standardBell_ui; +// ``` +//---------------------------------- +standardBell_ui = +standardBell(strikePosition,strikeCutoff,strikeSharpness,gain,gate) +with { + strikePosition = nentry("v:standardBell/[0]strikePosition",0,0,6,1); + strikeCutoff = hslider("v:standardBell/[1]strikeCutOff",6500,20,20000,1); + strikeSharpness = hslider("v:standardBell/[2]strikeSharpness",0.5,0.01,5,0.01); + gain = hslider("v:standardBell/[3]gain",1,0,1,0.01); + gate = button("v:standardBell/[4]gate"); +}; + + +//==============================Vocal Synthesis=========================================== +// Vocal synthesizer functions (source/filter, fof, etc.). +//======================================================================================== + +//-------`(pm.)formantValues`---------- +// Formant data values in an environment. +// +// The formant data used here come from the CSOUND manual +// . +// +// #### Usage +// +// ``` +// ba.take(j+1,formantValues.f(i)) : _ +// ba.take(j+1,formantValues.g(i)) : _ +// ba.take(j+1,formantValues.bw(i)) : _ +// ``` +// +// Where: +// +// * `i`: formant number +// * `j`: (voiceType*nFormants)+vowel +// * `voiceType`: the voice type (0: alto, 1: bass, 2: countertenor, 3: +// soprano, 4: tenor) +// * `vowel`: the vowel (0: a, 1: e, 2: i, 3: o, 4: u) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// formantValues_test = pm.formantValues.f(0); +// ``` +//-------------------------------------- +formantValues = environment { + f(0) = (800,400,350,450,325,600,400,250,400,350,660,440,270,430,370,800, + 350,270,450,325,650,400,290,400,350); // formant 0 freqs + f(1) = (1150,1600,1700,800,700,1040,1620,1750,750,600,1120,1800,1850,820,630, + 1150,2000,2140,800,700,1080,1700,1870,800,600); // formant 1 freqs + f(2) = (2800,2700,2700,2830,2530,2250,2400,2600,2400,2400,2750,2700,2900,2700,2750, + 2900,2800,2950,2830,2700,2650,2600,2800,2600,2700); // formant 2 freqs + f(3) = (3500,3300,3700,3500,3500,2450,2800,3050,2600,2675,3000,3000,3350,3000,3000, + 3900,3600,3900,3800,3800,2900,3200,3250,2800,2900); // formant 3 freqs + f(4) = (4950,4950,4950,4950,4950,2750,3100,3340,2900,2950,3350,3300,3590,3300,3400, + 4950,4950,4950,4950,4950,3250,3580,3540,3000,3300); // formant 4 freqs + g(0) = (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1); // formant 0 gains + g(1) = (0.630957,0.063096,0.100000,0.354813,0.251189,0.446684,0.251189,0.031623, + 0.281838,0.100000,0.501187,0.199526,0.063096,0.316228,0.100000, + 0.501187,0.100000,0.251189,0.281838,0.158489,0.501187,0.199526,0.177828, + 0.316228,0.100000); // formant 1 gains + g(2) = (0.100000,0.031623,0.031623,0.158489,0.031623,0.354813,0.354813,0.158489, + 0.089125,0.025119,0.070795,0.125893,0.063096,0.050119,0.070795, + 0.025119,0.177828,0.050119,0.079433,0.017783,0.446684,0.251189,0.125893, + 0.251189,0.141254); // formant 2 gains + g(3) = (0.015849,0.017783,0.015849,0.039811,0.010000,0.354813,0.251189,0.079433, + 0.100000,0.039811,0.063096,0.100000,0.015849,0.079433,0.031623, + 0.100000,0.010000,0.050119,0.079433,0.010000,0.398107,0.199526,0.100000, + 0.251189,0.199526); // formant 3 gains + g(4) = (0.001000,0.001000,0.001000,0.001778,0.000631,0.100000,0.125893,0.039811, + 0.010000,0.015849,0.012589,0.100000,0.015849,0.019953,0.019953, + 0.003162,0.001585,0.006310,0.003162,0.001000,0.079433,0.100000,0.031623, + 0.050119,0.050119); // formant 4 gains + bw(0) = (80,60,50,70,50,60,40,60,40,40,80,70,40,40,40,80,60,60,40,50, + 50,70,40,70,40); // formant 0 bandwidths + bw(1) = (90,80,100,80,60,70,80,90,80,80,90,80,90,80,60,90,100,90,80,60, + 90,80,90,80,60); // formant 1 bandwidths + bw(2) = (120,120,120,100,170,110,100,100,100,100,120,100,100,100,100, + 120,120,100,100,170,120,100,100,100,100); // formant 2 bandwidths + bw(3) = (130,150,150,130,180,120,120,120,120,120,130,120,120,120,120, + 130,150,120,120,180,130,120,120,130,120); // formant 3 bandwidths + bw(4) = (140,200,200,135,200,130,120,120,120,120,140,120,120,120,120, + 140,200,120,120,200,140,120,120,135,120); // formant 4 bandwidths +}; + + +// array of values used to multiply BWs by to get attack Bws for FOF version. +// min/max values per vowel (AEIOU) and per gender (M/F). Index by: +// gender*5 + vowel; +// values were chosen based on informal listening tests +bwMultMins = (1.0, 1.25, 1.25, 1.0, 1.5, 2.0, 3.0, 3.0, 2.0, 2.0); +bwMultMaxes = (10.0, 2.5, 2.5, 10.0, 4.0, 15.0, 12.0, 12.0, 12.0, 12.0); + + +// minimum/maximum frequency values per gender (M/F) used in the calculation +// of the attack Bws from the release Bws in the FOF version +// values are based on arbitrary maximum/minimum singing values +// in Hz for male/female voices +minGenderFreq = (82.41,174.61); +maxGenderFreq = (523.25,1046.5); + + +//--------------`(pm.)voiceGender`----------------- +// Calculate the gender for the provided `voiceType` value. (0: male, 1: female) +// +// #### Usage +// +// ``` +// voiceGender(voiceType) : _ +// ``` +// +// Where: +// +// * `voiceType`: the voice type (0: alto, 1: bass, 2: countertenor, 3: soprano, 4: tenor) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// voiceGender_test = pm.voiceGender(0); +// ``` +//--------------------------------------------- +declare voiceGender author "Mike Olsen"; + +voiceGender(voiceType) = ba.if(voiceType == 0,1,ba.if(voiceType == 3,1,0)); + + +//-----------`(pm.)skirtWidthMultiplier`------------ +// Calculates value to multiply bandwidth to obtain `skirtwidth` +// for a FOF filter. +// +// #### Usage +// +// ``` +// skirtWidthMultiplier(vowel,freq,gender) : _ +// ``` +// +// Where: +// +// * `vowel`: the vowel (0: a, 1: e, 2: i, 3: o, 4: u) +// * `freq`: the fundamental frequency of the excitation signal +// * `gender`: gender of the voice used in the fof filter (0: male, 1: female) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// skirtWidthMultiplier_test = pm.skirtWidthMultiplier(0, 220, 0); +// ``` +//--------------------------------------------- +declare skirtWidthMultiplier author "Mike Olsen"; + +skirtWidthMultiplier(vowel,freq,gender) = (multMax-multMin)*skirtParam+multMin +with { + nVowels = 5; + index = gender*nVowels + vowel; + multMin = bwMultMins : ba.selectn(10,index); + multMax = bwMultMaxes : ba.selectn(10,index); + freqMin = minGenderFreq : ba.selectn(2,gender); + freqMax = maxGenderFreq : ba.selectn(2,gender); + skirtParam = ba.if(freq <= freqMin,0.0,ba.if(freq >= freqMax,1.0, + (1.0/(freqMax-freqMin))*(freq-freqMin))); +}; + + +//--------------`(pm.)autobendFreq`----------------- +// Autobends the center frequencies of formants 1 and 2 based on +// the fundamental frequency of the excitation signal and leaves +// all other formant frequencies unchanged. Ported from `chant-lib`. +// +// +// #### Usage +// +// ``` +// _ : autobendFreq(n,freq,voiceType) : _ +// ``` +// +// Where: +// +// * `n`: formant index +// * `freq`: the fundamental frequency of the excitation signal +// * `voiceType`: the voice type (0: alto, 1: bass, 2: countertenor, 3: soprano, 4: tenor) +// * input is the center frequency of the corresponding formant +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// autobendFreq_test = 440 : pm.autobendFreq(0, 220, 0); +// ``` +// +// #### References +// +// * . +//--------------------------------------------- +declare autobendFreq author "Mike Olsen"; + +autobendFreq(n,freq,voiceType) = autobend(n) +with { + autobend(0) = _ <: ba.if(_ <= freq,freq,_); + autobend(1) = _ <: ba.if(voiceType != 2, + _ <: ba.if((_ >= 1300)&(freq >= 200), + _ -(freq-200)*(_-1300)/1050, + ba.if(_ <= (30 + 2*freq),30 + 2*freq,_)), _); + autobend(n) = _; +}; + + +//--------------`(pm.)vocalEffort`----------------- +// Changes the gains of the formants based on the fundamental +// frequency of the excitation signal. Higher formants are +// reinforced for higher fundamental frequencies. +// Ported from `chant-lib`. +// +// #### Usage +// +// ``` +// _ : vocalEffort(freq,gender) : _ +// ``` +// +// Where: +// +// * `freq`: the fundamental frequency of the excitation signal +// * `gender`: the gender of the voice type (0: male, 1: female) +// * input is the linear amplitude of the formant +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// vocalEffort_test = 1 : pm.vocalEffort(440, 0); +// ``` +// +// #### References +// +// * . +//--------------------------------------------- +declare vocalEffort author "Mike Olsen"; + +vocalEffort(freq,gender) = _ <: ba.if(gender == 0,*(3+1.1*(400-freq)/300),*(0.8+1.05*(1000-freq)/1250)); + + +//-------------------------`(pm.)fof`-------------------------- +// Function to generate a single Formant-Wave-Function. +// +// #### Usage +// +// ``` +// _ : fof(fc,bw,sw,g) : _ +// ``` +// +// Where: +// +// * `fc`: formant center frequency, +// * `bw`: formant bandwidth (Hz), +// * `sw`: formant skirtwidth (Hz) +// * `g`: linear scale factor (g=1 gives 0dB amplitude response at fc) +// * input is an impulse signal to excite filter +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// fof_test = pm.fof(0.3, 440, 880, 0.5) + os.osc(110) * 0.001; +// ``` +// +// #### References +// +// * . +//--------------------------------------------------------- +declare fof author "Mike Olsen"; + +fof(fc,bw,sw,g) = _ <: (_',_) : (f * s) +with { + T = 1/ma.SR; // sample period + pi = ma.PI; // pi + u1 = exp(-sw*pi*T); // exponential controlling rise + u2 = exp(-bw*pi*T); // exponential controlling decay + a1 = -1*(u1+u2); // a1 filter coefficient + a2 = u1*u2; // a2 filter coefficient + G0 = 1/(1+a1+a2); // magnitude at DC + b0 = g/G0; // filter gain + s = os.hs_oscsin(fc); // hardsyncing wavetable oscillator + f = fi.tf2(b0,0,0,a1,a2); // biquad filter +}; + + +//-------------------------`(pm.)fofSH`------------------------- +// FOF with sample and hold used on `bw` and a parameter +// used in the filter-cycling FOF function `fofCycle`. +// +// #### Usage +// +// ``` +// _ : fofSH(fc,bw,a,g) : _ +// ``` +// +// Where: +// +// * `fc`: formant center frequency +// * `bw`: formant bandwidth (Hz) +// * `a`: formant skirtwidth (Hz) +// * `g`: linear scale factor +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// fofSH_test = pm.fofSH(0.3, 440, 880, 0.5) + os.osc(110) * 0.001; +// ``` +// +// #### References +// +// * . +//--------------------------------------------------------- +declare fofSH author "Mike Olsen"; + +fofSH(fc,bw,a,g) = _ <: (((_,bw):ba.sAndH),((_,a):ba.sAndH),_) : (fc,_,_,g,_') : fof; + + +//----------------------`(pm.)fofCycle`------------------------- +// FOF implementation where time-varying filter parameter noise is +// mitigated by using a cycle of `n` sample and hold FOF filters. +// +// #### Usage +// +// ``` +// _ : fofCycle(fc,bw,a,g,n) : _ +// ``` +// +// Where: +// +// * `fc`: center frequency of the filter in Hz +// * `bw`: bandwidth of the filter in Hz +// * `a`: attack bandwidth / skirt width in Hz +// * `g`: linear gain multiplier +// * `n`: the number of FOF filters to cycle through +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// fofCycle_test = pm.fofCycle(0.3, 440, 880, 0.5, 3) + os.osc(110) * 0.001; +// ``` +// +// #### References +// +// * . +//--------------------------------------------------------- +declare fofCycle author "Mike Olsen"; + +fofCycle(fc,bw,a,g,n) = _ : ba.cycle(n) : par(i,n,fofSH(fc,bw,a,g)) :> _; + + +//----------------------`(pm.)fofSmooth`------------------------- +// FOF implementation where time-varying filter parameter +// noise is mitigated by lowpass filtering the filter +// parameters `bw` and `a` with [smooth](#smooth). +// +// #### Usage +// +// ``` +// _ : fofSmooth(fc,bw,sw,g,tau) : _ +// ``` +// +// Where: +// +// * `fc`: center frequency of the filter in Hz +// * `bw`: bandwidth of the filter in Hz +// * `sw`: skirt width in Hz +// * `g`: linear gain multiplier +// * `tau`: the desired smoothing time constant in seconds +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// fofSmooth_test = pm.fofSmooth(0.3, 440, 880, 0.5, 0.2) + os.osc(110) * 0.001; +// ``` +//--------------------------------------------------------- +declare fofSmooth author "Mike Olsen"; + +fofSmooth(fc,bw,sw,g,tau) = fof(fc,bw2,sw2,g) +with { + sw2 = sw : si.smooth(ba.tau2pole(tau)); + bw2 = bw : si.smooth(ba.tau2pole(tau)); +}; + + +//-------`(pm.)formantFilterFofCycle`-------------- +// Formant filter based on a single FOF filter. +// Formant parameters are linearly interpolated allowing to go smoothly from +// one vowel to another. A cycle of `n` fof filters with sample-and-hold is +// used so that the fof filter parameters can be varied in realtime. +// This technique is more robust but more computationally expensive than +// [`formantFilterFofSmooth`](#formantFilterFofSmooth). Voice type can be +// selected but must correspond to +// the frequency range of the provided source to be realistic. +// +// #### Usage +// +// ``` +// _ : formantFilterFofCycle(voiceType,vowel,nFormants,i,freq) : _ +// ``` +// +// Where: +// +// * `voiceType`: the voice type (0: alto, 1: bass, 2: countertenor, +// 3: soprano, 4: tenor) +// * `vowel`: the vowel (0: a, 1: e, 2: i, 3: o, 4: u) +// * `nFormants`: number of formant regions in frequency domain, typically 5 +// * `i`: formant number (i.e. 0 - 4) used to index formant data value arrays +// * `freq`: fundamental frequency of excitation signal. Used to calculate +// rise time of envelope +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// formantFilterFofCycle_test = (os.osc(110) : pm.formantFilterFofCycle(1, 1, 5, 1, 200)) + os.osc(55) * 0.001; +// ``` +//-------------------------------------- +declare formantFilterFofCycle author "Mike Olsen"; + +formantFilterFofCycle(voiceType,vowel,nFormants,i,freq) = + fofCycle(formantFreq(i),formantBw(i),formantSw(i),formantGain(i),n) +with { + n = 3; // number of fof filters to cycle between + index = (voiceType*nFormants)+vowel; // index of formant values + // formant center frequency using autobend correction + formantFreq(i) = ba.listInterp(formantValues.f(i),index) : autobendFreq(i,freq,voiceType); + // formant amplitude using vocal effort correction + formantGain(i) = ba.listInterp(formantValues.g(i),index) : vocalEffort(freq,gender); + formantBw(i) = ba.listInterp(formantValues.bw(i),index); // formant bandwidth + // formant skirtwidth + formantSw(i) = skirtWidthMultiplier(vowel,freq,gender)*formantBw(i); + gender = voiceGender(voiceType); // gender of voice +}; + + +//-------`(pm.)formantFilterFofSmooth`-------------- +// Formant filter based on a single FOF filter. +// Formant parameters are linearly interpolated allowing to go smoothly from +// one vowel to another. FOF filter parameters are lowpass filtered +// to mitigate possible noise from varying them in realtime. +// Voice type can be selected but must correspond to +// the frequency range of the provided source to be realistic. +// +// #### Usage +// +// ``` +// _ : formantFilterFofSmooth(voiceType,vowel,nFormants,i,freq) : _ +// ``` +// +// Where: +// +// * `voiceType`: the voice type (0: alto, 1: bass, 2: countertenor, +// 3: soprano, 4: tenor) +// * `vowel`: the vowel (0: a, 1: e, 2: i, 3: o, 4: u) +// * `nFormants`: number of formant regions in frequency domain, typically 5 +// * `i`: formant number (i.e. 1 - 5) used to index formant data value arrays +// * `freq`: fundamental frequency of excitation signal. Used to calculate +// rise time of envelope +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// formantFilterFofSmooth_test = os.osc(110) : pm.formantFilterFofSmooth(0, 0, 5, 0, 200); +// ``` +//-------------------------------------- +declare formantFilterFofSmooth author "Mike Olsen"; + +formantFilterFofSmooth(voiceType,vowel,nFormants,i,freq) = + fofSmooth(formantFreq(i),formantBw(i),formantSw(i),formantGain(i),tau) +with { + tau = 0.001; + index = (voiceType*nFormants)+vowel; // index of formant values + // formant center frequency using autobend correction + formantFreq(i) = ba.listInterp(formantValues.f(i),index) : autobendFreq(i,freq,voiceType); + // formant amplitude using vocal effort correction + formantGain(i) = ba.listInterp(formantValues.g(i),index) : vocalEffort(freq,gender); + formantBw(i) = ba.listInterp(formantValues.bw(i),index); // formant bandwidth + // formant skirtwidth + formantSw(i) = skirtWidthMultiplier(vowel,freq,gender)*formantBw(i); + gender = voiceGender(voiceType); // gender of voice +}; + + +//-------`(pm.)formantFilterBP`-------------- +// Formant filter based on a single resonant bandpass filter. +// Formant parameters are linearly interpolated allowing to go smoothly from +// one vowel to another. Voice type can be selected but must correspond to +// the frequency range of the provided source to be realistic. +// +// #### Usage +// +// ``` +// _ : formantFilterBP(voiceType,vowel,nFormants,i,freq) : _ +// ``` +// +// Where: +// +// * `voiceType`: the voice type (0: alto, 1: bass, 2: countertenor, 3: soprano, 4: tenor) +// * `vowel`: the vowel (0: a, 1: e, 2: i, 3: o, 4: u) +// * `nFormants`: number of formant regions in frequency domain, typically 5 +// * `i`: formant index used to index formant data value arrays +// * `freq`: fundamental frequency of excitation signal. +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// formantFilterBP_test = os.osc(110) : pm.formantFilterBP(0, 0, 5, 0, 200); +// ``` +//-------------------------------------- +formantFilterBP(voiceType,vowel,nFormants,i,freq) = + fi.resonbp(formantFreq(i),formantFreq(i)/formantBw(i), + formantGain(i)) +with { + index = (voiceType*nFormants)+vowel; // index of formant values + // formant center frequency using autobend correction + formantFreq(i) = ba.listInterp(formantValues.f(i),index) : autobendFreq(i,freq,voiceType); + // formant amplitude using vocal effort correction + formantGain(i) = ba.listInterp(formantValues.g(i),index) : vocalEffort(freq,gender); + formantBw(i) = ba.listInterp(formantValues.bw(i),index); // formant bandwidth + gender = voiceGender(voiceType); // gender of voice +}; + + +//-------`(pm.)formantFilterbank`-------------- +// Formant filterbank which can use different types of filterbank +// functions and different excitation signals. Formant parameters are +// linearly interpolated allowing to go smoothly from one vowel to another. +// Voice type can be selected but must correspond to the frequency range +// of the provided source to be realistic. +// +// #### Usage +// +// ``` +// _ : formantFilterbank(voiceType,vowel,formantGen,freq) : _ +// ``` +// +// Where: +// +// * `voiceType`: the voice type (0: alto, 1: bass, 2: countertenor, 3: soprano, 4: tenor) +// * `vowel`: the vowel (0: a, 1: e, 2: i, 3: o, 4: u) +// * `formantGen`: the specific formant filterbank function +// (i.e. FormantFilterbankBP, FormantFilterbankFof,...) +// * `freq`: fundamental frequency of excitation signal. Needed for FOF +// version to calculate rise time of envelope +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// formantFilterbank_test = os.osc(110) : pm.formantFilterbank(0, 0, pm.formantFilterBP, 200); +// ``` +//-------------------------------------- +declare formantFilterbank author "Mike Olsen"; + +formantFilterbank(voiceType,vowel,formantGen,freq) = + _ <: par(i,nFormants,formantGen(voiceType,vowel,nFormants,i,freq)) :> _ +with { + nFormants = 5; +}; + + +//-----`(pm.)formantFilterbankFofCycle`----- +// Formant filterbank based on a bank of fof filters. +// Formant parameters are linearly interpolated allowing to go smoothly from +// one vowel to another. Voice type can be selected but must correspond to +// the frequency range of the provided source to be realistic. +// +// #### Usage +// +// ``` +// _ : formantFilterbankFofCycle(voiceType,vowel,freq) : _ +// ``` +// +// Where: +// +// * `voiceType`: the voice type (0: alto, 1: bass, 2: countertenor, 3: soprano, 4: tenor) +// * `vowel`: the vowel (0: a, 1: e, 2: i, 3: o, 4: u) +// * `freq`: the fundamental frequency of the excitation signal. Needed to calculate the skirtwidth +// of the FOF envelopes and for the autobendFreq and vocalEffort functions +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// formantFilterbankFofCycle_test = (os.osc(110) : pm.formantFilterbankFofCycle(1, 1, 200)) + os.osc(55) * 0.001; +// ``` +//------------------------------------- +declare formantFilterbankFofCycle author "Mike Olsen"; + +formantFilterbankFofCycle(voiceType,vowel,freq) = +formantFilterbank(voiceType,vowel,formantFilterFofCycle,freq); + + +//-----`(pm.)formantFilterbankFofSmooth`---- +// Formant filterbank based on a bank of fof filters. +// Formant parameters are linearly interpolated allowing to go smoothly from +// one vowel to another. Voice type can be selected but must correspond to +// the frequency range of the provided source to be realistic. +// +// #### Usage +// +// ``` +// _ : formantFilterbankFofSmooth(voiceType,vowel,freq) : _ +// ``` +// +// Where: +// +// * `voiceType`: the voice type (0: alto, 1: bass, 2: countertenor, 3: soprano, 4: tenor) +// * `vowel`: the vowel (0: a, 1: e, 2: i, 3: o, 4: u) +// * `freq`: the fundamental frequency of the excitation signal. Needed to +// calculate the skirtwidth of the FOF envelopes and for the +// autobendFreq and vocalEffort functions +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// formantFilterbankFofSmooth_test = os.osc(110) : pm.formantFilterbankFofSmooth(0, 0, 200); +// ``` +//------------------------------------- +declare formantFilterbankFofSmooth author "Mike Olsen"; + +formantFilterbankFofSmooth(voiceType,vowel,freq) = +formantFilterbank(voiceType,vowel,formantFilterFofSmooth,freq); + + +//-------`(pm.)formantFilterbankBP`-------------- +// Formant filterbank based on a bank of resonant bandpass filters. +// Formant parameters are linearly interpolated allowing to go smoothly from +// one vowel to another. Voice type can be selected but must correspond to +// the frequency range of the provided source to be realistic. +// +// #### Usage +// +// ``` +// _ : formantFilterbankBP(voiceType,vowel,freq) : _ +// ``` +// +// Where: +// +// * `voiceType`: the voice type (0: alto, 1: bass, 2: countertenor, 3: soprano, 4: tenor) +// * `vowel`: the vowel (0: a, 1: e, 2: i, 3: o, 4: u) +// * `freq`: the fundamental frequency of the excitation signal. Needed for the autobendFreq and vocalEffort functions. +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// formantFilterbankBP_test = os.osc(110) : pm.formantFilterbankBP(0, 0, 200); +// ``` +//-------------------------------------- +formantFilterbankBP(voiceType,vowel,freq) = +formantFilterbank(voiceType,vowel,formantFilterBP,freq); + + +//-------`(pm.)SFFormantModel`-------------- +// Simple formant/vocal synthesizer based on a source/filter model. The `source` +// and `filterbank` must be specified by the user. `filterbank` must take the same +// input parameters as [`formantFilterbank`](#formantFilterbank) (`BP`/`FofCycle` +// /`FofSmooth`). +// Formant parameters are linearly interpolated allowing to go smoothly from +// one vowel to another. Voice type can be selected but must correspond to +// the frequency range of the synthesized voice to be realistic. +// +// #### Usage +// +// ``` +// SFFormantModel(voiceType,vowel,exType,freq,gain,source,filterbank,isFof) : _ +// ``` +// +// Where: +// +// * `voiceType`: the voice type (0: alto, 1: bass, 2: countertenor, 3: soprano, 4: tenor) +// * `vowel`: the vowel (0: a, 1: e, 2: i, 3: o, 4: u) +// * `exType`: voice vs. fricative sound ratio (0-1 where 1 is 100% fricative) +// * `freq`: the fundamental frequency of the source signal +// * `gain`: linear gain multiplier to multiply the source by +// * `source`: excitation signal generator used by the model +// * `filterbank`: formant filterbank function, typically one of +// `formantFilterbankBP`, `formantFilterbankFofCycle`, or `formantFilterbankFofSmooth` +// * `isFof`: whether model is FOF based (0: no, 1: yes) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// SFFormantModel_test = pm.SFFormantModel(0, 0, 0.2, 220, 0.7, os.lf_imptrain(220), pm.formantFilterbankFofCycle, 1); +// ``` +//-------------------------------------- +declare SFFormantModel author "Mike Olsen"; + +SFFormantModel(voiceType,vowel,exType,freq,gain,source,filterbank,isFof) = + excitation : resonance +with { + breath = no.noise; + excitation = ba.if(isFof,source,source*(1-exType) + breath*exType : + *(gain)); + resonance = filterbank(voiceType,vowel,freq) <: ba.if(isFof,*(gain),_); +}; + + +//-------`(pm.)SFFormantModelFofCycle`------- +// Simple formant/vocal synthesizer based on a source/filter model. The source +// is just a periodic impulse and the "filter" is a bank of FOF filters. +// Formant parameters are linearly interpolated allowing to go smoothly from +// one vowel to another. Voice type can be selected but must correspond to +// the frequency range of the synthesized voice to be realistic. This model +// does not work with noise in the source signal, so `exType` has been removed +// and the model does not depend on `SFFormantModel`. +// +// #### Usage +// +// ``` +// SFFormantModelFofCycle(voiceType,vowel,freq,gain) : _ +// ``` +// +// Where: +// +// * `voiceType`: the voice type (0: alto, 1: bass, 2: countertenor, 3: soprano, 4: tenor) +// * `vowel`: the vowel (0: a, 1: e, 2: i, 3: o, 4: u) +// * `freq`: the fundamental frequency of the source signal +// * `gain`: linear gain multiplier to multiply the source by +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// SFFormantModelFofCycle_test = pm.SFFormantModelFofCycle(0, 0, 220, 0.7); +// ``` +//--------------------------------------- +declare SFFormantModelFofCycle author "Mike Olsen"; + +SFFormantModelFofCycle(voiceType,vowel,freq,gain) = +SFFormantModel(voiceType,vowel,0,freq,gain,os.lf_imptrain(freq), +formantFilterbankFofCycle,1); + + +//-------`(pm.)SFFormantModelFofSmooth`------- +// Simple formant/vocal synthesizer based on a source/filter model. The source +// is just a periodic impulse and the "filter" is a bank of FOF filters. +// Formant parameters are linearly interpolated allowing to go smoothly from +// one vowel to another. Voice type can be selected but must correspond to +// the frequency range of the synthesized voice to be realistic. +// +// #### Usage +// +// ``` +// SFFormantModelFofSmooth(voiceType,vowel,freq,gain) : _ +// ``` +// +// Where: +// +// * `voiceType`: the voice type (0: alto, 1: bass, 2: countertenor, 3: soprano, 4: tenor) +// * `vowel`: the vowel (0: a, 1: e, 2: i, 3: o, 4: u) +// * `freq`: the fundamental frequency of the source signal +// * `gain`: linear gain multiplier to multiply the source by +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// SFFormantModelFofSmooth_test = pm.SFFormantModelFofSmooth(0, 0, 220, 0.7); +// ``` +//--------------------------------------- +declare SFFormantModelFofSmooth author "Mike Olsen"; + +SFFormantModelFofSmooth(voiceType,vowel,freq,gain) = +SFFormantModel(voiceType,vowel,0,freq,gain,os.lf_imptrain(freq), +formantFilterbankFofSmooth,1); + + +//-------`(pm.)SFFormantModelBP`-------------- +// Simple formant/vocal synthesizer based on a source/filter model. The source +// is just a sawtooth wave and the "filter" is a bank of resonant bandpass filters. +// Formant parameters are linearly interpolated allowing to go smoothly from +// one vowel to another. Voice type can be selected but must correspond to +// the frequency range of the synthesized voice to be realistic. +// +// The formant data used here come from the CSOUND manual +// . +// +// #### Usage +// +// ``` +// SFFormantModelBP(voiceType,vowel,exType,freq,gain) : _ +// ``` +// +// Where: +// +// * `voiceType`: the voice type (0: alto, 1: bass, 2: countertenor, 3: soprano, 4: tenor) +// * `vowel`: the vowel (0: a, 1: e, 2: i, 3: o, 4: u) +// * `exType`: voice vs. fricative sound ratio (0-1 where 1 is 100% fricative) +// * `freq`: the fundamental frequency of the source signal +// * `gain`: linear gain multiplier to multiply the source by +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// SFFormantModelBP_test = pm.SFFormantModelBP(0, 0, 0.2, 220, 0.7); +// ``` +//--------------------------------------- +SFFormantModelBP(voiceType,vowel,exType,freq,gain) = +SFFormantModel(voiceType,vowel,exType,freq,gain,os.sawtooth(freq), +formantFilterbankBP,0); + + +//-------`(pm.)SFFormantModelFofCycle_ui`---------- +// Ready-to-use source-filter vocal synthesizer with built-in user interface. +// +// #### Usage +// +// ``` +// SFFormantModelFofCycle_ui : _ +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// SFFormantModelFofCycle_ui_test = pm.SFFormantModelFofCycle_ui; +// ``` +//---------------------------------- +declare SFFormantModelFofCycle_ui author "Mike Olsen"; + +SFFormantModelFofCycle_ui = SFFormantModelFofCycle(voiceType,vowel,freq2,gain*corrFactor) +with { + freq1 = hslider("v:vocal/[0]freq",440,50,1000,0.01); + gain = hslider("v:vocal/[1]gain",0.9,0,1,0.01); + corrFactor = 75.0; + voiceType = hslider("v:vocal/[2]voiceType",0,0,4,1); + vowel = hslider("v:vocal/[3]vowel",0,0,4,0.01) : si.smoo; + vibratoFreq = hslider("v:vocal/[5]vibratoFreq",6,1,10,0.01); + vibratoGain = hslider("v:vocal/[6]vibratoGain",0.5,0,1,0.01)*0.1; + freq2 = freq1*(os.osc(vibratoFreq)*vibratoGain+1); +}; + + +//-------`(pm.)SFFormantModelFofSmooth_ui`---------- +// Ready-to-use source-filter vocal synthesizer with built-in user interface. +// +// #### Usage +// +// ``` +// SFFormantModelFofSmooth_ui : _ +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// SFFormantModelFofSmooth_ui_test = pm.SFFormantModelFofSmooth_ui; +// ``` +//---------------------------------- +declare SFFormantModelFofSmooth_ui author "Mike Olsen"; + +SFFormantModelFofSmooth_ui = SFFormantModelFofSmooth(voiceType,vowel,freq2,gain*corrFactor) +with { + freq1 = hslider("v:vocal/[0]freq",440,50,1000,0.01); + gain = hslider("v:vocal/[1]gain",0.9,0,1,0.01); + corrFactor = 25.0; + voiceType = hslider("v:vocal/[2]voiceType",0,0,4,1); + vowel = hslider("v:vocal/[3]vowel",0,0,4,0.01) : si.smoo; + vibratoFreq = hslider("v:vocal/[5]vibratoFreq",6,1,10,0.01); + vibratoGain = hslider("v:vocal/[6]vibratoGain",0.5,0,1,0.01)*0.1; + freq2 = freq1*(os.osc(vibratoFreq)*vibratoGain+1); +}; + + +//-------`(pm.)SFFormantModelBP_ui`---------- +// Ready-to-use source-filter vocal synthesizer with built-in user interface. +// +// #### Usage +// +// ``` +// SFFormantModelBP_ui : _ +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// SFFormantModelBP_ui_test = pm.SFFormantModelBP_ui; +// ``` +//---------------------------------- +SFFormantModelBP_ui = SFFormantModelBP(voiceType,vowel,fricative,freq2,gain) +with { + freq1 = hslider("v:vocal/[0]freq",440,50,1000,0.01); + gain = hslider("v:vocal/[1]gain",0.9,0,1,0.01); + voiceType = hslider("v:vocal/[2]voiceType",0,0,4,1); + vowel = hslider("v:vocal/[3]vowel",0,0,4,0.01) : si.smoo; + fricative = hslider("v:vocal/[4]fricative",0,0,1,0.01) : si.smoo; + vibratoFreq = hslider("v:vocal/[5]vibratoFreq",6,1,10,0.01); + vibratoGain = hslider("v:vocal/[6]vibratoGain",0.5,0,1,0.01)*0.1; + freq2 = freq1*(os.osc(vibratoFreq)*vibratoGain+1); +}; + + +//-------`(pm.)SFFormantModelFofCycle_ui_MIDI`---------- +// Ready-to-use MIDI-controllable source-filter vocal synthesizer. +// +// #### Usage +// +// ``` +// SFFormantModelFofCycle_ui_MIDI : _ +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// SFFormantModelFofCycle_ui_MIDI_test = pm.SFFormantModelFofCycle_ui_MIDI; +// ``` +//---------------------------------- +SFFormantModelFofCycle_ui_MIDI = SFFormantModelFofCycle(voiceType,vowel,freq2,envelope)*outGain +with { + freq1 = hslider("v:vocal/h:[0]midi/[0]freq[style:knob]",440,50,1000,0.01); + bend = ba.semi2ratio(hslider("v:vocal/h:[0]midi/[1]bend[hidden:1][midi:pitchwheel] + [style:knob]",0,-2,2,0.01)) : si.polySmooth(gate,0.999,1); + gain = hslider("v:vocal/h:[0]midi/[2]gain[style:knob] + ",0.9,0,1,0.01); + corrFactor = 75.0; + envAttack = hslider("v:vocal/h:[0]midi/[3]envAttack[style:knob] + ",10,0,30,0.01)*0.001; + s = hslider("v:vocal/h:[0]midi/[4]sustain[hidden:1][midi:ctrl 64] + [style:knob]",0,0,1,1); + voiceType = hslider("v:vocal/h:[1]otherParams/[0]voiceType + [style:knob]",0,0,4,1); + vowel = hslider("v:vocal/h:[1]otherParams/[1]vowel + [style:knob][midi:ctrl 1]",0,0,4,0.01) : si.smoo; + vibratoFreq = hslider("v:vocal/h:[1]otherParams/[3]vibratoFreq[style:knob] + ",6,1,10,0.01); + vibratoGain = hslider("v:vocal/h:[1]otherParams/[4]vibratoGain[style:knob] + ",0.5,0,1,0.01)*0.1; + outGain = hslider("v:vocal/h:[1]otherParams/[5]outGain[style:knob] + ",0.5,0,1,0.01); + t = button("v:vocal/[2]gate"); + + gate = t+s : min(1); + freq2 = freq1*bend*(os.osc(vibratoFreq)*vibratoGain+1); + envelope = gate*gain*corrFactor : si.smooth(ba.tau2pole(envAttack)); +}; + + +//-------`(pm.)SFFormantModelFofSmooth_ui_MIDI`---------- +// Ready-to-use MIDI-controllable source-filter vocal synthesizer. +// +// #### Usage +// +// ``` +// SFFormantModelFofSmooth_ui_MIDI : _ +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// SFFormantModelFofSmooth_ui_MIDI_test = pm.SFFormantModelFofSmooth_ui_MIDI; +// ``` +//---------------------------------- +SFFormantModelFofSmooth_ui_MIDI = SFFormantModelFofSmooth(voiceType,vowel,freq2,envelope)*outGain +with { + freq1 = hslider("v:vocal/h:[0]midi/[0]freq[style:knob]",440,50,1000,0.01); + bend = ba.semi2ratio(hslider("v:vocal/h:[0]midi/[1]bend[hidden:1][midi:pitchwheel] + [style:knob]",0,-2,2,0.01)) : si.polySmooth(gate,0.999,1); + gain = hslider("v:vocal/h:[0]midi/[2]gain[style:knob] + ",0.9,0,1,0.01); + corrFactor = 25.0; + envAttack = hslider("v:vocal/h:[0]midi/[3]envAttack[style:knob] + ",10,0,30,0.01)*0.001; + s = hslider("v:vocal/h:[0]midi/[4]sustain[hidden:1][midi:ctrl 64] + [style:knob]",0,0,1,1); + voiceType = hslider("v:vocal/h:[1]otherParams/[0]voiceType + [style:knob]",0,0,4,1); + vowel = hslider("v:vocal/h:[1]otherParams/[1]vowel + [style:knob][midi:ctrl 1]",0,0,4,0.01) : si.smoo; + vibratoFreq = hslider("v:vocal/h:[1]otherParams/[3]vibratoFreq[style:knob] + ",6,1,10,0.01); + vibratoGain = hslider("v:vocal/h:[1]otherParams/[4]vibratoGain[style:knob] + ",0.5,0,1,0.01)*0.1; + outGain = hslider("v:vocal/h:[1]otherParams/[5]outGain[style:knob] + ",0.5,0,1,0.01); + t = button("v:vocal/[2]gate"); + + gate = t+s : min(1); + freq2 = freq1*bend*(os.osc(vibratoFreq)*vibratoGain+1); + envelope = gate*gain*corrFactor : si.smooth(ba.tau2pole(envAttack)); +}; + + +//-------`(pm.)SFFormantModelBP_ui_MIDI`---------- +// Ready-to-use MIDI-controllable source-filter vocal synthesizer. +// +// #### Usage +// +// ``` +// SFFormantModelBP_ui_MIDI : _ +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// SFFormantModelBP_ui_MIDI_test = pm.SFFormantModelBP_ui_MIDI; +// ``` +//---------------------------------- +SFFormantModelBP_ui_MIDI = SFFormantModelBP(voiceType,vowel,fricative,freq2,envelope)*outGain +with { + freq1 = hslider("v:vocal/h:[0]midi/[0]freq[style:knob]",440,50,1000,0.01); + bend = ba.semi2ratio(hslider("v:vocal/h:[0]midi/[1]bend[hidden:1][midi:pitchwheel] + [style:knob]",0,-2,2,0.01)) : si.polySmooth(gate,0.999,1); + gain = hslider("v:vocal/h:[0]midi/[2]gain[style:knob] + ",0.9,0,1,0.01); + envAttack = hslider("v:vocal/h:[0]midi/[3]envAttack[style:knob] + ",10,0,30,0.01)*0.001; + s = hslider("v:vocal/h:[0]midi/[4]sustain[hidden:1][midi:ctrl 64] + [style:knob]",0,0,1,1); + voiceType = hslider("v:vocal/h:[1]otherParams/[0]voiceType + [style:knob]",0,0,4,1); + vowel = hslider("v:vocal/h:[1]otherParams/[1]vowel + [style:knob][midi:ctrl 1]",0,0,4,0.01) : si.smoo; + fricative = hslider("v:vocal/h:[1]otherParams/[2]fricative + [style:knob]",0,0,1,0.01) : si.smoo; + vibratoFreq = hslider("v:vocal/h:[1]otherParams/[3]vibratoFreq[style:knob] + ",6,1,10,0.01); + vibratoGain = hslider("v:vocal/h:[1]otherParams/[4]vibratoGain[style:knob] + ",0.5,0,1,0.01)*0.1; + outGain = hslider("v:vocal/h:[1]otherParams/[5]outGain[style:knob] + ",0.5,0,1,0.01); + t = button("v:vocal/[2]gate"); + + gate = t+s : min(1); + freq2 = freq1*bend*(os.osc(vibratoFreq)*vibratoGain+1); + envelope = gate*gain : si.smooth(ba.tau2pole(envAttack)); +}; + + +//=============================== Misc Functions ========================================= +// Various miscellaneous functions. +//======================================================================================== + +//-------`(pm.)allpassNL`-------------- +// Bidirectional block adding nonlinearities in both directions in a chain. +// Nonlinearities are created by modulating the coefficients of a passive +// allpass filter by the signal it is processing. +// +// #### Usage +// +// ``` +// chain(... : allpassNL(nonlinearity) : ...) +// ``` +// +// Where: +// +// * `nonlinearity`: amount of nonlinearity to be added (0-1) +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// allpassNL_test = 0.25, -0.15, 0.05 : pm.allpassNL(0.4); +// ``` +//-------------------------------------- +allpassNL(nonlinearity) = par(i,2,nlf),_ +with { + nlf = _ <: fi.allpassn(2,par(i,2,*(nonlinearity)*ma.PI)); +}; + + +//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// UNCATEGORIZED FUNCTIONS (TODO) +//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +//-------`(pm.)modalModel`-------------- +// +// Implement multiple resonance modes using resonant bandpass filters. +// +// #### Usage +// +// ``` +// _ : modalModel(n, freqs, t60s, gains) : _ +// ``` +// +// Where: +// +// * `n`: number of given modes +// * `freqs` : list of filter center frequencies +// * `t60s` : list of mode resonance durations (in seconds) +// * `gains` : list of mode gains (0-1) +// +// For example, to generate a model with 2 modes (440 Hz and 660 Hz, a +// fifth) where the higher one decays faster and is attenuated: +// +// ``` +// os.impulse : modalModel(2, (440, 660), +// (0.5, 0.25), +// (ba.db2linear(-1), ba.db2linear(-6))); +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// os = library("oscillators.lib"); +// modalModel_test = os.impulse : pm.modalModel(3, (440,660,880), (0.5,0.4,0.3), (0.8,0.6,0.4)); +// ``` +// +// Further reading: [Grumiaux et. al., 2017: +// Impulse-Response and CAD-Model-Based Physical Modeling in +// Faust](https://raw.githubusercontent.com/grame-cncm/faust/master-dev/tools/physicalModeling/ir2dsp/lacPaper2017.pdf) +// +//-------------------------------------- +modalModel(n,modeFreqs,modeRes,modeGains) = _ <: par(i,n,modeFilter(freqs(i),res(i),gain(i))) :> _ +with { + freqs(i) = ba.take(i+1,modeFreqs); + res(i) = ba.take(i+1,modeRes); + gain(i) = ba.take(i+1,modeGains); +}; + +//-----------------------------`(pm.)rk_solve`---------------------------- +// Solves the system of ordinary differential equations of any order using +// the explicit Runge-Kutta methods. +// +// #### Usage +// +// ``` +// rk_solve(ts,ks, ni,h, eq,iv) : si.bus(outputs(eq)) +// ``` +// +// Where: +// +// * `ts,ks` : the Butcher tableau (see below) +// * `ni` : number of iterations at each tick, compile time constant +// ni > 1 can improve accuracy but will degrade performance +// * `h` : time step, run time constant, e.g. 1/ma.SR +// * `eq` : list of derivative functions +// * `iv` : list of initial values +// +// `rk_solve()` with the "standard" 1-4 tableaux and ni = 1: +// ``` +// rk_solve_1 = rk_solve((0), (1), 1); +// rk_solve_2 = rk_solve((0,1/2), (1/2, 0,1), 1); +// rk_solve_3 = rk_solve((0,1/2,1), (1/2,-1,2, 1/6,2/3,1/6), 1); +// rk_solve_4 = rk_solve((0,1/2,1/2,1), (1/2,0,1/2,0,0,1, 1/6,1/3,1/3,1/6), 1); +// ``` +// +// #### Test +// ``` +// pm = library("physmodels.lib"); +// ma = library("maths.lib"); +// rk_solve_test = pm.rk_solve((0), (1), 1, 1.0/ma.SR, eq, (1)) with { eq(t,x) = -x; }; +// ``` +// +// #### Example test program +// +// Suppose we have a system of differential equations: +// ``` +// dx/dt = dx_dt(t,x,y,z) +// dy/dt = dy_dt(t,x,y,z) +// dz/dt = dz_dt(t,x,y,z) +// ``` +// with initial conditions: +// ``` +// x(0) = x0 +// y(0) = y0 +// z(0) = z0 +// ``` +// and we want to solve it using this Butcher tableau: +// ``` +// 0 | +// c2 | a21 +// c3 | a31 a32 +// c4 | a41 a42 a43 +// ------------------- +// | b1 b1 b3 b4 +// ``` +// +// ``` +// EQ(t,x,y,z) = dx_dt(t,x,y,z), +// dy_dt(t,x,y,z), +// dz_dt(t,x,y,z); +// +// IV = x0, y0, z0; +// +// TS = 0, c2, c3, c4; +// KS = a21, +// a31, a32, +// a41, a42, a43, +// b1, b2, b3, b4; +// +// process = rk_solve(TS,KS, 1,1/ma.SR, EQ,IV); +// ``` +// Less abstract example which can actually be compiled/tested: +// +// ``` +// // Lotka-Volterra equations parameterized by a,b,c,d: +// LV(a,b,c,d, t,x,y) = +// a*x - b*x*y, +// c*x*y - d*y; +// +// // Solved using the "standard" fourth-order method: +// process = rk_solve_4( +// 0.01, // time step +// LV(0.1,0.02,0.03,0.4), // LV() with random parameters +// (3,4) // initial values +// ); +// ``` +// +// #### References +// +// * +//------------------------------------------------------------------------ +rk_solve(ts,ks, ni,h, eq,iv) = doit +with { + T = ba.time * h; + O = outputs(ts); + N = outputs(eq); + + // solution for the current tick, calculated at the previous + // tick or `iv` if T == 0 (first tick). + curr = par(i,N, ck_iv(ba.pick(iv,i))) with { + ck_iv = case { + (0) => _; (0.0) => _; // optimization + (x) => select2(ba.time, x); + }; + }; + + // Why not simply `doit = tick ~ curr` ? This would output the + // solution for T+h time. And we can't just add `: par(i,N,mem)`, + // this won't work at T == 0 time if iv != 0, see ck_iv above. + doit = (si.bus(N) <: tick, si.bus(N)) ~ curr : + si.block(N), si.bus(N); + + // repeat `step` `ni` times using the `h/ni` time step, outputs + // the solution for T+h time (next tick). + tick = seq(i,ni, step(ts,ks, T+i*h/ni, h/ni, eq)); + + // main function, outputs the solution for t+h time. + step(ts,ks, t,h, eq) = + seq(i,O, push_k(i+1, vec(i), eqt(i))) : + ro.interleave(N,O+1) : par(i,N, vec(O)) + with { + push_k(K, vec, eqt) = si.bus(N*K) <: si.bus(N*K), push + with { + push = ro.interleave(N,K) : par(i,N, vec) : eqt; + }; + + vec(K) = _, par(i,K, *(ba.pick(ks, K*(K-1)/2 + i))) :> _; + eqt(K) = eq(t + h * ba.pick(ts, K)) : par(i,N, *(h)); + }; +}; + +// rk_solve() with the "standard" 1-4 tableaux and ni = 1 +rk_solve_1 = rk_solve((0), (1), 1); +rk_solve_2 = rk_solve((0,1/2), (1/2, 0,1), 1); +rk_solve_3 = rk_solve((0,1/2,1), (1/2,-1,2, 1/6,2/3,1/6), 1); +rk_solve_4 = rk_solve((0,1/2,1/2,1), (1/2,0,1/2,0,0,1, 1/6,1/3,1/3,1/6), 1); diff --git a/research/physical-voice-modeling/sources/frontiers-2023-ddsp-review.html b/research/physical-voice-modeling/sources/frontiers-2023-ddsp-review.html new file mode 100644 index 0000000..b527b6e --- /dev/null +++ b/research/physical-voice-modeling/sources/frontiers-2023-ddsp-review.html @@ -0,0 +1,102 @@ + + +Frontiers | A review of differentiable digital signal processing for music and speech synthesis + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

REVIEW article

Front. Signal Process., 11 January 2024

Sec. Audio and Acoustic Signal Processing

Volume 3 - 2023 | https://doi.org/10.3389/frsip.2023.1284100

A review of differentiable digital signal processing for music and speech synthesis

  • 1. Centre for Digital Music, School of Electronic Engineering and Computer Science, Queen Mary University of London, London, United Kingdom

  • 2. Dyson School of Design Engineering, Imperial College London, London, United Kingdom

Abstract

The term “differentiable digital signal processing” describes a family of techniques in which loss function gradients are backpropagated through digital signal processors, facilitating their integration into neural networks. This article surveys the literature on differentiable audio signal processing, focusing on its use in music and speech synthesis. We catalogue applications to tasks including music performance rendering, sound matching, and voice transformation, discussing the motivations for and implications of the use of this methodology. This is accompanied by an overview of digital signal processing operations that have been implemented differentiably, which is further supported by a web book containing practical advice on differentiable synthesiser programming (https://intro2ddsp.github.io/). Finally, we highlight open challenges, including optimisation pathologies, robustness to real-world conditions, and design trade-offs, and discuss directions for future research.

1 Introduction

Audio synthesis, the artificial production of sound, has been an active field of research for over a century. Early inventions included entirely new categories of musical instruments (; Ssergejewitsch, 1928) and the first machines for artificial speech production (; ), while the latter half of the 20th century saw a proliferation of research into digital methods for sound synthesis, built on advances in signal processing (Keller, 1994; Smith, 2010) and numerical methods (). Applications of audio synthesis have since come to permeate daily life, from music (Holmes, 2008), through voice assistant technology, to the sound design in films, TV shows, video games, and even the cockpits of cars ().

In recent years, the field has undergone something of a technological revolution. The publication of WaveNet (van den Oord et al., 2016), an autoregressive neural network which produced a quantised audio signal sample-by-sample, first illustrated that deep learning might be a viable methodology for audio synthesis. Over the following years, new techniques for neural audio synthesis—as these methods came to be known—abounded, from refinements to WaveNet (Oord et al., 2018) to the application of entirely different classes of generative model (; Kumar et al., 2019; Kong et al., 2020; ), with the majority of work focusing on speech (Tan et al., 2021) and music (Huzaifah and Wyse, 2021) synthesis.

Nonetheless, modelling audio signals remained challenging. Upsampling layers, crucial components of workhorse architectures such as generative adversarial networks () and autoencoders, were found to cause undesirable signal artifacts (Pons et al., 2021). Similarly, frame-based estimation of audio signals was also found to be more challenging than might naïvely be assumed, due to the difficulty of ensuring phase coherence between successive frames, where frame lengths are independent of the frequencies contained in a signal ().

Aiming to address such issues, one line of research explored the integration of domain knowledge from speech synthesis and signal processing into neural networks. Whilst some methods combined the outputs of classical techniques with neural networks (Valin and Skoglund, 2019), others integrated them by expressing the signal processing elements differentiably (Wang et al., 2019b; Juvela et al., 2019). This was crystalized in the work of , who introduced the terminology differentiable digital signal processing (DDSP). In particular, Engel et al. suggested that some difficulties in neural audio synthesis could be explained by certain biases induced by the underlying models. The proposed advantage of DDSP was thus to gain a domain-appropriate inductive bias by incorporating a known signal model to the neural network. Implementing the signal model differentiably allowed loss gradients to be backpropagated through its parameters, in a manner similar to differentiable rendering (Kato et al., 2020).

In subsequent years, DDSP was applied to tasks including music performance synthesis (Jonason et al., 2020; Wu et al., 2022c), instrument modelling (Renault et al., 2022), synthesiser sound matching (Masuda and Saito, 2021), speech synthesis and voice transformation (), singing voice synthesis and conversion (Nercessian, 2023; Yu and Fazekas, 2023), sound-effect generation (Hagiwara et al., 2022; ). The technology has also been deployed in a number of publicly available software instruments and real-time tools.1Figure 1 illustrates the general structure of a typical DDSP synthesis system and we list included papers in Table 1.

FIGURE 1

TABLE 1

AuthorsYearContributions
Speech Synthesis
Valin and Skoglund2019LPC integration to WaveRNN
Wang et al.2019aNeural source-filter (NSF)
Juvela et al.2019Differentiable LPC
Wang and Yamagishi2019Differentiable sinc FIR design
Wang et al.2019bFurther NSF models
Wang and Yamagishi2020Cyclic noise source for NSF
Liu et al.2020Neural homomorphic vocoder (NHV)
Mv and Ghosh2020Fully differentiable source-filter model
Tian et al.2020Multi-band LPC
Vipperla et al.2020Bunched LPC
Fabbro et al.2020Differentiable harmonic-plus-noise for speech
Nercessian2021Harmonic-plus-noise for voice conversion
Subramani et al.2022Differentiable LPC estimation
Choi et al.2023aHybrid model with self-supervised disentanglement
Kaneko et al.2022Differentiable ISTFT-based vocoder
Webber et al.2023Differentiable ISTFT-based vocoder
Watts et al.2023Differentiable pitch synchronous overlap add
Südholt et al.2023Differentiable digital waveguide (Kelly-Lochbaum)
Song et al.2023Hybrid model combining DDSP with GAN vocoder
Music Synthesis
Engel et al.2020aDDSP library; differentiable spectral modelling synthesiser
Zhao et al.2020NSF applied to musical instrument synthesis
Michelashvili and Wolf2020Hierarchical NSF model
Castellon et al.2020DDSP-based performance rendering
Jonason et al.2020DDSP-based performance rendering
Caillon and Esling2021Hybrid real-time audio generative model
Carney et al.2021Efficient in-browser DDSP implementation; numerically stable TF.js kernels
Hayes et al.2021Differentiable waveshaping synthesiser
Masuda and Saito2021Differentiable subtractive synthesiser
Caspe et al.2022Differentiable FM synthesiser
Diaz et al.2023Differentiable modal synthesiser
Shan et al.2022Differentiable wavetable synthesiser
Kawamura et al.2022DDSP-based mixture model for synthesis parameter estimation
Renault et al.2022Differentiable piano model; explicit inharmonicity modelling
Wu et al.2022cDDSP-based performance modelling
Masuda and Saito2023Semi-supervised hybrid training; differentiable ADSR
Ye et al.2023Neural architecture search over differentiable FM synthesisers
Shier et al.2023Hybrid NSF model for percussion synthesis
Singing Voice Synthesis
Alonso and Erkut2021Experiments on autoencoder from Engel et al. (2020a) for singing voice synthesis
Wu et al.2022aDifferentiable subtractive singing voice synthesiser
Guo et al.2022aDifferentiable filtering of sine excitation for adversarial SVC
Yoshimura et al.2023Differentiable mel cepstral synthesis filter21
Nercessian2023Differentiable WORLD vocoder
Yu and Fazekas2023Glottal-flow wavetable; efficient all-pole IIR training algorithm and implementation
Other
Shynk1989Gradient-based IIR optimisation
Back and Tsoi1991Efficient gradient-based training algorithms for FIR and IIR based neural networks
Campolucci et al.1995Approximate online learning algorithms for IIR networks
Bhattacharya et al.2020Differentiable IIR filters with instantaneous backpropagation through time
Kuznetsov et al.2020Differentiable IIR filters with truncated backpropagation through time
Nercessian2020Differentiable IIR filters via frequency sampling
Engel et al.2020bDifferentiable additive sinusoidal model; self-supervised hybrid training
Turian and Henry2020Experiments on differentiable frequency estimation pathologies
Turian et al.2021Differentiable modular synthesiser; billion sound dataset
Martinez Ramirez et al.2021Stochastic approximation of black-box signal processor gradients
Nercessian et al.2021Differentiable hyperconditioned IIR filters; stability preserving activations
Colonel et al.2022Random polynomial sampling for differentiable IIR self-supervision
Hagiwara et al.2022Experiments on animal vocal sound modelling via DDSP
Lee et al.2022Differentiable artificial reverberation
Steinmetz et al.2022aNeural proxies for DDSP; evaluation of gradient estimation methods
Barahona-Ríos and Collins2023Sound effect synthesis with differentiable multiband noise synthesiser
Carson et al.2023Differentiable grey-box phaser model; differentiable LFO estimation
Hayes et al.2023Differentiable frequency estimation; surrogate model for sinusoidal oscillator
Schulze-Forster et al.2023Unsupervised source separation with differentiable source models

A summary of DDSP synthesis papers reviewed in compiling this article. Papers are grouped by major application area. Those which are applied to more than one area are grouped with their primary application.

Differentiable signal processing has also been applied in tasks related to audio engineering, such as audio effect modelling (Kuznetsov et al., 2020; Lee et al., 2022; ), automatic mixing and intelligent music production (Martinez Ramirez et al., 2021; Steinmetz et al., 2022a), and filter design (). Whilst many innovations from this work have found use in synthesis, and vice versa, we do not set out to comprehensively review these tasks areas. Instead, we address this work where it is pertinent to our discussion of differentiable audio synthesis, and refer readers to the works of Ramírez et al. (2020), Moffat and Sandler (2019), , for reviews of the relevant background, and to the work of Steinmetz et al. (2022b) for a summary of the state of differentiable signal processing in this field.

In the wake of a proliferation of work applying DDSP to audio synthesis, we make two key observations. Firstly, DDSP is increasingly acknowledged as a promising methodology, and secondly, the application of DDSP presents non-trivial challenges that have only recently begun to be thoroughly addressed in the literature. We argue that this disparity between successful applications and demonstrations of fundamental issues such as optimisation instability leads to a degree of ambiguity, rendering it unclear whether DDSP is appropriate for specific task, or even likely to work at all. Consequently, this article aims to clearly delineate the capabilities and limitations of DDSP-based methods, through a comprehensive treatment of existing research. Additionally, we endeavour to consolidate the wide variety of techniques under the DDSP umbrella, particularly across the music and speech domains, aiming to facilitate future research and prevent the duplication of efforts in these intersecting fields.

The terms

differentiable digital signal processing

and

DDSP

have been ascribed various meanings in the literature. For the sake of clarity, whilst also wishing to acknowledge the contributions of

, we therefore adopt the following disambiguation in this article.

  • 1. We use the general term differentiable digital signal processing and the acronym DDSP to describe the technique of implementing digital signal processing operations using automatic differentiation software.

  • 2. To refer to Engel, et al.‘s Python library, we use the term the DDSP library.

  • 3. We refer to the differentiable spectral modelling synthesiser and neural network controller introduced by , like other work, in terms of their specific contributions, e.g., Engel, et al.‘s differentiable spectral-modelling synthesiser.

2 Applications and tasks

A high level view of the tasks discussed in this section is given in Figure 3. In this section, we survey the tasks and application areas in which DDSP-based audio synthesis has been used, focusing on two goals. Firstly, we aim to provide sufficient background on historical approaches to contextualize the discussion on applications of differentiable signal processing to audio synthesis. Secondly, we seek to help practitioners in the task areas listed below, and in related fields, answer the question, “what is currently possible with differentiable digital signal processing?” For readers interested in the differing considerations in speech and music synthesis, we refer to the discussion by Schwarz (2007).

2.1 Musical audio synthesis

Synthesisers play an integral role in modern music creation, offering musicians nuanced control over musical timbre Holmes (2008). Applications of audio synthesis are diverse, ranging from faithful digital emulation of acoustic musical instruments to the creation of unique and novel sounds. Schwarz (2007) proposed a division of techniques for musical audio synthesis into parametric–including signal models, such as spectral modelling synthesis (Serra and Smith, 1990), and physical models, such as digital waveguides (Smith, 1992)–and concatenative families–which segment, reassemble, and align samples from corpora of pre-recorded audio (Schwarz, 2006).2 We propose an updated version of this classification in Figure 2, accommodating developments in neural audio synthesis and DDSP.

FIGURE 2

. DDSP methods (bold) offer a combination of data-driven and parametric characteristics. This diagram is illustrative of high level relationships, and is not intended to exhaustively catalogue all audio synthesis techniques.

FIGURE 3

Compared to other domains, music has particularly stringent requirements for audio synthesisers. Real-time inference is a necessity for integration of synthesisers into digital musical instruments, where action-sound latencies above 10 ms are likely to be disruptive (Jack et al., 2018). This has previously been challenging to address with generative audio models (Huzaifah and Wyse, 2021), particularly at the high sample rates demanded by musical applications. Expressive control over generation is also necessary in order to provide meaningful interfaces for musicians (). The reliability of this control is also crucial, yet often challenging. Pitch coherence, for example, is a known issue with GAN-based audio generation (Song et al., 2023). Further, the comparative scarcity of high quality musical training data further compounds these issues for generative models.

2.1.1 Musical instrument synthesis

In response to the challenges of neural music synthesis, implemented a differentiable spectral modelling synthesiser (Serra and Smith, 1990) and effectively replaced its parameter estimation algorithm with a recurrent neural network. Specifically, the oscillator bank was constrained to harmonic frequencies, an inductive bias which enabled monophonic modelling of instruments with predominantly harmonic spectra, including violin performances from the MusOpen library3 and instruments from the NSynth dataset (). The resulting model convincingly reproduced certain instrument sounds from as little as 13 min of training data. It also allowed, through its low dimensional control representation, similarly convincing timbre transfer between instruments ().

Building on this success, a number of subsequent works applied various synthesis methods to monophonic and harmonic instrument synthesis including waveshaping synthesis (Hayes et al., 2021), frequency modulation synthesis (; Ye et al., 2023), and wavetable synthesis (Shan et al., 2022).

These works approach musical audio synthesis as the task of modelling time-varying harmonics and optionally filtered noise, utilizing input loudness and fundamental frequency signals as conditioning. Hayes et al. (2021) and Shan et al. (2022) focus on improving computational efficiency, demonstrating how learned waveshapers and wavetables, respectively, can reduce the inference-time cost. and Ye et al. (2023) focus on control and interpretability of the resulting synthesiser. In contrast to the dense parameter space of an additive synthesier, they apply FM synthesis which, despite its complex parameter interrelationships, facilitates user intervention post-training due to its vastly smaller parameter count. Ye et al. (2023) built upon the work of , further tailoring the FM synthesiser to a target instrument through neural architecture search (Ren et al., 2022) over modulation routing.

Two common characteristics of the works discussed in this section are a reliance on pitch tracking, and the assumption of predominantly harmonic spectra. This, we argue, is due to the difficulty of performing gradient descent over oscillator frequency, discussed further in Section 3.2.2. Consequently, adaptation of such methods to polyphonic, unpitched, and non-harmonic instruments, or to modelling inharmonicity induced by stiffness and nonlinear acoustic properties, is challenging. Nonetheless, domain-specific solutions have been proposed. Renault et al. (2022), for example, proposed a method for polyphonic piano synthesis, introducing an extended pitch to model string resonance after note releases, explicit inharmonicity modeling based on piano tuning, and detuning to replicate partial interactions on piano strings. presented a differentiable signal model of inharmonic percussive sounds using a bank of resonant IIR filters, which they trained to match the frequency responses produced by modal decomposition using the finite element method. This formulation was able to converge on the highly inharmonic resonant frequencies produced by excitation of arbitrarily shaped rigid bodies, with varying material parameters.

2.1.2 Timbre transfer

Building on the success of neural style transfer in the image domain (), timbre transfer emerged as a task in musical audio synthesis. define timbre transfer as the task of altering “timbre information in a meaningful way while preserving the hidden content of performance control.” They highlight that it requires the disentanglement of timbre and performance, giving the example of replicating a trumpet performance such that it sounds like it was played on a flute while maintaining the original musical expression. Specific examples of timbre transfer using generative models include and Huang et al. (2019).

Timbre transfer has been explored a number of times using DDSP. ’s differentiable spectral modelling synthesiser and the associated f0 and loudness control signals naturally lend themselves to the task, effectively providing a low dimensional representation of a musical performance while the timbre of a particular instrument is encoded in the network’s weights. During inference, f0 and loudness signals from any instrument can be used as inputs, in a many-to-one fashion. A similar task formulation was explored by Michelashvili and Wolf (2020), , Hayes et al. (2021), and .

2.1.3 Performance rendering

Performance rendering systems seek to map from a symbolic musical representation to audio of that musical piece such that the musical attributes are not only correctly reflected, but expressive elements are also captured. ; Jonason et al. (2020); Wu D.-Y. et al. (2022) augmented Engel et al.‘s differentiable spectral-modelling synthesiser with a parameter generation frontend that received MIDI for performance rendering. and Jonason et al. (2020) used recurrent neural networks to create mappings from MIDI to time-varying pitch and loudness controls. Wu D.-Y. et al. (2022) presented a hierarchical generative system to map first from MIDI to expressive performance attributes (articulation, vibrato, timbre, etc.), and then to synthesis controls.

2.1.4 Sound matching

Synthesizer sound matching, also referred to as automatic synthesizer programming, aims to find synthesiser parameters that mostly closely match a target sound. Historical approaches include genetic algorithms (Horner et al., 1993), while deep learning has more recently gained popularity (Yee-King et al., 2018; ).

Masuda and Saito (2021) proposed to approach sound matching with a differentiable audio synthesiser, in contrast to previous deep learning methods which used a parameter loss function. In later work (Masuda and Saito, 2023), they extended their differentiable synthesiser introduced a self-supervised training scheme blending parameter and audio losses.

2.2 Speech synthesis

Artificial generation of human speech has long fascinated researchers, with its inception tracing back to at Bell Telephone Laboratories, who introduced The Vocoder, a term now widely adopted (). Subsequent research has led to a substantial body of work on speech synthesis, driven by escalating demands for diverse and high-quality solutions across applications such as smartphone interfaces, translation devices, and screen readers (Tamamori et al., 2017).

Classical DSP-based methods for speech synthesis can be broadly split into three categories: articulatory (Shadle and Damper, 2001; ), source-filter/formant (Seeviour et al., 1976), and concatenative (Khan and Chitode, 2016). This aligns with the parametric and concatentivative distinction due to Schwarz (2007), discussed in section 2.1. Specifically, articulatory and source-filter/formant synthesis are parametric methods. Moreover, articulatory synthesis techniques are related to physical modeling approaches, as they strive to directly replicate physical movements in the human vocal tract. Unit-selection techniques (Hunt and Black, 1996), a subset of concatenative synthesis, use a database of audio segmented into speech units (e.g., phonemes) and an algorithm to sequence units to produce speech. Subsequent developments in machine learning gave rise to statistical parametric speech synthesis (SPSS) systems. Unlike unit selection, SPSS systems removed the need to retain speech audio for synthesis, focusing instead on developing models, such as hidden Markov models, to predict parameters for parametric speech synthesizers (Zen et al., 2009).

In this review, two subtasks of speech synthesis are particularly pertinent, namely, text-to-speech (TTS) and voice transformation. TTS involves converting text into speech, a process often synonymous with the term speech synthesis itself (Tan et al., 2021). Voice transformation, in contrast, focuses on altering roperties of an existing speech signal, including as voice identity and mood (Stylianou, 2009). A central component in both tasks is the vocoder, responsible for generating speech waveforms from acoustic features.

As neural audio synthesis became feasible, neural vocoders such as the autoregressive WaveNet van den Oord et al. (2016) quickly became state-of-the-art for audio quality. However, WaveNet’s sequential generation was prohibitively costly, motivating the development of more efficient neural vocoders. Techniques included cached dilated convolutions (Ramachandran et al., 2017), optimized recurrent neural networks (Kalchbrenner et al., 2018), enabled parallel generation using flow-based models (Oord et al., 2018; Prenger et al., 2019), denoising diffusion probabilistic models (DDPMs) (Kong et al., 2021), and generative adversarial networks (GANs) (Kumar et al., 2019; Kong et al., 2020). GAN-based vocoders have become something of a workhorse in speech tasks, owing to their high quality and fast inference (Matsubara et al., 2022; Song et al., 2023).

2.2.1 DDSP-based vocoders

Computational efficiency is a central consideration in neural vocoders, as inference time is crucial in many application areas. Before explicitly DDSP-based models, researchers began integrating DSP knowledge into networks. Jin et al. (2018) made the connection between dilated convolutions and wavelet analysis, which involves iterative filtering and downsampling steps, and proposed a network structure based on the Cooley-Tukey Fast Fourier Transform (FFT) (), capable of real-time synthesis. Similarly sub-band coding through pseudo-mirror quadrature filters (PQMF) was applied to enable greater parallelisation of WaveRNN-based models (Yu et al., 2020).

Later work saw the integration of models for speech production. The source-filter model of voice production has proven particularly fruitful—LPCNet (Valin and Skoglund, 2019) augmented WaveRNN (Kalchbrenner et al., 2018) with explicit linear prediction coefficient () calculation. This allowed a reduction in model complexity, enabling real-time inference on a single core of an Apple A8 mobile CPU. Further efficiency gains were made subsequently through multi-band linear prediction (Tian et al., 2020) and sample “bunching” (Vipperla et al., 2020). Subramani et al. (2022) later observed that the direct calculation of LPCs limited LPCNet to acoustic features for which explicit formulas were known. To alleviate this issue, they proposed to backpropagate gradients through LPCs, enabling their estimation by a neural network.

Despite improved efficiency, Juvela et al. (2019) noted that LPCNet’s autoregression is nonetheless a bottleneck. To address this, they proposed GAN-Excited Linear Prediction (GELP) which produced the residual signal with a GAN signal, with explicit computation of LPCs from acoustic features, thus limiting autoregression to the synthesis filter and parallelising excitation.

LPCNet and GELP both incorporated DSP-based filters into a source-filter enhanced neural vocoder. Conversely, Wang et al. (2019b) proposed the neural source filter model which used DSP-based model for the excitation signal (i.e., harmonics plus noise) and a learned neural network filter. Through ablations, they demonstrated the benefit of using such sinusoidal excitation of the neural filters. Subsequent improvements to their neural source filter (NSF) method included the addition of a differentiable maximum voice frequency crossover filter (Wang and Yamagishi, 2019), and a quasi-periodic cyclic noise excitation (Wang and Yamagishi, 2020).

Combining these approaches, Mv and Ghosh (2020) and Liu et al. (2020) proposed to use differentiable implementations of DSP-based excitation and filtering, and parameterise these with a neural network. This allowed audio sample rate operations to be offloaded to efficient DSP implementations, while the parameter estimation networks could operate at frame level.

Eschewing the source-filter approach entirely, Kaneko et al. (2022) demonstrated that the last several layers in a neural vocoder such as HiFi-GAN (Kong et al., 2020) could be replaced with an inverse short-time Fourier transform (ISTFT). The number of replaced layers can be tuned to balance efficiency and generation quality. Webber et al. (2023) also used a differentiable ISTFT, reporting a real-time factor of over 100× for speech at 22.05 kHz on a high-end CPU. In contrast to a GAN, Webber et al. learned a compressed latent representation and by training a denoising autoencoder. Nonetheless, Watts et al. (2023) noted that neural vocoders which run in real-time on a CPU often rely on powerful CPUs, limiting use in low-resource environments. In particular, they highlight Alternative and Augmentative Communication (AAC) devices, which are used by people with speech and communication disabilities (Murray and Goldbart, 2009). Watts et al. proposed a method using the ISTFT and pitch-synchronous overlap add (PSOLA), with lightweight neural networks operating at rates below the audio sample rate.

Song et al. (2023) highlight that GAN vocoders struggle with periodicity, especially during prolonged vocalisations, and attribute this to unstable parallel generation. This is compounded by over-smoothing of acoustic features output by TTS or voice transformation models. They note that DSP vocoders can be more robust and less prone to pitch and phase errors, and thus propose to use a pre-trained neural homomorphic vocoder (Liu et al., 2020) to generate mel-spectrograms for a GAN vocoder, which they confirmed experimentally to improve generalisation to unseen speakers. Even in DSP-based models, however, design choices can influence robustness. Wang and Yamagishi (2020) observed that the choice of source signal interacts with the speaker’s gender: sinusoidal excitation performs better for female voices than for male voices, while a cyclic noise signal improves performance on male voices. Additionally, they note the sine-based source signals may lead to artefacts during less periodic, expressive vocalisations such as creaky or breathy voices.

2.2.1.1 Control

DDSP-based methods can also facilitate control over speech synthesis. distinguish between two categories of method: those that necessitate control and those that offer optional control. The authors advocate for the latter, arguing that disentangling inputs into components—namely, pitch, loudness, rhythm, and timbre—provides greater flexibility, proposing a method that enables this. These disentangled factors are then utilized to drive a differentiable harmonic plus noise synthesizer, although the authors note that there is room for improvement in the quality of the synthesis.

also decompose the voice into four aspects: pitch, amplitude, linguistic features, and timbre. They identify a that control parameters are often entangled in a mid-level representation or latent space, in existing neural vocoders, restricting control and limiting models’ potential as co-creation tools. To address this, in contrast to the single network of , they combine dedicated modules for disentangling controls. They evaluate their methodology through a range of downstream tasks, using a modified parallel WaveGAN model (Yamamoto et al., 2020) with sinusoidal and noise conditioning, along with timbre and linguistic embeddings. Reconstruction was found to be nearly identical in a copy synthesis task.

2.2.2 Text-to-speech synthesis

Text-to-speech (TTS) is the task of synthesising intelligible speech from text, and has received considerable attention due to its numerous commercial applications. Tan et al. (2021) provide a comprehensive review of the topic, including references to reviews on classical methods and historical perspectives. While most research on DDSP audio synthesis focuses on vocoding, some studies have also assessed its application in TTS systems (Juvela et al., 2019; Wang and Yamagishi, 2019; Liu et al., 2020; ; Song et al., 2023).

2.2.3 Voice transformation

An application of speech synthesis systems is the ability to modify and transform the voice. Voice transformation is an umbrella term used to refer to a modification that is made to a speech signal that alters one or more aspects of the voice while keeping the linguistic content intact Stylianou (2009). Voice conversion (VC) is a subtask of voice transformation that seeks to modify a speech signal such that a utterance from a source speaker sounds like it was spoken by a target speaker. Voice conversion is a longstanding research task () that has continued to receive significant attention in recent years, demonstrated by the biannual voice conversion challenges operating in 2016, 2018, and 2020. An overview of the field is provided by (Mohammadi and Kain, 2017) and more recent applications of deep learning towards VC is reviewed by (Sisman et al., 2021).

Nercessian (2021) incorporated a differentiable harmonic-plus-noise synthesiser () to a end-to-end VC model, augmenting it with convolutional pre- and post-nets to further shape the generated signal. This formulation allowed end-to-end training with perceptually informed loss functions, as opposed to requiring autoregression. Nercessian also argued that such “oscillator driven networks” are better equipped to produce coherent phase and follow pitch conditioning.

explored zero-shot voice conversion with their NANSY++ model, which was facilitated by the distentangled intermediate representations. Their approach was to replace the timbre embedding with that of a target speaker, while also transforming pitch conditioning for the sinusoidal generator to match the target.

In voice designing or speaker generation (Stanton et al., 2022), the goal is to provide a method to modify certain characteristics of a speaker and generate a completely unique voice. Creation of new voice identifies has application for a number of downstream applications including audiobooks and speech-based assistants. fit normalising flow models, conditioned on age and gender attributes, to generate synthesis control parameters for this purpose.

2.3 Singing voice synthesis

Singing voice synthesis (SVS) aims to generate realistic singing audio from a symbolic music representation and lyrics, a task that inherits challenges from both speech and musical instrument synthesis. The musical context demands an emphasis on pitch and timing accuracy (Saino et al., 2006), as well as ornamentation through dynamic pitch and loudness contours. Audio is typically expected at the higher resolutions, typical of musical recordings (i.e., 44.1 kHz CD quality vs. 16 kHz or 24 kHz as often used for speech), incurring additional computational complexity (). Applications of SVS include performance rendering from scores, modifying or correcting existing performances, and recreating performances in the likeness of singers (Rodet, 2002).

SVS methods originated in the 1960s, evolving from speech synthesis systems, and early methods can be similarly coarsely categorised into waveform and concatenative techniques (Rodet, 2002). A historical perspective is provided by , and statistical methods were later introduced by Saino et al. (2006).

Early deep learning approaches to SVS included simple feed-forward networks (Nishimura et al., 2016) and a WaveNet-based autoregressive model , which showed improvements over then state-of-the-art concatenative synthesisers. Deep learning-based SVS systems rely on large, annotated datasets for training, necessitated by the diverse vocal expressions in musical singing (Yu and Fazekas, 2023). The scarcity of such singing datasets was noted by and , contrasting with advances in TTS research predicated on open datasets like Hi-Fi TTS () and LJSpeech (Ito and Johnson, 2017). The need for such data, including for specific vocal techniques like growls and rough voice (), motivated self-supervised systems incorporating DDSP like NANSY++ (), which supported high-quality resynthesis with a fraction of the OpenCPOP dataset (Wang et al., 2022). Wu D.-Y. et al. (2022) also found that the differentiable vocoder SawSing performed well in resource-limited training.

and note that the black-box nature of deep learning limits analytical understanding of learned mappings and the ability to gain domain knowledge from trained SVS systems. Gomez et al. acknowledged that this weakens the link between acoustics research and engineering, and foreshadowed DDSP-like innovation, hypothesising that “transparent” algorithms might restore it. Indeed, exploitability has motivated numerous DDSP-based SVS systems Yu and Fazekas (2023); ; Nercessian (2023). Yu and Fazekas highlight the potential for their differentiable LPC method to be used for voice decomposition and analysis. Nercessian (2023) notes that the differentiable harmonic-plus-noise synthesiser of has limited exploitability, and proposed as an alternative a differentiable implementation of the non-parametric WORLD feature analysis and synthesis model.

A further impetus for applying DDSP to SVS is audio quality, with two major challenges in neural vocoders being phase discontinuities and accurate pitch reconstruction. Reconstructing phase information from mel-spectrograms is difficult, and phase discontinuities can cause unnatural sound glitches and voice tremors (Wu D.-Y. et al., 2022). Differentiable oscillators, like the sawtooth oscillator proposed by Wu et al., address this by enforcing phase continuity.

Accurate pitch control and reconstruction are known challenges for neural vocoders (Hono et al., 2021). Yoshimura et al. (2023) argue that non-linear filtering operations in neural vocoders obscure the relationship between acoustic features and output, complicating accurate pitch control. They propose differentiable linear filters in a source-filter model to address this. Nercessian (2023) stress the importance of accurate pitch control and reconstruction for musical applications, a feature inherent to their differentiable WORLD synthesiser.

Computational efficiency is less emphasized in SVS literature compared to speech synthesis; however, GOLF Yu and Fazekas (2023) required less than 40% GPU memory during training and provided nearly 10x faster inference speed than other DDSP SVS methods (which already supported real-time operation). This fast inference speed can facilitate downstream applications, including real-time musicking contexts or functioning in low-resource embedded devices.

2.3.1 Singing voice conversion

The task of singing voice conversion (SVC) aims to transform a recording of a source singer such that it sounds like it was sung by a given target singer. This task, related to voice conversion, introduces further challenges (Huang et al., 2023). Specifically, there are a wider range of attributes to model, such as pitch contours, singing styles, and expressive variations. Further, perceived pitch and timing must adhere to the source material while incorporating stylistic elements from the target. Variations of this task include in-domain transfer, where target singing examples are available, and the more complex cross-domain transfer, where the target must be learned from speech samples (Huang et al., 2023) or from examples in a different language (Polyak et al., 2020).

The 2023 SVC Challenge (Huang et al., 2023) illustrated the applicability of DDSP methods for SVC. According to a subjective evaluation of naturalness, the top two performing models were both based on DSPGan (Song et al., 2023), which uses a pre-trained Neural Homomorphic Vocoder (Liu et al., 2020) to generate mel-spectrograms for resynthesis using a differentiable source-filter based model. However, the organisers noted that it would be premature to conclude that DSPGan is unilaterally the best SVC model, given the small sample size. Nonetheless, five other teams incorporated neural source-filter (Wang et al., 2019b) based components into HiFi-GAN (Kong et al., 2020) to improve generalisation, implying that incorporation of domain knowledge via DDSP offers some benefit.

Nercessian (2023) implemented a differentiable WORLD vocoder, which was also applied to SVC. They argue that this implementation, paired with a deterministic WORLD feature encoder and a learned decoder, offers increased control over the pitch contour while ensuring phase coherence–both of which are challenging for neural vocoders. Further, the interpretable feature representation and extraction procedure allows for direct manipulation of audio attributes, as well as pitch and loudness conditioned timbre transfer, as described by .

3 Differentiable digital signal processing

In this section we survey differentiable formulations of signal processing operations for audio synthesis. Whilst many were first introduced for other tasks, their relevance to audio synthesis is often clear as many correspond to components of classical synthesis algorithms. For this reason, we choose to include them here.

Our aim in this section is to provide an overview of the technical contributions that underpin DDSP in order to make clearer the connections between methods, as well as facilitate the identification of open directions for future research. We also hope that this section will act as a technical entry point for those wishing to work with DDSP. We thus do not intend to catalogue every application of a given method, but instead endeavour to acknowledge technical contributions and any prominent variations. Readers interested in further practical advice on implementing DDSP techniques for audio synthesis should refer to the accompanying web book, available at https://intro2ddsp.github.io/.

3.1 Filters

3.1.1 Infinite impulse response

A causal linear time-invariant (LTI) filter with impulse response h(t) is said to have an infinite impulse response (IIR) if there does not exist a time T such that h(t) = 0 for all t > T. In the case of digital filters, this property arises when the filter’s difference equation includes a nonzero coefficient for a previous output.

We present the dominant methods for differentiable IIR filtering in Table 2.

TABLE 2

TypeReferencesRepresentationParametersTraining algorithmStability constraintsTime varying
First OrderKuznetsov et al. (2020)Directb0, b1, a1TBPTT|a1| < 1✗
Shelving filterFreq. (fc), gain (G)IBPTT—✗
Second OrderKuznetsov et al. (2020)Directb0, b1, b2, a1, a2TBPTT (TDF-II)|a1| ≤ 0.5✗
|a2| < 0.5
Kuznetsov et al. (2020)State-variable filterCutoff (g), damping (R), band gains (cLP, cHP, cBP)TBPTTg = 1✗
PeakFreq. (fc), bandwidth (fb)
gain (G)
IBPTT (DF-II)—✗
Nercessian (2020)Low/high shelf, peakFreq. (ω0), gain (A)
Q-factor (q)
Freq. Sampling—✗
Nercessian et al. (2021)Directb0, b1, b2, a1, a2Freq. Samplinga1 ← 2 tanh a1Via conditioning
Pole/zeroFreq. SamplingVia conditioning
Low/high shelf, peakFreq. (ω0), gain (A)
Q-factor (q)
Freq. SamplingVia conditioning
Yu and Fazekas (2023)Direct (all-pole)a1, a2TBPTT (DF-I)a1 ← 2 tanh a1Framewise
All-passBreak freq. (ωb), thru gain (g1), feedback gain (g2)Freq. Sampling—Framewise
Arbitrary orderKuznetsov et al. (2020)Linear state-spaceTransition matrices (A, B, C, D)TBPTT✗
Mv and Ghosh (2020)LPCReflection Coefficients (km)TBPTTkm ∈ (−1, 1)Framewise
Subramani et al. (2022)LPCReflection Coefficients (km)Autoregressivekm ∈ (−1, 1)Framewise

Differentiable implementations of discrete time IIR filters with trainable parameters. Specific parameterisations, training algorithms, and stability constrains are presented. Recursive filter structure is also indicated where appropriate and when clear from the original manuscript.

3.1.1.1 Recursive methods

Optimising IIR filter coefficients by gradient descent is not a new topic. Several algorithms for adaptive IIR filtering and online system identification rely on the computation of exact or approximate gradients (Shynk, 1989). Moreover, to facilitate the training of locally recurrent IIR multilayer perceptrons (IIR-MLP) (), approximations to backpropagation-through-time (BPTT) have been proposed (). However, prior to widely available automatic differentiation, such methods required cumbersome manual gradient derivations, restricting the exploration of arbitrary filter parametrisations or topologies.

One such training algorithm, known as instantaneous backpropagation through time (IBPTT) ,4 was applied by to a constrained parameterisation of IIR filters, namely, peak and shelving filters such as those commonly found in audio equalisers. This method was tested on a cascade of such filters and used to match the response of target head-related transfer functions (HRTFs). However, the formulation of IBPTT precludes the use of most modern audio loss functions, somewhat hindering the applicability of this method.

Kuznetsov et al. (2020) identified the close relationship between IIR filters and recurrent neural networks (RNNs). In particular, they illustrated that in the case of a simple RNN known as the Elman network (), the two are equivalent when the activations of the Elman network are element-wise linear maps, and the bias vectors are zero. This is illustrated below:

Such RNNs are typically trained with backpropagation through time (BPTT), and more commonly its truncated variant (TBPTT) in which training sequences are split into shorter subsequences.5 Based on this equivalence, Kuznetsov et al. directly applied TBPTT to IIR filters, effectively training various filter structures as linear recurrent networks. To ensure filter stability, they propose simple constraints on parameter initialisation.

A challenge with recursive optimisation is the necessity of memory allocations for each “unrolled” time step. For long sequences, this can result in poor performance and high memory cost. To address this and allow optimisation over high order IIR filters, Yu and Fazekas (2023) provided an efficient algorithm for applying BPTT to all-pole filters. Specifically, for an all-pole filter with coefficients , they showed that the partial derivatives and can be expressed as applications of the same all-pole filter to −y [n − i], and a filter with time-reversed coefficients to , respectively. That is.where denotes the z-transform operator. It is clear from Eqs 2, 3 that these derivatives can be evaluated without the need for a computation graph of unrolled filter timesteps, enabling the use of efficient, recursive IIR implementations.6.

3.1.1.2 Frequency sampling methods

It is common, when working with higher order filters, to factorise the transfer function into a cascade of second order sections in order to ensure numerical stability. It has been reported (Nercessian et al., 2021) that optimising differentiable cascades using BPTT/TBPTT limits the number of filters that can be practically learned in series, motivating an alternate algorithm for optimising the parameters of cascaded IIR filters.

One such approach, proposed by Nercessian (2020), circumvented the need for BPTT by defining a loss function in the spectral domain, with the desired filter magnitude response as the target. This method was used to train a neural network to match a target magnitude response using a cascade of differentiable parametric shelving and peak filters. To compute the frequency domain loss function, the underlying response of the filter must be sampled at some discrete set of complex frequencies, typically selected to be the Kth roots of unity .

This procedure is equivalent to the frequency sampling method for finite-impulse response filter design. That is, by sampling the filter’s frequency response we are effectively optimising an FIR filter approximation to the underlying frequency response. Naturally, this sampling operation results in time-domain aliasing of the filter impulse response, and the choice of K thus represents a trade-off between accuracy and computational expense.

In subsequent work, Nercessian et al. (2021) extended this frequency sampling approach to hyperconditioned IIR filter cascades, to model an audio distortion effect. Hyperconditioning refers to a hypernetwork-like () structure in which the hypernetwork introduces conditioning information to the main model by generating its parameters. In this case, the hypernetwork’s inputs are the user-facing controls of an audio effect, and the main model is a cascade of biquadratic IIR filters.

Whilst filter stability is less of a concern when training a model to produce fixed sets of filter coefficients, the hyperconditioned setting carries a greater risk. Both user error and erroneous model predictions may lead to a diverging impulse response at either inference or training time. For this reason, Nercessian et al. tested three parameterisations of cascaded biquads (coefficient, conjugate pole-zero, and parametric EQ representations), and proposed stability enforcing activations for each. Rather than directly optimising filter magnitude responses, the model was instead optimised using an audio reconstruction loss by applying the filters to an input signal. During optimisation, this was approximated by complex multiplication of the frequency-sampled filter response in the discrete Fourier domain.

Subsequently, this constrained frequency sampling method was applied to the more general task of IIR filter design (). Here, a neural network was trained to parameterise a differentiable biquad cascade to match a given input magnitude response, using synthetic data sampled from the coefficient space of the differentiable filter. However, the authors do note that training a model with higher order filters (N ≥ 64) tended to lead to instability, suggesting that even the frequency sampling approach may be insufficient to solve the aforementioned challenges with cascade depth (Nercessian et al., 2021).

also applied the constrained frequency sampling method to hybrid parallel-cascade filter network structures, for the purpose of generating resonant filterbanks which match the modal frequencies of rigid objects. In comparing filter structures, authors found that the best performance was achieved with a greater number of shallower cascades. Paired with the insight from , this suggests that further research is necessary into the stability and convergence of the frequency sampling method under different filter network structures, as well as the effect of saturating nonlinearities on filter coefficients.

Some applications call for all-pass filters–i.e., filters which leave frequency magnitudes unchanged, but which do alter their phases. optimised all-pass filter cascades directly using an audio reconstruction loss. Due to the difficulty of optimising time-varying filter coefficients, the time-varying phaser filter is piecewise approximated by M framewise time-invariant transfer functions H(m) (z), which are predicted and applied to windowed segments of the input signal. Overlapping windows are then summed such that the constant overlap-add property (COLA) is satisfied.

In the case where an exact sinusoidal decomposition of the filter’s input signal is known, such as in a synthesiser with additive oscillators, the filter’s transfer function can be sampled at exactly the component frequencies of the input. This is applied by Masuda and Saito (2021) to the task of sound-matching with a differentiable subtractive synthesiser.

3.1.1.3 Source-filter models and linear predictive coding

The source-filter model of speech production describes speech in terms of a source signal, produced by the glottis, which is filtered by the vocal tract and lip radiation. This is frequently approximated as the product of three LTI systems, i.e., Y(z) = G(z)H(z)L(z) where G(z) describes the glottal source, H(z) describes the response of the vocal tract, and L(z) is the lip radiation. Often, L(z) is assumed to be a first order differentiator, i.e., L(z) = 1 − z−1, and the glottal flow derivative G′(z) = G(z)L(z) is directly modelled.

Frequently, a local approximation to the time-varying filter H(z) is obtained via linear prediction over a finite time window of length M:where e[n] describes the excitation signal, which is equivalent to the linear prediction residual. The coefficients am are exactly the coefficients of an Mth order all-pole filter. This representation is known as linear predictive coding (LPC).

To the best of our knowledge, Juvela et al. (2019) were the first to incorporate a differentiable synthesis filter into a neural network training pipeline. In their method, a GAN was trained to generate excitation signals e [n], while the synthesis filter coefficients were directly estimated from the acoustic feature input, i.e., non-differentiably. Specifically, given a mel-spectrum input, , where M is the mel-frequency filterbank and is the discrete Fourier transform of a signal window, synthesis filter coefficients am are estimated by approximating the discrete Fourier spectrum, , from which the autocorrelation function is computed and the normal equations are solved for am. In order to backpropagate error gradients through the synthesis filter to the excitation generator, the filter is approximated for training by truncating its impulse response, which is equivalent to the frequency sampling method discussed in Section 3.1.1.2.

LPC has also been used to augment autoregressive neural audio synthesis models. In LPCNet (Valin and Skoglund, 2019), linear prediction coefficients were non-differentiably computed from the input acoustic features, while the sample-level neural network predicted the excitation. However, in subsequent work (Mv and Ghosh, 2020; Subramani et al., 2022) this estimation procedure was made differentiable, allowing synthesis filter coefficients to also be directly predicted by a neural network. As LPC coefficients can easily be unstable, both Subramani et al. (2022) and Mv and Ghosh (2020) opted not to directly predict the LPC coefficients am, but instead described the system in terms of its reflection coefficientski. The fully differentiable Levinson recursion then allowed recovery of the coefficients am. Specifically, where denotes the mth LPC coefficient in a filter of order i (i.e., M = i), the recursion is defined:When ki ∈ (−1, 1) filter stability is thus guaranteed. This is applied by Subramani et al. (2022) in an end-to-end differentiable extension of the LPCNet architecture, again with autoregressive prediction of the excitation signal. Conversely, Mv and Ghosh (2020) employ a notably simpler source model, consisting of a mixture of an impulse train and filtered noise signal. Synthesis filter coefficients were also estimated differentiably by Yoshimura et al. (2023), who used the truncated Maclaurin series of a mel-cepstral synthesis filter to enable FIR approximation.

An alternative approach to modelling the glottal source is offered by Yu and Fazekas (2023), who use a one-parameter (Rd) formulation of the Liljencrants-Fant (LF) model of the glottal flow derivative G′(z). The continuous time glottal source is sampled in both time and the Rd dimension to create a two-dimensional wavetable. To implement differentiable time-varying LPC filtering, the authors opt to use a locally stationary approximation and produce the full signal by overlap-add resynthesis. Rather than indirect paramaterisation of the filter via reflection coefficients, the synthesis filter is factored to second order sections. The coefficient representation and accompanying constraint to the biquad triangle proposed by Nercessian et al. (2021) is then used to enforce stability.

Südholt et al. (2023) apply a differentiable source-filter based model of speech production to the inverse task of recovering articulatory features from a reference recording. To estimate articulatory parameters of speech production, Südholt et al. use a differentiable implementation of the Pink Trombone,7 which approximates the geometry of the vocal tract as a series of cylindrical segments of varying cross-sectional area—i.e., the Kelly-Lochbaum vocal tract model. Instead of independently defining segment areas, these are parameterised by tongue position tp, tongue diameter td, and some number of optional constrictions of the vocal tract. To estimate these parameters, Südholt et al. derive the waveguide transfer function and perform gradient descent using the mean squared error between the log-scaled magnitude response and the vocal tract response estimated by inverse filtering.

3.1.2 Finite impulse response

A LTI filter is said to have a finite impulse response (FIR), if given impulse response h(t) there exists a value of T such that h(t) = 0 for all t > T. In discrete time, this is equivalent to a filter’s difference equation being expressible as a sum of past inputs. Due to the lack of recursion, FIR filters guarantee stability and are less susceptible to issues caused by the accumulation of numerical error. However, this typically comes at the expense of ripple artifacts in the frequency response, or an increase in computational cost to reduce these artifacts.

As with IIR filters, the discrete time FIR filter is equivalent to a common building block of deep neural networks, namely, the convolutional layer8. Again, linear activations and zero bias yield the exact filter formulation:

In practice, we frequently wish to produce a time-varying frequency response in order to model the temporal dynamics of a signal. The stability guarantees and ease of parallel evaluation offered by FIR filters mean they are an appropriate choice for meeting these constraints in a deep learning context, but care must be taken to compensate for issues such as spectral leakage and phase distortion using filter design techniques. Moreover, such compensation must be achieved differentiably.

To the best of our knowledge, the first such example of differentiable FIR filter design was proposed by Wang and Yamagishi (2019). This work applied a pair of differentiable high- and low-pass FIR filters, with a time-varying cutoff frequency fc [m] predicted by a neural network conditioning module.9 The filters are then implemented as windowed sinc filters, with frame-wise impulse responses and .

Whilst Wang et al. manually derive an the loss gradient with respect to fc [m], their implementation relies on automatic differentiation.

While closed form parameterisation of FIR filter families allows for relatively straightforward differentiable filter implementations, the complexity of the resulting frequency responses is limited. However, filter design methods such as frequency sampling and least squares allow for FIR approximations to arbitrary responses to be created. The first differentiable implementation of such a method was proposed by , whose differentiable spectral-modelling synthesiser contained a framewise time-varying FIR filter applied to a white noise signal. To avoid phase distortion and suppress frequency response ripple, Engel et al. proposed a differentiable implementation of the window design method for linear phase filter design.

Specifically, a frequency sampled framewise magnitude response is output by the decoder, where m denotes the frame index and N is the length of the impulse response.10 To recover the framewise symmetric impulse responses , they take the inverse discrete Fourier transform, , for N-point DFT matrix WN. The symmetry of the impulse responses is a sufficient condition for a linear phase response as a function of frequency. To mitigate spectral leakage, a window function is applied to each symmetric impulse response. Finally, the filter is shifted to causal form such that it is centred at for a window length of N samples. The filters are then applied to the signal by circular convolution, achieved via complex multiplication in the frequency domain.

An alternative differentiable FIR parameterisation was suggested by Liu et al. (2020), who adopted complex cepstra as an internal representation. This representation jointly describes the filter’s magnitude response and group delay, resulting in a mixed phase filter response. The authors note group delay exerts an influence over speech timbre, motivating such a design. However, the performance of this method is not directly compared to the linear phase method described above. The approximate framewise impulse response h[m] is recovered from the complex cepstrum as follows:where the exponential function is applied element-wise.

applied an FIR filterbank to a white noise source for sound effect synthesis, but circumvented the need to implement the filters differentiably by pre-computing the filtered noise signal and predicting band gains.

3.2 Additive synthesis

Many audio signals contain prominent oscillatory components as a direct consequence of the physical tendency of objects to produce periodic vibrations (Smith, 2010). A natural choice for modelling such signals, additive synthesis, thus also encodes such a preference for oscillation. Motivated by the signal processing interpretation of Fourier’s theorem, i.e., that a signal can be decomposed into sinusoidal components, additive synthesis describes a signal as a finite sum of sinusoidal components. Unlike representation in the discrete Fourier basis, however, the frequency axis is not necessarily discretised, allowing for direct specification of component frequencies. The general form for such a model in discrete time is thus:where K is the number of sinusoidal components, is a time series of component amplitudes, is the component-wise initial phase, and ω[n] is the time series of instantaneous component frequencies. Often, parameters are somehow constrained or jointly parameterised, such as in the harmonic model where ωk [n] = kω0 [n] for some fundamental frequency ω0[n].

A prominent extension of additive synthesis is spectral modelling synthesis (Serra and Smith, 1990). In this approach, the residual signal (i.e., the portion of the signal remaining after estimating sinusoidal model coefficients) is modelled stochastically, as a noise source processed by a time varying filter. Such a model was implemented differentiably by , using a bank of harmonic oscillators combined with a LTV-FIR filter applied to a noise source. Specifically, the oscillator bank was parameterised as follows:where A[n] is a global amplitude parameter, and is a normalised distribution over component amplitudes (i.e., and ). In practice, A[n] and are predicted at lower sample rates, and interpolated before evaluating the final signal. The fundamental frequency ω0[n] is obtained by means of a pitch estimation algorithm–in the paper, CREPE (Kim et al., 2018) is used–rather than by direct optimisation. It is thus interesting to note that Eq. (9) is linear with respect to parameters A[n] and , and thus admits a convex optimisation problem for an appropriate choice of loss function. This is, however, not the case with respect to ω0[n], which yields oscillatory gradients.

3.2.1 Wavetable synthesis

Historically, a major obstacle to the adoption of additive synthesis was simply the computational cost of evaluating potentially hundreds of sinusoidal components at every time step. A practical solution was to pre-compute the values of a sinusoid at a finite number of time-steps and store them in a memory buffer. This buffer can then be read periodically at varying “frequencies” by fractionally incrementing a circular read pointer and applying interpolation. The buffer, referred to as a wavetable, need not contain only samples from a sinusoidal function, however. Instead, it can contain any values, allowing for the specification of arbitrary harmonic spectra (excluding the effect of interpolation error) when the wavetable is read periodically. Wavetables can thus allow for efficient synthesis of a finite number of predetermined spectra, or even continuous interpolation between spectra through interpolation both between and within wavetables.

Shan et al. (2022) introduced a differentiable implementation of wavetable synthesis, drawing comparison to a dictionary learning task. In particular, their proposed model learns a finite collection of wavetables . The fractional read position of the wavetables is determined by integrating the ω0 parameter which, as in the harmonic oscillator bank of , is provided by a separate model. To produce a particular timbre, the model predicts coefficients ck for a weighted sum over the wavetables, such that and ck ≥ 0.

Notably, Shan et al. found that this approach outperformed the DDSP additive model in terms of reconstruction error when using 20 wavetables, and performed almost equivalently with only 10 wavetables. Further, this method provided a roughly 12× improvement in inference speed, although as the authors note this is likely to be related to the 10-fold decrease in the number of parameter sequences that require interpolation.

3.2.2 Unconstrained additive models

The implementations discussed thus far are all, in a sense, constrained additive models. This is because a harmonic relationship between sinusoidal component frequencies is enforced. By contrast, the general model form illustrated in Eq. 8 is unconstrained, which is to say that its frequency parameters are independently specified. In some circumstances, the greater freedom offered by such a model may be advantageous–for example, many natural signals contain a degree of inharmonicity due to the geometry or stiffness of the resonating object. However, vastly fewer examples of differentiable unconstrained models exist in the literature than of their constrained counterparts.

Nonetheless, introduced a differentiable unconstrained additive synthesiser, which they applied to the task of monophonic pitch estimation in an analysis-by-synthesis framework. The differentiable unconstrained model follows the form in Eq. 8, with the omission of the initial phase parameter. Thus, unlike their differentiable harmonic model, there is no factorised global amplitude parameter–instead each sinusoidal component is individually described by its amplitude envelope αk[n] and frequency envelope ωk[n].

Optimisation of this model, however, is not as straightforward as the constrained harmonic case where an estimate of ω0[n] is provided a priori. The non-convexity of the sinusoidal oscillators with respect to their frequency parameters leads to a challenging optimisation problem, which does not appear to be directly solvable by straightforward gradient descent over an audio loss function. This was experimentally explored by Turian and Henry (2020) who found that, even in the single sinusoidal case, gradients for most loss functions were uninformative with respect to the ground truth frequency. Thus, Engel et al. incorporated a self-supervised pre-training stage into their optimisation procedure. Specifically, a dataset of synthetic signals from a harmonic-plus-noise synthesiser was generated, for which exact sinusoidal model parameters were know. This was used to pretrain the sinusoidal parameter encoder network with a parameter regression loss (discussed further in Section 4.2), which circumvents the non-convexity issue.

Subsequently, Hayes et al. (2023) proposed an alternate formulation of the unconstrained differentiable sinusoidal model, which aimed to circumvent the issue of non-convexity with respect to the frequency parameters. Specifically, they replaced the sinusoidal function with a complex surrogate, which produced a damped sinusoid:where denotes the real part of a complex variable, |z| denotes the complex modulus, ∠z denotes the complex phase, and zk are the complex parameters of the model which jointly encode both frequency and damping. Note that as the sample index n becomes the exponential parameter, this model does not directly accommodate time-varying frequency parameters. However, at the time of writing, no published work exists applying this surrogate to enable differentiable unconstrained additive synthesis.

3.3 Subtractive synthesis

In contrast with additive methods, subtractive synthesis describes a family of methods in which a source signal, rich in frequency components, is shaped into a desired frequency response by the removal or attenuation of certain frequencies (). This approach typically employs filters to shape the sound by attenuating or emphasizing specific frequency components. The task of generating a sound is then reduced to designing appropriate filters. The reader might note that this approach bears a striking similarity to the source-filter model of speech production, in which a spectrally rich signal is shaped by a series of filters. However, the source-filter models discussed so far are physically motivated by a tube model of the vocal tract, whereas subtractive synthesis refers to the more general class of methods that involve spectral attenuation of a source signal.

Sawtooth and square waveforms are commonly used as source signals in subtractive synthesis due to their dense harmonic spectra, with the former containing energy at all harmonic frequencies, and the latter only at odd harmonic frequencies. The true waveforms contain discontinuities which can lead to aliasing, and also pose a challenge for automatic differentiation. For this reason, bandlimited waveforms were produced by Masuda and Saito (2021) using a constrained version of the differentiable harmonic oscillator bank for the purpose of subtractive synthesiser sound matching. Specifically, they produced anti-aliased approximations of square and sawtooth waveforms by summing harmonics at pre-determined amplitudes.Masuda et al. also introduced a waveform interpolation parameter p, such that y [n] = pysaw [n] + (1 − p)ysquare [n], allowing for differentiable transformation between these fixed spectra. The resulting waveform mixture was then filtered by the method described in Section 3.1.1.2.

A similar bandlimited sawtooth signal was used as a source in SawSing (Wu D.-Y. et al., 2022), a differentiable subtractive singing voice vocoder. This signal was shaped, however, by a linear time-varying FIR filter, similar to the one used with white noise by .

The differentiable WORLD vocoder (Nercessian, 2023) uses a bandlimited pulse-train as its source signal, implemented similarly to the aforementioned square and sawtooth oscillators. This is also filtered framewise by frequency domain multiplication with a filter response directly derived from the WORLD feature representation, consisting of an aperiodicity ratio and a spectral envelope.

3.4 Non-linear transformations

The techniques discussed to this point are predominantly linear with respect to the parameters through which gradients are backpropagated. Through the 60s, 70s and 80s a number of digital synthesis techniques emerged which involved non-linear transformations of audio signals and/or synthesiser parameters. This approach typically results in the introduction of further frequency components, with frequencies and magnitudes determined by the specifics of the method. As such, these methods are commonly collectively known as distortion or non-linear synthesis, and they became popular as alternatives to additive and subtractive approaches due to the comparative efficiency with which they could produce varied and complex spectra ().

3.4.1 Waveshaping synthesis

Digital waveshaping synthesis (Le Brun, 1979) introduces frequency components through amplitude distortion of an audio signal. Specifically, for a continuous time signal that can be exactly expressed as a sum of stationary sinusoids, i.e., , the application of a nonlinear function σ produces a signal that can be expressed as a potentially infinite sum of sinusoids at linear combinations of the input frequencies.

In the original formulation of waveshaping synthesis, proposed by Le Brun (1979), the input signal is a single sinusoid. The nonlinear function σ, also referred to as the shaping function, is specified as a sum of Chebyshev polynomials of the first kind Tk, allowing. These functions are defined such that the kth polynomial transforms a sinusoid to its kth harmonic: Tk (cos θ) = cos kθ. In this way, a shaping function can be easily designed that produces any desired combination of harmonics. Further efficiency gains can be achieved by storing this function in a memory buffer and applying it to a sinusoidal input by interpolated fractional lookups, in a manner similar to wavetable synthesis. Timbral variations can be produced by altering the amplitude of the incoming signal and applying a compensatory normalisation after the shaping function.

A differentiable waveshaping synthesiser was proposed by Hayes et al. (2021). This approach replaced the Chebyshev polynomial method for shaping function design with a small multilayer perceptron σθ. To allow time-varing control over timbral content, a separate network predicted affine transform parameters αN, βN, αaβa, applied to the signal before and after the shaper network, giving the formulation:In practice, the network is trained with a bank of multiple such waveshapers.

3.4.1.1 Neural source-filter models

As noted by , the neural source-filter model introduced by Wang et al. (2019b) can be considered a form of waveshaping synthesiser. This family of models, based on the classical source-filter model, replaces the linear synthesis filter H(z) with a neural network fθ, which takes a source signal x [n] as input, and also accepts a conditioning signal z [n] which alters its response. Due to the nonlinearity of fθ, we can interpret its behaviour through the lens of waveshaping–that is, it is able to introduce new frequency components to the signal. Thus, for a purely harmonic source signal, a harmonic output will be generated, excluding the effects of aliasing.

The proposed neural filter block follows a similar architecture to a non-autoregressive WaveNet (van den Oord et al., 2016), featuring dilated convolutions, gated activations, and residual connections. Wang et al. experimented with both a mixed sinusoid-plus-noise source signal processed by a single neural filter pathway, and separate harmonic sinusoidal and noise signals processed by individual neural filter pathways. Later extensions of the technique included a hierarchical neural source-filter model, operating at increasing resolutions, for musical timer synthesis Michelashvili and Wolf (2020), and the introduction of quasi-periodic cyclic noise as an excitation source, allowing for more realistic voiced-unvoiced transitions (Wang and Yamagishi, 2020).

3.4.2 Frequency modulation

Frequency modulation (FM) synthesis () produces rich spectra with complex timbral evolutions from a small number of simple oscillators. Its parameters allow continuous transformation between entirely harmonic and discordantly inharmonic spectra. It was applied in numerous commercially successful synthesisers in the 1980s, resulting in its widespread use in popular and electronic music.

A simple stationary formulation, consisting of one carrier oscillator (αc, ωc, ϕc) and one modulator (αm, ωm, ϕm) is given by:For a sinusoidal modulator, FM synthesis is equivalent to phase modulation up to a phase shift. Phase modulation is often preferred in practice, as it does not require integration of the modulation signal to produce an instantaneous phase value.

More complex synthesisers can be constructed by connecting multiple modulators and carriers, forming a modulation graph.11 This graph may contain cycles, corresponding to oscillator feedback, which can be implemented in discrete time with single sample delays. published the first differentiable FM synthesiser implementation, which was able to learn to control the modulation indices of modulation graphs taken from the Yamaha DX7, an influential FM synthesiser. To increase the flexibility of the DDX7 approach, Ye et al. (2023) applied a neural architecture search algorithm over the modulation graph, with the intention of allowing optimal FM synthesiser structures to be inferred from target audio.

As the gradients of an FM synthesiser’s output with respect to the majority of its parameters are oscillatory, optimisation of a differentiable implementation is challenging, due to the aforementioned issues with sinusoidal parameter gradients (Turian and Henry, 2020; Hayes et al., 2023). For this reason, the differentiable DX7 of relied on fixed oscillator tuning ratios, specified a priori, enforcing a harmonic spectral structure. In this sense, FM synthesis continues to be an open challenge, representing a particularly difficult manifestation of the previously discussed issues with non-convex DDSP.

3.5 Modulation signals

Automatic modulation of parameters over time is a crucial component of many modern audio synthesisers, especially those used for music and sound design. Control signals for modulation are commonly realised through envelopes, which typically take the value of a parametric function of time in response to a trigger event, and low frequency oscillators (LFOs), which oscillate at sub-audible (Hz) frequencies. Estimating the parameters of envelopes and LFOs is thus valuable for sound matching tasks. This was addressed non-differentiably by Mitcheltree et al. (2023), who estimated LFO shapes from mel spectrograms.

In the context of modelling an analog phaser pedal, produced a differentiable LFO model using the complex sinusoidal surrogate method of Hayes et al. (2023) in combination with a small waveshaper neural network. Using this technique, they were able to directly approximate the shape of the LFO acting on the all-pass filter break frequency by gradient descent.

Masuda and Saito (2023) introduced a differentiable attack-decay-sustain-release (ADSR) envelope12 for use in a sound matching task. Specifically, they defined the envelope as follows:where tatk, tdec, trel, toff represent the attack, decay, release, and note off times, respectively; vsus is the sustain amplitude and vmax is the peak amplitude; and |x|[a,b] ≜ min (max (x, a), b). Through sound matching experiments and gradient visualisations, they demonstrate that their model is capable of learning to predict parameters for the differentiable envelope, though note that this constraint means that subtle variations in real sounds can not be entirely captured.

4 Loss functions and training objectives

A central benefit of DDSP is that the training loss function can be defined directly in the audio domain, allowing the design of losses which emphasise certain desirable signal characters, for example, through phase invariance or perceptually-informed weighting of frequency bands. Nonetheless, many works we reviewed combined audio losses with other forms of training objective, including parameter regression and adversarial training. In this section, we review the most commonly used such loss functions.

We note that deep feature loss, sometimes referred to as “perceptual loss” — that is, distances between intermediate activations of pretrained neural networks—have been explored, including the use of CREPE (Kim et al., 2018) embeddings (; Michelashvili and Wolf, 2020). Engel et al. note that this loss during unsupervised learning of pitch. Additionally, Turian et al. (2021) evaluated a number of audio representations (DSP-based and learned representations), comparing them on distance-based ranking tasks using synthesised sounds, and found that OpenL3 () performed well. However, Masuda and Saito (2023) remarked that preliminary results using OpenL3 for sound matching worked poorly. Since this initial work on the topic, relatively little attention has been devoted to exploring such distances for DDSP training; however, they may be a promising direction for future work.

4.1 Audio loss functions

Audio loss functions compare a predicted audio signal to a ground truth signal y[n]. The simplest such loss function is thus a direct distance between audio samples in the time domain:where is the Lp norm. note that this loss is typically not ideal due to the weak correspondence between individual time-domain audio samples and auditory perception. For example, a time-domain loss penalises imperceptible shifts in oscillator phase, which may not be desirable, depending on the behaviour of a particular synthesiser and target application (; Liu et al., 2020; Mv and Ghosh, 2020). Wang and Yamagishi (2019) applied a phase difference loss, but noted that despite the loss values falling during training, speech quality was not improved over a randomly initialized phase spectrum. Conversely, Webber et al. (2023) explicitly modelled phase in the frequency domain, finding that an L2 time-domain loss helped reduce audible artifacts.

The predominant approach to formulating an audio loss for DDSP tasks, however, is based on magnitude spectrograms. These approaches are often referred to as

spectral loss

. While numerous variations on this approach, we found three to recur commonly in the literature.

  • 1. Spectral convergence loss ()

  • 2. Log magnitude spectral loss ()

  • 3. Linear magnitude spectral loss

where

and

denote the Frobenius and

L1

norms, respectively, and

is the magnitude spectrogram from the short-time Fourier transform. A weighting of

is sometimes applied to

Llog

and

Llin

, where

N

is the number of STFT bins (

Yamamoto et al., 2020

). Perceptually motivated frequency scales, like the mel scale, can also be applied to spectrograms.

note that the spectral convergence loss “emphasises highly on large spectral components, which helps in early phases of training,” whereas log magnitude spectral loss tend to help fit small amplitude components, which are to be more important later in training.

Wang and Yamagishi (2019) proposed computing a spectral loss using multiple STFT window sizes and hop lengths, aggregating the outputs into a single loss value.13 This technique has since come to be known as the multi-resolution STFT (MRSTFT) loss (Yamamoto et al., 2020) or multi-scale spectral loss (MSS) loss (). The motivation behind this formulation is to compensate for the time-frequency resolution tradeoff inherent to the STFT.

A general form for MRSTFT losses is thus given by a weighted sum of the different spectral loss formulations at different resolutions:where K is the set of STFT configurations, is a spectral loss computed with a particular configuration, and α is the weighting for a loss term.14 A consensus on the best spectral loss configuration has not emerged, suggesting that tuning of such losses is highly task-dependent.

Mel scaled spectral losses have also been used in a number of works (Mv and Ghosh, 2020; Kaneko et al., 2022; ; ; Song et al., 2023; Watts et al., 2023), after introduced the multi-resolution formulation and Kong et al. (2021) demonstrated their suitability for using in conjunction with adversarial objectives.

A large number of different multi-resolution configurations have been explored. Wu D.-Y. et al. (2022) suggested just four resolutions was sufficient for satisfactory results. Liu et al. (2020), on the other hand, used 12 different configurations noting that increasing this number resulted in fewer artefacts. (). showed that a very small hop-size of 8 samples, with a window length of 32 samples, allowed good transient reconstruction. This is congruent with the findings of Kumar et al. (2023), who noted a small hop-size improved transient reconstruction in their neural audio codec.

Martinez Ramírez et al. (2020) noted that filtering can introduce frequency-dependent delays and phase inversions, which can cause problems for auditory loss functions. They proposed a delay invariant loss to address this, which computes an optimal delay between y[n] and using a cross-correlation function, and evaluates loss functions on time-aligned waveforms.

Wang and Yamagishi (2020) observed issues learning a stable pitch with the introduction of cyclic noise and proposed a masked spectral loss as a solution, which evaluates loss only in frequency bins containing harmonics of the known fundamental frequency. This is intended to penalise only harmonic mismatch, instead of accounting for the full spectral envelope. Wu D.-Y. et al. (2022) trained their parameter estimation model to predict f0 from a mel spectrogram and used an explicit f0 regression loss where both the ground truth and target f0 were extracted using the WORLD vocoder (Morise et al., 2016), noting that MRSTFT alone was not sufficient to learn to reconstruct singing voices in their case while jointly learning f0.

4.2 Parameter loss and self-supervision

Historically, parameter loss was commonly used in sound matching tasks involving black box or non-differentiable synthesisers (Yee-King et al., 2018; ). This was, however, identified as a sub-optimal training objective (), as synthesisers are ill-conditioned with respect to their parameters—that is, small changes in parameter space may yield large changes in the output.

However, with a differentiable synthesiser, parameter loss can be combined with auditory loss functions as a form of self-supervision, seemingly helping to avoid convergence on bad minima during training (; Masuda and Saito, 2023). For most parameters, loss is computed directly between estimated and ground truth parameter values, where ground truth parameters are randomly sampled to form a synthetic dataset of audio-parameter pairs.

used a parameter regression pretraining phase over a large dataset of synthetic audio signals with complete parameter annotations. This enabled them to the fine-tune their network with an unconstrained differentiable sinusoidal model in conjunction with several other DDSP components for self-supervised pitch estimation. They additionally introduced a sinusoidal consistency loss, which is a permutation invariant parameter loss inspired by the two-way mismatch algorithm, to measure the error between sets of parameters for sinusoids representing partials of a target sound.

In a sound matching task with a differentiable subtractive synthesiser, Masuda and Saito (2021) observed that training only with spectral loss was ineffective, speculating that there was not a clear relationship between the loss and subtractive synthesis parameters. In subsequent work (Masuda and Saito, 2023), they used a combination of parameter loss, with a synthetic dataset, and various methods for introducing out-of-domain audio during training with a spectral loss. Through this procedure, they noted that certain parameters, such as the frequency of oscillators and chorus delay, were poorly optimised by a spectral loss.

Despite their tenuous perceptual correspondence, an advantage of parameter losses is their relative efficiency, particularly when parameters are predicted globally, or below audio sample rate. Han et al. (2023) proposed a method for reweighting the contributions of individual parameters to provide the best quadratic approximation of a given “perceptual” loss—i.e., a differentiable audio loss with desirable perceptual qualities, such as MRSTFT or joint time-frequency scattering (Muradeli et al., 2022). The proposed technique requires that loss gradients with respect to ground truth to parameters be evaluated once before training, limiting the technique to synthetic datasets, but the advantage is that online backpropagation through the differentiable synthesiser can be effectively avoided.

4.3 Adversarial training

Generative adversarial networks () consist of two components: a generator, which produces synthetic examples, and a discriminator, which attempts to classify generated examples from real ones. These components are trained to optimise a minimax game. In later work, this adversarial training formulation was combined with a reconstruction loss (Isola et al., 2017) for image generation, a technique which has since become popular in audio generation (Kong et al., 2020).

From the perspective of reconstruction, the main motivation for adversarial training is that it tends to improve the naturalness and perceived quality of results (Michelashvili and Wolf, 2020; ) and enables learning fine temporal structures (Liu et al., 2020), particularly when a multi-resolution discriminator is used (You et al., 2021). Further, despite using a phase invariant reconstruction loss, both Liu et al. (2020) and Watts et al. (2023) observed that adversarial training improved phase reconstruction and reduce phase-related audio artefacts. However, these benefits come at the expense of a more complex training setup.

Several variations on adversarial training for DDSP synthesis have been explored. The HiFi-GAN methodology (Kong et al., 2020) has been particularly popular (Kaneko et al., 2022; ; Watts et al., 2023; Webber et al., 2023). This involves multiple discriminators operating at different periods and scales in a least-squares GAN setup, and includes a feature matching lossKumar et al. (2019), which involves using distances between discriminator activations as an auxiliary loss. Others have used a hinge loss (Liu et al., 2020; ; Nercessian, 2023) and a Wasserstein GAN (Juvela et al., 2019). and Watts et al. (2023) both train in two stages, first optimising for reconstruction, then introducing adversarial training to fine-tune the model.

5 Evaluation

Whilst loss functions may be selected to act as a proxy for certain signal characteristics, perceptual or otherwise, loss values typically can not be assumed to holistically describe the performance of a given method. Other methods must thus be used to evaluate DDSP-based synthesisers. In this section, we survey these methods and highlight trends within the reviewed literature.

Evaluation methods can be broadly subdivided into subjective and objective methods. In both speech and musical audio synthesis, subjective evaluations in the form of listening tests have been argued to provide a more meaningful assessment of results Wagner et al. (2019); Yang and Lerch (2020), given the inherent subjectivity of the notion of audio quality. This preference was reflected in the DDSP-based speech synthesis literature we reviewed, in which every paper conducted a listening test. Conversely, only slightly over half of the work reviewed on music and singing voice synthesis conducted a subjective evaluation of results. This discrepancy may be partially explained by the existence of standards for subjective evaluation in speech research, in contrast to music. That being said, it became clear through this review that there exists no single unified method for evaluating DDSP synthesis results.

In the following subsections we detail the more widely used evaluation methods, and discuss how these have been used in work to date. We also tally the number of uses of these approaches in Table 3.

TABLE 3

Evaluation typeEvaluation methodMusicSpeechSinging
ObjectiveMulti-scale spectral distance612
Extracted control (e.g., f0, loudness, etc.) distance332
Fréchet audio distance411
Log spectral distance411
MFCC distance210
Estimated control distance201
Parameter distance110
Other041
No objective evaluation452
SubjectiveMean opinion score (MOS)4124
MUSHRA or other multi-stimulus170
Preference ranking400
Informal evaluation201
Other200
No subjective evaluation501
ComplexityReal-time factor152
Computation time140
FLOPS040
Other010
No complexity evaluation1494

Methods for evaluating DDSP-based synthesis systems, listed with the number of times each method was used in the literature we surveyed (see Table 1). Methods with only one usage are grouped under the “Other” heading.

5.1 Objective evaluation

An objective evaluation typically involves the calculation of some number of metrics from the outputs of a given model, or from other characteristics of the model such as the time taken to perform a given operation. While such metrics may not directly correspond to perceptual attributes of synthesised signals (Manocha et al., 2022; Vinay and Lerch, 2022), they may be attractive as an alternative to a listening test (Yang and Lerch, 2020) due to their lack of dependency on recruiting participants and their reproducibility. They are also frequently employed alongside listening tests, in which case they may be used to probe specific attributes, or to facilitate comparison between different experiments.

5.1.1 Audio similarity metrics

Perhaps the most obvious target for a metric of audio quality is, when appropriate to the task, a model’s ability to reconstruct a given piece of audio. Such evaluations necessarily require ground truth audio, which is typically available in resynthesis tasks such as copy synthesis and musical instrument modelling. Objective evaluation metrics that operate on synthesized and ground truth audio are referred to as audio similarity metrics (also known as full-reference or intrusive). This is in contrast to no-reference metrics (also known as reference-free or non-intrusive) (Manocha et al., 2022), which do not require a ground truth audio.

Perhaps the simplest audio similarity metric is a waveform distance, taken directly between time-domain samples. These are used infrequently for evaluation of DDSP-based synthesisers, likely because of the emphasis they place on phase differences, which are not necessarily perceived, and are often not explicitly modelled. Yu and Fazekas (2023) are an exception—they used an L2 waveform loss to highlight the ability of their differentiable source-filter approach to reconstruct phase.

Most commonly reported are distances computed between time-frequency representations of audio signals, sometimes referred to as spectral error. Multi-scale spectrogram error, which is often also used as a loss function, was reported in a number of music (Masuda and Saito, 2021; Wu D.-Y. et al., 2022; Renault et al., 2022; Shan et al., 2022), singing (Yu and Fazekas, 2023), and speech evaluations (Nercessian, 2021). Other spectral distances reported included log-spectral distance Masuda and Saito (2021); Subramani et al. (2022), log mel-spectral distance Nercessian (2023), and mel-cepstrum distortion (MCD) (Masuda and Saito, 2023).

Similarity metrics motivated by perception, such as the Perceptual Evaluation of Speech Quality (PESQ) (International Telecommunication Union, 2001) were developed as alternatives to costly subjective evaluations. However, we observed that these saw limited use in the evaluation of DDSP vocoders Mv and Ghosh (2020).

Similarity metrics have also been designed around the extraction of higher level signal features. For example, the ability of a model to accurately reconstruct fundamental frequency has been evaluated by measuring the MAE error between f0 extracted from ground truth and synthesized results. Results are typically compared to neural audio synthesis baselines (e.g., WaveRNN) and support the claim that DDSP models are better at preserving pitch (; Wu D.-Y. et al., 2022). A similar evaluation has also been applied for loudness (; Kawamura et al., 2022).

5.1.2 Reference-free audio metrics

In contrast to audio similarity metrics, reference free metrics provide an indication of audio quality without the need for a ground truth audio signal. The Fréchet Audio Distance (FAD) (Kilgour et al., 2019) is an example of such a metric, and was originally developed for music enhancement evaluation. The FAD is computed by fitting multivariate Gaussian distributions to two sets of neural embeddings: one computed over “clean” audio (the background set) and another computed over test audio. The Fréchet distance is then computed between these distributions. Typically, a pre-trained VGGish model (Hershey et al., 2017) is used to compute embeddings, a formulation that we found to recur in evaluation of both music (Hayes et al., 2021; ; Ye et al., 2023) and singing voice (Wu D.-Y. et al., 2022; Yu and Fazekas, 2023) papers we reviewed. In the speech domain, (Kaneko et al., 2022), used Fréchet wav2vec distance (cFW2VD), which replaced the VGGish model with wav2vec.

Some of the work we reviewed observed a correlation between the FAD and their subjective evaluations (Hayes et al., 2021; Kaneko et al., 2022), which is consistent with the findings of Manocha et al. (2022) who also noted that reference-free metrics aligned better with human judgements than audio similarity metrics. However, these results are not universal and there exist multiple counter-examples in the literature (Vinay and Lerch, 2022; ). These discrepancies may be explained by sample-size bias or the fact that VGGish embeddings are suboptimal for FAD (). In general, the development of a reliable proxy for perceived quality of audio synthesis algorithms remains an open research question.

5.1.3 Parameter reconstruction

Parameter reconstruction metrics compare synthesizer parameters or latent parameters to ground truth values. These metrics are more common in tasks such as sound matching and performance rendering, where ground truth parameters are either known a priori or can be straightforwardly extracted. Absolute (Masuda and Saito, 2023; Südholt et al., 2023) and squared Wu et al. (2022c) distances have both seen use for this purpose. Parameter distances can provide insight into how well a method is able to reconstruct synthesis parameters, although it has been shown in previous work that parameter error and audio similarity are not well-aligned (), at least in the case of music production-focused musical synthesizers. Parameter error for physical models or spectral modeling synthesizers may thus correlate better with perceived quality.

5.1.4 Computational complexity

A repeatedly cited motivation for the use of DDSP is an improvement in computational efficiency and reduction in inference speed, particularly when compared to other neural vocoders or synthesisers. This is corroborated by the substantial number of reviewed papers which included explicit evaluation of computational efficiency. Performing a real-time factor (RTF) test is the most common method for measuring inference speed. The metric is defined aswhere ti is the input target duration (e.g., 1 s) and tp is the time taken to synthesise that much audio. Any value RTF <1.0 indicates a real-time operation. Variations on RTF include reporting the number of samples generated per second ; Wang et al. (2019a) and times faster than real-time (Kaneko et al., 2022), which is the inverse of Eq. 21. A number of factors contribute to RTF tests including hardware, programming language, audio sampling rate, duration of test samples, and model size15.

The selection of duration ti has a bearing on RTF results and has interesting implications on the end application. In speech, utterance-by-utterance processing is a typical use-case for on-device synthesis Webber et al. (2023). Interactive music applications, on the other hand, typically use buffer-by-buffer processing and require a buffer size corresponding to 10 ms or less to fulfill the low-latency constraint for real-time interaction. Maintaining an RTF <1.0 with such small buffer sizes is a challenging constraint, as RTF values can be inversely correlated with buffer size Hayes et al. (2021).

Computational complexity can also be measured by counting the number of floating-point operations required to synthesize one second of audio (FLOPS) (Liu et al., 2020; Tian et al., 2020; Watts et al., 2023). In theory, this provides a hardware agnostic measurement of computational complexity and provides fair method for comparing algorithms (Schwartz et al., 2020). However, running time does not always perfectly correlate with FLOPS; for instance, the parallelism provided by GPUs offers speed-ups for convolutional layers that are not possible on CPUs ().

5.2 Subjective evaluation

Evaluation of audio quality using listening tests is considered the “gold standard” Manocha et al. (2022) in speech research. A number of different listening test variations exist, however the most commonly used for DDSP evaluations is the absolute category rating (ACR) test from the ITU-T recommendation P.800 International Telecommunication Union (1996), also known as “mean opinion score” (MOS). When assessing synthesis quality, participants are provided with a set of audio samples and asked to rate each on a five-point Likert scale according to a prompt, usually related to audio quality. The majority of subjective evaluations we reviewed used MOS evaluations and a number reported using crowd-sourcing platforms to recruit participants (Nercessian, 2021; Subramani et al., 2022). MOS was also used to evaluate the quality of TTS applications of DDSP synthesisers (Juvela et al., 2019; Wang and Yamagishi, 2019; Liu et al., 2020; ; Song et al., 2023).

Another listening test format, originally developed for evaluating audio codecs16, is the MUlti Stimulus test with Hidden Reference and Anchor (MUSHRA) evaluation (International Telecommunication Union, 2015). Similar to MOS, MUSHRA tests ask participants to rate the quality of an audio recording. However, these use continuous sliders as opposed to a Likert scale and, importantly, they involve comparing a number of stimuli side-by-side to a piece of reference audio. Amongst these stimuli are the hidden reference and anchor, which provide a built-in mechanism to identify listeners that may need excluding from results due to suboptimal listening conditions, poor compliance, or unreported hearing differences—considerations that are especially important when conducting online listening tests. Screening criteria have also been developed for online MOS evaluations Ribeiro et al. (2011).

It is less clear how subjective evaluation of tasks like timbre transfer and voice conversion should be performed. In voice conversion tasks a MOS test can be conducted and participants asked to rate the speaker similarity and naturalness/quality of an utterance (Nercessian, 2021; ; ). A challenge with rating speaker similarity, as reported by Wester et al. (2016), is that it is not necessarily a familiar task to listeners—humans are more adept at recognizing individual speakers as opposed to evaluating how close one speaker is to another. Wester et al. instead propose a pairwise evaluation that asks participants to report their confidence in the identity of voice. Nonetheless, the DDSP papers we reviewed used the more conventional MOS scale. Timbre transfer has similarly been evaluated using an instrument similarity score and a melody similarity score using a MOS test Michelashvili and Wolf (2020).

Performance rendering applications are additionally tasked with modelling of musical expression, itself a challenging task and under-specified problem, with results that are open to subjective interpretation. The evaluation of these systems has similarities with the evaluation of generative music models (Yang and Lerch, 2020). A commonly used method in generative modelling, conceptually related to a Turing test, is to ask participants whether a result sounds like it was produced by a human. In the context of DDSP-based performance rendering, a variant of this approach was used by , who asked participants to select the recording that sounds “more like a real human playing a real instrument”. Wu et al. (2022c) used a similar prompt for violin recordings.

We note that while a majority of the reviewed papers that performed a subjective evaluation reported confidence intervals around their results, not all papers performed statistical hypothesis testing.

6 Discussion

In this section we discuss both the strengths and limitations of DDSP for audio synthesis. For those new to the topic, we hope to assist in evaluating the suitability of DDSP for applications and research directions of interest. With more experienced practitioners in mind, we seek to highlight promising directions for future work and present open research questions that we argue hinder wider applicability and adoption of DDSP for audio synthesis.

6.1 DDSP and inductive bias

Underpinning DDSP, and the related field of differentiable rendering Kato et al. (2020), is the notion of incorporating a domain-appropriate inductive bias. Imposing strong assumptions on the form a model’s outputs should take—for example, producing a signal using only an additive synthesiser—limits model flexibility, but in return can improve the appropriateness of outputs. When such a bias is appropriate to the task and data, this can be highly beneficial. However, this bias also limits the broader applicability of the model, and may cause issues with generalisation.

In reviewing the literature, we found that authors most commonly referred to the following strengths of DDSP methods.

  • 1. Audio quality: differentiable oscillators have helped reduce artefacts caused by phase discontinuities () and pitch errors (Nercessian, 2023), and have enabled SOTA results when incorporated into hybrid models (; Song et al., 2023);

  • 2. Data efficiency: an appropriately specified differentiable signal processor seems to reduce the data burden, with good results achievable using only minutes of audio (; Michelashvili and Wolf, 2020);

  • 3. Computational efficiency: offloading signal generation to efficient synthesis algorithms carries the further benefit of faster inference (; Hayes et al., 2021; Shan et al., 2022).

  • 4. Interpretability: framing model outputs in terms of signal processor parameters allows for post hoc interpretation. Differentiable articulatory models can provide insights into vocal production (Südholt et al., 2023), while common audio synthesiser designs can be used to enable interpretable decomposition of target sounds (; Masuda and Saito, 2023);

  • 5. Control/creative affordances: explicit controls based on perceptual attributes such as pitch and loudness have enabled creative applications such as real-time timbre transfer (), expressive musical performance rendering (Wu et al., 2022c), and voice designing ().

Furthermore, differentiable audio synthesis has enabled new techniques in tasks beyond the realm of speech and music synthesis. For example, Schulze-Forster et al. (2023) applied differentiable source-filter models to perform unsupervised source separation, while used an analysis-by-synthesis framework to predict pitch without explicit supervision from ground truth labels. Further, DDSP-based synthesisers and audio effects have been used for tasks such as data amplification (Wu et al., 2022b) and data augmentation ().

However, the majority of these benefits have been realised within the context of synthesising monophonic audio with a predominantly harmonic spectral structure, where it is possible to explicitly provide a fundamental frequency annotation. This includes solo monophonic instruments, singing, and speech. This limitation is necessitated by the choices of synthesis model that have made up the majority of DDSP synthesis research—typically, these encode a strong bias towards the generation of harmonic signals, while the reliance on accurate f0 estimates renders polyphony significantly more challenging. In this sense, the trade-off is a lack of straightforward generalisation to other classes of sound—producing drum sounds with a differentiable harmonic-plus-noise synthesiser conditioned on loudness and f0 is unlikely to produce useable results, for example,. This is not an inherently negative characteristic of the methodology—excluding possibilities from the solution space (e.g., non-harmonic sounds or phase discontinuities) has been instrumental in realising the above benefits such as data-efficient training and improved audio quality.

The application of DDSP to a broader range of sounds has consequently been slow. Many synthesis techniques exist which are capable of generating polyphonic, inharmonic, or transient-dense audio, but to date there has been limited exploration of these in the literature. This may, in part, be due to the difficulty inherent in optimising their parameters by gradient descent, as noted by Turian and Henry (2020) and Hayes et al. (2023). Work on differentiable FM synthesis (; Ye et al., 2023), for example, may eventually lead to the modelling of more varied sound sources due to its ability to produce complex inharmonic spectra, but as noted by , optimisation of carrier and modulator frequencies is currently not possible due to loss surface ripple.

In summary, the inductive bias inherent to DDSP represents a trade-off. It has enabled in certain tasks, through constraint of solution spaces, improved audio quality, data efficiency, computational efficiency, interpretability, and control affordances. In exchange, these strong assumptions narrowly constrain these models to their respective domains of application, and limit their generalisation to many real world scenarios where perfect harmonicity or isolation of monophic sources cannot be guaranteed. Hence, we argue that a deeper understanding of the trade-offs induced by specific differentiable synthesisers would be a valuable future research direction for the audio synthesis community.

6.2 DDSP in practice

Producing a differentiable implementation of a signal processor or model is now relatively straightforward due to the wide availability of automatic differentiation frameworks.17 Such libraries expose APIs containing mathematical functions and numerical algorithms with corresponding CUDA kernels and explicit gradient implementations. This allows DSP algorithms to be expressed directly using these primitives, and the resulting composition of their gradients to be calculated by backpropagation. Additionally, with the growing interest in audio machine learning research and DDSP, several specialized packages have been created.18

Despite the simplicity of implementation, however, certain techniques may not allow for straightforward optimisation without workarounds or specialised algorithms. These include ADSR envelopes (Masuda and Saito, 2023), quantisation (Subramani et al., 2022), IIR filters (Kuznetsov et al., 2020; Nercessian et al., 2021), and sinusoidal models (Hayes et al., 2023).

Further, the process of implementing a differentiable digital signal processor can itself be time consuming, introducing an additional burden to the research pipeline. Furthermore, the programming language of a particular library–most commonly Python–may not be the same language used in an end application. However, recent efforts have sought to support the translation of DSP code into differentiable implementations19 and support the deployment of audio code written in machine learning libraries into audio plugins20. Future efforts could explore how fast inference libraries focused on real-time audio applications could be integrated with DDSP audio synthesis ().

6.2.1 Alternatives to automatic differentiation

In certain situations, manual implementation of DSP algorithms in automatic differentiation software is not possible (e.g., when using a black-box like a VST audio plugin or physical hardware audio processor) or is undesirable given the additional challenge and engineering overhead. Three alternative methods to manually implementing DSP operations differentiably have been explored in previous audio research, although have not been extensively applied to synthesis at the time of writing.

Neural proxies seek to train a deep learning network to mimic the behaviour of an audio processor, including the effect of parameter changes. Hybrid neural proxies use a neural proxy only during training, replacing the audio processing component of the proxy with the original DSP during inference. Steinmetz et al. (2022a) first applied hybrid neural proxies to audio effect modelling, further distinguishing between half hybrid approaches which use a neural proxy for both forward and backward optimization passes and full hybrid approaches that only use a proxy for the backward pass. Numerical gradient approximation methods, on the other hand, do not require any component of the audio processing chain to be explicitly differentiable and instead estimate black-box gradients using a numerical method such as simultaneous permutation stochastic approximation (SPSA) (Spall, 1998; Martinez Ramirez et al., 2021) successfully applied this to approximate the gradients of audio effect plugins.

6.3 Looking ahead

We wish, finally, to discuss the opportunities, risks, and open challenges in future research into DDSP for audio synthesis.

6.3.1 Hybrid approaches

In this review, we undertook a cross-domain survey of DDSP-based audio synthesis encompassing both speech and music. In doing so, we note that the progression of DDSP methods in speech synthesis commenced with mixed approaches, integrating DSP components to neural audio synthesisers and benefiting from the strengths of both. Early examples included the incorporation of LPC synthesis filters (Juvela et al., 2019; Valin and Skoglund, 2019), effectively “offloading” part of the synthesis task. Conversely, the dominant applications of DDSP to music tend to offload all signal generation to differentiable DSP components. We note that there may be opportunities for both fields to benefit from one another’s findings here, exploring further intermediate hybrid approaches.

Hybrid methods, in general, combine the aforementioned strengths of DDSP with more general deep learning models. This is visible in the use of pre- and post-nets in speech and singing synthesis, for example, (Nercessian, 2021; ; Nercessian, 2023); in the integration of a differentiable filtered noise synthesiser to RAVE (); or in the results of the recent SVC challenge, in which the top two results used a pre-trained DDSP synthesiser to condition a GAN (Huang et al., 2023). We thus expect hybrid methods to be a fruitful future research direction, where DSP domain knowledge can help guide and constrain more general neural audio synthesisers, and neural networks can help generalise narrow DDSP solutions.

6.3.2 Implementations, efficiency, and stability

A major challenge in DDSP research is ensuring that it is computationally and numerically feasible to even perform optimisation. While many DSP operations are deeply connected to neural network components, the transition into gradient descent over DDSP models is not inherently straightforward. IIR filters operating on audio, for instance, are likely to be applied over many more time steps than a conventional RNN, leading to specific challenges such as the memory cost of unrolled operations, and filter stability. As a result, efficient training algorithms have received considerable attention. Further, recent work by Yu and Fazekas (2023) presented an efficient GPU implementation of all-pole IIR filters, evaluated exactly and recursively, with efficient backpropagation based on a simplified algorithm for evaluating the gradient. Similarly, accompanying their original contribution, included an “angular cumsum” CUDA kernel, enabling phase accumulation without numerical issues. The development of open-source and efficient implementations of differentiable signal processing operations or their constituent parts is of clear benefit to future work, and thus we argue that this is a valuable area in which to direct future work.

6.3.3 Evaluation and comparison of approaches

As we note in Section 5, there does not exist a unified framework for evaluating DDSP-based audio synthesisers, or in fact for synthesisers in general. This renders comparison between methods challenging, requiring frequent re-training and re-implementation of baselines under new conditions.

However, it is not clear whether such a unified evaluation is possible, or even desirable. As a broad family of methods, DDSP has found a diverse range of applications, and many of these involve highly specialised implementations. For example, an acoustically informed model of piano detuning (Renault et al., 2022) was paired with a differentiable synthesiser. Evaluating the success of such an approach would arguably require a specialised experimental design.

Nonetheless, the consistency with which listening tests, and in particular MOS tests, are performed with speech synthesisers does allow for a reader to make coarse judgements about the relative quality of the tested methods, even if these do not generalise beyond the particular study. With this in mind, we pose the question: would applications of DDSP to music benefit from wider use of a standardised listening test format?

Subjective listening tests are time consuming and are not always a viable option. This is particularly true when a large number of models or stimuli require comparison. For this reason, quantitative metrics which correlate well with perception are potentially of great use to researchers. We note that while PESQ (International Telecommunication Union, 2001) has seen some limited use in DDSP-based speech research, and FAD (Kilgour et al., 2019) has been used in a handful of works, there does not appear to be a commonly agreed upon quantitate proxy for perceptual evaluation. This is likely due in part to the difficulty of designing such a tool, although we note promising progress in this direction using reference-free speech metrics (Manocha et al., 2022) and improving FAD for generative music evaluation ().

Domain and task-specific challenges also represent a valuable approach to evaluation. The speech and singing voice communities have already made particularly constructive use of this approach. The voice conversion challenge (Wester et al., 2016) and singing voice conversion challenge Huang et al. (2023) are clear examples of the benefits of such task-specific evaluations, and have, in fact, already started to highlight the value of DDSP, while not being specifically focused on DDSP methods. Open-challenges that target specific applications of DDSP will be a valuable way to both encourage further research in this area and support a deeper understanding of the strengths of various DDSP techniques.

6.3.4 Open questions

Through our review we noted a small number of recurring themes relating to specific challenges in working with DDSP, often mentioned as a corollary to the main results, or to motivate an apparent workaround. We also observed that certain methods have received attention in one application domain but not yet been applied to another, or have simply received only a small amount of attention. In this section, we briefly compile these observations in the hopes that they might help direct future research. These open questions include.

  • 1. The difficulty estimating oscillator frequencies by gradient descent, discussed in detail by Turian and Henry (2020) and Hayes et al. (2023) (see Section 3.2.2)

    • • A related issue is the tuning of modulator frequencies in FM synthesis () (see Section 3.4.2)

  • 2. The invariance of some signal processors under permutations of their parameters appears to be relevant to optimisation, as noted by Nercessian (2020), , and Masuda and Saito (2023), but there has been no specific investigation as to how this impacts training.

  • 3. Estimating global parameters like ADSR segment times appears to be challenging, especially when these lead to complex interactions (Masuda and Saito, 2023). This is important for modelling commercial synthesisers differentiably.

  • 4. Estimating delay parameters and compensating for delays poses specific challenges, which will most likely require specialised loss functions. (Martinez Ramirez et al., 2021; Masuda and Saito, 2023).

  • 5. Neural proxy (Steinmetz et al., 2022a) and gradient approximation (Martinez Ramirez et al., 2021) techniques have been applied in automatic mixing and intelligent audio production, but not yet explored for audio synthesis. Could these allow black-box software instruments to be used pseudo-differentiably?

  • 6. Directed acyclic audio signal processing graphs have been estimated blindly (Lee et al., 2023), while FM routing has been optimised through neural architecture search (Ye et al., 2023). Can these methods be generalised to allow estimation of arbitrary synthesiser topologies?

7 Conclusion

In this article, we have surveyed the literature on differentiable digital signal processing (DDSP) across the domains of speech, music, and singing voice synthesis. We provided a detailed overview of the major tasks and application areas where DDSP has been used, and in this process identified a handful of recurring motivations for its adoption. In particular, it became clear that DDSP is most frequently deployed where it confers a benefit in audio quality, data efficiency, computational efficiency, interpretability, or control.

However, simply implementing a known signal processor differentiably is frequently insufficient to realise these benefits. Through our review of the major technical contributions to the field, we observed that there remain several open problems, such as frequency estimation by gradient descent, which may hinder the general applicability of DDSP methods. Further, we identify that selecting a training objective and designing an appropriate evaluation is non-trivial, with many different approaches appearing in the literature. In this sense, we would argue that the fields of music and speech synthesis may benefit from a sharing of expertise—in particular, the prevalence of standardised listening tests in speech may help those working on music-related synthesis tasks better assess their progress.

In our discussion, we noted that the purported advantages of DDSP techniques are typically gained at the expense of broad applicability and generalisation. Finally, we identified promising avenues for future research, such as the development of hybrid models, which incorporate DDSP components into more general models, and concluded our review by highlighting several knowledge gaps that warrant attention in future work.

The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.

Statements

Author contributions

BH: Conceptualization, Investigation, Methodology, Writing–original draft, Writing–review and editing. JS: Investigation, Methodology, Writing–original draft, Writing–review and editing. GF: Supervision, Writing–review and editing. AM: Supervision, Writing–review and editing. CS: Supervision, Writing–review and editing.

Funding

The author(s) declare financial support was received for the research, authorship, and/or publication of this article. This work was supported by United Kingdom Research and Innovation (grant number EP/S022694/1).

Conflict of interest

The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.

Publisher’s note

All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.

Footnotes

1.^These include Google Magenta’s DDSP-VST (https://magenta.tensorflow.org/ddsp-vst), Bytedance’s Mawf (https://mawf.io/), Neutone Inc.’s Neutone (https://neutone.space/), ACIDS-IRCAM’s ddsP (https://github.com/acids-ircam/ddsp_pytorch) and Aalborg University’s JUCE implementation (https://github.com/SMC704/juce-ddsp). Accessed 21st August 2023.

2.^Concatenative methods continue to underpin the dominant professional tools for realistically simulating musical instruments. For example, the EastWest instrument libraries. https://www.soundsonline.com/hollywood-solo-series. Accessed 10th August 2023.

3.^https://musopen.org/. Accessed 26th August 2023.

4.^Note that the algorithm proposed by was not referred to as IBPTT in the original work. This name was given later by .

5.^Note that the truncation in TBPTT, which is applied to input sequences, is distinct from that in CBPTT, which is applied to intermediate backpropagated errors.

6.^This algorithm has been implemented by Yu and Fazekas (2023) and is available in the open source TorchAudio package. https://github.com/pytorch/audio. Accessed 21st July 2023.

7.^https://dood.al/pinktrombone. Accessed 3rd August 2023.

8.^Note that the convolution operation in neural networks is usually implemented as a cross-correlation operation. This is equivalent to convolution with a kernel reversed along the dimension(s) of convolution. Hence, we use these terms interchangeably to aid legibility.

9.^The specific parameterisations of fc proposed by Wang and Yamagishi (2019) combine neural network predictions with domain knowledge about the behaviour of the maximum voice frequency during voiced and unvoiced signal regions. We omit these details here to focus on the differentiable filter implementation.

10.^Note that here we adopt vector notation for the framewise impulse response (i.e., ) to allow simplify the representation of operations.

11.^This graph is sometimes referred to in commercial synthesisers as an “algorithm”.

12.^Far from being an arbitrary choice, this is perhaps the most commonly used parametric envelope generator in synthesisers.

13.^Wang et al. used a slightly different formulation of spectral loss they called spectral amplitude distance.

14.^We point readers to the auroloss python package (Steinmetz and Reiss, 2020) for implementations of these methods and more auditory loss functions not mentioned here. Available on GitHub https://github.com/csteinmetz1/auraloss. Accessed 25th August 2023.

15.^RTF tests may be performed in an end-to-end fashion and include neural networks used to predict synthesis parameters or separately on only the vocoder/synthesizer component.

16.^Synthesizers and vocoders are in a sense narrowly specified audio codecs (Hayes et al., 2021).

17.^PyTorch https://pytorch.org/and TensorFlow https://www.tensorflow.org/are two examples that are well supported and that have been used extensively in previous DDSP work. URLs accessed 27 August 2023.

18.^These include the original DDSP library https://github.com/magenta/ddsp introduced by (), a PyTorch port of the DDSP library https://github.com/acids-ircam/ddsp_pytorch, TorchAudio https://pytorch.org/audio/stable/index.html, and torchsynth https://github.com/torchsynth/torchsynth introduced by (Turian et al., 2021), accessed 27 August 2023.

19.^() recently introduced the ability to transpile DSP code written in Fausthttps://faust.grame.fr/to Jax code () into the DawDreamer library. Released on GitHub, v0.6.14 https://github.com/DBraun/DawDreamer/releases/tag/v0.6.14. URLs accessed 27th August 2023.

20.^https://neutone.space/accessed 27 August 2023.

21.^The title and abstract of the paper reference speech synthesis, but the method is evaluated solely on a singing voice synthesis task.

References

  • 1

    AlonsoJ.ErkutC. (2021). Latent space explorations of singing voice synthesis using DDSP. arXiv [Preprint]. Available at: https://arxiv.org/abs/2103.07197 (Accessed June 03, 2023).

  • 2

    ArıkS. Ö.JunH.DiamosG. (2019). Fast spectrogram inversion using multi-head convolutional neural networks. IEEE Signal Process. Lett.26, 94–98. 10.1109/LSP.2018.2880284

  • 3

    AspertiA.EvangelistaD.MarzollaM. (2022). “Dissecting FLOPs along input dimensions for GreenAI cost estimations,” in Machine learning, optimization, and data science (Cham: Springer International Publishing), 86–100. 10.1007/978-3-030-95470-3_7

  • 4

    AtalB. S.HanauerS. L. (1971). Speech analysis and synthesis by linear prediction of the speech wave. J. Acoust. Soc. Am.50, 637–655. 10.1121/1.1912679

  • 5

    BackA. D.TsoiA. C. (1991). FIR and IIR synapses, a new neural network architecture for time series modeling. Neural Comput.3, 375–385. 10.1162/neco.1991.3.3.375

  • 6

    BakhturinaE.LavrukhinV.GinsburgB.ZhangY. (2021). Hi-fi multi-speaker English TTS dataset. arXiv. [Preprint]. Available at https://arxiv.org/abs/2104.01497 (Accessed July 20, 2023).

  • 7

    Barahona-RíosA.CollinsT. (2023). NoiseBandNet: controllable time-varying neural synthesis of sound effects using filterbanks. arXiv [Preprint]. Available at https://arxiv.org/abs/2307.08007 (Accessed August 02, 2023).

  • 8

    BarkanO.TsirisD.KatzO.KoenigsteinN. (2019). InverSynth: deep estimation of synthesizer parameter configurations from audio signals. IEEE/ACM Trans. Audio, Speech, Lang. Process.27, 2385–2396. 10.1109/TASLP.2019.2944568

  • 9

    BhattacharyaP.NowakP.ZölzerU. (2020). “Optimization of cascaded parametric peak and shelving filters with backpropagation algorithm,” in Proceedings of the 23rd International Conference on Digital Audio Effects, 101–108.

  • 10

    BilbaoS. (2009). Numerical sound synthesis: finite difference schemes and simulation in musical acoustics. John Wiley and Sons.

  • 11

    BirkholzP. (2013). Modeling consonant-vowel coarticulation for articulatory speech synthesis. PLOS ONE8, e60603. 10.1371/journal.pone.0060603

  • 12

    BittonA.EslingP.Chemla-Romeu-SantosA. (2018). Modulated Variational auto-Encoders for many-to-many musical timbre transfer. arXiv [Preprint] Available at: https://www.researchgate.net/publication/328016649_Modulated_Variational_auto-Encoders_for_many-to-many_musical_timbre_transfer (Accessed July 06, 2023).

  • 13

    BlaauwM.BonadaJ. (2017). A neural parametric singing synthesizer. Proc. Interspeech, 4001–4005. 10.21437/Interspeech.2017-1420

  • 14

    BradburyJ.FrostigR.HawkinsP.JohnsonM. J.LearyC.MaclaurinD.et al (2018). JAX: composable transformations of Python+NumPy programs. [Software] Available at http://github.com/google/jax (Accessed October 25, 2023).

  • 15

    BraunD. (2021). “DawDreamer: bridging the gap between digital audio workstations and Python interfaces,” in Late-Breaking Demo Session of the 22nd International Society for Music Information Retrieval Conference.

  • 16

    CahillT. (1897). Art of and apparatus for generating and distributing music electrically. US Patent US580035A.

  • 17

    CaillonA.EslingP. (2021). RAVE: a variational autoencoder for fast and high-quality neural audio synthesis. 10.48550/arXiv.2111.05011

  • 18

    CampolucciP.PiazzaF.UnciniA. (1995). “On-line learning algorithms for neural networks with IIR synapses,” in Proceedings of ICNN95 - International Conference on Neural Networks, Perth, WA, Australia (IEEE), 865–870. 10.1109/ICNN.1995.4875322

  • 19

    CarneyM.LiC.TohE.YuP.EngelJ. (2021). “Tone transfer: in-browser interactive neural audio synthesis,” in Joint Proceedings of the ACM IUI 2021 Workshops.

  • 20

    CarsonA.Valentini-BotinhaoC.KingS.BilbaoS. (2023). “Differentiable grey-box modelling of phaser effects using frame-based spectral processing,” in Proceedings of the 26th International Conference on Digital Audio Effects.

  • 21

    CaspeF.McPhersonA.SandlerM. (2022). “DDX7: differentiable FM synthesis of musical instrument sounds,” in Proceedings of the 23rd International Society for Music Information Retrieval Conference.

  • 22

    CastellonR.DonahueC.LiangP. (2020). “Towards realistic MIDI instrument synthesizers,” in NeurIPS Workshop on Machine Learning for Creativity and Design.

  • 23

    ChenJ.TanX.LuanJ.QinT.LiuT. Y. (2020). HiFiSinger: towards high-fidelity neural singing voice synthesis. arXiv [Preprint]. Available at: https://arxiv.org/abs/2009.01776 (Accessed July 24, 2023).

  • 24

    ChenN.ZhangY.ZenH.WeissR. J.NorouziM.ChanW. (2021). “Wavegrad: estimating gradients for waveform generation,” in International Conference on Learning Representations.

  • 25

    ChildersD.YegnanarayanaB.WuK. (1985). “Voice conversion: factors responsible for quality,” in ICASSP ’85. IEEE International Conference on Acoustics, Speech, and Signal Processing, 748–751. 10.1109/ICASSP.1985.116847910

  • 26

    ChoY.-P.YangF.-R.ChangY.-C.ChengC.-T.WangX.-H.LiuY.-W. (2021). “A survey on recent deep learning-driven singing voice synthesis systems,” in 2021 IEEE International Conference on Artificial Intelligence and Virtual Reality (AIVR), 319–323. 10.1109/AIVR52153.2021.00067

  • 27

    ChoiH.-S.YangJ.LeeJ.KimH. (2023a). “NANSY++: unified voice synthesis with neural analysis and synthesis,” in International Conference on Learning Representations.

  • 28

    ChoiK.ImJ.HellerL.McFeeB.ImotoK.OkamotoY.et al (2023b). Foley sound synthesis at the DCASE 2023 challenge. arXiv [Preprint]. Available at: https://arxiv.org/abs/2304.12521 (Accessed August 02, 2023).

  • 29

    ChowdhuryJ. (2021). RTNeural: fast neural inferencing for real-time systems. arXiv [Preprint] Available at : https://arxiv.org/abs/2106.03037 (Accessed August 27, 2023).

  • 30

    ChowningJ. M. (1973). The synthesis of complex audio spectra by means of frequency modulation. J. Audio Eng. Soc.21, 526–534.

  • 31

    ColonelJ. T.SteinmetzC. J.MichelenM.ReissJ. D. (2022). “Direct design of biquad filter cascades with deep learning by sampling random polynomials,” in IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), 3104–3108. 10.1109/ICASSP43922.2022.9747660

  • 32

    CookP. R. (1996). Singing voice synthesis: history, current work, and future directions. Comput. Music J.20, 38–46. 10.2307/3680822

  • 33

    CooleyJ. W.TukeyJ. W. (1965). An algorithm for the machine calculation of complex Fourier series. Math. Comput.19, 297–301. 10.1090/S0025-5718-1965-0178586-1

  • 34

    CramerA. L.WuH.-H.SalamonJ.BelloJ. P. (2019). “Look, listen, and learn more: design choices for deep audio embeddings,” in IEEE International Conference on Acoustics, Speech and Signal Processing, Brighton, UK (ICASSP), 3852–3856. 10.1109/ICASSP.2019.8682475

  • 35

    DaiS.ZhangZ.XiaG. G. (2018). Music style transfer: a position paper. In Proceeding of International Workshop on Musical Metacreation (MUME)

  • 36

    De ManB.StablesR.ReissJ. D. (2019). Intelligent music production (Waltham, Massachusetts: Focal Press).

  • 37

    DevisN.DemerléN.NabiS.GenovaD.EslingP. (2023). “Continuous descriptor-based control for deep audio synthesis,” in IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) (IEEE), 1–5. 10.1109/ICASSP49357.2023.10096670

  • 38

    DiazR.HayesB.SaitisC.FazekasG.SandlerM. (2023). “Rigid-body sound synthesis with differentiable modal resonators,” in IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) (IEEE).

  • 39

    DonahueC.McAuleyJ.PucketteM. (2019). “Adversarial audio synthesis,” in International Conference on Learning Representations.

  • 40

    DudleyH.TarnoczyT. H. (1950). The speaking machine of wolfgang von Kempelen. J. Acoust. Soc. Am.22, 151–166. 10.1121/1.1906583

  • 41

    DudleyW. H. (1939). The vocoder. Bell Labs Rec.18, 122–126.

  • 42

    DupreT.DenjeanS.AramakiM.Kronland-MartinetR. (2021). “Spatial sound design in a car cockpit: challenges and perspectives,” in 2021 immersive and 3D audio: from architecture to automotive (I3DA) (Bologna, Italy: IEEE). 10.1109/I3DA48870.2021.9610910

  • 43

    ElmanJ. L. (1990). Finding structure in time. Cognitive Sci.14, 179–211. 10.1207/s15516709cog1402_1

  • 44

    EngelJ.AgrawalK. K.ChenS.GulrajaniI.DonahueC.RobertsA. (2019). “GANSynth: adversarial neural audio synthesis,” in 7th International Conference on Learning Representations, New Orleans, LA, USA.

  • 45

    EngelJ.HantrakulL. H.GuC.RobertsA. (2020a). DDSP: differentiable digital signal processing. Available at: https://arxiv.org/abs/2001.04643.

  • 46

    EngelJ.ResnickC.RobertsA.DielemanS.NorouziM.EckD.et al (2017). “Neural audio synthesis of musical notes with WaveNet autoencoders,” in Proceedings of the 34th International Conference on Machine Learning, Sydney, Australia, 1068–1077.70

  • 47

    EngelJ.SwavelyR.RobertsA. (2020b). “Self-supervised pitch detection by inverse audio synthesis,” in Proceedings of the International Conference on Machine Learning.

  • 48

    EslingP.MasudaN.BardetA.DespresR.Chemla-Romeu-SantosA. (2020). Flow synthesizer: universal audio synthesizer control with normalizing flows. Appl. Sci.10, 302. 10.3390/app10010302

  • 49

    FabbroG.GolkovV.KempT.CremersD. (2020). Speech synthesis and control using differentiable DSP. arXiv [Preprint]. Available at: https://arxiv.org/abs/2010.15084 (Accessed June 03, 2023).

  • 50

    GatysL. A.EckerA. S.BethgeM. (2015). A neural algorithm of artistic style. J. Vis.16, 326. 10.1167/16.12.326

  • 51

    GómezE.BlaauwM.BonadaJ.ChandnaP.CuestaH. (2018). Deep learning for singing processing: achievements, challenges and impact on singers and listeners. arXiv [Preprint]. Available at: https://arxiv.org/abs/1807.03046 (Accessed July 21, 2023).

  • 52

    GoodfellowI. J.Pouget-AbadieJ.MirzaM.XuB.Warde-FarleyD.OzairS.et al (2014). “Generative adversarial nets,” in Advances in Neural Information Processing Systems, Montreal, Canada (Montreal, Canada: Curran Associates, Inc.), 2672–2680. NIPS’14,.27

  • 53

    GuiA.GamperH.BraunS.EmmanouilidouD. (2023). Adapting frechet audio distance for generative music evaluation. arXiv [Preprint]. Available at http://arxiv.org/abs/2311.01616 (Accessed November 12, 2023).

  • 54

    GuoH.ZhouZ.MengF.LiuK. (2022a). “Improving adversarial waveform generation based singing voice conversion with harmonic signals,” in ICASSP 2022 - 2022 IEEE International Conference on Acoustics, Speech and Signal Processing (Singapore: ICASSP), 6657–6661. 10.1109/ICASSP43922.2022.9746709

  • 55

    GuoZ.ChenC.ChngE. S. (2022b). DENT-DDSP: data-efficient noisy speech generator using differentiable digital signal processors for explicit distortion modelling and noise-robust speech recognition. arXiv [Preprint]. Available at : https://arxiv.org/abs/2208.00987 (Accessed June 21, 2023).

  • 56

    HaD.DaiA. M.LeQ. V. (2017). “HyperNetworks,” in International Conference on Learning Representations.

  • 57

    HagiwaraM.CusimanoM.LiuJ.-Y. (2022). Modeling animal vocalizations through synthesizers. arXiv [Preprint]. Available at https://arxiv.org/abs/.2210.10857 (Accessed August 02, 2023).

  • 58

    HanH.LostanlenV.LagrangeM. (2023). “Perceptual–neural–physical sound matching,” in ICASSP 2023-2023 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) (IEEE), 1–5.

  • 59

    HayesB.SaitisC.FazekasG. (2021). “Neural waveshaping synthesis,” in Proceedings of the 22nd International Society for Music Information Retrieval Conference (Online).

  • 60

    HayesB.SaitisC.FazekasG. (2023). “Sinusoidal frequency estimation by gradient descent,” in ICASSP 2023 - 2023 IEEE International Conference on Acoustics, Speech and Signal Processing (Rhodes, Greece: ICASSP), 1–5. 10.1109/ICASSP49357.2023.10095188

  • 61

    HersheyS.ChaudhuriS.EllisD. P. W.GemmekeJ. F.JansenA.MooreR. C.et al (2017). “CNN architectures for large-scale audio classification,” in 2017 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), New Orleans, LA (IEEE), 131–135. 10.1109/ICASSP.2017.7952132

  • 62

    HolmesT. (2008). Electronic and experimental music: technology, music, and culture. 3rd edn. New York: Routledge.

  • 63

    HonoY.TakakiS.HashimotoK.OuraK.NankakuY.TokudaK. (2021). “Periodnet: a non-autoregressive waveform generation model with a structure separating periodic and aperiodic components,” in ICASSP 2021 - 2021 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), Toronto, ON, Canada (IEEE), 6049–6053. 10.1109/ICASSP39728.2021.9414401

  • 64

    HornerA.BeauchampJ.HakenL. (1993). Machine tongues XVI. Genetic algorithms and their application to FM matching synthesis. Comput. Music J.17, 17–29. 10.2307/3680541

  • 65

    HuangS.LiQ.AnilC.BaoX.OoreS.GrosseR. B. (2019). “Timbretron: a wavenet(cycleGAN(CQT(audio))) pipeline for musical timbre transfer,” in International Conference on Learning Representations.

  • 66

    HuangW.-C.VioletaL. P.LiuS.ShiJ.TodaT. (2023). The singing voice conversion challenge 2023. arXiv [Prerint]. Available at https://arxiv.org/abs/2306.14422 (Accessed July 25, 2023).

  • 67

    HuntA.BlackA. (1996). “Unit selection in a concatenative speech synthesis system using a large speech database,” in 1996 IEEE International Conference on Acoustics, Speech, and Signal Processing Conference Proceedings, 373–376. 10.1109/ICASSP.1996.5411101

  • 68

    HuzaifahM.WyseL. (2021). “Deep generative models for musical audio synthesis,” in Handbook of artificial intelligence for music: foundations, advanced approaches, and developments for creativity (Springer), 639–678.

  • 69

    International Telecommunication Union (1996). Methods for subjective determination of transmission quality, (Geneva, Switzerland: ITU-T Recommendation).

  • 70

    International Telecommunication Union (2001). Perceptual evaluation of speech quality (PESQ): an objective method for end-to-end speech quality assessment of narrow-band telephone networks and speech codecs (Geneva, Switzerland: ITU-R Recommendation).

  • 71

    International Telecommunication Union (2015). Method for the subjective assessment of intermediate quality levels of coding systems (Geneva, Switzerland: Recommendation ITU-R BS).

  • 72

    IsolaP.ZhuJ.-Y.ZhouT.EfrosA. A. (2017). “Image-to-Image translation with conditional adversarial networks,” in 2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Honolulu, HI (IEEE), 5967–5976. 10.1109/CVPR.2017.632

  • 73

    ItoK.JohnsonL. (2017). The LJ speech dataset. Available at https://keithito.com/LJ-Speech-Dataset/(Accessed October 25, 2023).

  • 74

    JackR. H.MehrabiA.StockmanT.McPhersonA. (2018). Action-sound latency and the perceived quality of digital musical instruments. Music Percept.36, 109–128. 10.1525/mp.2018.36.1.109

  • 75

    JinZ.FinkelsteinA.MysoreG. J.LuJ. (2018). “Fftnet: a real-time speaker-dependent neural vocoder,” in 2018 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), 2251–2255. 10.1109/ICASSP.2018.8462431

  • 76

    JonasonN.SturmB. L. T.ThomeC. (2020). “The control-synthesis approach for making expressive and controllable neural music synthesizers,” in Proceedings of the 2020 AI Music Creativity Conference.9

  • 77

    JuvelaL.BollepalliB.YamagishiJ.AlkuP. (2019). “GELP: GAN-excited linear prediction for speech synthesis from mel-spectrogram,” in Interspeech 2019 (Graz, Austria: ISCA), 694–698. 10.21437/Interspeech.2019-2008

  • 78

    KalchbrennerN.ElsenE.SimonyanK.NouryS.CasagrandeN.LockhartE.et al (2018). “Efficient neural audio synthesis,” in Proceedings of the 35th International Conference on Machine Learning, (PMLR), 2410–2419.80

  • 79

    KanekoT.TanakaK.KameokaH.SekiS. (2022). “ISTFTNET: fast and lightweight mel-spectrogram vocoder incorporating inverse short-time fourier transform,” in ICASSP 2022 - 2022 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), 6207–6211. 10.1109/ICASSP43922.2022.9746713

  • 80

    KatoH.BekerD.MorariuM.AndoT.MatsuokaT.KehlW.et al (2020). Differentiable rendering: a survey. arXiv [Preprint]. Available at https://arxiv.org/abs/2006.12057 (Accessed August 21, 2023).

  • 81

    KawamuraM.NakamuraT.KitamuraD.SaruwatariH.TakahashiY.KondoK. (2022). “Differentiable digital signal processing mixture model for synthesis parameter extraction from mixture of harmonic sounds,” in ICASSP 2022 - 2022 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), Singapore, Singapore (IEEE), 941–945. 10.1109/ICASSP43922.2022.9746399

  • 82

    KellerE. (1994). Fundamentals of speech synthesis and speech recognition: basic concepts, state of the art, and future challenges. Chichester [England]; New York: Wiley.

  • 83

    KhanR. A.ChitodeJ. S. (2016). Concatenative speech synthesis: a review. Int. J. Comput. Appl.136, 1–6. 10.5120/ijca2016907992

  • 84

    KilgourK.ZuluagaM.RoblekD.SharifiM. (2019). “Fréchet audio distance: a reference-free metric for evaluating music enhancement algorithms,” in Interspeech 2019 (Graz, Austria: ISCA), 2350–2354. 10.21437/Interspeech.2019-2219

  • 85

    KimJ. W.SalamonJ.LiP.BelloJ. P. (2018). “Crepe: a convolutional representation for pitch estimation,” in 2018 IEEE International Conference on Acoustics, Speech, and Signal Processing, ICASSP 2018 - Proceedings (Calgary, Alberta, Canada: Institute of Electrical and Electronics Engineers Inc.), 161–165. 10.1109/ICASSP.2018.8461329

  • 86

    KongJ.KimJ.BaeJ. (2020). “HiFi-GAN: generative adversarial networks for efficient and high fidelity speech synthesis,” in Advances in neural information processing systems. Editors LarochelleH.RanzatoM.HadsellR.BalcanM. F.LinH. (Red Hook, NY, United States: Curran Associates, Inc.), 33, 17022–17033.

  • 87

    KongZ.PingW.HuangJ.ZhaoK.CatanzaroB. (2021). Diffwave: a versatile diffusion model for audio synthesis. In International Conference on Learning Representations

  • 88

    KumarK.KumarR.de BoissiereT.GestinL.TeohW. Z.SoteloJ.et al (2019). MelGAN: generative adversarial networks for conditional waveform synthesis. Advances in Neural Information Processing Systems.

  • 89

    KumarR.SeetharamanP.LuebsA.KumarI.KumarK. (2023). High-fidelity audio compression with improved RVQGAN. arXiv [Preprint]. Available at : https://arxiv.org/abs/2306.06546 (Accessed August 24, 2023).

  • 90

    KuznetsovB.ParkerJ. D.EsquedaF. (2020). “Differentiable IIR filters for machine learning applications,” in Proceedings of the 23rd International Conference on Digital Audio Effects.

  • 91

    Le BrunM. (1979). Digital waveshaping synthesis. J. Audio Eng. Soc.27, 250–266.

  • 92

    LeeS.ChoiH.-S.LeeK. (2022). Differentiable artificial reverberation. IEEE/ACM Trans. Audio, Speech, Lang. Process.30, 2541–2556. 10.1109/TASLP.2022.3193298

  • 93

    LeeS.ParkJ.PaikS.LeeK. (2023). “Blind estimation of audio processing graph,” in ICASSP 2023 - 2023 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), Rhodes Island, Greece (IEEE), 1–5. 10.1109/ICASSP49357.2023.10096581

  • 94

    LiuZ.ChenK.YuK. (2020). “Neural homomorphic vocoder,” in Interspeech 2020 (ISCA), 240–244. 10.21437/Interspeech.2020-3188

  • 95

    ManochaP.JinZ.FinkelsteinA. (2022). Audio similarity is unreliable as a proxy for audio quality. Proc. Interspeech2022, 3553–3557. 10.21437/Interspeech.2022-405

  • 96

    Martinez RamirezM. A.WangO.SmaragdisP.BryanN. J. (2021). “Differentiable signal processing with black-box audio effects,” in ICASSP 2021 - 2021 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), Toronto, ON, Canada (IEEE), 66–70. 10.1109/ICASSP39728.2021.9415103

  • 97

    MasudaN.SaitoD. (2021). “Synthesizer sound matching with differentiable DSP,” in Proceedings of the 22nd International Society for Music Information Retrieval Conference (Online).

  • 98

    MasudaN.SaitoD. (2023). Improving semi-supervised differentiable synthesizer sound matching for practical applications. IEEE/ACM Trans. Audio, Speech, Lang. Process.31, 863–875. 10.1109/TASLP.2023.3237161

  • 99

    MatsubaraK.OkamotoT.TakashimaR.TakiguchiT.TodaT.KawaiH. (2022). Comparison of real-time multi-speaker neural vocoders on CPUs. Acoust. Sci. Technol.43, 121–124. 10.1250/ast.43.121

  • 100

    MichelashviliM. M.WolfL. (2020). “Hierarchical timbre-painting and articulation generation,” in Proceedings of the 21th International Society for Music Information Retrieval Conference.

  • 101

    MitcheltreeC.SteinmetzC. J.ComunitàM.ReissJ. D. (2023). “Modulation extraction for LFO-driven audio effects,” in Proceedings of the 26th International Conference on Digital Audio Effects, 94–101.

  • 102

    MoffatD.SandlerM. B. (2019). Approaches in intelligent music production. Arts1–13, 125. 10.3390/arts8040125

  • 103

    MohammadiS. H.KainA. (2017). An overview of voice conversion systems. Speech Commun.88, 65–82. 10.1016/j.specom.2017.01.008

  • 104

    MoriseM.YokomoriF.OzawaK. (2016). WORLD: a vocoder-based high-quality speech synthesis system for real-time applications. IEICE Trans. Inf. Syst.E99, 1877–1884. 10.1587/transinf.2015EDP7457

  • 105

    MuradeliJ.VahidiC.WangC.HanH.LostanlenV.LagrangeM.et al (2022). “Differentiable time–frequency scattering on GPU,” in Proceedings of the 25th International Conference on Digital Audio Effects.

  • 106

    MurrayJ.GoldbartJ. (2009). Augmentative and alternative communication: a review of current issues. Paediatr. Child Health19, 464–468. 10.1016/j.paed.2009.05.003

  • 107

    MvA. R.GhoshP. K. (2020). SFNet: a computationally efficient source filter model based neural speech synthesis. IEEE Signal Process. Lett.27, 1170–1174. 10.1109/LSP.2020.3005031

  • 108

    NercessianS. (2020). “Neural parametric equalizer matching using differentiable biquads,” in Proceedings of the 23rd International Conference on Digital Audio Effects, Vienna, Austria, 8.

  • 109

    NercessianS. (2021). “End-to-End zero-shot voice conversion using a DDSP vocoder,” in 2021 IEEE Workshop on Applications of Signal Processing to Audio and Acoustics (WASPAA). 1–5. 10.1109/WASPAA52581.2021.9632754

  • 110

    NercessianS. (2023). Differentiable WORLD synthesizer-based neural vocoder with application to end-to-end audio style transfer. Audio Engineering Society Convention 154.

  • 111

    NercessianS.SarroffA.WernerK. J. (2021). “Lightweight and interpretable neural modeling of an audio distortion effect using hyperconditioned differentiable biquads,” in ICASSP 2021 - 2021 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), Toronto, ON (Canada: IEEE), 890–894. 10.1109/ICASSP39728.2021.9413996

  • 112

    NishimuraM.HashimotoK.OuraK.NankakuY.TokudaK. (2016). “Singing voice synthesis based on deep neural networks,” in Interspeech 2016 (San Francisco, CA, USA: ISCA), 2478–2482. 10.21437/Interspeech.2016-1027

  • 113

    OordA.LiY.BabuschkinI.SimonyanK.VinyalsO.KavukcuogluK.et al (2018). “Parallel WaveNet: fast high-fidelity speech synthesis,” in Proceedings of the 35th International Conference on Machine Learning (Stockholm, Sweden: PMLR), 3918–3926.

  • 114

    PolyakA.WolfL.AdiY.TaigmanY. (2020). Unsupervised cross-domain singing voice conversion. Proc. Interspeech, 801–805. 10.21437/Interspeech.2020-1862

  • 115

    PonsJ.PascualS.CengarleG.SerraJ. (2021). “Upsampling artifacts in neural audio synthesis,” in ICASSP 2021 - 2021 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), Toronto, ON, Canada (IEEE), 3005–3009. 10.1109/ICASSP39728.2021.9414913

  • 116

    PrengerR.ValleR.CatanzaroB. (2019). “Waveglow: a flow-based generative network for speech synthesis,” in ICASSP 2019 - 2019 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), Brighton, United Kingdom (IEEE), 3617–3621. 10.1109/ICASSP.2019.8683143

  • 117

    RamachandranP.PaineT. L.KhorramiP.BabaeizadehM.ChangS.ZhangY.et al (2017). “Fast generation for convolutional autoregressive models,” in International Conference on Learning Representations (Workshop Track).

  • 118

    RamírezM. A.BenetosE.ReissJ. D. (2020). Deep learning for black-box modeling of audio effects. Appl. Sci. Switz.10, 638. 10.3390/app10020638

  • 119

    RenP.XiaoY.ChangX.HuangP.-y.LiZ.ChenX.et al (2022). A comprehensive survey of neural architecture search: challenges and solutions. ACM Comput. Surv.54, 1–34. 10.1145/3447582

  • 120

    RenaultL.MignotR.RoebelA. (2022). “Differentiable piano model for midi-to-audio performance synthesis,” in Proceedings of the 25th International Conference on Digital Audio Effects, Vienna, Austria, 8.

  • 121

    RibeiroF.FlorencioD.ZhangC.SeltzerM. (2011). “CROWDMOS: an approach for crowdsourcing mean opinion score studies,” in 2011 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), Prague, Czech Republi: IEEE, 2416–2419. 10.1109/ICASSP.2011.5946971

  • 122

    RodetX. (2002). “Synthesis and processing of the singing voice,” in Proc. 1st IEEE Benelux Workshop on Model Based Processing and Coding of Audio (MPCA-2002), 15–31.

  • 123

    SainoK.ZenH.NankakuY.LeeA.TokudaK. (2006). “An HMM-based singing voice synthesis system,” in Ninth International Conference on Spoken Language Processing. 10.21437/Interspeech.2006-584

  • 124

    Schulze-ForsterK.RichardG.KelleyL.DoireC. S. J.BadeauR. (2023). Unsupervised music source separation using differentiable parametric source models. IEEE/ACM Trans. Audio, Speech, Lang. Process.31, 1276–1289. 10.1109/TASLP.2023.3252272

  • 125

    SchwartzR.DodgeJ.SmithN. A.EtzioniO. (2020). Green ai. Commun. ACM63, 54–63. 10.1145/3381831

  • 126

    SchwarzD. (2006). Concatenative sound synthesis: the early years. J. New Music Res.35, 3–22. 10.1080/09298210600696857

  • 127

    SchwarzD. (2007). “Corpus-based concatenative synthesis,” in Conference Name: IEEE Signal Processing Magazine, 92–104. 10.1109/MSP.2007.32327424

  • 128

    SeeviourP.HolmesJ.JuddM. (1976). “Automatic generation of control signals for a parallel formant speech synthesizer,” in ICASSP ’76. IEEE International Conference on Acoustics, Speech, and Signal Processing, 690–693. 10.1109/ICASSP.1976.11699871

  • 129

    SerraX.SmithJ. (1990). Spectral modeling synthesis: a sound analysis/synthesis system based on a deterministic plus stochastic decomposition. Comput. Music J.14, 12–24. 10.2307/3680788

  • 130

    ShadleC. H.DamperR. I. (2001). “Prospects for articulatory synthesis: a position paper,” in 4th ISCA Tutorial and Research Workshop (ITRW) on Speech Synthesis.

  • 131

    ShanS.HantrakulL.ChenJ.AventM.TrevelyanD. (2022). “Differentiable wavetable synthesis,” in ICASSP 2022 - 2022 IEEE International Conference on Acoustics, Speech and Signal Processing (Singapore: ICASSP), 4598–4602. 10.1109/ICASSP43922.2022.9746940

  • 132

    ShierJ.CaspeF.RobertsonA.SandlerM.SaitisC.McPhersonA. (2023). “Differentiable modelling of percussive audio with transient and spectral synthesis,” in Proceedings of the 10th Convention of the European Acoustics Association Forum Acusticum 2023.

  • 133

    ShynkJ. (1989). Adaptive IIR filtering. IEEE ASSP Mag.6, 4–21. 10.1109/53.29644

  • 134

    SismanB.YamagishiJ.KingS.LiH. (2021). An overview of voice conversion and its challenges: from statistical modeling to deep learning. IEEE/ACM Trans. Audio, Speech, Lang. Process.29, 132–157. 10.1109/TASLP.2020.3038524

  • 135

    SmithJ. O. (1992). Physical modeling using digital waveguides. Comput. Music J.16, 74. 10.2307/3680470

  • 136

    SmithJ. O. (2010). Physical audio signal processing: for virtual musical instruments and audio effects. Stanford, Calif: Stanford University, CCRMA.

  • 137

    SongK.ZhangY.LeiY.CongJ.LiH.XieL.et al (2023). “DSPGAN: a Gan-based universal vocoder for high-fidelity TTS by time-frequency domain supervision from DSP,” in ICASSP 2023 - 2023 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). 1–5. 10.1109/ICASSP49357.2023.10095105

  • 138

    SpallJ. C. (1998). An overview of the simultaneous perturbation method for efficient optimization. Johns Hopkins Apl. Tech. Dig.19, 482–492.

  • 139

    SsergejewitschT. L. (1928). Method of and apparatus for the generation of sounds. U.S. Patent No. US1661058A.

  • 140

    StantonD.ShannonM.MariooryadS.Skerry-RyanR. J.BattenbergE.BagbyT.et al (2022). “Speaker generation,” in ICASSP 2022 - 2022 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), 7897–7901. 10.1109/ICASSP43922.2022.9747345

  • 141

    SteinmetzC. J.BryanN. J.ReissJ. D. (2022a). Style transfer of audio effects with differentiable signal processing. J. Audio Eng. Soc.70, 708–721. 10.17743/jaes.2022.0025

  • 142

    SteinmetzC. J.ReissJ. D. (2020). “auraloss: audio focused loss functions in PyTorch,” in Digital music research network one-day workshop (DMRN+15).

  • 143

    SteinmetzC. J.VankaS. S.Martínez RamírezM. A.BromhamG. (2022b). Deep learning for automatic mixing (ISMIR). Available at https://dl4am.github.io/tutorial (Accessed October 25, 2023).

  • 144

    StylianouY. (2009). “Voice transformation: a survey,” in 2009 IEEE International Conference on Acoustics, Speech and Signal Processing, 3585–3588. 10.1109/ICASSP.2009.4960401

  • 145

    SubramaniK.ValinJ.-M.IsikU.SmaragdisP.KrishnaswamyA. (2022). “End-to-end LPCNet: a neural vocoder with fully-differentiable LPC estimation,” in Interspeech 2022 (ISCA), 818–822. 10.21437/Interspeech.2022-912

  • 146

    SüdholtD.CámaraM.XuZ.ReissJ. D. (2023). “Vocal tract area estimation by gradient descent,” in Poceedings of the 26th International Conference on Digital Audio Effects.

  • 147

    TamamoriA.HayashiT.KobayashiK.TakedaK.TodaT. (2017). “Speaker-dependent wavenet vocoder,” in Interspeech 2017, 1118–1122. 10.21437/Interspeech.2017-314

  • 148

    TanX.QinT.SoongF.LiuT. Y. (2021). A survey on neural speech synthesis. arXiv [Preprint]. Available at: https://arxiv.org/abs/2106.15561 (Accessed July 07, 2023).

  • 149

    TianQ.ZhangZ.LuH.ChenL.-H.LiuS. (2020). “FeatherWave: an efficient high-fidelity neural vocoder with multi-band linear prediction,” in Proceedings of Interspeech 2020, 195–199. 10.21437/Interspeech.2020-1156

  • 150

    TurianJ.HenryM. (2020). I’m sorry for your loss: spectrally-based audio distances are bad at pitch. I Can’t Believe It’s Not Better!” NeurIPS 2020 workshop.

  • 151

    TurianJ.ShierJ.TzanetakisG.McNallyK.HenryM. (2021). One billion audio sounds from GPU-enabled modular synthesis. In Proceedings of the 23rd International Conference on Digital Audio Effects

  • 152

    ValinJ.-M.SkoglundJ. (2019). “LPCNET: improving neural speech synthesis through linear prediction,” in ICASSP 2019 - 2019 IEEE International Conference on Acoustics, Speech and Signal Processing (Brighton, UK: ICASSP), 5891–5895. 10.1109/ICASSP.2019.8682804

  • 153

    van den OordA.DielemanS.ZenH.SimonyanK.VinyalsO.GravesA.et al (2016). WaveNet: a generative model for raw audio. arXiv [Preprint]. Available at: https://arxiv.org/abs/1609.03499 (Accessed August 08, 2023).

  • 154

    VinayA.LerchA. (2022). “Evaluating generative audio systems and their metrics,” in Proceedings of the 23rd International Society for Music Information Retrieval Conference.

  • 155

    VipperlaR.ParkS.ChooK.IshtiaqS.MinK.BhattacharyaS.et al (2020). “Bunched LPCNet: vocoder for low-cost neural text-to-speech systems,” in Proceedings of Interspeech 2020, 3565–3569. 10.21437/Interspeech.2020-2041

  • 156

    WagnerP.BeskowJ.BetzS.EdlundJ.GustafsonJ.Eje HenterG.et al (2019). “Speech synthesis evaluation — state-of-the-art assessment and suggestion for a novel research program,” in 10th ISCA Workshop on Speech Synthesis (SSW 10) (ISCA), 105–110. 10.21437/SSW.2019-19

  • 157

    WangX.TakakiS.YamagishiJ. (2019a). “Neural source-filter-based waveform model for statistical parametric speech synthesis,” in ICASSP 2019 - 2019 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), Brighton, United Kingdom (IEEE), 5916–5920. 10.1109/ICASSP.2019.8682298

  • 158

    WangX.TakakiS.YamagishiJ. (2019b). Neural source-filter waveform models for statistical parametric speech synthesis. IEEE/ACM Trans. Audio, Speech, Lang. Process.28, 402–415. 10.1109/TASLP.2019.2956145

  • 159

    WangX.YamagishiJ. (2019). “Neural harmonic-plus-noise waveform model with trainable maximum voice frequency for text-to-speech synthesis,” in 10th ISCA Workshop on Speech Synthesis (SSW 10) (Brighton, United Kingdom: ISCA), 1–6. 10.21437/SSW.2019-128

  • 160

    WangX.YamagishiJ. (2020). “Using cyclic noise as the source signal for neural source-filter-based speech waveform model,” in Proceedings of Interspeech 2020, 1992–1996. 10.21437/Interspeech.2020-1018

  • 161

    WangY.WangX.ZhuP.WuJ.LiH.XueH.et al (2022). Opencpop: a high-quality open source Chinese popular Song corpus for singing voice synthesis. arXiv [Preprint]. Available at: https://arxiv.org/abs/2201.07429 (Accessed July 24, 2023).

  • 162

    WattsO.WihlborgL.Valentini-BotinhaoC. (2023). “PUFFIN: pitch-synchronous neural waveform generation for fullband speech on modest devices,” in ICASSP 2023 - 2023 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) (Rhodes Island, Greece (IEEE), 1–5. 10.1109/ICASSP49357.2023.10094729

  • 163

    WebberJ. J.Valentini-BotinhaoC.WilliamsE.HenterG. E.KingS. (2023). “Autovocoder: fast waveform generation from a learned speech representation using differentiable digital signal processing,” in ICASSP 2023 - 2023 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), 1–5. 10.1109/ICASSP49357.2023.10095729

  • 164

    WesterM.WuZ.YamagishiJ. (2016). “Analysis of the voice conversion challenge 2016 evaluation results,” in Interspeech 2016 (ISCA), 1637–1641. 10.21437/Interspeech.2016-1331

  • 165

    WuD.-Y.HsiaoW.-Y.YangF.-R.FriedmanO.JacksonW.BruzenakS.et al (2022a). “DDSP-based singing vocoders: a new subtractive-based synthesizer and A comprehensive evaluation,” in Proceedings of the 23rd International Society for Music Information Retrieval Conference, 76–83.

  • 166

    WuY.GardnerJ.ManilowE.SimonI.HawthorneC.EngelJ. (2022b). “Generating detailed music datasets with neural audio synthesis,” in Proceedings of the 39th International Conference on Machine Learning, Baltimore, Maryland, USA.162

  • 167

    WuY.ManilowE.DengY.SwavelyR.KastnerK.CooijmansT.et al (2022c). “MIDI-DDSP: detailed control of musical performance via hierarchical modeling,” in International Conference on Learning Representations.

  • 168

    YamamotoR.SongE.KimJ.-M. (2020). “Parallel wavegan: a fast waveform generation model based on generative adversarial networks with multi-resolution spectrogram,” in ICASSP 2020 - 2020 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), Barcelona, Spain (IEEE), 6199–6203. 10.1109/ICASSP40776.2020.9053795

  • 169

    YangL.-C.LerchA. (2020). On the evaluation of generative models in music. Neural Comput. Appl.32, 4773–4784. 10.1007/s00521-018-3849-7

  • 170

    YeZ.XueW.TanX.LiuQ.GuoY. (2023). “NAS-FM: neural architecture search for tunable and interpretable sound synthesis based on frequency modulation,” in Proceedings of the Thirty-Second International Joint Conference on Artificial Intelligence, 5869–5877. 10.24963/ijcai.2023/651

  • 171

    Yee-KingM. J.FeddenL.d’InvernoM. (2018). Automatic programming of VST sound synthesizers using deep networks and other techniques. IEEE Trans. Emerg. Top. Comput. Intell.2, 150–159. 10.1109/TETCI.2017.2783885

  • 172

    YoshimuraT.TakakiS.NakamuraK.OuraK.HonoY.HashimotoK.et al (2023). “Embedding a differentiable mel-cepstral synthesis filter to a neural speech synthesis system,” in ICASSP 2023 - 2023 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). 1–5. 10.1109/ICASSP49357.2023.10094872

  • 173

    YouJ.KimD.NamG.HwangG.ChaeG. (2021). “GAN vocoder: multi-resolution discriminator is all you need,” in Proceedings of Interspeech 2021, 2177–2181. 10.21437/Interspeech.2021-41

  • 174

    YuC.LuH.HuN.YuM.WengC.XuK.et al (2020). “DurIAN: duration informed attention network for speech synthesis,” in Proceedings of Interspeech 2020, 2027–2031. 10.21437/Interspeech.2020-2968

  • 175

    YuC.-Y.FazekasG. (2023). Singing voice synthesis using differentiable LPC and glottal-flow-inspired wavetables. arXiv [Preprint]. Available at https://arxiv.org/abs/2306.17252 (Accessed July 05, 2023).

  • 176

    ZenH.TokudaK.BlackA. W. (2009). Statistical parametric speech synthesis. Speech Commun.51, 1039–1064. 10.1016/j.specom.2009.04.004

  • 177

    ZhaoY.WangX.JuvelaL.YamagishiJ. (2020). “Transferring neural speech waveform synthesizers to musical instrument sounds generation,” in ICASSP 2020 - 2020 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), Barcelona, Spain (IEEE), 6269–6273. 10.1109/ICASSP40776.2020.9053047

Summary

Keywords

digital signal processing, machine learning, audio synthesis, automatic differentiation, neural networks

Citation

Hayes B, Shier J, Fazekas G, McPherson A and Saitis C (2024) A review of differentiable digital signal processing for music and speech synthesis. Front. Sig. Proc. 3:1284100. doi: 10.3389/frsip.2023.1284100

Received

27 August 2023

Accepted

08 December 2023

Published

11 January 2024

Volume

3 - 2023

Edited by

Cumhur Erkut, Aalborg University, Denmark

Reviewed by

Stefano Fasciani, University of Oslo, Norway

Chengshi Zheng, Chinese Academy of Sciences (CAS), China

Shahan Nercessian, iZotope/Native Instruments, United States

Updates

Copyright

*Correspondence: Jordie Shier, ; Ben Hayes,

Disclaimer

All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article or claim that may be made by its manufacturer is not guaranteed or endorsed by the publisher.

Outline

Figures

Cite article

Copy to clipboard


Export citation file


Share article

Article metrics

+ + + + + + \ No newline at end of file diff --git a/research/physical-voice-modeling/sources/mathur-story-rodriguez-2006-fractional-elongation.html b/research/physical-voice-modeling/sources/mathur-story-rodriguez-2006-fractional-elongation.html new file mode 100644 index 0000000..eb7ae55 --- /dev/null +++ b/research/physical-voice-modeling/sources/mathur-story-rodriguez-2006-fractional-elongation.html @@ -0,0 +1,819 @@ + + + + + + + + + + + + + + + + Vocal-tract modeling: Fractional elongation of segment lengths in a waveguide model with half-sample delays + - Arizona Board of Regents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +Skip to main navigation + + Skip to search + +Skip to main content + + + + + + + + + +
+ +
+ + + + + +
+ + + + + +
+
+
+

Vocal-tract modeling: Fractional elongation of segment lengths in a waveguide model with half-sample delays

+ + + +

Research output: Contribution to journal › Article › peer-review

+
+ + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+ + + + 20 + +   Link opens in a new tab + + Scopus + citations +
+ + +
+ + +
+ +
+ +
+ + + +
+ +
+ +
+ +
+ +
+ +
+ + +
+ +
+ + + +
+ +
+ +
+
+
+
+ + +

Abstract

+

Digital waveguide models are commonly used for simulating vocal-tract acoustics based on physiological data. In particular, waveguide models with half-sample delays are known to be well suited for speech production research. This paper presents enhancements to such a model, aimed at improved accuracy in mapping physiological vocal-tract data (shape and length of the airway) to waveguide parameters. The enhancements allow the length of the vocal tract to be continuously varied, thus enabling more realistic synthesis. This is achieved by smoothly varying the individual segment lengths of a piecewise-cylindrical representation of ;the airway, without altering the system sampling frequency. Fractional-delay filters are used for spatial interpolation of the digital waveguide model. The algorithms are validated by modeling the protrusion of lips, lowering of larynx and lengthening of intermediate segments for a static vowel shape.

+
Original languageEnglish (US)
Pages (from-to)1754-1762
Number of pages9
JournalIEEE Transactions on Audio, Speech and Language Processing
Volume14
Issue number5
DOIs
StatePublished - Sep 2006
+ + + + + + +

Keywords

  • Articulatory speech synthesis
  • Digital waveguides
  • Vocal tract modeling

ASJC Scopus subject areas

  • Acoustics and Ultrasonics
  • Electrical and Electronic Engineering
+ +
+ + +
+
+
+ +
+
+
+

+ + Fingerprint +

+ + Dive into the research topics of 'Vocal-tract modeling: Fractional elongation of segment lengths in a waveguide model with half-sample delays'. Together they form a unique fingerprint. + +
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + +
+
+
+

Cite this

+
    + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + diff --git a/research/physical-voice-modeling/sources/mullen-howard-murphy-2006-waveguide-vocal-tract.pdf b/research/physical-voice-modeling/sources/mullen-howard-murphy-2006-waveguide-vocal-tract.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b15b1520f23731c7a7f351b0a28fcef9a3fd6684 GIT binary patch literal 746082 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

AePTZFBL>ni0-*~ORAClAuMHeK^f8qC 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%0AEqHxhiMoQ1s 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

    #HZbt~JXE!JKbDi*h|)8e&E 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

    y?ayx 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 literal 0 HcmV?d00001 diff --git a/state/evidence.jsonl b/state/evidence.jsonl index 154d420..b111f08 100644 --- a/state/evidence.jsonl +++ b/state/evidence.jsonl @@ -143,3 +143,4 @@ {"timestamp":"2026-05-26T10:10:00+01:00","topic":"continuous-tract-morphology","claim":"PT's 44 oral cells are a reference grid, not anatomy. A 17 cm tract split into 44 cells at 44.1 kHz has about 0.5 samples of acoustic delay per cell, so PT-style substeps are pressure for fractional-delay waveguide lowering rather than a durable Aqua DSL primitive. `TractAreaFunction` now owns physical length, normalized interpolation, resampling, and per-cell delay derivation; `tract sections=...` can choose a compiled lowering grid without forcing the named morphology's authoring sample count to match.","evidence":"Added `length_cm` parsing for `tract_shape`/`nasal_branch`, `TractAreaFunction.DiameterAt`, `Resample`, and `CellDelaySamples`; focused tests cover continuous interpolation, authoring-grid/lowering-grid separation, and the 44-cell half-sample delay fact."} {"timestamp":"2026-05-26T10:43:00+01:00","topic":"pink-trombone-acoustic-grid-parity","claim":"Waveguide tracts now default to a compiled acoustic unit-delay grid derived from physical length at the 44.1 kHz target. PT's 17 cm / 44-cell shape lowers to about 22 emitted oral sections; nasal length 12 cm lowers to 15 sections. `VocalTract.IndexScale` maps runtime PT-index controls onto the emitted grid so parameter knobs remain in source morphology coordinates. Removing stale `substeps=2` from PT parity fixtures and applying index scaling improved vowels/sibilant but exposed closure as still wrong: open 0.6143, front 0.6349, nasal 0.5425, sibilant 0.3744, closure-release -0.0820.","evidence":"dotnet test tests/AquaSynth.Dsl.Tests/AquaSynth.Dsl.Tests.csproj --no-build --filter \"WaveguideTractDefaultsToAcousticUnitDelayGrid|PinkTromboneParityFixturesUseReusableLowLevelPrimitives|PinkTromboneFixturesReportLogMelParityWhenFaustIsInstalled\" -v minimal passed; artifacts/parity/pink-trombone-logmel/20260526T104229319/summary.txt"} {"timestamp":"2026-05-26T11:03:00+01:00","topic":"physical-voice-modeling-research","claim":"The next voice architecture should be an acoustic port network, not a Pink Trombone module: continuous morphology owns paths/area curves, source ports model larynx/syrinx/reed/noise exciters, branch and radiation ports own topology, and wave-clock policies choose unit/half-sample/fractional-delay lowering. Faust `physmodels.lib` and `delays.lib` provide relevant primitives (`pm.chain`, `pm.l2s`, `pm.waveguideFd*`, `de.fdelay*`, Lagrange, Thiran/allpass), but AquaSynth should generate custom scattering where live area controls and inspectable differentiable parameters matter.","evidence":"Added docs/physical-voice-modeling-research.md after checking Faust 2.85.5 local libraries plus primary literature on half-sample/fractional-delay vocal-tract waveguides, waveguide tract acoustics, and differentiable articulatory/source-filter synthesis."} +{"timestamp":"2026-05-26T14:50:00+01:00","topic":"physical-voice-research-packet","claim":"Physical voice modeling research is now persisted as a local packet under `research/physical-voice-modeling/`, with a distilled summary, source manifest, hashes, local Faust library captures, an open waveguide vocal-tract PDF, and downloaded HTML snapshots for fractional-delay vocal-tract and DDSP review sources.","evidence":"Added `research/physical-voice-modeling/README.md`, `SUMMARY.md`, `SOURCES.md`, and source files under `research/physical-voice-modeling/sources/`; updated docs and spine to point at the packet."} diff --git a/state/spine.yaml b/state/spine.yaml index afad078..bf4ea3b 100644 --- a/state/spine.yaml +++ b/state/spine.yaml @@ -45,6 +45,7 @@ current_mechanism: pink_trombone_parity: docs/pink-trombone-parity.md pink_trombone_dsl_parity_plan: docs/pink-trombone-dsl-parity-plan.md physical_voice_modeling_research: docs/physical-voice-modeling-research.md + physical_voice_modeling_packet: research/physical-voice-modeling parameter_contracts: src/AquaSynth.Core/Model.cs live_invariants: