1<CsoundSynthesizer> 2<CsOptions> 3; Select audio/midi flags here according to platform 4; Audio out Audio in 5-odac -iadc ;;;RT audio I/O 6; For Non-realtime ouput leave only the line below: 7; -o biquad-2.wav -W ;;; for file output any platform 8</CsOptions> 9<CsInstruments> 10sr = 44100 11kr = 4410 12ksmps = 10 13nchnls = 2 14 15/* modal synthesis using biquad filters as oscillators 16 Example by Scott Lindroth 2007 */ 17 18 19instr 1 20 21 ipi = 3.1415926 22 idenom = sr*0.5 23 24 ipulseSpd = p4 25 icps = p5 26 ipan = p6 27 iamp = p7 28 iModes = p8 29 30 apulse mpulse iamp, 0 31 32 icps = cpspch( icps ) 33 34 ; filter gain 35 36 iamp1 = 600 37 iamp2 = 1000 38 iamp3 = 1000 39 iamp4 = 1000 40 iamp5 = 1000 41 iamp6 = 1000 42 43 ; resonance 44 45 irpole1 = 0.99999 46 irpole2 = irpole1 47 irpole3 = irpole1 48 irpole4 = irpole1 49 irpole5 = irpole1 50 irpole6 = irpole1 51 52 ; modal frequencies 53 54 if (iModes == 1) goto modes1 55 if (iModes == 2) goto modes2 56 57 modes1: 58 if1 = icps * 1 ;pot lid 59 if2 = icps * 6.27 60 if3 = icps * 3.2 61 if4 = icps * 9.92 62 if5 = icps * 14.15 63 if6 = icps * 6.23 64 goto nextPart 65 66 modes2: 67 if1 = icps * 1 ;uniform wood bar 68 if2 = icps * 2.572 69 if3 = icps * 4.644 70 if4 = icps * 6.984 71 if5 = icps * 9.723 72 if6 = icps * 12.0 73 goto nextPart 74 75 nextPart: 76 77 ; convert frequency to radian frequency 78 79 itheta1 = (if1/idenom) * ipi 80 itheta2 = (if2/idenom) * ipi 81 itheta3 = (if3/idenom) * ipi 82 itheta4 = (if4/idenom) * ipi 83 itheta5 = (if5/idenom) * ipi 84 itheta6 = (if6/idenom) * ipi 85 86 ; calculate coefficients 87 88 ib11 = -2 * irpole1 * cos(itheta1) 89 ib21 = irpole1 * irpole1 90 ib12 = -2 * irpole2 * cos(itheta2) 91 ib22 = irpole2 * irpole2 92 ib13 = -2 * irpole3 * cos(itheta3) 93 ib23 = irpole3 * irpole3 94 ib14 = -2 * irpole4 * cos(itheta4) 95 ib24 = irpole4 * irpole4 96 ib15 = -2 * irpole5 * cos(itheta5) 97 ib25 = irpole5 * irpole5 98 ib16 = -2 * irpole6 * cos(itheta6) 99 ib26 = irpole6 * irpole6 100 101 ;printk 1, ib 11 102 ;printk 1, ib 21 103 104 ; also try setting the -1 coeff. to 0, but be sure to scale down the amplitude! 105 106 asin1 biquad apulse * iamp1, 1, 0, -1, 1, ib11, ib21 107 asin2 biquad apulse * iamp2, 1, 0, -1, 1, ib12, ib22 108 asin3 biquad apulse * iamp3, 1, 0, -1, 1, ib13, ib23 109 asin4 biquad apulse * iamp4, 1, 0, -1, 1, ib14, ib24 110 asin5 biquad apulse * iamp5, 1, 0, -1, 1, ib15, ib25 111 asin6 biquad apulse * iamp6, 1, 0, -1, 1, ib16, ib26 112 113 114 afin = (asin1 + asin2 + asin3 + asin4 + asin5 + asin6) 115 116 outs afin * sqrt(p6), afin*sqrt(1-p6) 117 118endin 119</CsInstruments> 120<CsScore> 121;ins st dur pulseSpd pch pan amp Modes 122i1 0 12 0 7.089 0 0.7 2 123i1 . . . 7.09 1 . . 124i1 . . . 7.091 0.5 . . 125 126i1 0 12 0 8.039 0 0.7 2 127i1 0 12 0 8.04 1 0.7 2 128i1 0 12 0 8.041 0.5 0.7 2 129 130i1 9 . . 7.089 0 . 2 131i1 . . . 7.09 1 . . 132i1 . . . 7.091 0.5 . . 133 134i1 9 12 0 8.019 0 0.7 2 135i1 9 12 0 8.02 1 0.7 2 136i1 9 12 0 8.021 0.5 0.7 2 137e 138</CsScore> 139</CsoundSynthesizer> 140