diff --git a/doc/library.html b/doc/library.html index c0dac530..f797fb81 100644 --- a/doc/library.html +++ b/doc/library.html @@ -452,10 +452,13 @@
(os.)lf_squarewavepos
(os.)lf_squarewave
(os.)lf_trianglepos
(os.)lf_triangle
(os.)sawNp
(os.)oscws
(os.)oscwq
(os.)oscw
(os.)lf_sawpos
(os.)lf_saw
(os.)lf_triangle
(fi.)integrator
Same as pole(1)
[implemented separately for block-diagram clarity].
(fi.)dcblockerat
DC blocker with configurable break frequency. The amplitude response is substantially flat above \(fb\), and sloped at about +6 dB/octave below \(fb\). Derived from the analog transfer function \(H(s) = \frac{s}{(s + 2 \pi fb)}\) by the low-frequency-matching bilinear transform method (i.e., the standard frequency-scaling constant 2SR).
+DC blocker with configurable break frequency. The amplitude response is substantially flat above \(fb\), and sloped at about +6 dB/octave below \(fb\). Derived from the analog transfer function \(H(s) = \frac{s}{(s + 2 \pi fb)}\) by the low-frequency-matching bilinear transform method (i.e., the standard frequency-scaling constant 2*SR).
_ : dcblockerat(fb) : _
Where:
@@ -3759,9 +3769,9 @@Where:
N
: desired integer filter order (fixed at compile time)f0
: lower frequency limit for desired roll-off bandf0
: lower frequency limit for desired roll-off band > 0bw
: bandwidth of desired roll-off bandalpha
: slope of roll-off desired in nepers per neper (ln mag / ln radian freq)alpha
: slope of roll-off desired in nepers per neper, between -1 and 1 (ln mag / ln radian freq)See spectral_tilt_demo
.
freq
: frequency in Hz(os.)lf_triangle
Positive unit-amplitude LF triangle wave lf_triangle
is a standard Faust function.
lf_triangle(freq) : _
+Where:
+freq
: frequency in HzSawtooth waveform oscillators for virtual analog synthesis et al. The ‘simple’ versions (lf_rawsaw
, lf_sawpos
and saw1
), are mere samplings of the ideal continuous-time (“analog”) waveforms. While simple, the aliasing due to sampling is quite audible. The differentiated polynomial waveform family (saw2
, sawN
, and derived functions) do some extra processing to suppress aliasing (not audible for very low fundamental frequencies). According to Lehtonen et al. (JASA 2012), the aliasing of saw2
should be inaudible at fundamental frequencies below 2 kHz or so, for a 44.1 kHz sampling rate and 60 dB SPL presentation level; fundamentals 415 and below required no aliasing suppression (i.e., saw1
is ok).
(os.)lf_rawsaw
Simple sawtooth waveform oscillator between 0 and period in samples.
-lf_rawsaw(periodsamps)
Where:
(os.)lf_sawpos_phase
Simple sawtooth waveform oscillator between 0 and 1 with phase control.
-lf_sawpos_phase(freq,phase)
Where:
phase
: phase(os.)lf_sawpos
Simple sawtooth waveform oscillator between 0 and 1.
+lf_sawpos(freq)
+Where:
+freq
: frequency(os.)lf_saw
Simple sawtooth waveform. lf_saw
is a standard Faust function.
lf_saw(freq)
+Where:
+freq
: frequency//——————(os.)sawN
——————————– Bandlimited Sawtooth
sawN(N,freq)
, sawNp
, saw2dpw(freq)
, saw2(freq)
, saw3(freq)
, saw4(freq)
, saw5(freq)
, saw6(freq)
, sawtooth(freq)
, saw2f2(freq)
saw2f4(freq)
“Alias-Suppressed Oscillators based on Differentiated Polynomial Waveforms”, Vesa Valimaki, Juhan Nam, Julius Smith, and Jonathan Abel, IEEE Tr. Acoustics, Speech, and Language Processing (IEEE-ASLP), Vol. 18, no. 5, May 2010.
Correction-filtered versions of saw2
: saw2f2
, saw2f4
The correction filter compensates “droop” near half the sampling rate. See reference for sawN.
sawN(N,freq) : _
sawNp(N,freq,phase) : _
saw2dpw(freq) : _
@@ -4671,7 +4708,7 @@ (os.)saw3
(os.)sawtooth
Alias-free sawtooth wave. 2nd order interpolation (based on saw2
). sawtooth
is a standard Faust function.
-Usage
+Usage
sawtooth(freq) : _
Where:
@@ -4688,7 +4725,7 @@ Bandlimited Pulse, Square,
Bandlimited Pulse, Square, and Impulse Trains
pulsetrainN
, pulsetrain
, squareN
, square
, imptrain
, imptrainN
, triangle
, triangleN
All are zero-mean and meant to oscillate in the audio frequency range. Use simpler sample-rounded lf_* versions above for LFOs.
-Usage
+Usage
pulsetrainN(N,freq,duty) : _
pulsetrain(freq, duty) : _ // = pulsetrainN(2)
squareN(N, freq) : _
@@ -4707,7 +4744,7 @@ (os.)pulsetrainN
(os.)pulsetrain
Bandlimited pulse train oscillator. Based on pulsetrainN(2)
. pulsetrain
is a standard Faust function.
-Usage
+Usage
pulsetrain(freq, duty) : _
Where:
@@ -4720,7 +4757,7 @@ (os.)squareN
(os.)square
Bandlimited square wave oscillator. Based on squareN(2)
. square
is a standard Faust function.
-Usage
+Usage
square(freq) : _
Where:
@@ -4729,7 +4766,7 @@ Usage
(os.)impulse
One-time impulse generated when the Faust process is started. impulse
is a standard Faust function.
-Usage
+Usage
impulse : _
(os.)imptrainN
@@ -4737,7 +4774,7 @@ (os.)imptrainN
(os.)imptrain
Bandlimited impulse train generator. Based on imptrainN(2)
. imptrain
is a standard Faust function.
-Usage
+Usage
imptrain(freq) : _
Where:
@@ -4749,7 +4786,7 @@ (os.)triangleN
(os.)triangle
Bandlimited triangle wave oscillator. Based on triangleN(2)
. triangle
is a standard Faust function.
-Usage
+Usage
triangle(freq) : _
Where:
@@ -4758,7 +4795,7 @@ Usage
Filter-Based Oscillators
Filter-Based Oscillators
-Usage
+Usage
osc[b|r|rs|rc|s|w](f), where f = frequency in Hz.
References
@@ -4767,7 +4804,7 @@ References
(os.)oscb
Sinusoidal oscillator based on the biquad.
-Usage
+Usage
oscb(freq) : _
Where:
@@ -4776,7 +4813,7 @@ Usage
(os.)oscrq
Sinusoidal (sine and cosine) oscillator based on 2D vector rotation, = undamped “coupled-form” resonator = lossless 2nd-order normalized ladder filter.
-Usage
+Usage
oscrq(freq) : _,_
Where:
@@ -4789,7 +4826,7 @@ Reference
(os.)oscrs
Sinusoidal (sine) oscillator based on 2D vector rotation, = undamped “coupled-form” resonator = lossless 2nd-order normalized ladder filter.
-Usage
+Usage
oscrs(freq) : _
Where:
@@ -4802,7 +4839,7 @@ Reference
(os.)oscrc
Sinusoidal (cosine) oscillator based on 2D vector rotation, = undamped “coupled-form” resonator = lossless 2nd-order normalized ladder filter.
-Usage
+Usage
oscrc(freq) : _
Where:
@@ -4818,7 +4855,7 @@ (os.)oscs
(os.)osc
Default sine wave oscillator (same as oscs). osc
is a standard Faust function.
-Usage
+Usage
osc(freq) : _
Where:
@@ -4829,7 +4866,7 @@ Waveguide-Resonator-Based Oscilla
Sinusoidal oscillator based on the waveguide resonator wgr
.
(os.)oscw
Sinusoidal oscillator based on the waveguide resonator wgr
. Unit-amplitude cosine oscillator.
-Usage
+Usage
oscwc(freq) : _
Where:
@@ -4842,7 +4879,7 @@ Reference
(os.)oscws
Sinusoidal oscillator based on the waveguide resonator wgr
. Unit-amplitude sine oscillator
-Usage
+Usage
oscws(freq) : _
Where:
@@ -4855,7 +4892,7 @@ Reference
(os.)oscwq
Sinusoidal oscillator based on the waveguide resonator wgr
. Unit-amplitude cosine and sine (quadrature) oscillator.
-Usage
+Usage
oscwq(freq) : _
Where:
@@ -4868,7 +4905,7 @@ Reference
(os.)oscw
Sinusoidal oscillator based on the waveguide resonator wgr
. Unit-amplitude cosine oscillator (default)
-Usage
+Usage
oscw(freq) : _
Where:
@@ -4879,31 +4916,86 @@ Reference
- https://ccrma.stanford.edu/~jos/pasp/Digital_Waveguide_Oscillator.html
-(os.)lf_sawpos
-Simple sawtooth waveform oscillator between 0 and 1.
-Usage
-lf_sawpos(freq)
+Casio CZ Oscillators
+Oscillators that mimics some of the Casio CZ oscillators.
+(os.)CZsaw
+Oscillator that mimics the Casio CZ saw oscillator CZsaw
is a standard Faust function.
+Usage
+CZsaw(fund,index) : _
Where:
-freq
: frequency
+fund
: a saw-tooth waveform between 0 and 1 that the oscillator slaves to
+index
: the brightness of the oscillator, 0 to 1. 0 = sine-wave, 1 = saw-wave
-(os.)lf_saw
-Simple sawtooth waveform. lf_saw
is a standard Faust function.
-Usage
-lf_saw(freq)
+(os.)CZsquare
+Oscillator that mimics the Casio CZ square oscillator CZsquare
is a standard Faust function.
+Usage
+CZsquare(fund,index) : _
Where:
-freq
: frequency
+fund
: a saw-tooth waveform between 0 and 1 that the oscillator slaves to
+index
: the brightness of the oscillator, 0 to 1. 0 = sine-wave, 1 = square-wave
-(os.)lf_triangle
-Positive unit-amplitude LF triangle wave lf_triangle
is a standard Faust function.
-Usage
-lf_triangle(freq) : _
+(os.)CZpulse
+Oscillator that mimics the Casio CZ pulse oscillator CZpulse
is a standard Faust function.
+Usage
+CZpulse(fund,index) : _
Where:
-freq
: frequency in Hz
+fund
: a saw-tooth waveform between 0 and 1 that the oscillator slaves to
+index
: the brightness of the oscillator, 0 gives a sine-wave, 1 is closer to a pulse
+
+
+(os.)CZsinePulse
+Oscillator that mimics the Casio CZ sine/pulse oscillator CZsinePulse
is a standard Faust function.
+Usage
+CZsinePulse(fund,index) : _
+Where:
+
+fund
: a saw-tooth waveform between 0 and 1 that the oscillator slaves to
+index
: the brightness of the oscillator, 0 gives a sine-wave, 1 is a sine minus a pulse
+
+
+(os.)CZhalfSine
+Oscillator that mimics the Casio CZ half sine oscillator CZhalfSine
is a standard Faust function.
+Usage
+CZhalfSine(fund,index) : _
+Where:
+
+fund
: a saw-tooth waveform between 0 and 1 that the oscillator slaves to
+index
: the brightness of the oscillator, 0 gives a sine-wave, 1 is somewhere between a saw and a square
+
+
+(os.)CZresSaw
+Oscillator that mimics the Casio CZ resonant saw-tooth oscillator CZresSaw
is a standard Faust function.
+Usage
+CZresSaw(fund,res) : _
+Where:
+
+fund
: a saw-tooth waveform between 0 and 1 that the oscillator slaves to
+res
: the frequency of resonance as a factor of the fundamental pitch.
+
+
+(os.)CZresTriangle
+Oscillator that mimics the Casio CZ resonant triangle oscillator CZresTriangle
is a standard Faust function.
+Usage
+CZresTriangle(fund,res) : _
+Where:
+
+fund
: a saw-tooth waveform between 0 and 1 that the oscillator slaves to
+res
: the frequency of resonance as a factor of the fundamental pitch.
+
+
+(os.)CZresTrap
+Oscillator that mimics the Casio CZ resonant trapeze oscillator CZresTrap
is a standard Faust function.
+Usage
+CZresTrap(fund,res) : _
+Where:
+
+fund
: a saw-tooth waveform between 0 and 1 that the oscillator slaves to
+res
: the frequency of resonance as a factor of the fundamental pitch.
phaflangers.lib
@@ -4911,7 +5003,7 @@ phaflangers.lib
Functions Reference
(pf.)flanger_mono
Mono flanging effect.
-Usage:
+Usage:
_ : flanger_mono(dmax,curdel,depth,fb,invert) : _;
Where:
@@ -4926,7 +5018,7 @@ Reference
(pf.)flanger_stereo
Stereo flanging effect. flanger_stereo
is a standard Faust function.
-Usage:
+Usage:
_,_ : flanger_stereo(dmax,curdel1,curdel2,depth,fb,invert) : _,_;
Where:
@@ -5019,7 +5111,7 @@ Conversion Tools
Useful conversion tools for physical modeling.
(pm.)f2l
Frequency to length in meters.
-Usage
+Usage
f2l(freq) : distanceInMeters
Where:
@@ -5028,7 +5120,7 @@ Usage
(pm.)l2f
Length in meters to frequency.
-Usage
+Usage
l2f(length) : freq
Where:
@@ -5037,7 +5129,7 @@ Usage
(pm.)l2s
Length in meters to number of samples.
-Usage
+Usage
l2s(l) : numberOfSamples
Where:
@@ -5048,12 +5140,12 @@ 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
: 3 signals ins and 3 signals out.
-Usage
+Usage
chain(basicBlock : basicBlock : etc.)
(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
+Usage
leftGoingWaves,rightGoingWaves,mixedOutput : chain( A : B ) : leftGoingWaves,rightGoingWaves,mixedOutput
with{
A = _,_,_;
@@ -5062,43 +5154,43 @@ Usage
(pm.)inLeftWave
Adds a signal to left going waves anywhere in a chain
of blocks.
-Usage
+Usage
model(x) = chain(A : inLeftWave(x) : B)
Where A
and B
are bidirectional blocks and x
is the signal added to left going waves in that chain.
(pm.)inRightWave
Adds a signal to right going waves anywhere in a chain
of blocks.
-Usage
+Usage
model(x) = chain(A : inRightWave(x) : B)
Where A
and B
are bidirectional blocks and x
is the signal added to right going waves in that chain.
(pm.)in
Adds a signal to left and right going waves anywhere in a chain
of blocks.
-Usage
+Usage
model(x) = chain(A : in(x) : B)
Where A
and B
are bidirectional blocks and x
is the signal added to left and right going waves in that chain.
(pm.)outLeftWave
Sends the signal of left going waves to the output channel of the chain
.
-Usage
+Usage
chain(A : outLeftWave : B)
Where A
and B
are bidirectional blocks.
(pm.)outRightWave
Sends the signal of right going waves to the output channel of the chain
.
-Usage
+Usage
chain(A : outRightWave : B)
Where A
and B
are bidirectional blocks.
(pm.)out
Sends the signal of right and left going waves to the output channel of the chain
.
-Usage
+Usage
chain(A : out : B)
Where A
and B
are bidirectional blocks.
(pm.)terminations
Creates terminations on both sides of a chain
without closing the inputs and outputs of the bidirectional signals chain. As for chain
, this function adds a 1 sample delay to the bidirectional signal, both ways. Of courses, this function can be nested within a chain
.
-Usage
+Usage
terminations(a,b,c)
with{
a = *(-1); // left termination
@@ -5108,7 +5200,7 @@ Usage
(pm.)lTermination
Creates a termination on the left side of a 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
.
-Usage
+Usage
lTerminations(a,b)
with{
a = *(-1); // left termination
@@ -5117,7 +5209,7 @@ Usage
(pm.)rTermination
Creates a termination on the right side of a 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
.
-Usage
+Usage
rTerminations(b,c)
with{
b = chain(D : E : F); // bidirectional chain of blocks (D, E, F, etc.)
@@ -5126,17 +5218,17 @@ Usage
(pm.)closeIns
Closes the inputs of a bidirectional chain in all directions.
-Usage
+Usage
closeIns : chain(...) : _,_,_
(pm.)closeOuts
Closes the outputs of a bidirectional chain in all directions except for the main signal output (3d output).
-Usage
+Usage
_,_,_ : chain(...) : _
(pm.)endChain
Closes the inputs and outputs of a bidirectional chain in all directions except for the main signal output (3d output).
-Usage
+Usage
endChain(chain(...)) : _
Basic Elements
@@ -5150,7 +5242,7 @@ List of functions
waveguideFd2
: second order fractional delay waveguide
waveguideFd4
: fourth order fractional delay waveguide
-Usage
+Usage
chain(A : waveguideUd(nMax,n) : B)
Where:
@@ -5160,7 +5252,7 @@ Usage
(pm.)waveguide
Standard pm.lib
waveguide (based on waveguideFd4
).
-Usage
+Usage
chain(A : waveguide(nMax,n) : B)
Where:
@@ -5170,7 +5262,7 @@ Usage
(pm.)bridgeFilter
Generic two zeros bridge FIR filter (as implemented in the STK) that can be used to implement the reflectance violin, guitar, etc. bridges.
-Usage
+Usage
_ : bridge(brightness,absorption) : _
Where:
@@ -5180,7 +5272,7 @@ Usage
(pm.)modeFilter
Resonant bandpass filter that can be used to implement a single resonance (mode).
-Usage
+Usage
_ : modeFilter(freq,t60,gain) : _
Where:
@@ -5193,7 +5285,7 @@ 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
+Usage
chain(A : stringSegment(maxLength,length) : B)
Where:
@@ -5203,7 +5295,7 @@ Usage
(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
+Usage
chain(... : openString(length,stiffness,pluckPosition,excitation) : ...)
Where:
@@ -5215,7 +5307,7 @@ Usage
(pm.)nylonString
A bidirectional block implementing a basic nylon string with selectable excitation position. This element is based on openString
and has a fix stiffness corresponding to that of a nylon string.
-Usage
+Usage
chain(... : nylonString(length,pluckPosition,excitation) : ...)
Where:
@@ -5226,7 +5318,7 @@ Usage
(pm.)steelString
A bidirectional block implementing a basic steel string with selectable excitation position. This element is based on openString
and has a fix stiffness corresponding to that of a steel string.
-Usage
+Usage
chain(... : steelString(length,pluckPosition,excitation) : ...)
Where:
@@ -5237,7 +5329,7 @@ Usage
(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
+Usage
chain(... : openStringPick(length,stiffness,pluckPosition,excitation) : ...)
Where:
@@ -5249,7 +5341,7 @@ Usage
(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
+Usage
chain(... : openStringPickUp(length,stiffness,pluckPosition,excitation) : ...)
Where:
@@ -5262,7 +5354,7 @@ Usage
(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
+Usage
chain(... : openStringPickDown(length,stiffness,pluckPosition,excitation) : ...)
Where:
@@ -5275,48 +5367,48 @@ Usage
(pm.)ksReflexionFilter
The “typical” one-zero Karplus-strong feedforward reflexion filter. This filter will be typically used in a termination (see below).
-Usage
+Usage
terminations(_,chain(...),ksReflexionFilter)
(pm.)rStringRigidTermination
Bidirectional block implementing a right rigid string termination (no damping, just phase inversion).
-Usage
+Usage
chain(rStringRigidTermination : stringSegment : ...)
(pm.)lStringRigidTermination
Bidirectional block implementing a left rigid string termination (no damping, just phase inversion).
-Usage
+Usage
chain(... : stringSegment : lStringRigidTermination)
(pm.)elecGuitarBridge
Bidirectional block implementing a simple electric guitar bridge. This block is based on 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
+Usage
chain(... : stringSegment : elecGuitarBridge)
(pm.)elecGuitarNuts
Bidirectional block implementing a simple electric guitar nuts. This block is based on bridgeFilter
and does essentially the same thing as 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
+Usage
chain(elecGuitarNuts : stringSegment : ...)
(pm.)guitarBridge
Bidirectional block implementing a simple acoustic guitar bridge. This bridge damps more hight frequencies than 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
+Usage
chain(... : stringSegment : guitarBridge)
(pm.)guitarNuts
Bidirectional block implementing a simple acoustic guitar nuts. This nuts damps more hight frequencies than 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
+Usage
chain(guitarNuts : stringSegment : ...)
(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
+Usage
1-1' : idealString(length,reflexion,xPosition,excitation)
With: * length
: the length of the string in meters * pluckPosition
: the plucking position (0.001-0.999) * excitation
: the input signal for the excitation
(pm.)ks
A Karplus-Strong string (in that case, the string is implemented as a one dimension waveguide).
-Usage
+Usage
ks(length,damping,excitation) : _
Where:
@@ -5327,12 +5419,12 @@ Usage
(pm.)ks_ui_MIDI
Ready-to-use, MIDI-enabled Karplus-Strong string with buil-in UI.
-Usage
+Usage
ks_ui_MIDI : _
(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 applications out of this function. Pitch is changed by changing the length of the string and not through a finger model.
-Usage
+Usage
elecGuitarModel(length,pluckPosition,mute,excitation) : _
Where:
@@ -5344,7 +5436,7 @@ Usage
(pm.)elecGuitar
A simple electric guitar model with steel strings (based on elecGuitarModel
) implementing an excitation model. This model implements a single string. Additional strings should be created by making a polyphonic applications out of this function.
-Usage
+Usage
elecGuitar(length,pluckPosition,trigger) : _
Where:
@@ -5357,17 +5449,17 @@ Usage
(pm.)elecGuitar_ui_MIDI
Ready-to-use MIDI-enabled electric guitar physical model with built-in UI.
-Usage
+Usage
elecGuitar_ui_MIDI : _
(pm.)guitarBody
WARNING: not implemented yet! Bidirectional block implementing a simple acoustic guitar body.
-Usage
+Usage
chain(... : guitarBody)
(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 applications 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
+Usage
guitarModel(length,pluckPosition,excitation) : _
Where:
@@ -5378,7 +5470,7 @@ Usage
(pm.)guitar
A simple acoustic guitar model with steel strings (based on guitarModel
) implementing an excitation model. This model implements a single string. Additional strings should be created by making a polyphonic applications out of this function.
-Usage
+Usage
guitar(length,pluckPosition,trigger) : _
Where:
@@ -5390,12 +5482,12 @@ Usage
(pm.)guitar_ui_MIDI
Ready-to-use MIDI-enabled steel strings acoustic guitar physical model with built-in UI.
-Usage
+Usage
guitar_ui_MIDI : _
(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 applications 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
+Usage
nylonGuitarModel(length,pluckPosition,excitation) : _
Where:
@@ -5406,7 +5498,7 @@ Usage
(pm.)nylonGuitar
A simple acoustic guitar model with steel strings (based on nylonGuitarModel
) implementing an excitation model. This model implements a single string. Additional strings should be created by making a polyphonic applications out of this function.
-Usage
+Usage
nylonGuitar(length,pluckPosition,trigger) : _
Where:
@@ -5418,12 +5510,12 @@ Usage
(pm.)nylonGuitar_ui_MIDI
Ready-to-use MIDI-enabled nylon strings acoustic guitar physical model with built-in UI.
-Usage
+Usage
nylonGuitar_ui_MIDI : _
(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: https://ccrma.stanford.edu/~rmichon/3dPrintingModeling/
-Usage
+Usage
_ : modeInterpRes(nModes,x,y) : _
Where:
@@ -5434,7 +5526,7 @@ Usage
(pm.)modularInterpBody
Bidirectional block implementing a modular string instrument resonator (see modeInterpRes
).
-Usage
+Usage
chain(... : modularInterpBody(nModes,shape,scale) : ...)
Where:
@@ -5445,7 +5537,7 @@ Usage
(pm.)modularInterpStringModel
String instrument model with a modular body (see modeInterpRes
and https://ccrma.stanford.edu/~rmichon/3dPrintingModeling/).
-Usage
+Usage
modularInterpStringModel(length,pluckPosition,shape,scale,bodyExcitation,stringExcitation) : _
Where:
@@ -5459,7 +5551,7 @@ Usage
(pm.)modularInterpInstr
String instrument with a modular body (see modeInterpRes
and https://ccrma.stanford.edu/~rmichon/3dPrintingModeling/).
-Usage
+Usage
modularInterpInstr(stringLength,pluckPosition,shape,scale,gain,tapBody,triggerString) : _
Where:
@@ -5474,14 +5566,14 @@ Usage
(pm.)modularInterpInstr_ui_MIDI
Ready-to-use MIDI-enabled string instrument with a modular body (see modeInterpRes
and https://ccrma.stanford.edu/~rmichon/3dPrintingModeling/) with built-in UI.
-Usage
+Usage
modularInterpInstr_ui_MIDI : _
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
+Usage
excitation : bowTable(offeset,slope) : _
Where:
@@ -5492,7 +5584,7 @@ Usage
(pm.)violinBowTable
Violin bow table based on bowTable
.
-Usage
+Usage
bowVelocity : violinBowTable(bowPressure) : _
Where:
@@ -5502,7 +5594,7 @@ Usage
(pm.)bowInteraction
Bidirectional block implementing the interaction of a bow in a chain
.
-Usage
+Usage
chain(... : stringSegment : bowInteraction(bowTable) : stringSegment : ...)
Where:
@@ -5511,7 +5603,7 @@ Usage
(pm.)violinBow
Bidirectional block implementing a violin bow and its interaction with a string.
-Usage
+Usage
chain(... : stringSegment : violinBow(bowPressure,bowVelocity) : stringSegment : ...)
Where:
@@ -5521,7 +5613,7 @@ Usage
(pm.)violinBowedString
Violin bowed string bidirectional block with controllable bow position. Terminations are not implemented in this model.
-Usage
+Usage
chain(nuts : violinBowedString(stringLength,bowPressure,bowVelocity,bowPosition) : bridge)
Where:
@@ -5533,22 +5625,22 @@ Usage
(pm.)violinNuts
Bidirectional block implementing simple violin nuts. This function is based on bridgeFilter
.
-Usage
+Usage
chain(violinNuts : stringSegment : ...)
(pm.)violinBridge
Bidirectional block implementing a simple violin bridge. This function is based on bridgeFilter
.
-Usage
+Usage
chain(... : stringSegment : violinBridge
(pm.)violinBody
Bidirectional block implementing a simple violin body (just a simple resonant lowpass filter).
-Usage
+Usage
chain(... : stringSegment : violinBridge : violinBody)
(pm.)violinModel
Ready-to-use simple violin physical model. This model implements a single string. Additional strings should be created by making a polyphonic applications out of this function. Pitch is changed by changing the length of the string (and not through a finger model).
-Usage
+Usage
violinModel(stringLength,bowPressure,bowVelocity,bridgeReflexion,
bridgeAbsorption,bowPosition) : _
Where:
@@ -5561,19 +5653,19 @@ Usage
(pm.)violin_ui
Ready-to-use violin physical model with built-in UI.
-Usage
+Usage
violinModel_ui : _
(pm.)violin_ui_MIDI
Ready-to-use MIDI-enabled violin physical model with built-in UI.
-Usage
+Usage
violin_ui_MIDI : _
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
).
-Usage
+Usage
chain(A : openTube(maxLength,length) : B)
Where:
@@ -5583,7 +5675,7 @@ Usage
(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
+Usage
excitation : reedTable(offeset,slope) : _
Where:
@@ -5594,7 +5686,7 @@ Usage
(pm.)fluteJetTable
Extremely basic flute jet table.
-Usage
+Usage
excitation : fluteJetTable : _
Where:
@@ -5603,7 +5695,7 @@ Usage
(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
+Usage
excitation : brassLipsTable(tubeLength,lipsTension) : _
Where:
@@ -5614,7 +5706,7 @@ Usage
(pm.)clarinetReed
Clarinet reed based on reedTable
with controllable stiffness.
-Usage
+Usage
excitation : clarinetReed(stiffness) : _
Where:
@@ -5624,7 +5716,7 @@ Usage
(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
+Usage
chain(clarinetMouthPiece(reedStiffness,pressure) : tube : etc.)
Where:
@@ -5634,7 +5726,7 @@ Usage
(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
+Usage
chain(brassLips(tubeLength,lipsTension,pressure) : tube : etc.)
Where:
@@ -5645,7 +5737,7 @@ Usage
(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
+Usage
chain(... : tube : fluteEmbouchure(pressure) : tube : etc.)
Where:
@@ -5654,7 +5746,7 @@ Usage
(pm.)wBell
Generic wind instrument bell bidirectional block that should be placed at the end of a chain
.
-Usage
+Usage
chain(... : wBell(opening))
Where:
@@ -5663,17 +5755,17 @@ Usage
(pm.)fluteHead
Simple flute head implementing waves reflexion.
-Usage
+Usage
chain(fluteHead : tube : ...)
(pm.)fluteFoot
Simple flute foot implementing waves reflexion and dispersion.
-Usage
+Usage
chain(... : tube : fluteFoot)
(pm.)clarinetModel
A simple clarinet physical model without tone holes (pitch is changed by changing the length of the tube of the instrument).
-Usage
+Usage
clarinetModel(length,pressure,reedStiffness,bellOpening) : _
Where:
@@ -5685,7 +5777,7 @@ Usage
(pm.)clarinetModel_ui
Same as clarinetModel
but with a built-in UI. This function doesn’t implement a virtual “blower”, thus pressure
remains an argument here.
-Usage
+Usage
clarinetModel_ui(pressure) : _
Where:
@@ -5694,17 +5786,17 @@ Usage
(pm.)clarinet_ui
Ready-to-use clarinet physical model with built-in UI based on clarinetModel
.
-Usage
+Usage
clarinet_ui : _
(pm.)clarinet_ui_MIDI
Ready-to-use MIDI compliant clarinet physical model with built-in UI.
-Usage
+Usage
clarinet_ui_MIDI : _
(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
+Usage
brassModel(tubeLength,lipsTension,mute,pressure) : _
Where:
@@ -5716,7 +5808,7 @@ Usage
(pm.)brassModel_ui
Same as brassModel
but with a built-in UI. This function doesn’t implement a virtual “blower”, thus pressure
remains an argument here.
-Usage
+Usage
brassModel_ui(pressure) : _
Where:
@@ -5725,17 +5817,17 @@ Usage
(pm.)brass_ui
Ready-to-use brass instrument physical model with built-in UI based on brassModel
.
-Usage
+Usage
brass_ui : _
(pm.)brass_ui_MIDI
Ready-to-use MIDI-controllable brass instrument physical model with built-in UI.
-Usage
+Usage
brass_ui_MIDI : _
(pm.)fluteModel
A simple generic brass instrument physical model without tone holes (pitch is changed by changing the length of the tube of the instrument).
-Usage
+Usage
fluteModel(tubeLength,lipsTension,mute,pressure) : _
Where:
@@ -5746,7 +5838,7 @@ Usage
(pm.)fluteModel_ui
Same as fluteModel
but with a built-in UI. This function doesn’t implement a virtual “blower”, thus pressure
remains an argument here.
-Usage
+Usage
fluteModel_ui(pressure) : _
Where:
@@ -5755,19 +5847,19 @@ Usage
(pm.)flute_ui
Ready-to-use flute physical model with built-in UI based on fluteModel
.
-Usage
+Usage
flute_ui : _
(pm.)flute_ui_MIDI
Ready-to-use MIDI-controllable flute physical model with built-in UI.
-Usage
+Usage
brass_ui_MIDI : _
Exciters
Various kind of excitation signal generators.
(pm.)impulseExcitation
Creates an impulse excitation of one sample.
-Usage
+Usage
gate = button('gate');
impulseExcitation(gate) : chain;
Where:
@@ -5777,7 +5869,7 @@ Usage
(pm.)strikeModel
Creates a filtered noise excitation.
-Usage
+Usage
gate = button('gate');
strikeModel(LPcutoff,HPcutoff,sharpness,gain,gate) : chain;
Where:
@@ -5791,7 +5883,7 @@ Usage
(pm.)strike
Strikes generator with controllable excitation position.
-Usage
+Usage
gate = button('gate');
strike(exPos,sharpness,gain,gate) : chain;
Where:
@@ -5804,7 +5896,7 @@ Usage
(pm.)pluckString
Creates a plucking excitation signal.
-Usage
+Usage
trigger = button('gate');
pluckString(stringLength,cutoff,maxFreq,sharpness,trigger)
Where:
@@ -5819,7 +5911,7 @@ Usage
(pm.)blower
A virtual blower creating a DC signal with some breath noise in it.
-Usage
+Usage
blower(pressure,breathGain,breathCutoff) : _
Where:
@@ -5830,14 +5922,14 @@ Usage
(pm.)blower_ui
Same as blower
but with a built-in UI.
-Usage
+Usage
blower : somethingToBeBlown
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
+Usage
excitation : djembeModel(freq)
Where:
@@ -5848,7 +5940,7 @@ Usage
(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
+Usage
djembe(freq,strikePosition,strikeSharpness,gain,trigger)
Where:
@@ -5861,14 +5953,14 @@ Usage
(pm.)djembe_ui_MIDI
Simple MIDI controllable djembe physical model with built-in UI.
-Usage
+Usage
djembe_ui_MIDI : _
(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
+Usage
excitation : marimbaBarModel(freq,exPos,t60,t60DecayRatio,t60DecaySlope)
Where:
@@ -5882,7 +5974,7 @@ Usage
(pm.)marimbaResTube
Simple marimba resonance tube.
-Usage
+Usage
marimbaResTube(tubeLength,excitation)
Where:
@@ -5892,7 +5984,7 @@ Usage
(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
to know more about the limitations of this type of system).
-Usage
+Usage
excitation : marimbaModel(freq,exPos) : _
Where:
@@ -5903,7 +5995,7 @@ Usage
(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
to know more about the limitations of this type of system).
This function also implement a virtual exciter to drive the model.
-Usage
+Usage
excitation : marimba(freq,strikePosition,strikeCutoff,strikeSharpness,gain,trigger) : _
Where:
@@ -5918,7 +6010,7 @@ Usage
(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
to know more about the limitations of this type of system).
-Usage
+Usage
marimba_ui_MIDI : _
(pm.)churchBellModel
@@ -5926,7 +6018,7 @@ (pm.)churchBellModel
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
+Usage
excitation : churchBellModel(nModes,exPos,t60,t60DecayRatio,t60DecaySlope)
Where:
@@ -5944,7 +6036,7 @@ (pm.)churchBell
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 implement a virtual exciter to drive the model.
-Usage
+Usage
excitation : churchBell(strikePosition,strikeCutoff,strikeSharpness,gain,trigger) : _
Where:
@@ -5958,7 +6050,7 @@ Usage
(pm.)churchBell_ui
Church bell physical model based on churchBell
with built-in UI.
-Usage
+Usage
churchBell_ui : _
(pm.)englishBellModel
@@ -5966,7 +6058,7 @@ (pm.)englishBellModel
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
+Usage
excitation : englishBellModel(nModes,exPos,t60,t60DecayRatio,t60DecaySlope)
Where:
@@ -5984,7 +6076,7 @@ (pm.)englishBell
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 implement a virtual exciter to drive the model.
-Usage
+Usage
excitation : englishBell(strikePosition,strikeCutoff,strikeSharpness,gain,trigger) : _
Where:
@@ -5998,7 +6090,7 @@ Usage
(pm.)englishBell_ui
English church bell physical model based on englishBell
with built-in UI.
-Usage
+Usage
englishBell_ui : _
(pm.)frenchBellModel
@@ -6006,7 +6098,7 @@ (pm.)frenchBellModel
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
+Usage
excitation : frenchBellModel(nModes,exPos,t60,t60DecayRatio,t60DecaySlope)
Where:
@@ -6024,7 +6116,7 @@ (pm.)frenchBell
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 implement a virtual exciter to drive the model.
-Usage
+Usage
excitation : frenchBell(strikePosition,strikeCutoff,strikeSharpness,gain,trigger) : _
Where:
@@ -6038,7 +6130,7 @@ Usage
(pm.)frenchBell_ui
French church bell physical model based on frenchBell
with built-in UI.
-Usage
+Usage
frenchBell_ui : _
(pm.)germanBellModel
@@ -6046,7 +6138,7 @@ (pm.)germanBellModel
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
+Usage
excitation : germanBellModel(nModes,exPos,t60,t60DecayRatio,t60DecaySlope)
Where:
@@ -6064,7 +6156,7 @@ (pm.)germanBell
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 implement a virtual exciter to drive the model.
-Usage
+Usage
excitation : germanBell(strikePosition,strikeCutoff,strikeSharpness,gain,trigger) : _
Where:
@@ -6078,7 +6170,7 @@ Usage
(pm.)germanBell_ui
German church bell physical model based on germanBell
with built-in UI.
-Usage
+Usage
germanBell_ui : _
(pm.)russianBellModel
@@ -6086,7 +6178,7 @@ (pm.)russianBellModel
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
+Usage
excitation : russianBellModel(nModes,exPos,t60,t60DecayRatio,t60DecaySlope)
Where:
@@ -6104,7 +6196,7 @@ (pm.)russianBell
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 implement a virtual exciter to drive the model.
-Usage
+Usage
excitation : russianBell(strikePosition,strikeCutoff,strikeSharpness,gain,trigger) : _
Where:
@@ -6118,7 +6210,7 @@ Usage
(pm.)russianBell_ui
Russian church bell physical model based on russianBell
with built-in UI.
-Usage
+Usage
russianBell_ui : _
(pm.)standardBellModel
@@ -6126,7 +6218,7 @@ (pm.)standardBellModel
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
+Usage
excitation : standardBellModel(nModes,exPos,t60,t60DecayRatio,t60DecaySlope)
Where:
@@ -6144,7 +6236,7 @@ (pm.)standardBell
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 implement a virtual exciter to drive the model.
-Usage
+Usage
excitation : standardBell(strikePosition,strikeCutoff,strikeSharpness,gain,trigger) : _
Where:
@@ -6158,7 +6250,7 @@ Usage
(pm.)standardBell_ui
Standard church bell physical model based on standardBell
with built-in UI.
-Usage
+Usage
standardBell_ui : _
Vocal Synthesis
@@ -6166,7 +6258,7 @@ Vocal Synthesis
(pm.)formantValues
Formant data values.
The formant data used here come from the CSOUND manual http://www.csounds.com/manual/html/.
-Usage
+Usage
ba.take(j+1,formantValues.f(i)) : _
ba.take(j+1,formantValues.g(i)) : _
ba.take(j+1,formantValues.bw(i)) : _
@@ -6180,7 +6272,7 @@ Usage
(pm.)voiceGender
Calculate the gender for the provided voiceType
value. (0: male, 1: female)
-Usage
+Usage
voiceGender(voiceType) : _
Where:
@@ -6189,7 +6281,7 @@ Usage
(pm.)skirtWidthMultiplier
Calculates value to multiply bandwidth to obtain skirtwidth
for a Fof filter.
-Usage
+Usage
skirtWidthMultiplier(vowel,freq,gender) : _
Where:
@@ -6200,7 +6292,7 @@ Usage
(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
. Reference: https://ccrma.stanford.edu/~rmichon/chantLib/
-Usage
+Usage
_ : autobendFreq(n,freq,voiceType) : _
Where:
@@ -6212,7 +6304,7 @@ Usage
(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
. Reference: https://ccrma.stanford.edu/~rmichon/chantLib/
-Usage
+Usage
_ : vocalEffort(freq,gender) : _
Where:
@@ -6223,7 +6315,7 @@ Usage
(pm.)fof
Function to generate a single Formant-Wave-Function. Reference: https://ccrma.stanford.edu/~mjolsen/pdfs/smc2016_MOlsenFOF.pdf
-Usage
+Usage
_ : fof(fc,bw,a,g) : _
Where:
@@ -6236,13 +6328,13 @@ Usage
(pm.)fofSH
FOF with sample and hold used on bw
and a parameter used in the filter-cycling FOF function fofCycle
. Reference: https://ccrma.stanford.edu/~mjolsen/pdfs/smc2016_MOlsenFOF.pdf
-Usage
+Usage
_ : fofSH(fc,bw,a,g) : _
Where: all parameters same as for fof
(pm.)fofCycle
FOF implementation where time-varying filter parameter noise is mitigated by using a cycle of n
sample and hold FOF filters. Reference: https://ccrma.stanford.edu/~mjolsen/pdfs/smc2016_MOlsenFOF.pdf
-Usage
+Usage
_ : fofCycle(fc,bw,a,g,n) : _
Where:
@@ -6252,7 +6344,7 @@ Usage
(pm.)fofSmooth
FOF implementation where time-varying filter parameter noise is mitigated by lowpass filtering the filter parameters bw
and a
with smooth.
-Usage
+Usage
_ : fofSmooth(fc,bw,sw,g,tau) : _
Where:
@@ -6262,7 +6354,7 @@ Usage
(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
.Voice type can be selected but must correspond to the frequency range of the provided source to be realistic.
-Usage
+Usage
_ : formantFilterFofCycle(voiceType,vowel,nFormants,i,freq) : _
Where:
@@ -6275,7 +6367,7 @@ Usage
(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
+Usage
_ : formantFilterFofSmooth(voiceType,vowel,nFormants,i,freq) : _
Where:
@@ -6288,7 +6380,7 @@ Usage
(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
+Usage
_ : formantFilterBP(voiceType,vowel,nFormants,i,freq) : _
Where:
@@ -6301,7 +6393,7 @@ Usage
(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
+Usage
_ : formantFilterbank(voiceType,vowel,formantGen,freq) : _
Where:
@@ -6313,7 +6405,7 @@ Usage
(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
+Usage
_ : formantFilterbankFofCycle(voiceType,vowel,freq) : _
Where:
@@ -6324,7 +6416,7 @@ Usage
(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
+Usage
_ : formantFilterbankFofSmooth(voiceType,vowel,freq) : _
Where:
@@ -6335,7 +6427,7 @@ Usage
(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
+Usage
_ : formantFilterbankBP(voiceType,vowel) : _
Where:
@@ -6346,7 +6438,7 @@ Usage
(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
(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
+Usage
SFFormantModel(voiceType,vowel,exType,freq,gain,source,filterbank,isFof) : _
Where:
@@ -6360,7 +6452,7 @@ Usage
(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 model does not depend on SFFormantModel function.
-Usage
+Usage
SFFormantModelFofCycle(voiceType,vowel,freq,gain) : _
Where:
@@ -6372,7 +6464,7 @@ Usage
(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
+Usage
SFFormantModelFofSmooth(voiceType,vowel,freq,gain) : _
Where:
@@ -6385,7 +6477,7 @@ Usage
(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 http://www.csounds.com/manual/html/.
-Usage
+Usage
SFFormantModelBP(voiceType,vowel,exType,freq,gain) : _
Where:
@@ -6398,39 +6490,39 @@ Usage
(pm.)SFFormantModelFofCycle_ui
Ready-to-use source-filter vocal synthesizer with built-in user interface.
-Usage
+Usage
SFFormantModelFofCycle_ui : _
(pm.)SFFormantModelFofSmooth_ui
Ready-to-use source-filter vocal synthesizer with built-in user interface.
-Usage
+Usage
SFFormantModelFofSmooth_ui : _
(pm.)SFFormantModelBP_ui
Ready-to-use source-filter vocal synthesizer with built-in user interface.
-Usage
+Usage
SFFormantModelBP_ui : _
(pm.)SFFormantModelFofCycle_ui_MIDI
Ready-to-use MIDI-controllable source-filter vocal synthesizer.
-Usage
+Usage
SFFormantModelFofCycle_ui_MIDI : _
(pm.)SFFormantModelFofSmooth_ui_MIDI
Ready-to-use MIDI-controllable source-filter vocal synthesizer.
-Usage
+Usage
SFFormantModelFofSmooth_ui_MIDI : _
(pm.)SFFormantModelBP_ui_MIDI
Ready-to-use MIDI-controllable source-filter vocal synthesizer.
-Usage
+Usage
SFFormantModelBP_ui_MIDI : _
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
+Usage
chain(... : allpassNL(nonlinearity) : ...)
Where:
@@ -6444,19 +6536,19 @@ (re.)jcrev
This artificial reverberator take a mono signal and output stereo (satrev
) and quad (jcrev
). They were implemented by John Chowning in the MUS10 computer-music language (descended from Music V by Max Mathews). They are Schroeder Reverberators, well tuned for their size. Nowadays, the more expensive freeverb is more commonly used (see the Faust examples directory).
jcrev
reverb below was made from a listing of “RV”, dated April 14, 1972, which was recovered from an old SAIL DART backup tape. John Chowning thinks this might be the one that became the well known and often copied JCREV.
jcrev
is a standard Faust function
-Usage
+Usage
_ : jcrev : _,_,_,_
(re.)satrev
This artificial reverberator take a mono signal and output stereo (satrev
) and quad (jcrev
). They were implemented by John Chowning in the MUS10 computer-music language (descended from Music V by Max Mathews). They are Schroeder Reverberators, well tuned for their size. Nowadays, the more expensive freeverb is more commonly used (see the Faust examples directory).
satrev
was made from a listing of “SATREV”, dated May 15, 1971, which was recovered from an old SAIL DART backup tape. John Chowning thinks this might be the one used on his often-heard brass canon sound examples, one of which can be found at https://ccrma.stanford.edu/~jos/wav/FM_BrassCanon2.wav
-Usage
+Usage
_ : satrev : _,_
Feedback Delay Network (FDN) Reverberators
(re.)fdnrev0
Pure Feedback Delay Network Reverberator (generalized for easy scaling). fdnrev0
is a standard Faust function.
-Usage
+Usage
<1,2,4,...,N signals> <:
fdnrev0(MAXDELAY,delays,BBSO,freqs,durs,loopgainmax,nonl) :>
<1,2,4,...,N signals>
@@ -6476,7 +6568,7 @@ Reference
(re.)zita_rev_fdn
Internal 8x8 late-reverberation FDN used in the FOSS Linux reverb zita-rev1 by Fons Adriaensen fons@linuxaudio.org. This is an FDN reverb with allpass comb filters in each feedback delay in addition to the damping filters.
-Usage
+Usage
bus(8) : zita_rev_fdn(f1,f2,t60dc,t60m,fsmax) : bus(8)
Where:
@@ -6494,14 +6586,14 @@ Reference
(re.)zita_rev1_stereo
Extend zita_rev_fdn
to include zita_rev1
input/output mapping in stereo mode. zita_rev1_stereo
is a standard Faust function.
-Usage
+Usage
_,_ : zita_rev1_stereo(rdel,f1,f2,t60dc,t60m,fsmax) : _,_
Where:
rdel
= delay (in ms) before reverberation begins (e.g., 0 to ~100 ms) (remaining args and refs as for zita_rev_fdn
above)
(re.)zita_rev1_ambi
Extend zita_rev_fdn to include zita_rev1 input/output mapping in “ambisonics mode”, as provided in the Linux C++ version.
-Usage
+Usage
_,_ : zita_rev1_ambi(rgxyz,rdel,f1,f2,t60dc,t60m,fsmax) : _,_,_,_
Where:
rgxyz
= relative gain of lanes 1,4,2 to lane 0 in output (e.g., -9 to 9) (remaining args and references as for zita_rev1_stereo above)
@@ -6510,7 +6602,7 @@ Freeverb
(re.)mono_freeverb
A simple Schroeder reverberator primarily developed by “Jezar at Dreampoint” that is extensively used in the free-software world. It uses four Schroeder allpasses in series and eight parallel Schroeder-Moorer filtered-feedback comb-filters for each audio channel, and is said to be especially well tuned.
mono_freeverb
is a standard Faust function.
-Usage
+Usage
_ : mono_freeverb(fb1, fb2, damp, spread) : _;
Where:
@@ -6524,7 +6616,7 @@ License
(re.)stereo_freeverb
A simple Schroeder reverberator primarily developed by “Jezar at Dreampoint” that is extensively used in the free-software world. It uses four Schroeder allpasses in series and eight parallel Schroeder-Moorer filtered-feedback comb-filters for each audio channel, and is said to be especially well tuned.
-Usage
+Usage
_,_ : stereo_freeverb(fb1, fb2, damp, spread) : _,_;
Where:
@@ -6539,7 +6631,7 @@ routes.lib
Functions Reference
(ro.)cross
Cross n signals: (x1,x2,..,xn) -> (xn,..,x2,x1)
. cross
is a standard Faust function.
-Usage
+Usage
cross(n)
_,_,_ : cross(3) : _,_,_
Where:
@@ -6552,7 +6644,7 @@ Note
(ro.)crossnn
Cross two bus(n)
s.
-Usage
+Usage
_,_,... : crossmm(n) : _,_,...
Where:
@@ -6561,7 +6653,7 @@ Usage
(ro.)crossn1
Cross bus(n) and bus(1).
-Usage
+Usage
_,_,... : crossn1(n) : _,_,...
Where:
@@ -6570,7 +6662,7 @@ Usage
(ro.)interleave
Interleave rowcol cables from column order to row order. input : x(0), x(1), x(2) …, x(rowcol-1) output: x(0+0row), x(0+1row), x(0+2row), …, x(1+0row), x(1+1row), x(1+2row), …
-Usage
+Usage
_,_,_,_,_,_ : interleave(row,column) : _,_,_,_,_,_
Where:
@@ -6580,7 +6672,7 @@ Usage
(ro.)butterfly
Addition (first half) then substraction (second half) of interleaved signals.
-Usage
+Usage
_,_,_,_ : butterfly(n) : _,_,_,_
Where:
@@ -6589,7 +6681,7 @@ Usage
(ro.)hadamard
Hadamard matrix function of size n = 2^k
.
-Usage
+Usage
_,_,_,_ : hadamard(n) : _,_,_,_
Where:
@@ -6600,7 +6692,7 @@ Note:
(ro.)recursivize
Create a recursion from two arbitrary processors p and q.
-Usage
+Usage
_,_ : recursivize(p,q) : _,_
Where:
@@ -6614,7 +6706,7 @@ signals.lib
Functions Reference
(si.)bus
n parallel cables. bus
is a standard Faust function.
-Usage
+Usage
bus(n)
bus(4) : _,_,_,_
Where:
@@ -6624,7 +6716,7 @@ Usage
(si.)block
Block - terminate n signals. block
is a standard Faust function.
-Usage
+Usage
_,_,... : block(n) : _,...
Where:
@@ -6633,7 +6725,7 @@ Usage
(si.)interpolate
Linear interpolation between two signals.
-Usage
+Usage
_,_ : interpolate(i) : _
Where:
@@ -6642,12 +6734,12 @@ Usage
(si.)smoo
Smoothing function based on smooth
ideal to smooth UI signals (sliders, etc.) down. smoo
is a standard Faust function.
-Usage
+Usage
hslider(...) : smoo;
(si.)polySmooth
A smoothing function based on smooth
that doesn’t smooth when a trigger signal is given. This is very useful when making polyphonic synthesizer to make sure that the value of the parameter is the right one when the note is started.
-Usage
+Usage
hslider(...) : polysmooth(g,s,d) : _
Where:
@@ -6658,7 +6750,7 @@ Usage
(si.)smoothAndH
A smoothing function based on smooth
that holds its output signal when a trigger is sent to it. This feature is convenient when implementing polyphonic instruments to prevent some smoothed parameter to change when a note-off event is sent.
-Usage
+Usage
hslider(...) : smoothAndH(g,s) : _
Where:
@@ -6668,12 +6760,12 @@ Usage
(si.)bsmooth
Block smooth linear interpolation during a block of samples.
-Usage
+Usage
hslider(...) : bsmooth : _
(si.)dot
Dot product for two vectors of size n.
-Usage
+Usage
_,_,_,_,_,_ : dot(n) : _
Where:
@@ -6682,7 +6774,7 @@ Usage
(si.)smooth
Exponential smoothing by a unity-dc-gain one-pole lowpass. smooth
is a standard Faust function.
-Usage:
+Usage:
_ : smooth(tau2pole(tau)) : _
Where:
@@ -6698,7 +6790,7 @@ Reference:
(si.)cbus
n parallel cables for complex signals. cbus
is a standard Faust function.
-Usage
+Usage
cbus(n)
cbus(4) : (r0,i0), (r1,i1), (r2,i2), (r3,i3)
Where:
@@ -6709,7 +6801,7 @@ Usage
(si.)cmul
multiply two complex signals pointwise. cmul
is a standard Faust function.
-Usage
+Usage
(r1,i1) : cmul(r2,i2) : (_,_);
Where:
@@ -6720,14 +6812,14 @@ Usage
(si.)lag_ud
Lag filter with separate times for up and down.
-Usage
+Usage
_ : lag_ud(up, dn, signal) : _;
spats.lib
This library contains a collection of tools for sound spatialization. Its official prefix is sp
.
(sp.)panner
A simple linear stereo panner. panner
is a standard Faust function.
-Usage
+Usage
_ : panner(g) : _,_
Where:
@@ -6736,7 +6828,7 @@ Usage
(sp.)spat
GMEM SPAT: n-outputs spatializer. spat
is a standard Faust function.
-Usage
+Usage
_ : spat(n,r,d) : _,_,...
Where:
@@ -6747,7 +6839,7 @@ Usage
(sp.)stereoize
Transform an arbitrary processor p
into a stereo processor with 2 inputs and 2 outputs.
-Usage
+Usage
_,_ : stereoize(p) : _,_
Where:
@@ -6758,7 +6850,7 @@ synths.lib
This library contains a collection of synthesizers. Its official prefix is sy
.
(sy.)popFilterPerc
A simple percussion instrument based on a “popped” resonant bandpass filter. popFilterPerc
is a standard Faust function.
-Usage
+Usage
popFilterDrum(freq,q,gate) : _;
Where:
@@ -6769,7 +6861,7 @@ Usage
(sy.)dubDub
A simple synth based on a sawtooth wave filtered by a resonant lowpass. dubDub
is a standard Faust function.
-Usage
+Usage
dubDub(freq,ctFreq,q,gate) : _;
Where:
@@ -6781,7 +6873,7 @@ Usage
(sy.)sawTrombone
A simple trombone based on a lowpassed sawtooth wave. sawTrombone
is a standard Faust function.
-Usage
+Usage
sawTrombone(att,freq,gain,gate) : _
Where:
@@ -6793,7 +6885,7 @@ Usage
(sy.)combString
Simplest string physical model ever based on a comb filter. combString
is a standard Faust function.
-Usage
+Usage
combString(freq,res,gate) : _;
Where:
@@ -6804,7 +6896,7 @@ Usage
(sy.)additiveDrum
A simple drum using additive synthesis. additiveDrum
is a standard Faust function.
-Usage
+Usage
additiveDrum(freq,freqRatio,gain,harmDec,att,rel,gate) : _
Where:
@@ -6819,7 +6911,7 @@ Usage
(sy.)fm
An FM synthesizer with an arbitrary number of modulators connected as a sequence. fm
is a standard Faust function.
-Usage
+Usage
freqs = (300,400,...);
indices = (20,...);
fm(freqs,indices) : _
@@ -6834,7 +6926,7 @@ vaeffects.lib
Functions Reference
(ve.)moog_vcf
Moog “Voltage Controlled Filter” (VCF) in “analog” form. Moog VCF implemented using the same logical block diagram as the classic analog circuit. As such, it neglects the one-sample delay associated with the feedback path around the four one-poles. This extra delay alters the response, especially at high frequencies (see reference [1] for details). See moog_vcf_2b
below for a more accurate implementation.
-Usage
+Usage
moog_vcf(res,fr)
Where:
@@ -6849,7 +6941,7 @@ References
(ve.)moog_vcf_2b[n]
Moog “Voltage Controlled Filter” (VCF) as two biquads. Implementation of the ideal Moog VCF transfer function factored into second-order sections. As a result, it is more accurate than moog_vcf
above, but its coefficient formulas are more complex when one or both parameters are varied. Here, res is the fourth root of that in moog_vcf
, so, as the sampling rate approaches infinity, moog_vcf(res,fr)
becomes equivalent to moog_vcf_2b[n](res^4,fr)
(when res and fr are constant). moog_vcf_2b
uses two direct-form biquads (tf2
). moog_vcf_2bn
uses two protected normalized-ladder biquads (tf2np
).
-Usage
+Usage
moog_vcf_2b(res,fr)
moog_vcf_2bn(res,fr)
Where:
@@ -6860,7 +6952,7 @@ Usage
(ve.)wah4
Wah effect, 4th order. wah4
is a standard Faust function.
-Usage
+Usage
_ : wah4(fr) : _
Where:
@@ -6871,7 +6963,7 @@ Reference
(ve.)autowah
Auto-wah effect. autowah
is a standard Faust function.
-Usage
+Usage
_ : autowah(level) : _;
Where:
@@ -6880,7 +6972,7 @@ Usage
(ve.)crybaby
Digitized CryBaby wah pedal. crybaby
is a standard Faust function.
-Usage
+Usage
_ : crybaby(wah) : _
Where:
@@ -6891,7 +6983,7 @@ Reference
(ve.)vocoder
A very simple vocoder where the spectrum of the modulation signal is analyzed using a filter bank. vocoder
is a standard Faust function.
-Usage
+Usage
_ : vocoder(nBands,att,rel,BWRatio,source,excitation) : _;
Where:
diff --git a/doc/library.pdf b/doc/library.pdf
index b55edf26..0c8c6acf 100644
Binary files a/doc/library.pdf and b/doc/library.pdf differ
diff --git a/oscillators.lib b/oscillators.lib
index c6abf843..9703b91e 100644
--- a/oscillators.lib
+++ b/oscillators.lib
@@ -337,6 +337,24 @@ lf_squarewave(freq) = 2*lf_squarewavepos(freq) - 1;
//------------------------------------------------------------
lf_trianglepos(freq) = 1-abs(saw1(freq)); // saw1 defined below
+//----------`(os.)lf_triangle`----------
+// Positive unit-amplitude LF triangle wave
+// `lf_triangle` is a standard Faust function.
+//
+// #### Usage
+//
+// ```
+// lf_triangle(freq) : _
+// ```
+//
+// Where:
+//
+// * `freq`: frequency in Hz
+//------------------------------------------------------------
+// Author: Bart Brouns
+// License: STK-4.3
+lf_triangle(freq) = 2*lf_trianglepos(freq) - 1;
+
//================== Low Frequency Sawtooths ====================
// Sawtooth waveform oscillators for virtual analog synthesis et al.
// The 'simple' versions (`lf_rawsaw`, `lf_sawpos` and `saw1`), are mere samplings of
@@ -383,6 +401,44 @@ lf_rawsaw(periodsamps) = (_,periodsamps : fmod) ~ +(1.0);
//---------------------------------------------------------
lf_sawpos_phase(phase,freq) = (+(phase-phase') : ma.frac ) ~ +(freq/ma.SR);
+//-----------------`(os.)lf_sawpos`--------------------
+// Simple sawtooth waveform oscillator between 0 and 1.
+//
+// #### Usage
+//
+// ```
+// lf_sawpos(freq)
+// ```
+//
+// Where:
+//
+// * `freq`: frequency
+//
+//---------------------------------------------------------
+// Author: Bart Brouns
+// License: STK-4.3
+// MarkDown: Romain Michon
+lf_sawpos(freq) = ma.frac ~ +(freq'/ma.SR);
+
+//-----------------`(os.)lf_saw`--------------------
+// Simple sawtooth waveform.
+// `lf_saw` is a standard Faust function.
+//
+// #### Usage
+//
+// ```
+// lf_saw(freq)
+// ```
+//
+// Where:
+//
+// * `freq`: frequency
+//---------------------------------------------------------
+// Author: Bart Brouns
+// License: STK-4.3
+saw1(freq) = 2.0 * lf_sawpos(freq) - 1.0;
+lf_saw(freq) = saw1(freq);
+
//================== Bandlimited Sawtooth ====================
//------------------`(os.)sawN`--------------------------------
// Bandlimited Sawtooth
@@ -924,63 +980,9 @@ elsewhere among the libraries. It is expected that all software will be
released under LGPL, STK-4.3, MIT, BSD, or a similar FOSS license.
************************************************************************/
-//-----------------`(os.)lf_sawpos`--------------------
-// Simple sawtooth waveform oscillator between 0 and 1.
-//
-// #### Usage
-//
-// ```
-// lf_sawpos(freq)
-// ```
-//
-// Where:
-//
-// * `freq`: frequency
-//
-//---------------------------------------------------------
-// Author: Bart Brouns
-// License: STK-4.3
-// MarkDown: Romain Michon
-lf_sawpos(freq) = ma.frac ~ +(freq'/ma.SR);
-
-//-----------------`(os.)lf_saw`--------------------
-// Simple sawtooth waveform.
-// `lf_saw` is a standard Faust function.
-//
-// #### Usage
-//
-// ```
-// lf_saw(freq)
-// ```
-//
-// Where:
-//
-// * `freq`: frequency
-//---------------------------------------------------------
-// Author: Bart Brouns
-// License: STK-4.3
-// MarkDown: Romain Michon
-saw1(freq) = 2.0 * lf_sawpos(freq) - 1.0;
-lf_saw(freq) = saw1(freq);
-
-//----------`(os.)lf_triangle`----------
-// Positive unit-amplitude LF triangle wave
-// `lf_triangle` is a standard Faust function.
-//
-// #### Usage
-//
-// ```
-// lf_triangle(freq) : _
-// ```
-//
-// Where:
-//
-// * `freq`: frequency in Hz
-//------------------------------------------------------------
-// Author: Bart Brouns
-// License: STK-4.3
-// MarkDown: Romain Michon
-lf_triangle(freq) = 2*lf_trianglepos(freq) - 1;
+//===================== Casio CZ Oscillators ==========================
+// Oscillators that mimics some of the Casio CZ oscillators.
+//=====================================================================
//----------`(os.)CZsaw`----------
// Oscillator that mimics the Casio CZ saw oscillator