René Nyffenegger's collection of things on the web | |
René Nyffenegger on Oracle - Most wanted - Feedback
|
Techno Hymn (CSound instrument) | ||
This instrument is adapted from TeknoBubble (by Hans Mikelson) (instrument 44, Synth with Noise Filter Resonance).
techno_hymn.orc
sr = 44100 kr = 22050 ksmps = 2 nchnls = 2 ;--------------------------------------------------------------------------- ; Synth with Noise Filter Resonance ;--------------------------------------------------------------------------- instr 1 ilen = p3 iamp = p4 ifqc = cpspch(p5) ifqc_start = p6 ifqc_end = p7 kamp expseg 0.00001, 0.5, iamp, 0.25, iamp*0.9, 0.25, iamp*0.8, 1.0, 0.00001 kfco linseg ifqc_start, ilen, ifqc_end irez = 16 ifqcadj = .149659863*sr apulse1 buzz 1,ifqc, sr/2/ifqc, 1 ; Avoid aliasing asaw1 integ apulse1 apulse2 buzz 1,ifqc*.505, sr/2/ifqc*.505, 1 ; Avoid aliasing asaw2 integ apulse2 axn = asaw1+asaw2-1 ;ayn2 rezzy axn, kfco, 40 ;ayn2l rezzy axn, kfco, 3 ; Resonant Lowpass Filter (4 Pole) kc = ifqcadj/kfco krez2 = irez/(1+exp(kfco/11000)) ka1 = kc/krez2-1;(1+krez2*iband) kasq = kc*kc kb = 1+ka1+kasq ayn nlfilt axn/kb, (ka1+2*kasq)/kb, -kasq/kb, 0, 0, 1 ayn2 nlfilt ayn/kb, (ka1+2*kasq)/kb, -kasq/kb, 0, 0, 1 ; Resonant Lowpass Filter (4 Pole) kcl = ifqcadj/kfco krez2l = 2.0/(1+exp(kfco/11000)) ka1l = kcl/krez2l-1;(1+krez2l*iband) kasql = kcl*kcl kbl = 1+ka1l+kasql aynl nlfilt axn/kbl, (ka1l+2*kasql)/kbl, -kasql/kbl, 0, 0, 1 ayn2l nlfilt aynl/kbl, (ka1l+2*kasql)/kbl, -kasql/kbl, 0, 0, 1 ares1 = ayn2-ayn2l krms rms ares1, 100 arand1 rand krms ares2 butterbp arand1, kfco, kfco/8 ares3 butterbp arand1, kfco*1.5, kfco/32*1.5 aout = ayn2l+(ares2+ares3) asig_delayed_1 init 0 asig_delayed_2 init 0 asig_delayed_3 init 0 asig_delayed_4 init 0 asig_delayed_5 init 0 asig_delayed_6 init 0 asig_delayed_7 init 0 asig_delayed_8 init 0 asig_delayed_1 = asig_delayed_1 *0.45 + aout * kamp asig_delayed_2 = asig_delayed_2 *0.50 + aout * kamp asig_delayed_3 = asig_delayed_3 *0.55 + aout * kamp asig_delayed_4 = asig_delayed_4 *0.60 + aout * kamp asig_delayed_5 = asig_delayed_5 *0.66 + aout * kamp asig_delayed_6 = asig_delayed_6 *0.70 + aout * kamp asig_delayed_7 = asig_delayed_7 *0.75 + aout * kamp asig_delayed_8 = asig_delayed_8 *0.80 + aout * kamp asig_delayed_1 delay asig_delayed_1, 0.003 asig_delayed_2 delay asig_delayed_2, 0.005 asig_delayed_3 delay asig_delayed_3, 0.107 asig_delayed_4 delay asig_delayed_4, 0.211 asig_delayed_5 delay asig_delayed_5, 0.35 asig_delayed_6 delay asig_delayed_6, 0.43 asig_delayed_7 delay asig_delayed_7, 0.51 asig_delayed_8 delay asig_delayed_8, 0.63 aout_l = aout * kamp + asig_delayed_1 + asig_delayed_3 + asig_delayed_5 + asig_delayed_7 aout_r = aout * kamp + asig_delayed_2 + asig_delayed_4 + asig_delayed_6 + asig_delayed_8 outs aout_l, aout_r endin techno_hymn.sco
f1 0 8193 10 1 ; Sine i1 0 5 7000 6.00 4000 300 i1 0 5 7000 7.03 8000 500 i1 0 5 7000 8.07 3000 400 i1 4 5 7000 6.05 1900 1000 i1 4 5 7000 7.08 1600 700 i1 4 5 7000 8.00 1500 500 i1 8 5 7000 6.07 1800 900 i1 8 5 7000 7.10 1500 700 i1 8 5 7000 9.03 3600 2000 i1 12 10 7000 6.05 1900 200 i1 12 10 7000 7.09 2000 400 i1 12 10 7000 9.00 1500 500 |