aboutsummaryrefslogtreecommitdiff
path: root/site/app/ocsillator/ocsillator.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/ocsillator/ocsillator.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/ocsillator/ocsillator.csd')
-rw-r--r--site/app/ocsillator/ocsillator.csd183
1 files changed, 183 insertions, 0 deletions
diff --git a/site/app/ocsillator/ocsillator.csd b/site/app/ocsillator/ocsillator.csd
new file mode 100644
index 0000000..4ad464b
--- /dev/null
+++ b/site/app/ocsillator/ocsillator.csd
@@ -0,0 +1,183 @@
+<CsoundSynthesizer>
+<CsOptions>
+-odac
+</CsOptions>
+<CsInstruments>
+sr = 44100
+ksmps = 16
+nchnls = 2
+nchnls_i = 1
+0dbfs = 2
+seed 0
+
+#include "interop.udo"
+#include "bussing.udo"
+#include "synth_instruments.udo"
+#include "synth_drums.udo"
+#include "sounddb.udo"
+#include "wavetables.udo"
+
+giocsicol_harmonics sounddb_getcollectionid "Guitar.Harmonics", 1
+
+isize = sr * 60
+giocsi_fnrecord[] fillarray ftgen(0, 0, isize, 2, 0), ftgen(0, 0, isize, 2, 0)
+giosci_loopend = isize
+giocsi_instrument = 0
+
+instr ocsi_recordstart
+ p3 = 99999
+ aL, aR bus_tap "ocsi"
+ apos lphasor 1, 0, giosci_loopend, 1
+ tablew aL, apos, giocsi_fnrecord[0]
+ tablew aR, apos, giocsi_fnrecord[1]
+endin
+
+instr ocsi_recordstop
+ turnoff2 "ocsi_recordstart", 0, 1
+ turnoff
+endin
+
+instr ocsi_recordclear
+
+endin
+
+
+opcode ocsi_defaultinput, kk, 0
+ kamp chnget "valY"
+ knote chnget "note"
+ xout kamp, knote
+endop
+
+instr ocsinst_blockbass
+ kamp, knote ocsi_defaultinput
+ aL, aR synth_fmbass1, cpsmidinn(knote) - 12
+ kenv linsegr 1, p3, 1, 0.2, 0
+ aL *= kenv * kamp
+ aR *= kenv * kamp
+ bus_mix("ocsi", aL, aR)
+endin
+
+
+instr ocsinst_303
+ ky, knote ocsi_defaultinput
+ ifilter = (chnget:i("valY") * 50) + 50
+ kdistortion = (1 - ky) + 1
+ aout synth_303 cpsmidinn(knote), ifilter, kdistortion
+ kenv linsegr 1, p3, 1, 0.2, 0
+ aout *= kenv
+ bus_mix("ocsi", aout, aout)
+endin
+
+instr ocsinst_strings
+ ky, knote ocsi_defaultinput
+ kfreq = cpsmidinn(knote)
+ aL synth_strings1 kfreq, 0.01 * random(0.5, 1.5) * ky * 4, 6 * random(0.5, 1.5) * ky, 0.1 * random(0.5, 1.5), 0.1 * random(0.5, 1.5)
+ aR synth_strings1 kfreq, 0.01 * random(0.5, 1.5) * ky * 4, 6 * random(0.5, 1.5) * ky, 0.1 * random(0.5, 1.5), 0.1 * random(0.5, 1.5)
+ kenv linsegr 1, p3, 1, 0.2, 0
+ aL *= kenv
+ aR *= kenv
+ bus_mix("ocsi", aL, aR)
+endin
+
+
+instr ocsinst_guitarharmonics
+ ky, knote ocsi_defaultinput
+ istartnote = chnget:i("note")
+ knote init istartnote
+ ifileid, ipitchratio sounddb_mel_nearestnote giocsicol_harmonics, chnget:i("note")
+ ifn, ichannels, iduration, irmsnorm sounddb_get ifileid
+ ipitchadjust = ipitchratio* (ftsr(ifn) / sr)
+ kpitch = (cpsmidinn(knote) / cpsmidinn(istartnote)) * ipitchadjust
+ krate = (ky * 10) + 1
+ apos = a(ky) * iduration;abs:k(oscil:k(iduration * 0.5, krate)) + (iduration * 0.1)
+ aL, aR sndwarpst 1, apos, a(port(kpitch, 0.01, ipitchadjust)), ifn, 0, 4410, 441, 4, gifnHanning, 1
+ kenv linsegr 0, 0.1, 1, p3 - 0.1, 1, 0.2, 0
+ aL *= kenv
+ aR *= kenv
+ bus_mix("ocsi", aL, aR)
+endin
+
+
+instr ocsinst_guitarharmonicsfx
+ ky, knote ocsi_defaultinput
+ istartnote = chnget:i("note")
+ knote init istartnote
+ ifileid, ipitchratio sounddb_mel_nearestnote giocsicol_harmonics, chnget:i("note")
+ ifn, ichannels, iduration, irmsnorm sounddb_get ifileid
+ ipitchadjust = ipitchratio * (ftsr(ifn) / sr)
+ kpitch = (cpsmidinn(knote) / cpsmidinn(istartnote)) * ipitchadjust
+ krate = (ky * 10) + 1
+ apos = ((a(ky) * abs:k(oscil:k(random(0.2, 1), random(2, 10)))) + 0.1) * iduration
+ aL, aR sndwarpst 1, apos, a(port(kpitch * 0.5, 0.01, ipitchadjust)), ifn, 0, 4410, 441, 1, gifnHanning, 1
+
+ ahL1, ahL2 hilbert2 aL, 1024, 256
+ amL, afmL fmanal ahL1, ahL2
+ aL oscil amL, afmL * 2
+
+ ahR1, ahR2 hilbert2 aR, 1024, 256
+ amR, afmR fmanal ahR1, ahL2
+ aR oscil amR, afmR * 2
+
+ aL butterhp aL, 500
+ aR butterhp aR, 500
+ ;aL reverb aL, 2 * (ky + 2)
+ ;aR reverb aR, 2 * (ky + 2)
+ aL tanh aL
+ aR tanh aR
+
+ kenv linsegr 1, p3 - 0.1, 1, 0.2, 0
+ aL *= kenv
+ aR *= kenv
+ bus_mix("ocsi", aL, aR)
+endin
+
+
+instr osci_recordplaystart
+ p3 = -1
+ apos lphasor 1, 0, giosci_loopend, 1
+ aL table3 apos, giocsi_fnrecord[0]
+ aR table3 apos, giocsi_fnrecord[1]
+ bus_mix("bufferplay", aL, aR)
+endin
+
+instr osci_recordplaystop
+ turnoff2 "osci_recordplaystart", 0, 1
+ turnoff
+endin
+
+instr ocsi_setinstrument
+ Sinstr = strget(p4)
+ turnoff2 giocsi_instrument, 0, 1
+ giocsi_instrument = nstrnum(Sinstr)
+ turnoff
+endin
+
+instr ocsi_play
+ schedule giocsi_instrument, 0, 99999
+ turnoff
+endin
+
+instr ocsi_stop
+ turnoff2 giocsi_instrument, 0, 1
+ turnoff
+endin
+
+instr ocsi_mixer
+ aLm, aRm bus_read "ocsi"
+ aLb, aRb bus_read "bufferplay"
+
+ aL = aLm + aLb
+ aR = aRm + aRb
+ outs aL, aR
+endin
+
+instr osci_boot
+ schedule "ocsi_mixer", 0, -1
+endin
+
+</CsInstruments>
+<CsScore>
+f0 z
+i"osci_boot" 0 1
+</CsScore>
+</CsoundSynthesizer> \ No newline at end of file