New In Syntropy
These functions extend Syntropy beyond the older SoundModeler set and are especially useful for modern pads, sync leads, evolving textures, and voice-like timbres.
dualsaw(x, detune)Two blended saw oscillators with controlled detune. Good for wide analog leads and pads.
0.3*dualsaw(X,0.28)
supersaw(x, detune)Multi-saw stack for broad trance-style and lush poly textures.
0.22*supersaw(X,0.35)
skewsaw(x, skew)Saw waveform with asymmetry control. Useful for sharper transients and moving harmonic balance.
0.25*skewsaw(X,param(2))
sawpulse(x, mix)Morphs between saw and pulse-like character. Excellent for animated basses and synth-pop leads.
0.26*sawpulse(X,0.5)
pdsin(x, shape)Phase-distorted sine oscillator. Produces a bright but smooth harmonic spread.
0.24*pdsin(X,0.42)
syncsaw(x, sync)Hard-sync style saw. Great for aggressive sweeps and tearing lead sounds.
0.25*syncsaw(X,0.68)
synctri(x, sync)Hard-sync style triangle. Keeps more body than a sync saw and works well in expressive leads.
0.25*synctri(X,0.54)
fm(x, mod, index)Compact FM helper for classic digital tones, metallic keys, and glassy pads.
0.22*fm(X,2.0,4.5)
fm2(x, mod, index)Smoothed FM oscillator for live modulation of ratio and index. Use fm21() and fm22() when one formula needs multiple independent FM2 units.
0.24*fm2(X,1.0+3.0*param(0),0.4+6.0*param(1))
fold(x, amount)Math/Other wavefolder-style signal processing. Use on oscillators or mixed signals for harmonically rich overtones.
drive(x, amount)Math/Other signal processing for analog warmth or stronger harmonic emphasis before filtering.
xfade(a, b, mix)Math/Other signal mixer that crossfades between two sources. Ideal for macro movement using one knob.
phasor(x)Oscillator/phase source that returns a simple ramp shape based on phase. Useful as a modulation source and for custom waveshaping.
exposc(x, k)Exponential falling oscillator curve over one waveform period. Useful for pluck-like digital waveforms, contour-rich bass layers, and custom one-cycle shapes.
0.24*exposc(X,5.0)
gaborosc(x, width, cycles)Experimental Gaussian-windowed oscillator for wavelet-like tones, glassy impulses, bells, plucks, and granular-flavored oscillator layers.
0.35*gaborosc(X,0.38,0.45)
fft(x, brightness, resonance, warp)Cached spectral wavetable oscillator. It builds a normalized harmonic spectrum with brightness, spectral-resonance, and deterministic warp controls for modern digital pads, leads, and glass-like tones.
0.35*fft(X,0.35,0.18,0.10)
modal(excitation, X, spread, decay)Modal resonator-bank filter for physical-model style bells, plates, membranes, glass, and mallet sounds. spread controls harmonic, stretched, or compressed modal spacing.
0.65*release(90000)*modal(white()*fromtoin(1,0,120),X,0.78,0.62)
envosc(index, env)Plays an embedded preset envelope as a one-cycle oscillator waveform. For a 1024-sample oscillator envelope, use envosc(X,0) for normal playable pitch.
0.7*attack(200)*release(8000)*envosc(X,0)
envosc_file(index, "file.env")File-linked version of envosc(). It plays an external envelope file as a one-cycle oscillator waveform and can later be saved as an embedded preset envelope.
0.7*attack(200)*release(12000)*envosc_file(X,"osc12.env")
granular(index, grain[, "folder"])External grain-bank oscillator. The two-argument form uses the legacy root Envelopes bank; the three-argument form loads grains from a named subfolder such as Envelopes\violine. The grain selector is normalized from 0 to 1.
granular(X,0.35) 0.6*granular(X,0.10+0.70*param(2),"violine")
sample("file.wav", stretch[, loopStart, loopEnd])Plays a WAV file from the Syntropy Samples folder. Use tone() as the stretch argument for keyboard-tracked playback; optional loop points are source-file sample positions.
0.8*attack(200)*release(12000)*sample("choir_a.wav",tone())wg/wg1/wg2(index, excitation, feedback, damping), wgc/wgc1/wgc2(...), wgx/wgx1/wgx2(...)Physical modeling waveguide oscillators/resonators. wgc() is a higher-quality interpolation version of wg(), while wgx() extends the waveguide behavior for brighter string, neutral pluck, and darker bore-like responses.
0.34*wg(X,white()*fromtoin(1,0,80),0.997,0.25) +0.33*wg1(1.0007*X,white()*fromtoin(1,0,80),0.9968,0.27) +0.33*wg2(0.9994*X,white()*fromtoin(1,0,80),0.9965,0.29)
robovox(index, "text", timbre, speed)Pitched synthetic singer macro. Hyphen-separated syllables are prepared before compilation, while index, timbre, and speed remain realtime-controllable.
robovox(X, "la-li-lo-la", param(0), 0.5+2.5*param(1))
robovoxloop(index, "text", timbre, speed)Looping version of robovox(). The prepared syllable text wraps for sustained vocal pads, arps, and rhythmic phrases.
robovoxloop(X, "la-se-ta-ko", param(0), 0.5+2.5*param(1))
vox(source, "text", timbre, speed)Vocal/formant filter that processes any formula source as its carrier while keeping robovox syllables, vowels, and consonants.
vox(saw(X), "sa-la-ta", param(0), 0.5+2.5*param(1))
voxloop(source, "text", timbre, speed)Looping vocal/formant-filter version of vox() for sustained synthetic vocal textures.
voxloop(pdsin(X,0.35), "ra-sa-li-ko", param(0), 0.5+2.5*param(1))
voxvowel(source, vowel, timbre)Realtime vowel filter with five discrete regions ordered a, i, o, u, e. It smoothly changes vowel and vocal-tract timbre while keeping independent state for every formula occurrence.
voxvowel(saw(X),param(0),param(1))
pulse(x, start, end)Rectangular pulse segment inside one oscillator period. It returns 1 only between start and end, otherwise 0, so several pulses can build custom stepped waveforms.
0.18*pulse(X,0.10,0.42)+0.12*pulse(2*X,0.22,0.60)
pulsewidth(x, start, width)Pulse oscillator where the third argument is width instead of end position. If start+width reaches the end of the period, the function returns 0 for safety.
0.25*pulsewidth(X,0.18,0.20+0.45*param(2))
pwmslopes(x, in_slope, out_slope, width)PWM oscillator with independently shaped rising and falling slopes. It keeps the directness of PWM but can be softened toward smoother, more triangular motion.
0.32*pwmslopes(X,0.30,0.45,0.42)
pulsesaw(x, start, end)Gated falling-saw segment inside one waveform period. It is useful for hybrid pulse/saw timbres, synthetic plucks, and animated harmonic shapes.
0.22*pulsesaw(X,0.08,0.62)+0.10*pulsesaw(3*X,0.18,0.48)
pulsesawwidth(x, start, width)Width-controlled version of pulsesaw(). Modulate width carefully to make custom oscillator motion without switching to a filter sweep.
0.24*pulsesawwidth(X,0.12,0.18+0.50*param(3))
pulseslopes(x, in_slope, out_slope, width)Unipolar sloped pulse envelope. Use it for rhythmic gates, tremolo-like motion, or oscillator-period amplitude shapes with smoother edges than a hard pulse.
saw(X)*pulseslopes(posarp()/22050,0.25,0.35,0.60)
crush(x, amount)Reduces resolution for gritty digital textures and retro lo-fi sounds.
vbp(input, freq, q)Narrow band-pass family for wind, whistles, resonant body tones, and focused movement.
formant(input, vowel, amount)Vowel-style resonant filter for choir, vocal synth, and speaking pad effects.
accum(step, reset)Accumulates signal or control movement over time and resets when the second argument changes state.
velolog()Logarithmic MIDI velocity response for more natural loudness, cutoff, brightness, or modulation depth control.
sin(X)*(0.15+0.85*velolog())
fromtoin(from, to, samples)Per-note linear control ramp. Useful for opening filters, fading modulation depth, or morphing a sound over a fixed 44.1k-reference sample length.
moog(saw(X), 0.03+0.42*fromtoin(0.0,1.0,22050), 0.35)
sfromtoin(stay, from, to, samples)Per-note hold-and-ramp envelope. It stays at the initial value first, then ramps to the final value in the same 44.1k-reference timing domain as fromtoin().
moog(saw(X), 0.03+0.40*sfromtoin(6000,0.0,1.0,24000), 0.32)
bpm()Returns the current host or internal BPM normalized to 120 BPM, so envelope loops and modulation shapes can follow the song tempo.
envloop(1/bpm(),0)*saw(X)
nperiod()Returns the current whole oscillator period number for the active note. It follows note pitch, pitch wheel, and glide, so it is useful for period-synchronous switching.
isbigger(mod(nperiod(),2),1,saw(X),sin(X))
isbigger(a, b, true, false)Simple conditional utility. If the first value is greater than or equal to the second value, it returns the true result; otherwise it returns the false result.
isbigger(velo(),0.5,saw(X),sin(X))
pow2int(value, max_power)Quantizes a normalized value to exact powers of two. Use it for octave-ratio switching, rhythmic divisions, or stepped harmonic changes.
saw(X*pow2int(param(0),5))
float2tune(value, retrigger_samples)Quantizes a changing control to equal-tempered semitone ratios and samples a new pitch only at the requested interval, holding the previous note ratio between updates.
0.55*release(30000)*saw(X*float2tune(2*rnd()-1,11025))
inputL() / inputR()Host audio input sources for VST3 and CLAP. They return the current left and right input samples so formulas can process external audio.
#Left drive(inputL(),0.35) #Right drive(inputR(),0.35)
LFO(amnt, fq, phase)Formula macro for quick positive sine modulation. fq is normalized and maps to 0..20 Hz before compilation.
0.04+0.45*LFO(param(2),param(3),0)
pressure(), glide(), timbre(), and lift() let one note react differently from another when your host sends per-note expression events.
lp(saw(X), 500+4200*timbre(), 0.2)*(0.2+0.8*pressure())
svf(input, cutoff, resonance)State-variable low-pass for cleaner modern sweeps and articulate analog-style shaping.
svf(dualsaw(X,0.18), 0.03+0.28*param(2), 0.18+0.45*param(3))
diode(input, cutoff, resonance)Diode-ladder low-pass with a rubbery, acid-friendly response for basses and mono leads.
diode(sawpulse(X,0.42), 0.02+0.22*param(2), 0.25+0.45*param(3))
sem(input, cutoff, resonance)Darker vintage low-pass tone with more grit than a clean utility filter.
sem(supersaw(X,0.12), 0.025+0.20*param(2), 0.18+0.52*param(3))
notch(input, cutoff, width)Animated notch filtering for moving pads, talking leads, and spectral sweeps that keep top-end detail.
notch(saw(X)+0.6*tri(0.5*X), 0.06+0.18*param(2), 0.18+0.42*param(3))
allpass(input, cutoff, feedback)Phase-oriented filter for diffuser-like shimmer and subtle phaser-style motion inside formulas.
allpass(sin(X)+0.4*sin(2*X), 0.03+0.14*param(2), 0.18+0.32*param(3))
peak(input, freq, amount)Bell filter that helps emphasize a sweet spot or vocal band in the spectrum.
peak(pdsin(X,0.35), 0.08+0.22*param(2), 0.35+0.45*param(3))
shelf(input, freq, amount)Broad tonal shaper for brighter or darker synth tone without a narrow resonant signature.
shelf(supersaw(X,0.20), 0.07+0.10*param(2), 0.35+0.35*param(3))
comb(input, delay, feedback)Comb-filter resonator for plucks, body resonances, metallic overtones, and synthetic physical-model flavor.
comb(noise()*attack(2000), 0.02+0.05*param(2), 0.18+0.45*param(3))