aboutsummaryrefslogtreecommitdiff
path: root/site/app/feedback/feedback.csd
diff options
context:
space:
mode:
authorRichard <q@1bpm.net>2025-04-13 18:48:02 +0100
committerRichard <q@1bpm.net>2025-04-13 18:48:02 +0100
commit9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22 (patch)
tree291bd79ce340e67affa755a8a6b4f6a83cce93ea /site/app/feedback/feedback.csd
downloadapps.csound.1bpm.net-9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22.tar.gz
apps.csound.1bpm.net-9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22.tar.bz2
apps.csound.1bpm.net-9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22.zip
initial
Diffstat (limited to 'site/app/feedback/feedback.csd')
-rw-r--r--site/app/feedback/feedback.csd195
1 files changed, 195 insertions, 0 deletions
diff --git a/site/app/feedback/feedback.csd b/site/app/feedback/feedback.csd
new file mode 100644
index 0000000..4a8a7f9
--- /dev/null
+++ b/site/app/feedback/feedback.csd
@@ -0,0 +1,195 @@
+<CsoundSynthesizer>
+<CsOptions>
+-odac
+</CsOptions>
+<CsInstruments>
+sr = 44100
+ksmps = 16
+nchnls = 2
+0dbfs = 2
+seed 0
+
+
+#include "wavetables.udo"
+#include "frequency_tools.udo"
+
+gifbm_maxgain = 2
+
+opcode fbm_param, k, Sijjp
+ Sname, ichannel, imin, imax, iapplyportamento xin
+ Schannel = sprintf("%s_%d", Sname, ichannel)
+ krawval chnget Schannel
+ if (iapplyportamento == 1) then
+ kval port krawval, 0.005
+ else
+ kval = krawval
+ endif
+ SmodOnChannel = sprintf("%smodulating", Schannel)
+ kmodulating chnget SmodOnChannel
+ if (kmodulating == 1) then
+ kmodwave = chnget:k(sprintf("%smodwave", Schannel))
+ kmodfreq = chnget:k(sprintf("%smodfreq", Schannel))
+ kmodamp = chnget:k(sprintf("%smodamp", Schannel))
+ kmod = abs:k(oscilikt:k(kmodamp, kmodfreq, giwavetables[kmodwave]))
+ kout = kval + (kmod * (imax - imin))
+ else
+ kout = kval
+ endif
+/*
+ if (imin != -1) then
+ chnset imin, Schannel ; safe set channel to minimum
+ kout = max:k(kout, imin)
+ endif
+
+ if (imax != -1) then
+ kout = min:k(kout, imax)
+ endif
+*/
+ xout kout
+endop
+
+
+opcode fbm_fxinsert, a, aii
+ asig, ichanindex, insertindex xin
+ SchanAppend = sprintf("_%d_%d", ichanindex, insertindex)
+ keffect = chnget:k(strcat("insert", SchanAppend))
+ if (keffect == 1) then
+ asig freqshift1 asig, chnget:k(strcat("fs_freq", SchanAppend))
+ elseif (keffect == 2) then
+ asig ringmod1 asig, chnget:k(strcat("rm_freq", SchanAppend))
+ elseif (keffect == 3) then
+ asig nreverb asig, chnget:k(strcat("rv_time", SchanAppend)), 0.5
+ elseif (keffect == 4) then
+
+ elseif (keffect == 5) then
+
+ endif
+ xout asig
+endop
+
+
+opcode fbm_channel, aaaaa, ai
+ asig, ichannel xin
+ ieqgainadd = 4
+ keqh_gain = fbm_param("eqhighgain", ichannel, 0, gifbm_maxgain)
+ keqm_gain = fbm_param("eqmidgain", ichannel, 0, gifbm_maxgain)
+ keql_gain = fbm_param("eqlowgain", ichannel, 0, gifbm_maxgain)
+
+ keqh_freq = fbm_param("eqhighfreq", ichannel, 20, 18000)
+ keqm_freq = fbm_param("eqmidfreq", ichannel, 20, 18000)
+ keql_freq = fbm_param("eqlowfreq", ichannel, 20, 18000)
+
+ keqh_q = fbm_param("eqhighq", ichannel, 0.71, 0.9)
+ keqm_q = fbm_param("eqmidq", ichannel, 0.71, 0.9)
+ keql_q = fbm_param("eqlowq", ichannel, 0.71, 0.9)
+
+ ksend1 = fbm_param("send1", ichannel, 0, gifbm_maxgain, 0)
+ ksend2 = fbm_param("send2", ichannel, 0, gifbm_maxgain, 0)
+ ksend3 = fbm_param("send3", ichannel, 0, gifbm_maxgain, 0)
+ ksend4 = fbm_param("send4", ichannel, 0, gifbm_maxgain, 0)
+
+ kprefade1 = fbm_param("prefade1", ichannel, 0, 1, 0)
+ kprefade2 = fbm_param("prefade2", ichannel, 0, 1, 0)
+ kprefade3 = fbm_param("prefade3", ichannel, 0, 1, 0)
+ kprefade4 = fbm_param("prefade4", ichannel, 0, 1, 0)
+
+ klowcut = fbm_param("lowcut", ichannel, 0, 1, 0)
+ kmute = fbm_param("mute", ichannel, 0, 1, 0)
+ kvolume = fbm_param("volume", ichannel, 0, gifbm_maxgain)
+
+ asig dcblock asig
+ asig += noise(0.01, 0)
+ /*
+ asig pareq asig, keql_freq, keql_gain * ieqgainadd, keql_q, 1, 1
+ asig pareq asig, keqm_freq, keqm_gain * ieqgainadd, keqm_q, 0, 1
+ asig pareq asig, keqh_freq, keqh_gain * ieqgainadd, keqh_q, 2, 1
+ */
+ asig pareq asig, keql_freq, keql_gain * ieqgainadd, 0.7, 1
+ asig pareq asig, keqm_freq, keqm_gain * ieqgainadd, 0.7, 0
+ asig pareq asig, keqh_freq, keqh_gain * ieqgainadd, 0.7, 2
+ asig pareq asig, keqh_freq, keqh_gain * ieqgainadd, 0.7, 2
+
+ if (klowcut == 1) then
+ asig butterhp asig, 75
+ endif
+ asig butterlp asig, 17000
+ asig butterhp asig, 0.1
+
+ ;asig dam asig, 0.99, 0.9, 0.9, 0.01, 0.01
+
+ kvolume *= (1 - kmute)
+ asend1 = tanh(asig * ((kprefade1 == 1) ? ksend1 : ksend1 * kvolume))
+ asend2 = tanh(asig * ((kprefade2 == 1) ? ksend2 : ksend2 * kvolume))
+ asend3 = tanh(asig * ((kprefade3 == 1) ? ksend3 : ksend3 * kvolume))
+ asend4 = tanh(asig * ((kprefade4 == 1) ? ksend4 : ksend4 * kvolume))
+
+
+ asig fbm_fxinsert asig, ichannel, 0
+ asig fbm_fxinsert asig, ichannel, 1
+
+ asig tanh asig
+ asig *= kvolume
+ xout asig, asend1, asend2, asend3, asend4
+endop
+
+
+
+
+instr mixer
+ a1 init 0
+ a2 init 0
+ a3 init 0
+ a4 init 0
+
+ aout1, a1s1, a1s2, a1s3, a1s4 fbm_channel a1, 0
+ aout2, a2s1, a2s2, a2s3, a2s4 fbm_channel a2, 1
+ aout3, a3s1, a3s2, a3s3, a3s4 fbm_channel a3, 2
+ aout4, a4s1, a4s2, a4s3, a4s4 fbm_channel a4, 3
+ a1 = 0
+ a2 = 0
+ a3 = 0
+ a4 = 0
+
+ icrosstalk = 0.0001
+
+ a1 = a1s1 + a2s1 + a3s1 + a4s1
+ a2 = a1s2 + a2s2 + a3s2 + a4s2
+ a3 = a1s3 + a2s3 + a3s3 + a4s3
+ a4 = a1s4 + a2s4 + a3s4 + a4s4
+
+ a1 = a1 + (a2 * icrosstalk)
+ a2 = a2 + (a1 * icrosstalk) + (a3 * icrosstalk)
+ a3 = a3 + (a3 * icrosstalk) + (a4 * icrosstalk)
+ a4 = a4 + (a3 * icrosstalk)
+ aout = aout1 + aout2 + aout3 + aout4
+ aout tanh aout
+ aout pareq aout, 18000, 0.4, 0.7
+ aout dcblock aout * 0.25
+ aout butterlp aout, 17000
+ aout limit aout, -1, 1
+ outs aout, aout
+
+#ifndef WEB
+ chnset 0.01, "eqhighgain_0"
+ chnset 10000, "eqhighfreq_0"
+ chnset 0.71, "eqhighq_0"
+
+ chnset 3.7, "eqmidgain_0"
+ chnset 1100, "eqmidfreq_0"
+ chnset 0.71, "eqmidq_0"
+
+ chnset 6.4, "eqlowgain_0"
+ chnset 550, "eqlowfreq_0"
+ chnset 0.71, "eqlowq_0"
+
+ chnset 1, "prefade1_0"
+ chnset 1.1, "send1_0"
+ chnset 1.1, "volume_0"
+#end
+endin
+
+</CsInstruments>
+<CsScore>
+i"mixer" 0 36000
+</CsScore>
+</CsoundSynthesizer> \ No newline at end of file