From 9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22 Mon Sep 17 00:00:00 2001 From: Richard Date: Sun, 13 Apr 2025 18:48:02 +0100 Subject: initial --- site/udo/synth_instruments.udo | 78 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100755 site/udo/synth_instruments.udo (limited to 'site/udo/synth_instruments.udo') diff --git a/site/udo/synth_instruments.udo b/site/udo/synth_instruments.udo new file mode 100755 index 0000000..a5ec34c --- /dev/null +++ b/site/udo/synth_instruments.udo @@ -0,0 +1,78 @@ +#ifndef UDO_SYNTHINSTRUMENTS +#define UDO_SYNTHINSTRUMENTS ## +/* + Standard regular wave function tables + + This file is part of the SONICS UDO collection by Richard Knight 2023 + License: GPL-2.0-or-later + http://1bpm.net +*/ + +#include "wavetables.udo" + +opcode synth_fmbass1, aa, k + kfreq xin + k1 linseg 2.1, p3*0.2, 2, p3*0.8, 2 + k2 line 10, p3, 0 + iamp random 500, 800 + kamp linseg iamp*0.001, p3*0.1, 0.5, p3*0.9, 0 + aL foscil 0.8, kfreq, 1, k1, k2, gifnSine + aR foscil 0.8, kfreq, 1.9, k1, k2, gifnSine + aL1 pareq aL, 440, 0.4, 0.7 + aR1 pareq aR, 440, 0.4, 0.7 + xout aL1, aR1 +endop + + +opcode synth_303, a, kjJ + kfreq, ifilter, kdistortion xin + ifilter = (ifilter == -1) ? 90 : ifilter + kdistortion = (kdistortion == -1) ? 1 : kdistortion + ifrq1 = 440 * exp(log(2) * (ifilter - 69) / 12) ; filter start freq. + kffrq port 0, 60/150, ifrq1 + a1 phasor kfreq + a1 = 1 - 2 * a1 + a1x butterbp a1, kffrq, kfreq + a1x = a1x * (2 + kffrq / kfreq) + a1 = a1x + a1 * 0.25 ; 0.5 + a1 butterlp a1, kffrq + a1 = taninv(a1 * kdistortion) + keqf limit kffrq * 4, 10, sr * 0.48 ; EQ frequency + a1 pareq a1 * 0.4, keqf, 4.0, 1.0, 2 + xout a1 +endop + +opcode synth_strings1, a, kJJjj + kfreq, kvibwidth, kvibrate, inoisdur, ivibdel xin + kvibwidth = (kvibwidth == -1) ? 0.01 : kvibwidth + kvibrate = (kvibrate == -1) ? 5.5 : kvibrate + inoisdur = (inoisdur == -1) ? 0.1 : inoisdur + ivibdel = (ivibdel == -1) ? 0.25 : ivibdel + + kfm2 = kfreq * 3 + kfm3 = kfreq * 4 + kindex1 = 7.5 / log:k(kfreq) + kindex2 = 15 / sqrt:k(kfreq) + kindex3 = 1.25 / sqrt:k(kfreq) + + irise = 0.1 + idec = 0.4 + + kvib init 0 + kvbctl linen 1, 0.5, p3 - ivibdel, .1 + krnd randi 0.0075, 2 + kvib oscili kvbctl * kvibwidth + krnd, kvibrate * kvbctl + + ktrans linseg 1, inoisdur, 0, 1, 0 + anoise randi ktrans / 4, 0.2 * kfreq + attack oscili anoise, 2000 + + amod1 oscili kfreq * (kindex1 + ktrans), kfreq + amod2 oscili kfm2 * (kindex2 + ktrans), kfm2 + amod3 oscili kfm3 * (kindex3 + ktrans), kfm3 + asig oscili 1, (kfreq + amod1 + amod2 + amod3) * (1 + kvib) + asig linen (asig + attack), irise, p3, idec + xout asig +endop + +#end -- cgit v1.2.3