diff options
Diffstat (limited to 'csserver/univorc.csd')
-rwxr-xr-x | csserver/univorc.csd | 585 |
1 files changed, 446 insertions, 139 deletions
diff --git a/csserver/univorc.csd b/csserver/univorc.csd index 8abcdd2..0080f8a 100755 --- a/csserver/univorc.csd +++ b/csserver/univorc.csd @@ -1,139 +1,446 @@ -<CsoundSynthesizer>
-<CsOptions>
--odac -+rtaudio=alsa -d
-</CsOptions>
-
-<CsInstruments>
-sr=32000
-ksmps=100
-nchnls=2
-
-gaudp1 init 0
-gaudp2 init 0
-
-
-instr 102
-/* soundfile play control
- p4 : filename
- p5 : unique instance ID
- p6 : output gain (0-1)
- p7 : udp send gain (0-1)
- p8 : offset in seconds
-
- channels:
- sfplay.<ID>.on - instance control channel (1:on 0: off)
- sfplay.<ID>.gain - soundfile play gain (0-1)
- sfplay.<ID>.udpgain - udp send gain (0-1)
- sfplay.<ID>.flen - holds the channel length
-*/
-S1 strget p4
-inst = p5
-ich filenchnls S1
-iln filelen S1
-ioffset = p8
-
-Slen sprintf "sfplay.%d.flen", p5 ; file length channel
-chnset iln, Slen
-
-if ioffset >= iln then
-turnoff
-else
-iln = iln - ioffset
-endif
-
-Splay sprintf "sfplay.%d.on", inst ; instance control channel
-Sname sprintf "sfplay.%d.fname", inst ; filename channel
-Sgain sprintf "sfplay.%d.gain", inst ; gain channel
-Sudp sprintf "sfplay.%d.udpgain", inst ; udp gain channel
-
-chnset S1, Sname
-chnset 1, Splay
-chnset p6, Sgain
-chnset p7, Sudp
-event_i "i",103,0,iln,inst,ich,ioffset
-turnoff
-endin
-
-
-instr 103
-/* soundfile player
- This is the actual soundfile player.
- It never gets called directly
-*/
-ich = p5
-inst= p4
-ioffset = p6
-Splay sprintf "sfplay.%d.on", inst ; instance control channel
-Sname sprintf "sfplay.%d.fname", inst ; filename channel
-Sgain sprintf "sfplay.%d.gain", inst ; gain channel
-Sudp sprintf "sfplay.%d.udpgain", inst ; udp gain channel
-kon chnget Splay
-kg1 chnget Sgain
-kg2 chnget Sudp
-S1 chnget Sname
-if kon == 0 then
-printf "sfplay:%d OFF\n", 1, inst
-turnoff
-endif
-if ich = 1 then
-a1 diskin2 S1,1,ioffset,1
-a2 = a1
-else
-a1,a2 diskin2 S1,1,ioffset,1
-endif
- outs a1*kg1, a2*kg1
-gaudp1 = a1*kg2 + gaudp1
-gaudp2 = a2*kg2 + gaudp2
-printf_i "sfplay:%d\n", 1, inst
-endin
-
-
-instr 254
-/* udp receive instrument
- p4 : unique instance ID
-
- channels:
- osc.<ID>.on - instance control (1: on, 0: off)
-ion = 1
-inst = 0
-Son sprintf "udprecv.%d.on" , inst ; instance control channel
-chnset ion, Son
-kon chnget Son
-
-if kon == 0 then
-printf "udprecv:%d OFF\n", 1, inst
-turnoff
-endif
-
-asig sockrecv 40001, 32
-outs asig, asig */
-endin
-
-
-instr 255
-/* udp send instrument
-socksends gaudp1, gaudp2, "1.1.25.90", 40000, 256 */
-endin
-
-instr 256
-gaudp1 = 0
-gaudp2 = 0
-a1 = 0
-outs a1, a1
-endin
-
-</CsInstruments>
-
-<CsScore>
-f1 0 1024 10 1
-i254 0 86400
-i255 0 86400
-i256 0 86400
-
-; tests
-; i 101 0 10 1 65 -16 -96
-; i102 0 0.1 "coltrane.wav" 1 0.5 0 2
-; i102 1 0.1 "jarrett.wav" 2 2 0 230
-
-</CsScore>
-</CsoundSynthesizer>
+<CsoundSynthesizer> +<CsOptions> +-+rtaudio=alsa -idevaudio -odevaudio -m0 -W -s -d -b256 -B1024 +</CsOptions> +<CsInstruments> +sr=44100 +ksmps=100 +nchnls=2 + +gaudp1 init 0 +gaudp2 init 0 +gainrev init 0 +gaoutL init 0 +gaoutR init 0 + +/***************************************************************** +Reverb + master out +*****************************************************************/ +instr 200 + +koutGain chnget "masterVolume" +koutGain = koutGain * 0.01 + +ia ftgen 89, 0, 64, -2, -1009, -1103, -1123, -1281, -1289, -1307, -1361, -1409, -1429, -1543, -1583, -1601, -1613, -1709, -1801, -1949, -2003, -2111, -2203, -2341, -2411, -2591, -2609, -2749, -2801, -2903, -3001, -3109, -3203, -3301, -3407, -3539, 0.82, 0.81, 0.8, 0.79, 0.78, 0.77, 0.76, 0.75, 0.74, 0.73, 0.72, 0.71, 0.7, 0.69, 0.68, 0.67, 0.66, 0.65, 0.64, 0.63, 0.62, 0.61, 0.6, 0.59, 0.58, 0.57, 0.56, 0.55, 0.54, 0.53, 0.52, 0.51 + +ib ftgen 90, 0, 16, -2, -179, -223, -233, -311, -347, -409, -433, -509, 0.76, 0.74, 0.72, 0.7, 0.68, 0.64, 0.62, 0.6 + +ain dcblock gainrev*0.05 +arev nreverb ain, 2.8, 0.7, 0, 32, 89, 8, 90 +arev butterlp arev, 5000 +arev butterlp arev, 5000 + + outs (arev + gaoutL)*koutGain, (arev + gaoutR) * koutGain + + gaoutL = 0 + gaoutR = 0 + gainrev = 0 + +endin + +/**************************************************************** +Audio input recording +****************************************************************/ +instr 201 + +ain inch 1 +itable = 300 + p4 +aindex line 0, p3, 1 +kenv adsr 0.005, 0.05, .9, 0.01 +tabw ain*kenv, aindex, itable, 1 +endin + +/**************************************************************** +Soundfile player with tied notes +****************************************************************/ +instr 101 + +ipit = p4 +irg = p5 +iamp = p6 +ipan = p7 +itab = p8 +iatt = p9 +idecay = p10 +ifiltType = p11 - 1 +icutoff = p12 + +idurfadein init 0.002 +idurfadeout init 0.098 +iampe0 init 1 ; FADE IN +iampe1 = iamp ; SUSTAIN +iampe2 init 1 ; FADE OUT + +itie tival ; VERIFIE SI LA NOTE EST LIEE +if itie == 1 igoto nofadein ; SI NON "FADE IN" + +idurfadein init iatt +iampe0 init 0 ; FADE IN +iskip = 1 +kpitch init ipit ; INIT FREQUENCE POUR LES NOTES NON-LIEES +kamp init iamp +kpan init ipan +krg init irg + +nofadein: +iskip = 0 +igliss = 0.005 + +if p3 < 0 igoto nofadeout ; VERIFIE SI LA NOTE EST TENUE, SI NON "FADE OUT" + +idurfadeout init idecay +iampe2 init 0 ; FADE OUT + +nofadeout: + +idelta = idurfadein+idurfadeout +if idelta > abs(p3) then +idelta = abs(p3) +endif + +iampe0 = iampe0 * iamp +iampe2 = iampe2 * iamp +kenv linseg iampe0, idurfadein, iampe1, abs(p3)-idelta, iampe1, idurfadeout, iampe2 ; AMPLITUDE GLOBALE + +; SI LA NOTE EST LIEE, ON SAUTE LE RESTE DE L'INITIALISATION + tigoto tieskip + +kpitch portk ipit, igliss, ipit ; GLISSANDO +kpan portk ipan, igliss, ipan +krg portk irg, igliss, irg +kcutoff portk icutoff, igliss, icutoff + +a1 flooper2 1, kpitch, .25, .5, .1, itab, 0, 0, 0, iskip + +if ifiltType != -1 then +acomp = a1 +a1 bqrez a1, kcutoff, 6, ifiltType +a1 balance a1, acomp +endif + +a1 = a1*kenv + +gaoutL = a1*(1-kpan)+gaoutL +gaoutR = a1*kpan+gaoutR + +gainrev = a1*krg+gainrev + + tieskip: +endin + +/******************************************************************** +soundfile player for percussion - resonance notes +********************************************************************/ +instr 102 + +p3 = p3 +ipit = p4 +irg = p5 +iamp = p6 +ipan = p7 +itab = p8 +iatt = p9 +idecay = p10 +ifiltType = p11 - 1 +icutoff = p12 + +a1 flooper2 1, ipit, .25, .750, .2, itab + +if ifiltType != -1 then +acomp = a1 +a1 bqrez a1, icutoff, 6, ifiltType +a1 balance a1, acomp +endif + +kenv expseg 0.001, .003, .6, p3 - .003, 0.001 +klocalenv adsr iatt, 0.05, .8, idecay + +a1 = a1*kenv*klocalenv + +gaoutL = a1*(1-ipan)+gaoutL +gaoutR = a1*ipan+gaoutR + +gainrev = a1*irg+gainrev + +endin + +/*********************************************************************** +Simple soundfile player +***********************************************************************/ +instr 103 + +ipit = p4 +irg = p5 +iamp = p6 +ipan = p7 +itab = p8 +p3 = nsamp(itab) * 0.00002268 +iatt = p9 +idecay = p10 +ifiltType = p11-1 +icutoff = p12 + +a1 loscil iamp, ipit, itab, 1 + +if ifiltType != -1 then +acomp = a1 +a1 bqrez a1, icutoff, 6, ifiltType +a1 balance a1, acomp +endif + +kenv adsr iatt, 0.05, .8, idecay + +a1 = a1*kenv + +gaoutL = a1*(1-ipan)+gaoutL +gaoutR = a1*ipan+gaoutR + +gainrev = a1*irg+gainrev + +endin + +/******************************************************************** +soundfile simple crossfade player +********************************************************************/ +instr 104 + +ipit = p4 +irg = p5 +iamp = p6 +ipan = p7 +itab = p8 +iatt = p9 +idecay = p10 + +a1 flooper2 1, ipit, .25, .750, .2, itab +a2 = a1 + +kenv adsr iatt, 0.05, .8, idecay + +gaoutL = a1*kenv*iamp*(1-ipan)+gaoutL +gaoutR = a2*kenv*iamp*ipan+gaoutR + +gainrev = (a1+a2)*irg*kenv*.5*iamp+gainrev + +endin + + +/********************************************************************* +simple karplus-strong plucked string +*********************************************************************/ +instr 105 + +p3 = p3+1 +ipit = p4 +irg = p5 +iamp = p6 +ipan = p7 +itab = p8 +iatt = p9 +idecay = p10 + +icps = 261.626 * ipit + +a1 pluck 20000, icps, icps, 0, 5, .495, .495 +a1 butterlp a1, 4000 +a2 = a1 + +kenv adsr iatt, 0.05, .8, idecay + +gaoutL = a1*kenv*iamp*(1-ipan)+gaoutL +gaoutR = a2*kenv*iamp*ipan+gaoutR + +gainrev = (a1+a2)*irg*kenv*.5*iamp+gainrev + +endin + +/********************************************************************** +FM synth instrument +**********************************************************************/ +instr 106 + +ipit = p4 +irg = p5 +iamp = p6 +ipan = p7 +itab = p8 +iatt = p9 +idecay = p10 + +kModDev randomi 0.995, 1.005, .45 +kFondDev randomi 0.9962, 1.0029, .93 +kvibrato vibrato .5, 5, 0.08, 0.5, 3, 5, 3, 5, 1 + +iImin = 2 +iImax = 4 +iamp = 3000 +kfond = 261.626 * ipit * kFondDev + kvibrato +kformant = 800 +kPortFreq = kfond * 3 +kModFreq = kfond * 2 * kModDev +kModFreq2 = kfond * 2.001 * kModDev +kPortFreq2 = int((kformant/kPortFreq) + 0.5) * kfond + +kenv1 expseg 0.001, .05, iamp, p3 - .15, iamp, .1, 0.001 +kenv2 oscil1i 0, kModFreq*(iImax-iImin), p3, 44 + +amod oscili iImin*kModFreq+kenv2, kModFreq, 1 +amod2 oscili iImin*kModFreq2+kenv2, kModFreq2, 1 + +aport1 oscili kenv1, kPortFreq+amod+amod2, 1 +aport2 oscili kenv1*0.5, kPortFreq2+(amod*0.33), 1 + +a1 = aport1+aport2 +a2 = a1 + +kenv adsr iatt, 0.05, .8, idecay + +gaoutL = a1*kenv*iamp*(1-ipan)+gaoutL +gaoutR = a2*kenv*iamp*ipan+gaoutR + +gainrev = (a1+a2)*irg*kenv*iamp+gainrev + + endin + +/********************************************************************** +Waveshaping instrument +**********************************************************************/ +instr 107 + +ipit = p4 * 261.626 +irg = p5 +iamp = p6 +ipan = p7 +itab = p8 +iatt = p9 +idecay = p10 + +kvib vibr 2, 5, 53 +kamp line .42, p3, .1 +kampdev randi .07, .5, .666 + +asig oscili kamp+kampdev, ipit+kvib, 50 + +a1 table asig, 51, 1, .5 +a1 balance a1, asig +a1 = a1*10000 +a2 delay a1, .041 + +kenv adsr iatt, 0.05, .8, idecay + +gaoutL = a1*kenv*iamp*(1-ipan)+gaoutL +gaoutR = a2*kenv*iamp*ipan+gaoutR + +gainrev = (a1+a2)*irg*kenv*iamp+gainrev + +endin + + +/************************************************************************** + General Soundfile Player - Used by Memosono +**************************************************************************/ + + +instr 108 +/* soundfile play control + p4 : filename + p5 : unique instance ID + p6 : output gain (0-1) + p7 : udp send gain (0-1) + p8 : offset in seconds + + channels: + sfplay.<ID>.on - instance control channel (1:on 0: off) + sfplay.<ID>.gain - soundfile play gain (0-1) + sfplay.<ID>.udpgain - udp send gain (0-1) + sfplay.<ID>.flen - holds the channel length +*/ +S1 strget p4 +inst = p5 +ich filenchnls S1 +iln filelen S1 +ioffset = p8 + +Slen sprintf "sfplay.%d.flen", p5 ; file length channel +chnset iln, Slen + +if ioffset >= iln then +turnoff +else +iln = iln - ioffset +endif + +Splay sprintf "sfplay.%d.on", inst ; instance control channel +Sname sprintf "sfplay.%d.fname", inst ; filename channel +Sgain sprintf "sfplay.%d.gain", inst ; gain channel +Sudp sprintf "sfplay.%d.udpgain", inst ; udp gain channel +chnset S1, Sname +chnset 1, Splay +chnset p6, Sgain +chnset p7, Sudp +event_i "i",109,0,iln,inst,ich,ioffset +turnoff +endin + + +instr 109 +/* soundfile player + This is the actual soundfile player. + It never gets called directly +*/ +ich = p5 +inst= p4 +ioffset = p6 +Splay sprintf "sfplay.%d.on", inst ; instance control channel +Sname sprintf "sfplay.%d.fname", inst ; filename channel +Sgain sprintf "sfplay.%d.gain", inst ; gain channel +Sudp sprintf "sfplay.%d.udpgain", inst ; udp gain channel +kon chnget Splay +kg1 chnget Sgain +kg2 chnget Sudp +S1 chnget Sname +if kon == 0 then +printf "sfplay:%d OFF\n", 1, inst +turnoff +endif +if ich = 1 then +a1 diskin2 S1,1,ioffset,1 +a2 = a1 +else +a1,a2 diskin2 S1,1,ioffset,1 +endif + outs a1*kg1, a2*kg1 +gaudp1 = a1*kg2 + gaudp1 +gaudp2 = a2*kg2 + gaudp2 +printf_i "sfplay:%d\n", 1, inst +endin + + + +/************************************************************************** +UDP receiver +**************************************************************************/ + +instr 256 +gaudp1 = 0 +gaudp2 = 0 +a1 = 0 +outs a1, a1 +endin + +</CsInstruments> +<CsScore> +f1 0 8192 10 1 +f40 0 1024 10 1 0 .5 0 0 .3 0 0 .2 0 .1 0 0 0 0 .2 0 0 0 .05 0 0 0 0 .03 ; ADDITIVE SYNTHESIS WAVE +f41 0 8193 19 .5 .5 270 .5 ; SIGMOID FUNCTION +f44 0 8192 5 1 8192 0.001 ; EXPONENTIAL FUNCTION +f50 0 8192 10 1 .1 .005 ; forme d'onde de l'index +f51 0 8192 13 1 1 0 1 .7 .8 .3 .1 .3 .4 .3 .2 0 0 .2 .1 0 .6 0 0 .5 .4 .3 0 0 .6 .7 ; premiere fonction de Chebichev +f52 0 4096 4 51 1 ; table de correction d'amplitude +f53 0 512 10 1 ; VIBRATO WAVE + +i256 0 600000 +i200 0 600000 + +</CsScore> +</CsoundSynthesizer> |