@@ -0,0 +1,101 @@ | |||
<Cabbage> | |||
form caption("Autopan / Tremolo") size(440, 102), pluginID("aptr") | |||
image pos( 0, 0), size(440, 102), colour("Maroon"), shape("rounded"), outline("white"), line(4) | |||
rslider bounds( 5, 6, 90, 90), text("Freq.[Hz]"), channel("rate"), range(0.1, 50, 0.5, 0.5), textBox(1), trackercolour("tomato") | |||
rslider bounds( 80, 6, 90, 90), text("Tempo[BPM]"), channel("tempo"), range(6, 3000, 30, 0.5, 1), textBox(1), trackercolour("tomato") | |||
rslider bounds(175, 6, 90, 90), text("Depth"), channel("depth"), range(0, 1.00, 1, 0.5), textBox(1), trackercolour("tomato") | |||
rslider bounds(345, 6, 90, 90), text("Level"), channel("level"), range(0, 1.00, 1), textBox(1), trackercolour("tomato") | |||
checkbox bounds(160, 15, 25, 25), colour("yellow"), channel("indicator"), value(0), shape("rounded") | |||
combobox bounds(260, 13, 90,20), channel("mode"), value(1), text("Autopan", "Tremolo") | |||
combobox bounds(260, 38, 90,20), channel("wave"), value(1), text("Sine", "Triangle", "Square", "Randomi", "Randomh") | |||
checkbox bounds(260, 63, 90, 15), text("TEST TONE"), colour("lime"), channel("test"), value(0) | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 32 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
;Author: Iain McCurdy (2012) | |||
opcode PanTrem,aa,aakkkK | |||
ainL,ainR,krate,kdepth,kmode,kwave xin ;READ IN INPUT ARGUMENTS | |||
ktrig changed kwave ;IF LFO WAVEFORM TYPE IS CHANGED GENERATE A MOMENTARY '1' (BANG) | |||
if ktrig=1 then ;IF A 'BANG' HAS BEEN GENERATED IN THE ABOVE LINE | |||
reinit UPDATE ;BEGIN A REINITIALIZATION PASS FROM LABEL 'UPDATE' SO THAT LFO WAVEFORM TYPE CAN BE UPDATED | |||
endif ;END OF THIS CONDITIONAL BRANCH | |||
UPDATE: ;LABEL CALLED UPDATE | |||
iwave init i(kwave) | |||
iwave limit iwave, 0, 4 ; | |||
if iwave==3 then ;if randomi chosen... | |||
klfo randomi -kdepth,kdepth,krate,1 | |||
elseif iwave==4 then ;of randomh chosen... | |||
klfo randomh -kdepth,kdepth,krate,1 | |||
else | |||
klfo lfo kdepth, krate, iwave ;CREATE AN LFO | |||
endif | |||
rireturn ;RETURN FROM REINITIALIZATION PASS | |||
klfo = (klfo*0.5)+0.5 ;RESCALE AND OFFSET LFO SO IT STAY WITHIN THE RANGE 0 - 1 ABOUT THE VALUE 0.5 | |||
if iwave=2||iwave==4 then ;IF SQUARE WAVE MODULATION HAS BEEN CHOSEN... | |||
klfo portk klfo, 0.001 ;SMOOTH THE SQUARE WAVE A TINY BIT TO PREVENT CLICKS | |||
endif ;END OF THIS CONDITIONAL BRANCH | |||
if kmode=0 then ;PAN ;IF PANNING MODE IS CHOSEN FROM BUTTON BANK... | |||
alfo interp klfo ;INTERPOLATE K-RATE LFO AND CREATE A-RATE VARIABLE | |||
aoutL = ainL*sqrt(alfo) ;REDEFINE GLOBAL AUDIO LEFT CHANNEL SIGNAL WITH AUTO-PANNING | |||
aoutR = ainR*(1-sqrt(alfo)) ;REDEFINE GLOBAL AUDIO RIGHT CHANNEL SIGNAL WITH AUTO-PANNING | |||
kindicator = (klfo>0.5?1:0) | |||
chnset kindicator,"indicator" | |||
elseif kmode=1 then ;TREM ;IF TREMELO MODE IS CHOSEN FROM BUTTON BANK... | |||
kindicator = (klfo>0.5?1:0) | |||
chnset kindicator,"indicator" | |||
klfo = klfo+(0.5-(kdepth*0.5)) ;MODIFY LFO AT ZERO DEPTH VALUE IS 1 AND AT MAX DEPTH CENTRE OF MODULATION IS 0.5 | |||
alfo interp klfo ;INTERPOLATE K-RATE LFO AND CREATE A-RATE VARIABLE | |||
aoutL = ainL*(alfo^2) ;REDEFINE GLOBAL AUDIO LEFT CHANNEL SIGNAL WITH TREMELO | |||
aoutR = ainR*(alfo^2) ;REDEFINE GLOBAL AUDIO RIGHT CHANNEL SIGNAL WITH TREMELO | |||
endif ;END OF THIS CONDITIONAL BRANCH | |||
xout aoutL,aoutR ;SEND AUDIO BACK TO CALLER INSTRUMENT | |||
endop | |||
instr 1 | |||
krate chnget "rate" | |||
ktempo chnget "tempo" | |||
kdepth chnget "depth" | |||
kmode chnget "mode" | |||
kwave chnget "wave" | |||
klevel chnget "level" | |||
ktest chnget "test" | |||
ktrig changed krate | |||
ktrig2 changed ktempo | |||
if ktrig=1 then | |||
chnset krate*60,"tempo" | |||
elseif ktrig2=1 then | |||
chnset ktempo/60,"rate" | |||
endif | |||
if ktest=1 then | |||
a1 vco2 0.2,300,4,0.5 | |||
a2 = a1 | |||
else | |||
a1,a2 ins | |||
endif | |||
a1,a2 PanTrem a1,a2,krate,kdepth,kmode-1,kwave-1 | |||
a1 = a1 * klevel | |||
a2 = a2 * klevel | |||
outs a1,a2 | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [60*60*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,134 @@ | |||
<Cabbage> | |||
form caption("Band Filter"), colour("DarkSlateGrey"), size(470, 360), pluginID("band") | |||
xypad bounds(5, 5, 350, 350), channel("cf", "bw"), rangex(0, 1, 0.5), rangey(0, 1, 0.3), text("x:cutoff | y:bandwidth"), colour("white") | |||
checkbox bounds(370, 10, 25, 25), channel("balance"), FontColour("white"), value(0) | |||
label bounds(400, 15, 80, 14), text("Balance"), FontColour("white") | |||
label bounds(375, 43, 85, 15), text("Filter Type"), FontColour("white") | |||
combobox bounds(370, 60,85, 20), channel("type"), value(1), text("reson", "butterbp", "areson", "butterbr") | |||
rslider bounds(368, 93, 90, 90), text("Mix"), fontcolour("white"), channel("mix"), range(0, 1.00, 1), trackercolour("white") | |||
rslider bounds(368,190, 90, 90), text("Level"), fontcolour("white"), channel("level"), range(0, 1.00, 1), trackercolour("white") | |||
rslider bounds(360,283, 50, 30), text("CF"), fontcolour("white"), TextBox(1), channel("cfDisp"), range(1, 20000, 1) | |||
rslider bounds(415,283, 50, 30), text("BW"), fontcolour("white"), TextBox(1), channel("bwDisp"), range(1, 20000, 1) | |||
image bounds(75, 343, 315, 18), colour(75, 85, 90, 100), plant("credit"), line(0){ | |||
} | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-dm0 -n -+rtmidi=null -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 32 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
;Author: Iain McCurdy (2012) | |||
instr 1 | |||
kcf chnget "cf" | |||
kbw chnget "bw" | |||
kbalance chnget "balance" | |||
rslider bounds(360,283, 50, 30), text("CF"), fontcolour("white"), TextBox(1), channel("cfDisp"), range(1, 20000, 1) | |||
rslider bounds(415,283, 50, 30), text("BW"), fontcolour("white"), TextBox(1), channel("bwDisp"), range(1, 20000, 1) | |||
image bounds(75, 343, 315, 18), colour(75, 85, 90, 100), plant("credit"), line(0){ | |||
} | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-dm0 -n -+rtmidi=null -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 32 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
;Author: Iain McCurdy (2012) | |||
instr 1 | |||
kcf chnget "cf" | |||
kbw chnget "bw" | |||
kbalance chnget "balance" | |||
rslider bounds(360,283, 50, 30), text("CF"), fontcolour("white"), TextBox(1), channel("cfDisp"), range(1, 20000, 1) | |||
rslider bounds(415,283, 50, 30), text("BW"), fontcolour("white"), TextBox(1), channel("bwDisp"), range(1, 20000, 1) | |||
image bounds(75, 343, 315, 18), colour(75, 85, 90, 100), plant("credit"), line(0){ | |||
} | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-dm0 -n -+rtmidi=null -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 32 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
;Author: Iain McCurdy (2012) | |||
instr 1 | |||
kcf chnget "cf" | |||
kbw chnget "bw" | |||
kbalance chnget "balance" | |||
ktype chnget "type" | |||
kmix chnget "mix" | |||
klevel chnget "level" | |||
kporttime linseg 0,0.001,0.05 | |||
kcf expcurve kcf, 4 | |||
kcf scale kcf,18000,20 | |||
kbw expcurve kbw, 16 | |||
kbw scale kbw,3,0.01 | |||
aL,aR ins | |||
;aL,aR diskin2 "seashore.wav",1,0,1 | |||
;aL pinkish 1 ;USE FOR TESTING | |||
;aR pinkish 1 | |||
kbw limit kbw*kcf,1,20000 | |||
chnset kcf,"cfDisp" ;send actual values for cutoff and bandwidth to GUI value boxes | |||
chnset kbw,"bwDisp" | |||
kcf portk kcf,kporttime | |||
kbw portk kbw,kporttime | |||
if ktype==1 then ;if reson chosen... | |||
aFiltL reson aL,kcf,kbw,1 | |||
aFiltR reson aR,kcf,kbw,1 | |||
elseif ktype==2 then ;or if butterworth bandpass is chosen | |||
aFiltL butbp aL,kcf,kbw | |||
aFiltR butbp aR,kcf,kbw | |||
elseif ktype==3 then ;or if areson is chosen... | |||
aFiltL areson aL,kcf,kbw,1 | |||
aFiltR areson aR,kcf,kbw,1 | |||
else ;otherwise must be butterworth band reject | |||
aFiltL butbr aL,kcf,kbw | |||
aFiltR butbr aR,kcf,kbw | |||
endif | |||
if kbalance==1 then ;if 'balance' switch is on... | |||
aFiltL balance aFiltL,aL,0.3 | |||
aFiltR balance aFiltR,aR,0.3 | |||
endif | |||
amixL ntrpol aL,aFiltL,kmix ;create wet/dry mix | |||
amixR ntrpol aR,aFiltR,kmix | |||
outs amixL*klevel,amixR*klevel | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [3600*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,284 @@ | |||
;BreakBeatCutter.csd | |||
;Iain McCurdy, 2013. | |||
; Break Beat Cut Up using the bbcut opcode with additional processing | |||
;==BBCUT========================================================================================================================== | |||
'Sub-division' determines the note duration used as the base unit in cut-ups. | |||
For example a value of 8 represents quavers (eighth notes), 16 represents semiquavers (sixteenth notes) and so on. | |||
'Bar Length' represents the number of beats per bar. For example, a value of 4 represents a 4/4 bar and so on. | |||
'Phrase' defines the number of bars that will elapse before the cutting up pattern restarts from the beginning. | |||
'Stutter' is a separate cut-up process which occasionally will take a very short fragment of the input audio and repeat | |||
it many times. | |||
'Stutter Speed' defines the duration of each stutter in relation to 'Sub-division'. | |||
If subdivision is 8 (quavers / eighth notes) and 'Stutter Speed' is 2 then each stutter will be a semiquaver / sixteenth note. | |||
'Stutter Chance' defines the frequency of stutter moments. | |||
The range for this parameter is 0 to 1. Zero means stuttering will be very unlikely, 1 means it will be very likely. | |||
'Repeats' defines the number of repeats that will be employed in normal cut-up events. | |||
When processing non-rhythmical, unmetered material it may be be more interesting to employ non-whole numbers for parameters such as 'Sub-division', 'Phrase' and 'Stutter Speed'. | |||
;======================================================================================================================== | |||
;==FILTER================================================================================================================ | |||
Additionally in this example a randomly moving band-pass filter has been implemented. | |||
'Filter Mix' crossfades between the unfiltered bbcut signal and the filtered bbcut signal. | |||
'Cutoff Freq.' consists of two small sliders which determine the range from which random cutoff values are derived. | |||
'Interpolate<=>S&H' fades continuously between an interpolated random function and a sample and hold type random function. | |||
'Filter Div.' controls the frequency subdivision with which new random cutoff frequency values are generated - a value of '1' means that new values are generated once every bar. | |||
;======================================================================================================================== | |||
;==WGUIDE================================================================================================================ | |||
A waveguide effect can randomly and rhythmically cut into the audio stream | |||
'Chance' defines the probability of this happening. 0=never 1=always | |||
The range of frequencies the effect will choose from is defined by the user as note values. | |||
Frequencies are quatised to adhere to equal temperament. | |||
;======================================================================================================================== | |||
;==SQUARE MOD. (Square wave ring modulation)============================================================================= | |||
This effect can similarly randomly and rhythmically cut into the audio stream using the 'chance' control | |||
The range of frequencies the modulator waveform can move between is defined as 'oct' values. | |||
;======================================================================================================================== | |||
;==F.SHIFT (Frequency Shifter)=========================================================================================== | |||
Similar to the above except using a frequency shifter effect. | |||
;======================================================================================================================== | |||
<Cabbage> | |||
form size(440,485), caption("Break Beat Cutter"), pluginID("bbct") | |||
snapshot bounds( 5,450,200, 25), preset("BreakBeatCutter"), master(1), items("Preset 1", "Preset 2", "Preset 3", "Preset 4", "Preset 5", "Preset 6", "Preset 7", "Preset 8", "Preset 9", "Preset 10") | |||
groupbox bounds( 0, 0,440,145), text("CUTTER"), plant("cutter"), FontColour(silver),colour(20,20,20){ | |||
rslider bounds( 10, 25, 70, 70), colour("Tan"), trackercolour("Tan"), fontcolour("silver"), text("Sub-div."), channel("subdiv"), range(1, 512, 8, 1, 1) | |||
rslider bounds( 80, 25, 70, 70), colour("Tan"), trackercolour("Tan"), fontcolour("silver"), text("Bar Length"), channel("barlen"), range(1, 16, 2, 1, 1) | |||
rslider bounds(150, 25, 70, 70), colour("Tan"), trackercolour("Tan"), fontcolour("silver"), text("Phrase"), channel("phrase"), range(1, 512, 8, 1, 1) | |||
rslider bounds(220, 25, 70, 70), colour("Tan"), trackercolour("Tan"), fontcolour("silver"), text("Repeats"), channel("repeats"), range(1, 32, 2, 1, 1) | |||
rslider bounds(290, 25, 70, 70), colour("Tan"), trackercolour("Tan"), fontcolour("silver"), text("Stut. Speed"), channel("stutspd"), range(1, 32, 4, 1, 1) | |||
rslider bounds(360, 25, 70, 70), colour("Tan"), trackercolour("Tan"), fontcolour("silver"), text("Stut. Chance"), channel("stutchnc"), range(0, 1.00, 0.5) | |||
hslider bounds( 5, 95,425, 40), colour("Tan"), trackercolour("Tan"), fontcolour("silver"), textBox(1) channel("BPM"), range(10, 500, 110,1,1) | |||
label bounds(198,127, 25, 11), text("BPM"), FontColour("silver") | |||
} | |||
groupbox bounds( 0,145,440,100), text("FILTER"), plant("filter"), FontColour(silver),colour(20,20,20){ | |||
rslider bounds( 10, 25, 70, 70), colour(200,100,50,255), trackercolour(200,100,50,255), fontcolour("silver"), text("Mix"), channel("FltMix"), range(0, 1.00, 0.6) | |||
rslider bounds( 80, 25, 70, 70), colour(200,100,50,255), trackercolour(200,100,50,255), fontcolour("silver"), text("Division"), channel("fltdiv"), range(1, 16, 1,1,1) | |||
rslider bounds(150, 25, 70, 70), colour(200,100,50,255), trackercolour(200,100,50,255), fontcolour("silver"), text("Bandwidth"), channel("bw"), range(0.1, 10, 1, 0.5, 0.001) | |||
hslider bounds(220, 25,140, 35), colour(200,100,50,255), trackercolour(200,100,50,255), fontcolour("silver"), channel("cfmin"), range(50, 10000, 50 ,0.5,0.1) | |||
hslider bounds(220, 50,140, 35), colour(200,100,50,255), trackercolour(200,100,50,255), fontcolour("silver"), channel("cfmax"), range(50, 10000, 10000,0.5,0.1) | |||
label bounds(254, 77, 80, 12), text("Cutoff Freq."), FontColour("white") | |||
rslider bounds(360, 25, 70, 70), colour(200,100,50,255), trackercolour(200,100,50,255), fontcolour("silver"), text("Int./S&H"), channel("i_h"), range(0, 1, 0) | |||
} | |||
groupbox bounds( 0,245,220,100), text("WAVE GUIDE"), plant("waveguide"), FontColour(silver),colour(20,20,20){ | |||
rslider bounds( 10, 25, 70, 70), colour(150,150,50,255), trackercolour(150,150,50,255), fontcolour("silver"), text("Chance"), channel("WguideChnc"), range(0, 1.00, 0.2) | |||
hslider bounds( 80, 25,140, 35), colour(150,150,50,255), trackercolour(150,150,50,255), fontcolour("silver"), channel("wguidemin"), range(22, 100, 50,1,1) | |||
hslider bounds( 80, 50,140, 35), colour(150,150,50,255), trackercolour(150,150,50,255), fontcolour("silver"), channel("wguidemax"), range(22, 100, 70,1,1) | |||
label bounds(108, 77, 85, 12), text("Pitch Range"), FontColour("white") | |||
} | |||
groupbox bounds(220,245,220,100), text("SQUARE MOD."), plant("sqmod"), FontColour(silver),colour(20,20,20){ | |||
rslider bounds( 10, 25, 70, 70), colour(200,150,200,255), trackercolour(200,150,200,255), fontcolour("silver"), text("Chance"), channel("SqModChnc"), range(0, 1.00, 0.2) | |||
hslider bounds( 80, 25,140, 35), colour(200,150,200,255), trackercolour(200,150,200,255), fontcolour("silver"), channel("sqmodmin"), range(1, 14.0, 6) | |||
hslider bounds( 80, 50,140, 35), colour(200,150,200,255), trackercolour(200,150,200,255), fontcolour("silver"), channel("sqmodmax"), range(1, 14.0, 12) | |||
label bounds(108, 77, 85, 12), text("Freq.Range"), FontColour("white") | |||
} | |||
groupbox bounds(0,345,220,100), text("FREQUENCY SHIFT"), plant("fshift"), FontColour(silver),colour(20,20,20){ | |||
rslider bounds( 10, 25, 70, 70), colour(250,110,250,255), trackercolour(250,110,250,255), fontcolour("silver"), text("Chance"), channel("FshiftChnc"), range(0, 1.00, 0.2) | |||
hslider bounds( 80, 25,140, 35), colour(250,110,250,255), trackercolour(250,110,250,255), fontcolour("silver"), channel("fshiftmin"), range(-4000, 4000,-1000) | |||
hslider bounds( 80, 50,140, 35), colour(250,110,250,255), trackercolour(250,110,250,255), fontcolour("silver"), channel("fshiftmax"), range(-4000, 4000, 1000) | |||
label bounds(108, 77, 85, 12), text("Freq.Range"), FontColour("white") | |||
} | |||
groupbox bounds(220,345,220,100), text("OUTPUT"), plant("output"), FontColour(silver),colour(20,20,20){ | |||
rslider bounds( 10, 25, 70, 70), colour("Tan"), trackercolour("Tan"), fontcolour("silver"), text("Layers"), channel("layers"), range(1, 20, 1,1,1) | |||
rslider bounds( 80, 25, 70, 70), colour("Tan"), trackercolour("Tan"), fontcolour("silver"), text("Dry/Wet"), channel("DryWet"), range(0, 1.00, 0.6) | |||
rslider bounds(150, 25, 70, 70), colour("Tan"), trackercolour("Tan"), fontcolour("silver"), text("Level"), channel("gain"), range(0, 1.00, 0.75) | |||
} | |||
label bounds(10,472, 200, 12), text("Iain McCurdy [2013]"), FontColour("grey") | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-n -dm0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 64 | |||
nchnls = 2 | |||
0dbfs=1 | |||
seed 0 | |||
gisine ftgen 0,0,131072,10,1 | |||
opcode BBCutIteration,aa,aaiiiiiiiii | |||
aL,aR,iBPS, isubdiv, ibarlen, iphrase, irepeats, istutspd, istutchnc, icount, ilayers xin | |||
abbcutL bbcutm aL, iBPS, isubdiv, ibarlen, iphrase, irepeats, istutspd, istutchnc | |||
abbcutR bbcutm aR, iBPS, isubdiv, ibarlen, iphrase, irepeats, istutspd, istutchnc | |||
amixL = 0 | |||
amixR = 0 | |||
if icount<ilayers then | |||
amixL,amixR BBCutIteration aL,aR, iBPS, isubdiv, ibarlen, iphrase, irepeats, istutspd, istutchnc, icount+1, ilayers | |||
endif | |||
xout abbcutL+amixL,abbcutR+amixL | |||
endop | |||
opcode FreqShifter,a,aki | |||
ain,kfshift,ifn xin ;READ IN INPUT ARGUMENTS | |||
areal, aimag hilbert ain ;HILBERT OPCODE OUTPUTS TWO PHASE SHIFTED SIGNALS, EACH 90 OUT OF PHASE WITH EACH OTHER | |||
asin oscili 1, kfshift, ifn, 0 | |||
acos oscili 1, kfshift, ifn, 0.25 | |||
;RING MODULATE EACH SIGNAL USING THE QUADRATURE OSCILLATORS AS MODULATORS | |||
amod1 = areal * acos | |||
amod2 = aimag * asin | |||
;UPSHIFTING OUTPUT | |||
aFS = (amod1 - amod2) | |||
xout aFS ;SEND AUDIO BACK TO CALLER INSTRUMENT | |||
endop | |||
instr 1 ; read widgets | |||
gksubdiv chnget "subdiv" ; read in widgets | |||
gkbarlen chnget "barlen" | |||
gkphrase chnget "phrase" | |||
gkrepeats chnget "repeats" | |||
gkstutspd chnget "stutspd" | |||
gkstutchnc chnget "stutchnc" | |||
gkBPM chnget "BPM" | |||
gkfltdiv chnget "fltdiv" | |||
gkDryWet chnget "DryWet" | |||
gkFltMix chnget "FltMix" | |||
gkbw chnget "bw" | |||
gkcfmin chnget "cfmin" | |||
gkcfmax chnget "cfmax" | |||
gki_h chnget "i_h" | |||
gklayers chnget "layers" | |||
gkgain chnget "gain" | |||
konoff chnget "onoff" | |||
endin | |||
instr 2 | |||
kSwitch changed gkBPM, gkrepeats, gkphrase, gkstutspd, gkstutchnc, gkbarlen, gksubdiv, gkfltdiv, gklayers ;GENERATE A MOMENTARY '1' PULSE IN OUTPUT 'kSwitch' IF ANY OF THE SCANNED INPUT VARIABLES CHANGE. (OUTPUT 'kSwitch' IS NORMALLY ZERO) | |||
if kSwitch=1 then ;IF I-RATE VARIABLE CHANGE TRIGGER IS '1'... | |||
reinit UPDATE ;BEGIN A REINITIALISATION PASS FROM LABEL 'UPDATE' | |||
endif | |||
UPDATE: | |||
/* INPUT */ | |||
aL,aR ins ; live input | |||
;;;; use a loop sound file for testing | |||
;#define SOUNDFILE #"loop.wav"# ; macro | |||
; ilen filelen $SOUNDFILE ; length of sound file | |||
; ibeats = 8 ; number of beats in the drum loop | |||
; ispd = (ilen/ibeats) * (i(gkBPM)/60) ; speed ratio for this sample to sync with master clock | |||
; aL diskin $SOUNDFILE,ispd,0,1 ; read sound file | |||
; aR = aL ; right channel same as left | |||
iBPS = i(gkBPM)/60 | |||
kmetro metro iBPS ; metronome used for triggering random parameter changes | |||
; call UDO | |||
;OUTPUT OPCODE INPUT | BPM | SUBDIVISION | BAR_LENGTH | PHRASE_LENGTH | NUM.OF_REPEATS | STUTTER_SPEED | STUTTER_CHANCE | |||
abbcutL,abbcutR BBCutIteration aL,aR, i(gkBPM)/60, i(gksubdiv), i(gkbarlen), i(gkphrase), i(gkrepeats), i(gkstutspd), i(gkstutchnc), 1, i(gklayers) | |||
;FILTER================================================================================================================================================================= | |||
ifreq = iBPS * i(gkfltdiv) ; FREQUENCY WITH WHICH NEW FILTER CUTOFF VALUES ARE GENERATED | |||
kcf1h randomh gkcfmin, gkcfmax, ifreq ; sample and hold random frequency values | |||
kcf1i lineto kcf1h, 1/ifreq ; interpolate values | |||
kcf1 ntrpol kcf1i, kcf1h, gki_h ; crossfade between interpolating and sample and hold type random values | |||
abbFltL resonz abbcutL, kcf1, kcf1*gkbw, 2 ; band-pass filter | |||
abbMixL ntrpol abbcutL, abbFltL, gkFltMix ; crossfade between unfiltered and filter audio signal | |||
kcf2h randomh gkcfmin, gkcfmax, ifreq ; RIGHT CHANNEL | |||
kcf2i lineto kcf2h, 1/ifreq ; | |||
kcf2 ntrpol kcf2i, kcf2h, gki_h ; | |||
abbFltR resonz abbcutR, kcf2, kcf2*gkbw, 2 ; | |||
abbMixR ntrpol abbcutR, abbFltR, gkFltMix ; | |||
;======================================================================================================================================================================= | |||
;WGUIDE1================================================================================================================================================================ | |||
kchance chnget "WguideChnc" | |||
kdice trandom kmetro,0,1 | |||
if kdice<kchance then | |||
kwguidemin chnget "wguidemin" | |||
kwguidemax chnget "wguidemax" | |||
knum randomh kwguidemin,kwguidemax,iBPS | |||
afrq interp cpsmidinn(int(knum)) | |||
kfb randomi 0.8,0.99,iBPS/4 | |||
kcf randomi 800,4000,iBPS | |||
abbMixL wguide1 abbMixL*0.7,afrq,kcf,kfb | |||
abbMixR wguide1 abbMixR*0.7,afrq,kcf,kfb | |||
endif | |||
;======================================================================================================================================================================= | |||
;SQUARE MOD============================================================================================================================================================== | |||
kchance chnget "SqModChnc" ; read in widgets | |||
ksqmodmin chnget "sqmodmin" ; | |||
ksqmodmax chnget "sqmodmax" ; | |||
kDiceRoll trandom kmetro,0,1 ; new 'roll of the dice' upon each new time period | |||
if kDiceRoll<kchance then ; if 'roll of the dice' is within chance boundary... | |||
kratei randomi ksqmodmin,ksqmodmax,iBPS ; interpolating random function for modulating waveform frequency | |||
krateh randomh ksqmodmin,ksqmodmax,iBPS ; sample and hold random function for modulating waveform frequency | |||
kcross randomi 0,1,iBPS ; crossfader for morphing between interpolating and S&H functions | |||
krate ntrpol kratei,krateh,kcross ; create crossfaded rate function | |||
amod lfo 1,cpsoct(krate),2 ; modulating waveform (square waveform) | |||
kcf limit cpsoct(krate)*4,20,sr/3 ; cutoff freq for filtering some of the high freq. content of the square wave | |||
amod clfilt amod,kcf,0,2 ; low-pass filter square wave | |||
abbMixL = abbMixL*amod ; ring modulate audio | |||
abbMixR = abbMixR*amod ; | |||
endif | |||
;======================================================================================================================================================================= | |||
;FSHIFT================================================================================================================================================================= | |||
kchance chnget "FshiftChnc" ; read in widgets | |||
kdice trandom kmetro,0,1 ; new 'roll of the dice' upon each new time period | |||
if kdice<kchance then ; if 'roll of the dice' is within chance boundary... | |||
kfshiftmin chnget "fshiftmin" ; read in widgets | |||
kfshiftmax chnget "fshiftmax" ; | |||
kfsfrqi randomi kfshiftmin,kfshiftmax,iBPS*2 ; interpolating random function for modulating waveform frequency | |||
kfsfrqh randomh kfshiftmin,kfshiftmax,iBPS*2 ; sample and hold random function for modulating waveform frequency | |||
kcross randomi 0,1,iBPS*2 ; crossfader for morphing between interpolating and S&H functions | |||
kfsfrq ntrpol kfsfrqi,kfsfrqh,kcross ; create crossfaded rate function modulating waveform (square waveform) | |||
abbMixL FreqShifter abbMixL,kfsfrq,gisine ; | |||
abbMixR FreqShifter abbMixR,kfsfrq,gisine ; | |||
endif ; | |||
;======================================================================================================================================================================= | |||
rireturn ; RETURN FROM REINITIALISATION PASS TO PERFORMANCE TIME PASSES | |||
amixL sum aL*(1-gkDryWet), abbMixL*gkDryWet ;SUM AND MIX DRY SIGNAL AND BBCUT SIGNAL (LEFT CHANNEL) | |||
amixR sum aR*(1-gkDryWet), abbMixR*gkDryWet ;SUM AND MIX DRY SIGNAL AND BBCUT SIGNAL (RIGHT CHANNEL) | |||
outs amixL*gkgain, amixR*gkgain ;SEND AUDIO TO OUTPUTS | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i1 0 36000 | |||
i2 0 36000 | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,166 @@ | |||
Convolution Reverb | |||
------------------ | |||
You are encouraged to experiment with different impulse files. | |||
You can find some here: http://www.openairlib.net/ | |||
The one I reference in this example can be found here: http://www.iainmccurdy.org/CsoundRealtimeExamples/SourceMaterials/Stairwell.wav | |||
NOTE THAT ZERO LATENCY (or close to zero) CONV0LUTION WILL NOT BE POSSIBLE. | |||
Instructions | |||
------------ | |||
'Size Ratio' compresses the duration of the impulse file (provided that 'compressed' is chosen for 'resize' mode). | |||
'Curve' defines the shape of an envelope applied to compressed impulse files using GEN16 | |||
zero = straight line decaying | |||
positive vals. = increasingly convex decaying | |||
negative vals = increasingly concave decaying | |||
Increase 'iplen' (must be a power of 2) if experiencing performance problems, or reduce it to reduce latency. | |||
'Delay OS' fine tunes the delay applied to the dry signal. Normally this should be zero but adjust it to modify how the dry signal lines up with the convoluted signal. | |||
<Cabbage> | |||
form caption("Convolution Reverb") size(505, 90), pluginID("Conv") | |||
image bounds(0, 0, 505, 90), colour(135, 30, 30,220), shape("rounded"), outline(255,255,150), line(4) | |||
button bounds( 10, 10, 90, 20), text("forward","backward"), channel("FwdBwd"), value(0), fontcolour(250,250,250) | |||
label bounds( 30, 30, 60, 12), text("direction"), fontcolour(250,250,250) | |||
button bounds( 10, 50, 90, 20), text("normal","compressed"), channel("resize"), value(0), fontcolour(250,250,250) | |||
label bounds( 35, 70, 60, 12), text("resize"), fontcolour(250,250,250) | |||
rslider bounds(105, 11, 70, 70), text("Size Ratio"), colour(135, 30, 30), trackercolour(255,255,150), fontcolour(250,250,250), channel("CompRat"), range(0, 1.00, 1) | |||
rslider bounds(170, 11, 70, 70), text("Curve"), colour(135, 30, 30), trackercolour(255,255,150), fontcolour(250,250,250), channel("Curve"), range(-8.00, 8.00, 0) | |||
rslider bounds(235, 11, 70, 70), text("In Skip"), colour(135, 30, 30), trackercolour(255,255,150), fontcolour(250,250,250), channel("skipsamples"), range(0, 1.00, 0) | |||
rslider bounds(300, 11, 70, 70), text("Del.OS."), colour(135, 30, 30), trackercolour(255,255,150), fontcolour(250,250,250), channel("DelayOS"), range(-1.00, 1.00, 0) | |||
rslider bounds(365, 11, 70, 70), text("Mix"), colour(135, 30, 30), trackercolour(255,255,150), fontcolour(250,250,250), channel("mix"), range(0, 1.00, 0.25) | |||
rslider bounds(430, 11, 70, 70), text("Level"), colour(135, 30, 30), trackercolour(255,255,150), fontcolour(250,250,250), channel("level"), range(0, 1.00, 0.4) | |||
} | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 ;SAMPLE RATE | |||
ksmps = 32 ;NUMBER OF AUDIO SAMPLES IN EACH CONTROL CYCLE | |||
nchnls = 2 ;NUMBER OF CHANNELS (2=STEREO) | |||
0dbfs = 1 | |||
;Author: Iain McCurdy (2012) | |||
; IMPULSE RESPONSES STORED AS STEREO GEN01 FUNCTION TABLES | |||
giImpulse ftgen 1, 0, 262144, 1, "stairwell.wav", 0, 0, 0 ;stereo file, duration 1.176s | |||
; reverse function table UDO | |||
opcode tab_reverse,i,i | |||
ifn xin | |||
iTabLen = nsamp(ifn) | |||
iTableRev ftgen ifn+100,0,-iTabLen,-2, 0 | |||
icount = 0 | |||
loop: | |||
ival table iTabLen-icount-1, ifn | |||
tableiw ival,icount,iTableRev | |||
loop_lt icount,1,iTabLen,loop | |||
xout iTableRev | |||
endop | |||
; compress function table UDO | |||
opcode tab_compress,i,iii | |||
ifn,iCompRat,iCurve xin | |||
iTabLen = nsamp(ifn) | |||
iTabLenComp = int(nsamp(ifn)*iCompRat) | |||
iTableComp ftgen ifn+200,0,-iTabLenComp,-2, 0 | |||
iAmpScaleTab ftgen ifn+300,0,-iTabLenComp,-16, 1,iTabLenComp,iCurve,0 | |||
icount = 0 | |||
loop: | |||
ival table icount, ifn | |||
iAmpScale table icount, iAmpScaleTab | |||
tableiw ival*iAmpScale,icount,iTableComp | |||
loop_lt icount,1,iTabLenComp,loop | |||
xout iTableComp | |||
endop | |||
; compress reverse function table UDO | |||
opcode tab_compress_rev,i,iii | |||
ifn,iCompRat,iCurve xin | |||
iTabLen = nsamp(ifn) | |||
iTabLenComp = int(nsamp(ifn)*iCompRat) | |||
iTableComp ftgen ifn+400,0,-iTabLenComp,-2, 0 | |||
iAmpScaleTab ftgen ifn+500,0,-iTabLenComp,-16, 1,iTabLenComp,iCurve,0 | |||
icount = 0 | |||
loop: | |||
ival table icount, ifn | |||
iAmpScale table icount, iAmpScaleTab | |||
tableiw ival*iAmpScale, iTabLenComp-icount-1,iTableComp | |||
loop_lt icount,1,iTabLenComp,loop | |||
xout iTableComp | |||
endop | |||
instr 1 ;CONVOLUTION REVERB INSTRUMENT | |||
kFwdBwd chnget "FwdBwd" | |||
kresize chnget "resize" | |||
kmix chnget "mix" | |||
klevel chnget "level" | |||
kCompRat chnget "CompRat" | |||
kCurve chnget "Curve" | |||
kskipsamples chnget "skipsamples" | |||
kDelayOS chnget "DelayOS" | |||
kCompRat init 1 ;IF THIS IS LEFT UNINITIALISED A CRASH WILL OCCUR! | |||
ainL,ainR ins ;READ STEREO AUDIO INPUT | |||
;ainL,ainR diskin2 "808loop.wav",1,0,1 ;USE A SOUND FILE FOR TESTING | |||
ainMix sum ainL,ainR | |||
;CREATE REVERSED TABLES | |||
irev tab_reverse giImpulse | |||
kSwitch changed kskipsamples,kFwdBwd,kDelayOS,kCompRat,kCurve ;GENERATE A MOMENTARY '1' PULSE IN OUTPUT 'kSwitch' IF ANY OF THE SCANNED INPUT VARIABLES CHANGE. (OUTPUT 'kSwitch' IS NORMALLY ZERO) | |||
if kSwitch=1 then ;IF I-RATE VARIABLE IS CHANGED... | |||
reinit UPDATE ;BEGIN A REINITIALISATION PASS IN ORDER TO EFFECT THIS CHANGE. BEGIN THIS PASS AT LABEL ENTITLED 'UPDATE' AND CONTINUE UNTIL rireturn OPCODE | |||
endif ;END OF CONDITIONAL BRANCHING | |||
UPDATE: ;LABEL | |||
;CREATE COMPRESSED TABLES | |||
icomp tab_compress giImpulse,i(kCompRat),i(kCurve) | |||
;CREATE COMPRESSED REVERSED TABLES | |||
icomprev tab_compress_rev giImpulse,i(kCompRat),i(kCurve) | |||
iplen = 1024 ;BUFFER LENGTH (INCREASE IF EXPERIENCING PERFORMANCE PROBLEMS, REDUCE IN ORDER TO REDUCE LATENCY) | |||
itab = giImpulse ;DERIVE FUNCTION TABLE NUMBER OF CHOSEN TABLE FOR IMPULSE FILE | |||
iirlen = nsamp(itab)*0.5 ;DERIVE THE LENGTH OF THE IMPULSE RESPONSE IN SAMPLES. DIVIDE BY 2 AS TABLE IS STEREO. | |||
iskipsamples = nsamp(itab)*0.5*i(kskipsamples) ;DERIVE INSKIP INTO IMPULSE FILE. DIVIDE BY 2 (MULTIPLY BY 0.5) AS ALL IMPULSE FILES ARE STEREO | |||
;FORWARDS REVERB | |||
if kFwdBwd==0&&kresize==0 then | |||
aL,aR ftconv ainMix, itab, iplen,iskipsamples, iirlen ;CONVOLUTE INPUT SOUND | |||
adelL delay ainL, abs((iplen/sr)+i(kDelayOS)) ;DELAY THE INPUT SOUND ACCORDING TO THE BUFFER SIZE | |||
adelR delay ainR, abs((iplen/sr)+i(kDelayOS)) ;DELAY THE INPUT SOUND ACCORDING TO THE BUFFER SIZE | |||
;BACKWARDS REVERB | |||
elseif kFwdBwd==1&&kresize==0 then | |||
aL,aR ftconv ainMix, irev, iplen, iskipsamples, iirlen ;CONVOLUTE INPUT SOUND | |||
adelL delay ainL,abs((iplen/sr)+(iirlen/sr)-(iskipsamples/sr)+i(kDelayOS)) ;DELAY THE INPUT SOUND ACCORDING TO THE BUFFER SIZE AND THE DURATION OF THE IMPULSE FILE | |||
adelR delay ainR,abs((iplen/sr)+(iirlen/sr)-(iskipsamples/sr)+i(kDelayOS)) ;DELAY THE INPUT SOUND ACCORDING TO THE BUFFER SIZE AND THE DURATION OF THE IMPULSE FILE | |||
elseif kFwdBwd==0&&kresize==1 then | |||
aL,aR ftconv ainMix, icomp, iplen,iskipsamples, iirlen*i(kCompRat) ;CONVOLUTE INPUT SOUND | |||
adelL delay ainL, abs((iplen/sr)+i(kDelayOS)) ;DELAY THE INPUT SOUND ACCORDING TO THE BUFFER SIZE | |||
adelR delay ainR, abs((iplen/sr)+i(kDelayOS)) ;DELAY THE INPUT SOUND ACCORDING TO THE BUFFER SIZE | |||
elseif kFwdBwd==1&&kresize==1 then | |||
aL,aR ftconv ainMix, icomprev, iplen, iskipsamples, iirlen*i(kCompRat) ;CONVOLUTE INPUT SOUND | |||
adelL delay ainL,abs((iplen/sr)+((iirlen*i(kCompRat))/sr)-(iskipsamples/sr)+i(kDelayOS)) ;DELAY THE INPUT SOUND ACCORDING TO THE BUFFER SIZE AND THE DURATION OF THE IMPULSE FILE | |||
adelR delay ainR,abs((iplen/sr)+((iirlen*i(kCompRat))/sr)-(iskipsamples/sr)+i(kDelayOS)) ;DELAY THE INPUT SOUND ACCORDING TO THE BUFFER SIZE AND THE DURATION OF THE IMPULSE FILE | |||
endif | |||
; CREATE A DRY/WET MIX | |||
aMixL ntrpol adelL,aL*0.1,kmix | |||
aMixR ntrpol adelR,aR*0.1,kmix | |||
outs aMixL*klevel,aMixR*klevel | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 3600 ;INSTRUMENT 2 (CONVOLUTION INSTRUMENT) RUNS FOR 1 HOUR (AND KEEPS REAL-TIME PERFORMANCE GOING) | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,223 @@ | |||
DelayGrain.csd | |||
Iain McCurdy, 2013 | |||
CONTROLS | |||
-------- | |||
Grain Size -- range of possible grain sizes (in seconds) | |||
Density -- grain density in grains per second (note that the addition of delay will disrupt the regularity of grains) | |||
Delay -- range of delay times possible (in seconds) | |||
Transpose -- range of transpositions (in semitones) | |||
Spread -- random panning spread of grains | |||
Amplitude Decay -- the larger this value, the more grains are delayed, the more their amplitudes will be lowered | |||
Reversal Proability -- probability of material within the grains being played backwards: 0 = all forwards | |||
1 = all backwards | |||
0.5 = 50:50 | |||
reversal might be hard to hear unless grain size is large | |||
Mix -- dry/wet mix | |||
Level -- output level (both dry and wet) | |||
Grain Env. -- sets the amplitude enveloping window for each grain | |||
Hanning: natural sounding soft attack, soft decay envelope | |||
Half-sine: like the hanning but with a slightly sharper attack and decay | |||
Decay 1: a percussive decay envelope with linear segments | |||
Decay 2: a percussive decay envelope with a exponential decay segment. Probably more natural sounding than 'Decay 1' but longer grain sizes may be necessary | |||
Gate: sharp attack and decay. Rather synthetic sounding. | |||
Delay Distr. -- random delay time distribution: exponential, linear or logarithmic. Effect are quite subtle but exponential might be most natural sounding. | |||
<Cabbage> | |||
form caption("Delay Grain") size(410, 540), pluginID("DGrn") | |||
hslider bounds( 5, 5, 400, 25), channel("GSize1"), range(0.005, 2, 0.01, 0.5, 0.0001) | |||
hslider bounds( 5, 20, 400, 25), channel("GSize2"), range(0.005, 2, 0.09, 0.5, 0.0001) | |||
label bounds(161, 39, 120, 11), text("G R A I N S I Z E"), fontcolour(105,105,255) | |||
hslider bounds( 5, 60, 400, 25), channel("Dens"), range(0.2, 2000, 50,0.5,0.001) | |||
label bounds(172, 79, 120, 11), text("D E N S I T Y"), fontcolour(105,105,255) | |||
hslider bounds( 5,100, 400, 25), channel("Dly1"), range(0, 5, 0.01, 0.5, 0.0001) | |||
hslider bounds( 5,115, 400, 25), channel("Dly2"), range(0, 5, 0.5, 0.5, 0.0001) | |||
label bounds(180,134, 120, 11), text("D E L A Y"), fontcolour(105,105,255) | |||
hslider bounds( 5,160, 400, 25), channel("Trns1"), range(-12, 12, 0, 1, 0.001) | |||
hslider bounds( 5,175, 400, 25), channel("Trns2"), range(-12, 12, 0, 1, 0.001) | |||
label bounds(162,194, 120, 11), text("T R A N S P O S E"), fontcolour(105,105,255) | |||
hslider bounds( 5,215, 400, 25), channel("PanSpread"), range(0, 1.00, 0.5,1,0.001) | |||
label bounds(158,234, 120, 11), text("P A N S P R E A D"), fontcolour(105,105,255) | |||
hslider bounds( 5,260, 400, 25), channel("AmpSpread"), range(0, 1.00, 0.5,1,0.001) | |||
label bounds(158,279, 120, 11), text("A M P S P R E A D"), fontcolour(105,105,255) | |||
hslider bounds( 5,300, 400, 25), channel("FiltSpread"), range(0, 1.00, 0.5,1,0.001) | |||
label bounds(147,319, 120, 11), text("F I L T E R S P R E A D"), fontcolour(105,105,255) | |||
hslider bounds( 5,340, 400, 25), channel("ampdecay"), range(0, 1.00, 0.5,1,0.001) | |||
label bounds(134,359, 220, 11), text("A M P L I T U D E D E C A Y"), fontcolour(105,105,255) | |||
hslider bounds( 5,380, 400, 25), channel("reverse"), range(0, 1.00, 0,1,0.001) | |||
label bounds(112,399, 220, 11), text("R E V E R S A L P R O B A B I L I T Y"), fontcolour(105,105,255) | |||
hslider bounds( 5,420, 400, 25), channel("mix"), range(0, 1.00, 1,1,0.001) | |||
label bounds(191,439, 120, 11), text("M I X"), fontcolour(105,105,255) | |||
hslider bounds( 5,460, 400, 25), channel("level"), range(0, 2.00, 1, 0.5, 0.001) | |||
label bounds(183,479, 120, 11), text("L E V E L"), fontcolour(105,105,255) | |||
combobox bounds( 10,506, 90, 17), channel("window"), value(1), text("Hanning","Half Sine","Decay 1","Decay 2","Gate") | |||
label bounds( 19,495, 90, 11), text("GRAIN ENV."), fontcolour(105,105,255) | |||
combobox bounds(110,506, 90, 17), channel("DlyDst"), value(1), text("Exp.","Lin.","Log") | |||
label bounds(119,495, 90, 11), text("DELAY DISTR."), fontcolour(105,105,255) | |||
label bounds( 10,528, 200, 11), text("Author: Iain McCurdy |2013|"), FontColour("grey") | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-dm0 -n | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 32 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
;Author: Iain McCurdy (2013) | |||
; window functions | |||
giwfn1 ftgen 0, 0, 131072, 9, .5, 1, 0 ; HALF SINE | |||
giwfn2 ftgen 0, 0, 131072, 7, 0, 3072, 1, 128000, 0 ; PERCUSSIVE - STRAIGHT SEGMENTS | |||
giwfn3 ftgen 0, 0, 131072, 16, 0, 3072,0,1, 128000,-2, 0 ; PERCUSSIVE - EXPONENTIAL SEGMENTS | |||
giwfn4 ftgen 0, 0, 131072, 7, 0, 3536, 1, 124000, 1, 3536, 0 ; GATE - WITH ANTI-CLICK RAMP UP AND RAMP DOWN SEGMENTS | |||
giwfn5 ftgen 0, 0, 131072, 7, 0, 128000,1, 3072, 0 ; REVERSE PERCUSSIVE - STRAIGHT SEGMENTS | |||
giwfn6 ftgen 0, 0, 131072, 5, .001, 128000,1, 3072, 0.001 ; REVERSE PERCUSSIVE - EXPONENTIAL SEGMENTS | |||
giwfn7 ftgen 0, 0, 131072, 20, 2, 1 ; HANNING WINDOW | |||
giwindows ftgen 0,0,8,-2,giwfn7,giwfn1,giwfn2,giwfn3,giwfn4 | |||
giBufL ftgen 0,0,1048576,-2,0 ; function table used for storing audio | |||
giBufR ftgen 0,0,1048576,-2,0 ; function table used for storing audio | |||
gigaussian ftgen 0,0,4096,20,6,1,1 ; a gaussian distribution | |||
gaGMixL,gaGMixR init 0 ; initialise stereo grain signal | |||
instr 1 ; grain triggering instrument | |||
kGSize1 chnget "GSize1" ; grain size limit 1 | |||
kGSize2 chnget "GSize2" ; grain size limit 2 | |||
kDens chnget "Dens" ; grain density | |||
kDly1 chnget "Dly1" ; delay time limit 1 | |||
kDly2 chnget "Dly2" ; delay time limit 2 | |||
kTrns1 chnget "Trns1" ; transposition in semitones | |||
kTrns2 chnget "Trns2" | |||
kPanSpread chnget "PanSpread" ; random panning spread | |||
kAmpSpread chnget "AmpSpread" ; random amplitude spread | |||
kFiltSpread chnget "FiltSpread" ; random filter spread | |||
kreverse chnget "reverse" ; reversal probability | |||
kampdecay chnget "ampdecay" ; amount of delay->amplitude attenuation | |||
kwindow chnget "window" ; window | |||
kDlyDst chnget "DlyDst" ; delay time distribution | |||
kmix chnget "mix" ; dry/wet mix | |||
klevel chnget "level" ; output level (both dry and wet signals) | |||
aL, aR ins ; read audio input | |||
outs aL*klevel*(1-kmix),aR*klevel*(1-kmix) | |||
/* WRITE TO BUFFER TABLES */ | |||
ilen = ftlen(giBufL) ; table length (in samples) | |||
aptr phasor sr/ilen ; phase pointer used to write to table | |||
aptr = aptr*ilen ; rescale pointer according to table size | |||
tablew aL, aptr, giBufL ; write audio to table | |||
tablew aR, aptr, giBufR ; write audio to table | |||
kptr downsamp aptr ; downsamp pointer to k-rate | |||
ktrig metro kDens ; grain trigger | |||
/* GRAIN SIZE */ | |||
kGSize random 0,1 ; random value 0 - 1 | |||
;kGSize expcurve kGSize,50 ; exponentially redistribute range 0 - 1 | |||
kMinGSize min kGSize1,kGSize2 ; find minimum grain size limit | |||
kMaxGSize max kGSize1,kGSize2 ; find maximum grain size limit | |||
kGSize scale kGSize,kMaxGSize,kMinGSize ; rescale random value according to minimum and maximum limits | |||
/* DELAY TIME */ | |||
kDly random 0,1 ; uniform random value 0 - 1 | |||
if kDlyDst=1 then ; if delay time distribution is exponential | |||
kDly expcurve kDly,100 ; exponential distrubution range 0 - 1 | |||
elseif kDlyDst=3 then ; .. or if logarithmic | |||
kDly logcurve kDly,100 ; exponential distrubution range 0 - 1 | |||
endif ; (other linear so do not alter) | |||
if kDly1=kDly2 then | |||
kMinDly = kDly1 ; delays can't be the same value!! | |||
kMaxDly = kDly2+0.001 | |||
else | |||
kMinDly min kDly1,kDly2 ; find minimum delay time limit | |||
kMaxDly max kDly1,kDly2 ; find maximum delay time limit | |||
endif | |||
ioffset = 1/sr ; delay offset (can't read at same location as write pointer!) | |||
kDly scale kDly,kMaxDly,kMinDly; distribution rescaled to match the user defined limits | |||
/* CALL GRAIN */ | |||
; p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 | |||
schedkwhen ktrig,0,0,2,kDly+0.0001,kGSize,kptr,kPanSpread,kreverse,kDly,kMinDly+ioffset,kMaxDly+0.0001,kampdecay,klevel*kmix,kwindow,kAmpSpread,kFiltSpread,kTrns1,kTrns2 ; call grain instrument | |||
endin | |||
instr 2 ; grain instrument | |||
iGStart = p4 ; grain start position (in samples) | |||
ispread = p5 ; random panning spread | |||
ireverse= (rnd(1)>p6?1:-1) ; decide fwd/bwd status | |||
iwindow table p12-1,giwindows ; amplitude envelope shape for this grain | |||
/* AMPLITUDE CONTROL */ | |||
idly = p7 ; delay time | |||
iMinDly = p8 ; minimum delay | |||
iMaxDly = p9 ; maximum delay | |||
iampdecay= p10 ; amount of delaytime->amplitude attenuation | |||
ilevel = p11 ; grain output level | |||
iAmpSpread = p13 | |||
iFiltSpread = p14 | |||
iRto divz idly-iMinDly , iMaxDly-iMinDly, 0 ; create delay:amplitude ration (safely) | |||
iamp = (1 - iRto) ^ 2 ; invert range | |||
iamp ntrpol 1,iamp,iampdecay ; mix flat amplitude to scaled amplitude according to user setting | |||
iRndAmp random 1-iAmpSpread, 1 ; random amplitude value for this grain | |||
iamp = iamp*iRndAmp ; apply random amplitude | |||
/* TRANSPOSITION */ | |||
iTrns random p15,p16 | |||
iRto = semitone(iTrns) | |||
if iRto>1 then | |||
iStrtOS = (iRto-1) * sr * p3 | |||
else | |||
iStrtOS = 0 | |||
endif | |||
aline line iGStart-iStrtOS,p3,iGStart-iStrtOS+(p3*iRto*sr*ireverse) ; grain pointer | |||
aenv oscili iamp,1/p3,iwindow ; amplitude envelope | |||
aL tablei aline,giBufL,0,0,1 ; read audio from table | |||
aR tablei aline,giBufR,0,0,1 ; read audio from table | |||
if iFiltSpread>0 then | |||
iRndCfOct random 14-(iFiltSpread*10),14 | |||
iRndCf = cpsoct(iRndCfOct) | |||
aL butlp aL,iRndCf | |||
aR butlp aR,iRndCf | |||
endif | |||
ipan random 0.5-(ispread*0.5),0.5+(ispread*0.5) ; random pan position for this grain | |||
gaGMixL = gaGMixL + (aL*aenv*ipan*ilevel) ; left channel mix added to global variable | |||
gaGMixR = gaGMixR + (aR*aenv*(1-ipan)*ilevel) ; right channel mix added to global variable | |||
endin | |||
instr 3 ; output instrument (always on) | |||
outs gaGMixL,gaGMixR ; send global audio signals to output | |||
clear gaGMixL,gaGMixR ; clear global audio variables | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [60*60*24*7] ; read audio, write to buffers, call grains. | |||
i 3 0 [60*60*24*7] ; output | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,142 @@ | |||
doppler.csd | |||
Written by Iain McCurdy, 2013 | |||
; CONTROLS | |||
; Input - select input: either left channel, right channel, or a mix of both channels | |||
; Shape - shape of the LFO moving the source: either sine, triangle, random spline OR manual | |||
note, if 'random' is chosen, 'speed' can take a little while to respond to changes | |||
made to the 'speed' control is the speed was previously slow | |||
If 'manual' is selected source position is controlled using the on screen slider | |||
; Room Size - effectively the dpeth of the doppler pitch modulating effect | |||
; Speed - speed of the LFO moving the source with respect to the mic. position | |||
; Depth - amplitude of the LFO moving the source | |||
; Smoothing - a smoothing filter applied to doppler pitch modulation. Its effect can be subtle. | |||
; Mix - a dry/wet mixer. Mixing the dry and wet signals can be used to create chorus effects. | |||
; Ampscale - amount of amplitude drop off as the source moves away from the source. | |||
Kind of like another room size control | |||
; Pan Depth - Amount of left-right movement in the output as the source swings past the microphone | |||
; Out Amp - scales the output signal | |||
; Mic.Position - Position of the microphone | |||
; Source Position- Location of the source (for display only unless 'manual' shape is chosen) | |||
<Cabbage> | |||
form caption("-oOo-"), size(610, 180), pluginID("dopp") | |||
label bounds(23, 10, 60,11), text("Input") | |||
combobox bounds(10, 23, 60,20), channel("input"), value(4), text("left","right","mixed","test") | |||
label bounds(23, 50, 60,11), text("Shape") | |||
combobox bounds(10, 63, 60,20), channel("shape"), value(1), text("sine","triangle","random","manual") | |||
rslider bounds( 75, 10, 80, 80), channel("RoomSize"), range(0.1,100,40,0.5,0.5), text("Room Size"), TextBox(1), colour( 45, 45, 45), trackercolour(200,200,200) | |||
rslider bounds(140, 10, 80, 80), channel("speed"), range(0,10,0.08,0.5,0.01), text("Speed"), TextBox(1), colour( 45, 45, 45), trackercolour(200,200,200) | |||
rslider bounds(205, 10, 80, 80), channel("depth"), range(0,0.5,0.5,0.5,0.01), text("Depth"), TextBox(1), colour( 45, 45, 45), trackercolour(200,200,200) | |||
rslider bounds(270, 10, 80, 80), channel("filtercutoff"), range(1,20,6,1,1), text("Smoothing"), TextBox(1), colour( 45, 45, 45), trackercolour(200,200,200) | |||
rslider bounds(335, 10, 80, 80), channel("ampscale"), range(0,1,0.98), text("Amp.Scale"), TextBox(1), colour( 45, 45, 45), trackercolour(200,200,200) | |||
rslider bounds(400, 10, 80, 80), channel("PanDep"), range(0,0.5,0.4), text("Pan Depth"), TextBox(1), colour( 45, 45, 45), trackercolour(200,200,200) | |||
rslider bounds(465, 10, 80, 80), channel("mix"), range(0,1,1), text("Mix"), TextBox(1), colour( 45, 45, 45), trackercolour(200,200,200) | |||
rslider bounds(530, 10, 80, 80), channel("OutAmp"), range(0,1,0.5), text("Level"), TextBox(1), colour( 45, 45, 45), trackercolour(200,200,200) | |||
hslider bounds( 10, 86,590, 40), channel("microphone"), range(0,1.00,0.5), text("Mic. Position"), TextBox(1), colour(100,100,100), trackercolour(200,200,200) | |||
hslider bounds( 10,111,590, 40), channel("source"), range(0,1.00,0.5), text("Source Position"), TextBox(1), colour(100,100,100), trackercolour(200,200,200) | |||
label bounds(22, 155,200,18), text("D O P P L E R"), fontcolour(100,100,100) | |||
label bounds(20, 153,200,18), text("D O P P L E R"), fontcolour(180,180,180) | |||
label bounds(232,160, 200, 12), text("Author: Iain McCurdy |2013|"), FontColour("grey") | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-dm0 -n -+rtmidi=null -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 ;SAMPLE RATE | |||
ksmps = 32 ;NUMBER OF AUDIO SAMPLES IN EACH CONTROL CYCLE | |||
nchnls = 2 ;NUMBER OF CHANNELS (2=STEREO) | |||
0dbfs = 1 ;MAXIMUM AMPLITUDE VALUE | |||
;AMPLITUDE SCALING CURVE | |||
giampcurve ftgen 0,0,131072,5,0.01,131072*0.5,1,131072*0.5,0.01 | |||
instr 1 | |||
gkinput chnget "input" | |||
gkRoomSize chnget "RoomSize" | |||
gkspeed chnget "speed" | |||
gkdepth chnget "depth" | |||
gkfiltercutoff chnget "filtercutoff" | |||
gkfiltercutoff init 6 | |||
gkampscale chnget "ampscale" | |||
gkPanDep chnget "PanDep" | |||
kmix chnget "mix" ;READ IN DRY/WET CROSSFADER WIDGET | |||
gkOutAmp chnget "OutAmp" | |||
gkmicrophone chnget "microphone" | |||
gkshape chnget "shape" | |||
gkshape init 1 | |||
/* INPUT */ | |||
aL,aR ins | |||
if gkinput=1 then | |||
asig = aL | |||
elseif gkinput=2 then | |||
asig = aR | |||
elseif gkinput=3 then | |||
asig = (aL+aR)*0.677 | |||
else | |||
;INPUT TONE=============================================(for testing) | |||
asig vco2 .5, 300 ;GENERATE TONE | |||
asig tone asig, 1200 ;LOW PASS FILTER TO SOFTEN THE TONE | |||
;======================================================= | |||
endif | |||
;LFO(modulates source position)========================= | |||
ktrig changed gkshape ;IF I-RATE VARIABLE SLIDER IS CHANGED GENERATE A '1' | |||
if ktrig=1 then ;IF TRIGGER IS '1'... | |||
reinit RESTART_LFO ;BEGIN A REINITIALISATION PASS FROM LABEL 'UPDATE' | |||
endif ;END OF THIS CONDITIONAL BRANCH | |||
RESTART_LFO: ;LABEL CALLED 'UPDATE' | |||
if i(gkshape)=3 then ;IF 'RANDOM' SHAPE IS SELECTED... | |||
gksource rspline 0.5-gkdepth, 0.5+gkdepth, gkspeed,gkspeed*2 | |||
elseif i(gkshape)=4 then ;IF 'MANUAL' SHAPE IS SELECTED... | |||
gksource chnget "source" ;READ SOURCE POSITION FROM SLIDER | |||
else | |||
gksource lfo gkdepth, gkspeed, i(gkshape)-1 ;LFO | |||
gksource = gksource + 0.5 ;OFFSET INTO THE POSITIVE DOMAIN | |||
endif | |||
rireturn | |||
chnset gksource,"source" | |||
;====================================================== | |||
kporttime linseg 0, 0.001, 0.1 ;RAMPING UP PORTAMENTO TIME VARIABLE | |||
;DOPPLER================================================ | |||
ispeedofsound init 340.29 ;SPEED OF SOUND DEFINED | |||
ksource portk gksource, kporttime ;SMOOTH SOURCE POSITION MOVEMENT | |||
kmicrophone portk gkmicrophone, kporttime ;SMOOTH MICROPHOPNE POSITION MOVEMENT | |||
ktrig changed gkfiltercutoff ;IF I-RATE VARIABLE SLIDER IS CHANGED GENERATE A '1' | |||
if ktrig=1 then ;IF TRIGGER IS '1'... | |||
reinit UPDATE ;BEGIN A REINITIALISATION PASS FROM LABEL 'UPDATE' | |||
endif ;END OF THIS CONDITIONAL BRANCH | |||
UPDATE: ;LABEL CALLED 'UPDATE' | |||
kdisp limit ksource-(kmicrophone-0.5), 0, 1 ;CALCULATE DISPLACEMENT (DISTANCE) BETWEEN SOURCE AND MICROPHONE AND LIMIT VALUE TO LIE BETWEEN ZERO AND 1 | |||
kamp table kdisp, giampcurve,1 ;READ AMPLITUDE SCALING VALUE FROM TABLE | |||
kamp ntrpol 1, kamp, gkampscale ;CALCULATE AMOUNT OF AMPLITUDE SCALING DESIRED BY THE USER FROM THE ON SCREEN SLIDER | |||
aout doppler asig*kamp, ksource*gkRoomSize, kmicrophone*gkRoomSize, ispeedofsound, i(gkfiltercutoff) ;APPLY DOPPLER EFFECT | |||
rireturn ;RETURN FROM REINITIALISATION PASS | |||
kpan = (gksource<gkmicrophone?0.5+gkPanDep:0.5-gkPanDep) ;CALCULATE PAN VALUE ACCORDING TO SOURCE AND MIC POSITION | |||
kpan portk kpan, kporttime ;APPLY PORTAMENTO SMOOTHING TO PAN POSITION VALUE | |||
aL ntrpol asig,aout*sqrt(kpan)*gkOutAmp,kmix ;DRY/WET MIX LEFT CHANNEL | |||
aR ntrpol asig,aout*sqrt(1-kpan)*gkOutAmp,kmix ;DRY/WET MIX RIGHT CHANNEL | |||
outs aL, aL ;SEND AUDIO TO OUTPUTS AND APPLY PANNING | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 3600 ;DUMMY SCORE EVENT - PERMITS REAL-TIME PERFORMANCE FOR 1 HOUR | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,165 @@ | |||
DopplerSpin.csd | |||
Written by Iain McCurdy, 2013 | |||
; CONTROLS | |||
; Frequency of Rotation -- Frequency of the spinning | |||
; Central/Edge -- Listening position in relation to the circulat motion. Can be thought of as a control for the amount of amplitude modulation. | |||
; Orientation (radians) -- direction of listeing | |||
; Panning Width -- amount of panning directionality in the modulation | |||
; Doppler Depth -- amount of doppler effect (circle size). | |||
; (Reverb) Scaling -- a dry/wet mixer. Mixing the dry and wet signals can be used to create chorus effects. | |||
; (Reverb) Time -- amount of amplitude drop off as the source moves away from the source. | |||
; (Reverb) Damping -- Amount of left-right movement in the output as the source swings past the microphone | |||
; Mix -- scales the output signal | |||
; Level -- Output Level | |||
; Auto-Frequency -- If this button is activated the frequency of the spinning moves randomly between -Frequency of Rotation and +Frequency of Rotation | |||
; This example uses three LFOs to create the effect of a sound moving in a circle around the listener. | |||
; The three parameters controlled by these LFOs are amplitude, panning and delay time. | |||
; The modulation of the delay time also results in a modulation of pitch which is sometimes referred to as the Doppler effect. | |||
; Note that in this example the 'vdelayxw' opcode is used to implement the delay and doppler shift. | |||
; This opcode is unique in that the delay time of the write pointer rather than the read pointer is modulated. | |||
; This is appropriate here as it is the sound source that is moving, not the listener. | |||
; Crucial to this effect is that that all three LFOs share the same frequency value. | |||
; Negative frequency values are also allowed - this would represent a change in direction of the source sounds motion around us. | |||
; Also of crucial importance is the phase relationship between the three LFOs as this defines exactly where the sound source is in relation to the listener. | |||
; The panning LFO should be at its points of minimum rate of change when the sound source is moving parallel to the direction in which the listener is facing, i.e. directly to the left or to the right of the listener. | |||
; The delay time LFO (pitch modulation/doppler) should be at its points of minimum rate of change when the sound source is moving perpendicular to the direction in which the listener is facing, i.e. directly in front of or behind the listener. | |||
; The phase difference between these two LFOs is either 90 or 270 degrees, depending on whether the source sound is moving in a clockwise or anticlockwise direction around us. | |||
; Amplitude modulation comes into play whenever we are not listening from the centre of the circle of motion. | |||
; The close to the edge of the circle we are the greater the amount of amplitude modulation we will experience. | |||
; If the amplitude modulation is extreme then the circle of the source sound's motion must be extremely large. The phase of the amplitude modulation LFO is also adjustable ('Orientation' slider - | |||
; this define which edge of the circle we are closest to, e.g. upper, lower, left, right etc. It is probably best to always include at least a small amount of amplitude modulation as we perceive sounds directly to our left or to our right to be | |||
; louder, even if they remain equidistant from us. In this case the amplitude LFO phase ('Orientation') should be 0.5 (radians). | |||
; The waveform for all three LFOs is a sine wave. | |||
; This defines the object's motion as being circular. | |||
; If we were to use a different waveform this would model non-circular motion. | |||
; There is interesting potential in experimentation in this direction with this example. | |||
; Finally as the moving signal becomes more distant, i.e. when the amplitude scaling function is at its minimum, a reverberated version of the signal can become more evident. | |||
; The degree to which this is present can be scaled using the 'Reverb Scaling' slider. | |||
<Cabbage> | |||
form caption("Doppler Spin"), size(700,265), pluginID("SDop") | |||
;label bounds(23, 10, 60,11), text("Input") | |||
label bounds( 10, 4,120, 15), text("i n p u t"), fontcolour("white") | |||
combobox bounds(10, 30, 60,20), channel("input"), value(1), text("left","right","mixed","test") | |||
line bounds( 85, 5, 2, 70), colour("Grey") | |||
label bounds(185, 4,120, 15), text("r e v e r b"), fontcolour("white") | |||
checkbox bounds(100, 33,110, 20), text("Reverb On/Off") channel("RvbOnOff"), FontColour("White"), colour("lime") value(1) | |||
rslider bounds(210, 23, 55, 55), channel("RvbScaling"), range(0,1.000,0.3,1,0.001), text("Scaling"), TextBox(0), colour( 95, 45,115), trackercolour( 95, 45,115) | |||
rslider bounds(270, 23, 55, 55), channel("RvbTime"), range(0.3,0.990,0.7,1,0.001), text("Time"), TextBox(0), colour( 85, 45,125), trackercolour( 85, 45,125) | |||
rslider bounds(330, 23, 55, 55), channel("RvbFilt"), range(20,20000,4000,0.5,0.001), text("Damping"), TextBox(0), colour( 75, 45,135), trackercolour( 75, 45,135) | |||
line bounds(390, 5, 2, 70), colour("Grey") | |||
label bounds(411, 4,120, 15), text("o u t p u t"), fontcolour("white") | |||
rslider bounds(400, 23, 55, 55), channel("mix"), range(0,1.000,1,1,0.001), text("Mix"), TextBox(0), colour( 65, 45,145), trackercolour( 65, 45,145) | |||
rslider bounds(460, 23, 55, 55), channel("OutGain"), range(0,1.000,0.7,1,0.001), text("Level"), TextBox(0), colour( 55, 45,155), trackercolour( 65, 45,145) | |||
line bounds(520, 5, 2, 70), colour("Grey") | |||
checkbox bounds(530, 33,110, 20), text("Auto-Frequency") channel("AutoFreq"), FontColour("White"), colour("lime") value(0) | |||
hslider bounds( 5, 80,690, 35), channel("freq"), range(-10,10.00,0.2,1,0.0001), text("Frequency of Rotation"), TextBox(1), colour(145, 45, 65), trackercolour(145, 45, 65) | |||
hslider bounds( 5,110,690, 35), channel("AmpDepth"), range(0,1.000,0.7,1,0.001), text("Central/Edge"), TextBox(1), colour(135, 45, 75), trackercolour(135, 45, 75) | |||
hslider bounds( 5,140,690, 35), channel("AmpPhase"), range(0,1.000,0.5,1,0.001), text("Orientation [radians]"), TextBox(1), colour(125, 45, 85), trackercolour(125, 45, 85) | |||
hslider bounds( 5,170,690, 35), channel("PanDepth"), range(0,1.000,1,1,0.001), text("Panning Width"), TextBox(1), colour(115, 45, 95), trackercolour(115, 45, 95) | |||
hslider bounds( 5,200,690, 35), channel("DopDep"), range(0,0.030,0.003,0.5,0.000001), text("Doppler Depth"), TextBox(1), colour(105, 45,105), trackercolour(105, 45,105) | |||
label bounds( 5,247, 200, 12), text("Author: Iain McCurdy |2013|"), FontColour("grey") | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-dm0 -n -+rtmidi=null -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 ;SAMPLE RATE | |||
ksmps = 32 ;NUMBER OF AUDIO SAMPLES IN EACH CONTROL CYCLE | |||
nchnls = 2 ;NUMBER OF CHANNELS (2=STEREO) | |||
0dbfs = 1 ;MAXIMUM AMPLITUDE VALUE | |||
gisine ftgen 0,0,131072,10,1 | |||
instr 1 | |||
gkinput chnget "input" | |||
kfreq chnget "freq" | |||
kAmpDepth chnget "AmpDepth" | |||
kAmpPhase chnget "AmpPhase" | |||
kPanDepth chnget "PanDepth" | |||
kDopDep chnget "DopDep" | |||
kRvbScaling chnget "RvbScaling" | |||
kRvbTime chnget "RvbTime" | |||
kRvbFilt chnget "RvbFilt" | |||
kmix chnget "mix" | |||
kOutGain chnget "OutGain" | |||
kRvbOnOff chnget "RvbOnOff" | |||
kAutoFreq chnget "AutoFreq" | |||
/* INPUT */ | |||
aL,aR ins | |||
if gkinput=1 then | |||
asig = aL | |||
elseif gkinput=2 then | |||
asig = aR | |||
elseif gkinput=3 then | |||
asig = (aL+aR)*0.677 | |||
else | |||
;INPUT TONE=============================================(for testing) | |||
asig vco2 .5, 300 ;GENERATE TONE | |||
asig tone asig, 1200 ;LOW PASS FILTER TO SOFTEN THE TONE | |||
;======================================================= | |||
endif | |||
if kAutoFreq=1 then | |||
kfreq jspline kfreq,1,4 | |||
endif | |||
kporttime linseg 0,0.001,0.1 ;CREATE 'PORTAMENTO TIME'. A FUNCTION THAT RISES QUICKLY FROM ZERO TO A HELD VALUE. | |||
kAmpPhase portk kAmpPhase, kporttime ;APPLY PORTAMENTO TO gkAmpPhase. CREATE NEW OUTPUT VARIABLE kAmpPhase (GLOBAL VARIABLES CAN'T BE BOTH INPUT AND OUTPUT) | |||
kDopDep portk kDopDep, kporttime ;APPLY PORTAMENTO TO gkDopDep. CREATE NEW OUTPUT VARIABLE kDopDep (GLOBAL VARIABLES CAN'T BE BOTH INPUT AND OUTPUT) | |||
aAmp osciliktp kfreq, gisine, kAmpPhase ;AN LFO DEFINES A VARIABLE USED TO MODULATE AMPLITUDE (NOTE: VARIABLE PHASE). THIS MODELS THE LOCATION WITHIN THE CIRCLE FROM WHICH WE ARE LISTENING. NO AMPLITUDE MODULATION REPRESENT REPRESENTS OUR LISTENING POSITION BEING EXACTLY CENTRAL, MAXIMUM MODULATION REPRESENTS US BEING NEAR TO THE EDGE OF A LARGE CIRCLE. THE CONTROL OVER PHASE OF THIS LFO REPRESENTS WHICH EDGE WE ARE CLOSER TO. | |||
aAmp = (aAmp * 0.5 * kAmpDepth) + 0.5 ;RESCALE AND OFFSET AMPLITUDE MODULATION LFO | |||
aPan oscili (kPanDepth * 0.5), kfreq, gisine, 0.75 ;AN LFO DEFINES A VARIABLE FOR PANNING CONTROL - I.E. WHETHER SOUND IS CURRENTLY TO OUT LEFT OR TO OUT RIGHT. NOTE THAT PHASE IS 0.75 AND THEREFORE 0.75 RADIANS (OR 270 DEGREES OUT OF PHASE) WITH THE DELAY MODULATION | |||
aPan = aPan + 0.5 ;OFFSET PANNING LFO | |||
iMaxDelay = 1 ;DEFINE A VARIABLE THAT WILL BE USE FOR 'MAXIMUM DELAY TIME' (BUFFER LENGTH) | |||
aDelTim oscili kDopDep, kfreq, gisine, 0 ;AN LFO DEFINES A VARIABLE FOR DELAY TIME (NOTE PHASE AT ZERO) | |||
aDelTim = aDelTim + kDopDep ;DELAY TIME VARIABLE 'aDelay' IS OFFSET TO STAY WITHIN THE POSITIVE DOMAIN | |||
;vdelayxw IS USED FOR THE DELAY READ/WRITE AS IT MODULATES THE WRITE POINTER RATHER THAN THE READ POINTER. | |||
;THIS IS MORE APPROPRIATE IN THIS EXAMPLE AS THE SOURCE IS MOVING BUT THE POINT OF LISTENING IS STATIONARY | |||
aDelTap vdelayxw asig, aDelTim, iMaxDelay, 16 | |||
aL, aR pan2 aDelTap, aPan, 1 ;APPLY PANNING TO SIGNAL OUTPUT FROM DELAY USING pan2 OPCODE. CREATE A NEW | |||
aL = aL * (aAmp^0.5) ;APPLY AMPLITUDE MODULATION (CREATE A NEW AUDIO SIGNAL - DRY (UN-REVERBERATED) SIGNAL) | |||
aR = aR * (aAmp^0.5) ;APPLY AMPLITUDE MODULATION (CREATE A NEW AUDIO SIGNAL - DRY (UN-REVERBERATED) SIGNAL) | |||
if kRvbOnOff=1 then | |||
aRvbL, aRvbR reverbsc aL, aR, kRvbTime, kRvbFilt ;REVERB (UNAFFECTED BY AMPLITUDE MODULATION) | |||
aL = (aL+(aRvbL*kRvbScaling)) | |||
aR = (aR+(aRvbL*kRvbScaling)) | |||
endif | |||
aL ntrpol asig,aL,kmix | |||
aR ntrpol asig,aR,kmix | |||
outs aL * kOutGain , aR * kOutGain ;SEND AUDIO TO OUTPUTS. MIX DRY AND REVERBERATED SIGNALS. | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [3600*24*7*52] | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,351 @@ | |||
; FilterLFO.csd | |||
; Author: Iain McCurdy (2013) | |||
; INTRODUCTION | |||
; ------------ | |||
; multimode filter with a 2 multimode LFOs on the cutoff frequency | |||
; additional controls for specific filter models are accessed using the pop-up buttons | |||
; The outputs of both LFOs are added to the main cutoff frequency (Freq.) | |||
; LFO amplitude are in 'octaves' | |||
; LFO rates are in beats per minute | |||
; 'Smoothing' adds a small amount of portamento to changes in cutoff frequency | |||
; this can be useful in square wave-type modulations | |||
; 'Type' is ignored when 'moogladder', 'resonz', 'phaser2' or 'resony' are chosen as 'model' | |||
; some subtlety is required when using the more complex filter models (e.g. phaser2, resony) | |||
; often low LFO amplitudes and rate work better with these | |||
; CONTROL | |||
; ------- | |||
; Freq. -- global manual frequency control. Like an LFO offset value. | |||
; Res. -- resonance control. Affects moogladder, resonz and phaser2 models | |||
; Mix -- dry/wet (filtered/unfiltered) mix | |||
; Level -- global output level control | |||
; Model -- (drop down menu) filter model | |||
; Type -- Filter type: highpass/lowpass - affects tone, butterworth, cl-butterworth, cl-Chebychev models only | |||
; Input -- choose between live input and (for testing) sawtooth tone and pink noise | |||
; Resync -- resync. (i.e. restart) the two LFOs | |||
; clfilt/phaser2/resony -- pop-up panels with further controls for these models | |||
; LFO Type -- sine, triangle, square (bipolar), square (unipolar), sawtooth up, sawtooth down, random sample & hold and random spline | |||
; LFO Amp -- amplitude of the LFOs | |||
; LFO Rate -- rates of the LFOs in beats per minute | |||
; Link Rates -- when this switch is activate Rate controls for the two LFOs will be linked | |||
; LFO Rate Div. -- integer division of Rate control value (unaffected by 'Link Rates' setting) | |||
; Smooth -- a small amount of smoothing can be appied to the LFO to smooth abrupt changes in value (may be useful and 'square' and 'rand.S&H' type modulations | |||
<Cabbage> | |||
form caption("Filter LFO") size(790,170), pluginID("FLFO") | |||
image pos(0, 0), size(790,170), colour(0,0,0,170), shape("rounded"), outline("white"), line(4) | |||
rslider bounds( 10, 11, 70, 70), text("Freq."), colour( 30, 30, 30), trackercolour("black"), fontcolour("white"), channel("cf"), range(1, 20000, 300, 0.333) | |||
rslider bounds( 75, 11, 70, 70), text("Res."), colour( 30, 30, 30), trackercolour("black"), fontcolour("white"), channel("res"), range(0,1.00,0.75) | |||
rslider bounds(140, 11, 70, 70), text("Mix"), colour( 30, 30, 30), trackercolour("black"), fontcolour("white"), channel("mix"), range(0,1.00,1) | |||
rslider bounds(205, 11, 70, 70), text("Level"), colour( 30, 30, 30), trackercolour("black"), fontcolour("white"), channel("level"), range(0, 1.00, 0.2) | |||
combobox bounds( 20, 90, 100, 18), channel("model"), value(6), text("Tone","Butterworth","Moogladder","cl-Butterworth","cl-Chebychev I","resonz","phaser2","resony") | |||
label bounds( 44,108, 80, 12), text("MODEL"), fontcolour("white") | |||
combobox bounds(140, 90, 100, 18), channel("type"), value(1), text("Low-pass","High-pass") | |||
label bounds(169,108, 80, 12), text("TYPE"), fontcolour("white") | |||
combobox bounds( 20,127,100, 18), channel("input"), value(2), text("Live","Tone","Noise") | |||
label bounds( 46,145,100, 12), text("INPUT"), fontcolour("white") | |||
button bounds(140,127, 80, 18), colour("Green"), text("RESYNC.", "RESYNC."), channel("resync"), value(1) | |||
; controls pertaining to the setup of clfilt accessed in a pop-up panel. | |||
groupbox bounds(280, 15,150, 90), colour("black"), plant("clfilt"), line(0), popup(1);, fontcolour("white") | |||
{ | |||
rslider bounds( 5, 16, 70, 70), text("N.Poles"), colour( 30 , 30, 30), trackercolour("black"), FontColour("white"), channel("npol"), range(2, 80, 2, 1, 2) | |||
rslider bounds( 75, 16, 70, 70), text("Ripple"), colour( 30 , 30, 30), trackercolour("black"), FontColour("white"), channel("pbr"), range(0.1, 50.00, 1, 0.5, 0.001) | |||
} | |||
; controls pertaining to the setup of phaser2 accessed in a pop-up panel. | |||
groupbox bounds(280, 55,315, 90), colour("black"), plant("phaser2"), line(0), popup(1);, fontcolour(white) | |||
{ | |||
rslider bounds( 5, 16, 70, 70), text("Q"), channel("q"), range(0.0001,4,3), colour( 30 , 30, 30), trackercolour("black"), FontColour("white") | |||
rslider bounds( 75, 16, 70, 70), text("N.Ords."), channel("ord"), range(1, 256, 8, 0.5,1), colour( 30 , 30, 30), trackercolour("black"), FontColour("white") | |||
label bounds(160, 20, 60,12), text("Sep. Mode") | |||
combobox bounds(150, 34, 80,25), channel("mode"), size(100,50), value(1), text("Equal", "Power"), colour( 30 , 30, 30), trackercolour("black"), FontColour("white") | |||
rslider bounds(240, 16, 70, 70), text("Separation"), channel("sep"), range(-3, 3.00, 0.9), colour( 30 , 30, 30), trackercolour("black"), FontColour("white") | |||
} | |||
; controls pertaining to the setup of resony accessed in a pop-up panel. | |||
groupbox bounds(280, 95,565, 90), colour("black"), plant("resony"), line(0), popup(1);, fontcolour(white) | |||
{ | |||
rslider bounds( 5, 16, 70, 70), text("BW."), fontcolour("white"), channel("bw"), range(0.01, 1000, 13, 0.5), colour( 30 , 30, 30), trackercolour("black") | |||
rslider bounds( 75, 16, 70, 70), text("Num."), fontcolour("white"), channel("num"), range(1, 80, 10, 1,1), colour( 30 , 30, 30), trackercolour("black") | |||
rslider bounds(145, 16, 70, 70), text("Sep.oct."), fontcolour("white"), channel("sepR"), range(-11, 11, 2), colour( 30 , 30, 30), trackercolour("black") | |||
rslider bounds(215, 16, 70, 70), text("Sep.semi."), fontcolour("white"), channel("sepR2"), range(-48, 48, 24,1,1), colour( 30 , 30, 30), trackercolour("black") | |||
combobox bounds(285, 10,130, 70), caption("Scaling Mode"), channel("scl"), value(2), text("none", "peak response", "RMS") | |||
combobox bounds(425, 10,130, 70), caption("Separation Mode"), channel("sepmode"), value(1), text("octs.total", "hertz", "octs.adjacent") | |||
} | |||
;checkbox bounds(400, 50,100, 15), text("Balance") channel("balance"), FontColour("white"), colour("yellow") value(0) | |||
line bounds(390, 10, 2,150), colour("Grey") | |||
;LFO | |||
label bounds(405, 11, 45, 17), text("LFO 1"), fontcolour("white") | |||
combobox bounds(405, 50, 100, 18), channel("LFOtype"), value(3), text("Sine","Triangle","Square[bi]","Square[uni]","Saw Up","Saw Down","Rand.S&H","Rand.Spline") | |||
label bounds(425, 54, 80, 12), text("LFO-Shape"), fontcolour("white") | |||
rslider bounds(515, 11, 70, 70), text("Amp"), colour( 30, 30 ,30), trackercolour("black"), fontcolour("white"), channel("LFOamp"), range(0, 9.00, 0.67) | |||
rslider bounds(580, 11, 70, 70), text("Rate"), colour( 30, 30 ,30), trackercolour("black"), fontcolour("white"), channel("LFOBPM"), range(0, 480, 60, 1, 1) | |||
rslider bounds(645, 11, 70, 70), text("Rate Div."),colour( 30, 30 ,30), trackercolour("black"), fontcolour("white"), channel("LFOBPMDiv"), range(1, 64, 1, 1, 1) | |||
rslider bounds(710, 11, 70, 70), text("Smoothing"),colour( 30, 30 ,30), trackercolour("black"), fontcolour("white"), channel("LFOport"), range(0, 0.1, 0.005, 0.25, 0.000001) | |||
checkbox bounds(405, 31, 80, 12), text("Link Rates"), channel("RateLink"),colour(yellow), fontcolour("white"), value(0) | |||
;LFO2 | |||
label bounds(405, 91, 45, 17), text("LFO 2"), fontcolour("white") | |||
combobox bounds(405,130, 100, 18), channel("LFOtype2"), value(8), text("Sine","Triangle","Square[bi]","Square[uni]","Saw Up","Saw Down","Rand.S&H","Rand.Spline") | |||
label bounds(425,134, 80, 12), text("Shape"), fontcolour("white") | |||
rslider bounds(515, 91, 70, 70), text("Amp"), colour( 30, 30 ,30), trackercolour("black"), fontcolour("white"), channel("LFOamp2"), range(0, 9.00, 2.5) | |||
rslider bounds(580, 91, 70, 70), text("Rate"),colour( 30, 30 ,30), trackercolour("black"), fontcolour("white"), channel("LFOBPM2"), range(0, 480, 1, 1, 1) | |||
rslider bounds(645, 91, 70, 70), text("Rate Div."),colour( 30, 30 ,30), trackercolour("black"), fontcolour("white"), channel("LFOBPMDiv2"), range(1, 64, 1, 1, 1) | |||
rslider bounds(710, 91, 70, 70), text("Smoothing"),colour( 30, 30 ,30), trackercolour("black"), fontcolour("white"), channel("LFOport2"), range(0, 0.1, 0.001, 0.25, 0.000001) | |||
checkbox bounds(405,111, 80, 12), text("Link Rates"), channel("RateLink"),colour(yellow), fontcolour("white"), value(0) | |||
label bounds(220,150, 200, 12), text("Author: Iain McCurdy |2013|"), FontColour("grey") | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 ;SAMPLE RATE | |||
ksmps = 32 ;NUMBER OF AUDIO SAMPLES IN EACH CONTROL CYCLE | |||
nchnls = 2 ;NUMBER OF CHANNELS (2=STEREO) | |||
0dbfs = 1 | |||
;Author: Iain McCurdy (2013) | |||
opcode resony2,a,akkikii | |||
ain, kbf, kbw, inum, ksep , isepmode, iscl xin | |||
;IF 'Octaves (Total)' MODE SELECTED... | |||
if isepmode==0 then | |||
irescale divz inum,inum-1,1 ;PREVENT ERROR IF NUMBER OF FILTERS = ZERO | |||
ksep = ksep * irescale ;RESCALE SEPARATION | |||
;IF 'Hertz' MODE SELECTED... | |||
elseif isepmode==1 then | |||
inum = inum + 1 | |||
ksep = inum | |||
;IF 'Octaves (Adjacent)' MODE SELECTED... | |||
elseif isepmode==2 then | |||
irescale divz inum,inum-1,1 ;PREVENT ERROR IF NUMBER OF FILTERS = ZERO | |||
ksep = ksep * irescale ;RESCALE SEPARATION | |||
ksep = ksep * (inum-1) ;RESCALE SEPARATION INTERVAL ACCORDING TO THE NUMBER OF FILTERS CHOSEN | |||
isepmode = 0 | |||
endif | |||
aout resony ain, kbf, kbw, inum, ksep , isepmode, iscl, 0 | |||
xout aout | |||
endop | |||
instr 1 | |||
kporttime linseg 0,0.001,1 | |||
kcf chnget "cf" ; | |||
kcf portk kcf,kporttime*0.05 | |||
kres chnget "res" ; | |||
kmodel chnget "model" ; | |||
ktype chnget "type" ; | |||
kresync chnget "resync" ; | |||
kmix chnget "mix" ; | |||
klevel chnget "level" ; | |||
kpbr chnget "pbr" ; | |||
kpbr init 1 | |||
knpol chnget "npol" ; | |||
knpol init 2 | |||
kq chnget "q" ; | |||
kmode chnget "mode" ; | |||
kmode init 1 | |||
kmode init i(kmode)-1 | |||
ksep chnget "sep" ; | |||
kfeedback chnget "feedback" ; | |||
kord chnget "ord" ; | |||
;resony | |||
kbw chnget "bw" | |||
knum chnget "num" | |||
ksepR chnget "sepR" | |||
ksepR2 chnget "sepR2" | |||
ksepmode chnget "sepmode" | |||
ksepmode = ksepmode - 1 | |||
ksepmode init 1 | |||
kscl chnget "scl" | |||
kscl = kscl - 1 | |||
kscl init 1 | |||
;kbalance chnget "balance" ; | |||
kLFOtype chnget "LFOtype" | |||
kLFOamp chnget "LFOamp" | |||
kLFOamp portk kLFOamp, kporttime*0.05 | |||
kLFOBPM chnget "LFOBPM" | |||
kLFOBPMDiv chnget "LFOBPMDiv" | |||
kLFOcps = (kLFOBPM*4)/(60*kLFOBPMDiv) | |||
kLFOport chnget "LFOport" | |||
kLFOtype2 chnget "LFOtype2" | |||
kLFOamp2 chnget "LFOamp2" | |||
kLFOamp2 portk kLFOamp2, kporttime*0.05 | |||
kLFOBPM2 chnget "LFOBPM2" | |||
kLFOBPMDiv2 chnget "LFOBPMDiv2" | |||
kLFOcps2 = (kLFOBPM2*4)/(60*kLFOBPMDiv2) | |||
kLFOport2 chnget "LFOport2" | |||
kRateLink chnget "RateLink" | |||
if kRateLink=1 then | |||
ktrig1 changed kLFOBPM | |||
ktrig2 changed kLFOBPM2 | |||
if ktrig1=1 then | |||
chnset kLFOBPM,"LFOBPM2" | |||
elseif ktrig2=1 then | |||
chnset kLFOBPM2,"LFOBPM" | |||
endif | |||
endif | |||
/* INPUT */ | |||
kinput chnget "input" | |||
if kinput=1 then | |||
aL,aR ins | |||
elseif kinput=2 then | |||
aL vco2 0.2, 150 | |||
aR = aL | |||
else | |||
aL pinkish 0.2 | |||
aR pinkish 0.2 | |||
endif | |||
; RETRIGGERING FOR I-RATE VARIABLE | |||
kLFOtype init 1 | |||
kLFOtype2 init 1 | |||
ktrig changed knpol,kpbr,kLFOtype,kLFOtype2,kmodel,ktype,kord,kmode, kscl, knum, ksepmode, kresync,kLFOBPMDiv,kLFOBPMDiv2,kRateLink | |||
if ktrig==1 then | |||
reinit UPDATE | |||
endif | |||
UPDATE: | |||
; LFO | |||
if i(kLFOtype)==7 then | |||
klfo randomh -kLFOamp, kLFOamp, kLFOcps | |||
elseif i(kLFOtype)==8 then | |||
klfo jspline kLFOamp, kLFOcps, kLFOcps*5 | |||
else | |||
klfo lfo kLFOamp, kLFOcps, i(kLFOtype)-1 | |||
endif | |||
klfo portk klfo,kporttime*kLFOport | |||
;kcf limit kcf * octave(klfo),20,sr/2 | |||
; LFO2 | |||
if i(kLFOtype2)==7 then | |||
klfo2 randomh -kLFOamp2, kLFOamp2, kLFOcps2 | |||
elseif i(kLFOtype2)==8 then | |||
klfo2 jspline kLFOamp2, kLFOcps2, kLFOcps2*5 | |||
else | |||
klfo2 lfo kLFOamp2, kLFOcps2, i(kLFOtype2)-1 | |||
endif | |||
klfo2 portk klfo2,kporttime*kLFOport2 | |||
kcf limit kcf * octave(klfo) * octave(klfo2),20,sr/2 | |||
; FILTER MODEL SELECT | |||
if i(kmodel)==1 then | |||
if i(ktype)==1 then ; tone | |||
aFiltL tone aL, kcf | |||
aFiltR tone aR, kcf | |||
else | |||
aFiltL atone aL, kcf | |||
aFiltR atone aR, kcf | |||
endif | |||
elseif i(kmodel)==2 then ; butterworth | |||
if i(ktype)==1 then | |||
aFiltL butlp aL, kcf | |||
aFiltR butlp aR, kcf | |||
else | |||
aFiltL buthp aL, kcf | |||
aFiltR buthp aR, kcf | |||
endif | |||
elseif i(kmodel)==3 then ; moogladder | |||
kres scale kres,0.95,0 | |||
aFiltL moogladder aL,kcf,kres | |||
aFiltR moogladder aR,kcf,kres | |||
elseif i(kmodel)==4 then ; cl-butterworth | |||
if i(ktype)==1 then | |||
aFiltL clfilt aL, kcf, 0, i(knpol) | |||
aFiltR clfilt aR, kcf, 0, i(knpol) | |||
else | |||
aFiltL clfilt aL, kcf, 1, i(knpol) | |||
aFiltR clfilt aR, kcf, 1, i(knpol) | |||
endif | |||
elseif i(kmodel)==5 then ; cl-chebychev I | |||
if i(ktype)==1 then | |||
aFiltL clfilt aL, kcf, 0, i(knpol), 1, i(kpbr) | |||
aFiltR clfilt aR, kcf, 0, i(knpol), 1, i(kpbr) | |||
else | |||
aFiltL clfilt aL, kcf, 1, i(knpol), 1, i(kpbr) | |||
aFiltR clfilt aR, kcf, 1, i(knpol), 1, i(kpbr) | |||
endif | |||
elseif i(kmodel)==6 then ; resonz | |||
kres logcurve kres,4 | |||
kbw scale 1-kres,3,0.1 | |||
aFiltL resonz aL, kcf, kcf*kbw, 1 | |||
aFiltR resonz aR, kcf, kcf*kbw, 1 | |||
elseif i(kmodel)==7 then ; phaser2 | |||
kfeedback scale kres,0.99,0 | |||
aFiltL phaser2 aL, kcf, kq, kord, kmode, ksep, kfeedback ; PHASER2 IS APPLIED TO THE LEFT CHANNEL | |||
aFiltR phaser2 aR, kcf, kq, kord, kmode, ksep, kfeedback ; PHASER1 IS APPLIED TO THE RIGHT CHANNEL | |||
elseif i(kmodel)==8 then ; resony | |||
;CALL resony2 UDO | |||
aFiltL resony2 aL, kcf, kbw, i(knum), ksepR , i(ksepmode), i(kscl) | |||
aFiltR resony2 aR, kcf, kbw, i(knum), ksepR , i(ksepmode), i(kscl) | |||
endif | |||
rireturn | |||
/* | |||
if kbalance==1 then | |||
aFiltL balance aFiltL,aL | |||
aFiltR balance aFiltR,aR | |||
endif | |||
*/ | |||
aL ntrpol aL,aFiltL,kmix | |||
aR ntrpol aR,aFiltR,kmix | |||
outs aL*klevel,aR*klevel | |||
endin | |||
instr UpdateWidgets | |||
ksepR chnget "sepR" | |||
ksepR2 chnget "sepR2" | |||
ktrig1 changed ksepR | |||
ktrig2 changed ksepR2 | |||
if ktrig1==1 then | |||
chnset ksepR*12, "sepR2" | |||
elseif ktrig2==1 then | |||
chnset ksepR2/12, "sepR" | |||
endif | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [3600*24*7] | |||
i "UpdateWidgets" 0 [3600*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,89 @@ | |||
<Cabbage> | |||
form caption("Flanger") size(510, 90), pluginID("flan") | |||
image pos(0, 0), size(510, 90), colour("lightgreen"), shape("rounded"), outline("white"), line(4) | |||
rslider bounds( 5, 10, 70, 70), text("Rate"), channel("rate"), range(0.001, 40, 0.15, 0.5, 0.001), colour("DarkGreen"), trackercolour( 0, 30, 0), fontcolour( 0, 30, 0) | |||
rslider bounds( 75, 10, 70, 70), text("Depth"), channel("depth"), range(0, 0.01, 0.005,1,0.0001), colour("DarkGreen"), trackercolour( 0, 30, 0), fontcolour( 0, 30, 0) | |||
rslider bounds(145, 10, 70, 70), text("Delay"), channel("delay"), range(0.0001, 0.1, 0.0001, 0.5, 0.0001), colour("DarkGreen"), trackercolour( 0, 30, 0), fontcolour( 0, 30, 0) | |||
rslider bounds(215, 10, 70, 70), text("Feedback"), channel("fback"), range(-1, 1, 0), colour("DarkGreen"), trackercolour( 0, 30, 0), fontcolour( 0, 30, 0) | |||
rslider bounds(285, 10, 70, 70), text("Mix"), channel("mix"), range(0, 1.00, 0.5), colour("DarkGreen"), trackercolour( 0, 30, 0), fontcolour( 0, 30, 0) | |||
checkbox bounds(355, 10, 80, 15), colour("yellow"), channel("ThruZero"), value(1), text("Thru.Zero"), fontcolour( 0, 30, 0) | |||
label bounds(365, 37, 70, 12), text("LFO Shape"), fontcolour( 0, 30, 0) | |||
combobox bounds(355, 50, 80, 20), channel("lfoshape"), size(100,50), value(1), text("parabola", "sine", "triangle", "randomi", "randomh") | |||
rslider bounds(435, 10, 70, 70), text("Level"), channel("level"), range(0, 1.00, 1), colour("DarkGreen"), trackercolour( 0, 30, 0), fontcolour( 0, 30, 0) | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 32 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
;Author: Iain McCurdy (2012) | |||
opcode Flanger,a,akkkkk | |||
ain,krate,kdepth,kdelay,kfback,klfoshape xin ;read in input arguments | |||
iparabola ftgentmp 0, 0, 131072, 19, 0.5, 1, 180, 1 ;u-shape parabola for lfo | |||
isine ftgentmp 0, 0, 131072, 19, 1, 0.5, 0, 0.5 ;sine-shape for lfo | |||
itriangle ftgentmp 0, 0, 131072, 7, 0,131072/2,1,131072/2,0;triangle-shape for lfo | |||
adlt interp kdelay ;a new a-rate variable 'adlt' is created by interpolating the k-rate variable 'kdlt' | |||
if klfoshape==1 then | |||
amod oscili kdepth, krate, iparabola ;oscillator that makes use of the positive domain only u-shape parabola | |||
elseif klfoshape==2 then | |||
amod oscili kdepth, krate, isine ;oscillator that makes use of the positive domain only sine wave | |||
elseif klfoshape==3 then | |||
amod oscili kdepth, krate, itriangle ;oscillator that makes use of the positive domain only triangle | |||
elseif klfoshape==4 then | |||
amod randomi 0,kdepth,krate,1 | |||
else | |||
amod randomh 0,kdepth,krate,1 | |||
endif | |||
adlt sum adlt, amod ;static delay time and modulating delay time are summed | |||
adelsig flanger ain, adlt, kfback , 1.2 ;flanger signal created | |||
adelsig dcblock adelsig | |||
aout sum ain*0.5, adelsig*0.5 ;create dry/wet mix | |||
xout aout ;send audio back to caller instrument | |||
endop | |||
instr 1 | |||
krate chnget "rate" ;read in widgets | |||
kdepth chnget "depth" | |||
kdelay chnget "delay" | |||
kfback chnget "fback" | |||
klevel chnget "level" | |||
klfoshape chnget "lfoshape" | |||
kThruZero chnget "ThruZero" | |||
kmix chnget "mix" | |||
;a1,a2 ins ;read live stereo audio input | |||
a1 pinkish 0.2 ;for testing... | |||
a2 pinkish 0.2 | |||
kporttime linseg 0,0.001,0.1 | |||
kdelay portk kdelay,kporttime | |||
afla1 Flanger a1,krate,kdepth,kdelay,kfback,klfoshape ;call udo (left channel) | |||
afla2 Flanger a2,krate,kdepth,kdelay,kfback,klfoshape ;call udo (right channel) | |||
if kThruZero==1 then ;if 'Thru.Zero' mode is selected... | |||
a1 delay a1,0.0001 | |||
a2 delay a2,0.0001 | |||
a1 ntrpol -a1,afla1,kmix ;invert delayed dry signal and mix with flanger signal | |||
a2 ntrpol -a2,afla2,kmix | |||
else ;otherwise... (standard flanger) | |||
a1 ntrpol a1,afla1,kmix ;create mix between dry signal and flanger signal | |||
a2 ntrpol a2,afla2,kmix | |||
endif | |||
outs a1*klevel,a2*klevel ;send audio to outputs, scale amplitude according to GUI knob value | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [60*60*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,286 @@ | |||
FormantFilter.csd | |||
reson 1 uses reson with scaling method 1. | |||
reson 2 uses reson with scaling method 2. | |||
'gain' controls the gain the the bandpass filtered sound only. | |||
'BW.Mult' is a factor which all five bandwidth values are multiplied by. | |||
'Freq.Mult.' is a factor by which all cutoff frequencies are multiplied by. | |||
<Cabbage> | |||
form caption("Formant Filter"), colour("SlateGrey"), size(550, 300), pluginID("form") | |||
xypad bounds(5, 5, 350, 260), channel("x", "y"), rangex(0, 1, 0.5), rangey(0, 1, 0), text("upper edge:A E I | lower :U O"), fontcolour("white") | |||
vslider bounds(360, 0, 30,140), text("f1"), channel("f1"), range(0, 1.00, 1), fontcolour("white") | |||
vslider bounds(380, 0, 30,140), text("f2"), channel("f2"), range(0, 1.00, 1), fontcolour("white") | |||
vslider bounds(400, 0, 30,140), text("f3"), channel("f3"), range(0, 1.00, 1), fontcolour("white") | |||
vslider bounds(420, 0, 30,140), text("f4"), channel("f4"), range(0, 1.00, 1), fontcolour("white") | |||
vslider bounds(440, 0, 30,140), text("f5"), channel("f5"), range(0, 1.00, 1), fontcolour("white") | |||
combobox bounds(365, 155,100, 20), channel("voice"), value(1), text("bass", "tenor", "countertenor", "alto", "soprano") | |||
combobox bounds(365, 185,100, 20), channel("filter"), value(1), text("reson 1", "reson 2", "butterworth") | |||
checkbox bounds(365, 215,100, 20), colour("yellow"), channel("balance"), value(0), text("Balance"), fontcolour("white") | |||
button bounds(365, 245,100, 20), text("Live Input","Noise Input"), channel("input"), value(0), fontcolour("lime") | |||
rslider bounds(480, 5, 60, 60), text("BW.Mult"), channel("BWMlt"), range(0.01, 4, 1, 0.4), fontcolour("white") | |||
rslider bounds(480, 70, 60, 60), text("Freq.Mult"), channel("FrqMlt"), range(0.25, 4, 1, 0.4), fontcolour("white") | |||
rslider bounds(480,140, 60, 60), text("Mix"), channel("mix"), range(0, 1.00, 1), fontcolour("white") | |||
rslider bounds(480,210, 60, 60), text("Gain"), channel("gain"), range(0, 5.00, 1, 0.5), fontcolour("white") | |||
image bounds( 5, 275, 350, 18), colour(75, 85, 90, 100), plant("credit"), line(0){ | |||
label bounds(0.03, 0.1, .6, .8), text("Author: Iain McCurdy |2012|"), colour("white") | |||
} | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-dm0 -n -+rtmidi=null -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 32 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
;Author: Iain McCurdy (2012) | |||
;FUNCTION TABLES STORING DATA FOR VARIOUS VOICE FORMANTS | |||
;THE FIRST VALUE OF EACH TABLE DEFINES THE NUMBER OF DATA ELEMENTS IN THE TABLE | |||
; THIS IS NEEDED BECAUSE TABLES SIZES MUST BE POWERS OF 2 TO FACILITATE INTERPOLATED TABLE READING (tablei) | |||
;BASS | |||
giBFA ftgen 0, 0, 8, -2, 4, 600, 400, 250, 350 ;FREQ | |||
giBFE ftgen 0, 0, 8, -2, 4, 1040, 1620, 1750, 600 ;FREQ | |||
giBFI ftgen 0, 0, 8, -2, 4, 2250, 2400, 2600, 2400 ;FREQ | |||
giBFO ftgen 0, 0, 8, -2, 4, 2450, 2800, 3050, 2675 ;FREQ | |||
giBFU ftgen 0, 0, 8, -2, 4, 2750, 3100, 3340, 2950 ;FREQ | |||
giBDbA ftgen 0, 0, 8, -2, 4, 0, 0, 0, 0 ;dB | |||
giBDbE ftgen 0, 0, 8, -2, 4, -7, -12, -30, -20 ;dB | |||
giBDbI ftgen 0, 0, 8, -2, 4, -9, -9, -16, -32 ;dB | |||
giBDbO ftgen 0, 0, 8, -2, 4, -9, -12, -22, -28 ;dB | |||
giBDbU ftgen 0, 0, 8, -2, 4, -20, -18, -28, -36 ;dB | |||
giBBWA ftgen 0, 0, 8, -2, 4, 60, 40, 60, 40 ;BAND WIDTH | |||
giBBWE ftgen 0, 0, 8, -2, 4, 70, 80, 90, 80 ;BAND WIDTH | |||
giBBWI ftgen 0, 0, 8, -2, 4, 110, 100, 100, 100 ;BAND WIDTH | |||
giBBWO ftgen 0, 0, 8, -2, 4, 120, 120, 120, 120 ;BAND WIDTH | |||
giBBWU ftgen 0, 0, 8, -2, 4, 130, 120, 120, 120 ;BAND WIDTH | |||
;TENOR | |||
giTFA ftgen 0, 0, 8, -2, 5, 650, 400, 290, 400, 350 ;FREQ | |||
giTFE ftgen 0, 0, 8, -2, 5, 1080, 1700, 1870, 800, 600 ;FREQ | |||
giTFI ftgen 0, 0, 8, -2, 5, 2650, 2600, 2800, 2600, 2700 ;FREQ | |||
giTFO ftgen 0, 0, 8, -2, 5, 2900, 3200, 3250, 2800, 2900 ;FREQ | |||
giTFU ftgen 0, 0, 8, -2, 5, 3250, 3580, 3540, 3000, 3300 ;FREQ | |||
giTDbA ftgen 0, 0, 8, -2, 5, 0, 0, 0, 0, 0 ;dB | |||
giTDbE ftgen 0, 0, 8, -2, 5, -6, -14, -15, -10, -20 ;dB | |||
giTDbI ftgen 0, 0, 8, -2, 5, -7, -12, -18, -12, -17 ;dB | |||
giTDbO ftgen 0, 0, 8, -2, 5, -8, -14, -20, -12, -14 ;dB | |||
giTDbU ftgen 0, 0, 8, -2, 5, -22, -20, -30, -26, -26 ;dB | |||
giTBWA ftgen 0, 0, 8, -2, 5, 80, 70, 40, 40, 40 ;BAND WIDTH | |||
giTBWE ftgen 0, 0, 8, -2, 5, 90, 80, 90, 80, 60 ;BAND WIDTH | |||
giTBWI ftgen 0, 0, 8, -2, 5, 120, 100, 100, 100, 100 ;BAND WIDTH | |||
giTBWO ftgen 0, 0, 8, -2, 5, 130, 120, 120, 120, 120 ;BAND WIDTH | |||
giTBWU ftgen 0, 0, 8, -2, 5, 140, 120, 120, 120, 120 ;BAND WIDTH | |||
;COUNTER TENOR | |||
giCTFA ftgen 0, 0, 8, -2, 5, 660, 440, 270, 430, 370 ;FREQ | |||
giCTFE ftgen 0, 0, 8, -2, 5, 1120, 1800, 1850, 820, 630 ;FREQ | |||
giCTFI ftgen 0, 0, 8, -2, 5, 2750, 2700, 2900, 2700, 2750 ;FREQ | |||
giCTFO ftgen 0, 0, 8, -2, 5, 3000, 3000, 3350, 3000, 3000 ;FREQ | |||
giCTFU ftgen 0, 0, 8, -2, 5, 3350, 3300, 3590, 3300, 3400 ;FREQ | |||
giTBDbA ftgen 0, 0, 8, -2, 5, 0, 0, 0, 0, 0 ;dB | |||
giTBDbE ftgen 0, 0, 8, -2, 5, -6, -14, -24, -10, -20 ;dB | |||
giTBDbI ftgen 0, 0, 8, -2, 5, -23, -18, -24, -26, -23 ;dB | |||
giTBDbO ftgen 0, 0, 8, -2, 5, -24, -20, -36, -22, -30 ;dB | |||
giTBDbU ftgen 0, 0, 8, -2, 5, -38, -20, -36, -34, -30 ;dB | |||
giTBWA ftgen 0, 0, 8, -2, 5, 80, 70, 40, 40, 40 ;BAND WIDTH | |||
giTBWE ftgen 0, 0, 8, -2, 5, 90, 80, 90, 80, 60 ;BAND WIDTH | |||
giTBWI ftgen 0, 0, 8, -2, 5, 120, 100, 100, 100, 100 ;BAND WIDTH | |||
giTBWO ftgen 0, 0, 8, -2, 5, 130, 120, 120, 120, 120 ;BAND WIDTH | |||
giTBWU ftgen 0, 0, 8, -2, 5, 140, 120, 120, 120, 120 ;BAND WIDTH | |||
;ALTO | |||
giAFA ftgen 0, 0, 8, -2, 5, 800, 400, 350, 450, 325 ;FREQ | |||
giAFE ftgen 0, 0, 8, -2, 5, 1150, 1600, 1700, 800, 700 ;FREQ | |||
giAFI ftgen 0, 0, 8, -2, 5, 2800, 2700, 2700, 2830, 2530 ;FREQ | |||
giAFO ftgen 0, 0, 8, -2, 5, 3500, 3300, 3700, 3500, 2500 ;FREQ | |||
giAFU ftgen 0, 0, 8, -2, 5, 4950, 4950, 4950, 4950, 4950 ;FREQ | |||
giADbA ftgen 0, 0, 8, -2, 5, 0, 0, 0, 0, 0 ;dB | |||
giADbE ftgen 0, 0, 8, -2, 5, -4, -24, -20, -9, -12 ;dB | |||
giADbI ftgen 0, 0, 8, -2, 5, -20, -30, -30, -16, -30 ;dB | |||
giADbO ftgen 0, 0, 8, -2, 5, -36, -35, -36, -28, -40 ;dB | |||
giADbU ftgen 0, 0, 8, -2, 5, -60, -60, -60, -55, -64 ;dB | |||
giABWA ftgen 0, 0, 8, -2, 5, 50, 60, 50, 70, 50 ;BAND WIDTH | |||
giABWE ftgen 0, 0, 8, -2, 5, 60, 80, 100, 80, 60 ;BAND WIDTH | |||
giABWI ftgen 0, 0, 8, -2, 5, 170, 120, 120, 100, 170 ;BAND WIDTH | |||
giABWO ftgen 0, 0, 8, -2, 5, 180, 150, 150, 130, 180 ;BAND WIDTH | |||
giABWU ftgen 0, 0, 8, -2, 5, 200, 200, 200, 135, 200 ;BAND WIDTH | |||
;SOPRANO | |||
giSFA ftgen 0, 0, 8, -2, 5, 800, 350, 270, 450, 325 ;FREQ | |||
giSFE ftgen 0, 0, 8, -2, 5, 1150, 2000, 2140, 800, 700 ;FREQ | |||
giSFI ftgen 0, 0, 8, -2, 5, 2900, 2800, 2950, 2830, 2700 ;FREQ | |||
giSFO ftgen 0, 0, 8, -2, 5, 3900, 3600, 3900, 3800, 3800 ;FREQ | |||
giSFU ftgen 0, 0, 8, -2, 5, 4950, 4950, 4950, 4950, 4950 ;FREQ | |||
giSDbA ftgen 0, 0, 8, -2, 5, 0, 0, 0, 0, 0 ;dB | |||
giSDbE ftgen 0, 0, 8, -2, 5, -6, -20, -12, -11, -16 ;dB | |||
giSDbI ftgen 0, 0, 8, -2, 5, -32, -15, -26, -22, -35 ;dB | |||
giSDbO ftgen 0, 0, 8, -2, 5, -20, -40, -26, -22, -40 ;dB | |||
giSDbU ftgen 0, 0, 8, -2, 5, -50, -56, -44, -50, -60 ;dB | |||
giSBWA ftgen 0, 0, 8, -2, 5, 80, 60, 60, 70, 50 ;BAND WIDTH | |||
giSBWE ftgen 0, 0, 8, -2, 5, 90, 90, 90, 80, 60 ;BAND WIDTH | |||
giSBWI ftgen 0, 0, 8, -2, 5, 120, 100, 100, 100, 170 ;BAND WIDTH | |||
giSBWO ftgen 0, 0, 8, -2, 5, 130, 150, 120, 130, 180 ;BAND WIDTH | |||
giSBWU ftgen 0, 0, 8, -2, 5, 140, 200, 120, 135, 200 ;BAND WIDTH | |||
instr 1 | |||
gkx chnget "x" | |||
gky chnget "y" | |||
gkf1 chnget "f1" | |||
gkf2 chnget "f2" | |||
gkf3 chnget "f3" | |||
gkf4 chnget "f4" | |||
gkf5 chnget "f5" | |||
gkvoice chnget "voice" | |||
gkvoice init 1 | |||
gkBWMlt chnget "BWMlt" | |||
gkFrqMlt chnget "FrqMlt" | |||
gkmix chnget "mix" | |||
gkgain chnget "gain" | |||
gkfilter chnget "filter" | |||
gkbalance chnget "balance" | |||
gkinput chnget "input" | |||
endin | |||
instr 2 | |||
kporttime linseg 0,0.001,0.1 | |||
if gkinput==0 then | |||
asigL,asigR ins | |||
else | |||
asigL pinkish 1 | |||
asigR pinkish 1 | |||
endif | |||
kx portk gkx,kporttime | |||
ky portk gky,kporttime | |||
kSwitch changed gkvoice ;GENERATE A MOMENTARY '1' PULSE IN OUTPUT 'kSwitch' IF ANY OF THE SCANNED INPUT VARIABLES CHANGE. (OUTPUT 'kSwitch' IS NORMALLY ZERO) | |||
if kSwitch=1 then ;IF I-RATE VARIABLE CHANGE TRIGGER IS '1'... | |||
reinit START ;BEGIN A REINITIALISATION PASS FROM LABEL 'START' | |||
endif | |||
START: | |||
;A TEXT MACRO IS DEFINED THAT WILL BE THE CODE FOR DERIVING DATA FOR EACH FORMANT. A MACRO IS USED TO AVOID HAVING TO USING CODE REPETITION AND TO EASIER FACICLITATE CODE MODIFICATION | |||
#define FORMANT_DATA(N) | |||
# | |||
invals table 0, giBFA+((i(gkvoice)-1)*15)+$N-1 ;NUMBER OF DATA ELEMENTS IN EACH TABLE | |||
invals = invals-1 ; | |||
kfreq$N_U tablei 1+(kx*(3/5)*invals),giBFA+((i(gkvoice)-1)*15)+$N-1 ;READ DATA FOR FREQUENCY (UPPER EDGE OF PANEL) | |||
kfreq$N_L tablei 1+(((1-kx)*(1/5))+(4/5)*invals),giBFA+((i(gkvoice)-1)*15)+$N-1 ;READ DATA FOR FREQUENCY (LOWER EDGE OF PANEL) | |||
kfreq$N ntrpol kfreq$N_L, kfreq$N_U, ky ;INTERPOLATE BETWEEN UPPER VALUE AND LOWER VALUE (DETERMINED BY Y-LOCATION ON PANEL) | |||
kfreq$N = kfreq$N * gkFrqMlt ;MULTIPLY FREQUENCY VALUE BY VALUE FROM 'Frequency Multiply' SLIDER | |||
kdbamp$N_U tablei 1+(kx*(3/5)*invals),giBDbA+((i(gkvoice)-1)*15)+$N-1 ;READ DATA FOR INTENSITY (UPPER EDGE OF PANEL) | |||
kdbamp$N_L tablei 1+(((1-kx)*(1/5))+(4/5)*invals),giBDbA+((i(gkvoice)-1)*15)+$N-1 ;READ DATA FOR INTENSITY (LOWER EDGE OF PANEL) | |||
kdbamp$N ntrpol kdbamp$N_L, kdbamp$N_U, ky ;INTERPOLATE BETWEEN UPPER VALUE AND LOWER VALUE (DETERMINED BY Y-LOCATION ON PANEL) | |||
kbw$N_U tablei 1+(kx*(3/5)*invals),giBBWA+((i(gkvoice)-1)*15)+$N-1 ;READ DATA FOR BANDWIDTH (UPPER EDGE OF PANEL) | |||
kbw$N_L tablei 1+(((1-kx)*(1/5))+(4/5)*invals),giBBWA+((i(gkvoice)-1)*15)+$N-1 ;READ DATA FOR BANDWIDTH (LOWER EDGE OF PANEL) | |||
kbw$N ntrpol kbw$N_L, kbw$N_U, ky ;INTERPOLATE BETWEEN UPPER VALUE AND LOWER VALUE (DETERMINED BY Y-LOCATION ON PANEL) | |||
kbw$N = kbw$N * gkBWMlt ;MULTIPLY BANDWIDTH VALUE BY VALUE FROM 'Bandwidth Multiply' SLIDER | |||
# ;END OF MACRO! | |||
;READING DATA FOR FORMANTS (MACROS IMPLEMENTED) | |||
$FORMANT_DATA(1) | |||
$FORMANT_DATA(2) | |||
$FORMANT_DATA(3) | |||
$FORMANT_DATA(4) | |||
$FORMANT_DATA(5) | |||
rireturn ;RETURN FROM REINITIALISATION PASS TO PERFORMANCE TIME PASSES | |||
if gkfilter==1 then | |||
aBPF1L reson asigL, kfreq1, kbw1, 1 ;FORMANT 1 | |||
aBPF1R reson asigR, kfreq1, kbw1, 1 ;FORMANT 1 | |||
; | |||
aBPF2L reson asigL, kfreq2, kbw2, 1 ;FORMANT 2 | |||
aBPF2R reson asigR, kfreq2, kbw2, 1 ;FORMANT 2 | |||
; | |||
aBPF3L reson asigL, kfreq3, kbw3, 1 ;FORMANT 3 | |||
aBPF3R reson asigR, kfreq3, kbw3, 1 ;FORMANT 3 | |||
; | |||
aBPF4L reson asigL, kfreq4, kbw4, 1 ;FORMANT 4 | |||
aBPF4R reson asigR, kfreq4, kbw4, 1 ;FORMANT 4 | |||
; | |||
aBPF5L reson asigL, kfreq5, kbw5, 1 ;FORMANT 5 | |||
aBPF5R reson asigR, kfreq5, kbw5, 1 ;FORMANT 5 | |||
elseif gkfilter==2 then | |||
aBPF1L reson asigL, kfreq1, kbw1, 2 ;FORMANT 1 | |||
aBPF1R reson asigR, kfreq1, kbw1, 2 ;FORMANT 1 | |||
; | |||
aBPF2L reson asigL, kfreq2, kbw2, 2 ;FORMANT 2 | |||
aBPF2R reson asigR, kfreq2, kbw2, 2 ;FORMANT 2 | |||
; | |||
aBPF3L reson asigL, kfreq3, kbw3, 2 ;FORMANT 3 | |||
aBPF3R reson asigR, kfreq3, kbw3, 2 ;FORMANT 3 | |||
; | |||
aBPF4L reson asigL, kfreq4, kbw4, 2 ;FORMANT 4 | |||
aBPF4R reson asigR, kfreq4, kbw4, 2 ;FORMANT 4 | |||
; | |||
aBPF5L reson asigL, kfreq5, kbw5, 2 ;FORMANT 5 | |||
aBPF5R reson asigR, kfreq5, kbw5, 2 ;FORMANT 5 | |||
else | |||
aBPF1L butbp asigL, kfreq1, kbw1 ;FORMANT 1 | |||
aBPF1R butbp asigR, kfreq1, kbw1 ;FORMANT 1 | |||
; | |||
aBPF2L butbp asigL, kfreq2, kbw2 ;FORMANT 2 | |||
aBPF2R butbp asigR, kfreq2, kbw2 ;FORMANT 2 | |||
; | |||
aBPF3L butbp asigL, kfreq3, kbw3 ;FORMANT 3 | |||
aBPF3R butbp asigR, kfreq3, kbw3 ;FORMANT 3 | |||
; | |||
aBPF4L butbp asigL, kfreq4, kbw4 ;FORMANT 4 | |||
aBPF4R butbp asigR, kfreq4, kbw4 ;FORMANT 4 | |||
; | |||
aBPF5L butbp asigL, kfreq5, kbw5 ;FORMANT 5 | |||
aBPF5R butbp asigR, kfreq5, kbw5 ;FORMANT 5 | |||
endif | |||
if gkbalance==1 then | |||
aBPF1L balance aBPF1L,asigL,0.1 | |||
aBPF1R balance aBPF1R,asigR,0.1 | |||
aBPF2L balance aBPF2L,asigL,0.1 | |||
aBPF2R balance aBPF2R,asigR,0.1 | |||
aBPF3L balance aBPF3L,asigL,0.1 | |||
aBPF3R balance aBPF3R,asigR,0.1 | |||
aBPF4L balance aBPF4L,asigL,0.1 | |||
aBPF4R balance aBPF4R,asigR,0.1 | |||
aBPF5L balance aBPF5L,asigL,0.1 | |||
aBPF5R balance aBPF5R,asigR,0.1 | |||
endif | |||
;FORMANTS ARE MIXED AND MULTIPLIED BOTH BY INTENSITY VALUES DERIVED FROM TABLES AND BY THE ON-SCREEN GAIN CONTROLS FOR EACH FORMANT | |||
aMixL sum aBPF1L*(ampdbfs(kdbamp1))*gkf1, aBPF2L*(ampdbfs(kdbamp2))*gkf2, aBPF3L*(ampdbfs(kdbamp3))*gkf3, aBPF4L*(ampdbfs(kdbamp4))*gkf4, aBPF5L*(ampdbfs(kdbamp5))*gkf5 | |||
aMixR sum aBPF1R*(ampdbfs(kdbamp1))*gkf1, aBPF2R*(ampdbfs(kdbamp2))*gkf2, aBPF3R*(ampdbfs(kdbamp3))*gkf3, aBPF4R*(ampdbfs(kdbamp4))*gkf4, aBPF5R*(ampdbfs(kdbamp5))*gkf5 | |||
aOutMixL ntrpol asigL, aMixL*gkgain, gkmix ;MIX BETWEEN DRY AND WET SIGNALS | |||
aOutMixR ntrpol asigR, aMixR*gkgain, gkmix ;MIX BETWEEN DRY AND WET SIGNALS | |||
outs aOutMixL, aOutMixR ;SEND AUDIO TO OUTPUTS | |||
endin | |||
instr 99 ; fix cabbage bug | |||
kon = 1 | |||
chnset kon,"f1" | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [3600*24*7] | |||
i 2 0 [3600*24*7] | |||
i 99 0 0.01 ; fix for cabbage bug | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,74 @@ | |||
<Cabbage> | |||
form caption("HRTF 3D") size(365, 275) | |||
image pos(0, 0), size(365, 236), colour(50, 20, 0), shape("rounded"), outline("white"), line(4) | |||
xypad bounds(6, 6, 250, 224), channel("Az", "Elev"), text("X=Azimuth : Y=Elev."), rangex(-180, 180, 0), rangey(-40, 90, 0) | |||
checkbox bounds(265, 6, 80, 12), channel("TestSound"), FontColour("white"), value(1), text("Test Sound"), colour(yellow) | |||
combobox bounds(265, 20, 90,25), channel("type"), value(2), text("hrtfmove", "hrtfmove2") | |||
hslider bounds(265, 50, 90,55), channel("L_R_In"), range(0, 1.00, 0), caption("L/R In") | |||
combobox bounds(265,110, 90,60), channel("overlap"), value(3), text("1", "2", "4", "8", "16", "32", "64"), caption("Overlap") | |||
hslider bounds(265, 175, 90, 55), channel("radius"), range(1, 30, 9), caption("Radius") | |||
image bounds(5,245, 215, 20), colour(100,100,100,80), plant("credit"), line(0){ | |||
label bounds(0.03, 0.1, .95, .7), text("Author: Iain McCurdy |2012|"), fontcolour("white") | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 ;SAMPLE RATE | |||
ksmps = 1 ;NUMBER OF AUDIO SAMPLES IN EACH CONTROL CYCLE | |||
nchnls = 2 ;NUMBER OF CHANNELS (2=STEREO) | |||
0dbfs = 1 | |||
;Author: Iain McCurdy (2012) | |||
instr 1 | |||
kAz chnget "Az" ;READ WIDGETS... | |||
kElev chnget "Elev" ; | |||
ktype chnget "type" ; | |||
kL_R_In chnget "L_R_In" ; | |||
koverlap chnget "overlap" ; | |||
kradius chnget "radius" ; | |||
kTestSound chnget "TestSound" | |||
if kTestSound=1 then ; generate a test sound... | |||
aL pinkish 0.3 ; generate some pink noise | |||
koct rspline 8,12,0.3,1 ; randomly moving pitch (oct format) | |||
aL reson aL,cpsoct(koct),cpsoct(koct)*0.2,1 ; reson filter it | |||
aR = aL ; right channel same as the left | |||
else | |||
aL,aR ins ;READ STEREO AUDIO INPUT | |||
endif | |||
asrc ntrpol aL,aR,kL_R_In | |||
kporttime linseg 0,0.001,0.02 ;PORTAMENTO TIME RISES UP QUICKLY FROM ZERO TO A HELD VALUE | |||
;kAz portk kAz,kporttime ;SMOOTH RT CHANGES OF AZIMUTH | |||
;kElev portk kElev,kporttime ;SMOOTH RT CHANGES OF ELEVATION | |||
kswitch changed koverlap,kradius ;IF 'OVERLAP' OR 'RADIUS' CHANGE, GENERATE A TRIGGER | |||
if kswitch==1 then ;IF A CHANGE TRIGGER HAS BEEN GENERATED... | |||
reinit update ;REINITIALISE FROM LABEL 'update' | |||
endif ;END OF CONDITIONAL BRANCH | |||
update: ;A LABEL. REINITIALISATION BEGINS FROM HERE | |||
ioverlap = 2 ^ (i(koverlap) - 1) ;DERIVE OVERLAP VALUE (1,2,4,8 etc.) FROM COMBOBOX INDEX VALUES (1,2,3,4 etc.) | |||
if ktype==1 then ;IF 'hrtfmove' SELECTED USING COMBOBOX... | |||
aleft, aright hrtfmove asrc, kAz, kElev, "hrtf-44100-left.dat","hrtf-44100-right.dat",ioverlap, i(kradius);, isr] ;APPLY hrtfmove2 OPCODE TO AUDIO SOURCE FROM INSTR 1 | |||
else ;IF 'hrtfmove2' SELECTED USING COMBOBOX... | |||
aleft, aright hrtfmove2 asrc, kAz, kElev, "hrtf-44100-left.dat","hrtf-44100-right.dat",ioverlap, i(kradius);, isr] ;APPLY hrtfmove2 OPCODE TO AUDIO SOURCE FROM INSTR 1 | |||
endif ;END OF CONDITIONAL BRANCH | |||
rireturn | |||
outs aleft, aright ;SEND AUDIO TO OUTPUTS | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [3600*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,73 @@ | |||
<Cabbage> | |||
form caption("Highpass Filter") size(435, 90), pluginID("HPFl") | |||
image pos(0, 0), size(435, 90), colour( 70,120, 90), shape("rounded"), outline("white"), line(4) | |||
label bounds(22, 22, 60, 11), text("INPUT"), fontcolour("black") | |||
combobox bounds(10, 33, 60, 20), channel("input"), value(1), text("Live","Tone","Noise") | |||
rslider bounds( 75, 11, 70, 70), channel("cf"), text("Freq."), colour( 0, 60, 30), trackercolour(200,255,200), fontcolour("white"), range(20, 20000, 20000, 0.333) | |||
rslider bounds(140, 11, 70, 70), channel("res"), text("Res."), colour( 0, 60, 30), trackercolour(200,255,200), fontcolour("white"), range(0,1.00,0) | |||
rslider bounds(205, 11, 70, 70), channel("mix"), text("Mix"), colour( 0, 60, 30), trackercolour(200,255,200), fontcolour("white"), range(0,1.00,1) | |||
button bounds(280, 10, 80, 20), text("12dB/oct","24dB/oct"), channel("steepness"), value(0) | |||
label bounds(290, 30, 80, 12), text("Steepness"), fontcolour("black") | |||
checkbox bounds(280, 50, 80, 15), channel("ResType"),colour(yellow), fontcolour("black"), value(0), text("Resonant") | |||
rslider bounds(360, 11, 70, 70), text("Level"), colour( 0, 60, 30), trackercolour(200,255,200), fontcolour("white"), channel("level"), range(0, 1.00, 1) | |||
image bounds(5, 95, 205, 20), colour(75, 85, 90, 100), plant("credit"), line(0){ | |||
label bounds(0.03, 0.1, .95, .7), text("Author: Iain McCurdy |2012|"), colour("white") | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 ;SAMPLE RATE | |||
ksmps = 32 ;NUMBER OF AUDIO SAMPLES IN EACH CONTROL CYCLE | |||
nchnls = 2 ;NUMBER OF CHANNELS (2=STEREO) | |||
0dbfs = 1 | |||
;Author: Iain McCurdy (2012) | |||
instr 1 | |||
kcf chnget "cf" ; | |||
kres chnget "res" ; | |||
kmix chnget "mix" ; | |||
ksteepness chnget "steepness" ; | |||
kResType chnget "ResType" ; | |||
klevel chnget "level" ; | |||
kporttime linseg 0,0.001,0.02 | |||
kcf portk kcf,kporttime | |||
/* INPUT */ | |||
kinput chnget "input" | |||
if kinput=1 then | |||
aL,aR ins | |||
elseif kinput=2 then | |||
aL vco2 0.2, 100 | |||
aR = aL | |||
else | |||
aL pinkish 0.2 | |||
aR pinkish 0.2 | |||
endif | |||
if ksteepness==0&&kResType!=1 then | |||
aFiltL atone aL,kcf | |||
aFiltR atone aR,kcf | |||
elseif ksteepness==1&&kResType!=1 then | |||
aFiltL buthp aL,kcf | |||
aFiltR buthp aR,kcf | |||
elseif kResType==1 then | |||
aFiltL bqrez aL,kcf,1+(kres*40),1 | |||
aFiltR bqrez aR,kcf,1+(kres*40),1 | |||
endif | |||
aL ntrpol aL,aFiltL,kmix | |||
aR ntrpol aR,aFiltR,kmix | |||
outs aL*klevel,aR*klevel | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [3600*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,338 @@ | |||
LiveSndwarp.csd | |||
Iain McCurdy (2012) | |||
Description and Instructions | |||
---------------------------- | |||
This instrument implements live granulation of an audio input stream using the sndwarp opcode. | |||
Live audio from the first input channel (left input if stereo) is written into a function table from which sndwarp reads | |||
audio. (If 'stereo in/out' is chosen from 'In/Out Mode' then audio from the second/right channel is written into a second | |||
table.) The key is that manual pointer read mode is used with sndwarp (as opposed to time-stretch mode) and that the read | |||
pointer follows on behind the pointer which is used to write audio into the function table(s). Some care is needed to ensure | |||
that the read pointer does not 'overtake' the write pointer (which would result in dicontinuities in the audio it reads). | |||
This could be possible if pitch transposition upwards of grains is used as the grain pointer is then moving faster than the | |||
write pointer. This example prevents this from happening internally so the user does not need to worry. The user can also | |||
define a random offset for the grain read pointer using the 'Grain Delay' settings. Delay times are randomly chosen | |||
according to a 'betarand' distribution the 'beta' of which the user can set: if distribution shape is 1 the distribution is | |||
uniform, if it is 2 the distribution is linear and beyond 2 it is increasingly exponential. | |||
Note that 'Size' (grain size) and 'Size Rnd.' (random grain size) are i-rate variables so that changing them requires | |||
reinitialisation in the orchestra. For this reason discontinuity in the audio output can be heard when they are modified. | |||
Grain Size and Size Random (bandwith) are in sample frames. Divide by sample rate to derive a value in seconds. | |||
Pitch transposition can be set using either the 'Pitch' knob (ratio multiplier) or 'Semis' (transposition in semitones). | |||
Changes made to 'Semis' will be reflected in the setting of the 'Pitch' knob, but not vice versa. | |||
Pitch can also be controlled through MIDI input (in which case 'Pitch' and 'Semis' will be ignored). Using MIDI will | |||
polyphony will be possible. If you intend to use MIDI to start and stop sndwarp instances, turn 'On/Off [MIDI]' off. | |||
You can also adjust the MIDI note at which unison (no transposition) will occur using the 'Uni.Note' knob. | |||
Sound output from sndwarp can be fed back into the input to be mixed with the live audio in. The amount of feedback can be | |||
controlled using the 'Feedback' slider. Using high levels of feedback can result in overloading but this will also be | |||
dependent upon other factors such as random delay time, grain size (window size), density and transposition so user caution | |||
is advised. If the 'clip' button is activated the feedback signal will be clipped at the clip level set (a ratio of then | |||
maximum amplitude) providing at least some control over a runaway feedback loop. Note that 'Clip Lev.' defines the amplitude | |||
at which clipping begins, therefore lower settings will result in the signal being clipped sooner. The feedback signal can | |||
also be filtered by a lowpass filter. | |||
If 'balance' is activated the output of sndwarp is dynamically balanced with the input signal. This can be useful for | |||
compensating for increases in amplitude caused when 'Number of Overlaps' (grain density) is increased. There are 3 | |||
mono/stereo modes: 'mono in - mono out (x2)', 'mono in - stereo out' (stereo effect is created using sndwarp's built-in | |||
window/grain size randomisation, and 'stereo in - stereo out' mode. | |||
The buffer size used in the example is just under 23 seconds long (function table size 1048576 at sr=44100). This could be | |||
enlarged if required but bear in mind that sndwarp needs a power of two table size. | |||
Activating 'Freeze' will pause writing of live audio to the function table and allow the user to manually navigate through | |||
the buffered audio. The feedback loop will also be deactivated when 'freeze' is active. | |||
<Cabbage> | |||
form caption("Live Sndwarp") size(530, 465), pluginID("lwrp") | |||
groupbox bounds( 0, 0, 300,100), text("Master"), colour(30, 30, 40), fontcolour(255,125,125){ | |||
checkbox bounds( 10, 28, 110, 20), colour("yellow"), channel("OnOff"), value(1), text("On/Off [MIDI]"), trackercolour("red") | |||
label bounds( 22, 53, 80, 13), text("In/Out Mode") | |||
combobox bounds( 10, 69, 100, 20), channel("monostereo"), value(2), text("mono","stereo out","stereo in/out") | |||
rslider bounds(115, 30, 60, 60), text("In Gain"), channel("InGain"), range(0, 2.00, 1, 0.5), trackercolour("red") | |||
rslider bounds(175, 30, 60, 60), text("Out Gain"), channel("amp"), range(0, 2.00, 1, 0.5), trackercolour("red") | |||
rslider bounds(235, 30, 60, 60), text("Mix"), channel("mix"), range(0, 1.00, 1), trackercolour("red") | |||
} | |||
groupbox bounds(300, 0, 230,100), text("Feedback - CAUTION!"), colour(25, 25, 35), fontcolour(250,120,120){ | |||
rslider bounds(305, 30, 60, 60), text("Amount"), channel("feedback"), range(0, 1.00, 0), trackercolour("red") | |||
checkbox bounds(365, 35, 70, 20), colour("yellow"), channel("clip"), value(1), text("Clip"), trackercolour("red") | |||
checkbox bounds(365, 65, 70, 20), colour("yellow"), channel("LPF_On"), value(0), text("LPF"), trackercolour("red") | |||
rslider bounds(410, 30, 60, 60), text("Clip Lev."), channel("ClipLev"), range(0.01, 1, 0.5, 0.5), trackercolour("red") | |||
rslider bounds(465, 30, 60, 60), text("LPF"), channel("Cutoff"), range(20, 20000, 4000, 0.5), trackercolour("red") | |||
} | |||
groupbox bounds( 0,100, 530,100), text("Grains"), colour(35, 35, 45), fontcolour(255,130,130){ | |||
rslider bounds( 5,130, 60, 60), text("Size"), channel("wsize"), range(1, 88200, 7000, 0.25), trackercolour("red") | |||
rslider bounds( 65,130, 60, 60), text("Size Rnd."), channel("rnd"), range(0, 30000, 1000, 0.375), trackercolour("red") | |||
rslider bounds(125,130, 60, 60), text("Pitch"), channel("pch"), range(0.01, 8, 1, 0.5), trackercolour("red") | |||
rslider bounds(185,130, 60, 60), text("Semis"), channel("semis"), range(-48, 48, 0,1,1), trackercolour("red") | |||
rslider bounds(245,130, 60, 60), text("Density"), channel("olaps"), range(1, 100, 10, 1, 1), trackercolour("red") | |||
label bounds(305,125, 100, 13), text("Grain Envelope") | |||
combobox bounds(305,141, 100, 20), channel("wfn"), value(1), text("Half Sine","Perc. 1","Perc. 2","Gate","Rev. Perc. 1 ","Rev. Perc. 2") | |||
checkbox bounds(315,170, 100, 20), colour("yellow"), channel("balance"), value(0), text("Balance") | |||
rslider bounds(405,130, 60, 60), text("Delay"), channel("dly"), range(0, 5, 0.01, 0.5), trackercolour("red") | |||
rslider bounds(465,130, 60, 60), text("Distr."), channel("beta"), range(1, 16.0, 1, 0.5), trackercolour("red") | |||
} | |||
groupbox bounds( 0,200,530,135), text("Freeze"), colour(45, 45, 55), fontcolour(255,100,100){ | |||
label bounds(234,230, 80, 17), text("FREEZE"), fontcolour("LightBlue") | |||
label bounds(233,231, 80, 17), text("FREEZE"), fontcolour(105,105,255) | |||
checkbox bounds(225,249, 80, 30), colour(115,115,255), channel("freeze"), value(0) | |||
rslider bounds( 10,227, 60, 60), text("Port.Time"), channel("ManPtrPort"), range(0, 1.00, 0.5), trackercolour("red") | |||
hslider bounds( 10,280,510, 40), channel("ManPtr"), range(-1.00, 0, 0, 1, 0.001), trackercolour("red") | |||
label bounds(220,315,100, 13), text("Manual Pointer") | |||
} | |||
groupbox bounds( 0,335, 80,100), text("MIDI"), colour(30, 30, 40), fontcolour(255,100,100){ | |||
rslider bounds( 10,365, 60, 60), text("Uni.Note"), channel("UniNote"), range(0, 127, 72,1,1), trackercolour("red") | |||
keyboard bounds( 80,335,450,100) | |||
} | |||
image bounds( 5, 440, 215, 20), colour(75, 85, 90, 100), plant("credit"), line(0){ | |||
label bounds(0.03, 0.1, .9, .7), text("Author: Iain McCurdy |2012|"), colour("white") | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
;-d -n | |||
-dm0 -n -+rtmidi=null -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 ;SAMPLE RATE | |||
ksmps = 32 ;NUMBER OF AUDIO SAMPLES IN EACH CONTROL CYCLE | |||
nchnls = 2 ;NUMBER OF CHANNELS (2=STEREO) | |||
0dbfs = 1 | |||
massign 0,2 | |||
gibuffer ftgen 0, 0, 1048576, 2, 0 ;Buffer table. Roughly 23 seconds duration. | |||
gibufferR ftgen 0, 0, 1048576, 2, 0 ;right channel | |||
;GRAIN ENVELOPE WINDOW FUNCTION TABLES: | |||
giwfn1 ftgen 0, 0, 131072, 9, .5, 1, 0 ; HALF SINE | |||
giwfn2 ftgen 0, 0, 131072, 7, 0, 3072, 1, 128000, 0 ; PERCUSSIVE - STRAIGHT SEGMENTS | |||
giwfn3 ftgen 0, 0, 131072, 5, .001, 3072, 1, 128000, 0.001 ; PERCUSSIVE - EXPONENTIAL SEGMENTS | |||
giwfn4 ftgen 0, 0, 131072, 7, 0, 1536, 1, 128000, 1, 1536, 0 ; GATE - WITH ANTI-CLICK RAMP UP AND RAMP DOWN SEGMENTS | |||
giwfn5 ftgen 0, 0, 131072, 7, 0, 128000,1, 3072, 0 ; REVERSE PERCUSSIVE - STRAIGHT SEGMENTS | |||
giwfn6 ftgen 0, 0, 131072, 5, .001, 128000,1, 3072, 0.001 ; REVERSE PERCUSSIVE - EXPONENTIAL SEGMENTS | |||
instr 1 | |||
gkOnOff chnget "OnOff" | |||
ktrigger trigger gkOnOff,0.5,0 | |||
schedkwhen ktrigger,0,0,2,0,-1 | |||
ginsamp = ftlen(gibuffer)-1 ;index of the final sample in the function table | |||
gkamp chnget "amp" | |||
gkInGain chnget "InGain" | |||
gkmix chnget "mix" | |||
gkbalance chnget "balance" | |||
gkmonostereo chnget "monostereo" | |||
gkfback chnget "feedback" | |||
gkclip chnget "clip" | |||
gkClipLev chnget "ClipLev" | |||
gkCutoff chnget "Cutoff" | |||
gkpch chnget "pch" | |||
gkLPF_On chnget "LPF_On" | |||
gkwsize chnget "wsize" | |||
gkrnd chnget "rnd" | |||
gkolap chnget "olaps" | |||
gkwfn chnget "wfn" | |||
gkdly chnget "dly" | |||
gkbeta chnget "beta" | |||
gkfreeze chnget "freeze" | |||
gkManPtrPort chnget "ManPtrPort" | |||
gkManPtr chnget "ManPtr" | |||
gkUniNote chnget "UniNote" | |||
ktrigger trigger gkfreeze,0.5,1 ;if 'freeze' switch is turned off... | |||
if ktrigger==1 then | |||
chnset 1-ktrigger,"ManPtr" ;reset Manual Pointer slider to its default (maximum) position | |||
endif | |||
ain inch 1 ;read audio input from the left input channel | |||
ain = ain*gkInGain ;scale input signal according to 'In Gain' control position | |||
outch 1,ain*(1-gkmix) ;send some dry signal to output according to dry/wet 'Mix' control position | |||
gaFBackSig,gaFBackSigR init 0 ;audio feedback signal (initialised for first performance iteration) | |||
/*dc offset filter feedback signal*/ | |||
aFBackSig dcblock2 gaFBackSig ;filter dc offset from left channel feedback signal | |||
if gkmonostereo==3 then ;if 'stereo in' mode is active... | |||
aFBackSigR dcblock2 gaFBackSigR ;filter dc offset from right channel feedback signal | |||
endif | |||
/*lowpass filter feedback signal*/ | |||
if gkLPF_On==1 then ;if lowpass filter button is on... | |||
aFBackSig tone aFBackSig,gkCutoff ;...filter left feedback channel | |||
if gkmonostereo==3 then ;if 'stereo in' mode is active... | |||
aFBackSigR tone aFBackSigR,gkCutoff ;lowpass filter the right channel | |||
endif | |||
endif | |||
/*clip feedback signal*/ | |||
if gkclip==1 then ;if clip switch is on... | |||
ktrig changed gkClipLev ;if clip level control is adjusted generate a trigger impulse (momentary '1') | |||
if ktrig==1 then ;if a trigger impulse has been received... | |||
reinit UPDATE_CLIP_L ;reinitialise clip opcode (clip level is i-rate only) | |||
endif | |||
UPDATE_CLIP_L: | |||
aFBackSig clip aFBackSig, 0, 0dbfs*i(gkClipLev) ;clip left feedback signal at maximum amplitude using bram de jong method | |||
if gkmonostereo==3 then ;and if stereo in/out mode is also chosen | |||
aFBackSigR clip aFBackSigR, 0, 0dbfs*i(gkClipLev) ;clip right channel feedback signal | |||
rireturn | |||
endif | |||
endif | |||
gaphsW phasor (sr*(1-gkfreeze))/ginsamp ;pointer 0 - 1 ;create a moving phase value that will be used to point to locations in a function table where input audio signal will be written | |||
/*write audio from left input to function table*/ | |||
if gkfreeze==0 then | |||
tablew ain+aFBackSig,gaphsW,gibuffer,1 ;write input audio to table | |||
endif | |||
/*if stereo in - stereo out mode*/ | |||
if gkmonostereo==3 then ;if stereo in/out mode has been chosen... | |||
aR inch 2 ;read right channel audio input | |||
aR = aR*gkInGain ;rescale its amplitude with 'Input Gain' slider | |||
if gkfreeze==0 then | |||
tablew aR+aFBackSigR,gaphsW,gibufferR,1 ;write right channel audio input audio to table | |||
endif | |||
outch 2,aR*(1-gkmix) ;if 'stereo in' mode is selected, send some right channel dry signal to output according to dry/wet 'Mix' control position | |||
else | |||
outch 2,ain*(1-gkmix) ;otherwise not 'stereo in' mode so just send some left channel dry signal to output | |||
endif | |||
clear gaFBackSig,gaFBackSigR ;clear feedback signals | |||
endin | |||
instr 2 | |||
iMIDIActiveValue = 1 ;IF MIDI ACTIVATED | |||
iMIDIflag = 0 ;IF FLTK ACTIVATED | |||
mididefault iMIDIActiveValue, iMIDIflag ;IF NOTE IS MIDI ACTIVATED REPLACE iMIDIflag WITH iMIDIActiveValue | |||
kMIDIflag init iMIDIflag | |||
if gkOnOff==0&&iMIDIflag==0 then | |||
turnoff | |||
endif | |||
if iMIDIflag==1 then | |||
icps cpsmidi | |||
kpch = icps/cpsmidinn(gkUniNote) | |||
else | |||
kpch = gkpch | |||
endif | |||
kporttime linseg 0,0.001,0.03 ;portamento time. Rises quickly from zero to a held value. | |||
kpch portk kpch,kporttime ;Apply portamento smoothing to changes made to the pitch multiplier | |||
apch interp kpch ;interpolate pitch multiplier variable to create an a-rate version. This will produce higher quality results when pitch is modulated. | |||
kManPtr portk gkManPtr,kporttime*10*gkfreeze*gkManPtrPort | |||
ktrig changed gkwsize,gkrnd,gkolap,gkwfn ;if any of the list of input args. change, generate a trigger impulse (momentary '1'). The input args are all i-rate in sndwarp so reinitialisation will be required for their changes to register. | |||
if ktrig==1 then ;if a trigger hass been generated... | |||
reinit UPDATE_SNDWARP ;... begin a reinitialisation pass from the given label | |||
endif | |||
UPDATE_SNDWARP: ;a label. Reinitialisation begins from here. | |||
imode = 1 ;sndwarp mode. (1=pointer mode, timestretch mode not so useful in a live audio in application) | |||
ibeg = 0 ;point in the function table from which to begin reading audio (0=beginning) | |||
iwsize = i(gkwsize) ;window (grain) size in samples | |||
irnd = i(gkrnd) ;window (grain) size randomisation bandwidth in samples | |||
iolap = i(gkolap) ;number of grain overlaps | |||
kRndDly betarand gkdly,1,gkbeta ;random grain delay time | |||
if gkmonostereo!=0 then | |||
kRndDlyR betarand gkdly,1,gkbeta ;random grain delay time | |||
endif | |||
iMaxDur = (iwsize+irnd)/sr ;maximum grain duration in seconds | |||
kTransComp limit iMaxDur*(kpch-1),0,ginsamp/sr | |||
kdelay = (kTransComp+kRndDly) / (ginsamp/sr) ;delay time required when reading grains from the function table | |||
if gkmonostereo!=0 then | |||
kdelayR = (kTransComp+kRndDlyR) / (ginsamp/sr) ;delay time required when reading grains from the function table | |||
endif | |||
if gkfreeze==1 then | |||
kdelay = kdelay + (sr/(ginsamp)*1.75*iwsize/sr) ;if freeze mode is active regress the read pointer a small amount | |||
if gkmonostereo!=0 then | |||
kdelayR = kdelayR + (sr/(ginsamp)*1.75*iwsize/sr) ;if freeze mode is active regress the read pointer a small amount | |||
endif | |||
endif | |||
aphsR wrap (gaphsW-kdelay+kManPtr)*(ginsamp/sr),0,(ginsamp-iwsize-irnd)/sr ;location from which to read grain. This is always directly related to the poistion of the write pointer. | |||
aphsR_R wrap (gaphsW-kdelayR+kManPtr)*(ginsamp/sr),0,(ginsamp-iwsize-irnd)/sr ;location from which to read grain. This is always directly related to the poistion of the write pointer. | |||
iwfn = giwfn1+i(gkwfn)-1 ;Grain amplitude windowing shape | |||
/*sndwarp*/ | |||
asig,ac sndwarp 1, aphsR, apch, gibuffer, ibeg, iwsize, irnd, iolap, iwfn, imode | |||
if gkbalance==1 then ;if 'balance switch is on... | |||
asig balance asig,ac ;... amplitude balance the signal | |||
endif | |||
if gkmonostereo==1 then ;if 'mono' mode seleced... | |||
gaFBackSig = gaFBackSig+(asig*gkfback) ;create feedback signal for next iteration. (This will be written into the function table along with the live audio in.) | |||
aR = asig | |||
elseif gkmonostereo==2 then ;or if 'stereo out' mode | |||
aR,acR sndwarp 1, aphsR_R, apch, gibuffer, ibeg, iwsize, irnd, iolap, iwfn, imode | |||
if gkbalance==1 then | |||
aR balance aR,acR | |||
endif | |||
gaFBackSig = gaFBackSig+((asig+aR)*gkfback) ;create feedback signal, a mixture of the left and right sndwarp output channels | |||
else ;otherwise 'stereo in/out' mode | |||
aR,acR sndwarp 1, aphsR_R, apch, gibufferR, ibeg, iwsize, irnd, iolap, iwfn, imode | |||
if gkbalance==1 then | |||
aR balance aR,acR | |||
endif | |||
gaFBackSig = gaFBackSig+(asig*gkfback) ;left channel feedback signal | |||
gaFBackSig = gaFBackSig+(aR*gkfback) ;right channel feedback signal | |||
endif | |||
rireturn ;return from reinitialisation | |||
aAntiClick linsegr 0,0.03,1,0.03,0 | |||
outs asig*gkamp*gkmix*aAntiClick, aR*gkamp*gkmix*aAntiClick ;send audio to outputs | |||
endin | |||
instr UpdateWidgets | |||
ksemis chnget "semis" ;read in 'semis' widget | |||
ktrig1 changed ksemis ;if 'semis' knob is moved... | |||
if ktrig1==1 then | |||
chnset semitone(ksemis), "pch" ;update 'Pitch' knob with the value of semis (converted to a ratio) | |||
endif | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [3600*24*7] | |||
;i 2 0 [3600*24*7] | |||
i "UpdateWidgets" 0 [3600*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> | |||
@@ -0,0 +1,71 @@ | |||
<Cabbage> | |||
form caption("Lowpass Filter") size(435, 90), pluginID("LPFl") | |||
image pos(0, 0), size(435, 90), colour( 70, 90,100), shape("rounded"), outline("white"), line(4) | |||
label bounds( 22, 22, 60, 11), text("INPUT"), fontcolour("white") | |||
combobox bounds( 10, 33, 60, 20), channel("input"), value(1), text("Live","Tone","Noise") | |||
rslider bounds( 75, 11, 70, 70), channel("cf"), text("Freq."), colour( 0, 40, 50), trackercolour(200,240,250), fontcolour("white"), range(20, 20000, 20000, 0.333) | |||
rslider bounds(140, 11, 70, 70), channel("res"), text("Res."), colour( 0, 40, 50), trackercolour(200,240,250), fontcolour("white"), range(0,1.00,0) | |||
rslider bounds(205, 11, 70, 70), channel("mix"), text("Mix"), colour( 0, 40, 50), trackercolour(200,240,250), fontcolour("white"), range(0,1.00,1) | |||
button bounds(280, 10, 80, 20), channel("steepness"), text("12dB/oct","24dB/oct"), value(0) | |||
label bounds(290, 30, 80, 12), text("Steepness"), FontColour("white") | |||
checkbox bounds(280, 50, 80, 15), channel("ResType"), FontColour("white"), value(0), text("Resonant"), colour(yellow) | |||
rslider bounds(360, 11, 70, 70), text("Level"), colour( 0, 40, 50), trackercolour(200,240,250), fontcolour("white"), channel("level"), range(0, 1.00, 1) | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 ;SAMPLE RATE | |||
ksmps = 32 ;NUMBER OF AUDIO SAMPLES IN EACH CONTROL CYCLE | |||
nchnls = 2 ;NUMBER OF CHANNELS (2=STEREO) | |||
0dbfs = 1 | |||
;Author: Iain McCurdy (2012) | |||
instr 1 | |||
kcf chnget "cf" ; | |||
kres chnget "res" ; | |||
kmix chnget "mix" ; | |||
ksteepness chnget "steepness" ; | |||
kResType chnget "ResType" ; | |||
klevel chnget "level" ; | |||
kporttime linseg 0,0.001,0.02 | |||
kcf portk kcf,kporttime | |||
/* INPUT */ | |||
kinput chnget "input" | |||
if kinput=1 then | |||
aL,aR ins | |||
elseif kinput=2 then | |||
aL vco2 0.2, 100 | |||
aR = aL | |||
else | |||
aL pinkish 0.2 | |||
aR pinkish 0.2 | |||
endif | |||
if ksteepness==0&&kResType!=1 then | |||
aFiltL tone aL,kcf | |||
aFiltR tone aR,kcf | |||
elseif ksteepness==1&&kResType!=1 then | |||
aFiltL butlp aL,kcf | |||
aFiltR butlp aR,kcf | |||
elseif kResType==1 then | |||
aFiltL moogladder aL,kcf,kres | |||
aFiltR moogladder aR,kcf,kres | |||
endif | |||
aL ntrpol aL,aFiltL,kmix | |||
aR ntrpol aR,aFiltR,kmix | |||
outs aL*klevel,aR*klevel | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [3600*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,233 @@ | |||
; Modulating Delays - randomly modulating delays | |||
; GATE (for gating the incoming signal) | |||
; On Thrsh / Off Thrsh - thresholds at which the gate will open and close | |||
; Rise Time - time it takes for the gate to ramp open | |||
; Rel Time - time it takes for the gate to ramp closed | |||
; SETUP | |||
; Pan Width - extent of the random panning effect (0 = all layers centred) | |||
; Spread - spread of the delay times of the different layers (if only 1 layer is active this control isn't really useful) | |||
; if 'spread' is zero, all layers' delay time modulated between 'Min Time' and 'Max Time' | |||
; Layers - Number of layers of modualting delays | |||
; REVERB - there is a reverb effect within the each delay buffer | |||
; Amount - amount of reverb signal added to the output of the delay buffer - within the delay buffer -, this will therefore be mixed into the feedback signal and fed back into to reverb also | |||
; Time - reverb time | |||
; Damping - damping of high frequencies within the delay effect | |||
; ** CAUTION MUST BE TAKEN WHEN USING HIGH LEVELS OF DELAY FEEDBACK WITH A HIGH REVERB AMOUNT AS OVERLOADING CAN QUICKLY OCCUR ** | |||
; OUTPUT | |||
; Dry - level control for the dry (post gate) signal | |||
; Wet - level control for the wet (delayed) signal | |||
; SLIDERS | |||
; Min Time - Minimum delay time in the delay time random modulation | |||
; Max Time - Maximum delay time in the delay time random modulation | |||
; Min Rate - Minimum rate in the random modulation | |||
; Max Rate - Maximum rate in the random modulation | |||
; Min F.back - Minimum feedback value in the modulation of delay feedback values | |||
; Max F.back - Maximum feedback value in the modulation of delay feedback values | |||
; Min Tone - Minimum cutoff frequency in a randomly modulting low-pass filter within each delay buffer | |||
; Max Tone - Maximum cutoff frequency in a randomly modulting low-pass filter within each delay buffer | |||
<Cabbage> | |||
form size(960, 340), caption("Modulating Delays"), pluginID("mdel") | |||
label bounds(200, 5, 80, 11), text("G A T E"), fontcolour("white") | |||
checkbox bounds( 10, 35,100, 20), text("Gate On/Off") channel("GateActive"), FontColour("White"), colour("lime") value(1) | |||
rslider bounds(100, 20, 60, 60), channel("OnThreshold"), text("On Thrsh."), range(0, 1, 0.05, 0.5, 0.001), colour(30,30,30) trackercolour(100,100,100) | |||
rslider bounds(160, 20, 60, 60), channel("OffThreshold"), text("Off Thrsh."), range(0, 1, 0.01, 0.5, 0.001), colour(30,30,30) trackercolour(100,100,100) | |||
rslider bounds(220, 20, 60, 60), channel("RiseTime"), text("Rise Time"), range(0, 10, 1, 0.5, 0.001), colour(30,30,30) trackercolour(100,100,100) | |||
rslider bounds(280, 20, 60, 60), channel("RelTime"), text("Rel.Time"), range(0, 10, 0.01, 0.5, 0.001), colour(30,30,30) trackercolour(100,100,100) | |||
checkbox bounds(340, 35, 90, 15), text("Gating") channel("gating"), FontColour("White"), colour("red") value(0) shape(ellipse) | |||
label bounds(487, 5, 80, 11), text("S E T U P"), fontcolour("white") | |||
line bounds(405, 25, 3, 50), colour("Grey") | |||
rslider bounds(420, 20, 60, 60), channel("width"), text("Pan Width"),range(0, 0.5, 0.5), colour(100,100,100) trackercolour(100,100,100) | |||
rslider bounds(480, 20, 60, 60), channel("spread"), text("Spread"), range(0, 4, 1, 0.5, 0.001), colour(100,100,100) trackercolour(100,100,100) | |||
rslider bounds(540, 20, 60, 60), channel("layers"), text("Layers"), range(1, 22, 8,1,1), colour(100,100,100) trackercolour(100,100,100) | |||
line bounds(610, 25, 3, 50), colour("Grey") | |||
label bounds(680, 5, 80, 11), text("R E V E R B"), fontcolour("white") | |||
rslider bounds(620, 20, 60, 60), channel("RvbAmt"), text("Amount"), range(0, 0.2, 0.06,1,0.001), colour(100,100,100) trackercolour(100,100,100) | |||
rslider bounds(680, 20, 60, 60), channel("RvbTime"), text("Time"), range(0.01,10, 7), colour(100,100,100) trackercolour(100,100,100) | |||
rslider bounds(740, 20, 60, 60), channel("damping"), text("Damping"), range(0, 1, 0.5), colour(100,100,100) trackercolour(100,100,100) | |||
line bounds(810, 25, 3, 50), colour("Grey") | |||
label bounds(856, 5, 80, 11), text("O U T P U T"), fontcolour("white") | |||
rslider bounds(825, 20, 60, 60), channel("dry"), text("Dry"), range(0, 4, 0, 0.5, 0.001), colour(160,160,160) trackercolour(160,160,160) | |||
rslider bounds(885, 20, 60, 60), channel("wet"), text("Wet"), range(0, 4, 1, 0.5, 0.001), colour(160,160,160) trackercolour(160,160,160) | |||
line bounds( 0, 95,960, 3), colour("Grey") | |||
hslider bounds(10,110, 940, 30), channel("MinTime"), text(Delay Time Minimum), range(0.001, 10, 0.131, 0.5, 0.000001),colour("blue"), trackercolour(blue) | |||
hslider bounds(10,130, 940, 30), channel("MaxTime"), text(Delay Time Maximum), range(0.001, 10, 0.9, 0.5, 0.000001), colour("blue"), trackercolour(blue) | |||
hslider bounds(10,160, 940, 30), channel("MinRate"), text(Random Rate Minimum), range(0.001, 10, 0.1, 0.5, 0.00001), colour("red"), trackercolour(red) | |||
hslider bounds(10,180, 940, 30), channel("MaxRate"), text(Random Rate Maximum), range(0.001, 10, 0.2, 0.5, 0.00001), colour("red"), trackercolour(red) | |||
hslider bounds(10,210, 940, 30), channel("MinFB"), text(Delay Feedback Minimum), range(0, 0.999, 0.95,1,0.001), colour("yellow"), trackercolour(yellow) | |||
hslider bounds(10,230, 940, 30), channel("MaxFB"), text(Delay Feedback Maximum), range(0, 0.999, 0.975,1,0.001), colour("yellow"), trackercolour(yellow) | |||
hslider bounds(10,260, 940, 30), channel("MinTone"), text(Tone Cutoff Frequency Minimum), range(4, 14, 11), colour(purple), trackercolour(purple) | |||
hslider bounds(10,280, 940, 30), channel("MaxTone"), text(Tone Cutoff Frequency Maximum), range(4, 14, 14), colour(purple), trackercolour(purple) | |||
label bounds( 10,320, 200, 12), text("Author: Iain McCurdy |2013|"), FontColour("grey") | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-n -d | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 16 | |||
nchnls = 2 | |||
0dbfs=1 | |||
opcode DelayIteration,aa,aakkkkkkkkkkkKiii | |||
aL,aR,kMinTime,kMaxTime,kMinRate,kMaxRate,kMinFB,kMaxFB,kwidth,kMinTone,kMaxTone,kRvbAmt,kRvbTime,kdamping,ispread,icount,ilayers xin | |||
kdel rspline kMinTime,kMaxTime,kMinRate,kMaxRate | |||
kdel limit kdel,0.001,10 | |||
adel interp kdel | |||
kFB rspline kMinFB,kMaxFB,kMinRate,kMaxRate | |||
kFB limit kFB,0,1 | |||
iMaxDel = 10 | |||
iws = 4 | |||
aout1, aout2 init 0 | |||
ktone rspline kMinTone, kMaxTone,kMinRate,kMaxRate | |||
ktone = cpsoct(ktone) | |||
idelOS random 0,ispread | |||
abuf delayr iMaxDel+idelOS | |||
aout1 deltap3 adel+idelOS | |||
arvb nreverb aout1, kRvbTime, kdamping | |||
aout1 = aout1 + arvb*kRvbAmt | |||
aout1 dcblock2 aout1 | |||
aout1 tone aout1,ktone | |||
delayw aL + aout1*kFB | |||
abuf delayr iMaxDel+idelOS | |||
aout2 deltap3 adel+idelOS | |||
arvb nreverb aout2, kRvbTime, kdamping | |||
aout2 = aout2 + arvb*kRvbAmt | |||
aout2 dcblock2 aout2 | |||
aout2 tone aout2,ktone | |||
delayw aR + aout2*kFB | |||
kpan rspline 0.5-kwidth,0.5+kwidth,kMinRate,kMaxRate | |||
kpan limit kpan,0,1 | |||
apan interp kpan | |||
aout1 = aout1*(1-apan) | |||
aout2 = aout2*(apan) | |||
amix1,amix2 init 0 | |||
amix1 = 0 | |||
amix2 = 0 | |||
if icount<ilayers then | |||
amix1,amix2 DelayIteration aL,aR,kMinTime,kMaxTime,kMinRate,kMaxRate,kMinFB,kMaxFB,kwidth,kMinTone,kMaxTone,kRvbAmt,kRvbTime,kdamping,ispread,icount+1,ilayers | |||
endif | |||
xout aout1+amix1, aout2+amix2 | |||
endop | |||
opcode SwitchPort, k, kki | |||
kin,kupport,idnport xin | |||
kold init 0 | |||
kporttime = (kin<kold?idnport:kupport) | |||
kout portk kin, kporttime | |||
kold = kout | |||
xout kout | |||
endop | |||
instr 1 | |||
kporttime linseg 0,0.001,1 | |||
aL,aR ins | |||
;aL,aR diskin2 "Synthpad.wav",1,0,1 | |||
;aL diskin2 "loop.wav",1,0,1 | |||
;aR = aL | |||
kMinTime chnget "MinTime" | |||
kMaxTime chnget "MaxTime" | |||
kMinTime portk kMinTime,kMinTime | |||
kMaxTime portk kMaxTime,kMaxTime | |||
kspread chnget "spread" | |||
kMinRate chnget "MinRate" | |||
kMaxRate chnget "MaxRate" | |||
kMinFB chnget "MinFB" | |||
kMaxFB chnget "MaxFB" | |||
kwidth chnget "width" | |||
kMinTone chnget "MinTone" | |||
kMaxTone chnget "MaxTone" | |||
kres chnget "res" | |||
klayers chnget "layers" | |||
klayers init 1 | |||
kdry chnget "dry" | |||
kwet chnget "wet" | |||
kGateActive chnget "GateActive" | |||
kOnThreshold chnget "OnThreshold" | |||
kOffThreshold chnget "OffThreshold" | |||
kRiseTime chnget "RiseTime" | |||
kRelTime chnget "RelTime" | |||
kRvbAmt chnget "RvbAmt" | |||
kRvbTime chnget "RvbTime" | |||
kdamping chnget "damping" | |||
/* GATE */ | |||
if kGateActive=1 then | |||
krms rms (aL+aR)*0.5 | |||
kthreshold init i(kOnThreshold) | |||
kon = 1 | |||
koff = 0 | |||
if krms>kthreshold then | |||
kgate = 1 | |||
kthreshold = kOnThreshold | |||
chnset koff,"gating" | |||
else | |||
kgate = 0 | |||
kthreshold = kOffThreshold | |||
chnset kon,"gating" | |||
endif | |||
kgate SwitchPort kgate,kRiseTime,0.1 | |||
kgate expcurve kgate,8 | |||
agate interp kgate | |||
aL = aL * agate | |||
aR = aR * agate | |||
endif | |||
ktrig trigger kGateActive,0.5,1 | |||
if ktrig=1 then | |||
chnset koff,"gating" | |||
endif | |||
/* REINITIALISING */ | |||
ktrig changed klayers,kspread | |||
if ktrig=1 then | |||
reinit UPDATE | |||
endif | |||
UPDATE: | |||
/* CALL THE UDO */ | |||
aout1,aout2 DelayIteration aL,aR,kMinTime,kMaxTime,kMinRate,kMaxRate,kMinFB,kMaxFB,kwidth,kMinTone,kMaxTone,kRvbAmt,kRvbTime,kdamping,i(kspread),1,i(klayers) | |||
rireturn | |||
outs (aout1 * kwet) + (aL * kdry), (aout2 * kwet) + (aR * kdry) | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 360000 | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,76 @@ | |||
Reverb effect that employs screverb and freeverb opcodes. | |||
Pitch Mod. is only used by reverbsc. | |||
<Cabbage> | |||
form caption("Multi Reverb") size(415, 90), pluginID("Rvrb") | |||
image bounds( 7, 22, 73, 45), colour( 39, 31, 20), shape("rounded"), outline(white), line(1) | |||
image bounds(0, 0, 415, 90), colour( 39, 31, 20), shape("rounded"), outline("white"), line(4) | |||
label bounds( 29, 26, 60, 12), text("Type"), fontColour(white) | |||
button bounds( 11, 40, 66, 20), text("screverb","freeverb"), channel("type"), value(0), fontcolour("lime") | |||
rslider bounds( 80, 11, 70, 70), text("Size"), fontcolour(white), channel("fblvl"), range(0, 1.00, 0.8), colour( 79, 81, 70), trackercolour(240,210,170) | |||
rslider bounds(145, 11, 70, 70), text("Damping"), fontcolour(white), channel("fco"), range(0, 1.00, 0.6), colour( 79, 81, 70), trackercolour(240,210,170) | |||
rslider bounds(210, 11, 70, 70), text("Pitch Mod."), fontcolour(white), channel("pitchm"), range(0, 20.0, 1), colour( 79, 81, 70), trackercolour(240,210,170) | |||
rslider bounds(275, 11, 70, 70), text("Mix"), fontcolour(white), channel("mix"), range(0, 1.00, 1), colour( 79, 81, 70), trackercolour(240,210,170) | |||
rslider bounds(340, 11, 70, 70), text("Level"), fontcolour(white), channel("amp"), range(0, 1.00, 1), colour( 79, 81, 70), trackercolour(240,210,170) | |||
} | |||
image bounds(5, 95, 205, 20), colour(75, 85, 90, 100), plant("credit"), line(0){ | |||
label bounds(0.03, 0.1, .95, .7), text("Author: Iain McCurdy |2012|"), colour("white") | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 ;SAMPLE RATE | |||
ksmps = 32 ;NUMBER OF AUDIO SAMPLES IN EACH CONTROL CYCLE | |||
nchnls = 2 ;NUMBER OF CHANNELS (2=STEREO) | |||
0dbfs = 1 | |||
;Author: Iain McCurdy (2012) | |||
instr 1 | |||
ktype chnget "type" ;READ WIDGETS... | |||
kfblvl chnget "fblvl" ; | |||
kfco chnget "fco" ; | |||
kpitchm chnget "pitchm" ; | |||
kmix chnget "mix" ; | |||
kamp chnget "amp" ; | |||
ainL,ainR ins | |||
denorm ainL, ainR ;DENORMALIZE BOTH CHANNELS OF AUDIO SIGNAL | |||
if ktype==0 then | |||
kfco expcurve kfco, 4 ;CREATE A MAPPING CURVE TO GIVE A NON LINEAR RESPONSE | |||
kfco scale kfco,20000,20 ;RESCALE 0 - 1 TO 20 TO 20000 | |||
kSwitch changed kpitchm ;GENERATE A MOMENTARY '1' PULSE IN OUTPUT 'kSwitch' IF ANY OF THE SCANNED INPUT VARIABLES CHANGE. (OUTPUT 'kSwitch' IS NORMALLY ZERO) | |||
if kSwitch=1 then ;IF kSwitch=1 THEN | |||
reinit UPDATE ;BEGIN A REINITIALIZATION PASS FROM LABEL 'UPDATE' | |||
endif ;END OF CONDITIONAL BRANCHING | |||
UPDATE: ;A LABEL | |||
arvbL, arvbR reverbsc ainL, ainR, kfblvl, kfco, sr, i(kpitchm) | |||
rireturn ;RETURN TO PERFORMANCE TIME PASSES | |||
else | |||
arvbL, arvbR freeverb ainL, ainR, kfblvl, 1-kfco | |||
endif | |||
amixL ntrpol ainL, arvbL, kmix ;CREATE A DRY/WET MIX BETWEEN THE DRY AND THE REVERBERATED SIGNAL | |||
amixR ntrpol ainR, arvbR, kmix ;CREATE A DRY/WET MIX BETWEEN THE DRY AND THE REVERBERATED SIGNAL | |||
outs amixL * kamp, amixR * kamp | |||
endin | |||
instr 3 ;workaround for failure of these widgets from intiialising properly when used as a plugin | |||
;chnset 12000,"fco" | |||
chnset 1,"pitchm" | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [3600*24*7] | |||
i 3 0 0 | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,87 @@ | |||
; phaser1.csd | |||
; Iain McCurdy 2012 | |||
<Cabbage> | |||
form caption("phaser1") size(350, 90), pluginID("phs1") | |||
image pos(0, 0), size(350, 90), colour(80,20,20), shape("rounded"), outline("white"), line(4) | |||
rslider bounds(10, 11, 70, 70), text("Frequency"), channel("freq"), range(20.0, 5000, 160, 0.25), colour(80,20,20), fontcolour("white"), trackercolour(180,120,120) | |||
rslider bounds(75, 11, 70, 70), text("Feedback"), channel("feedback"), range(-0.99, 0.99, 0.9), colour(80,20,20), fontcolour("white"), trackercolour(180,120,120) | |||
rslider bounds(140, 11, 70, 70), text("N.Ords."), channel("ord"), range(1, 256, 32, 0.5,1), colour(80,20,20), fontcolour("white"), trackercolour(180,120,120) | |||
rslider bounds(205, 11, 70, 70), text("Mix"), channel("mix"), range(0, 1.00, 1), colour(80,20,20), fontcolour("white"), trackercolour(180,120,120) | |||
rslider bounds(270, 11, 70, 70), text("Level"), channel("level"), range(0, 1.00, 0.7), colour(80,20,20), fontcolour("white"), trackercolour(180,120,120) | |||
} | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 ;SAMPLE RATE | |||
ksmps = 32 ;NUMBER OF AUDIO SAMPLES IN EACH CONTROL CYCLE | |||
nchnls = 2 ;NUMBER OF CHANNELS (2=STEREO) | |||
0dbfs = 1 | |||
;Author: Iain McCurdy (2012) | |||
instr 1 | |||
gkfreq chnget "freq" ;READ WIDGETS... | |||
gkfeedback chnget "feedback" ; | |||
gkord chnget "ord" ; | |||
gkmix chnget "mix" ; | |||
gklevel chnget "level" ; | |||
;asigL, asigR diskin2 "Seashore.wav",1,0,1 ; | |||
asigL, asigR ins | |||
kporttime linseg 0,0.01,0.03 ;CREATE A VARIABLE THAT WILL BE USED FOR PORTAMENTO TIME | |||
kfreq portk gkfreq, kporttime ;PORTAMENTO IS APPLIED TO 'SMOOTH' SLIDER MOVEMENT | |||
kSwitch changed gkord ;GENERATE A MOMENTARY '1' PULSE IN OUTPUT 'kSwitch' IF ANY OF THE SCANNED INPUT VARIABLES CHANGE. (OUTPUT 'kSwitch' IS NORMALLY ZERO) | |||
if kSwitch=1 then ;IF I-RATE VARIABLE CHANGE TRIGGER IS '1'... | |||
reinit UPDATE ;BEGIN A REINITIALISATION PASS FROM LABEL 'UPDATE' | |||
endif ;END OF CONDITIONAL BRANCH | |||
UPDATE: ;BEGIN A REINITIALISATION PASS FROM HERE | |||
aphaserl phaser1 asigL, kfreq, gkord, gkfeedback ;PHASER1 IS APPLIED TO THE LEFT CHANNEL | |||
aphaserr phaser1 asigR, kfreq, gkord, gkfeedback ;PHASER1 IS APPLIED TO THE RIGHT CHANNEL | |||
rireturn ;RETURN FROM REINITIALISATION PASS TO PERFORMANCE TIME PASSES | |||
amixL ntrpol asigL,aphaserl,gkmix | |||
amixR ntrpol asigR,aphaserr,gkmix | |||
outs amixL*gklevel, amixR*gklevel ;PHASER OUTPUT ARE SENT TO THE SPEAKERS | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [3600*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> | |||
@@ -0,0 +1,95 @@ | |||
<Cabbage> | |||
form caption("phaser2") size(565, 90), pluginID("phs2") | |||
image pos(0, 0), size(565, 90), colour(0,0,25), shape("rounded"), outline("white"), line(4) | |||
rslider bounds(10, 11, 70, 70), text("Frequency"), channel("freq"), range(20.0, 5000, 160, 0.25), colour(100,100,200), trackercolour(silver) | |||
rslider bounds(75, 11, 70, 70), text("Q"), channel("q"), range(0.0001,4,3), colour(100,100,200), trackercolour(silver) | |||
rslider bounds(140, 11, 70, 70), text("N.Ords."), channel("ord"), range(1, 256, 8, 0.5,1), colour(100,100,200), trackercolour(silver) | |||
label bounds(220, 20, 60,12), text("Sep. Mode") | |||
rslider bounds(290, 11, 70, 70), text("Separation"), channel("sep"), range(-3, 3.00, 0.9), colour(100,100,200), trackercolour(silver) | |||
rslider bounds(355, 11, 70, 70), text("Feedback"), channel("feedback"), range(-0.99, 0.99, 0.9), colour(100,100,200), trackercolour(silver) | |||
rslider bounds(420, 11, 70, 70), text("Mix"), channel("mix"), range(0, 1.00, 1), colour(100,100,200), trackercolour(silver) | |||
rslider bounds(485, 11, 70, 70), text("Level"), channel("level"), range(0, 1.00, 0.7), colour(100,100,200), trackercolour(silver) | |||
combobox bounds(210, 34, 80,25), channel("mode"), size(100,50), value(1), text("Equal", "Power") | |||
} | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 ;SAMPLE RATE | |||
ksmps = 32 ;NUMBER OF AUDIO SAMPLES IN EACH CONTROL CYCLE | |||
nchnls = 2 ;NUMBER OF CHANNELS (2=STEREO) | |||
0dbfs = 1 | |||
;Author: Iain McCurdy (2012) | |||
instr 1 | |||
gkfreq chnget "freq" ;READ WIDGETS... | |||
gkq chnget "q" ; | |||
gkmode chnget "mode" ; | |||
gkmode init 1 | |||
gkmode init i(gkmode)-1 | |||
gksep chnget "sep" ; | |||
gkfeedback chnget "feedback" ; | |||
gkord chnget "ord" ; | |||
gkmix chnget "mix" ; | |||
gklevel chnget "level" ; | |||
;asigL, asigR diskin2 "Seashore.wav",1,0,1 ;USE SOUND FILE FOR TESTING | |||
asigL, asigR ins | |||
kporttime linseg 0,0.01,0.03 ;CREATE A VARIABLE THAT WILL BE USED FOR PORTAMENTO TIME | |||
kfreq portk gkfreq, kporttime ;PORTAMENTO IS APPLIED TO 'SMOOTH' SLIDER MOVEMENT | |||
kq portk gkq, kporttime ;PORTAMENTO IS APPLIED TO 'SMOOTH' SLIDER MOVEMENT | |||
ksep portk gksep, kporttime ;PORTAMENTO IS APPLIED TO 'SMOOTH' SLIDER MOVEMENT | |||
kSwitch changed gkord,gkmode ;GENERATE A MOMENTARY '1' PULSE IN OUTPUT 'kSwitch' IF ANY OF THE SCANNED INPUT VARIABLES CHANGE. (OUTPUT 'kSwitch' IS NORMALLY ZERO) | |||
if kSwitch=1 then ;IF I-RATE VARIABLE CHANGE TRIGGER IS '1'... | |||
reinit UPDATE ;BEGIN A REINITIALISATION PASS FROM LABEL 'UPDATE' | |||
endif ;END OF CONDITIONAL BRANCH | |||
UPDATE: ;BEGIN A REINITIALISATION PASS FROM HERE | |||
aphaserl phaser2 asigL, kfreq, kq, gkord, gkmode, ksep, gkfeedback ; PHASER2 IS APPLIED TO THE LEFT CHANNEL | |||
aphaserr phaser2 asigR, kfreq, kq, gkord, gkmode, ksep, gkfeedback ; PHASER1 IS APPLIED TO THE RIGHT CHANNEL | |||
rireturn ;RETURN FROM REINITIALISATION PASS TO PERFORMANCE TIME PASSES | |||
amixL ntrpol asigL,aphaserl,gkmix | |||
amixR ntrpol asigR,aphaserr,gkmix | |||
outs amixL*gklevel, amixR*gklevel ;PHASER OUTPUTS ARE SENT OUT | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [3600*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> | |||
@@ -0,0 +1,154 @@ | |||
; Reverse.csd | |||
; Iain McCurdy [2012] | |||
; | |||
; Buffers audio for reversed (and forward) playback. | |||
; | |||
; INSTRUCTIONS | |||
; ------------ | |||
; Time L -- length of the left channel delay buffer | |||
; Time R -- length of the right channel delay buffer | |||
; Spread -- stereo spread of the two channel. 1 = hard left and right | |||
; Mix -- dry/wet mix | |||
; Level -- output level | |||
; Reverse -- (switch) activate reversed buffer | |||
; Forward -- (switch) activate forward buffer | |||
; Link L&R -- (switch) pair the left and right Time controls (functions differently if 'Time Mod' is activated) | |||
; Time Mod -- (switch) if this switch is on the delay times for both channels will modulate randomly between 'Time L' and 'Time R'. If 'Link L&R' is active this modulation is done in tandem for both channels. | |||
; Pan Mod -- (switch) if this switch is on the panning modulates randomly | |||
<Cabbage> | |||
form caption("Reverse") size(455, 95), pluginID("rvrs") | |||
image bounds(0, 0, 455, 95), colour("darkslategrey"), shape("rounded"), outline("white"), line(4) | |||
rslider bounds( 10, 10, 75, 75), text("Time L"), channel("timeL"), range(0.010, 4, 1, 0.5,0.001),colour(darkslategrey) fontcolour(255,255,200), trackercolour(lightblue) | |||
rslider bounds( 80, 10, 75, 75), text("Time R"), channel("timeR"), range(0.010, 4, 1, 0.5,0.001),colour(darkslategrey) fontcolour(255,255,200), trackercolour(lightblue) | |||
rslider bounds(150, 10, 75, 75), text("Spread"), channel("spread"), range(0, 1.00, 1), colour(darkslategrey) fontcolour(255,255,200), trackercolour(lightblue) | |||
rslider bounds(220, 10, 75, 75), text("Mix"), channel("mix"), range(0, 1.00, 1), colour(darkslategrey) fontcolour(255,255,200), trackercolour(lightblue) | |||
rslider bounds(290, 10, 75, 75), text("Level"), channel("level"), range(0, 1.00, 1, 0.5), colour(darkslategrey) fontcolour(255,255,200), trackercolour(lightblue) | |||
checkbox bounds(370, 12, 100, 12), text("Reverse"), channel("reverse"), value(1), colour(255,255, 50) fontcolour(255,255,200) | |||
checkbox bounds(370, 27, 100, 12), text("Forward"), channel("forward"), value(0), colour(255,255, 50) fontcolour(255,255,200) | |||
checkbox bounds(370, 42, 100, 12), text("Link L&R"), channel("link"), value(0), colour(255,255, 50) fontcolour(255,255,200) | |||
checkbox bounds(370, 57, 100, 12), text("Time Mod."), channel("TMod"), value(0), colour(255,255, 50) fontcolour(255,255,200) | |||
checkbox bounds(370, 72, 100, 12), text("Pan Mod."), channel("PMod"), value(0), colour(255,255, 50) fontcolour(255,255,200) | |||
} | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 32 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
;Author: Iain McCurdy (2012) | |||
;http://iainmccurdy.org/csound.html | |||
opcode Reverse, a, aKkkk ;nb. CAPITAL K CREATE A K-RATE VARIABLE THAT HAS A USEFUL VALUE ALSO AT I-TIME | |||
ain,ktime,kreverse,kforward,klink xin ;READ IN INPUT ARGUMENTS | |||
;four windowing envelopes. An appropriate one will be chosen based on the reversed chunk duration | |||
ienv1 ftgenonce 0, 0, 131072, 7, 0, 1024, 1, 131072-(1024*2), 1, 1024, 0 ;for longest chunk times | |||
ienv2 ftgenonce 0, 0, 131072, 7, 0, 4096, 1, 131072-(4096*2), 1, 4096, 0 | |||
ienv3 ftgenonce 0, 0, 131072, 7, 0,16384, 1, 131072-(16384*2), 1, 16384, 0 | |||
ienv4 ftgenonce 0, 0, 131072, 7, 0,32768, 1, 131072-(32768*2), 1, 32768, 0 ;for shortest chunk times | |||
atime interp ktime ;INTERPOLATE TO CREATE A-RATE VERSION OF K-TIME | |||
iratio = octave(1) | |||
ktrig trigger klink,0.5,0 ;if 'Link L&R' is turned on restart delay time phasors to ensure sync between the two channels | |||
if ktrig=1 then | |||
reinit RESTART_PHASOR | |||
endif | |||
RESTART_PHASOR: | |||
aptr phasor (2/ktime) ;CREATE A MOVING PHASOR THAT WITH BE USED TO TAP THE DELAY BUFFER | |||
rireturn | |||
if ktime<0.2 then ;IF CHUNK TIME IS LESS THAN 0.2... (VERY SHORT) | |||
aenv table3 aptr,ienv4,1 ;CREATE AMPLITUDE ENVELOPE | |||
elseif ktime<0.4 then | |||
aenv table3 aptr,ienv3,1 | |||
elseif ktime<2 then | |||
aenv table3 aptr,ienv2,1 | |||
else ;other longest bracket of delay times | |||
aenv table3 aptr,ienv1,1 | |||
endif | |||
aptr = aptr*atime ;SCALE PHASOR ACCORDING TO THE LENGTH OF THE DELAY TIME CHOSEN BY THE USER | |||
abuffer delayr 4 ;+ 0.01 ;CREATE A DELAY BUFFER | |||
abwd deltap3 aptr ;READ AUDIO FROM A TAP WITHIN THE DELAY BUFFER | |||
afwd deltap3 atime ;FORWARD DELAY | |||
delayw ain ;WRITE AUDIO INTO DELAY BUFFER | |||
;rireturn ;RETURN FROM REINITIALISATION PASS | |||
xout (abwd*aenv*kreverse)+(afwd*kforward) ;SEND AUDIO BACK TO CALLER INSTRUMENT. APPLY AMPLITUDE ENVELOPE TO PREVENT CLICKS. | |||
endop | |||
instr 1 | |||
ktimeL chnget "timeL" | |||
ktimeR chnget "timeR" | |||
kspread chnget "spread" | |||
kmix chnget "mix" | |||
klevel chnget "level" | |||
kreverse chnget "reverse" | |||
kforward chnget "forward" | |||
kTMod chnget "TMod" | |||
kPMod chnget "PMod" | |||
/* LINK */ | |||
klink chnget "link" ; if 'Link L&R' is selected | |||
if klink=1&&kTMod=0 then | |||
ktrigL changed ktimeL,klink | |||
ktrigR changed ktimeR | |||
if ktrigL=1 then | |||
chnset ktimeL,"timeR" | |||
elseif ktrigR=1 then | |||
chnset ktimeR,"timeL" | |||
endif | |||
endif | |||
a1,a2 ins | |||
if kTMod=1 then ; if time modulation is selected.... | |||
if klink=0 then ; and if 'link L&R' is off... | |||
ktime1 rspline ktimeL,ktimeR,0.2,1 ; generate delay time value: random spline between ktimeL and ktimeR | |||
ktime2 rspline ktimeL,ktimeR,0.2,1 | |||
ktimeL limit ktime1,0.01,4 ; assign to delay time variable and limit to prevent out of range values (possible with rspline) | |||
ktimeR limit ktime2,0.01,4 | |||
else | |||
ktime rspline ktimeL,ktimeR,0.2,1 | |||
ktimeL limit ktime,0.01,4 | |||
ktimeR = ktimeL ; right channel delay the same as left | |||
endif | |||
endif | |||
arev1 Reverse a1,ktimeL,kreverse,kforward,klink ; call UDO | |||
arev2 Reverse a2,ktimeR,kreverse,kforward,klink | |||
if kPMod=1 then ; if panning modulation is on... | |||
kpan rspline 0,1,0.2,1 ; pan position generated as a random spline | |||
ap1 = (arev1*kpan) + (arev2*(1-kpan)) ; create new left channel | |||
ap2 = (arev1*(1-kpan)) + (arev2*kpan) ; create new right channel | |||
arev1 = ap1 ; reassign left channel to new left channel | |||
arev2 = ap2 ; reassign right channel to new right channel | |||
endif | |||
a1 ntrpol a1,arev1,kmix ; dry/wet mix | |||
a2 ntrpol a2,arev2,kmix | |||
a1 = a1 * klevel ; apply level control | |||
a2 = a2 * klevel | |||
kspread scale kspread,1,0.5 ; rescale from range 0 - 1 to 0.5 - 1 | |||
aL sum a1*kspread,a2*(1-kspread) ; create stereo mix according to Spread control | |||
aR sum a2*kspread,a1*(1-kspread) ; create stereo mix according to Spread control | |||
outs aL,aR | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [60*60*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,481 @@ | |||
StutterFilter.csd | |||
Written by Iain McCurdy |2013| | |||
<Cabbage> | |||
form caption("Stutter Filter") size(800, 510), pluginID("stfl") | |||
image bounds(290, 475,225, 30), colour(100,100,100), shape("rounded"), outline("white"), line(4) | |||
snapshot bounds(305,480,200, 20), preset("StutterFilter"), master(1), items("Preset 1", "Preset 2", "Preset 3", "Preset 4", "Preset 5", "Preset 6", "Preset 7", "Preset 8", "Preset 9", "Preset 10") | |||
label bounds( 8, 496, 200, 12), text("Iain McCurdy [2013]"), FontColour("grey") | |||
; METRONOME | |||
groupbox bounds( 0, 0, 80, 60), text("INPUT"), plant("input"), FontColour(silver),colour(50,50,50){ | |||
checkbox bounds( 5, 30, 80, 13), text("Test Tone") channel("TestTone"), FontColour("White"), colour(255,100,100) value(1) | |||
} | |||
; METRONOME | |||
groupbox bounds( 0, 60, 80,410), text("TEMPO"), plant("metronome"), FontColour(silver),colour(50,50,50){ | |||
checkbox bounds( 10, 23, 80, 13), text("Start") channel("MetroStart"), FontColour("White"), colour(lightblue) value(1) | |||
rslider bounds( 5, 40, 70, 70), colour(200,200,250,220), text("BPM"), channel("tempo"), range(1, 500, 60) | |||
rslider bounds( 5,120, 70, 70), colour(200,200,250,220), text("Jitter"), channel("ratejit"), range(0, 4.00, 1.4) | |||
} | |||
; AMPLITUDE ENVELOPE | |||
groupbox bounds( 80, 0, 80,470), text("AMP ENV"), plant("amplitudeenvelope"), FontColour(silver),colour(60,60,60){ | |||
rslider bounds( 5, 25, 70, 70), colour(200,200,250,220), text("Jitter"), channel("ampjit"), range(0, 1.00, 0) | |||
rslider bounds( 5,105, 70, 70), colour(200,200,250,220), text("Max.Dur."), channel("maxdur"), range(0.01, 5.00, 0.1, 0.5, 0.01) | |||
rslider bounds( 5,185, 70, 70), colour(200,200,250,220), text("Smoothing"), channel("smoothing"), range(0.005, 0.01, 0.005, 1, 0.0001) | |||
combobox bounds( 5,265, 70, 20), channel("shape"), value(1), text("Square", "Inv.Sq.","Smooth","Lin.","Exp.") | |||
rslider bounds( 5,295, 70, 70), colour(200,200,250,220), text("Layer Spread"), channel("LayerSpread"), range(0, 1.00, 0) | |||
} | |||
; FILTER ENVELOPE | |||
groupbox bounds(160, 0, 80, 470), text("FILT ENV"), plant("filterenvelope"), FontColour(silver),colour(30,30,30){ | |||
checkbox bounds( 10, 23, 70, 13), text("On/Off") channel("EnvFlt"), FontColour("White"), colour("lime") value(0) | |||
rslider bounds( 5, 40, 70, 70), colour(200,200,250,220), text("Start"), channel("EnvStart"), range(0, 1.00, 1) | |||
rslider bounds( 5,120, 70, 70), colour(200,200,250,220), text("End"), channel("EnvEnd"), range(0, 1.00,0) | |||
} | |||
; FILTER | |||
groupbox bounds(240, 0, 80, 470), text("FILTER"), plant("filter"), FontColour(silver),colour(40,40,40){ | |||
checkbox bounds( 10, 23, 70, 13), text("On/Off") channel("FiltOnOff"), FontColour("White"), colour(lightblue) value(1) | |||
rslider bounds( 5, 40, 70, 70), colour(200,200,250,220), text("Filt.Freq."), channel("cfoct"), range(4.00, 14, 8) | |||
rslider bounds( 5,120, 70, 70), colour(200,200,250,220), text("Filt.Jitter"), channel("cfjit"), range(0, 7.00, 2.83) | |||
rslider bounds( 5,200, 70, 70), colour(200,200,250,220), text("Q"), channel("bw"), range(0.01, 5, 0.5, 0.5,0.001) | |||
rslider bounds( 5,280, 70, 70), colour(200,200,250,220), text("Q jit"), channel("bwjit"), range(0, 4.00, 0) | |||
rslider bounds( 5,360, 70, 70), colour(200,200,250,220), text("Filt.Spline"), channel("fltspline"), range(0, 2.00, 0) | |||
combobox bounds( 5,440, 70, 20), channel("FiltType"), value(1), text("resonz", "reson","Butlp","Moog") | |||
} | |||
; PITCH SHIFTER | |||
groupbox bounds(320, 0, 80, 470), text("PITCH"), plant("pitchshifter"), FontColour(silver),colour(70,70,70){ | |||
checkbox bounds( 10, 23, 70, 13), text("On/Off") channel("PitchOnOff"), FontColour("White"), colour("lightblue") value(0) | |||
rslider bounds( 5, 40, 70, 70), colour(200,200,250,220), text("Min"), channel("pitchmin"), range(-96.00, 96, -6) | |||
rslider bounds( 5,120, 70, 70), colour(200,200,250,220), text("Max"), channel("pitchmax"), range(-96.00, 96, 12) | |||
checkbox bounds( 5,200, 70, 15), text("Quantize") channel("pchquant"), FontColour("White"), colour("lime") value(0) | |||
rslider bounds( 5,220, 70, 70), colour(200,200,250,220), text("Granularity"), channel("dlt"), range(0.001, 5, 0.2, 0.375, 0.0001) | |||
} | |||
; WAVESET | |||
groupbox bounds(400, 0, 80, 470), text("WAVESET"), plant("waveset"), FontColour(silver),colour(45,45,45){ | |||
checkbox bounds( 10, 23, 70, 13), text("On/Off") channel("WsetOnOff"), FontColour("White"), colour("lightblue") value(0) | |||
rslider bounds( 5, 40, 70, 70), colour(200,200,250,220), text("Chance"), channel("wsetchance"), range(0, 1.00, 0.5) | |||
rslider bounds( 5,120, 70, 70), colour(200,200,250,220), text("Min"), channel("wsetmin"), range(1, 200, 1, 1,1) | |||
rslider bounds( 5,200, 70, 70), colour(200,200,250,220), text("Max"), channel("wsetmax"), range(1, 200,10, 1,1) | |||
} | |||
; FREQUENCY SHIFTER | |||
groupbox bounds(480, 0, 82, 470), text("F.SHIFT"), plant("frequencyshifter"), FontColour(silver),colour(55,55,55){ | |||
checkbox bounds( 10, 23, 70, 13), text("On/Off") channel("FshiftOnOff"), FontColour("White"), colour("lightblue") value(0) | |||
rslider bounds( 5, 40, 70, 70), colour(200,200,250,220), text("Chance"), channel("fshiftchance"), range(0, 1.00, 0.5) | |||
rslider bounds( 5,120, 70, 70), colour(200,200,250,220), text("Shift"), channel("fshift"), range(-4000, 4000, 0) | |||
rslider bounds( 5,200, 70, 70), colour(200,200,250,220), text("Jitter"), channel("fshiftjit"), range( 0, 4000, 2000) | |||
} | |||
; WAVEGUIDE | |||
groupbox bounds(560, 0,160, 470), text("WAVEGUIDE"), plant("waveguide"), FontColour(silver),colour(35,35,35){ | |||
checkbox bounds( 10, 23, 70, 13), text("On/Off") channel("WguideOnOff"), FontColour("White"), colour("lightblue") value(0) | |||
checkbox bounds( 10, 80, 70, 15), text("Quantize") channel("wgquant"), FontColour("White"), colour("lime") value(0) | |||
rslider bounds( 80, 25, 70, 70), colour(200,200,250,220), text("Chance"), channel("wgchance"), range(0, 1.00, 0.5) | |||
rslider bounds( 5,105, 70, 70), colour(200,200,250,220), text("Freq.Min"), channel("wgfreqmin"), range(0.00,127, 60) | |||
rslider bounds( 80,105, 70, 70), colour(200,200,250,220), text("Freq.Max"), channel("wgfreqmax"), range(0.00,127, 100) | |||
rslider bounds( 5,185, 70, 70), colour(200,200,250,220), text("F.back.Min"), channel("wgFBmin"), range(0, 0.999, 0.9, 2, 0.0001) | |||
rslider bounds( 80,185, 70, 70), colour(200,200,250,220), text("F.back.Max"), channel("wgFBmax"), range(0, 0.999, 0.95, 2, 0.0001) | |||
rslider bounds( 5,265, 70, 70), colour(200,200,250,220), text("Damp.Min"), channel("wgCFmin"), range(4, 14, 8) | |||
rslider bounds( 80,265, 70, 70), colour(200,200,250,220), text("Damp.Max"), channel("wgCFmax"), range(4, 14, 13) | |||
} | |||
; PANNING | |||
groupbox bounds(720, 0, 80, 185), text("PANNING"), plant("panning"), FontColour(silver),colour(65,65,65){ | |||
rslider bounds( 5, 25, 70, 70), colour(200,200,250,220), text("L-R"), channel("pan"), range(0.00, 1, 0.5) | |||
rslider bounds( 5,105, 70, 70), colour(200,200,250,220), text("Spread"), channel("panjit"), range(0.00, 0.5, 0.25) | |||
} | |||
; OUTPUT | |||
groupbox bounds(720,185, 80, 285), text("OUTPUT"), plant("output"), FontColour(silver),colour(50,50,50){ | |||
rslider bounds( 5, 25, 70, 70), colour(200,200,250,220), text("Gain"), channel("gain"), range(0, 50.00, 1, 0.5, 0.001) | |||
rslider bounds( 5,105, 70, 70), colour(200,200,250,220), text("Layers"), channel("layers"), range(1, 20, 1, 1, 1) | |||
} | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-dm0 -n | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 32 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
seed 0 | |||
;Author: Iain McCurdy (2012) | |||
gisq ftgen 0,0,32768,7, 0,1,0, 1,1, 32768-3,1, 1,0 | |||
gisine ftgen 0,0,32768,10,1 | |||
gihanning ftgen 0,0,32768,20,2 | |||
opcode FreqShifter,a,aki | |||
ain,kfshift,ifn xin ;READ IN INPUT ARGUMENTS | |||
areal, aimag hilbert ain ;HILBERT OPCODE OUTPUTS TWO PHASE SHIFTED SIGNALS, EACH 90 OUT OF PHASE WITH EACH OTHER | |||
asin oscili 1, kfshift, ifn, 0 | |||
acos oscili 1, kfshift, ifn, 0.25 | |||
;RING MODULATE EACH SIGNAL USING THE QUADRATURE OSCILLATORS AS MODULATORS | |||
amod1 = areal * acos | |||
amod2 = aimag * asin | |||
;UPSHIFTING OUTPUT | |||
aFS = (amod1 - amod2) | |||
xout aFS ;SEND AUDIO BACK TO CALLER INSTRUMENT | |||
endop | |||
opcode PitchShifterDelaySt,aa,aakkki | |||
ainL,ainR,ktrans,kdlt,kFB,imaxdlt xin | |||
adlt interp kdlt ;INTERPOLATE DELAY TIME CONTROL TO CREATE A-RATE VERSION | |||
ihalfsine ftgen 0, 0, 1025, 9, 0.5, 1, 0 ;HALF SINE WINDOW FUNCTION USED FOR AMPLITUDE ENVELOPING | |||
koctfract = ktrans/12 ;TRANSPOSITION AS FRACTION OF AN OCTAVE | |||
kratio = octave(koctfract) ;RATIO TO PRODUCE PITCH SHIFT | |||
krate = (kratio-1)/kdlt ;SUBTRACT 1/1 SPEED | |||
aphase1 phasor -krate ;MOVING PHASE 1-0 | |||
aphase2 phasor -krate, .5 ;MOVING PHASE 1-0 - PHASE OFFSET BY 180 DEGREES (.5 RADIANS) | |||
agate1 tablei aphase1, ihalfsine, 1, 0, 1 ;WINDOW FUNC =HALF SINE | |||
agate2 tablei aphase2, ihalfsine, 1, 0, 1 ;WINDOW FUNC =HALF SINE | |||
aoutL,aoutR init 0 ;INITIALISE OUTPUT SIGNAL (NEEDED IN ORDER TO CREATE FEEDBACK SIGNAL) | |||
iws = 4 ;WINDOW SIZE FOR INTERPOLATION - INCREASE THIS FOR IMPROVED QUALITY AT SOME CPU COST | |||
aout1L, aout1R vdelayxs ainL+(aoutL*kFB), ainR+(aoutR*kFB), aphase1*adlt, imaxdlt, iws | |||
aout2L, aout2R vdelayxs ainL+(aoutL*kFB), ainR+(aoutR*kFB), aphase2*adlt, imaxdlt, iws | |||
aoutL = ((aout1L * agate1)+(aout2L * agate2))*0.5 | |||
aoutR = ((aout1R * agate1)+(aout2R * agate2))*0.5 | |||
xout aoutL, aoutR ;SUM AND RESCALE PITCH SHIFTER OUTPUTS (LEFT CHANNEL) | |||
endop | |||
opcode StutterFilter,aa,aakkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkii | |||
ain1,ain2,kMetroStart,ktempo,kratejit1,kampjit1,kmaxdur,ksmoothing,kEnvFlt,kshape,kLayerSpread,kEnvStart,kEnvEnd,kFiltOnOff,kcfoct1,kcfjit1,kbw1,kbwjit1,kfltspline1,kFiltType,kpan1,\ | |||
kpanjit1,kPitchOnOff,kpitchmin,kpitchmax,kpchquant,kdlt,kWsetOnOff,kwsetchance,kwsetmin1,kwsetmax1,kFshiftOnOff,kfshiftchance,kfshift1,kfshiftjit1,\ | |||
kWguideOnOff,kwgchance,kwgfreqmin1,kwgfreqmax1,kwgquant,kwgFBmin1,kwgFBmax1,kwgCFmin1,kwgCFmax1,icount,ilayers xin | |||
a1 = ain1 | |||
a2 = ain2 | |||
krate = ktempo/15 ; krate (assuming 4 beats per bar) | |||
/* PORTAMENTO */ | |||
kporttime linseg 0,0.001,0.01 | |||
kbw portk kbw1,kporttime | |||
/* TRIGGER RANDOM VALUES */ | |||
kmetro init 1 | |||
kratejit trandom kmetro, -kratejit1, kratejit1 | |||
kampjit trandom kmetro, 0, kampjit1 | |||
ktrans trandom kmetro, kpitchmin, kpitchmax | |||
kwsetrep trandom kmetro, kwsetmin1+0.999999, kwsetmax1+0.999999 | |||
kwsetrep = int(kwsetrep) | |||
kfshiftjit trandom kmetro, -octcps(kfshiftjit1), octcps(kfshiftjit1) | |||
ksign = (kfshiftjit<0?-1:1) | |||
kfshiftjit = cpsoct(abs(kfshiftjit))*ksign | |||
kwgfreq trandom kmetro, kwgfreqmin1, kwgfreqmax1 | |||
kwgFB trandom kmetro, kwgFBmin1, kwgFBmax1 | |||
kwgCF trandom kmetro, kwgCFmin1, kwgCFmax1 | |||
/* FILTER */ | |||
if kFiltOnOff=0 kgoto SKIP_FILTER | |||
kcfoct portk kcfoct1,kporttime | |||
if kfltspline1==0 then ; if filt.spline switch is at zero... | |||
kcfjit trandom kmetro, 0, kcfjit1 ; ... | |||
kbwjit trandom kmetro, 0, kbwjit1 | |||
kcfoct limit kcfoct+kcfjit,4,14 | |||
kcf = cpsoct(kcfoct) | |||
kbw = kcf*(kbw*octave(kbwjit)) | |||
else ; otherwise (filt.spline is greater than zero)... | |||
kfltspline limit kfltspline1,0.1,10 ; ... | |||
kcfoct randomi kcfoct-kcfjit,kcfoct+kcfjit,kfltspline ; | |||
kcf limit cpsoct(kcfoct),50,sr/3 | |||
kbwjit rspline 0,kbwjit,kfltspline*0.5,kfltspline | |||
kbw = kcf*(kbw*octave(kbwjit)) | |||
endif | |||
if kFiltType=1 then | |||
a1 resonr a1,kcf,kbw,1 | |||
a2 resonr a2,kcf,kbw,1 | |||
elseif kFiltType=2 then | |||
a1 reson a1,kcf,kbw,1 | |||
a2 reson a2,kcf,kbw,1 | |||
elseif kFiltType=3 then | |||
a1 clfilt a1,kcf,0,2 | |||
a2 clfilt a2,kcf,0,2 | |||
elseif kFiltType=4 then | |||
kbw chnget "bw" | |||
kbw limit (kbw-0.01)/(5-0.01),0,0.99 | |||
a1 moogladder a1,kcf,kbw | |||
a2 moogladder a2,kcf,kbw | |||
endif | |||
SKIP_FILTER: | |||
/* METRONOME */ | |||
krate limit krate * octave(kratejit),0,50 | |||
kmetro metro krate*kMetroStart | |||
/* PITCH SHIFTER */ | |||
if kPitchOnOff=0 kgoto SKIP_PITCH | |||
kFB = 0 | |||
imaxdlt = 5 | |||
if kpchquant=1 then | |||
ktrans = int(ktrans) | |||
endif | |||
a1,a2 PitchShifterDelaySt a1,a2,ktrans,kdlt,kFB,imaxdlt | |||
SKIP_PITCH: | |||
/* FREQUENCY SHIFTER */ | |||
if kFshiftOnOff=0 kgoto SKIP_FSHIFT | |||
kdice trandom kmetro,0,1 | |||
if kdice<kfshiftchance then | |||
kfshift = kfshift1+kfshiftjit | |||
if kshape=2 then | |||
kfshift portk kfshift,kporttime | |||
endif | |||
a1 FreqShifter a1,kfshift,gisine | |||
a2 FreqShifter a2,kfshift,gisine | |||
endif | |||
SKIP_FSHIFT: | |||
/* WAVESET */ | |||
if kWsetOnOff=0 kgoto SKIP_WAVESET | |||
if kmetro=1 then | |||
reinit RESET_WAVESET | |||
endif | |||
RESET_WAVESET: | |||
awset1 waveset a1, kwsetrep, 3600 | |||
awset2 waveset a2, kwsetrep, 3600 | |||
rireturn | |||
kdice trandom kmetro,0,1 | |||
kamp init 0 | |||
if kwsetrep>1&&kdice<kwsetchance then | |||
a1 = awset1*0.7 | |||
a2 = awset2*0.7 | |||
endif | |||
SKIP_WAVESET: | |||
/* AMPLITUDE ENVELOPE */ | |||
if kmetro=1 then | |||
reinit RESTART_ENV | |||
endif | |||
RESTART_ENV: | |||
idur limit 1/i(krate),0,i(kmaxdur) | |||
iEnvAmp = (1-i(kampjit))^2 | |||
if i(kshape)=1 then ; square | |||
kamp linseg 0,i(ksmoothing),iEnvAmp, (idur*0.5)-(i(ksmoothing)*2), iEnvAmp, i(ksmoothing), 0 | |||
elseif i(kshape)=2 then ; inverse square | |||
kamp linseg 1,i(ksmoothing),1-iEnvAmp, (idur*0.5)-(2*i(ksmoothing)), 1-iEnvAmp, i(ksmoothing), 1 | |||
elseif i(kshape)=3 then ; hanning window | |||
kamp oscil1i 0, iEnvAmp, idur, gihanning | |||
elseif i(kshape)=4 then ; linear decay | |||
kamp linseg 0,i(ksmoothing),iEnvAmp, (idur*0.5)-i(ksmoothing), 0 | |||
elseif i(kshape)=5 then ; exponential decay | |||
kamp transeg 0,i(ksmoothing),2,iEnvAmp, (idur*0.5)-i(ksmoothing),-2,0 | |||
endif | |||
kamp portk kamp,kporttime *0.01 | |||
aamp interp kamp ; INTERPOLATE K-RATE LFO AND CREATE A-RATE VARIABLE | |||
/* FILTER ENVELOPE */ | |||
if kEnvFlt=1 then | |||
kenv = ((kamp*kEnvStart)*(kEnvStart-kEnvEnd))+kEnvEnd | |||
a1 clfilt a1,cpsoct(4+(kenv*10)),0,2 | |||
a2 clfilt a2,cpsoct(4+(kenv*10)),0,2 | |||
endif | |||
rireturn | |||
/* PANNING */ | |||
kpanjit trandom kmetro, -kpanjit1, kpanjit1 | |||
kpan limit kpan1+kpanjit,0,1 | |||
a1 = a1*aamp*kpan | |||
a2 = a2*aamp*(1-kpan) | |||
/* WGUIDE */ | |||
if kWguideOnOff=0 kgoto SKIP_WAVEGUIDE | |||
kchanceval trandom kmetro, 0, 1 | |||
if kchanceval<kwgchance then | |||
if kwgquant=1 then | |||
kwgfreq = int(kwgfreq) | |||
endif | |||
kwgfreq portk cpsmidinn(kwgfreq),kporttime*0.01 | |||
awgfreq interp kwgfreq | |||
a1 wguide1 a1, awgfreq,cpsoct(kwgCF),kwgFB | |||
a2 wguide1 a2, awgfreq,cpsoct(kwgCF),kwgFB | |||
a1 dcblock2 a1 | |||
a2 dcblock2 a2 | |||
endif | |||
SKIP_WAVEGUIDE: | |||
kDelTim = ((icount-1) * ((1/krate)/ilayers))*(kLayerSpread*2) | |||
;kDelTim portk kDelTim, kporttime*8 | |||
if kDelTim>0 then | |||
aDelTim interp kDelTim | |||
a1, a2 vdelayxs a1, a2, aDelTim, 10, 4 | |||
endif | |||
amix1 = 0 | |||
amix2 = 0 | |||
if icount<ilayers then | |||
amix1,amix2 StutterFilter ain1,ain2,kMetroStart,ktempo,kratejit1,kampjit1,kmaxdur,ksmoothing,kEnvFlt,kshape,kLayerSpread,kEnvStart,kEnvEnd,kFiltOnOff,kcfoct1,kcfjit1,kbw1,kbwjit1,kfltspline1,kFiltType,kpan1,\ | |||
kpanjit1,kPitchOnOff,kpitchmin,kpitchmax,kpchquant,kdlt,kWsetOnOff,kwsetchance,kwsetmin1,kwsetmax1,kFshiftOnOff,kfshiftchance,kfshift1,kfshiftjit1,\ | |||
kWguideOnOff,kwgchance,kwgfreqmin1,kwgfreqmax1,kwgquant,kwgFBmin1,kwgFBmax1,kwgCFmin1,kwgCFmax1,icount+1,ilayers | |||
endif | |||
xout a1+amix1,a2+amix2 | |||
endop | |||
instr 1 | |||
klayers chnget "layers" ; | |||
kTestTone chnget "TestTone" | |||
/* METRONOME */ | |||
kMetroStart chnget "MetroStart" ; read in widgets | |||
ktempo chnget "tempo" ; | |||
kratejit chnget "ratejit" ; | |||
/* AMPLITUDE ENVELOPE */ | |||
kampjit chnget "ampjit" ; | |||
kmaxdur chnget "maxdur" ; | |||
ksmoothing chnget "smoothing" ; | |||
kEnvFlt chnget "EnvFlt" ; | |||
kshape chnget "shape" ; | |||
kshape init 1 ; ensure not zero at i-time | |||
kLayerSpread chnget "LayerSpread" ; | |||
/* FILTER ENVELOPE */ | |||
kEnvStart chnget "EnvStart" ; | |||
kEnvEnd chnget "EnvEnd" ; | |||
/* FILTER */ | |||
kFiltOnOff chnget "FiltOnOff" ; | |||
kcfoct chnget "cfoct" ; | |||
kcfjit chnget "cfjit" ; | |||
kbw chnget "bw" ; | |||
kbwjit chnget "bwjit" ; | |||
kfltspline chnget "fltspline" ; | |||
kFiltType chnget "FiltType" ; | |||
kFiltType init 1 ; ensure not zero at i-time | |||
/* PANNING */ | |||
kpan chnget "pan" | |||
kpanjit chnget "panjit" | |||
/* PITCH SHIFTER */ | |||
kPitchOnOff chnget "PitchOnOff" | |||
kpitchmin chnget "pitchmin" | |||
kpitchmax chnget "pitchmax" | |||
kpchquant chnget "pchquant" | |||
kdlt chnget "dlt" | |||
/* WAVESET */ | |||
kWsetOnOff chnget "WsetOnOff" | |||
kwsetchance chnget "wsetchance" | |||
kwsetmin chnget "wsetmin" | |||
kwsetmax chnget "wsetmax" | |||
/* FREQUENCY SHIFTER */ | |||
kFshiftOnOff chnget "FshiftOnOff" | |||
kfshiftchance chnget "fshiftchance" | |||
kfshift chnget "fshift" | |||
kfshiftjit chnget "fshiftjit" | |||
/* WAVEGUIDE */ | |||
kWguideOnOff chnget "WguideOnOff" | |||
kwgchance chnget "wgchance" | |||
kwgfreqmin chnget "wgfreqmin" | |||
kwgfreqmax chnget "wgfreqmax" | |||
kwgquant chnget "wgquant" | |||
kwgFBmin chnget "wgFBmin" | |||
kwgFBmax chnget "wgFBmax" | |||
kwgCFmin chnget "wgCFmin" | |||
kwgCFmax chnget "wgCFmax" | |||
/* OUTPUT */ | |||
kgain chnget "gain" | |||
/* SOUND INPUT */ | |||
if kTestTone=1 then | |||
a1 vco2 1,100 | |||
a2 = a1 | |||
else | |||
a1,a2 ins | |||
a1,a2 diskin2 "Songpan.wav",1,0,1 | |||
endif | |||
ktrig changed klayers | |||
if ktrig==1 then | |||
reinit RESTART_LAYERS | |||
endif | |||
RESTART_LAYERS: | |||
iGainScale = i(klayers)^0.3 | |||
print iGainScale | |||
a1,a2 StutterFilter a1,a2,kMetroStart,ktempo,kratejit,kampjit,kmaxdur,ksmoothing,kEnvFlt,kshape,kLayerSpread,kEnvStart,kEnvEnd,kFiltOnOff,kcfoct,kcfjit,kbw,kbwjit,kfltspline,kFiltType,kpan,\ | |||
kpanjit,kPitchOnOff,kpitchmin,kpitchmax,kpchquant,kdlt,kWsetOnOff,kwsetchance,kwsetmin,kwsetmax,kFshiftOnOff,kfshiftchance,kfshift,kfshiftjit,\ | |||
kWguideOnOff,kwgchance,kwgfreqmin,kwgfreqmax,kwgquant,kwgFBmin,kwgFBmax,kwgCFmin,kwgCFmax,1,i(klayers) | |||
rireturn | |||
outs (a1*kgain)/iGainScale, (a2*kgain)/iGainScale ; scale amplitude according to the number of layers present | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [60*60*24*7] ; scan for changes to number of layers control | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,108 @@ | |||
Units for the delay are assumed to be demi-semiquavers. | |||
Knob for Rhy.Mult. will be replaced with a combobox once comboboxes work in plugins within hosts. | |||
Width control only applicable when ping-pong delay selected. | |||
If 'external' is selected as clock source tempo is taken from the host's BPM. | |||
<Cabbage> | |||
form caption("Tempo Delay") size(565, 90), pluginID("TDel") | |||
image pos(0, 0), size(565, 90), colour("LightBlue"), shape("rounded"), outline("white"), line(4) | |||
rslider bounds(10, 11, 70, 70), text("Tempo"), fontcolour("black"), channel("tempo"), range(40, 500, 90, 1, 1), colour(100,100,255),trackercolour(100,100,150) | |||
rslider bounds(75, 11, 70, 70), text("Rhy.Mult."), fontcolour("black"), channel("RhyMlt"), range(1, 16, 4, 1, 1), colour(100,100,255),trackercolour(100,100,150) | |||
rslider bounds(140, 11, 70, 70), text("Damping"), fontcolour("black"), channel("damp"), range(20,20000, 20000,0.5), colour(100,100,255),trackercolour(100,100,150) | |||
rslider bounds(205, 11, 70, 70), text("Feedback"), fontcolour("black"), channel("fback"), range(0, 1.00, 0.8), colour(100,100,255),trackercolour(100,100,150) | |||
rslider bounds(270, 11, 70, 70), text("Width"), fontcolour("black"), channel("width"), range(0, 1.00, 1), colour(100,100,255),trackercolour(100,100,150) | |||
button bounds(340, 10, 80, 20), text("Internal","External"), channel("ClockSource"), value(0), fontcolour("lime") | |||
label bounds(345, 30, 80, 12), text("Clock Source"), FontColour("black") | |||
button bounds(340, 50, 80, 20), text("Simple","Ping-pong"), channel("DelType"), value(1), fontcolour("lime") | |||
label bounds(348, 70, 80, 12), text("Delay Type"), FontColour("black") | |||
rslider bounds(420, 11, 70, 70), text("Mix"), fontcolour("black"), channel("mix"), range(0, 1.00, 0.5), colour(100,100,255),trackercolour(100,100,150) | |||
rslider bounds(485, 11, 70, 70), text("Level"), fontcolour("black"), channel("level"), range(0, 1.00, 1), colour(100,100,255),trackercolour(100,100,150) | |||
} | |||
hostbpm channel("bpm") | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 ;SAMPLE RATE | |||
ksmps = 32 ;NUMBER OF AUDIO SAMPLES IN EACH CONTROL CYCLE | |||
nchnls = 2 ;NUMBER OF CHANNELS (2=STEREO) | |||
0dbfs = 1 | |||
;Author: Iain McCurdy (2012) | |||
instr 1 | |||
kfback chnget "fback" ;read in widgets | |||
kdamp chnget "damp" ; | |||
kmix chnget "mix" ; | |||
klevel chnget "level" ; | |||
kbpm chnget "bpm" ; | |||
kRhyMlt chnget "RhyMlt" ; | |||
kClockSource chnget "ClockSource" ; | |||
kDelType chnget "DelType" ; | |||
kwidth chnget "width" ; | |||
if kClockSource==0 then ;if internal clock source has been chosen... | |||
ktempo chnget "tempo" ;tempo taken from GUI knob control | |||
else | |||
ktempo chnget "bpm" ;tempo taken from host BPM | |||
ktempo limit ktempo,40,500 ;limit range of possible tempo values. i.e. a tempo of zero would result in a delay time of infinity. | |||
endif | |||
ktime = (60*kRhyMlt)/(ktempo*8) ;derive delay time. 8 in the denominator indicates that kRhyMult will be in demisemiquaver divisions | |||
atime interp ktime ;interpolate k-rate delay time to create an a-rate version which will give smoother results when tempo is modulated | |||
ainL,ainR ins ;read stereo inputs | |||
if kDelType==0 then ;if 'simple' delay type is chosen... | |||
abuf delayr 5 | |||
atapL deltap3 atime | |||
atapL tone atapL,kdamp | |||
delayw ainL+(atapL*kfback) | |||
abuf delayr 5 | |||
atapR deltap3 atime | |||
atapR tone atapR,kdamp | |||
delayw ainR+(atapR*kfback) | |||
else ;otherwise 'ping-pong' delay type must have been chosen | |||
;offset delay (no feedback) | |||
abuf delayr 5 | |||
afirst deltap3 atime | |||
afirst tone afirst,kdamp | |||
delayw ainL | |||
;left channel delay (note that 'atime' is doubled) | |||
abuf delayr 10 ; | |||
atapL deltap3 atime*2 | |||
atapL tone atapL,kdamp | |||
delayw afirst+(atapL*kfback) | |||
;right channel delay (note that 'atime' is doubled) | |||
abuf delayr 10 | |||
atapR deltap3 atime*2 | |||
atapR tone atapR,kdamp | |||
delayw ainR+(atapR*kfback) | |||
;create width control. note that if width is zero the result is the same as 'simple' mode | |||
atapL = afirst+atapL+(atapR*(1-kwidth)) | |||
atapR = atapR+(atapL*(1-kwidth)) | |||
endif | |||
amixL ntrpol ainL, atapL, kmix ;CREATE A DRY/WET MIX BETWEEN THE DRY AND THE EFFECT SIGNAL | |||
amixR ntrpol ainR, atapR, kmix ;CREATE A DRY/WET MIX BETWEEN THE DRY AND THE EFFECT SIGNAL | |||
outs amixL * klevel, amixR * klevel | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [3600*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,181 @@ | |||
<Cabbage> | |||
form caption("vocoder"), size(530, 230), pluginID("voco") | |||
image pos(0, 0), size(530, 200), colour(255,255,150), shape("rounded"), outline("LightBrown"), line(4) | |||
image bounds(140, 6,180, 31), colour( 10,225, 90,100), shape("ellipse"), outline(205,205, 70), line(1) | |||
label bounds(158, 5, 33, 33), text("v"), FontColour(100,100,100) | |||
label bounds(178, 5, 33, 33), text("o"), FontColour(100,100,100) | |||
label bounds(198, 5, 33, 33), text("c"), FontColour(100,100,100) | |||
label bounds(218, 5, 33, 33), text("o"), FontColour(100,100,100) | |||
label bounds(238, 5, 33, 33), text("d"), FontColour(100,100,100) | |||
label bounds(258, 5, 33, 33), text("e"), FontColour(100,100,100) | |||
label bounds(278, 5, 33, 33), text("r"), FontColour(100,100,100) | |||
label bounds(161, 4, 30, 30), text("v"), FontColour(255, 0, 0) | |||
label bounds(181, 4, 30, 30), text("o"), FontColour(235, 0, 20) | |||
label bounds(201, 4, 30, 30), text("c"), FontColour(215, 0, 40) | |||
label bounds(221, 4, 30, 30), text("o"), FontColour(195, 0, 60) | |||
label bounds(241, 4, 30, 30), text("d"), FontColour(175, 0, 80) | |||
label bounds(261, 4, 30, 30), text("e"), FontColour(155, 0,100) | |||
label bounds(281, 4, 30, 30), text("r"), FontColour(135, 0,120) | |||
label bounds( 15, 10, 85, 11), text("Carrier Source"), FontColour("black") | |||
combobox bounds( 10, 21, 85, 15), channel("CarSource"), value(1), text("synth","external") | |||
label bounds( 10, 40, 85, 11), text("Filter Steepness"), FontColour("black") | |||
combobox bounds( 10, 51, 85, 15), channel("steepness"), value(2), text("12dB/oct","24dB/oct") | |||
label bounds( 25, 70, 85, 11), text("Synth Type"), FontColour("black") | |||
combobox bounds( 10, 81, 85, 15), channel("SynType"), value(1), text("saw","square","pulse","noise") | |||
rslider bounds(105, 38, 70, 70), text("Base"), colour(255,255,120), FontColour("Black"), channel("base"), range(24, 80, 40,1,1) | |||
rslider bounds(165, 38, 70, 70), text("Num."), colour(255,255,120), FontColour("Black"), channel("num"), range(1, 100, 16,1,1) | |||
rslider bounds(225, 38, 70, 70), text("B.width"), colour(255,255,120), FontColour("Black"), channel("bw"), range(0.01, 1, 0.1,0.5) | |||
rslider bounds(285, 38, 70, 70), text("Spacing"), colour(255,255,120), FontColour("Black"), channel("incr"), range(1, 12, 5,0.5) | |||
vslider bounds(350,-10, 50,110), colour(255,255,120), FontColour("Black"), channel("BPGain"), range(0, 1, 0.6, 0.5) | |||
vslider bounds(400,-10, 50,110), colour(255,255,120), FontColour("Black"), channel("HPGain"), range(0, 1, 0.25, 0.5) | |||
label bounds(365, 95, 50, 12), text("BPF"), FontColour("black") | |||
label bounds(415, 95, 50, 12), text("HPF"), FontColour("black") | |||
checkbox bounds(468, 40, 30, 30), channel("gate"), text("Gate Input"), value(0), shape("ellipse") | |||
label bounds(455, 75, 80, 12), text("Gate Input"), colour("black"), FontColour("black") | |||
keyboard bounds(10, 112, 510,80) | |||
infobutton bounds(5,205, 100, 20), text("Help"), file("VocoderHelp.html") | |||
image bounds(105, 205, 320, 20), colour(75, 85, 90, 50), plant("credit"){ | |||
label bounds(0.03, 0.1, .6, .7), text("Author: Iain McCurdy |2012|"), colour("white"), FontColour("LightGreen") | |||
} | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-dm0 -n -+rtmidi=null -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 64 | |||
nchnls = 2 | |||
0dbfs = 1 ;MAXIMUM AMPLITUDE | |||
massign 0,2 | |||
gisine ftgen 0,0,4096,10,1 | |||
gaSyn init 0 | |||
opcode VocoderChannel, a, aakiiiii ;MODE UDO | |||
aMod,aCar,ksteepness,ibase,ibw,iincr,icount,inum xin ;NAME INPUT VARIABLES | |||
icf = cpsmidinn(ibase+(icount*iincr)) ;DERIVE FREQUENCY FOR *THIS* BANDPASS FILTER BASED ON BASE FREQUENCY AND FILTER NUMBER (icount) | |||
icount = icount + 1 ;INCREMENT COUNTER IN PREPARTION FOR NEXT FILTER | |||
if icf>15000 goto SKIP ;IF FILTER FREQUENCY EXCEEDS A SENSIBLE LIMIT SKIP THE CREATION OF THIS FILTER AND END RECURSION | |||
aModF butbp aMod,icf,ibw*icf ;BANDPASS FILTER MODULATOR | |||
if ksteepness=2 then ;IF 24DB PER OCT MODE IS CHOSEN... | |||
aModF butbp aModF,icf,ibw*icf ;...BANDPASS FILTER AGAIN TO SHARPEN CUTOFF SLOPES | |||
endif ;END OF THIS CONDITIONAL BRANCH | |||
aEnv follow2 aModF, 0.05, 0.05 ;FOLLOW THE ENVELOPE OF THE FILTERED AUDIO | |||
aCarF butbp aCar,icf,ibw*icf ;BANDPASS FILTER CARRIER | |||
if ksteepness=2 then ;IF 24 DB PER OCT IS CHOSEN... | |||
aCarF butbp aCarF,icf,ibw*icf ;...BANDPASS FILTER AGAIN TO SHARPEN CUTOFF SLOPES | |||
endif ;END OF THIS CONDITIONAL BRANCH | |||
amix init 0 ;INITIALISE MIX VARIABLE CONTAINING ALL SUBSEQUENT BANDS | |||
if icount < inum then ;IF MORE FILTERS STILL NEED TO BE CREATED... | |||
amix VocoderChannel aMod,aCar,ksteepness,ibase,ibw,iincr,icount,inum ;...CALL UDO AGAIN WITH INCREMENTED COUNTER | |||
endif ;END OF THIS CONDITIONAL BRANCH | |||
SKIP: ;LABEL | |||
xout amix + (aCarF*aEnv) ;MIX LOCAL BAND WITH SUBSEQUENT BANDS GENERATED VIA RECURSION | |||
endop ;END OF UDO | |||
instr 1 ;READ IN WIDGETS | |||
gkCarSource chnget "CarSource" | |||
gkbase chnget "base" | |||
gknum chnget "num" | |||
gkbw chnget "bw" | |||
gkincr chnget "incr" | |||
gkBPGain chnget "BPGain" | |||
gkHPGain chnget "HPGain" | |||
gksteepness chnget "steepness" | |||
gkSynType chnget "SynType" | |||
gkgate chnget "gate" | |||
endin | |||
instr 2 ;SIMPLE SYNTH | |||
icps cpsmidi ;READ MIDI NOTE IN CPS FORMAT | |||
icps = icps*0.5 ;TRANSPOSE DOWN AND OCTAVE | |||
aenv linsegr 0,0.01,1,0.02,0 ;CREATE A SIMPLE GATE-TYPE ENVELOPE | |||
if gkSynType==1 then ;IF SYNTH TYPE CHOSEN FROM BUTTON BANK GUI IS SAWTOOTH... | |||
a1 vco2 1,icps ;...CREATE A SAWTOOTH WAVE TONE | |||
a1 tone a1,12000 ;LOWPASS FILTER THE SOUND | |||
elseif gkSynType=2 then ;IF SYNTH TYPE CHOSEN FROM BUTTON BANK GUI IS SQUARE... | |||
a1 vco2 1,icps,2,0.5 ;...CREATE A SQUARE WAVE TONE | |||
a1 tone a1,12000 ;LOWPASS FILTER THE SOUND | |||
elseif gkSynType=3 then ;IF SYNTH TYPE CHOSEN FROM BUTTON BANK GUI IS PULSE... | |||
a1 vco2 1,icps,2,0.1 ;...CREATE A PULSE WAVE TONE | |||
a1 tone a1,12000 ;LOWPASS FILTER THE SOUND | |||
else ;OTHERWISE... | |||
a1 pinkish 10 ;...CREATE SOME PINK NOISE | |||
a1 butbp a1,icps,icps ;BANDPASS FILTER THE SOUND. BANDWIDTH = 1 OCTAVE. NARROW BANDWIDTH IF YOU WANT MORE OF A SENSE OF PITCH IN THE NOISE SIGNAL. | |||
endif ;END OF THIS CONDITIONAL BRANCH | |||
gaSyn = gaSyn + (a1*aenv) ;APPLY ENVELOPE | |||
endin | |||
instr 3 | |||
ktrig changed gkbase,gkbw,gknum,gkincr ;IF ANY OF THE INPUT VARIABLE ARE CHANGED GENERATE A MOMENTARY '1' VALUE (A BANG IN MAX-MSP LANGUAGE) | |||
if ktrig=1 then ;IF A CHANGED VALUE TRIGGER IS RECEIVED... | |||
reinit UPDATE ;REINITIALISE THIS INSTRUMENT FROM THE LABEL 'UPDATE' | |||
endif ;END OF THIS CONDITIONAL BRANCH | |||
UPDATE: ;LABEL | |||
ibase init i(gkbase) ;CREATE AN INITIALISATION TIME VARIABLE FROM FLTK GUI CONTROL | |||
inum init i(gknum) ;CREATE AN INITIALISATION TIME VARIABLE FROM FLTK GUI CONTROL | |||
ibw init i(gkbw) ;CREATE AN INITIALISATION TIME VARIABLE FROM FLTK GUI CONTROL | |||
iincr init i(gkincr) ;CREATE AN INITIALISATION TIME VARIABLE FROM FLTK GUI CONTROL | |||
aMod inch 1 ;READ LIVE AUDIO FROM THE COMPUTER'S LEFT INPUT CHANNEL | |||
;GATE MODULATOR SIGNAL | |||
if gkgate==1 then ;IF 'Gate Modulator' SWITCH IS ON.... | |||
krms rms aMod ;SCAN RMS OF MODUALTOR SIGNAL | |||
kgate = (krms<0.05?0:1) ;IF RMS OF MODULATOR SIGNAL IS BELOW A THRESHOLD, GATE WILL BE CLOSED (ZERO) OTHERWISE IT WILL BE OPEN ('1'). LOWER THE THRESHOLD IF THE GATE IS CUTTING OUT TOO MUCH DESIRED SIGNAL, RAISE IT IF TOO MUCH EXTRANEOUS NOISE IS ENTERING THE OUTPUT SIGNAL. | |||
kgate port kgate,0.01 ;DAMP THE OPENING AND CLOSING OF THE GATE SLIGHTLY | |||
agate interp kgate ;INTERPOLATE GATE VALUE AND CREATE AN A-RATE VERSION | |||
aMod = aMod * agate ;APPLY THE GATE TO THE MODULATOR SIGNAL | |||
endif | |||
if gkCarSource==1 then ;IF 'SYNTH' IS CHOSEN AS CARRIER SOURCE... | |||
aCar = gaSyn ;...ASSIGN SYNTH SIGNAL FROM INSTR 2 AS CARRIER SIGNAL | |||
else ;OTHERWISE... | |||
aCar inch 2 ;READ AUDIO FROM RIGHT INPUT CHANNEL FOR CARRIER SIGNAL | |||
endif | |||
icount init 0 ;INITIALISE THE FILTER COUNTER TO ZERO | |||
amix VocoderChannel aMod,aCar,gksteepness,ibase,ibw,iincr,icount,inum ;CALL 'VocoderChannel' UDO - (WILL RECURSE WITHIN THE UDO ITSELF FOR THEW REQUIRED NUMBER OF FILTERS | |||
;HIGH-PASS CHANNEL | |||
iHPcf = cpsmidinn(ibase+(inum*iincr)+1) ;HIGHPASS FILTER CUTOFF (ONE INCREMENT ABOVE THE HIGHEST BANDPASS FILTER) | |||
iHPcf limit iHPcf,2000,18000 ;LIMIT THE HIGHPASS FILTER TO BE WITHIN SENSIBLE LIMITS | |||
aModHP buthp aMod, iHPcf ;HIGHPASS FILTER THE MODULATOR | |||
aEnv follow2 aModHP,0.01,0.01 ;FOLLOW THE HIGHPASS FILTERED MODULATOR'S AMPLITUDE ENVELOPE | |||
aCarHP buthp aCar, iHPcf ;HIGHPASS FILTER THE CARRIER | |||
amix = (amix*gkBPGain*5)+(aCarHP*aEnv*gkHPGain*3) ;MIX THE HIGHPASS FILTERED CARRIER WITH THE BANDPASS FILTERS. APPLY THE MODULATOR'S ENVELOPE. | |||
outs amix,amix ;SEND AUDIO TO THE OUTPUTS | |||
clear gaSyn ;CLEAR THE INTERNAL SYNTH ACCUMULATING GLOBAL VARIABLE, READ FOR THE NEXT PERF. PASS | |||
rireturn ;RETURN FROM REINITIALISATION PASS. (NOT REALLY NEED AS THE endin FULFILS THE SAME FUNCTION.) | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [60*60*24*7] ;READ IN WIDGETS | |||
i 3 0 [60*60*24*7] ;VOCODER | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,97 @@ | |||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> | |||
<HTML> | |||
<HEAD> | |||
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252"> | |||
<TITLE></TITLE> | |||
<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.2 (Win32)"> | |||
<META NAME="CREATED" CONTENT="20120918;12541200"> | |||
<META NAME="CHANGED" CONTENT="20121002;7553400"> | |||
<STYLE TYPE="text/css"> | |||
<!-- | |||
@page { margin: 2cm } | |||
P { margin-bottom: 0.21cm } | |||
A:link { so-language: zxx } | |||
--> | |||
</STYLE> | |||
</HEAD> | |||
<BODY LANG="en-GB" DIR="LTR"> | |||
<P STYLE="margin-bottom: 0cm"><FONT FACE="Verdana, sans-serif"><FONT SIZE=5><U><B>Vocoder</B></U></FONT></FONT></P> | |||
<P STYLE="margin-bottom: 0cm"><BR> | |||
</P> | |||
<P STYLE="margin-bottom: 0cm; font-weight: normal; text-decoration: none"> | |||
<FONT FACE="Tahoma, sans-serif"><FONT SIZE=3>This is an | |||
implementation of a traditional analogue style vocoder. Two audio | |||
signals, referred to as a modulator and a carrier, are passed into | |||
the vocoder effect. The modulator is typically a voice and the | |||
carrier is typically a synthesizer. The modulator is analysed by | |||
being passed into a multiband filter (a bank of bandpass filters), | |||
the amplitude envelope of each band is tracked and a control function | |||
for each band generated. The carrier signal is also passed through a | |||
matching multiband filter, the set of amplitude envelopes derived | |||
from the modulator analysis is applied to the outputs of this second | |||
multiband filter. </FONT></FONT> | |||
</P> | |||
<P STYLE="margin-bottom: 0cm; font-weight: normal; text-decoration: none"> | |||
<FONT FACE="Tahoma, sans-serif"><FONT SIZE=3>The uppermost band of | |||
the filter bank is always a highpass filter. This is to allow high | |||
frequency sibilants in the modulator signal to be accurately | |||
represented.</FONT></FONT></P> | |||
<P STYLE="margin-bottom: 0cm; font-weight: normal; text-decoration: none"> | |||
<FONT FACE="Tahoma, sans-serif"><FONT SIZE=3>The modulator signal is | |||
always the signal received at the left input channel. For best | |||
results it is recommended to use a high quality external microphone.</FONT></FONT></P> | |||
<P STYLE="margin-bottom: 0cm"><BR> | |||
</P> | |||
<P STYLE="margin-bottom: 0cm"><FONT FACE="Tahoma, sans-serif"><B>Carrier | |||
Source -</B> Source used as carrier signal. Either an internal synth | |||
or an external signal. If external is chosen, audio is taken from the | |||
right input channel.</FONT></P> | |||
<P STYLE="margin-bottom: 0cm"><BR> | |||
</P> | |||
<P STYLE="margin-bottom: 0cm"><FONT FACE="Tahoma, sans-serif"><B>Filter | |||
Steepness –</B> Steepness of the filters used for both analysis | |||
and carrier processing.</FONT></P> | |||
<P STYLE="margin-bottom: 0cm"><BR> | |||
</P> | |||
<P STYLE="margin-bottom: 0cm"><FONT FACE="Tahoma, sans-serif"><B>Synth | |||
Type –</B> Type of oscillator used by the internal synthesizer. | |||
Choose between <I>sawtooth</I>, <I>square</I>, <I>pulse</I> or <I>noise</I>.</FONT></P> | |||
<P STYLE="margin-bottom: 0cm"><BR> | |||
</P> | |||
<P STYLE="margin-bottom: 0cm"><FONT FACE="Tahoma, sans-serif"><B>Base | |||
–</B> Frequency of the lowest filter (both analysis and | |||
processing) expressed as a MIDI note number.</FONT></P> | |||
<P STYLE="margin-bottom: 0cm"><BR> | |||
</P> | |||
<P STYLE="margin-bottom: 0cm"><FONT FACE="Tahoma, sans-serif"><B>Num | |||
–</B> Number of filters that constitute the multibank filters | |||
used during both the analysis of the modulator and the carrier | |||
processing.</FONT></P> | |||
<P STYLE="margin-bottom: 0cm"><BR> | |||
</P> | |||
<P STYLE="margin-bottom: 0cm"><FONT FACE="Tahoma, sans-serif"><B>B.width | |||
–</B> Bandwidth of the bandpass filters expressed in octaves.</FONT></P> | |||
<P STYLE="margin-bottom: 0cm"><BR> | |||
</P> | |||
<P STYLE="margin-bottom: 0cm"><FONT FACE="Tahoma, sans-serif"><B>Spacing | |||
–</B> Spacing between the bandpass filters expressed in | |||
semitones.</FONT></P> | |||
<P STYLE="margin-bottom: 0cm"><BR> | |||
</P> | |||
<P STYLE="margin-bottom: 0cm"><FONT FACE="Tahoma, sans-serif"><B>BPF | |||
–</B> Gain of the bank of bandpass filters.</FONT></P> | |||
<P STYLE="margin-bottom: 0cm"><BR> | |||
</P> | |||
<P STYLE="margin-bottom: 0cm"><FONT FACE="Tahoma, sans-serif"><B>HPF | |||
–</B> Gain of the single highpass filter.</FONT></P> | |||
<P STYLE="margin-bottom: 0cm"><BR> | |||
</P> | |||
<P STYLE="margin-bottom: 0cm"><FONT FACE="Tahoma, sans-serif"><B>Gate | |||
Input –</B> Activating this switch will apply a noise gate to | |||
the modulator signal. This option might be useful if the microphone | |||
used in rather noisy, such as would be the case if using the built-in | |||
microphone on a laptop, or if working in a noisy environment.</FONT></P> | |||
<P STYLE="margin-bottom: 0cm"><BR> | |||
</P> | |||
</BODY> | |||
</HTML> |
@@ -0,0 +1,83 @@ | |||
<Cabbage> | |||
form caption("clfilt - Multi-Mode Filter") size(600, 90), pluginID("clfl") | |||
image bounds(0, 0, 600, 90), colour( 40,40,100), shape("rounded"), outline("white"), line(4) | |||
rslider bounds( 10, 11, 70, 70), text("Freq."), colour( 40,40,100), fontcolour("white"), channel("cf"), range(20, 20000, 2000, 0.333), trackercolour("white") | |||
rslider bounds( 75, 11, 70, 70), text("N.Poles"), colour( 40,40,100), fontcolour("white"), channel("npol"), range(2,80,24,1,2), trackercolour("white") | |||
rslider bounds(140, 11, 70, 70), text("Ripple"), colour( 40,40,100), fontcolour("white"), channel("pbr"), range(0.1,50,14), trackercolour("white") | |||
rslider bounds(205, 11, 70, 70), text("Attenuation"), colour( 40,40,100), fontcolour("white"), channel("sba"), range(-120,-1,-60), trackercolour("white") | |||
combobox channel("type"), bounds(275, 12, 120, 20), value(1), text("Lowpass","Highpass") | |||
label bounds(320, 32,110, 12), text("Type"), fontcolour("white") | |||
combobox channel("kind"), bounds(275, 46, 120, 20), value(2), text("Butterworth","Chebychev type I","Chebychev type II") | |||
label bounds(313, 66,120, 12), text("Method"), fontcolour("white") | |||
rslider bounds(400, 11, 70, 70), text("Mix"), colour( 40,40,100), fontcolour("white"), channel("mix"), range(0,1.00,1), trackercolour("white") | |||
rslider bounds(465, 11, 70, 70), text("Level"), colour( 40,40,100), fontcolour("white"), channel("level"), range(0,1.00,0.3), trackercolour("white") | |||
checkbox channel("test"), pos(540, 35), text("TEST"), colour("yellow"), fontcolour("white"), size(100, 15), value(0) | |||
} | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 ;SAMPLE RATE | |||
ksmps = 32 ;NUMBER OF AUDIO SAMPLES IN EACH CONTROL CYCLE | |||
nchnls = 2 ;NUMBER OF CHANNELS (2=STEREO) | |||
0dbfs = 1 | |||
;Author: Iain McCurdy (2013) | |||
instr 1 ; widgets input | |||
gkcf chnget "cf" ; | |||
gknpol chnget "npol" ; | |||
gknpol init 2 | |||
gkpbr chnget "pbr" | |||
gksba chnget "sba" | |||
gktype chnget "type" | |||
gktype = gktype - 1 | |||
gktype init 0 | |||
gkkind chnget "kind" | |||
gkkind = gkkind - 1 | |||
gkkind init 0 | |||
gkmix chnget "mix" ; | |||
gklevel chnget "level" ; | |||
gktest chnget "test" | |||
endin | |||
instr 2 ; clfilt - multimode filter | |||
kporttime linseg 0,0.001,0.02 | |||
kcf portk gkcf,kporttime | |||
kmix portk gkmix,kporttime | |||
klevel portk gklevel,kporttime | |||
if gktest=0 then | |||
aL,aR ins | |||
else | |||
aL pinkish 0.5 | |||
aR = aL | |||
endif | |||
ktrig changed gktype, gknpol, gkkind, gkpbr, gksba | |||
if ktrig==1 then | |||
reinit UPDATE | |||
endif | |||
UPDATE: | |||
aFiltL clfilt aL, kcf, i(gktype), i(gknpol), i(gkkind), i(gkpbr), i(gksba) | |||
aFiltR clfilt aR, kcf, i(gktype), i(gknpol), i(gkkind), i(gkpbr), i(gksba) | |||
rireturn | |||
aL ntrpol aL,aFiltL,kmix | |||
aR ntrpol aR,aFiltR,kmix | |||
outs aL*klevel,aR*klevel | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [3600*24*7] | |||
i 2 0.01 [3600*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,96 @@ | |||
<Cabbage> | |||
form caption("clip") size(315, 90), pluginID("clip") | |||
image bounds(0, 0, 315, 90), colour( 0, 10, 20), shape("rounded"), outline("white"), line(4) | |||
rslider bounds( 10, 11, 70, 70), text("Limit"), channel("limit"), range(0.001, 1, 1, 0.5,0.001) , colour(0,10,20), fontcolour(silver), trackercolour(lightblue) | |||
rslider bounds( 75, 11, 70, 70), text("Argument"), channel("arg"), range(0, 1.00, 0.5) , colour(0,10,20), fontcolour(silver), trackercolour(lightblue) | |||
combobox bounds(150, 15, 80,20), channel("method"), size(80,50), value(1), text("B.D.J.", "Sine", "Tanh") | |||
checkbox bounds(150, 45, 100, 20), channel("clip_light"), text("clip") fontcolour("white"), shape("rounded"), colour("red") | |||
rslider bounds(235, 11, 70, 70), text("Level"), channel("level"), range(0, 10.00, 0.7) , colour(0,10,20), fontcolour(silver), trackercolour(lightblue) | |||
} | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 ;SAMPLE RATE | |||
ksmps = 32 ;NUMBER OF AUDIO SAMPLES IN EACH CONTROL CYCLE | |||
nchnls = 2 ;NUMBER OF CHANNELS (2=STEREO) | |||
0dbfs = 1 | |||
;Author: Iain McCurdy (2012) | |||
instr 1 | |||
gklimit chnget "limit" ;READ WIDGETS... | |||
gkmethod chnget "method" ; | |||
gkmethod init 1 | |||
gkmethod init i(gkmethod)-1 | |||
gkarg chnget "arg" | |||
gklevel chnget "level" ; | |||
;asigL, asigR diskin2 "Seashore.wav",1,0,1 ;OPTIONALLY USE A BUILT-IN WAVEFORM FOR TESTING | |||
asigL, asigR ins | |||
kSwitch changed gklimit, gkmethod, gkarg ;GENERATE A MOMENTARY '1' PULSE IN OUTPUT 'kSwitch' IF ANY OF THE SCANNED INPUT VARIABLES CHANGE. (OUTPUT 'kSwitch' IS NORMALLY ZERO) | |||
if kSwitch=1 then ;IF A VARIABLE CHANGE INDICATOR IS RECEIVED... | |||
reinit START ;...BEGIN A REINITIALISATION PASS FROM LABEL 'START' | |||
endif ;END OF CONDITIONAL BRANCHING | |||
START: ;LABEL | |||
/* clip meter */ | |||
krmsL rms asigL | |||
krmsR rms asigR | |||
kon = 1 | |||
koff = 0 | |||
if(krmsL>gklimit||krmsR>gklimit) then | |||
chnset kon,"clip_light" | |||
else | |||
chnset koff,"clip_light" | |||
endif | |||
/*------------*/ | |||
aL clip asigL, i(gkmethod), i(gklimit), i(gkarg) | |||
aR clip asigR, i(gkmethod), i(gklimit), i(gkarg) | |||
rireturn ;RETURN TO PERFORMANCE PASSES FROM INITIALISATION PASS | |||
; outs aL*gklevel*(1/(gklimit^0.5)), aR*gklevel*(1/(gklimit^0.5)) ;pdclip OUTPUTS ARE SENT TO THE SPEAKERS | |||
outs aL*gklevel, aR*gklevel ;pdclip OUTPUTS ARE SENT TO THE SPEAKERS | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [3600*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> | |||
@@ -0,0 +1,98 @@ | |||
<Cabbage> | |||
form caption("pdclip") size(315, 90), pluginID("pdcl") | |||
label bounds( 0, -8,315, 90), colour(20,100,100,200), fontcolour(70,150,150,200), text("pdclip"), shape("rounded"), outline("white"), line(4) | |||
image bounds( 0, 0,315, 90), colour(10,100,200,200), shape("rounded"), outline("white"), line(4) | |||
rslider bounds( 10, 11, 70, 70), text("Width"), channel("width"), range(0, 1.00, 0),fontcolour("white"), colour(20, 70,120), trackercolour(255,255,25) | |||
rslider bounds( 75, 11, 70, 70), text("Centre"), channel("center"), range(-1.00, 1.00, 0),fontcolour("white"), colour(20, 70,120), trackercolour(255,255,25) | |||
combobox bounds(150, 20, 80, 20), channel("bipolar"), size(80,50), value(2), text("Unipolar", "Bipolar") | |||
checkbox bounds(150, 48,130, 12), channel("TestTone"), FontColour("white"), value(0), text("Sine Tone"), colour(yellow) | |||
rslider bounds(235, 11, 70, 70), text("Level"), channel("level"), range(0, 1.00, 0.7),fontcolour("white"), colour(20, 70,120), trackercolour(255,255,25) | |||
} | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 ;SAMPLE RATE | |||
ksmps = 32 ;NUMBER OF AUDIO SAMPLES IN EACH CONTROL CYCLE | |||
nchnls = 2 ;NUMBER OF CHANNELS (2=STEREO) | |||
0dbfs = 1 | |||
;Author: Iain McCurdy (2012) | |||
gisine ftgen 0,0,4096,10,1 | |||
instr 1 | |||
kporttime linseg 0,0.001,0.05 ; portamento time ramps up from zero | |||
gkwidth chnget "width" ;READ WIDGETS... | |||
gkwidth portk gkwidth,kporttime | |||
gkcenter chnget "center" ; | |||
gkcenter portk gkcenter,kporttime | |||
gkbipolar chnget "bipolar" ; | |||
gkbipolar init 1 | |||
gkbipolar = gkbipolar-1 | |||
gklevel chnget "level" ; | |||
gklevel portk gklevel,kporttime | |||
gkTestTone chnget "TestTone" | |||
if gkTestTone==1 then ; if test tone selected... | |||
koct rspline 4,8,0.2,0.5 | |||
asigL poscil 1,cpsoct(koct),gisine ; ...generate a tone | |||
asigR = asigL ; right channel equal to left channel | |||
else ; otherwise... | |||
asigL, asigR ins ; read live inputs | |||
endif | |||
ifullscale = 0dbfs ;DEFINE FULLSCALE AMPLITUDE VALUE | |||
kSwitch changed gkbipolar ;GENERATE A MOMENTARY '1' PULSE IN OUTPUT 'kSwitch' IF ANY OF THE SCANNED INPUT VARIABLES CHANGE. (OUTPUT 'kSwitch' IS NORMALLY ZERO) | |||
if kSwitch=1 then ;IF A VARIABLE CHANGE INDICATOR IS RECEIVED... | |||
reinit START ;...BEGIN A REINITIALISATION PASS FROM LABEL 'START' | |||
endif ;END OF CONDITIONAL BRANCHING | |||
START: ;LABEL | |||
;CLIP THE AUDIO SIGNAL USING pdclip | |||
aL pdclip asigL, gkwidth, gkcenter, i(gkbipolar) ; [, ifullscale]] | |||
aR pdclip asigR, gkwidth, gkcenter, i(gkbipolar) ; [, ifullscale]] | |||
rireturn ;RETURN TO PERFORMANCE PASSES FROM INITIALISATION PASS | |||
alevel interp gklevel | |||
outs aL * alevel, aR * alevel ;pdclip OUTPUT ARE SENT TO THE SPEAKERS | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [3600*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> | |||
@@ -0,0 +1,94 @@ | |||
<Cabbage> | |||
form caption("pvshift Frequency Shifter") size(510, 90), pluginID("shft") | |||
image bounds( 15, 9, 60, 60), colour(30,30,30,100), shape("ellipse"), line(0) | |||
image bounds( 85, 9, 60, 60), colour(30,30,30,100), shape("ellipse"), line(0) | |||
image bounds(155, 9, 60, 60), colour(30,30,30,100), shape("ellipse"), line(0) | |||
image bounds(225, 9, 60, 60), colour(30,30,30,100), shape("ellipse"), line(0) | |||
image bounds(295, 9, 60, 60), colour(30,30,30,100), shape("ellipse"), line(0) | |||
image bounds(365, 9, 60, 60), colour(30,30,30,100), shape("ellipse"), line(0) | |||
image bounds(435, 9, 60, 60), colour(30,30,30,100), shape("ellipse"), line(0) | |||
image bounds(-60,-10,630,110), colour(150,255,100,200), outline("silver"), line(6), shape("ellipse") | |||
rslider bounds( 10, 10, 70, 70), text("Coarse"), channel("coarse"), range(-4000, 4000, 0, 1), fontcolour("black"), colour("orange"), trackercolour("yellow") | |||
rslider bounds( 80, 10, 70, 70), text("Multiplier"), channel("fine"), range(-1, 1, 1, 1, 0.0001), fontcolour("black"), colour("orange"), trackercolour("yellow") | |||
rslider bounds(150, 10, 70, 70), text("Lowest"), channel("lowest"), range( 20, 20000, 20, 0.5), fontcolour("black"), colour("orange"), trackercolour("yellow") | |||
rslider bounds(220, 10, 70, 70), text("Feedback"), channel("FB"), range(0, 1.00, 0), fontcolour("black"), colour("orange"), trackercolour("yellow") | |||
rslider bounds(290, 10, 70, 70), text("FFT Size"), channel("att_table"), range(1, 8, 5, 1,1), fontcolour("black"), colour("orange"), trackercolour("yellow") | |||
rslider bounds(360, 10, 70, 70), text("Mix"), channel("mix"), range(0, 1.00, 1), fontcolour("black"), colour("orange"), trackercolour("yellow") | |||
rslider bounds(430, 10, 70, 70), text("Level"), channel("lev"), range(0, 1.00, 0.5, 0.5), fontcolour("black"), colour("orange"), trackercolour("yellow") | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 32 | |||
nchnls = 2 | |||
0dbfs = 1 ;MAXIMUM AMPLITUDE | |||
;Iain McCurdy | |||
;http://iainmccurdy.org/csound.html | |||
;Frequency shifting effect using pvshift opcode. | |||
/* FFT attribute tables */ | |||
giFFTattributes1 ftgen 0, 0, 4, -2, 64, 32, 64, 1 | |||
giFFTattributes2 ftgen 0, 0, 4, -2, 128, 64, 128, 1 | |||
giFFTattributes3 ftgen 0, 0, 4, -2, 256, 128, 256, 1 | |||
giFFTattributes4 ftgen 0, 0, 4, -2, 512, 128, 512, 1 | |||
giFFTattributes5 ftgen 0, 0, 4, -2, 1024, 256, 1024, 1 | |||
giFFTattributes6 ftgen 0, 0, 4, -2, 2048, 512, 2048, 1 | |||
giFFTattributes7 ftgen 0, 0, 4, -2, 4096,1024, 4096, 1 | |||
giFFTattributes8 ftgen 0, 0, 4, -2, 8192,2048, 8192, 1 | |||
opcode pvshift_module,a,akkkkkiiii | |||
ain,kshift,klowest,kfeedback,kmix,klev,iFFTsize,ioverlap,iwinsize,iwintype xin | |||
f_FB pvsinit iFFTsize,ioverlap,iwinsize,iwintype, 0 ;INITIALISE FEEDBACK FSIG | |||
f_anal pvsanal ain, iFFTsize, ioverlap, iwinsize, iwintype ;ANALYSE AUDIO INPUT SIGNAL AND OUTPUT AN FSIG | |||
f_mix pvsmix f_anal, f_FB ;MIX AUDIO INPUT WITH FEEDBACK SIGNAL | |||
f_shift pvshift f_mix, kshift, klowest ;SHIFT FREQUENCIES | |||
f_FB pvsgain f_shift, kfeedback ;CREATE FEEDBACK F-SIGNAL FOR NEXT PASS | |||
aout pvsynth f_shift ;RESYNTHESIZE THE f-SIGNAL AS AN AUDIO SIGNAL | |||
amix ntrpol ain, aout, kmix ;CREATE DRY/WET MIX | |||
xout amix*klev | |||
endop | |||
instr 1 | |||
ainL,ainR ins | |||
;ainL,ainR diskin2 "SynthPad.wav",1,0,1 | |||
kcoarse chnget "coarse" ; coarse freq. shift | |||
kfine chnget "fine" ; fine freq. control (multipler) | |||
kporttime linseg 0,0.001,0.2 | |||
kshift lineto kcoarse*kfine, kporttime ; ultimate freq. shift is sum of coarse and fine controls | |||
klowest chnget "lowest" ; lowest shifted frequency | |||
kFB chnget "FB" ; feedback amount | |||
kmix chnget "mix" | |||
klev chnget "lev" | |||
/* SET FFT ATTRIBUTES */ | |||
katt_table chnget "att_table" ; FFT atribute table | |||
katt_table init 5 | |||
ktrig changed katt_table | |||
if ktrig==1 then | |||
reinit update | |||
endif | |||
update: | |||
iFFTsize table 0, giFFTattributes1 + i(katt_table) - 1 | |||
ioverlap table 1, giFFTattributes1 + i(katt_table) - 1 | |||
iwinsize table 2, giFFTattributes1 + i(katt_table) - 1 | |||
iwintype table 3, giFFTattributes1 + i(katt_table) - 1 | |||
/*-------------------*/ | |||
aoutL pvshift_module ainL,kshift,klowest,kFB,kmix,klev,iFFTsize,ioverlap,iwinsize,iwintype ; call UDO for each channel | |||
aoutR pvshift_module ainR,kshift,klowest,kFB,kmix,klev,iFFTsize,ioverlap,iwinsize,iwintype | |||
outs aoutR,aoutR | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [60*60*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,94 @@ | |||
<Cabbage> | |||
form caption("pvsAdsyn") size(580, 90), pluginID("adsy") | |||
image pos(0, 0), size(580, 90), colour(200,100,50,150), shape("rounded"), outline("white"), line(5) | |||
rslider bounds(10, 11, 70, 70), text("Freq.Mod."), channel("fmod"), range(0.25, 4, 1), fontcolour("white"), colour(200,100,50,250), trackercolour(tan) | |||
rslider bounds(80, 11, 70, 70), text("Num.Osc.s"), channel("noscs"), range(1, 1024, 256,1,1), fontcolour("white"), colour(200,100,50,250), trackercolour(tan) | |||
rslider bounds(150, 11, 70, 70), text("Bin Offset"), channel("binoffset"), range(0, 256, 1,1,1), fontcolour("white"), colour(200,100,50,250), trackercolour(tan) | |||
rslider bounds(220, 11, 70, 70), text("Bin Incr."), channel("binincr"), range(1, 32, 1,1,1), fontcolour("white"), colour(200,100,50,250), trackercolour(tan) | |||
rslider bounds(290, 11, 70, 70), text("FFT Size"), channel("att_table"), range(1, 8, 5, 1,1), fontcolour("white"), colour(200,100,50,250), trackercolour(tan) | |||
rslider bounds(360, 11, 70, 70), text("Feedback"), channel("feedback"), range(0, 0.99, 0), fontcolour("white"), colour(200,100,50,250), trackercolour(tan) | |||
rslider bounds(430, 11, 70, 70), text("Mix"), channel("mix"), range(0, 1.00, 1), fontcolour("white"), colour(200,100,50,250), trackercolour(tan) | |||
rslider bounds(500, 11, 70, 70), text("Level"), channel("lev"), range(0, 5.00, 0.5, 0.5), fontcolour("white"), colour(200,100,50,250), trackercolour(tan) | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 32 | |||
nchnls = 2 | |||
0dbfs = 1 ;MAXIMUM AMPLITUDE | |||
;Author: Iain McCurdy (2012) | |||
;http://iainmccurdy.org/csound.html | |||
/* FFT attribute tables */ | |||
giFFTattributes1 ftgen 0, 0, 4, -2, 64, 32, 64, 1 | |||
giFFTattributes2 ftgen 0, 0, 4, -2, 128, 64, 128, 1 | |||
giFFTattributes3 ftgen 0, 0, 4, -2, 256, 128, 256, 1 | |||
giFFTattributes4 ftgen 0, 0, 4, -2, 512, 128, 512, 1 | |||
giFFTattributes5 ftgen 0, 0, 4, -2, 1024, 256, 1024, 1 | |||
giFFTattributes6 ftgen 0, 0, 4, -2, 2048, 512, 2048, 1 | |||
giFFTattributes7 ftgen 0, 0, 4, -2, 4096,1024, 4096, 1 | |||
giFFTattributes8 ftgen 0, 0, 4, -2, 8192,2048, 8192, 1 | |||
opcode pvsadsyn_module,a,akkkkkkiiii | |||
ain,kfmod,knoscs,kbinoffset,kbinincr,kfeedback,kmix,iFFTsize,ioverlap,iwinsize,iwintype xin | |||
aresyn init 0 | |||
f_anal pvsanal ain+(aresyn*kfeedback), iFFTsize, ioverlap, iwinsize, iwintype ;ANALYSE AUDIO INPUT SIGNAL AND OUTPUT AN FSIG | |||
knossc init 256 | |||
ktrig changed knoscs,kbinoffset,kbinincr | |||
if ktrig==1 then | |||
reinit UPDATE | |||
endif | |||
UPDATE: | |||
inoscs init i(knoscs) | |||
ibinoffset init i(kbinoffset) | |||
ibinincr init i(kbinincr) | |||
inoscs limit inoscs, 1, (((iFFTsize*0.5)+1)-ibinoffset)/ibinincr | |||
aresyn pvsadsyn f_anal, inoscs, kfmod , i(kbinoffset), i(kbinincr) ;RESYNTHESIZE FROM THE fsig USING pvsadsyn | |||
rireturn | |||
amix ntrpol ain, aresyn, kmix ;CREATE DRY/WET MIX | |||
xout amix | |||
endop | |||
instr 1 | |||
; audio input | |||
ainL,ainR ins | |||
;ainL,ainR diskin "SynthPad.wav",1,0,1 ;USE FOR TESTING | |||
kmix chnget "mix" | |||
kfmod chnget "fmod" | |||
knoscs chnget "noscs" | |||
kbinoffset chnget "binoffset" | |||
kbinincr chnget "binincr" | |||
klev chnget "lev" | |||
kfeedback chnget "feedback" | |||
/* SET FFT ATTRIBUTES */ | |||
katt_table chnget "att_table" ; FFT atribute table | |||
katt_table init 5 | |||
ktrig changed katt_table | |||
if ktrig==1 then | |||
reinit update | |||
endif | |||
update: | |||
iFFTsize table 0, giFFTattributes1 + i(katt_table) - 1 | |||
ioverlap table 1, giFFTattributes1 + i(katt_table) - 1 | |||
iwinsize table 2, giFFTattributes1 + i(katt_table) - 1 | |||
iwintype table 3, giFFTattributes1 + i(katt_table) - 1 | |||
/*-------------------*/ | |||
aoutL pvsadsyn_module ainL,kfmod,knoscs,kbinoffset,kbinincr,kfeedback,kmix,iFFTsize,ioverlap,iwinsize,iwintype | |||
aoutR pvsadsyn_module ainR,kfmod,knoscs,kbinoffset,kbinincr,kfeedback,kmix,iFFTsize,ioverlap,iwinsize,iwintype | |||
outs aoutR*klev,aoutR*klev | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [60*60*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,93 @@ | |||
; pvsBandp | |||
; seems to crash a bit on Windows... | |||
<Cabbage> | |||
form caption("pvs Bandpass Filter"), size(390, 310) colour(255,165,79,150), pluginID("bndp") | |||
vslider bounds( 10, 0, 60,200), text("Low Cut"), channel("lowcut"), range(20, 20000, 500,0.5), colour("black"), FontColour("black"), trackercolour("yellow") | |||
vslider bounds( 70, 0, 60,200), text("Low Full"), channel("lowfull"), range(20, 20000, 550,0.5), colour("black"), trackercolour("yellow") | |||
vslider bounds(130, 0, 60,200), text("High Full"), channel("highfull"), range(20, 20000,1900,0.5), colour("black"), trackercolour("yellow") | |||
vslider bounds(190, 0, 60,200), text("High Cut"), channel("highcut"), range(20, 20000, 2000,0.5), colour("black"), trackercolour("yellow") | |||
vslider bounds(250, 0, 60,200), text("Curve"), channel("type"), range(-5.00, 5.00, 0), colour("black"), trackercolour("yellow") | |||
rslider bounds(310, 30, 70, 70), text("FFT Size"), channel("att_table"), range(1,10, 5, 1,1), colour("black"), trackercolour("yellow") | |||
rslider bounds(310,110, 70, 70), text("Feedback"), channel("feedback"), range(0,0.99, 0), colour("black"), trackercolour("yellow") | |||
line bounds( 0, 210, 390,100), colour("Grey") | |||
hslider bounds( 5,205, 380, 60), text("Mix"), channel("mix"), fontcolour("black"), range(0, 1.00, 1), colour("black"), trackercolour("yellow") | |||
hslider bounds( 5,250, 380, 60), text("Level"), channel("lev"), fontcolour("black"), range(0, 10.00, 0.5, 0.5), colour("black"), trackercolour("yellow") | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 32 | |||
nchnls = 2 | |||
0dbfs = 1 ;MAXIMUM AMPLITUDE | |||
;Author: Iain McCurdy (2013) | |||
;http://iainmccurdy.org/csound.html | |||
/* FFT attribute tables */ | |||
giFFTattributes1 ftgen 0, 0, 4, -2, 64, 32, 64, 1 | |||
giFFTattributes2 ftgen 0, 0, 4, -2, 128, 64, 128, 1 | |||
giFFTattributes3 ftgen 0, 0, 4, -2, 256, 128, 256, 1 | |||
giFFTattributes4 ftgen 0, 0, 4, -2, 512, 128, 512, 1 | |||
giFFTattributes5 ftgen 0, 0, 4, -2, 1024, 128, 1024, 1 | |||
giFFTattributes6 ftgen 0, 0, 4, -2, 2048, 256, 2048, 1 | |||
giFFTattributes7 ftgen 0, 0, 4, -2, 2048,1024, 2048, 1 | |||
giFFTattributes8 ftgen 0, 0, 4, -2, 4096,1024, 4096, 1 | |||
giFFTattributes9 ftgen 0, 0, 4, -2, 8192,2048, 8192, 1 | |||
giFFTattributes10 ftgen 0, 0, 4, -2,16384,4096,16384, 1 | |||
opcode pvsbandp_module,a,akkkkkkkkiiii | |||
ain,klowcut,klowfull,khighfull,khighcut,ktype,kfeedback,kmix,klev,iFFTsize,ioverlap,iwinsize,iwintype xin | |||
f_FB pvsinit iFFTsize,ioverlap,iwinsize,iwintype, 0 ;INITIALISE FEEDBACK FSIG | |||
f_anal pvsanal ain, iFFTsize, ioverlap, iwinsize, iwintype ;ANALYSE AUDIO INPUT SIGNAL AND OUTPUT AN FSIG | |||
f_mix pvsmix f_anal, f_FB ;MIX AUDIO INPUT WITH FEEDBACK SIGNAL | |||
f_bandp pvsbandp f_mix, klowcut, klowfull, khighfull, khighcut, ktype | |||
f_FB pvsgain f_bandp, kfeedback ;CREATE FEEDBACK F-SIGNAL FOR NEXT PASS | |||
aout pvsynth f_bandp ;RESYNTHESIZE THE f-SIGNAL AS AN AUDIO SIGNAL | |||
ain delay ain,iwinsize/sr | |||
amix ntrpol ain, aout, kmix ;CREATE DRY/WET MIX | |||
xout amix*klev | |||
endop | |||
instr 1 | |||
kmix chnget "mix" | |||
klev chnget "lev" | |||
klowcut chnget "lowcut" | |||
klowfull chnget "lowfull" | |||
khighfull chnget "highfull" | |||
khighcut chnget "highcut" | |||
ktype chnget "type" | |||
kfeedback chnget "feedback" | |||
ainL,ainR ins | |||
;ainL,ainR diskin "808loop.wav",1,0,1 ;USE FOR TESTING | |||
katt_table chnget "att_table" ; FFT atribute table | |||
katt_table init 5 | |||
ktrig changed katt_table | |||
if ktrig==1 then | |||
reinit update | |||
endif | |||
update: | |||
iFFTsize table 0, giFFTattributes1 + i(katt_table) - 1 | |||
ioverlap table 1, giFFTattributes1 + i(katt_table) - 1 | |||
iwinsize table 2, giFFTattributes1 + i(katt_table) - 1 | |||
iwintype table 3, giFFTattributes1 + i(katt_table) - 1 | |||
aoutL pvsbandp_module ainL,klowcut,klowfull,khighfull,khighcut,ktype,kfeedback,kmix,klev,iFFTsize,ioverlap,iwinsize,iwintype | |||
aoutR pvsbandp_module ainR,klowcut,klowfull,khighfull,khighcut,ktype,kfeedback,kmix,klev,iFFTsize,ioverlap,iwinsize,iwintype | |||
outs aoutL, aoutR | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [60*60*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,95 @@ | |||
; pvsBandr | |||
; seems to crash a bit on Windows... | |||
<Cabbage> | |||
form caption("pvs Bandreject Filter"), size(390, 310) colour( 55,165,79,150), pluginID("bndp") | |||
vslider bounds( 10, 0, 60,200), text("Low Cut"), channel("lowcut"), range(20, 20000, 100,0.5), colour("black"), FontColour("black"), trackercolour("yellow") | |||
vslider bounds( 70, 0, 60,200), text("Low Full"), channel("lowfull"), range(20, 20000, 150,0.5), colour("black"), trackercolour("yellow") | |||
vslider bounds(130, 0, 60,200), text("High Full"), channel("highfull"), range(20, 20000,2800,0.5), colour("black"), trackercolour("yellow") | |||
vslider bounds(190, 0, 60,200), text("High Cut"), channel("highcut"), range(20, 20000, 2900,0.5), colour("black"), trackercolour("yellow") | |||
vslider bounds(250, 0, 60,200), text("Curve"), channel("type"), range(-5.00, 5.00, 0), colour("black"), trackercolour("yellow") | |||
rslider bounds(310, 30, 70, 70), text("FFT Size"), channel("att_table"),range(1,10, 5, 1,1), colour("black"), trackercolour("yellow") | |||
rslider bounds(310,110, 70, 70), text("Feedback"), channel("feedback"), range(0,0.99, 0), colour("black"), trackercolour("yellow") | |||
line bounds( 0, 210, 390,100), colour("Grey") | |||
hslider bounds( 5,205, 380, 60), text("Mix"), channel("mix"), fontcolour("black"), range(0, 1.00, 1), colour("black"), trackercolour("yellow") | |||
hslider bounds( 5,250, 380, 60), text("Level"), channel("lev"), fontcolour("black"), range(0, 10.00, 0.5, 0.5), colour("black"), trackercolour("yellow") | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 32 | |||
nchnls = 2 | |||
0dbfs = 1 ;MAXIMUM AMPLITUDE | |||
;Author: Iain McCurdy (2013) | |||
;http://iainmccurdy.org/csound.html | |||
/* FFT attribute tables */ | |||
giFFTattributes1 ftgen 0, 0, 4, -2, 64, 32, 64, 1 | |||
giFFTattributes2 ftgen 0, 0, 4, -2, 128, 64, 128, 1 | |||
giFFTattributes3 ftgen 0, 0, 4, -2, 256, 128, 256, 1 | |||
giFFTattributes4 ftgen 0, 0, 4, -2, 512, 128, 512, 1 | |||
giFFTattributes5 ftgen 0, 0, 4, -2, 1024, 128, 1024, 1 | |||
giFFTattributes6 ftgen 0, 0, 4, -2, 2048, 256, 2048, 1 | |||
giFFTattributes7 ftgen 0, 0, 4, -2, 2048,1024, 2048, 1 | |||
giFFTattributes8 ftgen 0, 0, 4, -2, 4096,1024, 4096, 1 | |||
giFFTattributes9 ftgen 0, 0, 4, -2, 8192,2048, 8192, 1 | |||
giFFTattributes10 ftgen 0, 0, 4, -2,16384,4096,16384, 1 | |||
opcode pvsbandr_module,a,akkkkkkkkiiii | |||
ain,klowcut,klowfull,khighfull,khighcut,ktype,kfeedback,kmix,klev,iFFTsize,ioverlap,iwinsize,iwintype xin | |||
f_FB pvsinit iFFTsize,ioverlap,iwinsize,iwintype, 0 ;INITIALISE FEEDBACK FSIG | |||
f_anal pvsanal ain, iFFTsize, ioverlap, iwinsize, iwintype ;ANALYSE AUDIO INPUT SIGNAL AND OUTPUT AN FSIG | |||
f_mix pvsmix f_anal, f_FB ;MIX AUDIO INPUT WITH FEEDBACK SIGNAL | |||
f_bandr pvsbandr f_mix, klowcut, klowfull, khighfull, khighcut, ktype | |||
f_FB pvsgain f_bandr, kfeedback ;CREATE FEEDBACK F-SIGNAL FOR NEXT PASS | |||
aout pvsynth f_bandr ;RESYNTHESIZE THE f-SIGNAL AS AN AUDIO SIGNAL | |||
ain delay ain,iwinsize/sr | |||
amix ntrpol ain, aout, kmix ;CREATE DRY/WET MIX | |||
xout amix*klev | |||
endop | |||
instr 1 | |||
kmix chnget "mix" | |||
klev chnget "lev" | |||
klowcut chnget "lowcut" | |||
klowfull chnget "lowfull" | |||
khighfull chnget "highfull" | |||
khighcut chnget "highcut" | |||
ktype chnget "type" | |||
kfeedback chnget "feedback" | |||
ainL,ainR ins | |||
;ainL,ainR diskin "808loop.wav",1,0,1 ;USE FOR TESTING | |||
katt_table chnget "att_table" ; FFT atribute table | |||
katt_table init 5 | |||
ktrig changed katt_table | |||
if ktrig==1 then | |||
reinit update | |||
endif | |||
update: | |||
iFFTsize table 0, giFFTattributes1 + i(katt_table) - 1 | |||
ioverlap table 1, giFFTattributes1 + i(katt_table) - 1 | |||
iwinsize table 2, giFFTattributes1 + i(katt_table) - 1 | |||
iwintype table 3, giFFTattributes1 + i(katt_table) - 1 | |||
aoutL pvsbandr_module ainL,klowcut,klowfull,khighfull,khighcut,ktype,kfeedback,kmix,klev,iFFTsize,ioverlap,iwinsize,iwintype | |||
aoutR pvsbandr_module ainR,klowcut,klowfull,khighfull,khighcut,ktype,kfeedback,kmix,klev,iFFTsize,ioverlap,iwinsize,iwintype | |||
outs aoutL, aoutR | |||
;klev chnget "lev" | |||
; outs ainL*klev,ainR*klev | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [60*60*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,171 @@ | |||
<Cabbage> | |||
form caption("FFT Effects") size(450, 640), pluginID("pvfx") | |||
; PVSFREEZE | |||
groupbox bounds(0, 0, 450, 100), colour( 0,200,100,100) text("Freeze"), fontcolour("white"), plant("pvsfreeze"){ | |||
checkbox bounds(35, 30, 30, 30), channel("freeze_onoff"), fontcolour("black"), colour("red"), shape("rounded") | |||
label bounds( 30, 68, 60, 12), text("On/Off"), FontColour("white") | |||
checkbox bounds(100, 30, 180, 25), channel("freezb"), text("Freeze Both"), fontcolour("white"), shape("rounded"), colour("red") | |||
checkbox bounds(215, 30, 180, 25), channel("freeza"), text("Freeze Amplitudes"), fontcolour("white"), shape("rounded"), colour("yellow") | |||
checkbox bounds(215, 65, 180, 25), channel("freezf"), text("Freeze Frequencies"), fontcolour("white"), shape("rounded"), colour("orange") | |||
rslider bounds(370, 25, 70, 70), text("Mix"), channel("freeze_mix"), fontcolour("white"), range(0, 1.00, 1), colour( 0,200,100,150) | |||
} | |||
; PVSCALE | |||
groupbox bounds(0,100, 225, 100), colour(250,250, 0,200) text("Freq. Scale"), fontcolour("white"), plant("pvscale"){ | |||
checkbox bounds(25, 30, 30, 30), channel("pvscale_onoff"), fontcolour("black"), colour("red"), shape("rounded") | |||
label bounds( 20, 68, 60, 12), text("On/Off"), FontColour("white") | |||
rslider bounds( 70, 25, 70, 70), text("Ratio"), channel("pvscale_scal"), fontcolour("white"), range(0.25, 4.00, 1, 0.5, 0.01), colour(250,250, 0,150) | |||
rslider bounds(140, 25, 70, 70), text("Mix"), channel("pvscale_mix"), fontcolour("white"), range(0, 1.00, 1), colour(250,250, 0,150) | |||
} | |||
; PVSHIFT | |||
groupbox bounds(225,100, 225, 100), colour( 0,250,250,200) text("Freq. Shift"), fontcolour("white"), plant("pvshift"){ | |||
checkbox bounds(25, 30, 30, 30), channel("pvshift_onoff"), fontcolour("black"), colour("red"), shape("rounded") | |||
label bounds( 20, 68, 60, 12), text("On/Off"), FontColour("white") | |||
rslider bounds( 70, 25, 70, 70), text("Freq."), channel("pvshift_freq"), fontcolour("white"), range(-4000, 4000, 0), colour( 0,250,250,150) | |||
rslider bounds(140, 25, 70, 70), text("Mix"), channel("pvshift_mix"), fontcolour("white"), range(0, 1.00, 1), colour( 0,250,250,150) | |||
} | |||
; PVSBLUR | |||
groupbox bounds(0,200, 225, 100), colour( 50,250, 0,200) text("Blur"), fontcolour("white"), plant("pvsblur"){ | |||
checkbox bounds(25, 30, 30, 30), channel("pvsblur_onoff"), fontcolour("black"), colour("red"), shape("rounded") | |||
label bounds( 20, 68, 60, 12), text("On/Off"), FontColour("white") | |||
rslider bounds( 70, 25, 70, 70), text("Ratio"), channel("pvsblur_scal"), fontcolour("white"), range(0.25, 4.00, 1, 0.5, 0.01), colour( 50,250, 0,150) | |||
rslider bounds(140, 25, 70, 70), text("Mix"), channel("pvsblur_mix"), fontcolour("white"), range(0, 1.00, 1), colour( 50,250, 0,150) | |||
} | |||
; PVSMOOTH | |||
groupbox bounds(225,200, 225, 100), colour(100,250,100,200) text("Smooth"), fontcolour("white"), plant("pvsmooth"){ | |||
checkbox bounds(25, 30, 30, 30), channel("pvsmooth_onoff"), fontcolour("black"), colour("red"), shape("rounded") | |||
label bounds( 20, 68, 60, 12), text("On/Off"), FontColour("white") | |||
rslider bounds( 70, 25, 70, 70), text("Freq."), channel("pvsmooth_freq"), fontcolour("white"), range(-4000, 4000, 0), colour(100,250,100,160) | |||
rslider bounds(140, 25, 70, 70), text("Mix"), channel("pvsmooth_mix"), fontcolour("white"), range(0, 1.00, 1), colour(100,250,100,150) | |||
} | |||
; PVSWARP | |||
; PVSBANDP / PVSBANDR | |||
; PVSADSYN | |||
groupbox bounds(0, 300, 450, 100), colour(150, 40, 40,250) text("Additive Resynthesizer"), fontcolour("white"), plant("pvsadsyn"){ | |||
checkbox bounds(35, 30, 30, 30), channel("pvsadsyn_onoff"), fontcolour("black"), colour("red"), shape("rounded") | |||
label bounds( 30, 68, 60, 12), text("On/Off"), FontColour("white") | |||
rslider bounds( 90, 25, 70, 70), text("Freq.Mod."), channel("pvsadsyn_fmod"), range(0.25, 4, 1), fontcolour("white"), colour(110, 0, 0,200) | |||
rslider bounds(160, 25, 70, 70), text("Num.Osc.s"), channel("pvsadsyn_noscs"), range(1, 1024, 256,1,1), fontcolour("white"), colour(110, 0, 0,200) | |||
rslider bounds(230, 25, 70, 70), text("Bin Offset"), channel("pvsadsyn_binoffset"), range(0, 256, 1,1,1), fontcolour("white"), colour(110, 0, 0,200) | |||
rslider bounds(300, 25, 70, 70), text("Bin Incr."), channel("pvsadsyn_binincr"), range(1, 32, 1,1,1), fontcolour("white"), colour(110, 0, 0,200) | |||
rslider bounds(370, 25, 70, 70), text("Mix"), channel("pvsadsyn_mix"), range(0, 1, 1), fontcolour("white"), colour(110, 0, 0,200) | |||
} | |||
; OUTPUT | |||
groupbox bounds(0, 400, 450, 100), colour( 0,250,250,100) text("Output"), fontcolour("white"), plant("output"){ | |||
rslider bounds( 10, 25, 70, 70), text("Level"), channel("level"), range(0, 1.00, 0), fontcolour("white"), colour( 0,250,250,150) | |||
} | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 32 | |||
nchnls = 2 | |||
0dbfs = 1 ;MAXIMUM AMPLITUDE | |||
;Author: Iain McCurdy (2013) | |||
;http://iainmccurdy.org/csound.html | |||
instr 1 | |||
/* AUDIO INPUT */ | |||
aL,aR ins | |||
;aL,aR diskin2 "SynthPad.wav",1,0,1 | |||
/* FFT PARAMETERS */ | |||
iFFTsize = 1024 | |||
ioverlap = 256 | |||
iwinsize = 1024 | |||
iwintype = 1 | |||
/* ANALYSE AUDIO SIGNAL */ | |||
f_sigL pvsanal aL, iFFTsize, ioverlap, iwinsize, iwintype ;ANALYSE AUDIO INPUT SIGNAL AND OUTPUT AN FSIG | |||
f_sigR pvsanal aR, iFFTsize, ioverlap, iwinsize, iwintype | |||
/* PVSFREEZE */ | |||
kfreeze_onoff chnget "freeze_onoff" | |||
kfreeze_mix chnget "freeze_mix" | |||
kfreeza chnget "freeza" | |||
kfreezf chnget "freezf" | |||
kfreezb chnget "freezb" | |||
if(kfreeze_onoff==1) then | |||
; triggering of 'Freeze All' mode | |||
kon = 1 | |||
koff = 0 | |||
ktrigon trigger kfreezb,0.5,0 | |||
ktrigoff trigger kfreezb,0.5,1 | |||
if(ktrigon==1) then | |||
chnset kon,"freeza" | |||
chnset kon,"freezf" | |||
elseif(ktrigoff==1) then | |||
chnset koff,"freeza" | |||
chnset koff,"freezf" | |||
endif | |||
f_freezeL pvsfreeze f_sigL, kfreeza, kfreezf | |||
f_freezeR pvsfreeze f_sigR, kfreeza, kfreezf | |||
f_drymixL pvsgain f_sigL, 1-kfreeze_mix ;WET/DRY MIX | |||
f_drymixR pvsgain f_sigR, 1-kfreeze_mix ; | |||
f_wetmixL pvsgain f_freezeL, kfreeze_mix ; | |||
f_wetmixR pvsgain f_freezeR, kfreeze_mix ; | |||
f_sigL pvsmix f_drymixL, f_wetmixL ; | |||
f_sigR pvsmix f_drymixR, f_wetmixR ; | |||
endif | |||
/* PVSADSYN */ | |||
kpvsadsyn_onoff chnget "pvsadsyn_onoff" ;READ IN WIDGETS | |||
if(kpvsadsyn_onoff==1) then | |||
kpvsadsyn_mix chnget "pvsadsyn_mix" ;READ IN WIDGETS | |||
kpvsadsyn_fmod chnget "pvsadsyn_fmod" | |||
kpvsadsyn_noscs chnget "pvsadsyn_noscs" | |||
kpvsadsyn_binoffset chnget "pvsadsyn_binoffset" | |||
kpvsadsyn_binincr chnget "pvsadsyn_binincr" | |||
kpvsadsyn_lev chnget "pvsadsyn_lev" | |||
knossc init 256 | |||
ktrig changed kpvsadsyn_noscs,kpvsadsyn_binoffset,kpvsadsyn_binincr ;GENERATE TRIGGER FOR I-RATE PARAMETERS | |||
if ktrig==1 then | |||
reinit UPDATE | |||
endif | |||
UPDATE: | |||
inoscs init i(kpvsadsyn_noscs) | |||
ibinoffset init i(kpvsadsyn_binoffset) | |||
ibinincr init i(kpvsadsyn_binincr) | |||
inoscs limit inoscs, 1, (((iFFTsize*0.5)+1)-ibinoffset)/ibinincr ;LIMIT NUMBER OF OSCILLATORS USED TO PREVENT CRASHES | |||
aresynL pvsadsyn f_sigL, inoscs, kpvsadsyn_fmod , ibinoffset, ibinincr ;RESYNTHESIZE FROM THE fsig USING pvsadsyn | |||
aresynR pvsadsyn f_sigR, inoscs, kpvsadsyn_fmod , ibinoffset, ibinincr | |||
rireturn | |||
aresynL ntrpol aL, aresynL, kpvsadsyn_mix ;CREATE DRY/WET MIX | |||
aresynR ntrpol aR, aresynR, kpvsadsyn_mix | |||
else | |||
/* PVSYNTH */ | |||
aresynL pvsynth f_sigL ;RESYNTHESIZE THE f-SIGNAL AS AN AUDIO SIGNAL | |||
aresynR pvsynth f_sigR ;RESYNTHESIZE THE f-SIGNAL AS AN AUDIO SIGNAL | |||
endif | |||
/* AUDIO OUTPUT */ | |||
klevel chnget "level" ;READ IN WIDGETS | |||
outs aresynL*klevel, aresynR*klevel | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [60*60*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,131 @@ | |||
; pvsFreeze.csd | |||
; Freeze either amplitude stream or frequency stream (or both) of a streaming FFT analysis | |||
; Changing FFT size can modify the sound quality of the frozen sound | |||
; 'Auto' can be used to automatically trigger a new freeze frame (both amplitude and frequency) if the amplitude of the sound crosses a threshold | |||
; 'Delay' specifies the time delay at which the sound will actually be frozen after the threshold triggering. This can be employed to capture the sustain portion of a sound (and not the attack). | |||
; 'Threshold' specifies the threshold level at which triggering will occur. In a noisy environment, raise 'Threshold' | |||
<Cabbage> | |||
form caption("pvsfreeze"), size(670, 80) colour( 0,140,40,170), pluginID("frez") | |||
image bounds( 0, 0,270, 80), colour( 0,200,100,100), shape("rounded"), outline("white"), line(4) | |||
checkbox bounds( 15, 10, 180, 25), channel("freezb"), text("Freeze Both"), fontcolour("white"), shape("rounded"), colour("red") | |||
checkbox bounds(120, 10, 180, 25), channel("freeza"), text("Freeze Amplitudes"), fontcolour("white"), shape("rounded"), colour("yellow") | |||
checkbox bounds(120, 45, 180, 25), channel("freezf"), text("Freeze Frequencies"), fontcolour("white"), shape("rounded"), colour("orange") | |||
image bounds(270, 0,200, 80), colour( 0,200,100,100), shape("rounded"), outline("white"), line(4) | |||
rslider bounds(280, 10, 60, 60), text("FFT Size"), channel("att_table"), range(1, 8, 5, 1,1), fontcolour("white"), colour( 0,100, 50,255), trackercolour("white") | |||
rslider bounds(340, 10, 60, 60), text("Mix"), channel("mix"), range(0, 1.00, 1), fontcolour("white"), colour( 0,100, 50,255), trackercolour("white") | |||
rslider bounds(400, 10, 60, 60), text("Level"), channel("lev"), range(0, 1.00, 0.5, 0.5), fontcolour("white"), colour( 0,100, 50,255), trackercolour("white") | |||
image bounds(470, 0,200, 80), colour( 0,200,100,100), shape("rounded"), outline("white"), line(4) | |||
checkbox bounds(480, 10, 180, 25), channel("auto"), text("Auto"), fontcolour("white"), shape("rounded"), colour("red") | |||
rslider bounds(540, 10, 60, 60), text("Delay"), channel("delay"), fontcolour("white"), range(0.0001, 0.5, 0.1, 1,0.001), colour( 0,100, 50,255), trackercolour("white") | |||
rslider bounds(600, 10, 60, 60), text("Threshold"), channel("thresh"), fontcolour("white"), range(0.001, 0.5, 0.1,1,0.001), colour( 0,100, 50,255), trackercolour("white") | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 64 | |||
nchnls = 2 | |||
0dbfs = 1 ;MAXIMUM AMPLITUDE | |||
;Author: Iain McCurdy (2013) | |||
;http://iainmccurdy.org/csound.html | |||
/* FFT attribute tables */ | |||
giFFTattributes1 ftgen 0, 0, 4, -2, 64, 32, 64, 1 | |||
giFFTattributes2 ftgen 0, 0, 4, -2, 128, 64, 128, 1 | |||
giFFTattributes3 ftgen 0, 0, 4, -2, 256, 128, 256, 1 | |||
giFFTattributes4 ftgen 0, 0, 4, -2, 512, 128, 512, 1 | |||
giFFTattributes5 ftgen 0, 0, 4, -2, 1024, 256, 1024, 1 | |||
giFFTattributes6 ftgen 0, 0, 4, -2, 2048, 512, 2048, 1 | |||
giFFTattributes7 ftgen 0, 0, 4, -2, 4096,1024, 4096, 1 | |||
giFFTattributes8 ftgen 0, 0, 4, -2, 8192,2048, 8192, 1 | |||
opcode pvsfreeze_module,a,akkkkiiii | |||
ain,kfreeza,kfreezf,kmix,klev,iFFTsize,ioverlap,iwinsize,iwintype xin | |||
f_anal pvsanal ain, iFFTsize, ioverlap, iwinsize, iwintype ;ANALYSE AUDIO INPUT SIGNAL AND OUTPUT AN FSIG | |||
f_freeze pvsfreeze f_anal, kfreeza, kfreezf | |||
aout pvsynth f_freeze ;RESYNTHESIZE THE f-SIGNAL AS AN AUDIO SIGNAL | |||
amix ntrpol ain, aout, kmix ;CREATE DRY/WET MIX | |||
xout amix*klev | |||
endop | |||
instr 1 | |||
kmix chnget "mix" ; read in widgets | |||
klev chnget "lev" | |||
kfreeza chnget "freeza" | |||
kfreezf chnget "freeza" | |||
kfreezb chnget "freezb" | |||
; triggering of 'Freeze All' mode | |||
kon = 1 | |||
koff = 0 | |||
ktrigon trigger kfreezb,0.5,0 | |||
ktrigoff trigger kfreezb,0.5,1 | |||
if(ktrigon==1) then | |||
chnset kon,"freeza" | |||
chnset kon,"freezf" | |||
elseif(ktrigoff==1) then | |||
chnset koff,"freeza" | |||
chnset koff,"freezf" | |||
endif | |||
; audio input | |||
ainL,ainR ins | |||
;ainL,ainR diskin "808loop.wav",1,0,1 ;USE FOR TESTING | |||
; auto freeze triggering | |||
kauto chnget "auto" ; read in widgets | |||
kthresh chnget "thresh" | |||
kdelay chnget "delay" | |||
if kauto==1 then ; if 'Auto' is on | |||
krms rms ainL+ainR ; scan RMS of audio signal | |||
ktrig trigger krms,kthresh,0 ; if signal crosses threshold upwards | |||
ktrigdel vdel_k ktrig,kdelay,0.5 ; delayed version of the trigger | |||
if ktrig==1 then ; if initial threshold crossing occurs... | |||
chnset koff,"freeza" ; turn freezing off | |||
chnset koff,"freezf" | |||
endif | |||
if ktrigdel==1 then ; if delayed trigger is received... | |||
chnset kon,"freeza" ; turn freezing on | |||
chnset kon,"freezf" | |||
endif | |||
endif | |||
kofftrig trigger kauto,0.5,1 ; when 'Auto' is turned off generate a trigger | |||
if kofftrig==1 then ; if 'Auto' is turned off... | |||
chnset koff,"freeza" ; turn freezing off | |||
chnset koff,"freezf" | |||
endif | |||
/* SET FFT ATTRIBUTES */ | |||
katt_table chnget "att_table" ; FFT atribute table | |||
katt_table init 5 | |||
ktrig changed katt_table | |||
if ktrig==1 then | |||
reinit update | |||
endif | |||
update: | |||
iFFTsize table 0, giFFTattributes1 + i(katt_table) - 1 | |||
ioverlap table 1, giFFTattributes1 + i(katt_table) - 1 | |||
iwinsize table 2, giFFTattributes1 + i(katt_table) - 1 | |||
iwintype table 3, giFFTattributes1 + i(katt_table) - 1 | |||
/*-------------------*/ | |||
aoutL pvsfreeze_module ainL,kfreeza,kfreezf,kmix,klev,iFFTsize,ioverlap,iwinsize,iwintype | |||
aoutR pvsfreeze_module ainR,kfreeza,kfreezf,kmix,klev,iFFTsize,ioverlap,iwinsize,iwintype | |||
outs aoutR,aoutR | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [60*60*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,90 @@ | |||
<Cabbage> | |||
form caption("pvsWarp") size(440, 90), pluginID("warp") | |||
image pos(0, 0), size(440, 90), colour( 50, 50,75,220), shape("rounded"), outline("white"), line(4) | |||
rslider bounds( 10, 11, 70, 70), text("Scale"), channel("scal"), range(0.1, 4, 1, 0.5, 0.001), colour("LightSlateGrey"), fontcolour("white"), trackercolour("white") | |||
rslider bounds( 80, 11, 70, 70), text("Shift"), channel("shift"), range(-5000, 5000, 0), colour("LightSlateGrey"), fontcolour("white"), trackercolour("white") | |||
rslider bounds(150, 11, 70, 70), text("Feedback"), channel("FB"), range(0, 0.99, 0), colour("LightSlateGrey"), fontcolour("white"), trackercolour("white") | |||
rslider bounds(220, 10, 70, 70), text("FFT Size"), channel("att_table"), range(1, 8, 5, 1,1), colour("LightSlateGrey"), fontcolour("white"), trackercolour("white") | |||
rslider bounds(290, 11, 70, 70), text("Mix"), channel("mix"), range(0, 1.00, 1), colour("LightSlateGrey"), fontcolour("white"), trackercolour("white") | |||
rslider bounds(360, 11, 70, 70), text("Level"), channel("lev"), range(0, 1.00, 0.5), colour("LightSlateGrey"), fontcolour("white"), trackercolour("white") | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 32 | |||
nchnls = 2 | |||
0dbfs = 1 ;MAXIMUM AMPLITUDE | |||
;Author: Iain McCurdy (2012) | |||
;http://iainmccurdy.org/csound.html | |||
/* FFT attribute tables */ | |||
giFFTattributes1 ftgen 0, 0, 4, -2, 64, 32, 64, 1 | |||
giFFTattributes2 ftgen 0, 0, 4, -2, 128, 64, 128, 1 | |||
giFFTattributes3 ftgen 0, 0, 4, -2, 256, 128, 256, 1 | |||
giFFTattributes4 ftgen 0, 0, 4, -2, 512, 128, 512, 1 | |||
giFFTattributes5 ftgen 0, 0, 4, -2, 1024, 256, 1024, 1 | |||
giFFTattributes6 ftgen 0, 0, 4, -2, 2048, 512, 2048, 1 | |||
giFFTattributes7 ftgen 0, 0, 4, -2, 4096,1024, 4096, 1 | |||
giFFTattributes8 ftgen 0, 0, 4, -2, 8192,2048, 8192, 1 | |||
opcode pvswarp_module,a,akkkkiiii | |||
ain,kscal,kshift,kfeedback,kmix,iFFTsize,ioverlap,iwinsize,iwintype xin | |||
aout init 0 | |||
;f_FB pvsinit iFFTsize,ioverlap,iwinsize,iwintype, 0 ;INITIALISE FEEDBACK FSIG | |||
f_anal pvsanal ain+(aout*kfeedback), iFFTsize, ioverlap, iwinsize, iwintype ;ANALYSE AUDIO INPUT SIGNAL AND OUTPUT AN FSIG | |||
;f_mix pvsmix f_anal, f_FB ;MIX AUDIO INPUT WITH FEEDBACK SIGNAL | |||
f_warp pvswarp f_anal, kscal, kshift ;WARP SPECTRAL ENVELOPE VALUES OF AN F-SIGNAL USING BOTH SCALING AND SHIFTING | |||
;f_FB pvsgain f_warp, kfeedback ;CREATE FEEDBACK F-SIGNAL FOR NEXT PASS | |||
aout pvsynth f_warp ;RESYNTHESIZE THE f-SIGNAL AS AN AUDIO SIGNAL | |||
if(kfeedback>0) then | |||
aout clip aout,0,0dbfs | |||
endif | |||
amix ntrpol ain, aout, kmix ;CREATE DRY/WET MIX | |||
xout amix | |||
endop | |||
instr 1 | |||
ainL,ainR ins | |||
;ainL,ainR diskin "SynthPad.wav",1,0,1 ;USE FOR TESTING | |||
kscal chnget "scal" | |||
kshift chnget "shift" | |||
kfeedback chnget "FB" | |||
kmix chnget "mix" | |||
klev chnget "lev" | |||
ainL = ainL*klev | |||
ainR = ainR*klev | |||
/* SET FFT ATTRIBUTES */ | |||
katt_table chnget "att_table" ; FFT atribute table | |||
katt_table init 5 | |||
ktrig changed katt_table | |||
if ktrig==1 then | |||
reinit update | |||
endif | |||
update: | |||
iFFTsize table 0, giFFTattributes1 + i(katt_table) - 1 | |||
ioverlap table 1, giFFTattributes1 + i(katt_table) - 1 | |||
iwinsize table 2, giFFTattributes1 + i(katt_table) - 1 | |||
iwintype table 3, giFFTattributes1 + i(katt_table) - 1 | |||
/*-------------------*/ | |||
aoutL pvswarp_module ainL,kscal,kshift,kfeedback,kmix,iFFTsize,ioverlap,iwinsize,iwintype | |||
aoutR pvswarp_module ainR,kscal,kshift,kfeedback,kmix,iFFTsize,ioverlap,iwinsize,iwintype | |||
outs aoutR,aoutR | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [60*60*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,134 @@ | |||
resony.csd | |||
Resony is an implementation of a stack of second-order bandpass filters whose centre frequencies are arithmetically related. | |||
The 'bandwidth' and 'scaling mode' parameters are as they are in the reson opcode. | |||
'inum' (number of filters) defines the number of filters in the stack. | |||
'ksep' (separation) normally defines the separation between the lowest and highest filter in the stack in octaves. How this relates to what the actual centre frequencies of filters will be differs depending upon which separation mode has been selected. This is explained below. Note that in this example the operation of 'ksep' has been modified slightly to allow the opcode to be better controlled from the GUI. These modifications are clarified below. Separation can be defined in octaves using the knob 'Sep.oct.' or in semitones using the 'Sep.semi.' knob. | |||
'kbf' (base frequency) defines the centre frequency of the first filter. In 'oct.total' separation mode the pitch interval between the base frequency and (base frequency + separation) is divided into equal intervals according to the number of filters that have been selected. Note that no filter is created at the frequency of (base frequency + separation). For example: if separation=1 and num.filters=2, filters will be created at the base frequency and a tritone above the base frequency (i.e. an interval of 1/2 and an octave). I suspect this is a mistake in the opcode implementation so in this example I rescale the separation interval before passing it to the resony opcode so that the interval between the lowest and highest filter in this mode will always be the interval defined in the GUI. A further option I have provided allows the defined interval to be the interval between adjacent filters rather than the interval from lowest to highest. If 'hertz' separation mode is selected behaviour is somewhat curious. I have made some modifications to the values passed to the opcode to make this mode more controllable. Without these modifications, if number of filters is '1' no filters would be created. The frequency relationship between filters in the stack always follows the harmonic series. Both 'Base Frequency' and 'Separation' normally shift this harmonic stack of filters up or down, for this reason I have disabled user control of 'Separation' in this example, instead a value equal to the 'Number of Filters' will always be used for 'Separation'. This ensures that a harmonic stack will always be created built upon 'Base Frequency' as the fundamental. Negative values for 'separation' are allowed whenever 'separation mode' is 'octaves' (if this is the case, the stack of frequencies will extend below the base frequency). Negative values for 'separation' when 'separation mode' is 'hertz' will cause filters to 'explode'. As 'Separation' is fixed at 'Number of Filters' in this example this explosion will not occur. | |||
<Cabbage> | |||
form caption("resony") size(810, 90), pluginID("rsny"), colour(255,100,0) | |||
image bounds( 0, 0,810, 90), colour("black"), shape("rounded"), outline(255,100,0), line(2) | |||
button bounds( 10, 20, 80, 50), text("Live","Noise"), channel("input"), value(0), fontcolour(yellow) | |||
rslider bounds( 90, 10, 70, 70), text("BF."), fontcolour("white"), channel("bf"), range(20, 20000, 909, 0.5), colour(255,100,0,255), trackercolour(255,250,100) | |||
rslider bounds(160, 10, 70, 70), text("BW."), fontcolour("white"), channel("bw"), range(0.01, 1000, 13, 0.5), colour(255,100,0,255), trackercolour(255,250,100) | |||
rslider bounds(230, 10, 70, 70), text("Num."), fontcolour("white"), channel("num"), range(1, 80, 10, 1,1), colour(255,100,0,255), trackercolour(255,250,100) | |||
rslider bounds(300, 10, 70, 70), text("Sep.oct."), fontcolour("white"), channel("sep"), range(-11, 11, 2), colour(255,100,0,255), trackercolour(255,250,100) | |||
rslider bounds(370, 10, 70, 70), text("Sep.semi."), fontcolour("white"), channel("sep2"), range(-48, 48, 24,1,1), colour(255,100,0,255), trackercolour(255,250,100) | |||
combobox bounds(450, 10,130, 70), caption("Scaling Mode"), channel("scl"), value(2), text("none", "peak response", "RMS") | |||
combobox bounds(590, 10,130, 70), caption("Separation Mode"), channel("sepmode"), value(1), text("octs.total", "hertz", "octs.adjacent") | |||
rslider bounds(730, 10, 70, 70), text("Level"), fontcolour("white"), channel("gain"), range(0.0001, 1, 30, 0.5), colour(255,100,0,255), trackercolour(255,250,100) | |||
} | |||
image bounds(5, 95, 205, 20), colour(100,100,100,80), plant("credit"), line(0){ | |||
label bounds(0.03, 0.1, .95, .7), text("Author: Iain McCurdy |2012|"), fontcolour("white") | |||
} | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 ;SAMPLE RATE | |||
ksmps = 32 ;NUMBER OF AUDIO SAMPLES IN EACH CONTROL CYCLE | |||
nchnls = 2 ;NUMBER OF CHANNELS (2=STEREO) | |||
0dbfs = 1 | |||
;Author: Iain McCurdy (2012) | |||
;A UDO IS CREATED WHICH ENCAPSULATES THE MODIFICATIONS TO THE resony OPCODE DISCUSSED IN THIS EXAMPLE | |||
opcode resony2,a,akkikii | |||
ain, kbf, kbw, inum, ksep , isepmode, iscl xin | |||
;IF 'Octaves (Total)' MODE SELECTED... | |||
if isepmode==0 then | |||
irescale divz inum,inum-1,1 ;PREVENT ERROR IS NUMBER OF FILTERS = ZERO | |||
ksep = ksep * irescale ;RESCALE SEPARATION | |||
;IF 'Hertz' MODE SELECTED... | |||
elseif isepmode==1 then | |||
inum = inum + 1 | |||
ksep = inum | |||
;IF 'Octaves (Adjacent)' MODE SELECTED... | |||
elseif isepmode==2 then | |||
irescale divz inum,inum-1,1 ;PREVENT ERROR IS NUMBER OF FILTERS = ZERO | |||
ksep = ksep * irescale ;RESCALE SEPARATION | |||
ksep = ksep * (inum-1) ;RESCALE SEPARATION INTERVAL ACCORDING TO THE NUMBER OF FILTERS CHOSEN | |||
isepmode = 0 | |||
endif | |||
aout resony ain, kbf, kbw, inum, ksep , isepmode, iscl, 0 | |||
xout aout | |||
endop | |||
instr 1 | |||
kporttime linseg 0,0.001,0.005,1,0.005 ;CREATE A VARIABLE FUNCTION THAT RAPIDLY RAMPS UP TO A SET VALUE | |||
gkbf chnget "bf" | |||
gkbw chnget "bw" | |||
gkgain chnget "gain" | |||
gknum chnget "num" | |||
gksep chnget "sep" | |||
gksep2 chnget "sep2" | |||
gksepmode chnget "sepmode" | |||
gksepmode = gksepmode - 1 | |||
gksepmode init 1 | |||
gkscl chnget "scl" | |||
gkscl = gkscl - 1 | |||
gkscl init 1 | |||
gkinput chnget "input" | |||
kbf portk gkbf, kporttime ;SMOOTH MOVEMENT OF SLIDER VARIABLE TO CREATE BASE FREQUENCY | |||
ksep portk gksep, kporttime ;SMOOTH MOVEMENT OF SLIDER VARIABLE | |||
if gkinput==0 then | |||
asigL,asigR ins | |||
else | |||
asigL pinkish 1 | |||
asigR pinkish 1 | |||
endif | |||
kSwitch changed gkscl, gknum, gksepmode ;GENERATE A MOMENTARY '1' PULSE IN OUTPUT 'kSwitch' IF ANY OF THE SCANNED INPUT VARIABLES CHANGE. (OUTPUT 'kSwitch' IS NORMALLY ZERO) | |||
if kSwitch=1 then ;IF I-RATE VARIABLE CHANGE TRIGGER IS '1'... | |||
reinit START ;BEGIN A REINITIALISATION PASS FROM LABEL 'START' | |||
endif | |||
START: | |||
isepmode init i(gksepmode) | |||
inum init i(gknum) | |||
iscl init i(gkscl) | |||
;CALL resony2 UDO | |||
aresL resony2 asigL, kbf, gkbw, inum, ksep , isepmode, iscl | |||
aresR resony2 asigR, kbf, gkbw, inum, ksep , isepmode, iscl | |||
rireturn ;RETURN FROM REINITIALISATION PASS TO PERFORMANCE TIME PASSES | |||
outs aresL * gkgain, aresR * gkgain ;SEND FILTER OUTPUT TO THE AUDIO OUTPUTS AND SCALE USING THE FLTK SLIDER VARIABLE gkgain | |||
endin | |||
instr UpdateWidgets | |||
ksep chnget "sep" | |||
ksep2 chnget "sep2" | |||
ktrig1 changed ksep | |||
ktrig2 changed ksep2 | |||
if ktrig1==1 then | |||
chnset ksep*12, "sep2" | |||
elseif ktrig2==1 then | |||
chnset ksep2/12, "sep" | |||
endif | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0.1 [3600*24*7] | |||
i "UpdateWidgets" 0 3600 ;UPDATE SEPARATION DISPLAY BOX | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,103 @@ | |||
waveset.csd | |||
reinit seems a bit disruptive in Cabbage 3.03? | |||
'freeze' is not technically a freeze but instead a very large number of repeats. | |||
Waveset opcode can be reinitialised by three different methods: | |||
Manually using the 'Reset' button, | |||
by a built-in metronome, the rate of which can be adjusted by the user | |||
or by the dynamics of the input sound (the threshold of this dynamic triggereing can be adjusted by the user) | |||
'Metro' resetting is disabled when 'Metro Rate' = 0 | |||
'Threshold' (retrigering by input signal dynamics) is disabled when 'Threshold' = 1 (maximum setting) | |||
(resetting the opcode will reset its internal buffer and cancel out any time displacement induced by wavelet repetitions) | |||
<Cabbage> | |||
form caption("waveset") size(510, 90), pluginID("wset") | |||
image pos(0, 0), size(510, 90), colour("Green"), shape("rounded"), outline("Grey"), line(4) | |||
rslider bounds(5, 10, 70, 70), text("Repeats"), channel("repeats"), range(1, 100, 1, 1, 1), colour("yellow"), fontcolour("white") | |||
rslider bounds(70, 10, 70, 70), text("Mult."), channel("mult"), range(1, 100, 1, 0.5, 1), colour("yellow"), fontcolour("white") | |||
checkbox bounds(140, 23, 100, 30), channel("freeze"), text("Freeze"), value(0), colour("red"), fontcolour("white"), shape("ellipse") | |||
line bounds(220, 2, 3, 86), colour("Grey") | |||
button bounds(235, 15, 45,45), channel("reset"), text("Reset","Reset"), fontcolour("yellow") | |||
rslider bounds(290, 10, 70, 70), text("Threshold"), channel("thresh"), range(0, 1.00, 1), colour("orange"), fontcolour("white") | |||
rslider bounds(355, 10, 70, 70), text("Metro Rate"), channel("rate"), range(0, 5.00, 0), colour("orange"), fontcolour("white") | |||
line bounds(430, 2, 3, 86), colour("Grey") | |||
rslider bounds(435, 10, 70, 70), text("Level"), channel("level"), range(0, 1.00, 0.7), colour(255,150, 50), fontcolour("white") | |||
} | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 ;SAMPLE RATE | |||
ksmps = 32 ;NUMBER OF AUDIO SAMPLES IN EACH CONTROL CYCLE | |||
nchnls = 2 ;NUMBER OF CHANNELS (2=STEREO) | |||
0dbfs = 1 | |||
;Author: Iain McCurdy (2012) | |||
instr 1 | |||
krep chnget "repeats" ;READ WIDGETS... | |||
kmult chnget "mult" ; | |||
klevel chnget "level" ; | |||
kreset chnget "reset" ; | |||
kthresh chnget "thresh" ; | |||
krate chnget "rate" ; | |||
ktrigger changed kreset ; | |||
kmetro metro krate, 0.99 | |||
kfreeze chnget "freeze" | |||
;asigL, asigR diskin2 "Songpan.wav",1,0,1 ;USE SOUND FILE FOR TESTING | |||
asigL, asigR ins | |||
krms rms (asigL+asigR)*0.5 | |||
kDynTrig trigger krms,kthresh,0 | |||
if (ktrigger+kmetro+kDynTrig)>0 then | |||
reinit UPDATE | |||
endif | |||
UPDATE: | |||
aL waveset asigL,(krep*kmult)+(kfreeze*1000000000),5*60*sr ;PASS THE AUDIO SIGNAL THROUGH waveset OPCODE. Input duration is defined in samples - in this example the expression given equats to a 5 minute buffer | |||
aR waveset asigR,(krep*kmult)+(kfreeze*1000000000),5*60*sr ;PASS THE AUDIO SIGNAL THROUGH waveset OPCODE. Input duration is defined in samples - in this example the expression given equats to a 5 minute buffer | |||
rireturn | |||
outs aL*klevel, aR*klevel ;WAVESET OUTPUT ARE SENT TO THE SPEAKERS | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [3600*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> | |||
@@ -0,0 +1,173 @@ | |||
; wguide1.csd | |||
; written by Iain McCurdy 2013 | |||
; Encapsulation of the 'wguide1' opcode, used for filtering and synthesis. | |||
; frequency of the wave guide can be determined either in hertz of as a note number | |||
; Activating the 'Keyboard Input' switch will allow frequency control from the keyboard (internal or external) and polyphony. | |||
; In this mode, 'Frequency' and 'Note Num.' controls will be disabled. | |||
; Source input sound can be either 'live audio input', or synthetic gravel, dust or air. | |||
<Cabbage> | |||
form caption("wguide1") size(415,210), pluginID("WGu1") | |||
image bounds(0, 0, 415,125), colour(125, 95, 55), shape("sharp"), outline(225,195,155), line(2) | |||
label bounds(227, 4,180, 22), text("W A V E G U I D E"), fontcolour(silver) | |||
image bounds(228, 8,175, 1), colour(200,170,130), shape("sharp"), outline(silver), line(1) | |||
image bounds(231, 22,172, 1), colour(200,170,130), shape("sharp"), outline(silver), line(1) | |||
checkbox bounds( 20, 10,120, 17), text("Keyboard Input"), channel("input") fontcolour("white") colour(yellow) value(0) | |||
label bounds(153, 5, 40, 11), text("Source"), fontcolour("white") | |||
combobox bounds(140, 16, 62, 16), channel("source"), value(1), text("Live","Gravel","Dust","Air") | |||
rslider bounds( 10, 41, 70, 70), text("Frequency"), channel("freq"), trackercolour(225,195,155), range(8.2, 12542, 160, 0.25), colour( 85, 55,15), fontcolour(white) | |||
rslider bounds( 75, 41, 70, 70), text("Note Num."), channel("notnum"), trackercolour(225,195,155), range(0, 127, 51, 1,1), colour( 85, 55,15), fontcolour(white) | |||
rslider bounds(140, 41, 70, 70), text("Cutoff"), channel("cutoff"), trackercolour(225,195,155), range(20,20000,8000,0.25), colour( 85, 55,15), fontcolour(white) | |||
rslider bounds(205, 41, 70, 70), text("Feedback"), channel("feedback"), trackercolour(225,195,155), range(-0.99999, 0.99999, 0.8), colour( 85, 55,15), fontcolour(white) | |||
rslider bounds(270, 41, 70, 70), text("Mix"), channel("mix"), trackercolour(225,195,155), range(0, 1.00, 1), colour( 85, 55,15), fontcolour(white) | |||
rslider bounds(335, 41, 70, 70), text("Level"), channel("level"), trackercolour(225,195,155), range(0, 1.00, 0.7), colour( 85, 55,15), fontcolour(white) | |||
keyboard bounds( 0,125, 415, 85) | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
;-d -n | |||
-dm0 -n -+rtmidi=null -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 ;SAMPLE RATE | |||
ksmps = 32 ;NUMBER OF AUDIO SAMPLES IN EACH CONTROL CYCLE | |||
nchnls = 2 ;NUMBER OF CHANNELS (2=STEREO) | |||
0dbfs = 1 | |||
massign 0,2 | |||
;Author: Iain McCurdy (2012) | |||
instr 1 | |||
gkinput chnget "input" | |||
event_i "i",2,0,-1 | |||
ktrig trigger gkinput,0.5,2 | |||
if ktrig=1 then | |||
if gkinput=0 then | |||
event "i",2,0,-1 | |||
else | |||
turnoff2 2,0,0 | |||
endif | |||
endif | |||
/* SOURCE SOUND */ | |||
ksource chnget "source" | |||
if ksource=1 then | |||
gasigL, gasigR ins | |||
elseif ksource=2 then | |||
gasigL gausstrig 0.5, 100, 8, 0 | |||
gasigR gausstrig 0.5, 100, 8, 0 | |||
elseif ksource=3 then | |||
kdens random 475,525 | |||
gasigL dust2 0.5, kdens | |||
kdens random 525,475 | |||
gasigR dust2 0.5, kdens | |||
elseif ksource=4 then | |||
gasigL pinkish 0.2 | |||
gasigR pinkish 0.2 | |||
endif | |||
kactive active 2 | |||
printk2 kactive | |||
endin | |||
instr 2 | |||
gkfreq chnget "freq" ;READ WIDGETS... | |||
gknotnum chnget "notnum" ; | |||
ktrig1 changed gkfreq | |||
ktrig2 changed gknotnum | |||
/* MIDI AND GUI INTEROPERABILITY */ | |||
iMIDIflag = 0 ;IF MIDI ACTIVATED = 1, NON-MIDI = 0 | |||
mididefault 1, iMIDIflag ;IF NOTE IS MIDI ACTIVATED REPLACE iMIDIflag WITH '1' | |||
if iMIDIflag==1 then ;IF THIS IS A MIDI ACTIVATED NOTE... | |||
inum notnum | |||
p1 = p1 + (rnd(1000)*0.0001) | |||
if gkinput=0 then | |||
turnoff | |||
endif | |||
icps cpsmidi ;READ MIDI PITCH VALUES - THIS VALUE CAN BE MAPPED TO GRAIN DENSITY AND/OR PITCH DEPENDING ON THE SETTING OF THE MIDI MAPPING SWITCHES | |||
gkfreq = icps | |||
else ;OTHERWISE WHEN NON-MIDI | |||
if ktrig1=1 then ;DUAL FREQUENCY AND NOTE NUMBER CONTROLS | |||
koct = octcps(gkfreq) | |||
chnset (koct-3)*12,"notnum" | |||
elseif ktrig2=1 then | |||
chnset cpsmidinn(gknotnum),"freq" | |||
endif | |||
endif ;END OF THIS CONDITIONAL BRANCH | |||
gkcutoff chnget "cutoff" ; | |||
gkfeedback chnget "feedback" ; | |||
gkmix chnget "mix" ; | |||
gklevel chnget "level" ; | |||
kporttime linseg 0,0.01,0.03 ;CREATE A VARIABLE THAT WILL BE USED FOR PORTAMENTO TIME | |||
gkfreq portk gkfreq,kporttime | |||
afreq interp gkfreq | |||
aenv linsegr 0,0.05,1,0.05,0 | |||
aresL wguide1 gasigL*aenv, afreq, gkcutoff, gkfeedback | |||
aresR wguide1 gasigR*aenv, afreq, gkcutoff, gkfeedback | |||
aresL dcblock aresL | |||
aresR dcblock aresR | |||
gkmix portk gkmix,kporttime | |||
amixL ntrpol gasigL*aenv, aresL, gkmix | |||
amixR ntrpol gasigR*aenv, aresR, gkmix | |||
gklevel portk gklevel,kporttime | |||
kenv linsegr 1,15,0 | |||
amixL = amixL * gklevel * kenv | |||
amixR = amixR * gklevel * kenv | |||
ktime timeinsts | |||
krms rms amixL,3 | |||
if krms<0.00001&&ktime>0.2&&iMIDIflag==1 then | |||
turnoff2 p1,4,0 | |||
endif | |||
outs amixL, amixR ;WGUIDE1 OUTPUTS ARE SENT OUT | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [3600*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> | |||
@@ -0,0 +1,90 @@ | |||
<Cabbage> | |||
form caption("wguide2") size(545, 90) | |||
image pos(0, 0), size(545, 90), colour(25,0,25), shape("rounded"), outline("white"), line(4) | |||
rslider bounds(10, 11, 70, 70), text("Freq. 1"), channel("freq1"), range(20, 8000, 160, 0.25), colour(150,110,110), trackercolour(white) | |||
rslider bounds(75, 11, 70, 70), text("Freq. 2"), channel("freq2"), range(20, 8000, 160, 0.25), colour(150,110,110), trackercolour(white) | |||
rslider bounds(140, 11, 70, 70), text("Cutoff 1"), channel("cutoff1"), range(20,20000,8000,0.25), colour(150,110,110), trackercolour(white) | |||
rslider bounds(205, 11, 70, 70), text("Cutoff 1"), channel("cutoff2"), range(20,20000,8000,0.25), colour(150,110,110), trackercolour(white) | |||
rslider bounds(270, 11, 70, 70), text("F.back 1"), channel("feedback1"), range(-0.999, 0.999, 0.2), colour(150,110,110), trackercolour(white) | |||
rslider bounds(335, 11, 70, 70), text("F.back 2"), channel("feedback2"), range(-0.999, 0.999, 0.2), colour(150,110,110), trackercolour(white) | |||
rslider bounds(400, 11, 70, 70), text("Mix"), channel("mix"), range(0, 1.00, 0.7), colour(150,110,110), trackercolour(white) | |||
rslider bounds(465, 11, 70, 70), text("Level"), channel("level"), range(0, 1.00, 0.7), colour(150,110,110), trackercolour(white) | |||
} | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 ;SAMPLE RATE | |||
ksmps = 32 ;NUMBER OF AUDIO SAMPLES IN EACH CONTROL CYCLE | |||
nchnls = 2 ;NUMBER OF CHANNELS (2=STEREO) | |||
0dbfs = 1 | |||
;Author: Iain McCurdy (2012) | |||
instr 1 | |||
kporttime linseg 0,0.001,0.05 | |||
gkfreq1 chnget "freq1" ;READ WIDGETS... | |||
gkfreq1 portk gkfreq1,kporttime | |||
afreq1 interp gkfreq1 | |||
gkfreq2 chnget "freq2" ;READ WIDGETS... | |||
gkfreq2 portk gkfreq2,kporttime | |||
afreq2 interp gkfreq2 | |||
gkcutoff1 chnget "cutoff1" ; | |||
gkcutoff2 chnget "cutoff2" ; | |||
gkfeedback1 chnget "feedback1" ; | |||
gkfeedback2 chnget "feedback2" ; | |||
gkmix chnget "mix" ; | |||
gklevel chnget "level" ; | |||
;asigL, asigR diskin2 "Seashore.wav",1,0,1 ;USE SOUND FILE FOR TESTING | |||
asigL, asigR ins | |||
kporttime linseg 0,0.01,0.03 ;CREATE A VARIABLE THAT WILL BE USED FOR PORTAMENTO TIME | |||
aresL wguide2 asigL, afreq1, afreq2, gkcutoff1, gkcutoff2, gkfeedback1, gkfeedback2 | |||
aresR wguide2 asigR, afreq1, afreq2, gkcutoff1, gkcutoff2, gkfeedback1, gkfeedback2 | |||
aresL dcblock2 aresL ;BLOCK DC OFFSET | |||
aresR dcblock2 aresR ;BLOCK DC OFFSET | |||
amixL ntrpol asigL,aresL,gkmix | |||
amixR ntrpol asigR,aresR,gkmix | |||
outs amixL*gklevel, amixR*gklevel ;WGUIDE1 OUTPUTS ARE SENT OUT | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [3600*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> | |||
@@ -0,0 +1,647 @@ | |||
<Cabbage> | |||
form caption("Arpeggiator") size(700, 440), pluginID("arpe") | |||
groupbox bounds( 5, 0, 690, 100), text("Arpeggiator"),{ | |||
rslider bounds( 10, 30, 60, 60), text("Interval"), channel("intvl"), range(-36, 36, 7, 1, 1) | |||
rslider bounds( 60, 30, 60, 60), text("Cycles"), channel("cycles"), range(0, 32, 5, 1, 1) | |||
label bounds(123, 29, 70, 12), text("Cycle Mode") | |||
combobox bounds(120, 42, 70, 20), channel("CyUpDn"), value(2), text("Up","Up-Down") | |||
rslider bounds(190, 30, 60, 60), text("Tempo"), channel("tempo"), range(1, 500,120, 1, 1) | |||
label bounds(245, 29, 70, 12), text("Tempo Mlt."), | |||
combobox bounds(255, 42, 40, 20), channel("TempoMlt"), value(4), text("1/4","1/3","1/2","1","3/2","2","3","4") | |||
checkbox bounds(310, 40, 30, 30), colour("yellow"), channel("hold"), value(1) | |||
label bounds(311, 77, 40, 12), text("Hold") | |||
label bounds(370, 29, 70, 12), text("Arp.Mode") | |||
combobox bounds(350, 42, 90, 20), channel("mode"), value(6), text("Up","Down","Up<->Down","Random Dir.","Random Pick","Seq. Play") | |||
rslider bounds(440, 30, 60, 60), text("Swing"), channel("swing"), range(0, 1.00, 0) | |||
label bounds(505, 29, 80, 13), text("Clock Source") | |||
button bounds(505, 42, 80, 20), text("Internal","External"), channel("ClockSource"), value(0) | |||
checkbox bounds(597, 40, 30, 30), colour("red"), channel("pause"), value(0) | |||
label bounds(595, 77, 40, 12), text("Pause") | |||
checkbox bounds(647, 40, 30, 30), colour("Cyan"), channel("onoff"), value(1) | |||
label bounds(643, 77, 40, 12), text("On/Off") | |||
} | |||
groupbox bounds( 5,105, 690, 220), text("Synth"), { | |||
label bounds(104,132, 40, 12), text("VCA") | |||
rslider bounds( 10,150, 60, 60), text("Att."), channel("Aatt"),range(0.001, 2, 0.001, 0.5) | |||
rslider bounds( 60,150, 60, 60), text("Dec."), channel("Adec"),range(0.001, 2, 0.001, 0.5) | |||
rslider bounds(110,150, 60, 60), text("Sus."), channel("Asus"), range(0, 1.00, 1) | |||
rslider bounds(160,150, 60, 60), text("Rel."), channel("Arel"), range(0.001, 2, 0.001, 0.5) | |||
line bounds(230, 140, 2, 70), colour("Grey") | |||
label bounds(450,132, 40, 12), text("VCF") | |||
rslider bounds(240,150, 60, 60), text("Env.Amt"), channel("EnvAmt"), range(0.001, 2, 0.5) | |||
rslider bounds(290,150, 60, 60), text("Att."), channel("att"), range(0.001, 2, 0.001, 0.5) | |||
rslider bounds(340,150, 60, 60), text("Dec."), channel("dec"), range(0.001, 2, 0.5, 0.5) | |||
rslider bounds(390,150, 60, 60), text("Sus."), channel("sus"), range(0, 1.00, 0.5) | |||
rslider bounds(440,150, 60, 60), text("Rel."), channel("rel"), range(0.001, 2, 0.1, 0.5) | |||
rslider bounds(490,150, 60, 60), text("Res."), channel("res"), range(0, 1.00, 0.5) | |||
rslider bounds(540,150, 60, 60), text("Dist."), channel("dist"), range(0, 1.00, 0) | |||
checkbox bounds(600,158, 30, 30), colour("yellow"), channel("KybdTrk"), value(1) | |||
label bounds(600,198, 40, 12), text("Track") | |||
label bounds(645,147, 40, 12), text("Type") | |||
combobox bounds(640,160, 45, 20), channel("FiltType"), value(1), text("LPF","BPF") | |||
line bounds( 15,220,670, 2), colour("Grey") | |||
label bounds( 55,230, 40, 12), text("LFO") | |||
rslider bounds( 10,250, 60, 60), text("Depth"), channel("LFOdep"), range(0, 0.5, 0.15) | |||
rslider bounds( 60,250, 60, 60), text("Rate"), channel("LFOrate"), range(0.001, 5, 0.07) | |||
line bounds(130, 240, 2, 70), colour("Grey") | |||
label bounds(245,230, 80, 12), text("Oscillator") | |||
label bounds(166,247, 40, 12), text("Wave") | |||
combobox bounds(150,260, 65, 20), channel("wave"), value(3), text("tri","sq.","saw","noise") | |||
checkbox bounds(150,290,100, 20), colour("yellow"), channel("subosc"), value(0), text("Subosc") | |||
label bounds(239,248, 39, 12), text("Octave") | |||
combobox bounds(225,260, 65, 20), channel("OctTrans"), value(5), text("-6","-5","-4","-3","-2","-1","0","1","2","3","4","5","6") | |||
label bounds(227,283, 64, 12), text("Semitones") | |||
combobox bounds(225,295, 65, 20), channel("SemiTrans"), value(12), text("-11","-10","-9","-8","-7","-6","-5","-4","-3","-2","-1","0","1","2","3","4","5","6","7","8","9","10","11") | |||
rslider bounds(300,250, 60, 60), text("Port."), channel("NotePort"), range(0, 1.00, 0, 0.5) | |||
rslider bounds(350,250, 60, 60), text("Level"), channel("SynLev"), range(0, 1.00, 0.3) | |||
line bounds(420, 240, 2, 70), colour("Grey") | |||
label bounds(442,230, 80, 12), text("Freq.Shift") | |||
rslider bounds(440,250, 60, 60), text("Freq."), channel("FShift"), range(-1000, 1000, 0) | |||
line bounds(515, 240, 2, 70), colour("Grey") | |||
label bounds(593,230, 80, 12), text("Delay") | |||
rslider bounds(530,250, 60, 60), text("Mix"), channel("DryWet"), range(0, 1.00, 0.1) | |||
rslider bounds(580,250, 60, 60), text("Time"), channel("DlyTim"), range(1, 16, 4,1,1) | |||
rslider bounds(630,250, 60, 60), text("F.back"), channel("DlyFB"), range(0, 1.00, 0.5) | |||
} | |||
keyboard pos(5, 330), size(690, 80) | |||
infobutton bounds(5,415, 70, 20), text("Help"), file("ArpeggiatorHelp.html") | |||
image bounds(80, 415, 215, 20), colour(75, 85, 90, 100), plant("credit"), line(0){ | |||
label bounds(0.03, 0.1, .9, .7), text("Author: Iain McCurdy |2012|"), colour("white") | |||
hostbpm channel("bpm") | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-dm0 -n -+rtmidi=null -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 ;SAMPLE RATE | |||
ksmps = 32 ;NUMBER OF AUDIO SAMPLES IN EACH CONTROL CYCLE | |||
nchnls = 2 ;NUMBER OF CHANNELS (2=STEREO) | |||
0dbfs = 1 | |||
massign 0,0 | |||
;Author: Iain McCurdy (2012) | |||
;http://www.iainmccurdy.org | |||
giseqorder ftgen 0,0,1024,-2,0 ;ORDERED ROW OF NOTES (IN THE ORDER IN WHICH THEY WERE PLAYED) | |||
giseqascend ftgen 0,0,1024,-2,0 ;ORDERED ROW OF NOTES (IN ASCENDING ORDER) | |||
ginoteactive ftgen 0,0,128,-2,0 ;TABLE OF NOTE ON STATUSES 1=ON 0=OFF | |||
giblank ftgen 0,0,128,-2,0 ;BLANK TABLE | |||
gisine ftgen 0,0,4096,10,1 | |||
giFletcherMunsonCurve ftgen 0,0,-20000,-16,1,4000,-8,0.15, 20000-4000,0,0.15 | |||
giTempoMlt ftgen 0,0,-8,-2,1/4,1/3,1/2,1,3/2,2,3,4 ;TABLE OF TEMPO MULTIPLIERS - USED TO SCALE THE ARPEGGIO RATE WHEN IN TEMPO MODE | |||
gasendL,gasendR init 0 ;GLOBAL VARIABLES USED TO SEND SIGNAL TO THE DELAY EFFECT | |||
;UDO THAT SORTS A TABLE OF NUMBERS INTO ASCENDING ORDER | |||
opcode tabsort_ascnd2,0,ii | |||
iNumItems,ifn xin | |||
iTabLen = ftlen(ifn) | |||
imax table 0,ifn | |||
icount = 1 | |||
loop1: | |||
ival table icount,ifn | |||
imax = (ival>=imax?ival:imax) | |||
loop_lt icount,1,iNumItems,loop1 | |||
iTableBuffer ftgentmp 0,0,iTabLen,-2, 0 | |||
icount1 = 0 | |||
loop2: | |||
icount2 = 0 | |||
imin = imax | |||
loop3: | |||
ival table icount2,ifn | |||
if ival<=imin then | |||
imin = ival | |||
iloc = icount2 | |||
endif | |||
loop_lt icount2,1,iNumItems,loop3 | |||
tableiw imin,icount1,iTableBuffer | |||
tableiw imax,iloc,ifn | |||
loop_lt icount1,1,iNumItems,loop2 | |||
icount = 0 | |||
loop4: | |||
ival table icount,iTableBuffer | |||
tableiw ival,icount,ifn | |||
loop_lt icount,1,iNumItems,loop4 | |||
endop | |||
opcode FreqShifter,a,aki | |||
ain,kfshift,ifn xin ;READ IN INPUT ARGUMENTS | |||
areal, aimag hilbert ain ;HILBERT OPCODE OUTPUTS TWO PHASE SHIFTED SIGNALS, EACH 90 OUT OF PHASE WITH EACH OTHER | |||
asin oscili 1, kfshift, ifn, 0 | |||
acos oscili 1, kfshift, ifn, 0.25 | |||
;RING MODULATE EACH SIGNAL USING THE QUADRATURE OSCILLATORS AS MODULATORS | |||
amod1 = areal * acos | |||
amod2 = aimag * asin | |||
;UPSHIFTING OUTPUT | |||
aFS = (amod1 - amod2) | |||
xout aFS ;SEND AUDIO BACK TO CALLER INSTRUMENT | |||
endop | |||
;This instrument needs to be last in order for the 'hold' function to work properly. I'm not sure why. | |||
instr ScanWidgets | |||
gkintvl chnget "intvl" | |||
gkcycles chnget "cycles" | |||
gktempo chnget "tempo" ;INTERNAL GUI CONTROL | |||
gkbpm chnget "bpm" ;HOSDT TEMPO | |||
gkClockSource chnget "ClockSource" ;CLOCK SOURCE SELECTOR SWITCH | |||
if gkClockSource==1 then | |||
gktempo = gkbpm | |||
else | |||
gktempo = gktempo | |||
endif | |||
gkCyUpDn chnget "CyUpDn" | |||
gkTempoMlt chnget "TempoMlt" | |||
gkhold chnget "hold" | |||
gkmode chnget "mode" | |||
gkswing chnget "swing" | |||
gkpause chnget "pause" | |||
gkonoff chnget "onoff" | |||
gkAatt chnget "Aatt" | |||
gkAdec chnget "Adec" | |||
gkAsus chnget "Asus" | |||
gkArel chnget "Arel" | |||
gkEnvAmt chnget "EnvAmt" | |||
gkatt chnget "att" | |||
gkdec chnget "dec" | |||
gksus chnget "sus" | |||
gkrel chnget "rel" | |||
gkres chnget "res" | |||
gkdist chnget "dist" | |||
gkKybdTrk chnget "KybdTrk" | |||
gkFiltType chnget "FiltType" | |||
gkLFOdep chnget "LFOdep" | |||
gkLFOrate chnget "LFOrate" | |||
gkwave chnget "wave" | |||
gkOctTrans chnget "OctTrans" | |||
gkSemiTrans chnget "SemiTrans" | |||
gkNotePort chnget "NotePort" | |||
gkSynLev chnget "SynLev" | |||
gksubosc chnget "subosc" | |||
gkFShift chnget "FShift" | |||
gkDryWet chnget "DryWet" | |||
gkDlyTim chnget "DlyTim" | |||
gkDlyFB chnget "DlyFB" | |||
/* | |||
kx1 chnget "x1" | |||
ky1 chnget "y1" | |||
kx1 logcurve kx1,0.1 | |||
ky1 logcurve ky1,0.1 | |||
kx1 scale kx1, 2, 0.001 | |||
ky1 scale ky1, 2, 0.001 | |||
chnset kx1, "att" | |||
chnset ky1, "dec" | |||
*/ | |||
endin | |||
instr ScanMIDI ;SCAN INCOMING MIDI AND TRIGGER NOTES IN INSTRUMENT 'NoteLayer' | |||
insno nstrnum "NoteLayer" | |||
kstatus, kchan, kdata1, kdata2 midiin; read in midi | |||
if kstatus==144||kstatus==128 then | |||
if kdata2>0&&kstatus==144 then ;IF VELOCITY IS GREATER THAN 0 (I.E. FOR SOME KEYBOARDS VELOCITY ZERO IS A NOTE OFF) | |||
kAlreadyActiveStatus table kdata1,ginoteactive ;CHECK IF THIS NOTE IS ALREADY ACTIVE (POSSIBLE IF HOLD IS ON). | |||
if kAlreadyActiveStatus==0 then ;IF THIS NOTE IS NOT ALREADY ACTIVE... | |||
event "i",insno+(kdata1*0.001),0,3600,kdata1 ; | |||
endif | |||
else | |||
if gkhold==0 then | |||
turnoff2 insno+(kdata1*0.001),4,1 | |||
endif | |||
endif | |||
elseif kstatus==128&&gkhold==0 then ;IF MIDI KEYBOARD USES NOTE OFF STATUS BYTE | |||
turnoff2 insno+(kdata1*0.001),4,1 | |||
endif | |||
endin | |||
instr NoteLayer ;THIS INSTRUMENT IS TRIGGERED FOR EACH NOTE PLAYED ON THE KEYBOARD | |||
inum = p4 ;READ IN MIDI NOTE NUMBER | |||
tableiw 1,inum,ginoteactive | |||
iNNotes active "NoteLayer" ;SENSE THE NUMBER INSTANCES OF THIS INSTRUMENT (I.E. MIDI NOTES) ARE BEING HELD AT I-TIME. | |||
tableiw inum,iNNotes-1,giseqorder ;WRITE THE NOTE NUMBER OF THIS NOTE TO THE NEXT LOCATION IN THE ORDERED ROW OF NOTES (giseqorder) | |||
tableicopy giseqascend,giseqorder ;COPY THE LIST OF NOTES (IN THE ORDER IN WHICH THEY WERE PLAYED) INTO THE TABLE OF NOTES TO BE SORTED INTO ASCENDING ORDER | |||
tabsort_ascnd2 iNNotes,giseqascend ;UDO CALLED THAT ORDERS THE LIST OF NOTES INTO ASCENDING ORDER | |||
krelease release ;SENSE WHEN THIS NOTE HAS BEEN RELEASED | |||
if krelease==1 then ;IF THIS NOTE HAS BEEN RELEASED (FINAL K-RATE CYCLE)... | |||
tablew 0,inum,ginoteactive | |||
;AS THIS NOTE HAS BEEN RELEASED IT WILL HAVE TO BE REMOVED FROM THE ORDERED ROW OF NOTE (giseqorder). ALL NOTES *AFTER* IT IN THE ROW WILL HAVE TO BE SHUNTED BACK ONE PLACE. | |||
kShuntNdx = iNNotes ;INITIAL SHUNT INDEX (THE LOCATION TO WHICH THE NOTE NUMBER FOR THIS NOTE WAS WRITTEN) | |||
kNNotes active "NoteLayer" ;FIND THE NUMBER OF INSTANCES OF THIS INSTRUMENT (I.E. NOTES BEING HELD) NOW | |||
SHUNT_ROW: ;A LABEL. THE SHUNTING PROCEDURE LOOPS FROM HERE. | |||
kval table kShuntNdx, giseqorder ;READ THE NOTE NUMBER JUST AFTER THIS ONE IN THE SEQUENCE ROW... | |||
tablew kval, kShuntNdx-1, giseqorder ;AND MOVE IT BACK ONE PLACE | |||
loop_lt kShuntNdx,1,kNNotes,SHUNT_ROW ;LOOP BACK AND REPEAT THE SHUNTING PROCEDURE UNTIL THE NEW ROW IS COMPLETE | |||
endif | |||
kHoldOff trigger gkhold,0.5,1 ;IF HOLD GOES FROM '1'/'ON' TO '0'/'OFF' GENERATE A TRIGGER IMPULSE | |||
if kHoldOff==1 then ;IF HOLD GOES FROM 'ON' TO 'OFF'... | |||
turnoff ;TURN THIS (AND ALL OTHER) NOTES OFF | |||
endif ;END OF CONDITIONAL BRANCH | |||
if iNNotes==1 then ;IF THIS IS THE FIRST NOTE OF AN ARPEGGIO TO BE PLAYED... | |||
event_i "i","Arpeggiator",0,-1 ;START ARPEGGIATOR INSTRUMENT WITH A 'HELD' NOTE. SEND IT THE MIDI NOTE NUMBER. | |||
endif ;END OF CONDITIONAL BRANCH | |||
insnoArp nstrnum "Arpeggiator" | |||
if gkonoff==0 then | |||
turnoff2 insnoArp,0,1 | |||
tablecopy ginoteactive,giblank ;ERASE NOTE STATUSES TABLE | |||
turnoff | |||
endif | |||
endin | |||
instr Arpeggiator | |||
krelease release ;SENSE END OF NOTE (1) | |||
ktrans = ((gkOctTrans-7)*12)+(gkSemiTrans-12) | |||
kHoldOff trigger gkhold,0.5,1 ;IF HOLD GOES FROM '1'/'ON' TO '0'/'OFF' GENERATE A TRIGGER IMPULSE | |||
if kHoldOff==1 then ;IF HOLD GOES FROM 'ON' TO 'OFF'... | |||
tablecopy ginoteactive,giblank ;ERASE NOTE STATUSES TABLE | |||
turnoff ;TURN THIS INSTRUMENT OFF | |||
endif ;END OF CONDITIONAL BRANCH | |||
kNNotes active "NoteLayer" ;NUMBER OF INSTR 1 (MIDI NOTES) BEING HELD. SPECIFICALLY WE ARE INTERESTED IN WHETHER ALL NOTES HAVE BEEN RELEASED | |||
if kNNotes==0&&gkhold==0 then ;IF ALL MIDI KEYBOARD NOTES HAVE BEEN RELEASED... | |||
turnoff ;...TURN THIS INSTRUMENT OFF | |||
endif ;END OF CONDITIONAL BRANCH | |||
kswingval1 scale gkswing,1/1.5,1 | |||
kswingval2 scale gkswing,1/0.5,1 | |||
kswingstep init 0 | |||
kswingval init (i(gkswing)*0.5) + 1 | |||
kTempoMlt table gkTempoMlt-1,giTempoMlt | |||
gkrate = (gktempo/60)*kTempoMlt*4*(1-gkpause) ;DERIVE TEMPO FROM BPM AND TEMPO MULTIPLIER | |||
ktrigger metro gkrate*kswingval ;METRONOME TO TRIGGER NOTES OF THE ARPEGGIO. PHASE OFFSET (P2) PREVENTS A SEARCH FOR A NEW NOTE WHEN THE FIRST NOTE OF AN ARPEGGIO HAS BEEN PLAYED | |||
;SET REQUIRED INITIAL SETTINGS DEPENDING ON ARPEGGIATOR MODE | |||
ktrig changed gkmode | |||
if ktrig==1 then | |||
reinit RESET_START_VALS | |||
endif | |||
RESET_START_VALS: | |||
kcount1 init 0 | |||
kcount2 init 0 | |||
kndx init 0 | |||
kcycle init 0 | |||
kCycleDir init 0 | |||
if i(gkmode)==1 then ;IF UP MODE... | |||
kcount1 init 0 | |||
kcount2 init 0 | |||
kndx init 0 | |||
kdir init 1 | |||
elseif i(gkmode)==2 then ;IF DOWN MODE... | |||
kcount1 init 0 | |||
kcount2 init 0 | |||
kndx init i(kNNotes)-1 | |||
kdir init -1 | |||
elseif i(gkmode)==3 then ;IF UP AND DOWN MODE... | |||
kdir init 1 | |||
kcount1 init 0 | |||
kcount2 init 0 | |||
kndx init 0 | |||
elseif i(gkmode)==4 then ;RANDOM DIRECTION MODE... | |||
kdir init 1 | |||
kcount1 init 0 | |||
kcount2 init 0 | |||
kndx init 0 | |||
elseif i(gkmode)==5 then ;RANDOM PICK MODE... | |||
kcount1 init 0 | |||
kcount2 init 0 | |||
kndx init 0 | |||
elseif i(gkmode)==6 then ;SEQUENCE PLAY MODE... | |||
kcount1 init 0 | |||
kcount2 init 0 | |||
kndx init 0 | |||
kdir init 1 | |||
endif | |||
rireturn | |||
if ktrigger==1&&krelease!=1 then ;IF A TRIGGER FOR A NEW NOTE HAS BEEN ISSUED AND WE ARE NOT IN A RELEASE STAGE... | |||
ktrans = ((gkOctTrans-4)*12)+(gkSemiTrans-12) | |||
kswingstep = abs(kswingstep-1) | |||
kswingval = (kswingstep=0?kswingval1:kswingval2) | |||
;UP | |||
if gkmode==1 then ;IF 'UP' DIRECTION MODE IS SELECTED... | |||
knum table kndx,giseqascend ;READ NOTE NUMBER | |||
knum = knum+(gkintvl*kcycle) | |||
kcount1 = kcount1 + 1 | |||
ktrig changed kNNotes | |||
if ktrig==1 then ;IF NOTES ARE ADDED OR TAKEN AWAY FROM THE ROW SINCE THE LAST ITERATION | |||
kcount1 = kndx+1 | |||
endif | |||
if kndx==kNNotes-1 then | |||
kcount2 = kcount2+1 | |||
if gkCyUpDn==1 then | |||
kcycle wrap kcount2,0,gkcycles+1 | |||
else | |||
kcycle mirror kcount2,0,gkcycles | |||
endif | |||
endif | |||
kndx wrap kcount1,-0.5,kNNotes-0.5 | |||
;DOWN | |||
elseif gkmode==2 then ;IF 'DOWN' DIRECTION MODE IS SELECTED... | |||
knum table kndx,giseqascend ;READ NOTE NUMBER | |||
knum = knum+(gkintvl*kcycle) | |||
if kndx==0 then | |||
kcount2 = kcount2+1 | |||
if gkCyUpDn==1 then | |||
kcycle wrap kcount2,0,gkcycles+1 | |||
else | |||
kcycle mirror kcount2,0,gkcycles | |||
endif | |||
endif | |||
kcount1 = kcount1 - 1 | |||
ktrig changed kNNotes | |||
if ktrig==1 then ;IF NOTES ARE ADDED OR TAKEN AWAY FROM THE ROW SINCE THE LAST ITERATION | |||
kcount1 = kndx-1 | |||
endif | |||
kndx wrap kcount1,-0.5,kNNotes-0.5 | |||
;UP-DOWN | |||
elseif gkmode==3 then ;IF 'UP<->DOWN' DIRECTION MODE IS SELECTED... | |||
if gkcycles==0 then | |||
if kNNotes==1 then | |||
kdir = 0 | |||
elseif kndx=0 then ;OR IF... THE INDEX IS POINTING TO THE FIRST NOTE IN THE LIST, WE NEED TO CHANGE DIRECTION TO UP FOR THE NEXT NOTE AFTER THIS ONE | |||
kdir = 1 ;CHANGE DIRECTION TO UP | |||
elseif kndx=(kNNotes-1) then ;IF THE INDEX IS POINTING TO THE LAST NOTE IN THE LIST, WE NEED TO CHANGE DIRECTION TO DOWN FOR THE NEXT NOTE AFTER THIS ONE | |||
kdir = -1 ;CHANGE DIRECTION TO DOWN | |||
endif ;END OF CONDITIONAL | |||
kndx = kndx + kdir | |||
knum table kndx,giseqascend ;READ NOTE NUMBER | |||
kgoto PLAY_A_NOTE ;GO STRAIGHT TO PLAYING THIS NEW NOTE | |||
else | |||
kndx limit kndx,0,kNNotes-1 | |||
knum table kndx,giseqascend ;READ NOTE NUMBER | |||
knum = knum+(gkintvl*kcycle) | |||
kcount init i(kndx) | |||
kcount = kcount + 1 | |||
kndx mirror kcount,0,kNNotes-1 | |||
if kndx==0 then | |||
kcount2 init i(kcycle) | |||
kcount2 = kcount2+1 | |||
if gkCyUpDn==1 then | |||
kcycle wrap kcount2,0,gkcycles+1 | |||
else | |||
kcycle mirror kcount2,0,gkcycles | |||
endif | |||
endif | |||
kgoto PLAY_A_NOTE ;GO STRAIGHT TO PLAYING THIS NEW NOTE | |||
endif | |||
;RANDOM DIRECTION | |||
elseif gkmode==4 then | |||
if kndx==(kNNotes-1) then ;IF THE INDEX IS POINTING TO THE LAST NOTE IN THE LIST, WE NEED TO CHANGE DIRECTION TO DOWN FOR THE NEXT NOTE AFTER THIS ONE | |||
kdir = -1 ;CHANGE DIRECTION TO DOWN | |||
elseif kndx==0 then ;OR IF... THE INDEX IS POINTING TO THE FIRST NOTE IN THE LIST, WE NEED TO CHANGE DIRECTION TO UP FOR THE NEXT NOTE AFTER THIS ONE | |||
kdir = 1 ;CHANGE DIRECTION TO UP | |||
endif ;END OF CONDITIONAL | |||
knum table kndx,giseqascend ;READ NOTE NUMBER | |||
if gkcycles>0 then | |||
knum = knum+(gkintvl*kcycle) | |||
endif | |||
if kndx==(kNNotes-1) then | |||
kcycle wrap kcycle+1,0,gkcycles+1 | |||
elseif kndx==0 then | |||
kcycle wrap kcycle-1,0,gkcycles+1 | |||
endif | |||
kndx = kndx+kdir ;INCREMENT INDEX FOR THE NEXT NOTE AFTER THIS ONE | |||
kgoto PLAY_A_NOTE ;GO STRAIGHT TO PLAYING THIS NEW NOTE | |||
;RANDOM PICK (RANDOMLY CHOOSE ANY NOTE CURRENTLY BEING HELD) | |||
elseif gkmode==5 then | |||
kRndNdx random 0,kNNotes ;CREATE RANDOM INDEX | |||
knum table kRndNdx,giseqorder ;READ NOTE FROM NOTE LIST USING RANDOM INDEX | |||
knum = knum+(gkintvl*kcycle) | |||
if kndx==kNNotes-1 then | |||
kcount2 = kcount2 + 1 | |||
if gkCyUpDn==1 then | |||
kcycle wrap kcount2,0,gkcycles+1 | |||
else | |||
kcycle mirror kcount2,0,gkcycles | |||
endif | |||
endif | |||
kndx wrap kndx+1,0,kNNotes ;INCREMENT THE COUNTER BUT WRAP IT AROUND IF IT STRAYS BEYOND THE VALUE CORRESPONDING TO THE NUMBER OF NOTES BEING HELD (I.E. THE LENGTH OF THE SEQUENCE) | |||
kgoto PLAY_A_NOTE ;GO STRAIGHT TO PLAYING THIS NEW NOTE | |||
;SEQUENCE PLAY (PLAYS NOTES IN THE ORDER IN WHICH THEY WERE ORIGINALLY PLAYED) | |||
else | |||
knum table kndx,giseqorder ;READ NOTE VALUE FROM TABLE | |||
if gkcycles!=0 then | |||
knum = knum+(gkintvl*kcycle) | |||
endif | |||
if kndx==kNNotes-1 then | |||
kcount2 = kcount2 + 1 | |||
if gkCyUpDn==1 then | |||
kcycle wrap kcount2,0,gkcycles+1 | |||
else | |||
kcycle mirror kcount2,0,gkcycles | |||
endif | |||
endif | |||
kndx wrap kndx+1,0,kNNotes ;INCREMENT THE COUNTER BUT WRAP IT AROUND IF IT STRAYS BEYOND THE VALUE CORRESPONDING TO THE NUMBER OF NOTES BEING HELD (I.E. THE LENGTH OF THE SEQUENCE) | |||
kgoto PLAY_A_NOTE ;GO STRAIGHT TO PLAYING THIS NEW NOTE | |||
endif | |||
endif | |||
PLAY_A_NOTE: | |||
if gkmode==4&&ktrigger==1 then ;IF RANDOM DIRECTION MODE HAS BEEN CHOSEN, CHOOSE A NEW RANDOM DIRECTION FOR THE NEXT STEP | |||
kdir random 0,1.999999 ; | |||
kdir = (int(kdir)*2)-1 ;kdir WILL BE EITHER -1 OR 1 | |||
endif | |||
;PORTAMENTO ADDED TO NOTE NUMBER CHANGES | |||
kporttime linseg 0,0.001,0.1 | |||
knum2 portk knum+ktrans,kporttime*gkNotePort | |||
kcps limit cpsmidinn(knum2),0,10000 | |||
kAmpScale table kcps,giFletcherMunsonCurve | |||
a1 vco2 gkSynLev*kAmpScale,kcps,12 ;TRIANGLE WAVE OSCILLATOR | |||
a2 vco2 gkSynLev*kAmpScale,kcps,10 ;SQUARE WAVE OSCILLATOR | |||
a3 vco2 gkSynLev*kAmpScale,kcps,0,0.5 ;SAWTOOTH WAVE OSCILLATOR | |||
a4 pinkish gkSynLev ;PINK NOISE | |||
ifadecurve ftgenonce 0,0,1024,20,2 ;HANNING WINDOW USED FOR THE CROSSFADING CURVES | |||
kamp1 table (((gkwave-1)/3)*1.5)+0.5,ifadecurve,1 ;TRIANGLE WAVE AMPLITUDE CONTROL EACH OF THE AMPLITUDES ARE OFFSET WITH RESPECT TO EACH OTHER. NOTE THAT IF INDEX IS LESS THAN 0 IT WILL ACTUALLY HOLD READING AT ZERO IF ITS GREATER THAN '1' IT WILL HOLD AT 1 | |||
kamp2 table (((gkwave-1)/3)*1.5),ifadecurve,1 ;SQUARE WAVE AMPLITUDE CONTROL | |||
kamp3 table (((gkwave-1)/3)*1.5)-0.5,ifadecurve,1 ;SAW WAVE AMPLITUDE CONTROL | |||
kamp4 table (((gkwave-1)/3)*1.5)-1,ifadecurve,1 ;PINK NOISE AMPLITUDE CONTROL | |||
aamp1 interp kamp1 | |||
aamp2 interp kamp2 | |||
aamp3 interp kamp3 | |||
aamp4 interp kamp4 | |||
a1 sum a1*aamp1,a2*aamp2,a3*aamp3,a4*aamp4 | |||
;SUB-OSCILLATOR | |||
if gksubosc==1 then | |||
asub vco2 gkSynLev*kAmpScale*0.6,kcps*0.25,10 | |||
a1 = a1 + asub | |||
endif | |||
if ktrigger==1 then | |||
reinit RETRIGGER_ENVELOPES | |||
endif | |||
RETRIGGER_ENVELOPES: | |||
/*AMPLITUDE ENVELOPE*/ | |||
if gkAatt+gkAdec=0.002&&gkAsus==1 kgoto SKIP_AMP_ENV ;IF ATTACK AND/OR DECAY TIME ARE AT THEIR MINIMUM SETTINGS AND SUSTAIN LEVEL IS MAXIMUM IGNORE AMPLITUDE ENVELOPE CREATION AND IMPLEMENTATION - I.E. WE WIL HAVE SIMPLY A SUSTAINING INSTRUMENT | |||
iAatt = i(gkAatt) | |||
iAdec = i(gkAdec) | |||
iAsus = i(gkAsus) | |||
iArel = i(gkArel) | |||
iAsustim = abs((1/i(gkrate))-iAatt-iArel)+0.0001 ;DERIVE SUSTAIN TIME FROM ARPEGGIATOR RATE AND THE OTHER ENVELOPE SEGMENT DURATIONS | |||
kAenv linsegr 0,iAatt,1,iAdec,i(gkAsus),iAsustim,i(gkAsus),iArel,0 ;AMPLITUDE ENVELOPE | |||
a1 = a1*kAenv | |||
SKIP_AMP_ENV: | |||
/*FILTER ENVELOPE*/ | |||
iatt = i(gkatt) | |||
idec = i(gkdec) | |||
isus = i(gksus) | |||
irel = i(gkrel) | |||
isustim = abs((1/i(gkrate))-iatt-irel)+0.0001 ;DERIVE SUSTAIN TIME FROM ARPEGGIATOR RATE AND THE OTHER ENVELOPE SEGMENT DURATIONS | |||
kfenv linsegr 0,iatt,1,idec,0,isustim,0,irel,0 ;FILTER ENVELOPE | |||
kfenv = (kfenv*(1-gksus))+gksus | |||
rireturn | |||
/*FILTER LFO*/ | |||
kLFO lfo gkLFOdep,gkLFOrate,0 ;CREATE AN LFO. SINE WAVE SHAPE | |||
kEnvAmt portk gkEnvAmt,kporttime | |||
kEnvAmt limit kEnvAmt+kLFO,0,1 ;ADD LFO TO ENVELOPE AMOUNT VARIABLE AND LIMIT THE RESULT TO LIE WITHIN 0 AND 1 | |||
/*FILTER KEYBOARD TRACKING*/ | |||
if gkKybdTrk=0 then ;IF KEYBOARD TRACKING IS OFF... | |||
;NON-KEYBOARD TRACKING FILTER | |||
kcfoct = ((kfenv*8)+6)*(kEnvAmt^0.25) | |||
else ;OTHERWISE (KEYBOARD TRACKING IS OFF | |||
;KEYBOARD TRACKING FILTER | |||
kcfoct = octcps(kcps)+((kfenv*7*(kEnvAmt^0.75))-2) ;KEYBOARD TRACKING | |||
endif | |||
/*FILTER*/ | |||
kcf limit cpsoct(kcfoct),20,sr/3 ;PROTECT AGAINST OUT OF RANGE FILTER VALUES | |||
kres portk gkres,kporttime ;SMOOTH CHANGES MADE TO RESONANCE SETTING | |||
if gkFiltType==1 then ;CHOOSE FILTER TYPE | |||
kdist portk gkdist,kporttime ;SMOOTH CHANGES MADE TO DISTORTION SETTING | |||
a1 lpf18 a1,kcf,kres*0.98, (kdist^2)*10 ;LOWPASS | |||
kdmp scale kdist^0.2,0.06,1 ;CREATE A FUNCTION THAT WILL DAMPEN SIGNAL AMPLITUDE WHEN LOWPASS FILTER DISTORTION IS INCREASED | |||
a1 = a1*kdmp ; | |||
else | |||
;aflt butbp a1,kcf,kcf * (2-((kres^0.5)*1.9)) ;BANDPASS | |||
kcf limit kcf,20,sr*0.4 | |||
kbw limit (kcf*(kres^8))*0.7, 1, sr/4 | |||
aflt rbjeq a1,kcf,1,kbw,1,4;BANDPASS | |||
a1 balance aflt,a1/4,1 ;EVEN OUT LEVEL OF FILTER OUTPUT SIGNAL TO COMPENSATE FOR SIGNAL POWER LOSS WHEN BANDWIDTH ('q') IS NARROW | |||
endif | |||
aenv linsegr 0,0.001,1,0.005,0 ;ANTI-CLICK ENVELOPE | |||
a1 = a1*aenv ;APPLY ENVELOPE | |||
/*FREQUENCY SHIFTER*/ | |||
if gkFShift==0 kgoto SKIP_FSHIFT ;IF F.SHIFT VALUE = 0, BYPASS THE EFFECT | |||
a1 FreqShifter a1,gkFShift,gisine ;CALL UDO | |||
SKIP_FSHIFT: | |||
;EFFECT WET/DRY MIX CONSTRUCTION | |||
iWet ftgentmp 0,0,512,-7,0,256,1,256,1 ;RESCALING FUNCTION FOR WET LEVEL CONTROL | |||
iDry ftgentmp 0,0,512,-7,1,256,1,256,0 ;RESCALING FUNCTION FOR DRY LEVEL CONTROL | |||
kWet table gkDryWet, iWet, 1 ;RESCALE WET LEVEL CONTROL ACCORDING TO FUNCTION TABLE iWet | |||
kDry table gkDryWet, iDry, 1 ;RESCALE DRY LEVEL CONTROL ACCORDING TO FUNCTION TABLE iWet | |||
gasendL = gasendL+a1*kWet | |||
gasendR = gasendR+a1*kWet | |||
if gkDryWet>0 then | |||
a1 = a1*kDry | |||
endif | |||
outs a1,a1 | |||
endin | |||
instr Effects | |||
if gkDryWet==0 kgoto SKIP_DELAY | |||
kTempoMlt table gkTempoMlt-1,giTempoMlt | |||
ktime limit (60*gkDlyTim)/(gktempo*8*kTempoMlt),ksmps/sr,10 ;DERIVE TEMPO FROM BPM AND TEMPO MULTIPLIER | |||
atime interp ktime | |||
kfback = 0.5 | |||
;offset delay (no feedback) | |||
abuf delayr 10 | |||
afirst deltap3 atime | |||
delayw gasendL | |||
;left channel delay (note that 'atime' is doubled) | |||
abuf delayr 20 ; | |||
atapL deltap3 atime*2 | |||
delayw afirst+(atapL*gkDlyFB) | |||
;right channel delay (note that 'atime' is doubled) | |||
abuf delayr 20 | |||
atapR deltap3 atime*2 | |||
delayw gasendR+(atapR*gkDlyFB) | |||
outs atapL, atapR | |||
SKIP_DELAY: | |||
clear gasendL, gasendR | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i "ScanWidgets" 0 [3600*24*7] ;SCAN GUI WIDGETS | |||
i "ScanMIDI" 0 [3600*24*7] ;SCANS FOR MIDI NOTE EVENTS | |||
i "Effects" 0 [3600*24*7] ;EFFECTS | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,90 @@ | |||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> | |||
<HTML> | |||
<HEAD> | |||
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252"> | |||
<TITLE></TITLE> | |||
<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.2 (Win32)"> | |||
<META NAME="CREATED" CONTENT="20120918;12541200"> | |||
<META NAME="CHANGED" CONTENT="20121005;23154300"> | |||
<STYLE TYPE="text/css"> | |||
<!-- | |||
@page { margin: 2cm } | |||
P { margin-bottom: 0.21cm } | |||
A:link { so-language: zxx } | |||
--> | |||
</STYLE> | |||
</HEAD> | |||
<BODY LANG="en-GB" DIR="LTR"> | |||
<P STYLE="margin-bottom: 0cm"><FONT FACE="Verdana, sans-serif"><B><U><FONT SIZE=5>Arpeggiator</FONT></U></B></FONT></P> | |||
<P STYLE="margin-bottom: 0cm"><FONT FACE="Tahoma, sans-serif">This | |||
instrument implements an arpeggiator effect, such as is often found | |||
on hardware synthesizers. The notes generated by the arpeggiator are | |||
played by a simple synthesizer and echoed by a multi-mode delay.</FONT></P> | |||
<P STYLE="margin-bottom: 0cm"><FONT FACE="Tahoma, sans-serif"><FONT SIZE=4><U><B>Arpeggiator | |||
Section</B></U></FONT></FONT></P> | |||
<P STYLE="margin-bottom: 0cm"><FONT FACE="Tahoma, sans-serif">The | |||
speed or rate of the arpeggio is defined using the 'Tempo' knob in | |||
BPM (beats per minute). Each arpeggio note is assumed to be a | |||
quaver/eighth note so a tempo of 120 BPM will result in 240 notes | |||
being played per minute, assuming beats are crotchets/quarter notes. | |||
There are also 8 'multiplier' presets which scale the tempo using | |||
simple ratios. There are six modes of movement: 'Up', 'Down', and 'Up | |||
and Down' are as would be expected. 'Random Direction' randomly moves | |||
up or down from the current pitch to the next pitch in the arpeggio. | |||
'Random Pick' chooses any other note within the arpeggio each time a | |||
new note is required. 'Seq. Play' plays through the sequence of notes | |||
in the order in which they were pressed. 'Cycles' will add repeats of | |||
the entire arpeggio transposed sequentially by the number of | |||
semitones defined by 'Intvl'. 'Cycles' will have no effect if 'Intvl' | |||
is zero. If 'Intvl' is negative subsequent cycles of the arpeggio | |||
will be lower than the first. If 'Up+Down' is activated the | |||
transposition steps will go up and then back down (or vice versa if | |||
'Intvl' is negative) rather than just in a single direction before | |||
repeating. This option is ignored in 'Random Dir.' mode which instead | |||
implements a kind of 'Drunken Walk'. 'Hold' imitates the action of a | |||
keyboard's sustain pedal. This function is also sometimes referred to | |||
as 'latch' in arpeggiators. 'Swing' warps the rhythm of each pair of | |||
arpeggiator notes. The rhythm is warped continuously from | |||
quaver:quaver at its minimum setting to dotted-quaver:semiquaver at | |||
its maximum. At its midway point the rhythm is | |||
triplet-crotchet:triplet quaver.</FONT></P> | |||
<P STYLE="margin-bottom: 0cm"><FONT FACE="Tahoma, sans-serif"><FONT SIZE=4><U><B>Synthesizer | |||
Section</B></U></FONT></FONT></P> | |||
<P STYLE="margin-bottom: 0cm"><FONT FACE="Tahoma, sans-serif">The | |||
synthesizer is a single oscillator synthesizer with four waveform | |||
choices, an amplitude envelope, a filter envelope and an LFO which | |||
influences the filter cutoff frequency. The filter envelope can be | |||
defined as a static repeating function ('Kybd.Track' off) or one that | |||
describes a frequency function relative to the currently playing | |||
pitch ('Kybd.Track' on). The filter can be either resonant lowpass or | |||
bandpass. Increasing 'Port.' applies an increasing sliding portamento | |||
between pitch changes.</FONT></P> | |||
<P STYLE="margin-bottom: 0cm"><FONT FACE="Tahoma, sans-serif">'Freq.Shift' | |||
frequency shifts the synthesizer tone by the number of cycles per | |||
second defined by the 'Freq.' knob. When 'Freq' is zero the effect is | |||
bypassed.</FONT></P> | |||
<P STYLE="margin-bottom: 0cm"><FONT FACE="Tahoma, sans-serif">A | |||
ping-pong delay, the delay time of which is defined as the number of | |||
beats at the current tempo, can be introduced by raising the level | |||
control. When 'level' is zero the effect is bypassed.</FONT></P> | |||
<P STYLE="margin-bottom: 0cm"><FONT FACE="Tahoma, sans-serif"><FONT SIZE=4><U><B>Technical</B></U></FONT></FONT></P> | |||
<P STYLE="margin-bottom: 0cm"><FONT FACE="Tahoma, sans-serif">Whenever | |||
a new note is played its note number is written into two different | |||
function tables: in the first table, note numbers are written | |||
sequentially in the order in which they were played. (NB. if a note | |||
is removed its note number is removed from this table and any notes | |||
following it in the table are shunted back one place so as to not | |||
leave any gaps.) This table is used by the 'Seq. Play' and 'Random | |||
Pick' arpeggiator modes. A second table is created (and updated any | |||
time a new note is added or removed) in which all notes currently | |||
being held are sorted into ascending order. This table is used by all | |||
other arpeggiator modes. A third table is used to store the on/off | |||
status of each note. A value of '1' in this table denotes 'note on' | |||
and '0' denotes 'note off'. For example if middle C (note number 60) | |||
is pressed, the 61st table item with index number 60 will be '1'. | |||
This is needed to check for active notes and prevent the same note | |||
appearing twice in a note row. This would otherwise be possible when | |||
'hold' is active. This function could be deactivated if you wanted to | |||
define arpeggios with repeated notes.</FONT></P> | |||
</BODY> | |||
</HTML> |
@@ -0,0 +1,177 @@ | |||
Physical model of a plucked string with a pickup point. Model is created from first principles in order to implement some improvements over the existing Csound opcodes for plucked strings. | |||
A bandpass filter is employed within the delay buffer used to implement the pluck which facilitates filtering to specific harmonics. Conventional damping effects are still possible when cutoff frequency ratio = 1. | |||
<Cabbage> | |||
form caption("Bass Guitar"), size(550, 250), pluginID("basg") | |||
image bounds( 0, 0,550,220), colour("DarkGreen"), shape("rounded"), outline("white"), line(4) | |||
groupbox bounds(5, 5, 540,120), colour( 150,255,150,10){ | |||
rslider bounds( 10, 25,60,60), text("Sustain"), colour("Olive"), FontColour("LightGreen"), channel("feedback"), range(0.9,1, 0.999, 2, 0.001) | |||
rslider bounds( 70, 25,60,60), text("Filt. Ratio"), colour("Olive"), FontColour("LightGreen"), channel("FiltRatio"), range(0.5, 32, 1, 0.5) | |||
rslider bounds(130, 25,60,60), text("B.width"), colour("Olive"), FontColour("LightGreen"), channel("bw"), range(1, 32, 16) | |||
rslider bounds(190, 25,60,60), text("Att"), colour("Olive"), FontColour("LightGreen"), channel("att"), range(0, 3, 1,0.5) | |||
checkbox bounds(260, 35, 30, 30), text("Legato") channel("legato"),FontColour("LightGreen"), colour("yellow") value(1) | |||
label bounds(255, 72, 40, 12), text("Legato"), FontColour("LightGreen") | |||
rslider bounds(300, 25,60,60), text("Leg.Speed"), colour("Olive"), FontColour("LightGreen"), channel("LegSpeed"), range(0.01,1,0.05,0.5) | |||
rslider bounds(360, 25,60,60), text("Vib.Depth"), colour("Olive"), FontColour("LightGreen"), channel("VibDep"), range(0, 1, 0.25, 0.75, 0.001) | |||
rslider bounds(420, 25,60,60), text("Vib.Rate"), colour("Olive"), FontColour("LightGreen"), channel("VibRte"), range(0.5, 20, 3, 0.5) | |||
rslider bounds(480, 25,60,60), text("Level"), colour("Olive"), FontColour("LightGreen"), channel("level"), range(0, 1, 0.7) | |||
hslider bounds(15,85,525,40), text("Pickup Position"), colour("Olive"), FontColour("LightGreen"), channel("PickupPos"), range(0.01, 0.99, 0.1) | |||
} | |||
keyboard bounds(10, 130, 530,80) | |||
image bounds(5, 225, 420, 20), colour(75, 85, 90, 50), plant("credit"){ | |||
label bounds(0.03, 0.1, .6, .7), text("Author: Iain McCurdy |2012|"), colour("white"), FontColour("LightGreen") | |||
} | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-dm0 -n -+rtmidi=null -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 64 | |||
nchnls = 2 | |||
0dbfs = 1 ;MAXIMUM AMPLITUDE | |||
massign 0,2 | |||
gkNoteTrig init 0 | |||
giwave ftgen 0,0,4097,11,20,1,0.5 ;waveform used by excitation (pluck) signal | |||
gisine ftgen 0,0,4097,10,1 ;sine wave (used by lfos) | |||
gkactive init 0 ; Will contain number of active instances of instr 3 when legato mode is chosen. NB. notes in release stage will not be regarded as active. | |||
;UDOs | |||
;UDO for plucked electric string - using a UDO facilitates the use of ksmps=1 to improve sound quality | |||
opcode PluckedElectricString,a,aakkkak | |||
asig,acps,kcutoff,kbw,kfeedback,aPickupPos,kporttime xin | |||
setksmps 1 | |||
;smooth krate variables according to the local ksmps and kr | |||
kcutoff portk kcutoff,kporttime | |||
kbw portk kbw,kporttime | |||
acutoff interp kcutoff | |||
kcutoff downsamp acutoff | |||
abw interp kbw | |||
kbw downsamp abw | |||
kbw limit kcutoff*kbw,0.001,10000 ;limit bandwidth values to prevent explosion | |||
aDelTim limit 1/acps,0,1 ;derive required delay time from cycles per second value (reciprocal) and limit range | |||
afb init 0 ;audio feedback signal used by delay buffer | |||
atap1 vdelay asig+afb,aDelTim*aPickupPos*1000,1000 ;tap 1. Nut | |||
atap2 vdelay -atap1,aDelTim*(1-aPickupPos)*1000,1000 ;tap 2, Tailpiece | |||
atap2 butbp atap2,kcutoff,kbw ;bandpass filter (nb. within delay buffer) | |||
afb = atap2*-kfeedback ;create feedback signal to add to input for next iteration | |||
xout atap1+atap2 ;return audio to caller instrument. NB. audio at pickup is a mixture (with positive and negative interference) of wave reflected from the bridge and the nut (the two points of fixture of the string) | |||
endop | |||
;UDO for lowpass filter attack enveloping - using a UDO permits setting ksmps=1 in order to improve sound quality | |||
opcode butlpsr,a,aii | |||
setksmps 1 | |||
asig,icps,idur xin | |||
kcfenv expseg icps,idur,15000,1,15000 | |||
asig butlp asig,kcfenv | |||
xout asig | |||
endop | |||
instr 1 ;read in widgets - this instrument runs constantly during performance | |||
gkfeedback chnget "feedback" | |||
gkFiltRatio chnget "FiltRatio" | |||
gkbw chnget "bw" | |||
gkatt chnget "att" | |||
gklegato chnget "legato" | |||
gkLegSpeed chnget "LegSpeed" | |||
gkVibDep chnget "VibDep" | |||
gkVibRte chnget "VibRte" | |||
gklevel chnget "level" | |||
gkPickupPos chnget "PickupPos" | |||
endin | |||
instr 2 ;triggered via MIDI | |||
gkNoteTrig init 1 ;at the beginning of a new note set note trigger flag to '1' | |||
icps cpsmidi ;read in midi note pitch in cycles per second | |||
givel veloc 0,1 ;read in midi note velocity | |||
gkcps = icps ;update a global krate variable for note pitch | |||
if i(gklegato)==0 then ;if we are *not* in legato mode... | |||
inum notnum ; read midi note number (0 - 127) | |||
event_i "i",p1+1+(inum*0.001),0,-1,icps ; call sound producing instr | |||
krel release ; release flag (1 when note is released, 0 otherwise) | |||
if krel==1 then ; when note is released... | |||
turnoff2 p1+1+(inum*0.001),4,1 ; turn off the called instrument | |||
endif ; end of conditional | |||
else ;otherwise... (i.e. legato mode) | |||
iactive = i(gkactive) ;number of active notes of instr 3 (note in release are disregarded) | |||
if iactive==0 then ;...if no notes are active | |||
event_i "i",p1+1,0,-1 ;...start a new held note | |||
endif | |||
endif | |||
endin | |||
instr 3 | |||
kporttime linseg 0,0.001,1 ;portamento time function rises quickly from zero to a held value | |||
kporttime = kporttime*gkLegSpeed ;scale portamento time function with value from GUI knob widget | |||
if i(gklegato)==1 then ;if we are in legato mode... | |||
krel release ;sense when note has been released | |||
gkactive = 1-krel ;if note is in release, gkactive=0, otherwise =1 | |||
kcps portk gkcps,kporttime ;apply portamento smooth to changes in note pitch (this will only have an effect in 'legato' mode) | |||
acps interp kcps ;create a a-rate version of pitch (cycles per second) | |||
kactive active p1-1 ;...check number of active midi notes (previous instrument) | |||
if kactive==0 then ;if no midi notes are active... | |||
turnoff ;... turn this instrument off | |||
endif | |||
else ;otherwise... (polyphonic / non-legato mode) | |||
acps = p4 ;pitch equal to the original note pitch | |||
endif | |||
aptr line 0,1/i(gkcps),1 ;pointer that will be used to read excitation signal waveform function table | |||
asig tablei aptr,giwave,1,0,0 ;create excitation (pluck) signal | |||
asig butlp asig,cpsoct(4+(givel*8)) ;lowpass filter excitation signal according to midi note velocity of this note | |||
asig buthp asig,i(gkcps) ;highpass filter excitation signal (this could possibly be made adjustable using a GUI widget) | |||
kcutoff limit gkcps*gkFiltRatio,20,20000 ;cutoff of frequency of the bandpass filter will be relative to the pitch of the note. Limit it to prevent out of range values that would cause filter expolosion. | |||
;In legato mode modulations are reinitialised | |||
if gkNoteTrig==1&&gklegato==1 then | |||
reinit RESTART_ENVELOPE | |||
endif | |||
RESTART_ENVELOPE: | |||
krise linseg 0,0.3,0,1.5,1 ;build-up envelope - modulations do not begin immediately | |||
rireturn | |||
arise interp krise ;interpolation prevents discontinuities (clicks) when oscili lfos are reinitialised | |||
avib oscili 0.8*arise*gkVibDep,gkVibRte,gisine ;vibrato | |||
acps = acps*semitone(avib) | |||
atrm oscili 0.8*arise*gkVibDep,gkVibRte,gisine,0 ;tremolo | |||
gkPickupPos portk gkPickupPos,kporttime ;smooth changes made to pickup position slider | |||
aPickupPos interp gkPickupPos ;interpolate k-rate pickup position variable to create an a-rate version | |||
ares PluckedElectricString asig, acps, kcutoff, gkbw, gkfeedback, aPickupPos,kporttime ;call UDO - using a UDO facilitates the use of a different ksmps value (ksmps=1 and kr=sr) to optimise sound quality | |||
aenv linsegr 0.7,0.05,0 ;amplitude envelope | |||
if i(gkatt)>0 then ;if attack time is anything greater than zero call the lowpass filter envelope | |||
ares butlpsr ares,i(gkcps),i(gkatt) ;a UDO is used again to allow the use of ksmps=1 | |||
endif | |||
ares = ares*aenv*(1+atrm)*gklevel ;scale amplitude of audio signal with envelope, tremolo and level knob widget | |||
outs ares,ares | |||
gkNoteTrig = 0 ;reset new-note trigger (in case it was '1') | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [60*60*24*7] ;instrument that reads in widget data | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,198 @@ | |||
<Cabbage> | |||
form caption("Fm Bell synthesizer"), size(760, 330), pluginID("bel1") | |||
xypad bounds(0, 0, 250, 210), channel("chanx", "chany"), text("Modulation"), rangex(1,30,6.72), rangey(0,1,0.43) | |||
groupbox bounds(260, 0, 240, 100), text("ADSR"), plant("adsr"){ | |||
rslider bounds(.0, .3, .6, .6), text("A"), colour("orange"), channel("att"), range(0.01,3, .5) | |||
rslider bounds(.25, .3, .6, .6), text("D"), colour("orange"), channel("dec"), range(0,1, .5) | |||
rslider bounds(.5, .3, .6, .6), text("S"), colour("orange"), channel("sus"), range(0,1,.8) | |||
rslider bounds(.75, .3, .6, .6), text("R"), colour("orange"), channel("rel"), range(0.01,3, .2) | |||
} | |||
groupbox bounds(260, 105, 240, 100), text("Tune"), plant("tune"){ | |||
rslider bounds(.0, .3, .6, .6), text("Semi"), colour("OrangeRed "), channel("semi"), range(-24,12,0) | |||
rslider bounds(.25, .3, .6, .6), text("Detune"), colour("OrangeRed "), channel("detune"), range(-1,1,0) | |||
rslider bounds(.5, .3, .6, .6), text("Cutoff"), colour("OrangeRed "), channel("cutoff"), range(200,12000,3000) | |||
rslider bounds(.75, .3, .6, .6), text("Spread"), colour("OrangeRed "), channel("spread"), range(0,1,.5) | |||
} | |||
groupbox bounds(510,0, 240, 100), text("LFO/Stereo chorus"), plant("mod"){ | |||
rslider bounds(.0, .3, .6, .6)), text("Lfo amp"), colour("OrangeRed "), channel("lfoamp"), range(0,5, 0) | |||
rslider bounds(.25, .3, .6, .6), text("Lfo rate"), colour("OrangeRed "), channel("lforate"), range(0,10, 0) | |||
rslider bounds(.5, .3, .6, .6), text("depth"), colour("OrangeRed "), channel("chdepth"), range(0,10,0) | |||
rslider bounds(.75, .3, .6, .6), text("rate"), colour("OrangeRed "), channel("chrate"), range(0,10,0) | |||
} | |||
groupbox bounds(510,105, 240, 100), text("Reverb"), plant("rev"){ | |||
rslider bounds(0, .3, .6, .6), text("level"), colour("dodgerblue"), channel("level"), range(0,1,0) | |||
rslider bounds(0.25, .3, .6, .6), text("size"), colour("dodgerblue"), channel("size"), range(.1,.99,.5) | |||
checkbox bounds(.55, .40, .60, .30),channel("onoff"), text("On/Off"), value(0) | |||
} | |||
keyboard bounds(0, 220, 750, 70) | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n -+rtmidi=null -M0 -b1024 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 32 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
;Author: Giorgio Zucco (2012) | |||
;turnon 10 ;chorus | |||
;turnon 12 ;reverb | |||
ga1 init 0 | |||
ga2 init 0 | |||
garev1 init 0 | |||
garev2 init 0 | |||
;******************************************* | |||
opcode StChorus,aa,aakkkk | |||
asigr,asigl,kdepth,kdepthl,krate,kratel xin ;legge i parametri in entrata | |||
;ar,al StChorus asigr,asigl,kdepth,kdepthl,krate,kratel | |||
k1ch randi kdepth/2,krate,1 | |||
ar1 vdelay3 asigr,kdepth/2+k1ch,10 | |||
k2ch randi kdepth/2,krate*0.9,.2 | |||
ar2 vdelay3 asigr,kdepth/2+k2ch,10 | |||
k3ch randi kdepth/2,krate*1.1,.2 | |||
ar3 vdelay3 asigr,kdepth/2+k3ch,10 | |||
k4ch randi kdepth/2,krate*1.3,.1 | |||
ar4 vdelay3 asigr,kdepth/2+k4ch,10 | |||
k1chl randi kdepthl/2,kratel,1 | |||
ar1l vdelay3 asigl,kdepthl/2+k1chl,10 | |||
k2chl randi kdepthl/2,kratel*0.9,.2 | |||
ar2l vdelay3 asigl,kdepthl/2+k2chl,10 | |||
k3chl randi kdepthl/2,kratel*1.1,.2 | |||
ar3l vdelay3 asigl,kdepthl/2+k3chl,10 | |||
k4chl randi kdepthl/2,kratel*1.3,.1 | |||
ar4l vdelay3 asigl,kdepthl/2+k4chl,10 | |||
aL = (ar1+ar2+ar3+ar4)/2 | |||
aR = (ar1l+ar2l+ar3l+ar4l)/2 | |||
xout aL,aR ; write output | |||
endop | |||
;*********************************************** | |||
instr 1 | |||
iatt chnget "att" | |||
idec chnget "dec" | |||
isus chnget "sus" | |||
irel chnget "rel" | |||
kdet chnget "detune" | |||
ksemi chnget "semi" | |||
kcut chnget "cutoff" | |||
kspread chnget "spread" | |||
klfoamp chnget "lfoamp" | |||
klforate chnget "lforate" | |||
kindex chnget "fmamp" | |||
kfmrate chnget "fmrate" | |||
kcutoff chnget "cutoff" | |||
kreso chnget "resonance" | |||
kc1 chnget "chanx" | |||
kc2 chnget "chany" | |||
;midi | |||
imidinn notnum | |||
iamp ampmidi 1 | |||
kbend pchbend 0,2 ;pitch bend | |||
kfreq1 = cpsmidinn(imidinn+kbend+int(ksemi)) ;controllo midi | |||
kfreq2 = cpsmidinn(imidinn+kbend+int(ksemi)+kdet) | |||
ifn1 = 1 | |||
ifn2 = 1 | |||
ifn3 = 1 | |||
ifn4 = 1 | |||
ivfn = 1 | |||
asig1 fmbell iamp, kfreq1,kc1+1,kc2,klfoamp,klforate,ifn1,ifn2,ifn3,ifn4,ivfn | |||
asig2 fmbell iamp, kfreq2,kc1+1,kc2,klfoamp,klforate,ifn1,ifn2,ifn3,ifn4,ivfn | |||
afl1 clfilt asig1,kcutoff,0,4 | |||
afl2 clfilt asig2,kcutoff,0,4 | |||
;master | |||
al = ((afl1 * kspread) + (afl2 * (1 - kspread))) *.2 | |||
ar = ((afl1 * (1-kspread)) + (afl2 * kspread)) *.2 | |||
aoutL clip al,0,0dbfs | |||
aoutR clip ar,0,0dbfs | |||
kadsr mxadsr iatt,idec,isus,irel | |||
outs (aoutL*kadsr),(aoutR*kadsr) | |||
vincr ga1,(aoutL*kadsr) | |||
vincr ga2,(aoutR*kadsr) | |||
vincr garev1,(aoutL*kadsr) | |||
vincr garev2,(aoutR*kadsr) | |||
endin | |||
;stereo chorus | |||
instr 10 | |||
k1 chnget "chdepth" | |||
k2 chnget "chrate" | |||
kfxdepth portk k1,.01 | |||
kfxrate portk k2,.01 | |||
acho1,acho2 StChorus ga1,ga2,kfxdepth,kfxdepth*.8,kfxrate,kfxrate*.8 | |||
outs acho1,acho2 | |||
clear ga1,ga2 | |||
endin | |||
instr 12 ;reverb | |||
ktrig chnget "onoff" | |||
klevel chnget "level" | |||
ksize chnget "size" | |||
if ktrig = 1 then | |||
al,ar reverbsc garev1,garev2,ksize,16000,sr,0 | |||
adc1 dcblock2 al | |||
adc2 dcblock2 ar | |||
kpan1 randomi 0,1,4 | |||
kpan2 randomi 0,1,8 | |||
aout1,aout2 pan2 adc1,kpan1 | |||
aout3,aout4 pan2 adc2,1-kpan2 | |||
asum1 = (aout1+aout2)*klevel | |||
asum2 = (aout3+aout4)*klevel | |||
else | |||
asum1 = 0 | |||
asum2 = 0 | |||
endif | |||
outs asum1,asum2 | |||
clear garev1,garev2 | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
; sine wave. | |||
f 1 0 32768 10 1 | |||
i1 0 36000 | |||
i10 0 36000 | |||
i12 0 36000 | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,269 @@ | |||
;BreakBeatCutter.csd | |||
;Iain McCurdy, 2013. | |||
; Break Beat Cut Up using the bbcut opcode with additional processing | |||
;==BBCUT========================================================================================================================== | |||
'Sub-division' determines the note duration used as the base unit in cut-ups. | |||
For example a value of 8 represents quavers (eighth notes), 16 represents semiquavers (sixteenth notes) and so on. | |||
'Bar Length' represents the number of beats per bar. For example, a value of 4 represents a 4/4 bar and so on. | |||
'Phrase' defines the number of bars that will elapse before the cutting up pattern restarts from the beginning. | |||
'Stutter' is a separate cut-up process which occasionally will take a very short fragment of the input audio and repeat | |||
it many times. | |||
'Stutter Speed' defines the duration of each stutter in relation to 'Sub-division'. | |||
If subdivision is 8 (quavers / eighth notes) and 'Stutter Speed' is 2 then each stutter will be a semiquaver / sixteenth note. | |||
'Stutter Chance' defines the frequency of stutter moments. | |||
The range for this parameter is 0 to 1. Zero means stuttering will be very unlikely, 1 means it will be very likely. | |||
'Repeats' defines the number of repeats that will be employed in normal cut-up events. | |||
When processing non-rhythmical, unmetered material it may be be more interesting to employ non-whole numbers for parameters such as 'Sub-division', 'Phrase' and 'Stutter Speed'. | |||
;======================================================================================================================== | |||
;==FILTER================================================================================================================ | |||
Additionally in this example a randomly moving band-pass filter has been implemented. | |||
'Filter Mix' crossfades between the unfiltered bbcut signal and the filtered bbcut signal. | |||
'Cutoff Freq.' consists of two small sliders which determine the range from which random cutoff values are derived. | |||
'Interpolate<=>S&H' fades continuously between an interpolated random function and a sample and hold type random function. | |||
'Filter Div.' controls the frequency subdivision with which new random cutoff frequency values are generated - a value of '1' means that new values are generated once every bar. | |||
;======================================================================================================================== | |||
;==WGUIDE================================================================================================================ | |||
A waveguide effect can randomly and rhythmically cut into the audio stream | |||
'Chance' defines the probability of this happening. 0=never 1=always | |||
The range of frequencies the effect will choose from is defined by the user as note values. | |||
Frequencies are quatised to adhere to equal temperament. | |||
;======================================================================================================================== | |||
;==SQUARE MOD. (Square wave ring modulation)============================================================================= | |||
This effect can similarly randomly and rhythmically cut into the audio stream using the 'chance' control | |||
The range of frequencies the modulator waveform can move between is defined as 'oct' values. | |||
;======================================================================================================================== | |||
;==F.SHIFT (Frequency Shifter)=========================================================================================== | |||
Similar to the above except using a frequency shifter effect. | |||
;======================================================================================================================== | |||
<Cabbage> | |||
form size(440,485), caption("Break Beat Cutter"), pluginID("bbct") | |||
groupbox bounds( 0, 0,440,145), text("CUTTER"), plant("cutter"), FontColour(silver),colour(40,40,40){ | |||
rslider bounds( 10, 25, 70, 70), colour("Tan"), tracker("Tan"), fontcolour("silver"), text("Sub-div."), channel("subdiv"), range(1, 512, 8, 1, 1) | |||
rslider bounds( 80, 25, 70, 70), colour("Tan"), tracker("Tan"), fontcolour("silver"), text("Bar Length"), channel("barlen"), range(1, 16, 2, 1, 1) | |||
rslider bounds(150, 25, 70, 70), colour("Tan"), tracker("Tan"), fontcolour("silver"), text("Phrase"), channel("phrase"), range(1, 512, 8, 1, 1) | |||
rslider bounds(220, 25, 70, 70), colour("Tan"), tracker("Tan"), fontcolour("silver"), text("Repeats"), channel("repeats"), range(1, 32, 2, 1, 1) | |||
rslider bounds(290, 25, 70, 70), colour("Tan"), tracker("Tan"), fontcolour("silver"), text("Stut. Speed"), channel("stutspd"), range(1, 32, 4, 1, 1) | |||
rslider bounds(360, 25, 70, 70), colour("Tan"), tracker("Tan"), fontcolour("silver"), text("Stut. Chance"), channel("stutchnc"), range(0, 1.00, 0.5) | |||
hslider bounds( 5, 95,425, 40), colour("Tan"), tracker("Tan"), fontcolour("silver"), textBox(1) channel("BPM"), range(10, 500, 110,1,1) | |||
label bounds(198,127, 25, 11), text("BPM"), FontColour("silver") | |||
} | |||
groupbox bounds( 0,145,440,100), text("FILTER"), plant("filter"), FontColour(silver),colour(40,40,40){ | |||
rslider bounds( 10, 25, 70, 70), colour(200,100,50,255), tracker(200,100,50,255), fontcolour("silver"), text("Mix"), channel("FltMix"), range(0, 1.00, 0.6) | |||
rslider bounds( 80, 25, 70, 70), colour(200,100,50,255), tracker(200,100,50,255), fontcolour("silver"), text("Division"), channel("fltdiv"), range(1, 16, 1,1,1) | |||
rslider bounds(150, 25, 70, 70), colour(200,100,50,255), tracker(200,100,50,255), fontcolour("silver"), text("Bandwidth"), channel("bw"), range(0.1, 10, 1, 0.5, 0.001) | |||
hslider bounds(220, 25,140, 35), colour(200,100,50,255), tracker(200,100,50,255), fontcolour("silver"), channel("cfmin"), range(50, 10000, 50 ,0.5,0.1) | |||
hslider bounds(220, 50,140, 35), colour(200,100,50,255), tracker(200,100,50,255), fontcolour("silver"), channel("cfmax"), range(50, 10000, 10000,0.5,0.1) | |||
label bounds(254, 77, 80, 12), text("Cutoff Freq."), FontColour("white") | |||
rslider bounds(360, 25, 70, 70), colour(200,100,50,255), tracker(200,100,50,255), fontcolour("silver"), text("Int./S&H"), channel("i_h"), range(0, 1, 0) | |||
} | |||
groupbox bounds( 0,245,220,100), text("WAVE GUIDE"), plant("waveguide"), FontColour(silver),colour(40,40,40){ | |||
rslider bounds( 10, 25, 70, 70), colour(150,150,50,255), tracker(150,150,50,255), fontcolour("silver"), text("Chance"), channel("WguideChnc"), range(0, 1.00, 0.2) | |||
hslider bounds( 80, 25,140, 35), colour(150,150,50,255), tracker(150,150,50,255), fontcolour("silver"), channel("wguidemin"), range(22, 100, 50,1,1) | |||
hslider bounds( 80, 50,140, 35), colour(150,150,50,255), tracker(150,150,50,255), fontcolour("silver"), channel("wguidemax"), range(22, 100, 70,1,1) | |||
label bounds(108, 77, 85, 12), text("Pitch Range"), FontColour("white") | |||
} | |||
groupbox bounds(220,245,220,100), text("SQUARE MOD."), plant("sqmod"), FontColour(silver),colour(40,40,40){ | |||
rslider bounds( 10, 25, 70, 70), colour(200,150,200,255), tracker(200,150,200,255), fontcolour("silver"), text("Chance"), channel("SqModChnc"), range(0, 1.00, 0.2) | |||
hslider bounds( 80, 25,140, 35), colour(200,150,200,255), tracker(200,150,200,255), fontcolour("silver"), channel("sqmodmin"), range(1, 14.0, 6) | |||
hslider bounds( 80, 50,140, 35), colour(200,150,200,255), tracker(200,150,200,255), fontcolour("silver"), channel("sqmodmax"), range(1, 14.0, 12) | |||
label bounds(108, 77, 85, 12), text("Freq.Range"), FontColour("white") | |||
} | |||
groupbox bounds(0,345,220,100), text("FREQUENCY SHIFT"), plant("fshift"), FontColour(silver),colour(40,40,40){ | |||
rslider bounds( 10, 25, 70, 70), colour(250,110,250,255), tracker(250,110,250,255), fontcolour("silver"), text("Chance"), channel("FshiftChnc"), range(0, 1.00, 0.2) | |||
hslider bounds( 80, 25,140, 35), colour(250,110,250,255), tracker(250,110,250,255), fontcolour("silver"), channel("fshiftmin"), range(-4000, 4000,-1000) | |||
hslider bounds( 80, 50,140, 35), colour(250,110,250,255), tracker(250,110,250,255), fontcolour("silver"), channel("fshiftmax"), range(-4000, 4000, 1000) | |||
label bounds(108, 77, 85, 12), text("Freq.Range"), FontColour("white") | |||
} | |||
groupbox bounds(220,345,220,100), text("OUTPUT"), plant("output"), FontColour(silver),colour(40,40,40){ | |||
rslider bounds( 10, 25, 70, 70), colour("Tan"), tracker("Tan"), fontcolour("silver"), text("Gain"), channel("gain"), range(0, 1, 0.75) | |||
rslider bounds( 80, 25, 70, 70), colour("Tan"), tracker("Tan"), fontcolour("silver"), text("Dry/Wet"), channel("DryWet"), range(0, 1, 0.6) | |||
rslider bounds(150, 25, 70, 70), colour("Tan"), tracker("Tan"), fontcolour("silver"), text("Layers"), channel("layers"), range(1, 20, 1,1,1) | |||
} | |||
label bounds( 5,470, 200, 12), text("Author: Iain McCurdy |2013|"), FontColour("grey") | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-n -d | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 64 | |||
nchnls = 2 | |||
0dbfs=1 | |||
seed 0 | |||
gisine ftgen 0,0,131072,10,1 | |||
opcode BBCutIteration,aa,aaiiiiiiiii | |||
aL,aR,iBPS, isubdiv, ibarlen, iphrase, irepeats, istutspd, istutchnc, icount, ilayers xin | |||
abbcutL bbcutm aL, iBPS, isubdiv, ibarlen, iphrase, irepeats, istutspd, istutchnc | |||
abbcutR bbcutm aR, iBPS, isubdiv, ibarlen, iphrase, irepeats, istutspd, istutchnc | |||
amixL = 0 | |||
amixR = 0 | |||
if icount<ilayers then | |||
amixL,amixR BBCutIteration aL,aR, iBPS, isubdiv, ibarlen, iphrase, irepeats, istutspd, istutchnc, icount+1, ilayers | |||
endif | |||
xout abbcutL+amixL,abbcutR+amixL | |||
endop | |||
opcode FreqShifter,a,aki | |||
ain,kfshift,ifn xin ;READ IN INPUT ARGUMENTS | |||
areal, aimag hilbert ain ;HILBERT OPCODE OUTPUTS TWO PHASE SHIFTED SIGNALS, EACH 90 OUT OF PHASE WITH EACH OTHER | |||
asin oscili 1, kfshift, ifn, 0 | |||
acos oscili 1, kfshift, ifn, 0.25 | |||
;RING MODULATE EACH SIGNAL USING THE QUADRATURE OSCILLATORS AS MODULATORS | |||
amod1 = areal * acos | |||
amod2 = aimag * asin | |||
;UPSHIFTING OUTPUT | |||
aFS = (amod1 - amod2) | |||
xout aFS ;SEND AUDIO BACK TO CALLER INSTRUMENT | |||
endop | |||
instr 1 ; read widgets | |||
gksubdiv chnget "subdiv" | |||
gkbarlen chnget "barlen" | |||
gkphrase chnget "phrase" | |||
gkrepeats chnget "repeats" | |||
gkstutspd chnget "stutspd" | |||
gkstutchnc chnget "stutchnc" | |||
gkBPM chnget "BPM" | |||
gkfltdiv chnget "fltdiv" | |||
gkDryWet chnget "DryWet" | |||
gkFltMix chnget "FltMix" | |||
gkbw chnget "bw" | |||
gkcfmin chnget "cfmin" | |||
gkcfmax chnget "cfmax" | |||
gki_h chnget "i_h" | |||
gklayers chnget "layers" | |||
gkgain chnget "gain" | |||
konoff chnget "onoff" | |||
endin | |||
instr 2 | |||
aL,aR ins | |||
;aL diskin "loop.wav",1,0,1 | |||
;aR = aL | |||
kSwitch changed gkBPM, gkrepeats, gkphrase, gkstutspd, gkstutchnc, gkbarlen, gksubdiv, gkfltdiv, gklayers ;GENERATE A MOMENTARY '1' PULSE IN OUTPUT 'kSwitch' IF ANY OF THE SCANNED INPUT VARIABLES CHANGE. (OUTPUT 'kSwitch' IS NORMALLY ZERO) | |||
if kSwitch=1 then ;IF I-RATE VARIABLE CHANGE TRIGGER IS '1'... | |||
reinit UPDATE ;BEGIN A REINITIALISATION PASS FROM LABEL 'UPDATE' | |||
endif | |||
UPDATE: | |||
kmetro metro i(gkBPM)/60 | |||
;OUTPUT OPCODE INPUT | BPM | SUBDIVISION | BAR_LENGTH | PHRASE_LENGTH | NUM.OF_REPEATS | STUTTER_SPEED | STUTTER_CHANCE | |||
abbcutL,abbcutR BBCutIteration aL,aR, i(gkBPM)/60, i(gksubdiv), i(gkbarlen), i(gkphrase), i(gkrepeats), i(gkstutspd), i(gkstutchnc), 1, i(gklayers) | |||
;FILTER================================================================================================================================================================= | |||
kfreq = (gkfltdiv) ;FREQUENCY WITH WHICH NEW FILTER CUTOFF VALUES ARE GENERATED ;LEFT CHANNE | |||
rireturn ;RETURN FROM REINITIALISATION PASS TO PERFORMANCE TIME PASSES | |||
kcf1h randomh gkcfmin, gkcfmax, kfreq ;SAMPLE AND HOLD RANDOM FREQUENCY VALUES ;LEFT CHANNEL | |||
kcf1i lineto kcf1h, 1/kfreq ;INTERPOLATE VALUES ;LEFT CHANNEL | |||
kcf1 ntrpol kcf1i, kcf1h, gki_h ;CROSSFADE BETWEEN INTERPOLATING AND SAMPLE AND HOLD TYPE RANDOM VALUES ;LEFT CHANNEL | |||
abbFltL resonz abbcutL, kcf1, kcf1*gkbw, 2 ;BAND-PASS FILTER ;LEFT CHANNEL | |||
abbMixL ntrpol abbcutL, abbFltL, gkFltMix ;CROSSFADE BETWEEN UNFILTERED AND FILTER AUDIO SIGNAL ;LEFT CHANNEL | |||
kcf2h randomh gkcfmin, gkcfmax, kfreq ;SAMPLE AND HOLD RANDOM FREQUENCY VALUES ;RIGHT CHANNEL | |||
kcf2i lineto kcf2h, 1/kfreq ;INTERPOLATE VALUES ;RIGHT CHANNEL | |||
kcf2 ntrpol kcf2i, kcf2h, gki_h ;CROSSFADE BETWEEN INTERPOLATING AND SAMPLE AND HOLD TYPE RANDOM VALUES ;RIGHT CHANNEL | |||
abbFltR resonz abbcutR, kcf2, kcf2*gkbw, 2 ;BAND-PASS FILTER ;RIGHT CHANNEL | |||
abbMixR ntrpol abbcutR, abbFltR, gkFltMix ;CROSSFADE BETWEEN UNFILTERED AND FILTER AUDIO SIGNAL ;RIGHT CHANNEL | |||
;======================================================================================================================================================================= | |||
;WGUIDE1================================================================================================================================================================ | |||
kchance chnget "WguideChnc" | |||
kdice trandom kmetro,0,1 | |||
if kdice<kchance then | |||
kwguidemin chnget "wguidemin" | |||
kwguidemax chnget "wguidemax" | |||
knum randomh kwguidemin,kwguidemax,gkBPM/60 | |||
afrq interp cpsmidinn(int(knum)) | |||
kfb randomi 0.8,0.99,gkBPM/(60*4) | |||
kcf randomi 800,4000,gkBPM/60 | |||
abbMixL wguide1 abbMixL*0.7,afrq,kcf,kfb | |||
abbMixR wguide1 abbMixR*0.7,afrq,kcf,kfb | |||
endif | |||
;======================================================================================================================================================================= | |||
;SQUARE MOD============================================================================================================================================================== | |||
kchance chnget "SqModChnc" | |||
ksqmodmin chnget "sqmodmin" | |||
ksqmodmax chnget "sqmodmax" | |||
kDiceRoll trandom kmetro,0,1 | |||
if kDiceRoll<kchance then | |||
kratei randomi ksqmodmin,ksqmodmax,gkBPM/60 | |||
krateh randomh ksqmodmin,ksqmodmax,gkBPM/60 | |||
kcross randomi 0,1,gkBPM | |||
kcross = kcross>0.5?1:0 | |||
krate ntrpol kratei,krateh,kcross | |||
amod lfo 1,cpsoct(krate),2 | |||
abbMixL = abbMixL*amod | |||
abbMixR = abbMixR*amod | |||
endif | |||
;======================================================================================================================================================================= | |||
;FSHIFT================================================================================================================================================================= | |||
kchance chnget "FshiftChnc" | |||
kdice trandom kmetro,0,1 | |||
if kdice<kchance then | |||
kfshiftmin chnget "fshiftmin" | |||
kfshiftmax chnget "fshiftmax" | |||
; kfsfrq randomh kfshiftmin,kfshiftmax,gkBPM/60 | |||
kfsfrqi randomi kfshiftmin,kfshiftmax,gkBPM/60 | |||
kfsfrqh randomh kfshiftmin,kfshiftmax,gkBPM/60 | |||
kcross randomi 0,1,gkBPM/2 | |||
kcross = kcross>0.5?1:0 | |||
kfsfrq ntrpol kfsfrqi,kfsfrqh,kcross | |||
abbMixL FreqShifter abbMixL,kfsfrq,gisine | |||
abbMixR FreqShifter abbMixR,kfsfrq,gisine | |||
endif | |||
;======================================================================================================================================================================= | |||
amixL sum aL*(1-gkDryWet), abbMixL*gkDryWet ;SUM AND MIX DRY SIGNAL AND BBCUT SIGNAL (LEFT CHANNEL) | |||
amixR sum aR*(1-gkDryWet), abbMixR*gkDryWet ;SUM AND MIX DRY SIGNAL AND BBCUT SIGNAL (RIGHT CHANNEL) | |||
outs amixL*gkgain, amixR*gkgain ;SEND AUDIO TO OUTPUTS | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i1 0 36000 | |||
i2 0 36000 | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,95 @@ | |||
<Cabbage> | |||
form caption("Buzz synthesizer") size(562, 340), colour("black"),pluginID("buz1") | |||
rslider bounds(15, 10, 100, 100) channel("detune"), range(-1,1,0), caption("Detune"), colour("SteelBlue "), midictrl(1, 1) | |||
rslider bounds(120, 10, 100, 100) channel("semi"), range(-24,12,-24), caption("Coarse"), colour("SteelBlue ") | |||
rslider bounds(225, 10, 100, 100) channel("cutoff"), range(60,2000,400), caption("Cutoff"), colour("SteelBlue ") | |||
rslider bounds(330, 10, 100, 100) channel("harm"), range(1,20,1), caption("Harmonic"), colour("SteelBlue ") | |||
rslider bounds(435, 10, 100, 100) channel("spread"), range(0, 1, .5), caption("Stereo image"), colour("SteelBlue ") | |||
groupbox bounds(15, 120, 240, 100), text("ADSR amplitude"), plant("ADSR"){ | |||
rslider bounds(.0, .3, .6, .6), text("A"), colour("orange"), channel("att"), range(0.01,3, .5) | |||
rslider bounds(.25, .3, .6, .6), text("D"), colour("orange"), channel("dec"), range(0,1, .5) | |||
rslider bounds(.5, .3, .6, .6), text("S"), colour("orange"), channel("sus"), range(0,1,.8) | |||
rslider bounds(.75, .3, .6, .6), text("R"), colour("orange"), channel("rel"), range(0.01,3, .2) | |||
} | |||
groupbox bounds(270, 120, 130, 100), text("LFO"), plant("lfo"){ | |||
rslider bounds(.04, .3, .6, .6), text("Lfo Amp"), colour("SteelBlue "), channel("lfoamp"), range(0,100, 0) | |||
rslider bounds(.5, .3, .6, .6), text("Lfo Rate"), colour("SteelBlue "), channel("lforate"), range(0,20, 0) | |||
} | |||
groupbox bounds(410, 120, 130, 100), text("LFO filter"), plant("lfofilter"){ | |||
rslider bounds(.04, .3, .6, .6), text("Lfo Amp"), colour("SteelBlue "), channel("lfoamp2"), range(0,1000, 0) | |||
rslider bounds(.5, .3, .6, .6), text("Lfo Rate"), colour("SteelBlue "), channel("lforate2"), range(0,10, 0) | |||
} | |||
keyboard pos(10,240), size(540,60) | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n -+rtmidi=null -M0 -b1024 -m0d | |||
</CsOptions> | |||
<CsInstruments> | |||
; Initialize the global variables. | |||
sr = 44100 | |||
ksmps = 32 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
;Author: Giorgio Zucco (2012) | |||
instr 1 | |||
;channel | |||
kdetune chnget "detune" | |||
ksemi chnget "semi" | |||
kcut chnget "cutoff" | |||
kharm chnget "harm" | |||
kspread chnget "spread" | |||
iatt chnget "att" | |||
idec chnget "dec" | |||
isus chnget "sus" | |||
irel chnget "rel" | |||
klfoamp chnget "lfoamp" | |||
klforate chnget "lforate" | |||
klfoamp2 chnget "lfoamp2" ;lfo x filter | |||
klforate2 chnget "lforate2" | |||
;midi | |||
imidinn notnum | |||
iamp ampmidi 1 | |||
kbend pchbend 0,2 ;pitch bend | |||
kfreq1 = cpsmidinn(imidinn+kbend+int(ksemi)) | |||
kfreq2 = cpsmidinn(imidinn+kbend+int(ksemi)+kdetune) | |||
;lfo | |||
klfo poscil klfoamp,klforate,1 | |||
asig1 buzz iamp,(kfreq1+klfo),int(kharm),1 | |||
asig2 buzz iamp,(kfreq2+klfo),int(kharm),1 | |||
;filter | |||
klfofilter lfo klfoamp2,klforate2,3 | |||
aout1 fofilter asig1,kcut+klfofilter,0.007,0.04 | |||
aout2 fofilter asig2,kcut+klfofilter,0.007,0.04 | |||
aout1x balance aout1,asig1 | |||
aout2x balance aout2,asig2 | |||
;master | |||
aL clip aout1x,0,0dbfs | |||
aR clip aout2x,0,0dbfs | |||
aoutL = ((aL * kspread) + (aR * (1 - kspread))) *.5 | |||
aoutR = ((aL * (1-kspread)) + (aR * kspread)) *.5 | |||
kadsr mxadsr iatt,idec,isus,irel | |||
outs aoutL*kadsr,aoutR*kadsr | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
f1 0 16384 10 1 | |||
f2 0 1024 10 1 | |||
i1 0 36000 | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,374 @@ | |||
Choir.csd | |||
Note velocity is interpretted as attack time (along with a slight interpretation as amplitude) | |||
If N.Voices (number of voices) is set to '1' chorussing effect is bypassed, instead a fundemental modulation mechanism is enabled | |||
Vibrato/tremolo depth also controllable using midi controller 1 (mod. wheel), midi channel 1 | |||
Vowel is controllable using midi controller 2, midi channel 1 | |||
N.Voices value is not strictly speaking accurate: 1 = 1 voice | |||
2 = 2 voices | |||
3 = 4 voices | |||
4 = 6 voices | |||
5 = 8 voices, this is on account of how the mechanism implements a stereo effect | |||
<Cabbage> | |||
form caption("Choir") size(770, 335), pluginID("choi") | |||
; main container | |||
image bounds( 0, 0,770, 360), colour(255,100, 0, 40), shape("rounded"), outline("white"), line(3) | |||
; horizontal stripes | |||
image bounds( 0, 40,770, 75), colour(100,100, 0, 60), shape("sharp") | |||
image bounds( 0,130,770, 35), colour( 0, 0,255, 60), shape("sharp") | |||
; vertical stripes | |||
image bounds(310, 0, 30, 360), colour( 5,255, 0, 60), shape("sharp") | |||
image bounds(370, 0, 80, 360), colour(255, 0,200, 60), shape("sharp") | |||
image bounds(490, 0, 60, 360), colour( 0,255,200, 60), shape("sharp") | |||
image bounds(560, 0, 40, 360), colour(100, 55,200, 60), shape("sharp") | |||
image bounds(620, 0, 20, 360), colour(255, 55, 0, 60), shape("sharp") | |||
image bounds(660, 0, 90, 360), colour( 5,255,100, 60), shape("sharp") | |||
xypad bounds(10, 10, 250, 210), channel("vowel", "oct"), text("X = Vowel 'AEIOU' : Y = Octave Division"), rangex(0, 1, 0), rangey(0, 4, 0) | |||
combobox bounds(265, 10, 110, 25), channel("voice"), value(5), text("Bass", "Tenor", "Countertenor", "Alto", "Soprano") | |||
button bounds(265, 40, 110, 25), text("polyphonic","monophonic"), channel("monopoly"), value(1), fontcolour("lime") | |||
rslider bounds(385, 10, 60, 60), text("Leg.Time"), channel("LegTim"), range(0.005, 0.3, 0.025, 0.5, 0.005),colour("green"), trackercolour("white") | |||
rslider bounds(445, 10, 60, 60), text("Vowel"), channel("vowel"), range(0, 1.00, 0), colour("green"), trackercolour("white"),midCtrl(1, 2) | |||
rslider bounds(505, 10, 60, 60), text("Level"), channel("lev"), range(0, 1.00, 0.6), colour("green"), trackercolour("white") | |||
rslider bounds(265, 80, 60, 60), text("Vib.Dep."), channel("vibdep"), range(0, 2.00, 0.35), colour("tomato"), trackercolour("white"),midCtrl(1, 1) | |||
rslider bounds(325, 80, 60, 60), text("Trem.Dep."), channel("trmdep"), range(0, 1.00, 0.2), colour("tomato"), trackercolour("white"),midCtrl(1, 1) | |||
rslider bounds(385, 80, 60, 60), text("Mod.Rate"), channel("modrte"), range(0.10,20, 5, 0.5), colour("tomato"), trackercolour("white") | |||
rslider bounds(445, 80, 60, 60), text("Mod.Delay"), channel("moddel"), range(0, 2.00, 0.3, 0.5),colour("tomato"), trackercolour("white") | |||
rslider bounds(505, 80, 60, 60), text("Mod.Rise"), channel("modris"), range(0, 4.00, 2, 0.5), colour("tomato"), trackercolour("white") | |||
rslider bounds(265,150, 60, 60), text("N.Voices"), channel("nvoices"), range(1, 50, 6, 1, 1), colour("yellow"), trackercolour("white") | |||
rslider bounds(325,150, 60, 60), text("Dtn.Dep."), channel("DtnDep"), range(0, 4.00, 1,0.5),colour("yellow"), trackercolour("white") | |||
rslider bounds(385,150, 60, 60), text("Dtn.Rate"), channel("DtnRte"), range(0.01,40, 0.2,0.25),colour("yellow"), trackercolour("white") | |||
rslider bounds(445,150, 60, 60), text("Rvb.Mix"), channel("RvbMix"), range(0, 1.00, 0.15), colour("steelblue"),trackercolour("white") | |||
rslider bounds(505,150, 60, 60), text("Rvb.Size"), channel("RvbSize"), range(0.5, 1.00, 0.82,2),colour("steelblue"),trackercolour("white") | |||
checkbox bounds(570, 10,190, 20), text("Filter On/Off") channel("FiltOnOff"), colour("lime") value(0) | |||
xypad bounds(570, 35, 190, 185), channel("cf", "bw"), text("x:c.off/y:b.width"), rangex(5, 13, 8), rangey(0.1, 5, 0.3) | |||
keyboard pos(10, 225), size(760, 80) | |||
image bounds(10, 309, 250, 22), colour(75, 85, 90, 100), plant("credit"){ | |||
label bounds(0.03, 0.15, .99, .7), text("Author: Iain McCurdy |2012|"), colour("white") | |||
} | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-dm0 -n -+rtmidi=null -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 64 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
massign 0,2 | |||
seed 0 | |||
;Author: Iain McCurdy (2012) | |||
gisine ftgen 0, 0, 4096, 10, 1 ;SINE WAVE | |||
giexp ftgen 0, 0, 1024, 19, 0.5, 0.5, 270, 0.5 ;EXPONENTIAL CURVE USED TO DEFINE THE ENVELOPE SHAPE OF FOF PULSES | |||
gasendL,gasendR init 0 | |||
;FUNCTION TABLES STORING DATA FOR VARIOUS VOICE FORMANTS | |||
;THE FIRST VALUE OF EACH TABLE DEFINES THE NUMBER OF DATA ELEMENTS IN THE TABLE | |||
;THIS IS NEEDED BECAUSE TABLES SIZES MUST BE POWERS OF 2 TO FACILITATE INTERPOLATED TABLE READING (tablei) | |||
;BASS | |||
giBF1 ftgen 0, 0, 8, -2, 4, 600, 400, 250, 350 ;FREQ | |||
giBF2 ftgen 0, 0, 8, -2, 4, 1040, 1620, 1750, 600 ;FREQ | |||
giBF3 ftgen 0, 0, 8, -2, 4, 2250, 2400, 2600, 2400 ;FREQ | |||
giBF4 ftgen 0, 0, 8, -2, 4, 2450, 2800, 3050, 2675 ;FREQ | |||
giBF5 ftgen 0, 0, 8, -2, 4, 2750, 3100, 3340, 2950 ;FREQ | |||
giBDb1 ftgen 0, 0, 8, -2, 4, 0, 0, 0, 0 ;dB | |||
giBDb2 ftgen 0, 0, 8, -2, 4, -7, -12, -30, -20 ;dB | |||
giBDb3 ftgen 0, 0, 8, -2, 4, -9, -9, -16, -32 ;dB | |||
giBDb4 ftgen 0, 0, 8, -2, 4, -9, -12, -22, -28 ;dB | |||
giBDb5 ftgen 0, 0, 8, -2, 4, -20, -18, -28, -36 ;dB | |||
giBBW1 ftgen 0, 0, 8, -2, 4, 60, 40, 60, 40 ;BAND WIDTH | |||
giBBW2 ftgen 0, 0, 8, -2, 4, 70, 80, 90, 80 ;BAND WIDTH | |||
giBBW3 ftgen 0, 0, 8, -2, 4, 110, 100, 100, 100 ;BAND WIDTH | |||
giBBW4 ftgen 0, 0, 8, -2, 4, 120, 120, 120, 120 ;BAND WIDTH | |||
giBBW5 ftgen 0, 0, 8, -2, 4, 130, 120, 120, 120 ;BAND WIDTH | |||
;TENOR | |||
giTF1 ftgen 0, 0, 8, -2, 5, 650, 400, 290, 400, 350 ;FREQ | |||
giTF2 ftgen 0, 0, 8, -2, 5, 1080, 1700, 1870, 800, 600 ;FREQ | |||
giTF3 ftgen 0, 0, 8, -2, 5, 2650, 2600, 2800, 2600, 2700 ;FREQ | |||
giTF4 ftgen 0, 0, 8, -2, 5, 2900, 3200, 3250, 2800, 2900 ;FREQ | |||
giTF5 ftgen 0, 0, 8, -2, 5, 3250, 3580, 3540, 3000, 3300 ;FREQ | |||
giTDb1 ftgen 0, 0, 8, -2, 5, 0, 0, 0, 0, 0 ;dB | |||
giTDb2 ftgen 0, 0, 8, -2, 5, -6, -14, -15, -10, -20 ;dB | |||
giTDb3 ftgen 0, 0, 8, -2, 5, -7, -12, -18, -12, -17 ;dB | |||
giTDb4 ftgen 0, 0, 8, -2, 5, -8, -14, -20, -12, -14 ;dB | |||
giTDb5 ftgen 0, 0, 8, -2, 5, -22, -20, -30, -26, -26 ;dB | |||
giTBW1 ftgen 0, 0, 8, -2, 5, 80, 70, 40, 40, 40 ;BAND WIDTH | |||
giTBW2 ftgen 0, 0, 8, -2, 5, 90, 80, 90, 80, 60 ;BAND WIDTH | |||
giTBW3 ftgen 0, 0, 8, -2, 5, 120, 100, 100, 100, 100 ;BAND WIDTH | |||
giTBW4 ftgen 0, 0, 8, -2, 5, 130, 120, 120, 120, 120 ;BAND WIDTH | |||
giTBW5 ftgen 0, 0, 8, -2, 5, 140, 120, 120, 120, 120 ;BAND WIDTH | |||
;COUNTER TENOR | |||
giCTF1 ftgen 0, 0, 8, -2, 5, 660, 440, 270, 430, 370 ;FREQ | |||
giCTF2 ftgen 0, 0, 8, -2, 5, 1120, 1800, 1850, 820, 630 ;FREQ | |||
giCTF3 ftgen 0, 0, 8, -2, 5, 2750, 2700, 2900, 2700, 2750 ;FREQ | |||
giCTF4 ftgen 0, 0, 8, -2, 5, 3000, 3000, 3350, 3000, 3000 ;FREQ | |||
giCTF5 ftgen 0, 0, 8, -2, 5, 3350, 3300, 3590, 3300, 3400 ;FREQ | |||
giTBDb1 ftgen 0, 0, 8, -2, 5, 0, 0, 0, 0, 0 ;dB | |||
giTBDb2 ftgen 0, 0, 8, -2, 5, -6, -14, -24, -10, -20 ;dB | |||
giTBDb3 ftgen 0, 0, 8, -2, 5, -23, -18, -24, -26, -23 ;dB | |||
giTBDb4 ftgen 0, 0, 8, -2, 5, -24, -20, -36, -22, -30 ;dB | |||
giTBDb5 ftgen 0, 0, 8, -2, 5, -38, -20, -36, -34, -30 ;dB | |||
giTBW1 ftgen 0, 0, 8, -2, 5, 80, 70, 40, 40, 40 ;BAND WIDTH | |||
giTBW2 ftgen 0, 0, 8, -2, 5, 90, 80, 90, 80, 60 ;BAND WIDTH | |||
giTBW3 ftgen 0, 0, 8, -2, 5, 120, 100, 100, 100, 100 ;BAND WIDTH | |||
giTBW4 ftgen 0, 0, 8, -2, 5, 130, 120, 120, 120, 120 ;BAND WIDTH | |||
giTBW5 ftgen 0, 0, 8, -2, 5, 140, 120, 120, 120, 120 ;BAND WIDTH | |||
;ALTO | |||
giAF1 ftgen 0, 0, 8, -2, 5, 800, 400, 350, 450, 325 ;FREQ | |||
giAF2 ftgen 0, 0, 8, -2, 5, 1150, 1600, 1700, 800, 700 ;FREQ | |||
giAF3 ftgen 0, 0, 8, -2, 5, 2800, 2700, 2700, 2830, 2530 ;FREQ | |||
giAF4 ftgen 0, 0, 8, -2, 5, 3500, 3300, 3700, 3500, 2500 ;FREQ | |||
giAF5 ftgen 0, 0, 8, -2, 5, 4950, 4950, 4950, 4950, 4950 ;FREQ | |||
giADb1 ftgen 0, 0, 8, -2, 5, 0, 0, 0, 0, 0 ;dB | |||
giADb2 ftgen 0, 0, 8, -2, 5, -4, -24, -20, -9, -12 ;dB | |||
giADb3 ftgen 0, 0, 8, -2, 5, -20, -30, -30, -16, -30 ;dB | |||
giADb4 ftgen 0, 0, 8, -2, 5, -36, -35, -36, -28, -40 ;dB | |||
giADb5 ftgen 0, 0, 8, -2, 5, -60, -60, -60, -55, -64 ;dB | |||
giABW1 ftgen 0, 0, 8, -2, 5, 50, 60, 50, 70, 50 ;BAND WIDTH | |||
giABW2 ftgen 0, 0, 8, -2, 5, 60, 80, 100, 80, 60 ;BAND WIDTH | |||
giABW3 ftgen 0, 0, 8, -2, 5, 170, 120, 120, 100, 170 ;BAND WIDTH | |||
giABW4 ftgen 0, 0, 8, -2, 5, 180, 150, 150, 130, 180 ;BAND WIDTH | |||
giABW5 ftgen 0, 0, 8, -2, 5, 200, 200, 200, 135, 200 ;BAND WIDTH | |||
;SOPRANO | |||
giSF1 ftgen 0, 0, 8, -2, 5, 800, 350, 270, 450, 325 ;FREQ | |||
giSF2 ftgen 0, 0, 8, -2, 5, 1150, 2000, 2140, 800, 700 ;FREQ | |||
giSF3 ftgen 0, 0, 8, -2, 5, 2900, 2800, 2950, 2830, 2700 ;FREQ | |||
giSF4 ftgen 0, 0, 8, -2, 5, 3900, 3600, 3900, 3800, 3800 ;FREQ | |||
giSF5 ftgen 0, 0, 8, -2, 5, 4950, 4950, 4950, 4950, 4950 ;FREQ | |||
giSDb1 ftgen 0, 0, 8, -2, 5, 0, 0, 0, 0, 0 ;dB | |||
giSDb2 ftgen 0, 0, 8, -2, 5, -6, -20, -12, -11, -16 ;dB | |||
giSDb3 ftgen 0, 0, 8, -2, 5, -32, -15, -26, -22, -35 ;dB | |||
giSDb4 ftgen 0, 0, 8, -2, 5, -20, -40, -26, -22, -40 ;dB | |||
giSDb5 ftgen 0, 0, 8, -2, 5, -50, -56, -44, -50, -60 ;dB | |||
giSBW1 ftgen 0, 0, 8, -2, 5, 80, 60, 60, 70, 50 ;BAND WIDTH | |||
giSBW2 ftgen 0, 0, 8, -2, 5, 90, 90, 90, 80, 60 ;BAND WIDTH | |||
giSBW3 ftgen 0, 0, 8, -2, 5, 120, 100, 100, 100, 170 ;BAND WIDTH | |||
giSBW4 ftgen 0, 0, 8, -2, 5, 130, 150, 120, 130, 180 ;BAND WIDTH | |||
giSBW5 ftgen 0, 0, 8, -2, 5, 140, 200, 120, 135, 200 ;BAND WIDTH | |||
gkactive init 0 ; Will contain number of active instances of instr 3 when legato mode is chosen. NB. notes in release stage will not be regarded as active. | |||
opcode fofx5, a, kkki | |||
kfund,kvowel,koct,ivoice xin | |||
ivoice limit ivoice,0,4 ;protect against out of range values for ivoice | |||
;create a macro for each formant to reduce code repetition | |||
#define FORMANT(N) | |||
# | |||
invals table 0, giBF1+(ivoice*15)+$N-1 ;number of data elements in each table | |||
invals = invals-1 ; | |||
k$Nform tablei 1+(kvowel*invals), giBF1+(ivoice*15)+$N-1 ;read formant frequency from table | |||
kRandForm$N randomi -0.025,0.025,8,1 | |||
k$Nform = k$Nform*octave(kRandForm$N) | |||
k$Ndb tablei 1+(kvowel*invals), giBDb1+(ivoice*15)+$N-1 ;read decibel value from table | |||
k$Namp = ampdb(k$Ndb) ;convert to an amplitude value | |||
k$Nband tablei 1+(kvowel*invals), giBBW1+(ivoice*15)+$N-1 ;read bandwidth from table | |||
# | |||
;EXECUTE MACRO MULTIPLE TIMES | |||
$FORMANT(1) | |||
$FORMANT(2) | |||
$FORMANT(3) | |||
$FORMANT(4) | |||
$FORMANT(5) | |||
;====================================================================================================================================================================== | |||
iris = 0.003 ;grain pulse rise time | |||
idur = 0.02 ;grain pulse duration | |||
idec = 0.007 ;grain pulse decay | |||
iolaps = 14850 ;maximum number of overlaps (overestimate) | |||
ifna = gisine ;function table for audio contained within fof grains | |||
ifnb = giexp ;function table that defines the attack and decay shapes of each fof grain | |||
itotdur = 3600 ;total maximum duration of a note (overestimate) | |||
;FOF=================================================================================================================================================================== | |||
iRandRange = .1 | |||
#define RandFact | |||
# | |||
kRndFact rspline -iRandRange,iRandRange,1,10 | |||
kRndFact = semitone(kRndFact) | |||
# | |||
$RandFact | |||
a1 fof k1amp, kfund*kRndFact, k1form, koct, k1band, iris, idur, idec, iolaps, ifna, ifnb, itotdur | |||
a2 fof k2amp, kfund*kRndFact, k2form, koct, k2band, iris, idur, idec, iolaps, ifna, ifnb, itotdur | |||
a3 fof k3amp, kfund*kRndFact, k3form, koct, k3band, iris, idur, idec, iolaps, ifna, ifnb, itotdur | |||
a4 fof k4amp, kfund*kRndFact, k4form, koct, k4band, iris, idur, idec, iolaps, ifna, ifnb, itotdur | |||
a5 fof k5amp, kfund*kRndFact, k5form, koct, k5band, iris, idur, idec, iolaps, ifna, ifnb, itotdur | |||
;====================================================================================================================================================================== | |||
;OUT=================================================================================================================================================================== | |||
asig = (a1+a2+a3+a4+a5)/5 ;mix the five fof streams and reduce amplitude five-fold | |||
xout asig ;send audio back to caller instrument | |||
endop | |||
opcode ChoVoice,a,kkiii | |||
kDtnDep,kDtnRte,ifn,icount,invoices xin ;read in input args. | |||
ktime randomi 0.01,0.1*kDtnDep,kDtnRte,1 ;create delay time value (linearly interpolating random function will implement pitch/time modulations) | |||
kptime linseg 0,0.001,1 ;portamento time (ramps up quickly from zero to a held value) | |||
ktime portk ktime,kptime ;apply portamento smoothing to delay time changes (prevents angular pitch changes) | |||
atime interp ktime ;create an interpolated a-rate version of delay time function (this will prevent qualtisation artifacts) | |||
atap deltapi atime+0.0015 ;tap the delay buffer (nb. buffer opened and closed in caller instrument, UDO exists within the buffer) | |||
iDel random ksmps/sr,0.2 ;random fixed delay time. By also apply a fixed delay time we prevent excessive amplitude at ote onsets when many chorus voices (N.Voices) are used | |||
atap delay atap,iDel ;apply fixed delay | |||
amix init 0 ;initialise amix variable (needed incase N.Voices is 1 in which case recirsion would not be used) | |||
if icount<invoices then ;if stack of chorus voices is not yet completed... | |||
amix ChoVoice kDtnDep,kDtnRte,ifn,icount+1,invoices ;.. call the UDO again. Increment count number. | |||
endif | |||
xout atap+amix ;send chorus voice created in this interation (and all subsequent voices) back to caller instrument | |||
endop | |||
instr 1 ;instrument that continuously scans widgets | |||
gkmonopoly chnget "monopoly" ;read widgets... | |||
gkDtnDep chnget "DtnDep" | |||
gkDtnRte chnget "DtnRte" | |||
gkvibdep chnget "vibdep" | |||
gkmodrte chnget "modrte" | |||
gktrmdep chnget "trmdep" | |||
gklevel chnget "lev" | |||
gkvowel chnget "vowel" | |||
gkoct chnget "oct" | |||
gkLegTim chnget "LegTim" | |||
gkRvbMix chnget "RvbMix" | |||
gkRvbSize chnget "RvbSize" | |||
kporttime linseg 0,0.001,0.1 ;portamento time (ramps up quickly from zero to a held value) | |||
gkvowel portk gkvowel,kporttime ;apply portamento smoothing | |||
gkoct portk gkoct,kporttime | |||
gkFiltOnOff chnget "FiltOnOff" | |||
gkcf chnget "cf" | |||
gkbw chnget "bw" | |||
gkcf portk cpsoct(gkcf),kporttime ;apply portamento smoothing | |||
gkbw portk gkbw*gkcf,kporttime ;apply portamento smoothing | |||
endin | |||
instr 2 ;triggered via MIDI | |||
gkNoteTrig init 1 ;at the beginning of a new note set note trigger flag to '1' | |||
icps cpsmidi ;read in midi note pitch in cycles per second | |||
givel veloc 0,1 ;read in midi note velocity | |||
gkcps = icps ;update a global krate variable for note pitch | |||
if i(gkmonopoly)==0 then ;if we are *not* in legato mode... | |||
inum notnum ; read midi note number (0 - 127) | |||
event_i "i",p1+1+(inum*0.001),0,-1,icps ; call soud producing instr | |||
krel release ; release flag (1 when note is released, 0 otherwise) | |||
if krel==1 then ; when note is released... | |||
turnoff2 p1+1+(inum*0.001),4,1 ; turn off the called instrument | |||
endif ; end of conditional | |||
else ;otherwise... (i.e. legato mode) | |||
iactive = i(gkactive) ;number of active notes of instr 3 (note in release are disregarded) | |||
if iactive==0 then ;...if no notes are active | |||
event_i "i",p1+1,0,-1 ;...start a new held note | |||
endif | |||
endif | |||
endin | |||
instr 3 | |||
ivoice chnget "voice" ;read widgets... | |||
imoddel chnget "moddel" ; | |||
imodris chnget "modris" ; | |||
invoices chnget "nvoices" ; | |||
kporttime linseg 0,0.001,1 ;portamento time function rises quickly from zero to a held value | |||
kporttime = kporttime*gkLegTim ;scale portamento time function with value from GUI knob widget | |||
if i(gkmonopoly)==1 then ;if we are in legato mode... | |||
krel release ;sense when note has been released | |||
gkactive = 1-krel ;if note is in release, gkactive=0, otherwise =1 | |||
kcps portk gkcps,kporttime ;apply portamento smooth to changes in note pitch (this will only have an effect in 'legato' mode) | |||
kactive active p1-1 ;...check number of active midi notes (previous instrument) | |||
if kactive==0 then ;if no midi notes are active... | |||
turnoff ;... turn this instrument off | |||
endif | |||
else ;otherwise... (polyphonic / non-legato mode) | |||
kcps = p4 ;pitch equal to the original note pitch | |||
endif | |||
if gkNoteTrig==1&&gkmonopoly==1 then ;if a new note is beginning and if we are in monophonic mode... | |||
reinit RESTART_ENVELOPE ;reinitialise the modulations build up | |||
endif | |||
RESTART_ENVELOPE: | |||
;VIBRATO (PITCH MODULATION) | |||
kmodenv linseg 0,0.001+imoddel,0,0.001+imodris,1 ;modulation depth envelope - modulation can be delayed by the first envelope segement and the rise time is defined by the duration of the second segment | |||
kDepVar randomi 0.5,1,4 ;random variance of the depth of modulation | |||
kmodenv portk kmodenv*kDepVar,kporttime ;smooth changes in modulation envelope to prevent discontinuities whnever the envelope is restarted | |||
rireturn | |||
kRteVar randi 0.1,4 ;random variation of the rate of modulation | |||
kvib lfo gkvibdep*kmodenv,gkmodrte*octave(kRteVar),0 ;vibrato function | |||
;TREMOLO (AMPLITUDE MODULATION) | |||
ktrem lfo kmodenv*(gktrmdep/2),gkmodrte*octave(kRteVar),0 ;TREMOLO LFO FUNCTION | |||
ktrem = (ktrem+0.5) + (gktrmdep * 0.5) ;OFFSET AND RESCALE TREMOLO FUNCTION ACCORDING TO TREMOLO DEPTH WIDGET SETTING | |||
iRelTim = 0.05 | |||
kCpsAtt expsegr 0.6,rnd(0.004)+0.001,1,iRelTim,1-rnd(0.05) ;a little jump in pitch at the beginning of a note will give the note a realistic attack sound. This will be most apparent when note velocity is high. And a little gliss at the end of notes. | |||
kcpsRnd gaussi 1,0.01,10 ;create a function that will be used to apply naturalistic pitch instability | |||
kcps = kcps*(1+kcpsRnd) ;apply pitch instability | |||
asig fofx5 kcps*semitone(kvib)*kCpsAtt, gkvowel, gkoct, ivoice-1 ;CALL fofx5 UDO | |||
if gkFiltOnOff==1 then | |||
asig reson asig,gkcf,gkbw,1 ;parametric EQ | |||
endif | |||
aatt linseg 0,(0.3*(1-givel)*(invoices^0.8))+0.01,1 ;AMPLITUDE ENVELOPE - ATTACK TIME IS INFLUENCED BY KEY VELOCITY | |||
asig = asig*aatt*ktrem*(0.3+givel*0.7)*gklevel ;APPLY AMPLITUDE CONTROLS: ENVELOPE, TREMOLO, KEY VELOCITY AND LEVEL | |||
/*CHORUS*/ | |||
if invoices>1 then | |||
abuf delayr 2 ;--left channel-- | |||
amixL ChoVoice gkDtnDep,gkDtnRte,gisine,1,invoices ;call UDO | |||
delayw asig | |||
abuf delayr 2 ;--right channel-- | |||
amixR ChoVoice gkDtnDep,gkDtnRte,gisine,1,invoices ;call UDO | |||
delayw asig | |||
asigL = amixL/(invoices^0.5) ;scale mix of chorus voices according to the number of voices... | |||
asigR = amixR/(invoices^0.5) ;...and the right channel | |||
else ;otherwise... (N.Voices = 1) | |||
asigL = asig ;send mono signal to both channels | |||
asigR = asig | |||
endif | |||
arel linsegr 1,iRelTim,0 ;release envelope | |||
asigL = asigL*arel ;apply release envelope | |||
asigR = asigR*arel | |||
kwet limit 2*gkRvbMix,0,1 ;wet (reverb) level control (reaches maximum a knob halfway point and hold that value for the remainder of its travel) | |||
gasendL = gasendL+asigL*kwet ;send some audio to the reverb instrument | |||
gasendR = gasendR+asigR*kwet | |||
kdry limit 2*(1-gkRvbMix),0,1 ;dry level (stays at maximum for the first half of the knob's travel then ramps down to zero for the remainder of its travel) | |||
outs asigL*kdry,asigR*kdry ;SEND AUDIO TO OUTPUT | |||
gkNoteTrig = 0 ;reset new-note trigger (in case it was '1') | |||
endin | |||
instr Effects | |||
if gkRvbMix>0 then | |||
aL,aR reverbsc gasendL,gasendR,gkRvbSize,12000 ;create stereo reverb signal | |||
outs aL,aR ;send reverb signal to speakers | |||
clear gasendL,gasendR ;clear reverb send variables | |||
endif | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
f 0 [3600*24*7] | |||
i 1 0 [3600*24*7] ;read widgets | |||
i "Effects" 0 [3600*24*7] ;reverb | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,528 @@ | |||
<Cabbage> | |||
form caption("John Chowning collection") size(562, 340), colour("black"),pluginID("cho1") | |||
rslider bounds(15, 10, 100, 100) channel("spread"), range(0,1,.5), caption("Spread"), colour("GreenYellow "), midictrl(1, 1) | |||
rslider bounds(120, 10, 100, 100) channel("semi"), range(-24,12,-12), caption("Coarse"), colour("GreenYellow ") | |||
rslider bounds(225, 10, 100, 100) channel("detune"), range(-2,2,0), caption("Detune"), colour("GreenYellow ") | |||
rslider bounds(330, 10, 100, 100) channel("vibamp"), range(0,20,0), caption("Vib Amp"), colour("GreenYellow ") | |||
rslider bounds(435, 10, 100, 100) channel("vibrate"), range(0,20,0), caption("Vib rate"), colour("GreenYellow ") | |||
groupbox bounds(15, 120, 240, 100), text("ADSR amplitude"), plant("ADSR"){ | |||
rslider bounds(.0, .3, .6, .6), text("A"), colour("orange"), channel("att"), range(0.01,3, .5) | |||
rslider bounds(.25, .3, .6, .6), text("D"), colour("orange"), channel("dec"), range(0,1, .5) | |||
rslider bounds(.5, .3, .6, .6), text("S"), colour("orange"), channel("sus"), range(0,1,.8) | |||
rslider bounds(.75, .3, .6, .6), text("R"), colour("orange"), channel("rel"), range(0.01,3, .2) | |||
} | |||
combobox bounds(280,120, 160, 20), channel("select"), value(1), text("clar","glass", "loop","perc","piano","rebell","soprano","string","trumpet","vibr") | |||
rslider bounds(280,150, 60, 60), text("Rev level"), colour("GreenYellow "), channel("level"), range(0,1,.8) | |||
rslider bounds(350, 150, 60, 60), text("Rev size"), colour("GreenYellow "), channel("size"), range(.1,.99,.7) | |||
checkbox bounds(420, 160, 160, 30),channel("onoff"), text("Reverb On/Off"), value(0) | |||
keyboard pos(10, 240), size(540, 60) | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n -+rtmidi=null -M0 -b1024 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 32 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
;Author: Giorgio Zucco (2012) | |||
ga1 init 0 | |||
ga2 init 0 | |||
;Chowning opcodes | |||
;******************************************** | |||
opcode CHOWNClar,a,kk | |||
gitemp1 ftgen 0,0, 8192, -12, 8 | |||
gitemp2 ftgen 0,0, 8192, 9, 1, 1, 0 | |||
gitemp3 ftgen 0,0, 8192, 9, 1, 1, 90 | |||
kamp,knote xin | |||
;setksmps 10 | |||
;inote cpsmidib | |||
;iveloc ampmidi 1 | |||
kgate linenr kamp,0,1,.01 | |||
kenv linseg 0,0.1,1,2-0.3,1,0.2,0 | |||
kramp linseg 0,2/2,4,2/2,0 | |||
k1 = kramp * (.8 - 1/.8)/2 | |||
k2a = kramp * (.8 + 1/.8)/2 | |||
k2b = 200 * k2a | |||
k3a table k1*2,gitemp1,0,0,0 | |||
k3b = k3a * (-1/2) | |||
a1 poscil k2b,knote*2,gitemp3 | |||
a2 poscil k1,knote*2,gitemp3 | |||
a3 = kenv* exp(a2+k3b) | |||
asig poscil a3,knote+a1,gitemp2 | |||
xout asig*kgate | |||
endop | |||
;************************************************** | |||
opcode CHOWNglass,a,kki | |||
kamp,knote,ifunc xin | |||
kgate linenr kamp, 0, .2, .01 | |||
imfreq = 1.4 * 200 | |||
immax = 10 * imfreq | |||
kmenv linseg 1, 5/6, 0, 5 - (5/6), 0 | |||
koenv expseg 0.8, 5/6, 1, 5 - (5/6) , .01 | |||
amod poscil kmenv * immax, 1.414*knote, ifunc | |||
aout poscil koenv * 1, knote + amod, ifunc | |||
xout aout*kgate | |||
endop | |||
;************************************************** | |||
opcode CHOWNLoop,a,kki | |||
gitemp1 ftgen 0, 0, 513, 5, .7, 16, .8,48, 1 , 64, .8, 128,.2, 256, .001 | |||
gitemp2 ftgen 0, 0, 513, 7, 0 , 12, 1, 52, 0, 460, 0 | |||
kamp,kfreq,ifunc xin | |||
kgate linenr kamp, 0, .2, .01 | |||
i1 = 1/.2 | |||
idev1 = 0 * 110 | |||
idev2 = (25-0) * 110 | |||
ampcar poscil 1, i1, gitemp1 | |||
ampmod poscil idev2, i1,gitemp2 | |||
amod poscil ampmod+idev1, kfreq*1,ifunc | |||
asig poscil ampcar, kfreq+amod,ifunc | |||
xout asig*kgate | |||
endop | |||
;************************************************** | |||
opcode CHOWNPerc,a,kki | |||
kamp,kcps,ifunc xin | |||
keg expseg .001, .01, 1, .1, .8, 999, .001 | |||
keg linenr keg * kamp, .01, .333, .05 | |||
kmeg expseg .001, .01,12000/1000, .25, .2, 999, .001 | |||
a1 foscili keg, kcps, 1, 1.4, kmeg, 1 | |||
xout a1 | |||
endop | |||
;************************************************** | |||
opcode CHOWNPiano,a,kki | |||
kamp,kcps,ifunc xin | |||
;gitemp100 ftgen 0,0 ,128 ,7, 0, 128 , 1 | |||
kndx expon 1, .3, .01 | |||
a1 foscili kamp, kcps, 1, 12, kndx, ifunc | |||
a2 foscili kamp, kcps + .1, 1, 12, kndx, ifunc | |||
a3 foscili kamp, kcps - .1, 1, 12, kndx, ifunc | |||
aosc = a1 + a2 + a3 | |||
kenv mxadsr .01, .1, .8, .1 | |||
aosc = aosc * .5 | |||
aout = aosc*kenv | |||
xout aout | |||
endop | |||
;************************************************** | |||
opcode CHOWNrebell,a,kki | |||
gifc2 ftgen 0,0.0 ,512 ,7 ,1 ,512 ,1 | |||
gifc3 ftgen 0,0.0, 512, 7 ,.5 ,512, .5 | |||
gifc4 ftgen 0,0.0 ,513 ,7 ,1 ,512, 0, 1, 0 | |||
gifc5 ftgen 0,0.0, 513 ,7 ,0 ,512, 1, 1, 1 | |||
gifc6 ftgen 0,0.0 ,513, 7, 1, 256, 0, 256, 1 ,1, 1 | |||
kamp,knote,ifunc xin | |||
kgate linenr kamp,0,1.5,.01 | |||
kpitch1 = knote | |||
kpitch2 = kpitch1 * 1.001 | |||
kpitch3 = kpitch1 * 0.998 | |||
imodbase = (19 <= 5 ? 19 : 5) | |||
imodmax = (19 <= 5 ? 5 : 19) | |||
indxbase = (1 <= 2 ? 1 : 2) | |||
indxmax = (1 <= 2 ? 2 : 1) | |||
kmodchg oscil1i 0.00,imodmax - imodbase,p3,gifc4 | |||
kmod = imodbase + kmodchg | |||
kndxchg oscil1i 0.00,indxmax - indxbase,5,gifc5 | |||
kndx = indxbase + kndxchg | |||
afm1 foscili 1*.45,kpitch1,1,kmod,kndx,ifunc | |||
afm2 foscili 1*.35,kpitch2,1,kmod,kndx,ifunc | |||
afm3 foscili 1*.32,kpitch3,1,kmod,kndx,ifunc | |||
afmttl = afm1+afm2+afm3 | |||
aosc1 poscil 1 *.45,kpitch1,ifunc | |||
aosc2 poscil 1 *.35,kpitch2,ifunc | |||
aosc3 poscil 1 *.32,kpitch3,ifunc | |||
aoscttl = aosc1+aosc2+aosc3 | |||
afm = afmttl - aoscttl; | |||
icfbase = (3000 <= 12000 ? 3000 : 12000) | |||
icfmax = (3000 <= 12000 ? 12000 : 3000) | |||
kcfchg oscil1i 0.00,(icfmax - icfbase),5,gifc6 | |||
kcf = icfbase + kcfchg | |||
ibwbase = (100 <= 400 ? 100 : 400) | |||
ibwmax = (100 <= 400 ? 400 : 100) | |||
kbwchg oscil1i 0.00,ibwmax - ibwbase,5,gifc6 | |||
kbw = ibwbase + kbwchg | |||
aflt1 reson afm,kcf,kbw,1 | |||
aflt2 reson afm,kcf*.9, kbw*1.11,1 | |||
abal balance aflt1+aflt2,afm | |||
asig envlpx abal,.2, gifc5, gifc5*.39, gifc5, 1 | |||
xout asig*kgate | |||
endop | |||
;************************************************** | |||
opcode CHOWNSoprano,a,kki | |||
kveloc,knote,ifunc xin | |||
kgate linenr kveloc,0,2,.01 | |||
k7 = knote | |||
k2 = 7000 | |||
k2 = (k2/k7)+.5 | |||
k2 = int(k2) | |||
k3 = .04 | |||
k4 = .25 | |||
k5 = 5*.4 | |||
k6 = 5 | |||
k8 = k5/k4 | |||
k9 = exp(1.5*log(7000/32767)) | |||
k10 = .00311*log(k7) | |||
k11 = sqrt(7000/32767) | |||
k12 = (1-k3)*k11 | |||
k13 = k4*k7 | |||
k14 = k9*k3 | |||
a1 linen k12,.1,3,.08 | |||
a2 poscil k13,k7,ifunc | |||
a8 = k7+a2 | |||
a4 linenr k10,.6,3,.1 | |||
a4 poscil a4,k6,ifunc | |||
a5 randi k10,16 | |||
a6 linseg -.03,.07,.03,.03,0,3-.1,0 | |||
a6 = a4+a5+a6+1. | |||
a1 poscil a1,(a8+a2)*a6,ifunc | |||
a7 = (a2*k8)+k2 | |||
a3 linseg 0,.07,.1,.03,1.,3-.18,1,.02,.1,.06,0 | |||
a3 = a3*(k9*k3) | |||
a3 poscil a3,a7*a6,ifunc | |||
aout = (a1+a3)*kgate | |||
xout aout | |||
endop | |||
;************************************************** | |||
opcode CHOWNString,a,kki | |||
kamp,knote,ifunc xin | |||
;setksmps 10 | |||
iveloc ampmidi 1 | |||
kgate linenr 1, 0, .2, .01 | |||
ifc = cpspch(5.00) | |||
ifm1 = ifc | |||
ifm2 = ifc*3 | |||
ifm3 = ifc*4 | |||
indx1 = 7.5/log(ifc) ;RANGE FROM CA 2 TO 1 | |||
indx2 = 15/sqrt(ifc) ;RANGE FROM CA 2.6 TO .5 | |||
indx3 = 1.25/sqrt(ifc) ;RANGE FROM CA .2 TO .038 | |||
kvib init 0 | |||
timout 0,.75,transient | |||
kvbctl linen 1,.5,2-.75,.1 | |||
krnd randi .0075,15 ;RANDOM DEVIATION IN VIB WIDTH | |||
kvib poscil kvbctl*.03+krnd,5.5*kvbctl,ifunc | |||
transient: | |||
timout .2,2,continue | |||
ktrans linseg 1,.2,0,1,0 ;TRANSIENT ENVELOPE | |||
anoise randi ktrans,.2*ifc ;NOISE... | |||
attack poscil anoise,knote,ifunc | |||
continue: | |||
amod1 poscil ifm1*(indx1+ktrans),knote,ifunc | |||
amod2 poscil ifm2*(indx2+ktrans),knote*3,ifunc | |||
amod3 poscil ifm3*(indx3+ktrans),knote*4,ifunc | |||
asig poscil kamp,(amod1+amod2+amod3)*(1+kvib),ifunc | |||
asig linen asig+attack,.2,2,.2 | |||
xout asig *kgate | |||
endop | |||
;************************************************** | |||
opcode CHOWNTrumpet,a,kki | |||
gitemp2 ftgen 0,0,129,9,.35,1,0 | |||
gitemp3 ftgen 0,0,129,9,.4,1,0 | |||
gitemp4 ftgen 0,0,129,9,.25,1,0 | |||
gitemp5 ftgen 0,0,129,9,.3875,1.4142,0 | |||
kamp,knote,ifunc xin | |||
;setksmps 10 | |||
kgate linenr kamp/2, 0, .2, .01 | |||
irandev = .007 | |||
ifreqrand = 125 | |||
ivibatt = .6 | |||
ivibdec = .2 | |||
ivibwth = .007 | |||
ivibrate = 7 | |||
iportdev = .03 | |||
iportatt = .06 | |||
iportdec = .01 | |||
iampfac = .833 | |||
iafrmfac = 1-iampfac | |||
imax = 2.66 | |||
iratio = 1.8/imax | |||
ifundatt = .03 | |||
ifunddec = .15 | |||
ifrmatt = .03 | |||
ifrmdec = .3 | |||
imodatt = .03 | |||
imoddec = .01 | |||
kphs linen ivibwth, ivibatt, 1, ivibdec | |||
kvfac table kphs, gitemp4, ifunc | |||
kvibgate = kvfac*ivibwth | |||
kport envlpx iportdev, iportatt, 1, iportdec, gitemp5, 1, .01 | |||
krand randi irandev, ifreqrand, -1 | |||
kosc poscil kvibgate, ivibrate, ifunc | |||
kvib = (krand+1)*(kosc+1)*(kport+1) | |||
kgatemod envlpx imax*knote, imodatt, 1, imoddec, gitemp3, 1.2, .01, .2 | |||
kgatefd envlpx iampfac, ifundatt, 1, ifunddec, gitemp2, 1, .01 | |||
kgatefrm envlpx iafrmfac, ifrmatt, 1, ifrmdec, gitemp2, 1, .01 | |||
amod poscil kgatemod, knote*kvib, ifunc | |||
afund poscil kgatefd, knote*kvib+amod, ifunc | |||
afrm poscil kgatefrm, (int(1500/knote+.5)*knote)*kvib+amod*iratio, ifunc | |||
xout (afund+afrm)*kgate | |||
endop | |||
;************************************************** | |||
opcode CHOWNVibr,a,kki | |||
kamp,kifc,ifunc xin | |||
gitemp100 ftgen 0,0 ,128 ,7, 0, 128 , 1 | |||
kifm1 = kifc | |||
kifm2 = kifc*3 | |||
kifm3 = kifc*4 | |||
kindx1 = 7.5/log(kifc) ;RANGE FROM CA 2 TO 1 | |||
kindx2 = 15/sqrt(kifc) ;RANGE FROM CA 2.6 TO .5 | |||
kindx3 = 1.25/sqrt(kifc) ;RANGE FROM CA .2 TO .038 | |||
kvib init 0 | |||
timout 0,0.75,transient ;DELAYS VIBRATO FOR P8 SECONDS | |||
kvbctl linen 1,.5,10,.1 ;VIBRATO CONTROL ENVELOPE | |||
krnd randi .0075,15 ;RANDOM DEVIATION IN VIB WIDTH | |||
kvib poscil kvbctl*.03+krnd,5.5*kvbctl,ifunc ;VIBRATO GENERATOR | |||
transient: | |||
timout .2,10,continue ;EXECUTE FOR .2 SECS ONLY | |||
ktrans linseg 1,.2,0,1,0 ;TRANSIENT ENVELOPE | |||
anoise randi ktrans,.2*kifc ;NOISE... | |||
attack poscil anoise,2000,ifunc ;...CENTERED AROUND 2KHZ | |||
continue: | |||
amod1 poscil kifm1*(kindx1+ktrans),kifm1,ifunc | |||
amod2 poscil kifm2*(kindx2+ktrans),kifm2,ifunc | |||
amod3 poscil kifm3*(kindx3+ktrans),kifm3,ifunc | |||
asig poscil kamp,(kifc+amod1+amod2+amod3)*(1+kvib),ifunc | |||
asig linen asig+attack,.26,10,.2 | |||
imax ampmidi 1, gitemp100 | |||
kgate linenr imax, 0, 1, .01 | |||
aout = asig * kgate | |||
xout aout | |||
endop | |||
;************************************************** | |||
instr 1 | |||
;kselect init 1 | |||
;channel | |||
;kmodfreq chnget "mod" | |||
ksemi1 chnget "semi" | |||
kdetune chnget "detune" | |||
kspread chnget "spread" | |||
iatt chnget "att" | |||
idec chnget "dec" | |||
isus chnget "sus" | |||
irel chnget "rel" | |||
klfoamp chnget "vibamp" | |||
klforate chnget "vibrate" | |||
kselect chnget "select" | |||
;midi | |||
imidinn notnum | |||
iamp ampmidi 1 | |||
kbend pchbend 0,2 ;pitch bend | |||
;lfo | |||
klfo lfo klfoamp,klforate,2 | |||
kfreq1 = cpsmidinn(imidinn+kbend+int(ksemi1)) ;controllo midi | |||
kfreq2 = cpsmidinn(imidinn+kbend+kdetune+int(ksemi1)) | |||
;CHOWNClar,CHOWNglass,CHOWNLoop,CHOWNPerc,CHOWNPiano,CHOWNrebell,CHOWNSoprano,CHOWNString,CHOWNTrumpet,CHOWNVibr | |||
if kselect = 1 then | |||
acho1 CHOWNClar iamp,kfreq1+klfo,1 | |||
acho2 CHOWNClar iamp,kfreq2+klfo,1 | |||
elseif kselect = 2 then | |||
acho1 CHOWNglass iamp,kfreq1+klfo,1 | |||
acho2 CHOWNglass iamp,kfreq2+klfo,1 | |||
elseif kselect = 3 then | |||
acho1 CHOWNLoop iamp,kfreq1+klfo,1 | |||
acho2 CHOWNLoop iamp,kfreq2+klfo,1 | |||
elseif kselect = 4 then | |||
acho1 CHOWNPerc iamp,kfreq1+klfo,1 | |||
acho2 CHOWNPerc iamp,kfreq2+klfo,1 | |||
elseif kselect = 5 then | |||
acho1 CHOWNPiano iamp,kfreq1+klfo,1 | |||
acho2 CHOWNPiano iamp,kfreq2+klfo,1 | |||
elseif kselect = 6 then | |||
acho1 CHOWNrebell iamp,kfreq1+klfo,1 | |||
acho2 CHOWNrebell iamp,kfreq2+klfo,1 | |||
elseif kselect = 7 then | |||
acho1 CHOWNSoprano iamp,kfreq1,1 | |||
acho2 CHOWNSoprano iamp,kfreq2,1 | |||
elseif kselect = 8 then | |||
acho1 CHOWNString iamp,kfreq1+klfo,1 | |||
acho2 CHOWNString iamp,kfreq2+klfo,1 | |||
elseif kselect = 9 then | |||
acho1 CHOWNTrumpet iamp,kfreq1+klfo,1 | |||
acho2 CHOWNTrumpet iamp,kfreq2+klfo,1 | |||
elseif kselect = 10 then | |||
acho1 CHOWNVibr iamp,kfreq1,1 | |||
acho2 CHOWNVibr iamp,kfreq2,1 | |||
endif | |||
ktrig changed kselect | |||
if ktrig = 1 then | |||
reinit play | |||
endif | |||
play: | |||
;master | |||
aL clip acho1,0,0dbfs | |||
aR clip acho2,0,0dbfs | |||
aoutL = ((aL * kspread) + (aR * (1 - kspread))) *.5 | |||
aoutR = ((aL * (1-kspread)) + (aR * kspread)) *.5 | |||
kadsr mxadsr iatt,idec,isus,irel | |||
outs (aoutL)*kadsr,(aoutR)*kadsr | |||
vincr ga1,aoutL*kadsr | |||
vincr ga2,aoutR*kadsr | |||
endin | |||
instr 10 ;reverb | |||
ktrig chnget "onoff" | |||
klevel chnget "level" | |||
ksize chnget "size" | |||
if ktrig = 1 then | |||
al,ar reverbsc ga1,ga2,ksize,16000,sr,0 | |||
asum1 dcblock2 al | |||
asum2 dcblock2 ar | |||
else | |||
asum1 = 0 | |||
asum2 = 0 | |||
endif | |||
outs asum1*klevel,asum2*klevel | |||
clear ga1,ga2 | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
f1 0 16384 10 1 | |||
;f0 3600 | |||
i1 0 36000 | |||
i10 0 36000 | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,321 @@ | |||
Clavinet.csd - an emulation of the Hohner Clavinet D6 | |||
----------------------------------------------------- | |||
Pickup Selection | |||
---------------- | |||
CA - neck pickup only (pickup A) | |||
CB - bridge pickup only (pickup B) | |||
DA - both pickups in phase | |||
DB - bridge pickup (pickup B) 180 degrees out of phase w.r.t the neck pickup | |||
Setup | |||
----- | |||
Pick A - position of the first pickup (range 0 - 1). Typically referred to as the 'neck' pickup | |||
Pick B - position of the second pickup (range 0 - 1). Typically referred to as the 'bridge' pickup | |||
(NB. the relevant pickup has to be 'active' according to the CD AB switches in order for you to be able to here changes to it pickup position.) | |||
Mod.A - the pickup position can also modulated by an LFO. This control controls the depth of this modulation | |||
Mod.B - Depth of this modulation for the second pickup | |||
Rate A - Rate of modulation for the first pickup | |||
Rate B - Rate of modulation for the second pickup | |||
Env.A - The pickup position can be modulated by a simple single segment envelope. This is typically used to add an particualar attack nuance to the sound. This control controls the initial amplitude of this envelope (can be positive or negative). The envelope always ends at zero. | |||
Env.B - Envelope amplitude for the second pickup. | |||
Time A - Duration of the envelope segment for the first pickup | |||
Time B - Duration of the envelope segment for the second pickup | |||
Pluck - location of the 'pluck' (range 0 - 1). Should be close to zero for a typical clavinet behaviour | |||
Damp - string vibration damping that is applied while a note is being held. String damping is also dependent upon the note played using a 'key tracking' function table 'girefl'. In general lower notes should experience greater damping. | |||
HPF - this controls the cutoff frequency of a highpass filter that the signal passes through. | |||
The value supplied here is multiplied by the fundemental frequency of the note played to derive the cutoff frequency. | |||
Therefore if a value of '2' is supplied the cutoff will always by twice the fundemental, i.e. the frequency of the first harmonic/second partial. | |||
This control can be used to remove the emphasis of the fundemental partial. | |||
If this control is at its minimum setting the filter is bypassed. | |||
LPF - behaves in a similar way to HPF but in respect to a lowpass filter. This control, if reduced, can be used to soften the brightness of a note's attack. | |||
If this control is at its maximum setting the filter is bypassed. | |||
Inharm - applies inharmonicity to the spectrum produced by repluck. Negative values compress the spectrum, positive values expand the spectrum and zero leaves the spectrum unaffected. | |||
Release | |||
------- | |||
* Poorly maintained clavinets exhibit a release 'pluck' as the rubber pad which strikes and frets is lifted from the string when the key is released. The is on account of the rubber pad wearing out. | |||
Ampl - amplitude of the release 'pluck' | |||
Tone - a tone control applied to the release 'pluck' (this will also affect amplitude) | |||
D.Time - time it takes for full damping to be applied (this control has a subtle effect) | |||
Damp - amount of damping that is applied to string vibrations whenever a key is | |||
released (this amount of damping is achieved after 'D.Time' seconds). Note that the 'Damp' | |||
control in the 'Setup' pop-up panel also has an impact upon the release damping. | |||
A.Time - amplitude release time. If this is too short, vibration damping may not be heard and the above controls may not appear to do anything | |||
Filters | |||
------- | |||
The D6 Clavinet design incorporates four bandpass filters which can be switched in or out of the circuit. | |||
Emphasising four different frequency bands from high to low they are named 'brilliant', 'treble', 'medium' and 'soft' | |||
Cutoff frequencies (fco), levels and Q values for each of the four filters can be adjusted. | |||
Obviously the relevant filter has to be activated in order to be able to hear changes made to its settings. | |||
The four filters are in a parallel arrangement as opposed to being in series. | |||
<Cabbage> | |||
form caption("Clavinet"), size(550, 195), pluginID("clav"), colour(228,156,28) | |||
snapshot bounds(260, 46,200, 25), master(1), items("Clavinet 1", "Clavinet 2", "Clavinet 3", "Clavinet 4", "Clavinet 5", "Clavinet 6", "Clavinet 7", "Clavinet 8", "Clavinet 9", "Clavinet 10") | |||
; filter switches | |||
checkbox bounds( 10, 5, 70, 15), text("Brilliant") channel("brilliant"), FontColour(50,50,50), colour("lime") | |||
checkbox bounds( 10, 25, 70, 15), text("Treble") channel("treble"), FontColour(50,50,50), colour("lime"), value(1) | |||
checkbox bounds( 10, 45, 70, 15), text("Medium") channel("medium"), FontColour(50,50,50), colour("lime") | |||
checkbox bounds( 10, 65, 70, 15), text("Soft") channel("soft"), FontColour(50,50,50), colour("lime") | |||
; pickup configuration switches | |||
checkbox bounds( 80, 5, 70, 15), text("C/D") channel("C_D"), FontColour(50,50,50), colour("lime"), value(1) | |||
checkbox bounds( 80, 25, 70, 15), text("A/B") channel("A_B"), FontColour(50,50,50), colour("lime"), value(1) | |||
; controls pertaining to the setup of the instrument (pickup positions, pluck position, damping etc.) accessed in a pop-up panel | |||
groupbox bounds(150, 8, 172, 305), colour(228,156,28), plant("Setup), line(0), popup(1) | |||
{ | |||
rslider bounds( 5, 8, 55, 55), text("Pick A"), colour(195,126, 0), FontColour(50,50,50), channel("pickA"), range(0, 1.00, 0.25, 1, 0.001) | |||
rslider bounds( 55, 8, 55, 55), text("Pick B"), colour(195,126, 0), FontColour(50,50,50), channel("pickB"), range(0, 1.00, 0.07, 1, 0.001) | |||
rslider bounds( 5, 68, 55, 55), text("Mod A"), colour(225,156, 28), FontColour(50,50,50), channel("ModA"), range(0,0.50, 0.03, 0.5, 0.001) | |||
rslider bounds( 55, 68, 55, 55), text("Mod B"), colour(225,156, 28), FontColour(50,50,50), channel("ModB"), range(0,0.50, 0.03, 0.5, 0.001) | |||
rslider bounds( 5,128, 55, 55), text("Rate A"), colour(255,186, 58), FontColour(50,50,50), channel("RateA"), range(0,14.00, 0.2, 0.5, 0.001) | |||
rslider bounds( 55,128, 55, 55), text("Rate B"), colour(255,186, 58), FontColour(50,50,50), channel("RateB"), range(0,14.00, 0.15, 0.5, 0.001) | |||
rslider bounds( 5,188, 55, 55), text("Env.A"), colour(255,216, 88), FontColour(50,50,50), channel("EnvA"), range(-1, 1.00, 0) | |||
rslider bounds( 55,188, 55, 55), text("Env.B"), colour(255,216, 88), FontColour(50,50,50), channel("EnvB"), range(-1, 1.00, 0) | |||
rslider bounds( 5,248, 55, 55), text("Time A"), colour(255,246,118), FontColour(50,50,50), channel("TimeA"), range(0, 1.00, 0.05, 0.5, 0.001) | |||
rslider bounds( 55,248, 55, 55), text("Time B"), colour(255,246,118), FontColour(50,50,50), channel("TimeB"), range(0, 1.00, 0.05, 0.5, 0.001) | |||
line bounds(110, 25, 1, 260), colour( 50, 50, 50) | |||
rslider bounds(112, 8, 55, 55), text("Pluck"), colour(195,126, 0), FontColour(50,50,50), channel("plk"), range(0, 1.00, 0.005, 0.5, 0.0001) | |||
rslider bounds(112, 68, 55, 55), text("Damp"), colour(225,156, 28), FontColour(50,50,50), channel("SusDamp"), range(-1.00, 1.00, 0) | |||
rslider bounds(112,128, 55, 55), text("HPF"), colour(255,186, 58), FontColour(50,50,50), channel("HPF"), range(0,16.0, 0) | |||
rslider bounds(112,188, 55, 55), text("LPF"), colour(255,216, 88), FontColour(50,50,50), channel("LPF"), range(1.0,72, 72, 0.375, 0.0001) | |||
rslider bounds(112,248, 55, 55), text("Inharm."),colour(255,216, 88), FontColour(50,50,50), channel("inharm"), range(-0.99,0.99, 0) | |||
} | |||
; controls pertaining to the release stage of a note accessed in a pop-up panel | |||
groupbox bounds(260, 8, 265, 65), colour(228,156,28), plant("Release"), line(0), popup(1) | |||
{ | |||
rslider bounds( 5, 8, 55, 55), text("Ampl."), colour(255,186,58), FontColour(50,50,50), channel("RelAmpl"), range(0, 20.00, 2) | |||
rslider bounds( 55, 8, 55, 55), text("Tone"), colour(255,186,58), FontColour(50,50,50), channel("RelTone"), range(100, 8000, 1000) | |||
rslider bounds(105, 8, 55, 55), text("D.Time"), colour(255,186,58), FontColour(50,50,50), channel("RelDTime"), range(0.001, 1, 0.01, 0.5, 0.001) | |||
rslider bounds(155, 8, 55, 55), text("Damp"), colour(255,186,58), FontColour(50,50,50), channel("RelDamp"), range(0.10, 0.99, 0.95) | |||
rslider bounds(205, 8, 55, 55), text("A.Time"), colour(255,186,58), FontColour(50,50,50), channel("RelATime"), range(0.01,20, 0.05, 0.5, 0.01) | |||
} | |||
; controls pertaining to the setup of the instrument's bandpass filters accessed in a pop-up panel | |||
groupbox bounds(150, 46, 230, 195), colour(228,156,28), plant("Filters"), line(0), popup(1) | |||
{ | |||
label bounds( 10, 5, 60, 12), text("Brilliant"), colour("white"), FontColour(50,50,50) | |||
label bounds( 69, 5, 60, 12), text("Treble"), colour("white"), FontColour(50,50,50) | |||
label bounds(121, 5, 60, 12), text("Medium"), colour("white"), FontColour(50,50,50) | |||
label bounds(185, 5, 60, 12), text("Soft"), colour("white"), FontColour(50,50,50) | |||
checkbox bounds( 26, 18, 10, 10), channel("brilliant"), colour("lime"), value(0), shape("ellipse") | |||
checkbox bounds( 81, 18, 10, 10), channel("treble"), colour("lime"), value(0), shape("ellipse") | |||
checkbox bounds(136, 18, 10, 10), channel("medium"), colour("lime"), value(0), shape("ellipse") | |||
checkbox bounds(191, 18, 10, 10), channel("soft"), colour("lime"), value(0), shape("ellipse") | |||
rslider bounds( 5, 30, 55, 55), channel("fco1"), text("fco.1"), colour(235,166,38), FontColour(50,50,50), range(50,5000,2500,0.5) | |||
rslider bounds( 60, 30, 55, 55), channel("fco2"), text("fco.2"), colour(235,166,38), FontColour(50,50,50), range(50,5000,1000,0.5) | |||
rslider bounds(115, 30, 55, 55), channel("fco3"), text("fco.3"), colour(235,166,38), FontColour(50,50,50), range(50,5000, 500,0.5) | |||
rslider bounds(170, 30, 55, 55), channel("fco4"), text("fco.4"), colour(235,166,38), FontColour(50,50,50), range(50,5000, 200,0.5) | |||
rslider bounds( 5, 85, 55, 55), channel("gain1"), text("Gain 1"), colour(255,216,88), FontColour(50,50,50), range(0.50,30, 3,0.5) | |||
rslider bounds( 60, 85, 55, 55), channel("gain2"), text("Gain 2"), colour(255,216,88), FontColour(50,50,50), range(0.50,30,2.3,0.5) | |||
rslider bounds(115, 85, 55, 55), channel("gain3"), text("Gain 3"), colour(255,216,88), FontColour(50,50,50), range(0.50,30,1.3,0.5) | |||
rslider bounds(170, 85, 55, 55), channel("gain4"), text("Gain 4"), colour(255,216,88), FontColour(50,50,50), range(0.50,30,1.4,0.5) | |||
rslider bounds( 5,140, 55, 55), channel("Q1"), text("Q 1"), colour(255,255,138), FontColour(50,50,50), range(0.50,30,1.25,0.5) | |||
rslider bounds( 60,140, 55, 55), channel("Q2"), text("Q 2"), colour(255,255,138), FontColour(50,50,50), range(0.50,30,1 ,0.5) | |||
rslider bounds(115,140, 55, 55), channel("Q3"), text("Q 3"), colour(255,255,138), FontColour(50,50,50), range(0.50,30,1 ,0.5) | |||
rslider bounds(170,140, 55, 55), channel("Q4"), text("Q 4"), colour(255,255,138), FontColour(50,50,50), range(0.50,30,2 ,0.5) | |||
line bounds( 59, 25, 1, 150), colour(50,50,50) | |||
line bounds(114, 25, 1, 150), colour(50,50,50) | |||
line bounds(169, 25, 1, 150), colour(50,50,50) | |||
} | |||
rslider bounds(470, 5, 75, 75), text("Level"), colour(255,186,58), FontColour(50,50,50), channel("level"), range(0, 8.00, 0.5, 0.5) | |||
keyboard bounds(10, 85, 530,80) | |||
image bounds(5, 170, 420, 20), colour(75, 85, 90, 50), plant("credit"){ | |||
label bounds(0.03, 0.1, .6, .7), text("Author: Iain McCurdy |2013|"), colour("white"), FontColour(50,50,50) | |||
} | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-dm0 -n -+rtmidi=null -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 16 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
; table used to map of note played to bridge relection | |||
girefl ftgen 0,0,128,-27, 0,0.4, 36,0.4, 72,0.01, 127,0.01 | |||
gisine ftgen 0,0,4096,10,1 | |||
gitri ftgen 0,0,4096,7,0,1024,1,2046,-1,1024,0 | |||
opcode FreqShifter,a,aki | |||
ain,kfshift,ifn xin ;READ IN INPUT ARGUMENTS | |||
areal, aimag hilbert ain ;HILBERT OPCODE OUTPUTS TWO PHASE SHIFTED SIGNALS, EACH 90 OUT OF PHASE WITH EACH OTHER | |||
asin oscili 1, kfshift, ifn, 0 | |||
acos oscili 1, kfshift, ifn, 0.25 | |||
;RING MODULATE EACH SIGNAL USING THE QUADRATURE OSCILLATORS AS MODULATORS | |||
amod1 = areal * acos | |||
amod2 = aimag * asin | |||
;UPSHIFTING OUTPUT | |||
aFS = (amod1 - amod2) | |||
xout aFS ;SEND AUDIO BACK TO CALLER INSTRUMENT | |||
endop | |||
instr 1 | |||
ibrilliant chnget "brilliant" ; filter switch | |||
itreble chnget "treble" ; filter switch | |||
imedium chnget "medium" ; filter switch | |||
isoft chnget "soft" ; filter switch | |||
iC_D chnget "C_D" ; single/dual pickup selector | |||
iA_B chnget "A_B" ; neck/bridge pickup selector | |||
gklevel chnget "level" ; output volume control | |||
icps cpsmidi ; cps read from midi | |||
inum notnum ; note number read from midi | |||
ivel veloc 0,1 ; velocity read from midi | |||
; pluck position is an i-rate variable so a mechanism is created to re-initialise the instrument if it is changed in realtime | |||
kplk chnget "plk" ; pluck position | |||
ktrig changed kplk ; if GUI knob changes, generate a trigger | |||
if ktrig==1 then ; if triggered... | |||
reinit UPDATE ; reinitialise... | |||
endif | |||
UPDATE: ; ...from here (until the end of the instrument) | |||
iplk = i(kplk) ; cast k-rate pluck position to i-rate variable | |||
; pickup positions | |||
kpickA chnget "pickA" ; neck pickup position | |||
kpickB chnget "pickB" ; bridge pickup position | |||
; string vibration damping / reflectivity | |||
irefl table inum,girefl ; read reflectivity for this note from function table (lower notes will experience more damping) | |||
iRelDTime chnget "RelDTime" ; release damping time: time for damping state to be established | |||
iRelDamp chnget "RelDamp" ; amount of damping upon release | |||
krefl linsegr irefl,iRelDTime,iRelDamp ; upon note release vibrations are damped quickly and dramatically | |||
kSusDamp chnget "SusDamp" ; user controlled modulation of string vibration damping | |||
krefl limit krefl+kSusDamp,0.001,0.999 ; consolidate reflection/damping value and limit possible values to prevent out of range values | |||
iamp = ivel*0.3 | |||
kenv expseg 1, 0.01,0.001,1,0.001 ; create an amplitude envelope for the noise burst | |||
axcite pinkish kenv-0.001 ; create a pink noise signal | |||
axcite tone axcite,icps*2 | |||
krelease release ; sense release of note | |||
iRelAmpl chnget "RelAmpl" ; release pluck amplitude | |||
iRelTone chnget "RelTone" ; tone of the release pluck | |||
if krelease==1 then ; if key is released... | |||
axcite mpulse iRelAmpl,0 ; audio impulse is created as an implementation of the release pluck impulse | |||
axcite butlp axcite,iRelTone ; lowpass filter the impulse | |||
endif | |||
kModA chnget "ModA" ; pickup position modulation depth | |||
kModB chnget "ModB" | |||
kRateA chnget "RateA" ; pickup position modulation rate | |||
kRateB chnget "RateB" | |||
iEnvA chnget "EnvA" ; pickup position envelope modulation depth | |||
iEnvB chnget "EnvB" | |||
iTimeA chnget "TimeA" ; pickup position envelope modulation time | |||
iTimeB chnget "TimeB" | |||
kenv1 transeg iEnvA,iTimeA,-4,0 ; envelope applied to the pickup position (pickup A) | |||
kenv2 transeg iEnvB,iTimeB,-4,0 ; envelope applied to the pickup position (pickup B) | |||
kmod1 oscili kModA,kRateA,gitri ; lfo used to modulate pickup position (pickup A) | |||
kmod2 oscili kModB,kRateB,gitri ; lfo used to modulate pickup position (pickup B) | |||
kpickA limit kpickA + kmod1 + kenv1, 0, 1 ; consolidate pickup position between fixed value, lfo and envelope. Also protect against out of range values. (pickup A) | |||
kpickB limit kpickB + kmod2 + kenv2, 0, 1 ; consolidate pickup position between fixed value, lfo and envelope. Also protect against out of range values. (pickup B) | |||
iinharm chnget "inharm" ; inharmonicity of the tone. negative values compress the spectrum, positive values expand it. Compensation will be applied to the fundemental so that it will remain consistent. | |||
iFShift = icps*iinharm ; amount of frequency shift (in CPS) | |||
a1 repluck iplk, iamp, icps-iFShift, kpickA, krefl, axcite ; employ plucked string model (pickup A) | |||
a2 repluck iplk, iamp, icps-iFShift, kpickB, krefl, axcite ; employ plucked string model (pickup B) | |||
if(iinharm!=0) then ; only apply frequency shifting if inharmonicity is anything other than zero | |||
a1 FreqShifter a1,iFShift,gisine ; call frequency shifting UDO | |||
a2 FreqShifter a2,iFShift,gisine | |||
endif | |||
if(iC_D==0&&iA_B==0) then ;CA - neck pickup only | |||
asig = a1 | |||
elseif(iC_D==0&&iA_B==1) then ;CB - bridge pickup only | |||
asig = a2 | |||
elseif(iC_D==1&&iA_B==0) then ;DA - both pickups in phase | |||
asig = a1 + a2 | |||
elseif(iC_D==1&&iA_B==1) then ;DB - both pickups. Pickup B 180 degrees out of phase | |||
asig = a1 - a2 | |||
endif | |||
; velocity to brightness | |||
icf = (ivel*6)+8 ; cutoff frequency in 'oct' format | |||
asig butlp asig,cpsoct(icf) ; lowpass filter audio signal | |||
; filter switches | |||
kfco1 chnget "fco1" ; filter cutoffs | |||
kfco2 chnget "fco2" | |||
kfco3 chnget "fco3" | |||
kfco4 chnget "fco4" | |||
kQ1 chnget "Q1" ; filter q's | |||
kQ2 chnget "Q2" | |||
kQ3 chnget "Q3" | |||
kQ4 chnget "Q4" | |||
kgain1 chnget "gain1" ; filter gains | |||
kgain2 chnget "gain2" | |||
kgain3 chnget "gain3" | |||
kgain4 chnget "gain4" | |||
; filters | |||
amix = 0 ; audio mix of filter outputs (reset to silence upon each iteration) | |||
if(ibrilliant==1) then ; if 'brilliant' selected... | |||
afilt rbjeq asig, kfco1, 1, kQ1, 1, 4 ; bandpass filter sound | |||
amix = amix + (afilt * kgain1) ; add a scaled amount of filtered signal to filter mix signal | |||
endif | |||
if(itreble==1) then ; if 'treble' selected... | |||
afilt rbjeq asig, kfco2, 1, kQ2, 1, 4 ; bandpass filter sound | |||
amix = amix + (afilt * kgain2) ; add a scaled amount of filtered signal to filter mix signal | |||
endif | |||
if(imedium==1) then ; if 'medium' selected... | |||
afilt rbjeq asig, kfco3, 1, kQ3, 1, 4 ; bandpass filter sound | |||
amix = amix + (afilt * kgain3) ; add a scaled amount of filtered signal to filter mix signal | |||
endif | |||
if(isoft==1) then ; if 'soft' selected... | |||
afilt rbjeq asig, kfco4, 1, kQ4, 1, 4 ; bandpass filter sound | |||
amix = amix + (afilt * kgain4) ; add a scaled amount of filtered signal to filter mix signal | |||
endif | |||
if((ibrilliant + itreble + imedium + isoft)==0) then ; if no filters selected... | |||
amix = asig ; ...just send unfiltered audio to filter section output | |||
endif | |||
; key following highpass filter | |||
kHPF chnget "HPF" ; highpass filter multiple | |||
if kHPF>0 then ; if HPF control is greater than 1... | |||
kcf limit icps*kHPF,20,sr/2 ; prevent out of range values which would cause the filter to 'blow up' | |||
amix buthp amix,kcf ; filter tone relative to note fundemental | |||
endif | |||
; key following lowpass filter | |||
kLPF chnget "LPF" ; lowpass filter multiple | |||
if kLPF<72 then ; if LPF control is greater than 1... | |||
kcf limit icps*kLPF,20,sr/2 ; prevent out of range values which would cause the filter to 'blow up' | |||
amix butlp amix,kcf ; filter tone relative to note fundemental | |||
endif | |||
; release envelope | |||
iRelATime chnget "RelATime" ; amplitude release time | |||
aenv linsegr 1, iRelATime, 0 ; amplitude release envelope (senses key release before entering final/only segment) | |||
; output signal | |||
aout = amix * aenv * gklevel ; apply release envelope and level control | |||
outs aout, aout ; send audio to outputs | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
f 0 [60*60*24*7] ; keep performance going for up to a week | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,461 @@ | |||
------------------------ Instrument ID: | |||
-------- Start of Preset: Clavinet 1 | |||
brilliant: 0 | |||
treble: 1 | |||
medium: 0 | |||
soft: 0 | |||
C_D: 1 | |||
A_B: 1 | |||
pickA: 0.25 | |||
pickB: 0.0700000003 | |||
ModA: 0.0300000012 | |||
ModB: 0.0300000012 | |||
RateA: 0.200000003 | |||
RateB: 0.150000006 | |||
EnvA: 0 | |||
EnvB: 0 | |||
TimeA: 0.0500000007 | |||
TimeB: 0.0500000007 | |||
plk: 0.00499999989 | |||
SusDamp: 0 | |||
HPF: 0 | |||
LPF: 72 | |||
inharm: 0 | |||
RelAmpl: 2 | |||
RelTone: 1000 | |||
RelDTime: 0.0100000007 | |||
RelDamp: 0.949999988 | |||
RelATime: 0.049999997 | |||
brilliant: 0 | |||
treble: 1 | |||
medium: 0 | |||
soft: 0 | |||
fco1: 2500 | |||
fco2: 1000 | |||
fco3: 500 | |||
fco4: 200 | |||
gain1: 3 | |||
gain2: 2.29999995 | |||
gain3: 1.29999995 | |||
gain4: 1.39999998 | |||
Q1: 1.25 | |||
Q2: 1 | |||
Q3: 1 | |||
Q4: 2 | |||
level: 0.5 | |||
-------- End of Preset: Clavinet 1 | |||
-------- Start of Preset: Clavinet 2 | |||
brilliant: 0 | |||
treble: 0 | |||
medium: 1 | |||
soft: 0 | |||
C_D: 1 | |||
A_B: 0 | |||
pickA: 0.938000023 | |||
pickB: 0.0500000007 | |||
ModA: 0.0300000012 | |||
ModB: 0.0300000012 | |||
RateA: 0.200000003 | |||
RateB: 0.150000006 | |||
EnvA: 0 | |||
EnvB: 0 | |||
TimeA: 0.0500000007 | |||
TimeB: 0.0500000007 | |||
plk: 0.165399998 | |||
SusDamp: 0.50999999 | |||
HPF: 0 | |||
LPF: 39.6390991 | |||
inharm: 0 | |||
RelAmpl: 0 | |||
RelTone: 1000 | |||
RelDTime: 0.0100000007 | |||
RelDamp: 0.359999985 | |||
RelATime: 4.01999998 | |||
brilliant: 0 | |||
treble: 0 | |||
medium: 1 | |||
soft: 0 | |||
fco1: 2500 | |||
fco2: 1000 | |||
fco3: 500 | |||
fco4: 200 | |||
gain1: 3 | |||
gain2: 2.29999995 | |||
gain3: 1.29999995 | |||
gain4: 1.39999998 | |||
Q1: 1.25 | |||
Q2: 1 | |||
Q3: 1 | |||
Q4: 2 | |||
level: 0.925000072 | |||
-------- End of Preset: Clavinet 2 | |||
-------- Start of Preset: Clavinet 3 | |||
brilliant: 0 | |||
treble: 0 | |||
medium: 1 | |||
soft: 0 | |||
C_D: 1 | |||
A_B: 0 | |||
pickA: 0.120000005 | |||
pickB: 0.252000004 | |||
ModA: 0.0300000012 | |||
ModB: 0.0300000012 | |||
RateA: 0.200000003 | |||
RateB: 0.150000006 | |||
EnvA: 0 | |||
EnvB: 0 | |||
TimeA: 0.0500000007 | |||
TimeB: 0.0500000007 | |||
plk: 0.00079999998 | |||
SusDamp: 0.0799999759 | |||
HPF: 2.04999995 | |||
LPF: 8.57209969 | |||
inharm: -0.50999999 | |||
RelAmpl: 2.15999985 | |||
RelTone: 2358.80005 | |||
RelDTime: 0.0650000051 | |||
RelDamp: 0.300000012 | |||
RelATime: 8 | |||
brilliant: 0 | |||
treble: 0 | |||
medium: 1 | |||
soft: 0 | |||
fco1: 2500 | |||
fco2: 1000 | |||
fco3: 500 | |||
fco4: 200 | |||
gain1: 3 | |||
gain2: 2.29999995 | |||
gain3: 1.29999995 | |||
gain4: 1.39999998 | |||
Q1: 1.25 | |||
Q2: 1 | |||
Q3: 1 | |||
Q4: 2 | |||
level: 1.21700001 | |||
-------- End of Preset: Clavinet 3 | |||
-------- Start of Preset: Clavinet 4 | |||
brilliant: 0 | |||
treble: 1 | |||
medium: 0 | |||
soft: 0 | |||
C_D: 1 | |||
A_B: 0 | |||
pickA: 0.530000031 | |||
pickB: 0.462000012 | |||
ModA: 0.0300000012 | |||
ModB: 0.0300000012 | |||
RateA: 0.200000003 | |||
RateB: 0.150000006 | |||
EnvA: 0 | |||
EnvB: 0 | |||
TimeA: 0.0500000007 | |||
TimeB: 0.0500000007 | |||
plk: 0.269099981 | |||
SusDamp: -1 | |||
HPF: 0 | |||
LPF: 25.2099991 | |||
inharm: 0 | |||
RelAmpl: 2 | |||
RelTone: 1000 | |||
RelDTime: 0.0100000007 | |||
RelDamp: 0.879999995 | |||
RelATime: 0.049999997 | |||
brilliant: 0 | |||
treble: 1 | |||
medium: 0 | |||
soft: 0 | |||
fco1: 2500 | |||
fco2: 1000 | |||
fco3: 500 | |||
fco4: 200 | |||
gain1: 3 | |||
gain2: 2.29999995 | |||
gain3: 1.29999995 | |||
gain4: 1.39999998 | |||
Q1: 1.25 | |||
Q2: 1 | |||
Q3: 1 | |||
Q4: 2 | |||
level: 0.5 | |||
-------- End of Preset: Clavinet 4 | |||
-------- Start of Preset: Clavinet 5 | |||
brilliant: 0 | |||
treble: 1 | |||
medium: 0 | |||
soft: 1 | |||
C_D: 0 | |||
A_B: 1 | |||
pickA: 0.398000032 | |||
pickB: 0.522000015 | |||
ModA: 0.0300000012 | |||
ModB: 0.0300000012 | |||
RateA: 0.200000003 | |||
RateB: 0.150000006 | |||
EnvA: 0 | |||
EnvB: 0 | |||
TimeA: 0.0500000007 | |||
TimeB: 0.0500000007 | |||
plk: 0.285899997 | |||
SusDamp: 0.0999999791 | |||
HPF: 0 | |||
LPF: 31.4514999 | |||
inharm: 0 | |||
RelAmpl: 0 | |||
RelTone: 1000 | |||
RelDTime: 0.0100000007 | |||
RelDamp: 0.579999983 | |||
RelATime: 3.91999984 | |||
brilliant: 0 | |||
treble: 1 | |||
medium: 0 | |||
soft: 1 | |||
fco1: 2500 | |||
fco2: 1000 | |||
fco3: 500 | |||
fco4: 200 | |||
gain1: 3 | |||
gain2: 2.29999995 | |||
gain3: 1.29999995 | |||
gain4: 1.39999998 | |||
Q1: 1.25 | |||
Q2: 1 | |||
Q3: 1 | |||
Q4: 2 | |||
level: 0.461000025 | |||
-------- End of Preset: Clavinet 5 | |||
-------- Start of Preset: Clavinet 6 | |||
brilliant: 0 | |||
treble: 1 | |||
medium: 0 | |||
soft: 0 | |||
C_D: 1 | |||
A_B: 1 | |||
pickA: 0.0940000042 | |||
pickB: 0.398000032 | |||
ModA: 0.0300000012 | |||
ModB: 0.0300000012 | |||
RateA: 0.200000003 | |||
RateB: 0.150000006 | |||
EnvA: 0 | |||
EnvB: 0 | |||
TimeA: 0.0500000007 | |||
TimeB: 0.0500000007 | |||
plk: 0.128700003 | |||
SusDamp: 0.299999982 | |||
HPF: 0 | |||
LPF: 72 | |||
inharm: 0 | |||
RelAmpl: 0 | |||
RelTone: 1000 | |||
RelDTime: 0.0100000007 | |||
RelDamp: 0.280000001 | |||
RelATime: 1.39999998 | |||
brilliant: 0 | |||
treble: 1 | |||
medium: 0 | |||
soft: 0 | |||
fco1: 2500 | |||
fco2: 1000 | |||
fco3: 500 | |||
fco4: 200 | |||
gain1: 3 | |||
gain2: 2.29999995 | |||
gain3: 1.29999995 | |||
gain4: 1.39999998 | |||
Q1: 1.25 | |||
Q2: 1 | |||
Q3: 1 | |||
Q4: 2 | |||
level: 0.5 | |||
-------- End of Preset: Clavinet 6 | |||
-------- Start of Preset: Clavinet 7 | |||
brilliant: 1 | |||
treble: 1 | |||
medium: 0 | |||
soft: 0 | |||
C_D: 1 | |||
A_B: 0 | |||
pickA: 0.00200000009 | |||
pickB: 0.950000048 | |||
ModA: 0.0300000012 | |||
ModB: 0.0300000012 | |||
RateA: 0.200000003 | |||
RateB: 0.150000006 | |||
EnvA: 0 | |||
EnvB: 0 | |||
TimeA: 0.0500000007 | |||
TimeB: 0.0500000007 | |||
plk: 0.128700003 | |||
SusDamp: 0.299999982 | |||
HPF: 3.46000004 | |||
LPF: 24.0676003 | |||
inharm: 0 | |||
RelAmpl: 0 | |||
RelTone: 1000 | |||
RelDTime: 0.0100000007 | |||
RelDamp: 0.280000001 | |||
RelATime: 3.32999992 | |||
brilliant: 1 | |||
treble: 1 | |||
medium: 0 | |||
soft: 0 | |||
fco1: 2500 | |||
fco2: 1000 | |||
fco3: 500 | |||
fco4: 200 | |||
gain1: 3 | |||
gain2: 2.29999995 | |||
gain3: 1.29999995 | |||
gain4: 1.39999998 | |||
Q1: 1.25 | |||
Q2: 1 | |||
Q3: 1 | |||
Q4: 2 | |||
level: 4.26300001 | |||
-------- End of Preset: Clavinet 7 | |||
-------- Start of Preset: Clavinet 8 | |||
brilliant: 1 | |||
treble: 1 | |||
medium: 0 | |||
soft: 0 | |||
C_D: 1 | |||
A_B: 0 | |||
pickA: 0.584000051 | |||
pickB: 0.450000018 | |||
ModA: 0.0300000012 | |||
ModB: 0.0300000012 | |||
RateA: 0.200000003 | |||
RateB: 0.150000006 | |||
EnvA: 0 | |||
EnvB: 0 | |||
TimeA: 0.0500000007 | |||
TimeB: 0.0500000007 | |||
plk: 0.23709999 | |||
SusDamp: 0.459999979 | |||
HPF: 1.46999991 | |||
LPF: 16.7103996 | |||
inharm: 0 | |||
RelAmpl: 0 | |||
RelTone: 1000 | |||
RelDTime: 0.0100000007 | |||
RelDamp: 0.140000001 | |||
RelATime: 3.58999991 | |||
brilliant: 1 | |||
treble: 1 | |||
medium: 0 | |||
soft: 0 | |||
fco1: 2500 | |||
fco2: 1000 | |||
fco3: 500 | |||
fco4: 200 | |||
gain1: 3 | |||
gain2: 2.29999995 | |||
gain3: 1.29999995 | |||
gain4: 1.39999998 | |||
Q1: 1.25 | |||
Q2: 1 | |||
Q3: 1 | |||
Q4: 2 | |||
level: 0.720000029 | |||
-------- End of Preset: Clavinet 8 | |||
-------- Start of Preset: Clavinet 9 | |||
brilliant: 1 | |||
treble: 0 | |||
medium: 0 | |||
soft: 0 | |||
C_D: 0 | |||
A_B: 0 | |||
pickA: 0.25 | |||
pickB: 0.0700000003 | |||
ModA: 0.0300000012 | |||
ModB: 0.0300000012 | |||
RateA: 0.200000003 | |||
RateB: 0.150000006 | |||
EnvA: 0 | |||
EnvB: 0 | |||
TimeA: 0.0500000007 | |||
TimeB: 0.0500000007 | |||
plk: 0.00499999989 | |||
SusDamp: 0 | |||
HPF: 0 | |||
LPF: 25.5985985 | |||
inharm: 0 | |||
RelAmpl: 2 | |||
RelTone: 1000 | |||
RelDTime: 0.0100000007 | |||
RelDamp: 0.949999988 | |||
RelATime: 0.049999997 | |||
brilliant: 1 | |||
treble: 0 | |||
medium: 0 | |||
soft: 0 | |||
fco1: 2500 | |||
fco2: 1000 | |||
fco3: 500 | |||
fco4: 200 | |||
gain1: 3 | |||
gain2: 2.29999995 | |||
gain3: 1.29999995 | |||
gain4: 1.39999998 | |||
Q1: 1.25 | |||
Q2: 1 | |||
Q3: 1 | |||
Q4: 2 | |||
level: 1.92100012 | |||
-------- End of Preset: Clavinet 9 | |||
-------- Start of Preset: Clavinet 10 | |||
brilliant: 1 | |||
treble: 0 | |||
medium: 0 | |||
soft: 0 | |||
C_D: 1 | |||
A_B: 0 | |||
pickA: 0.25 | |||
pickB: 0.0700000003 | |||
ModA: 0.0300000012 | |||
ModB: 0.0300000012 | |||
RateA: 0.200000003 | |||
RateB: 0.150000006 | |||
EnvA: 0 | |||
EnvB: 0 | |||
TimeA: 0.0500000007 | |||
TimeB: 0.0500000007 | |||
plk: 0.00499999989 | |||
SusDamp: 0 | |||
HPF: 0 | |||
LPF: 25.5985985 | |||
inharm: 0 | |||
RelAmpl: 2 | |||
RelTone: 1000 | |||
RelDTime: 0.0100000007 | |||
RelDamp: 0.949999988 | |||
RelATime: 0.049999997 | |||
brilliant: 1 | |||
treble: 0 | |||
medium: 0 | |||
soft: 0 | |||
fco1: 2500 | |||
fco2: 1000 | |||
fco3: 500 | |||
fco4: 200 | |||
gain1: 3 | |||
gain2: 2.29999995 | |||
gain3: 1.29999995 | |||
gain4: 1.39999998 | |||
Q1: 1.25 | |||
Q2: 1 | |||
Q3: 1 | |||
Q4: 2 | |||
level: 1.92100012 | |||
-------- End of Preset: Clavinet 10 | |||
------------------------ End of Instrument ID: |
@@ -0,0 +1,60 @@ | |||
GaussianDust.csd | |||
Iain McCurdy [2013] | |||
<Cabbage> | |||
form caption("Gaussian Dust"), size(325, 350), pluginID("gaus") | |||
image bounds(0, 0, 325, 350), colour("DarkSlateGrey"), shape("rounded"), outline("white"), line(4) | |||
checkbox bounds( 15, 10, 80, 15), text("On/Off"), channel("onoff"), value(1), fontcolour("white") | |||
combobox bounds( 10, 40, 70, 20), channel("mode"), value(2), text("Held", "Reinit") | |||
rslider bounds(90, 10, 60, 60), text("Amplitude"), channel("amp"), range(0, 1, 0.5, 0.5, 0.001), fontcolour("white") | |||
rslider bounds(150, 10, 60, 60), text("Freq."), channel("freq"), range(0.1, 10000, 10, 0.25, 0.01), fontcolour("white") | |||
rslider bounds(205, 10, 60, 60), text("Deviation"), channel("dev"), range(0, 10, 1), fontcolour("white") | |||
rslider bounds(260, 10, 60, 60), text("Spread"), channel("spread"), range(0, 1, 1), fontcolour("white") | |||
xypad bounds( 40, 78, 245, 260), text("Freq./Deviation"), channel("freq", "dev"), rangex(0.1, 10000, 10), rangey(0, 10.00, 0) | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-dm0 -n -+rtmidi=null -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 64 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
instr 1 | |||
konoff chnget "onoff" ;read in on/off switch widget value | |||
if konoff==0 goto SKIP ;if on/off switch is off jump to skip label | |||
kamp chnget "amp" | |||
kfreq chnget "freq" | |||
kdev chnget "dev" | |||
kporttime linseg 0,0.01,0.1 | |||
kdev portk kdev,kporttime | |||
kmode chnget "mode" | |||
kmode = kmode - 1 | |||
kspread chnget "spread" | |||
ktrig changed kmode ;IF gkmode COUNTER IS CHANGED GENERATE A MOMENTARY '1' IMPULSE | |||
if ktrig==1 then ;THEREFORE IF gkmode HAS BEEN CHANGED... | |||
reinit UPDATE ;BEGIN A REINITIALISATION PASS AT LABEL 'UPDATE' | |||
endif ;END OF CONDITIONAL BRANCH | |||
UPDATE: ;LABEL 'UPDATE'. REINITIALISATION BEGINS FROM HERE. | |||
asig gausstrig kamp, kfreq, kdev, i(kmode) ;GENERATE GAUSSIAM TRIGGERS | |||
kpan random 0.5-(kspread*0.5), 0.5+(kspread*0.5) | |||
asigL,asigR pan2 asig,kpan | |||
rireturn ;RETURN FROM REINITIALISATION PASS | |||
outs asigL,asigR ;SEND AUDIO SIGNAL TO OUTPUT | |||
SKIP: ;A label. Skip to here is on/off switch is off | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [60*60*24*7] ;instrument plays for a week | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,124 @@ | |||
<Cabbage> | |||
form caption("Granular synthesizer") size(428, 220), colour("black"), pluginID("gra1") | |||
rslider bounds(0, 0, 80, 80) channel("random"), range(1, 2000, 200), caption("Random freq"), colour("white"), midictrl(1, 1) | |||
rslider bounds(85, 0, 80, 80) channel("size"), range(0.005,.2, .02), caption("Grain size"), colour("white"), midictrl(1, 2) | |||
rslider bounds(170, 0, 80, 80) channel("density"), range(1, 10, 1), caption("Density"), colour("white"), midictrl(1, 3) | |||
rslider bounds(255, 0, 80, 80) channel("reverb"), range(0, 1, 0), caption("Reverb"), colour("white"), midictrl(1, 4) | |||
rslider bounds(340, 0, 80, 80) channel("freq"), range(0,30, 0), caption("Flanger"), colour("white"), midictrl(1, 5) | |||
combobox bounds(50, 90, 160, 20), channel("func1"), value(14), colour("darkgrey"), text("wt1","wt2","wt3","wt4","wt5","wt6","wt7","wt8","wt9","wt10","wt11","wt12","wt13","wt14") | |||
combobox bounds(220, 90, 160, 20), channel("func2"), value(5), colour("darkgrey"), text("wt1","wt2","wt3","wt4","wt5","wt6","wt7","wt8","wt9","wt10","wt11","wt12","wt13","wt14") | |||
keyboard pos(0, 130), size(420, 50) | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n -+rtmidi=NULL -M0 --midi-key-cps=5 --midi-velocity-amp=4 | |||
;-n -d -+rtmidi=NULL -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
;Author: Giorgio Zucco (2012) | |||
sr = 44100 | |||
ksmps = 64 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
gasig1 init 0 | |||
gasig2 init 0 | |||
giadd ftgen 14,0,8193,9,1,1,0,1.02,.28,0,.98,.14,0,4,.22,0,7,.39,0 ;bell | |||
gihanning ftgen 200,0,8192,-20,2 ;Hanning | |||
gibarlett ftgen 300,0,8192,-20,3 ;Bartlett (Triangle) | |||
instr 1 | |||
gkfn1 chnget "func1";grain waveform | |||
gkfn2 chnget "func2";grain waveform | |||
;grain | |||
kcps = p5*.5 ;grain freq | |||
kfmd chnget "random";variazione random in Hz. | |||
kgdur chnget "size" ;durata dei grani in secondi | |||
iovrlp chnget "density" ;numero di grani sovrapposti | |||
kfreq chnget "freq" | |||
iwfn1 = 200 ;inviluppo a1 | |||
iwfn2 = 300 ;inviluppo a2 | |||
;adsr | |||
iatt = 0.2 | |||
idec = 1 | |||
isus = 1 | |||
irel = .5 | |||
a1 grain2 kcps,kfmd,kgdur,iovrlp,gkfn1,iwfn1 | |||
a2 grain2 kcps*2,kfmd,kgdur,iovrlp,gkfn2,iwfn2 | |||
adel1 randh .009,kfreq | |||
adel2 randh .009,kfreq | |||
klfo poscil .01,.1,4 ;Lfo | |||
afl1 flanger a1,adel1+klfo,.9 | |||
afl2 flanger a2,adel2+klfo,.9 | |||
kadsr mxadsr iatt,idec,isus,irel | |||
;aleft clip (a1+afl1)*.1,2,.8 | |||
;aright clip (a2+afl2)*.1,2,.8 | |||
;al1 = (a1+afl1) | |||
;ar1 = (a2+afl2) | |||
;aleft clip al1*.1,2,.8 | |||
;aright clip ar1*.1,2,.8 | |||
; Or using function syntax | |||
aleft = clip ((a1+afl1)*.1,2,.8) | |||
aright = clip ((a2+afl2)*.1,2,.8) | |||
outs (aleft)*kadsr,(aright)*kadsr | |||
vincr gasig1,(aleft)*kadsr | |||
vincr gasig2,(aright)*kadsr | |||
endin | |||
instr 3 | |||
klevel chnget "reverb" | |||
al,ar reverbsc gasig1*.5,gasig2*.5,.85,16000,sr,0 | |||
kpan1 randomi 0,1,4 | |||
kpan2 randomi 0,1,8 | |||
aout1,aout2 pan2 al,kpan1 | |||
aout3,aout4 pan2 ar,1-kpan2 | |||
outs (aout1+aout2)*klevel,(aout3+aout4)*klevel | |||
clear gasig1,gasig2 | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
f1 0 1024 10 1 | |||
f2 0 4096 10 1 0 .111 0 .04 0 .02 0 .012 ;Triangular1 | |||
f3 0 4096 10 1 0 .111 0 .04 0 .02 0 .012 0 .009 0 .007;Triangular 2 | |||
f5 0 4096 10 1 0 0.3 0 0.2 0 0.14 0 0.1 0 0.09 0 0.07 0 0.06 0 0.05 ;square | |||
f4 0 4096 10 1 0 .333333 0 .2 0 .142857 0 .111111 0 .090909 0 .076923 ; Square | |||
f6 0 4096 10 1 1 1 1 .7 .5 .3 .1 ;pulse | |||
f7 0 4096 10 1 0 0 1;sine+4 | |||
f8 0 4096 10 1 0 0 0 1;sine+5 | |||
f9 0 4096 10 1 0 0 0 0 1;sine+6 | |||
f10 0 4096 10 1 0 0 0 0 0 1;sine+7 | |||
f11 0 4096 10 1 0 0 0 0 0 0 1;sine+8 | |||
f12 0 4096 10 1 0 0 0 0 0 0 0 1;sine+9 | |||
f13 0 4096 10 1 0 0 0 0 0 0 0 0 1;sine+10 | |||
f0 36000 | |||
i3 0 36000 | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,488 @@ | |||
GuitarChords | |||
------------ | |||
Mute buttons dictate the behaviour of a string when it is open and un-fretted, they have no effect on fretted notes. | |||
<Cabbage> | |||
form size(620, 260), caption("Guitar Chords"), pluginID("guit") | |||
label bounds( 56, 0, 80, 9), text("Mute"), FontColour("white") | |||
combobox bounds( 3, 10, 50, 15), channel("TuneHighE"), value(64), text("G9","F#9","F9","E9","D#9","D9","C#9","C9","B8","A#8","A8","G#8","G8","F#8","F8","E8","D#8","D8","C#8","C8","B7","A#7","A7","G#7","G7","F#7","F7","E7","D#7","D7","C#7","C7","B6","A#6","A6","G#6","G6","F#6","F6","E6","D#6","D6","C#6","C6","B5","A#5","A5","G#5","G5","F#5","F5","E5","D#5","D5","C#5","C5","B4","A#4","A4","G#4","G4","F#4","F4","E4","D#4","D4","C#4","C4","B3","A#3","A3","G#3","G3","F#3","F3","E3","D#3","D3","C#3","C3","B2","A#2","A2","G#2","G2","F#2","F2","E2","D#2","D2","C#2","C2","B1","A#1","A1","G#1","G1","F#1","F1","E1","D#1","D1","C#1","C1","B0","A#0","A0","G#0","G0","F#0","F0","E0","D#0","D0","C#0","C0","B-1","A#-1","A-1","G#-1","G-1","F#-1","F-1","E-1","D#-1","D-1","C#-1","C-1") | |||
checkbox bounds( 59, 10, 15, 15), channel("HighE0"), colour("255, 20, 20") | |||
checkbox bounds(101, 10, 15, 15), channel("HighE1"), colour("250,250, 0") | |||
checkbox bounds(153, 10, 15, 15), channel("HighE2"), colour("250,250, 0") | |||
checkbox bounds(202, 10, 15, 15), channel("HighE3"), colour("250,250, 0") | |||
checkbox bounds(249, 10, 15, 15), channel("HighE4"), colour("250,250, 0") | |||
checkbox bounds(295, 10, 15, 15), channel("HighE5"), colour("250,250, 0") | |||
checkbox bounds(339, 10, 15, 15), channel("HighE6"), colour("250,250, 0") | |||
checkbox bounds(381, 10, 15, 15), channel("HighE7"), colour("250,250, 0") | |||
checkbox bounds(420, 10, 15, 15), channel("HighE8"), colour("250,250, 0") | |||
checkbox bounds(460, 10, 15, 15), channel("HighE9"), colour("250,250, 0") | |||
checkbox bounds(495, 10, 15, 15), channel("HighE10"), colour("250,250, 0") | |||
checkbox bounds(529, 10, 15, 15), channel("HighE11"), colour("250,250, 0") | |||
checkbox bounds(561, 10, 15, 15), channel("HighE12"), colour("250,250, 0") | |||
checkbox bounds(591, 10, 15, 15), channel("HighE13"), colour("250,250, 0") | |||
combobox bounds( 3, 30, 50, 15), channel("TuneB"), value(69), text("G9","F#9","F9","E9","D#9","D9","C#9","C9","B8","A#8","A8","G#8","G8","F#8","F8","E8","D#8","D8","C#8","C8","B7","A#7","A7","G#7","G7","F#7","F7","E7","D#7","D7","C#7","C7","B6","A#6","A6","G#6","G6","F#6","F6","E6","D#6","D6","C#6","C6","B5","A#5","A5","G#5","G5","F#5","F5","E5","D#5","D5","C#5","C5","B4","A#4","A4","G#4","G4","F#4","F4","E4","D#4","D4","C#4","C4","B3","A#3","A3","G#3","G3","F#3","F3","E3","D#3","D3","C#3","C3","B2","A#2","A2","G#2","G2","F#2","F2","E2","D#2","D2","C#2","C2","B1","A#1","A1","G#1","G1","F#1","F1","E1","D#1","D1","C#1","C1","B0","A#0","A0","G#0","G0","F#0","F0","E0","D#0","D0","C#0","C0","B-1","A#-1","A-1","G#-1","G-1","F#-1","F-1","E-1","D#-1","D-1","C#-1","C-1") | |||
checkbox bounds( 59, 30, 15, 15), channel("B0"), colour("255, 20, 20") | |||
checkbox bounds(101, 30, 15, 15), channel("B1"), colour("250,250, 0"), value(1) | |||
checkbox bounds(153, 30, 15, 15), channel("B2"), colour("250,250, 0") | |||
checkbox bounds(202, 30, 15, 15), channel("B3"), colour("250,250, 0") | |||
checkbox bounds(249, 30, 15, 15), channel("B4"), colour("250,250, 0") | |||
checkbox bounds(295, 30, 15, 15), channel("B5"), colour("250,250, 0") | |||
checkbox bounds(339, 30, 15, 15), channel("B6"), colour("250,250, 0") | |||
checkbox bounds(381, 30, 15, 15), channel("B7"), colour("250,250, 0") | |||
checkbox bounds(420, 30, 15, 15), channel("B8"), colour("250,250, 0") | |||
checkbox bounds(460, 30, 15, 15), channel("B9"), colour("250,250, 0") | |||
checkbox bounds(495, 30, 15, 15), channel("B10"), colour("250,250, 0") | |||
checkbox bounds(529, 30, 15, 15), channel("B11"), colour("250,250, 0") | |||
checkbox bounds(561, 30, 15, 15), channel("B12"), colour("250,250, 0") | |||
checkbox bounds(591, 30, 15, 15), channel("B13"), colour("250,250, 0") | |||
combobox bounds( 3, 50, 50, 15), channel("TuneG"), value(73), text("G9","F#9","F9","E9","D#9","D9","C#9","C9","B8","A#8","A8","G#8","G8","F#8","F8","E8","D#8","D8","C#8","C8","B7","A#7","A7","G#7","G7","F#7","F7","E7","D#7","D7","C#7","C7","B6","A#6","A6","G#6","G6","F#6","F6","E6","D#6","D6","C#6","C6","B5","A#5","A5","G#5","G5","F#5","F5","E5","D#5","D5","C#5","C5","B4","A#4","A4","G#4","G4","F#4","F4","E4","D#4","D4","C#4","C4","B3","A#3","A3","G#3","G3","F#3","F3","E3","D#3","D3","C#3","C3","B2","A#2","A2","G#2","G2","F#2","F2","E2","D#2","D2","C#2","C2","B1","A#1","A1","G#1","G1","F#1","F1","E1","D#1","D1","C#1","C1","B0","A#0","A0","G#0","G0","F#0","F0","E0","D#0","D0","C#0","C0","B-1","A#-1","A-1","G#-1","G-1","F#-1","F-1","E-1","D#-1","D-1","C#-1","C-1") | |||
checkbox bounds( 59, 50, 15, 15), channel("G0"), colour("255, 20, 20") | |||
checkbox bounds(101, 50, 15, 15), channel("G1"), colour("250,250, 0") | |||
checkbox bounds(153, 50, 15, 15), channel("G2"), colour("250,250, 0") | |||
checkbox bounds(202, 50, 15, 15), channel("G3"), colour("250,250, 0") | |||
checkbox bounds(249, 50, 15, 15), channel("G4"), colour("250,250, 0") | |||
checkbox bounds(295, 50, 15, 15), channel("G5"), colour("250,250, 0") | |||
checkbox bounds(339, 50, 15, 15), channel("G6"), colour("250,250, 0") | |||
checkbox bounds(381, 50, 15, 15), channel("G7"), colour("250,250, 0") | |||
checkbox bounds(420, 50, 15, 15), channel("G8"), colour("250,250, 0") | |||
checkbox bounds(460, 50, 15, 15), channel("G9"), colour("250,250, 0") | |||
checkbox bounds(495, 50, 15, 15), channel("G10"), colour("250,250, 0") | |||
checkbox bounds(529, 50, 15, 15), channel("G11"), colour("250,250, 0") | |||
checkbox bounds(561, 50, 15, 15), channel("G12"), colour("250,250, 0") | |||
checkbox bounds(591, 50, 15, 15), channel("G13"), colour("250,250, 0") | |||
combobox bounds( 3, 70, 50, 15), channel("TuneD"), value(78), text("G9","F#9","F9","E9","D#9","D9","C#9","C9","B8","A#8","A8","G#8","G8","F#8","F8","E8","D#8","D8","C#8","C8","B7","A#7","A7","G#7","G7","F#7","F7","E7","D#7","D7","C#7","C7","B6","A#6","A6","G#6","G6","F#6","F6","E6","D#6","D6","C#6","C6","B5","A#5","A5","G#5","G5","F#5","F5","E5","D#5","D5","C#5","C5","B4","A#4","A4","G#4","G4","F#4","F4","E4","D#4","D4","C#4","C4","B3","A#3","A3","G#3","G3","F#3","F3","E3","D#3","D3","C#3","C3","B2","A#2","A2","G#2","G2","F#2","F2","E2","D#2","D2","C#2","C2","B1","A#1","A1","G#1","G1","F#1","F1","E1","D#1","D1","C#1","C1","B0","A#0","A0","G#0","G0","F#0","F0","E0","D#0","D0","C#0","C0","B-1","A#-1","A-1","G#-1","G-1","F#-1","F-1","E-1","D#-1","D-1","C#-1","C-1") | |||
checkbox bounds( 59, 70, 15, 15), channel("D0"), colour("255, 20, 20") | |||
checkbox bounds(101, 70, 15, 15), channel("D1"), colour("250,250, 0") | |||
checkbox bounds(153, 70, 15, 15), channel("D2"), colour("250,250, 0"), value(1) | |||
checkbox bounds(202, 70, 15, 15), channel("D3"), colour("250,250, 0") | |||
checkbox bounds(249, 70, 15, 15), channel("D4"), colour("250,250, 0") | |||
checkbox bounds(295, 70, 15, 15), channel("D5"), colour("250,250, 0") | |||
checkbox bounds(339, 70, 15, 15), channel("D6"), colour("250,250, 0") | |||
checkbox bounds(381, 70, 15, 15), channel("D7"), colour("250,250, 0") | |||
checkbox bounds(420, 70, 15, 15), channel("D8"), colour("250,250, 0") | |||
checkbox bounds(460, 70, 15, 15), channel("D9"), colour("250,250, 0") | |||
checkbox bounds(495, 70, 15, 15), channel("D10"), colour("250,250, 0") | |||
checkbox bounds(529, 70, 15, 15), channel("D11"), colour("250,250, 0") | |||
checkbox bounds(561, 70, 15, 15), channel("D12"), colour("250,250, 0") | |||
checkbox bounds(591, 70, 15, 15), channel("D13"), colour("250,250, 0") | |||
combobox bounds( 3, 90, 50, 15), channel("TuneA"), value(83), text("G9","F#9","F9","E9","D#9","D9","C#9","C9","B8","A#8","A8","G#8","G8","F#8","F8","E8","D#8","D8","C#8","C8","B7","A#7","A7","G#7","G7","F#7","F7","E7","D#7","D7","C#7","C7","B6","A#6","A6","G#6","G6","F#6","F6","E6","D#6","D6","C#6","C6","B5","A#5","A5","G#5","G5","F#5","F5","E5","D#5","D5","C#5","C5","B4","A#4","A4","G#4","G4","F#4","F4","E4","D#4","D4","C#4","C4","B3","A#3","A3","G#3","G3","F#3","F3","E3","D#3","D3","C#3","C3","B2","A#2","A2","G#2","G2","F#2","F2","E2","D#2","D2","C#2","C2","B1","A#1","A1","G#1","G1","F#1","F1","E1","D#1","D1","C#1","C1","B0","A#0","A0","G#0","G0","F#0","F0","E0","D#0","D0","C#0","C0","B-1","A#-1","A-1","G#-1","G-1","F#-1","F-1","E-1","D#-1","D-1","C#-1","C-1") | |||
checkbox bounds( 59, 90, 15, 15), channel("A0"), colour("255, 20, 20") | |||
checkbox bounds(101, 90, 15, 15), channel("A1"), colour("250,250, 0") | |||
checkbox bounds(153, 90, 15, 15), channel("A2"), colour("250,250, 0") | |||
checkbox bounds(202, 90, 15, 15), channel("A3"), colour("250,250, 0"), value(1) | |||
checkbox bounds(249, 90, 15, 15), channel("A4"), colour("250,250, 0") | |||
checkbox bounds(295, 90, 15, 15), channel("A5"), colour("250,250, 0") | |||
checkbox bounds(339, 90, 15, 15), channel("A6"), colour("250,250, 0") | |||
checkbox bounds(381, 90, 15, 15), channel("A7"), colour("250,250, 0") | |||
checkbox bounds(420, 90, 15, 15), channel("A8"), colour("250,250, 0") | |||
checkbox bounds(460, 90, 15, 15), channel("A9"), colour("250,250, 0") | |||
checkbox bounds(495, 90, 15, 15), channel("A10"), colour("250,250, 0") | |||
checkbox bounds(529, 90, 15, 15), channel("A11"), colour("250,250, 0") | |||
checkbox bounds(561, 90, 15, 15), channel("A12"), colour("250,250, 0") | |||
checkbox bounds(591, 90, 15, 15), channel("A13"), colour("250,250, 0") | |||
combobox bounds( 3,110, 50, 15), channel("TuneLowE"), value(88), text("G9","F#9","F9","E9","D#9","D9","C#9","C9","B8","A#8","A8","G#8","G8","F#8","F8","E8","D#8","D8","C#8","C8","B7","A#7","A7","G#7","G7","F#7","F7","E7","D#7","D7","C#7","C7","B6","A#6","A6","G#6","G6","F#6","F6","E6","D#6","D6","C#6","C6","B5","A#5","A5","G#5","G5","F#5","F5","E5","D#5","D5","C#5","C5","B4","A#4","A4","G#4","G4","F#4","F4","E4","D#4","D4","C#4","C4","B3","A#3","A3","G#3","G3","F#3","F3","E3","D#3","D3","C#3","C3","B2","A#2","A2","G#2","G2","F#2","F2","E2","D#2","D2","C#2","C2","B1","A#1","A1","G#1","G1","F#1","F1","E1","D#1","D1","C#1","C1","B0","A#0","A0","G#0","G0","F#0","F0","E0","D#0","D0","C#0","C0","B-1","A#-1","A-1","G#-1","G-1","F#-1","F-1","E-1","D#-1","D-1","C#-1","C-1") | |||
checkbox bounds( 59,110, 15, 15), channel("LowE0"), colour("255, 20, 20"), value(1) | |||
checkbox bounds(101,110, 15, 15), channel("LowE1"), colour("250,250, 0");52 | |||
checkbox bounds(153,110, 15, 15), channel("LowE2"), colour("250,250, 0");49 | |||
checkbox bounds(202,110, 15, 15), channel("LowE3"), colour("250,250, 0");47 | |||
checkbox bounds(249,110, 15, 15), channel("LowE4"), colour("250,250, 0");46 | |||
checkbox bounds(295,110, 15, 15), channel("LowE5"), colour("250,250, 0");44 | |||
checkbox bounds(339,110, 15, 15), channel("LowE6"), colour("250,250, 0");42 | |||
checkbox bounds(381,110, 15, 15), channel("LowE7"), colour("250,250, 0");39 | |||
checkbox bounds(420,110, 15, 15), channel("LowE8"), colour("250,250, 0");40 | |||
checkbox bounds(460,110, 15, 15), channel("LowE9"), colour("250,250, 0");35 | |||
checkbox bounds(495,110, 15, 15), channel("LowE10"), colour("250,250, 0");34 | |||
checkbox bounds(529,110, 15, 15), channel("LowE11"), colour("250,250, 0");32 | |||
checkbox bounds(561,110, 15, 15), channel("LowE12"), colour("250,250, 0");30 | |||
checkbox bounds(591,110, 15, 15), channel("LowE13"), colour("250,250, 0"); | |||
; frets | |||
line bounds(134, 5, 2, 130), colour(50,50,50) ; ; | |||
line bounds(185, 5, 2, 130), colour(50,50,50) ;3 ; | |||
line bounds(232, 5, 2, 130), colour(50,50,50) ; ; | |||
line bounds(279, 5, 2, 130), colour(50,50,50) ;5 ; | |||
line bounds(324, 5, 2, 130), colour(50,50,50) ; ; | |||
line bounds(367, 5, 2, 130), colour(50,50,50) ;7 ; | |||
line bounds(408, 5, 2, 130), colour(50,50,50) ; ; | |||
line bounds(447, 5, 2, 130), colour(50,50,50) ;9 ; | |||
line bounds(484, 5, 2, 130), colour(50,50,50) ; ; | |||
line bounds(519, 5, 2, 130), colour(50,50,50) ; ; | |||
line bounds(552, 5, 2, 130), colour(50,50,50) ;12 ; | |||
line bounds(583, 5, 2, 130), colour(50,50,50) ; ; | |||
line bounds(612, 5, 2, 130), colour(50,50,50) ; | |||
image bounds(185, 5, 47,130), colour("tan"), line(0) ; 3rd fret | |||
image bounds(279, 5, 45,130), colour("tan"), line(0) ; 5th fret | |||
image bounds(367, 5, 42,130), colour("tan"), line(0) ; 7th fret | |||
image bounds(447, 5, 37,130), colour("tan"), line(0) ; 9th fret | |||
image bounds(552, 5, 31,130), colour("tan"), line(0) ; 12th fret | |||
image bounds( 80, 0,624,140), colour("white"), line(0) ; neck | |||
button bounds( 80,150,100, 30), text("strum"), channel("strum"), value(0), FontColour("yellow") | |||
combobox bounds( 80,185, 95, 17), channel("GuitarType"), value(0), text("6 String","12 String") | |||
checkbox bounds(185,150,100, 20), channel("ReverseStrum"), text("Reverse") colour("lime") | |||
hslider bounds(280,143,270, 40), text("Gap"), colour("tan"), FontColour(195,126, 0), channel("gap"), range(0,0.5,0.05,0.5,0.0001) | |||
hslider bounds(280,168,270, 40), text("Damp"), colour("tan"), FontColour(195,126, 0), channel("damp"), range(0.01,0.99,0.17) | |||
hslider bounds(280,193,270, 40), text("Pos."), colour("tan"), FontColour(195,126, 0), channel("pos"), range(0.0001, 0.5, 0.02, 0.5, 0.001) | |||
image bounds(5, 235, 470, 20), colour(75, 85, 90, 50), plant("credit"){ | |||
label bounds(0.03, 0.1, .6, .7), text("Author: Iain McCurdy |2013|"), colour("white"), FontColour(195,126, 0) | |||
} | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-n -d -+rtmidi=NULL -M0 --midi-key-cps=4 --midi-velocity-amp=5 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 64 | |||
nchnls = 2 | |||
0dbfs=1 | |||
iDetuneRange = 0.025 | |||
gidetune ftgen 0, 0, 8, -21, 6, iDetuneRange ; table of detuning values for each string in a 12 string guitar configuration | |||
instr 1 | |||
; radio buttons mechanism | |||
koff = 0 ; checkbox value when off (needs to be k-rate) | |||
kSumHighE = 0 ; sum of high E string buttons | |||
kSumB = 0 ; sum of B string buttons | |||
kSumG = 0 ; sum of G string buttons | |||
kSumD = 0 ; sum of D string buttons | |||
kSumA = 0 ; sum of A string buttons | |||
kSumLowE = 0 ; sum of low E string buttons | |||
kTrigSumHighE = 0 ; sum of high E string on triggers | |||
kTrigSumB = 0 ; sum of B string change triggers | |||
kTrigSumG = 0 ; sum of G string change triggers | |||
kTrigSumD = 0 ; sum of D string change triggers | |||
kTrigSumA = 0 ; sum of A string change triggers | |||
kTrigSumLowE = 0 ; sum of low E string change triggers | |||
kChangeTrigHighE = 0 ; sum of high E string change triggers | |||
kChangeTrigB = 0 ; sum of B string change triggers | |||
kChangeTrigG = 0 ; sum of G string change triggers | |||
kChangeTrigD = 0 ; sum of D string change triggers | |||
kChangeTrigA = 0 ; sum of A string change triggers | |||
kChangeTrigLowE = 0 ; sum of low E string change triggers | |||
; macro for string set-up | |||
#define STRING_SETUP(LABEL) | |||
# | |||
k$LABEL0 chnget "$LABEL0" | |||
kTune$LABEL chnget "Tune$LABEL" | |||
# | |||
$STRING_SETUP(HighE) | |||
$STRING_SETUP(B) | |||
$STRING_SETUP(G) | |||
$STRING_SETUP(D) | |||
$STRING_SETUP(A) | |||
$STRING_SETUP(LowE) | |||
; macro for check box input | |||
#define INPUT(N'LABEL) | |||
# | |||
k$LABEL$N chnget "$LABEL$N" ; read in checkbox value | |||
kSum$LABEL = kSum$LABEL + k$LABEL$N ; accumulate to value for all checkboxes for this string | |||
ktrig$N trigger k$LABEL$N,0.5,0 ; generate a trigger if this checkbox is switched *on* | |||
kTrigSum$LABEL = kTrigSum$LABEL + ktrig$N ; accumulation of all 'on' triggers for this string | |||
kChangeTrig changed k$LABEL$N ; generate a different trigger if this checkbox is switched either on or off | |||
kChangeTrig$LABEL = kChangeTrig$LABEL+kChangeTrig ; accumlation of all 'change' triggers for this string | |||
# | |||
; macro for radio button switching mechanism | |||
#define SWITCH(N'LABEL) | |||
# | |||
if ktrig$N==1 then | |||
k$LABELVal = $N | |||
kgoto SKIP$LABEL$N | |||
endif | |||
chnset koff,"$LABEL$N" | |||
SKIP$LABEL$N: | |||
# | |||
$INPUT(1'HighE) | |||
$INPUT(2'HighE) | |||
$INPUT(3'HighE) | |||
$INPUT(4'HighE) | |||
$INPUT(5'HighE) | |||
$INPUT(6'HighE) | |||
$INPUT(7'HighE) | |||
$INPUT(8'HighE) | |||
$INPUT(9'HighE) | |||
$INPUT(10'HighE) | |||
$INPUT(11'HighE) | |||
$INPUT(12'HighE) | |||
$INPUT(13'HighE) | |||
if(kTrigSum$LABEL>0) then | |||
$SWITCH(1'HighE) | |||
$SWITCH(2'HighE) | |||
$SWITCH(3'HighE) | |||
$SWITCH(4'HighE) | |||
$SWITCH(5'HighE) | |||
$SWITCH(6'HighE) | |||
$SWITCH(7'HighE) | |||
$SWITCH(8'HighE) | |||
$SWITCH(9'HighE) | |||
$SWITCH(10'HighE) | |||
$SWITCH(11'HighE) | |||
$SWITCH(12'HighE) | |||
$SWITCH(13'HighE) | |||
endif | |||
$INPUT(1'B) | |||
$INPUT(2'B) | |||
$INPUT(3'B) | |||
$INPUT(4'B) | |||
$INPUT(5'B) | |||
$INPUT(6'B) | |||
$INPUT(7'B) | |||
$INPUT(8'B) | |||
$INPUT(9'B) | |||
$INPUT(10'B) | |||
$INPUT(11'B) | |||
$INPUT(12'B) | |||
$INPUT(13'B) | |||
if(kTrigSum$LABEL>0) then | |||
$SWITCH(1'B) | |||
$SWITCH(2'B) | |||
$SWITCH(3'B) | |||
$SWITCH(4'B) | |||
$SWITCH(5'B) | |||
$SWITCH(6'B) | |||
$SWITCH(7'B) | |||
$SWITCH(8'B) | |||
$SWITCH(9'B) | |||
$SWITCH(10'B) | |||
$SWITCH(11'B) | |||
$SWITCH(12'B) | |||
$SWITCH(13'B) | |||
endif | |||
$INPUT(1'G) | |||
$INPUT(2'G) | |||
$INPUT(3'G) | |||
$INPUT(4'G) | |||
$INPUT(5'G) | |||
$INPUT(6'G) | |||
$INPUT(7'G) | |||
$INPUT(8'G) | |||
$INPUT(9'G) | |||
$INPUT(10'G) | |||
$INPUT(11'G) | |||
$INPUT(12'G) | |||
$INPUT(13'G) | |||
if(kTrigSum$LABEL>0) then | |||
$SWITCH(1'G) | |||
$SWITCH(2'G) | |||
$SWITCH(3'G) | |||
$SWITCH(4'G) | |||
$SWITCH(5'G) | |||
$SWITCH(6'G) | |||
$SWITCH(7'G) | |||
$SWITCH(8'G) | |||
$SWITCH(9'G) | |||
$SWITCH(10'G) | |||
$SWITCH(11'G) | |||
$SWITCH(12'G) | |||
$SWITCH(13'G) | |||
endif | |||
$INPUT(1'D) | |||
$INPUT(2'D) | |||
$INPUT(3'D) | |||
$INPUT(4'D) | |||
$INPUT(5'D) | |||
$INPUT(6'D) | |||
$INPUT(7'D) | |||
$INPUT(8'D) | |||
$INPUT(9'D) | |||
$INPUT(10'D) | |||
$INPUT(11'D) | |||
$INPUT(12'D) | |||
$INPUT(13'D) | |||
if(kTrigSum$LABEL>0) then | |||
$SWITCH(1'D) | |||
$SWITCH(2'D) | |||
$SWITCH(3'D) | |||
$SWITCH(4'D) | |||
$SWITCH(5'D) | |||
$SWITCH(6'D) | |||
$SWITCH(7'D) | |||
$SWITCH(8'D) | |||
$SWITCH(9'D) | |||
$SWITCH(10'D) | |||
$SWITCH(11'D) | |||
$SWITCH(12'D) | |||
$SWITCH(13'D) | |||
endif | |||
$INPUT(1'A) | |||
$INPUT(2'A) | |||
$INPUT(3'A) | |||
$INPUT(4'A) | |||
$INPUT(5'A) | |||
$INPUT(6'A) | |||
$INPUT(7'A) | |||
$INPUT(8'A) | |||
$INPUT(9'A) | |||
$INPUT(10'A) | |||
$INPUT(11'A) | |||
$INPUT(12'A) | |||
$INPUT(13'A) | |||
if(kTrigSum$LABEL>0) then | |||
$SWITCH(1'A) | |||
$SWITCH(2'A) | |||
$SWITCH(3'A) | |||
$SWITCH(4'A) | |||
$SWITCH(5'A) | |||
$SWITCH(6'A) | |||
$SWITCH(7'A) | |||
$SWITCH(8'A) | |||
$SWITCH(9'A) | |||
$SWITCH(10'A) | |||
$SWITCH(11'A) | |||
$SWITCH(12'A) | |||
$SWITCH(13'A) | |||
endif | |||
$INPUT(1'LowE) | |||
$INPUT(2'LowE) | |||
$INPUT(3'LowE) | |||
$INPUT(4'LowE) | |||
$INPUT(5'LowE) | |||
$INPUT(6'LowE) | |||
$INPUT(7'LowE) | |||
$INPUT(8'LowE) | |||
$INPUT(9'LowE) | |||
$INPUT(10'LowE) | |||
$INPUT(11'LowE) | |||
$INPUT(12'LowE) | |||
$INPUT(13'LowE) | |||
if(kTrigSum$LABEL>0) then | |||
$SWITCH(1'LowE) | |||
$SWITCH(2'LowE) | |||
$SWITCH(3'LowE) | |||
$SWITCH(4'LowE) | |||
$SWITCH(5'LowE) | |||
$SWITCH(6'LowE) | |||
$SWITCH(7'LowE) | |||
$SWITCH(8'LowE) | |||
$SWITCH(9'LowE) | |||
$SWITCH(10'LowE) | |||
$SWITCH(11'LowE) | |||
$SWITCH(12'LowE) | |||
$SWITCH(13'LowE) | |||
endif | |||
; macro that checks for open strings | |||
#define OPEN_STRING(LABEL) | |||
# | |||
if(kSum$LABEL==0) then | |||
k$LABELVal = 0 | |||
endif | |||
# | |||
$OPEN_STRING(HighE) | |||
$OPEN_STRING(B) | |||
$OPEN_STRING(G) | |||
$OPEN_STRING(D) | |||
$OPEN_STRING(A) | |||
$OPEN_STRING(LowE) | |||
; macro for operations when a string is plucked | |||
#define PLAY_STRING(LABEL'StringNum) | |||
# | |||
k$LABELNum = k$LABELVal + (128 - kTune$LABEL) ; derive MIDI note number (note that combobox value has to be inverted | |||
k$LABELCps = cpsmidinn(k$LABELNum) ; convert to cps | |||
kTimeElapsed timeinsts ; elapsed time form the start of this note (this will be used to prevent premature triggering of the string) | |||
if(kChangeTrig$LABEL==1&&kTimeElapsed>0.1) then ; if a change note trigger for this string has been received and time buffer has elapsed... | |||
turnoff2 2.$StringNum,4,1 ; turnoff this string | |||
if(kSum$LABEL==0&&k$LABEL0==1) kgoto SKIP$LABEL ; if this is an open and muted string jump string playing code | |||
schedkwhen kChangeTrig$LABEL,0,0,2.$StringNum,0,20,k$LABELCps,$StringNum ; play string (instr 2) | |||
endif | |||
if(kSum$LABEL==0&&k$LABEL0==1) kgoto SKIP$LABEL ; if this is an open and muted string jump string playing code | |||
kRndStrt random 0,kgap*0.15 | |||
schedkwhen ktrig,0,0,2.$StringNum,kstart+kRndStrt,20,k$LABELCps,$StringNum ; play string (instr 2) | |||
kstart = kstart + kgap ; increment start time | |||
SKIP$LABEL: ; label | |||
# | |||
kstrum chnget "strum" ; 'strum' button | |||
ktrig changed kstrum ; if 'strum' button has been clicked... | |||
if ktrig==1 then ; ... | |||
turnoff2 2,0,1 ; turn off all playing strings (in preparation for the new chord) | |||
endif | |||
kgap chnget "gap" | |||
kreverse chnget "ReverseStrum" | |||
if kreverse==0 then | |||
kstart = 0 ; start time (for first string plucked | |||
else | |||
kstart = kgap*5 | |||
kgap = -kgap | |||
endif | |||
$PLAY_STRING(LowE'1) | |||
$PLAY_STRING(A'2) | |||
$PLAY_STRING(D'3) | |||
$PLAY_STRING(G'4) | |||
$PLAY_STRING(B'5) | |||
$PLAY_STRING(HighE'6) | |||
endin | |||
instr 2 ; string pluck | |||
kdamp chnget "damp" ; damping | |||
iplk chnget "pos" ; pluck position | |||
iamp random 0.1,0.2 | |||
iGuitarType chnget "GuitarType" | |||
if(iGuitarType==2) then ; if 12 string guitar... | |||
kmvt1 jspline 0.15,0.2,0.4 ; a bit of random pick-up movement animates the tone of the guitar | |||
kmvt2 jspline 0.15,0.2,0.4 | |||
idtn table p5,gidetune ; detuning value. used in 12 string guitar only. | |||
if p5<5 then ; strings 1 - 4 are in octaves in a 12-string guitar | |||
a1 wgpluck2 iplk, iamp/2, p4, 0.2+kmvt1, kdamp | |||
a2 wgpluck2 iplk, iamp/2, p4*(2+idtn), 0.2+kmvt2, kdamp | |||
else ; strings 5 & 6 are in unison in a 12-string guitar | |||
a1 wgpluck2 iplk, iamp/2, p4, 0.2 +kmvt1, kdamp | |||
a2 wgpluck2 iplk, iamp/2, p4*(1+idtn), 0.2+rnd(0.5)+kmvt2, kdamp | |||
endif | |||
a2 delay a2,0.01+rnd(0.01) ; slight delay to second string | |||
asig = a1+a2 | |||
else ; otherwise 6 string | |||
kmvt jspline 0.15,0.2,0.4 | |||
asig wgpluck2 iplk, iamp, p4, 0.2+kmvt, kdamp | |||
endif | |||
aenv linsegr 0, 0.0008, 1, p3-0.1008, 0, 0.05, 0 ; amplitude envelope. Attack removes excessive 'click'. Decays to nothing across note duration (p3). Short release stage prevents click if a note is interrupted. | |||
/* FILTERING TO IMPROVE THE SOUND */ | |||
af1 resonz asig,200,200 | |||
af2 resonz asig,550,550 | |||
af3 resonz asig,2100,2100 | |||
asig sum af1,af2*5,af3 | |||
asig = asig/200 | |||
/* ------------------------------ */ | |||
asig = asig*aenv | |||
outs asig, asig | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 3600 | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,300 @@ | |||
<Cabbage> | |||
form caption("Inharmonic Synth"), size(445, 320), pluginID("InSy") | |||
image pos(0, 0), size(445, 290), colour("black"), shape("rounded"), outline("brown"), line(4) | |||
combobox caption("Instrument"), channel("Instr"), pos(275, 10), size(160, 90), value(4), text("Bass Guitar", "Dahina", "Banyan", "Xylophone", "Tibetan Bowl 180mm", "Spinel Sphere", "Pot Lid", "Red Cedar Wood Plate", "Tubular Bell", "Redwood Wood Plate", "Douglas Fir Wood Plate", "Uniform Wooden Bar", "Uniform Aluminium Bar", "Vibraphone 1", "Vibraphone 2", "Chalandi Plates", "Tibetan Bowl 152mm", "Tibetan Bowl 140mm", "Wine Glass", "Small Handbell", "Albert Clock Bell", "Wood Block") | |||
groupbox bounds(10, 10, 260, 90), text("Filter Envelope"){ | |||
rslider bounds( 10, 35,60,60), text("Amount"), colour("cornflowerblue"), channel("FAmt"), range(0, 1, 0.7) | |||
rslider bounds( 60, 35,60,60), text("Dec."), colour("cornflowerblue"), channel("FDec"), range(0, 1, 0.45) | |||
rslider bounds(110, 35,60,60), text("Sus."), colour("cornflowerblue"), channel("FSus"), range(0, 1, 0) | |||
rslider bounds(160, 35,60,60), text("Rel."), colour("cornflowerblue"), channel("FRel"), range(0, 1, 0.45) | |||
rslider bounds(210, 35,60,60), text("Shape"), channel("FShp"), colour("cornflowerblue"), range(-50, 50, -16) | |||
} | |||
groupbox bounds(10, 105, 210, 90), text("Amplitude Envelope"){ | |||
rslider bounds( 10,130,60,60), text("Att."), channel("AAtt"), colour("red"), range(0, 1, 0) | |||
rslider bounds( 60,130,60,60), text("Dec."), channel("ADec"), colour("red"),range(0, 1, 0.45) | |||
rslider bounds(110,130,60,60), text("Sus"), channel("ASus"), colour("red"),range(0, 1, 0) | |||
rslider bounds(160,130,60,60), text("Rel"), channel("ARel"), colour("red"),range(0, 1, 0.45) | |||
} | |||
groupbox bounds(225, 105, 210, 90), text("Chorus"){ | |||
checkbox channel("ChoOnOff"), pos(235,135), size(40, 43), value(1) | |||
label bounds(235,178, 40, 11), text("On/Off"), colour("black") | |||
rslider bounds(275,130,60,60), text("Mix"), channel("ChoMix"), range(0, 1, 0.5) | |||
rslider bounds(325,130,60,60), text("Depth"), channel("ChoDep"), range(0, 0.1, 0.01,0.5, 0.001) | |||
rslider bounds(375,130,60,60), text("Rate"), channel("ChoRte"), range(0, 20, 0.96, 0.5) | |||
} | |||
keyboard pos(10, 200), size(425, 80) | |||
image bounds(5, 295, 240, 22), colour(75, 85, 90, 100), plant("credit"){ | |||
label bounds(0.03, 0.15, .9, .7), text("Author: Iain McCurdy |2012|"), colour("white") | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-dm0 -n -+rtmidi=null -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 64 | |||
nchnls = 2 | |||
0dbfs = 1 ;MAXIMUM AMPLITUDE | |||
massign 3,2 | |||
;Author: Iain McCurdy (2012) | |||
;FUNCTION TABLES STORING MODAL FREQUENCY RATIOS=================================================================================================================================== | |||
;plucked string | |||
girtos1 ftgen 0,0,-20, -2, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 | |||
;dahina | |||
girtos2 ftgen 0,0,-6,-2, 1, 2.89, 4.95, 6.99, 8.01, 9.02 | |||
;banyan | |||
girtos3 ftgen 0,0,-6,-2, 1, 2.0, 3.01, 4.01, 4.69, 5.63 | |||
;xylophone | |||
girtos4 ftgen 0,0,-6,-2, 1, 3.932, 9.538, 16.688, 24.566, 31.147 | |||
;tibetan bowl (180mm) | |||
girtos5 ftgen 0,0,-7,-2, 1, 2.77828, 5.18099, 8.16289, 11.66063, 15.63801, 19.99 | |||
;spinel sphere with diameter of 3.6675mm | |||
girtos6 ftgen 0,0,-24,-2, 1, 1.026513174725, 1.4224916858532, 1.4478690202098, 1.4661959580455, 1.499452545408, 1.7891839345101, 1.8768994627782, 1.9645945254541, 1.9786543873113, 2.0334612432847, 2.1452852391916, 2.1561524686621, 2.2533435661294, 2.2905090816065, 2.3331798413917, 2.4567715528268, 2.4925556408289, 2.5661806088514, 2.6055768738808, 2.6692760296751, 2.7140956766436, 2.7543617293425, 2.7710411870043 | |||
;pot lid | |||
girtos7 ftgen 0,0,-6,-2, 1, 3.2, 6.23, 6.27, 9.92, 14.15 | |||
;red cedar wood plate | |||
girtos8 ftgen 0,0,-4,-2, 1, 1.47, 2.09, 2.56 | |||
;tubular bell | |||
girtos9 ftgen 0,0,-10,-2, 272/437, 538/437, 874/437, 1281/437, 1755/437, 2264/437, 2813/437, 3389/437, 4822/437, 5255/437 | |||
;redwood wood plate | |||
girtos10 ftgen 0,0,-4,-2, 1, 1.47, 2.11, 2.57 | |||
;douglas fir wood plate | |||
girtos11 ftgen 0,0,-4,-2, 1, 1.42, 2.11, 2.47 | |||
;uniform wooden bar | |||
girtos12 ftgen 0,0,-6,-2, 1, 2.572, 4.644, 6.984, 9.723, 12 | |||
;uniform aluminum bar | |||
girtos13 ftgen 0,0,-6,-2, 1, 2.756, 5.423, 8.988, 13.448, 18.680 | |||
;vibraphone 1 | |||
girtos14 ftgen 0,0,-6,-2, 1, 3.984, 10.668, 17.979, 23.679, 33.642 | |||
;vibraphone 2 | |||
girtos15 ftgen 0,0,-6,-2, 1, 3.997, 9.469, 15.566, 20.863, 29.440 | |||
;Chalandi plates | |||
girtos16 ftgen 0,0,-5,-2, 1, 1.72581, 5.80645, 7.41935, 13.91935 | |||
;tibetan bowl (152 mm) | |||
girtos17 ftgen 0,0,-7,-2, 1, 2.66242, 4.83757, 7.51592, 10.64012, 14.21019, 18.14027 | |||
;tibetan bowl (140 mm) | |||
girtos18 ftgen 0,0,-5,-2, 1, 2.76515, 5.12121, 7.80681, 10.78409 | |||
;wine glass | |||
girtos19 ftgen 0,0,-5,-2, 1, 2.32, 4.25, 6.63, 9.38 | |||
;small handbell | |||
girtos20 ftgen 0,0,-22,-2, 1, 1.0019054878049, 1.7936737804878, 1.8009908536585, 2.5201981707317, 2.5224085365854, 2.9907012195122, 2.9940548780488, 3.7855182926829, 3.8061737804878, 4.5689024390244, 4.5754573170732, 5.0296493902439, 5.0455030487805, 6.0759908536585, 5.9094512195122, 6.4124237804878, 6.4430640243902, 7.0826219512195, 7.0923780487805, 7.3188262195122, 7.5551829268293 | |||
;albert clock bell belfast | |||
girtos21 ftgen 0,0,-22,-2, 2.043260,1.482916,1.000000,3.328848,4.761811,1.477056,0.612007,2.661295,1.002793,4.023776,0.254139,2.043916,4.032463,2.659438,4.775560,5.500494,3.331014,0.809697,2.391301, 0.254098,1.901476,2.366563 ;,0.614968,2.046543,1.814887,3.130744,2.484426,0.558874,0.801697,0.070870,3.617036,2.782656 | |||
;wood block | |||
girtos22 ftgen 0,0,4,-2, 915/915,1540/915,1863/915,3112/915 | |||
;================================================================================================================================================================================= | |||
;================================================================================================================================================================================= | |||
;GEN09 FUNCTION TABLE VERSIONS OF THE MODAL FREQUENCY TABLES | |||
;THESE AREN'T ACTUALLY NEEDED AS THE TABLES ARE CALCULATED IN INSTRUMENT 2 BUT IF INSTRUMENT 2 IS OMITTED THESE TABLES WILL BE NEEDED | |||
;NOTE THAT PARTIAL NUMBER HAVE BEEN MULTIPLIED BY giRtosScale AND THAT THE FREQUENCY OF ANY OSCILLATOR THAT USES THESE TABLES WILL HAVE TO BE DIVIDED BY THE SAME NUMBER | |||
giwave1 ftgen 0, 0, 262144, 9, 1000,1.000,0, 2000,1.000,0, 3000,1.000,0, 4000,1.000,0, 5000,1.000,0, 6000,1.000,0, 7000,1.000,0, 8000,1.000,0, 9000,1.000,0, 10000,1.000,0, 11000,1.000,0, 12000,1.000,0, 13000,1.000,0, 14000,1.000,0, 15000,1.000,0, 16000,1.000,0, 17000,1.000,0, 18000,1.000,0, 19000,1.000,0, 20000,1.000,0 | |||
giwave2 ftgen 0, 0, 262144, 9, 1000,1.000,0, 2890,1.000,0, 4950,1.000,0, 6990,1.000,0, 8010,1.000,0, 9020,1.000,0 | |||
giwave3 ftgen 0, 0, 262144, 9, 1000,1.000,0, 2000,1.000,0, 3010,1.000,0, 4010,1.000,0, 4690,1.000,0, 5630,1.000,0 | |||
giwave4 ftgen 0, 0, 262144, 9, 1000,1.000,0, 3932,1.000,0, 9538,1.000,0, 16688,1.000,0, 24566,1.000,0, 31147,1.000,0 | |||
giwave5 ftgen 0, 0, 262144, 9, 1000,1.000,0, 2778,0.500,0, 5180,0.250,0, 8162,0.125,0, 11660,0.062,0, 15638,0.031,0, 19990,0.016,0 | |||
giwave6 ftgen 0, 0, 262144, 9, 1000,1.000,0, 1026,1.000,0, 1422,1.000,0, 1447,1.000,0, 1466,1.000,0, 1499,1.000,0, 1789,1.000,0, 1876,1.000,0, 1964,1.000,0, 1978,1.000,0, 2033,1.000,0, 2145,1.000,0, 2156,1.000,0, 2253,1.000,0, 2290,1.000,0, 2333,1.000,0, 2456,1.000,0, 2492,1.000,0, 2566,1.000,0, 2605,1.000,0, 2669,1.000,0, 2714,1.000,0 | |||
giwave7 ftgen 0, 0, 262144, 9, 1000,1.000,0, 3200,1.000,0, 6230,1.000,0, 6270,1.000,0, 9920,1.000,0, 14150,1.000,0 | |||
giwave8 ftgen 0, 0, 262144, 9, 1000,1.000,0, 1470,1.000,0, 2090,1.000,0, 2560,1.000,0 | |||
giwave9 ftgen 0, 0, 262144, 9, 622,1.000,0, 1231,1.000,0, 2000,1.000,0, 2931,1.000,0, 4016,1.000,0, 5180,1.000,0, 6437,1.000,0, 7755,1.000,0, 11034,1.000,0, 12025,1.000,0 | |||
giwave10 ftgen 0, 0, 262144, 9, 1000,1.000,0, 1470,1.000,0, 2110,1.000,0, 2570,1.000,0 | |||
giwave11 ftgen 0, 0, 262144, 9, 1000,1.000,0, 1420,1.000,0, 2110,1.000,0, 2470,1.000,0 | |||
giwave12 ftgen 0, 0, 262144, 9, 1000,1.000,0, 2572,1.000,0, 4644,1.000,0, 6984,1.000,0, 9723,1.000,0, 12000,1.000,0 | |||
giwave13 ftgen 0, 0, 262144, 9, 1000,1.000,0, 2756,1.000,0, 5423,1.000,0, 8988,1.000,0, 13448,1.000,0, 18680,1.000,0 | |||
giwave14 ftgen 0, 0, 262144, 9, 1000,1.000,0, 3984,1.000,0, 10668,1.000,0, 17979,1.000,0, 23679,1.000,0, 33642,1.000,0 | |||
giwave15 ftgen 0, 0, 262144, 9, 1000,1.000,0, 3997,1.000,0, 9469,1.000,0, 15566,1.000,0, 20863,1.000,0, 29440,1.000,0 | |||
giwave16 ftgen 0, 0, 262144, 9, 1000,1.000,0, 1725,1.000,0, 5806,1.000,0, 7419,1.000,0, 13919,1.000,0 | |||
giwave17 ftgen 0, 0, 262144, 9, 1000,1.000,0, 2662,1.000,0, 4837,1.000,0, 7515,1.000,0, 10640,1.000,0, 14210,1.000,0, 18140,1.000,0 | |||
giwave18 ftgen 0, 0, 262144, 9, 1000,1.000,0, 2765,1.000,0, 5121,1.000,0, 7806,1.000,0, 10784,1.000,0 | |||
giwave19 ftgen 0, 0, 262144, 9, 1000,1.000,0, 2320,1.000,0, 4250,1.000,0, 6630,1.000,0, 9380,1.000,0 | |||
giwave20 ftgen 0, 0, 262144, 9, 1000,1.000,0, 1001,0.833,0, 1793,0.694,0, 1800,0.579,0, 2520,0.482,0, 2522,0.402,0, 2990,0.335,0, 2994,0.279,0, 3785,0.233,0, 3806,0.194,0, 4568,0.162,0, 4575,0.135,0, 5029,0.112,0, 5045,0.093,0, 6075,0.078,0, 5909,0.065,0, 6412,0.054,0, 6443,0.045,0, 7082,0.038,0, 7092,0.031,0, 7318,0.026,0, 7555,0.022,0 | |||
giwave21 ftgen 0, 0, 262144, 9, 1000,1.000,0, 1001,0.833,0, 1793,0.694,0, 1800,0.579,0, 2520,0.482,0, 2522,0.402,0, 2990,0.335,0, 2994,0.279,0, 3785,0.233,0, 3806,0.194,0, 4568,0.162,0, 4575,0.135,0, 5029,0.112,0, 5045,0.093,0, 6075,0.078,0, 5909,0.065,0, 6412,0.054,0, 6443,0.045,0, 7082,0.038,0, 7092,0.031,0, 7318,0.026,0, 7555,0.022,0 | |||
giwave22 ftgen 0, 0, 262144, 9, 1000,1.000,0, 1001,0.833,0, 1793,0.694,0, 1800,0.579,0, 2520,0.482,0, 2522,0.402,0, 2990,0.335,0, 2994,0.279,0, 3785,0.233,0, 3806,0.194,0, 4568,0.162,0, 4575,0.135,0, 5029,0.112,0, 5045,0.093,0, 6075,0.078,0, 5909,0.065,0, 6412,0.054,0, 6443,0.045,0, 7082,0.038,0, 7092,0.031,0, 7318,0.026,0, 7555,0.022,0 | |||
;================================================================================================================================================================================= | |||
gisine ftgen 0,0,4096,10,1 ;A SINE WAVE | |||
giRtosScale = 100 ;SCALING FACTOR APPLIED TO RATIOS WRITTEN TO GEN09 FUNCTION TABLE | |||
;FREQUENCY OF AUDIO OSCILLATOR WILL BE DIVIDED BY THIS VALUE | |||
;TOO LOW A VALUE HERE WILL RESULT IN QUANTISATION OF PARTIAL FREQUENCIES | |||
;TOO HIGH A VALUE WILL RESULT IN HIGHER PARTIALS BEING POORLY REPRESENTED IN THE TABLE, LEADING TO ALIASING | |||
gilfoshape ftgen 0, 0, 4096, 19, 0.5, 1, 180, 1 ;U-SHAPE PARABOLA (USED BY THE CHORUS EFFECT) | |||
gidurscal ftgen 0, 0, 128, -16, 10, 128, -4, 0.1 ;A FUNCTION USED TO RESCALE ENVELOPE DURATIONS ACCORDING TO NOTE PLAYED | |||
givelscal ftgen 0, 0, 128, -16, 0, 128, -4, 1 ;A FUNCTION USED TO REMAP MIDI VELOCITY VALUES - THE CURVATURE OF THIS FUNCTION CAN BE CHANGED TO TAKE ACCOUNT OF THE VARYING VELOCITY RESPONSE OF DIFFERENT MIDI KEYBOARDS | |||
gasend init 0 | |||
instr CreateGEN09Tables ;DERIVE GEN09 FUNCTION TABLE WAVEFORMS FROM THE GEN02 FUNCTION TABLES OF MODAL FREQUENCY RATIOS | |||
;A MACRO IS DEFINED THAT READS A SINGLE MODAL FERQUENCY RATIO FROM A TABLE | |||
#define PARTIAL(PartNum) | |||
# | |||
if $PartNum<=inratios then ;IF COUNTER IS WITHIN THE LIMITS OF THE NUMBER OF DEFINED MODAL FREQUENCY RATIOS... | |||
irto$PartNum table $PartNum-1,girtos$WaveNum ;...READ A VALUE FROM THE TABLE | |||
irto$PartNum = round(irto$PartNum*giRtosScale) ;MULTIPLY RATIO BY giRtosScale THEN INTEGERISE BYT ROUND TO THE NEAREST WHOLE NUMBER | |||
iamp$PartNum = iamp/(iampscal^($PartNum-1)) ;DERIVE AMPLITUDE VALUE FOR THIS PARTIAL | |||
else ;IF COUNTER IS BEYOND THE LIMITS OF THE NUMBER OF DEFINED MODAL FREQUENCY RATIOS... | |||
irto$PartNum = 0 ;SET RATIO TO ZERO | |||
iamp$PartNum = 0 ;SET PARTIAL STRENGTH TO ZERO | |||
endif | |||
# | |||
;A MACRO IS DEFINED THAT CREATES A GEN09 TABLE FROM MODAL FREQUENCY DATA | |||
#define WAVEFORM(WaveNum'AmpScal) | |||
# | |||
inratios = ftlen(girtos$WaveNum) | |||
iampscal = $AmpScal ;AMPLITUDE SCALING | |||
iamp = 1 ;PARTIAL STRENGTH OF FIRST PARTIAL | |||
$PARTIAL(1) ;MACRO EXPANDED FOR EACH PARTIAL... | |||
$PARTIAL(2) | |||
$PARTIAL(3) | |||
$PARTIAL(4) | |||
$PARTIAL(5) | |||
$PARTIAL(6) | |||
$PARTIAL(7) | |||
$PARTIAL(8) | |||
$PARTIAL(9) | |||
$PARTIAL(10) | |||
$PARTIAL(11) | |||
$PARTIAL(12) | |||
$PARTIAL(13) | |||
$PARTIAL(14) | |||
$PARTIAL(15) | |||
$PARTIAL(16) | |||
$PARTIAL(17) | |||
$PARTIAL(18) | |||
$PARTIAL(19) | |||
$PARTIAL(20) | |||
$PARTIAL(21) | |||
$PARTIAL(22) | |||
;GENERATE A GEN09 FUNCTION TABLE (ALL PHASES ARE SET TO ZERO) | |||
giwave$WaveNum ftgen 0,0,131072,9, irto1,iamp1,0, irto2,iamp2,0, irto3,iamp3,0, irto4,iamp4,0, irto5,iamp5,0, irto6,iamp6,0, irto7,iamp7,0, irto8,iamp8,0, irto9,iamp9,0, irto10,iamp10,0, irto11,iamp11,0, irto12,iamp12,0, irto13,iamp13,0, irto14,iamp14,0, irto15,iamp15,0, irto16,iamp16,0, irto17,iamp17,0, irto18,iamp18,0, irto19,iamp19,0, irto20,iamp20,0, irto21,iamp21,0, irto22,iamp22,0 | |||
;UNCOMMENT THE FOLLOWING LINE IF YOU WISH TO WRITE GENERATED TABLES TO A TEXT FILE FOR LATER USE | |||
;fprints "GEN09InharmonicTables.txt", "giwave$WaveNum%tftgen%t0, 0, 131072s, 9, %d,%5.3f,0,%t %d,%5.3f,0,%t %d,%5.3f,0,%t %d,%5.3f,0,%t %d,%5.3f,0,%t %d,%5.3f,0,%t %d,%5.3f,0,%t %d,%5.3f,0,%t %d,%5.3f,0,%t %d,%5.3f,0,%t %d,%5.3f,0,%t %d,%5.3f,0,%t %d,%5.3f,0,%t %d,%5.3f,0,%t %d,%5.3f,0,%t %d,%5.3f,0,%t %d,%5.3f,0,%t %d,%5.3f,0,%t %d,%5.3f,0,%t %d,%5.3f,0,%t %d,%5.3f,0,%t %d,%5.3f,0%n", irto1,iamp1, irto2,iamp2, irto3,iamp3, irto4,iamp4, irto5,iamp5, irto6,iamp6, irto7,iamp7, irto8,iamp8, irto9,iamp9, irto10,iamp10, irto11,iamp11, irto12,iamp12, irto13,iamp13, irto14,iamp14, irto15,iamp15, irto16,iamp16, irto17,iamp17, irto18,iamp18, irto19,iamp19, irto20,iamp20, irto21,iamp21, irto22,iamp22 | |||
# | |||
;EXPAND MACRO FOR EACH WAVEFORM TO BE CREATED | |||
;ARG1 = A COUNTER, SHOULD CORRESPOND TO NUMBER APPENDED TO 'girtos' FOR THE TABLE HANDLE OF THE REQUIRED MODAL FREQUENCIES TABLE | |||
;ARG2 = PARTIAL STRENGTHS SCALING: 1=FLAT >1=HIGHER PARTIALS ARE INCREASINGLY ATTENUATED | |||
$WAVEFORM(1' 1.5) | |||
$WAVEFORM(2' 2) | |||
$WAVEFORM(3' 1.5) | |||
$WAVEFORM(4' 2) | |||
$WAVEFORM(5' 2) | |||
$WAVEFORM(6' 1) | |||
$WAVEFORM(7' 1.2) | |||
$WAVEFORM(8' 1.5) | |||
$WAVEFORM(9' 1) | |||
$WAVEFORM(10' 1) | |||
$WAVEFORM(11' 1) | |||
$WAVEFORM(12' 1.5) | |||
$WAVEFORM(13' 1) | |||
$WAVEFORM(14' 2) | |||
$WAVEFORM(15' 2) | |||
$WAVEFORM(16' 1.5) | |||
$WAVEFORM(17' 2) | |||
$WAVEFORM(18' 2) | |||
$WAVEFORM(19' 1) | |||
$WAVEFORM(20' 1.2) | |||
$WAVEFORM(21' 1.1) | |||
$WAVEFORM(22' 1.1) | |||
endin | |||
instr 2 ;SOUND GENERATING INSTRUMENT | |||
iInstr chnget "Instr" | |||
iAAtt chnget "AAtt" | |||
iADec chnget "ADec" | |||
iASus chnget "ASus" | |||
iARel chnget "ARel" | |||
iFAmt chnget "FAmt" | |||
iFDec chnget "FDec" | |||
iFSus chnget "FSus" | |||
iFRel chnget "FRel" | |||
iFShp chnget "FShp" | |||
iAAtt = (iAAtt^3)*(15-0.001)+0.001 | |||
iADec = (iADec^3)*(15-0.001)+0.001 | |||
iARel = (iARel^3)*(15-0.001)+0.001 | |||
iFDec = (iFDec^3)*(15-0.001)+0.001 | |||
iFRel = (iFRel^3)*(15-0.001)+0.001 | |||
icps cpsmidi ;READ CPS VALUE IN FROM MIDI KEYBOARD | |||
inum notnum ;READ MIDI NOTE NUMBER | |||
ivel veloc 0,1 ;READ MIDI VELOCITY | |||
ivel table ivel,givelscal,1 ;REMAP MIDI VELOCITY - SEE TABLE givelscal ABOVE | |||
iscale table inum,gidurscal ;DURATIONAL RESCALING ACCORDING TO NOTE PLAYED - HIGHER NOTE WILL DECAY QUICKER IN REFLECTION OF REAL-WORLD CHARACTERISTICS | |||
aenv expsegr 0.001,iAAtt,1,iADec*iscale,iASus+0.0001,iARel*iscale,0.0001 ;AMPLITUDE ENVELOPE WITH MIDI SENSING RELEASE SEGEMENT | |||
asig poscil 0.1*aenv*ivel,icps/giRtosScale,giwave1+iInstr-1 ;AUDIO OSCILLATOR poscil3 USED FOR IMPROVED FIDELITY OVER OTHER OSCILLATORS. FREQUENCY IS SCALED DOWN ACCORIND TO THE VALUE OF giRtosScale DEFINED IN THE HEADER | |||
;UNFORTUNATELY transegr DOESN'T SEEM TO WORK SO IN THE MEANTIME THIS RATHER PROTRACTED ALTERNATIVE WILL ACT AS A SUBSTITUTE | |||
iFlev1 limit cpsoct((iFAmt*10*ivel)+4),icps,sr/2 ;DERIVE STARTING FILTER VALUE IN CPS FROM FLTK KNOB (RANGE 0 TO 1). LIMIT IT BETWEEN FUNDEMENTAL FREQ. AND NYQUIST. | |||
iFsus = icps+cpsoct((iFSus*10)+4) ;DERIVE FILTER SUSTAIN VALUE IN CPS FROM FLTK KNOB VALUE (RANGE 0 - 1) | |||
iFend = icps ;FINAL FILTER ENVELOPE VALUE IS ALWAYS FUNDEMENTAL FREQUENCY | |||
krel release ;SENSE WHEN A NOTE HAS BEEN RELEASED. 1=NOTE_RELEAESD 0=NOTE_BEING_HELD | |||
if krel==0 then ;IF NOTE IS BEGIN HELD... | |||
kcf transeg iFlev1,iFDec*iscale,iFShp,iFsus ;CREATE ADS (ATTACK-DECAY-SUSTAIN) PART OF ENVELOPE | |||
else ;OTHERWISE (WE ARE IN THE RELEASE STAGE) | |||
ktrig changed krel ;INSTIGATE A SHORT REINITIALISATION TO DERIVE AN I-TIME VALUE OF THE CURRENT AMPLITUDE VALUE FOR THE STARTING POINT OF THE RELEASE ENVELOPE | |||
if ktrig==1 then ; | |||
reinit StartRel | |||
endif | |||
StartRel: | |||
kcf transeg i(kcf),iFRel*iscale,iFShp,iFend ;RELEASE STAGE OF THE ENVELOPE. 'i(kcf)' AS THE STARTING VALUE ENSURES THAT IT ALWAYS PICKS UP FROM WHERE THE 'ADS' PART OF THE ENVELOPE LEFT OFF. | |||
rireturn | |||
endif | |||
;asig butlp asig, kcf | |||
asig clfilt asig, kcf, 0, 2 ;LOW PASS FILTER THE SOUND (SUBTRACTIVE SYNTHESIS) | |||
gasend = gasend+asig | |||
endin | |||
instr 3 | |||
kChoOnOff chnget "ChoOnOff" | |||
gkChoMix chnget "ChoMix" | |||
gkChoRte chnget "ChoRte" | |||
gkChoDep chnget "ChoDep" | |||
if kChoOnOff==0 kgoto SKIP_CHORUS | |||
kporttime linseg 0,0.001,1 | |||
kporttime = kporttime/gkChoRte | |||
kdlt1 randomi ksmps/sr,gkChoDep,gkChoRte,1 | |||
kdlt1 portk kdlt1,kporttime | |||
adlt1 interp kdlt1 | |||
acho1 vdelay gasend,adlt1*1000,1*1000 | |||
kdlt2 randomi ksmps/sr,gkChoDep,gkChoRte,1 | |||
kdlt2 portk kdlt2,kporttime | |||
adlt2 interp kdlt2 | |||
acho2 vdelay gasend,adlt2*1000,1*1000 | |||
kpan1 randomi 0,1,gkChoRte,1 | |||
kpan2 randomi 0,1,gkChoRte,1 | |||
a1L,a1R pan2 acho1,kpan1 | |||
a2L,a2R pan2 acho2,kpan2 | |||
achoL = a1L+a2L | |||
achoR = a1R+a2R | |||
outs achoL*gkChoMix, achoR*gkChoMix | |||
SKIP_CHORUS: | |||
outs gasend, gasend ;SEND UN-CHORUSSED AUDIO TO THE OUTPUTS | |||
clear gasend | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i "CreateGEN09Tables" 0 0 | |||
i 3 0 [60*60*24*7] | |||
f 0 [60*60*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,91 @@ | |||
<Cabbage> | |||
form size(350, 125), caption("Metalizer"), colour("black"),pluginID("meta") | |||
image bounds(5, 5, 340, 90), colour("black"), outline("white") | |||
rslider bounds(15, 15, 70, 70), channel("depth"), text("Depth"), colour("lightgrey") range(0.2, 4, 0.2) | |||
rslider bounds(95, 15, 70, 70), channel("time"), text("Time"), colour("lightgrey") range(0.0001,8,.1) | |||
rslider bounds(170, 15, 70, 70), channel("mix"), text("Dry/Wet"), colour("lightgrey") range(0, 1, 0) | |||
checkbox pos(260, 15) text("On/Off"), channel("on_off") | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 64 | |||
nchnls = 2 | |||
;Author: Giorgio Zucco (2012) | |||
;(adapted from Metallic reverb from CsoundBook) | |||
opcode Metalizer,aa,aakk | |||
asig1,asig2,kdepth,krvt xin | |||
klp1 = 1/8*kdepth | |||
klp2 = 1/13*kdepth | |||
klp3 = 1/546*kdepth | |||
klp4 = 1/739*kdepth | |||
klp5 = 1/1360 *kdepth | |||
klp6 = 1/2654*kdepth | |||
aecho1 vcomb asig1, krvt, klp1, 1 | |||
aecho2 vcomb asig2, krvt, klp2, 1 | |||
aecho1 = asig1+aecho1 | |||
aecho2 = asig2+aecho2 | |||
aecho3 vcomb aecho1, krvt, klp3, 1 | |||
aecho4 vcomb aecho1, krvt, klp4, 1 | |||
aecho5 vcomb aecho2, krvt, klp5, 1 | |||
aecho6 vcomb aecho2, krvt, klp6, 1 | |||
aout1 = (aecho1+aecho3+aecho5)*.1 | |||
aout2 = (aecho2+aecho4+aecho6)*.1 | |||
xout aout1 ,aout2 | |||
endop | |||
instr 1 | |||
kdepth chnget "depth" | |||
ktime chnget "time" | |||
kOnOff chnget "on_off" | |||
kmix chnget "mix" | |||
a1,a2 ins | |||
if kOnOff = 1 then | |||
aout1,aout2 Metalizer a1,a2,kdepth,ktime | |||
elseif kOnOff = 0 then | |||
aout1 = 0 | |||
aout2 = 0 | |||
endif | |||
amix1 ntrpol aout1,a1,1-kmix | |||
amix2 ntrpol aout2,a2,1-kmix | |||
kpan1 jspline 1,1,5 | |||
kpan2 jspline 1,1,4 | |||
aleft,aright pan2 amix1,kpan1 | |||
aleft2,aright2 pan2 amix2,kpan2 | |||
outs (aleft+aleft2)*.5,(aright+aright2)*.5 | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i1 0 360000 | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,140 @@ | |||
Metronome.csd | |||
For the best timing accuracy, set ksmps = 1 | |||
Iain McCurdy, 2013 | |||
; level 1 - amplitude level for the main 'beat' (1st beat of the bar) | |||
; level 2 - amplitude level for other beats of the bar (subdivisions) | |||
; Subdiv. - subdivision of the bar. i.e. 4 for 4/4, 3 for 3/4 etc. | |||
; tone 1 - tone of the main beat (1st beat of the bar) | |||
; tone 2 - tone level for other beats of the bar (subdivisions) | |||
; duration - duration of each 'click' | |||
; width - stereo width of each click | |||
; to achieve a simple 1 click metronome, set level 2 to zero and subdiv to 1. | |||
A simple Cabbage metronome | |||
<Cabbage> | |||
form caption("Metronome"), size(770,140), pluginID("mtro") | |||
image bounds( 0, 0,770,140), colour(160, 70,20,100), shape("rounded"), outline("white"), line(4) | |||
checkbox bounds( 15, 20,130, 40), text("Start/Stop") channel("OnOff"), FontColour("White"), colour(250,250,100) value(0) | |||
rslider bounds(120, 13, 65, 65), text("Level 1"), colour(160, 70,20,100), trackercolour(250,250,200), FontColour("White"), channel("level1"), range(0, 1.00, 0.4, 0.5, 0.001) | |||
rslider bounds(180, 13, 65, 65), text("Level 2"), colour(160, 70,20,100), trackercolour(250,250,200), FontColour("White"), channel("level2"), range(0, 1.00, 0.1, 0.5, 0.001) | |||
rslider bounds(240, 13, 65, 65), text("Subdiv."), colour(160, 70,20,100), trackercolour(250,250,200), FontColour("White"), channel("subdiv"), range(1, 16, 3, 1, 1) | |||
rslider bounds(300, 13, 65, 65), text("Tone 1"), colour(160, 70,20,100), trackercolour(250,250,200), FontColour("White"), channel("tone1"), range(0, 4.00, 2.5) | |||
rslider bounds(360, 13, 65, 65), text("Tone 2"), colour(160, 70,20,100), trackercolour(250,250,200), FontColour("White"), channel("tone2"), range(0, 4.00, 1.56) | |||
rslider bounds(420, 13, 65, 65), text("Duration"), colour(160, 70,20,100), trackercolour(250,250,200), FontColour("White"), channel("dur"), range(0.003, 0.1, 0.012, 0.5, 0.00001) | |||
rslider bounds(480, 13, 65, 65), text("Width"), colour(160, 70,20,100), trackercolour(250,250,200), FontColour("White"), channel("width"), range(0, 2.00, 0) | |||
checkbox bounds(550, 18, 45, 45) channel("indicator"), FontColour("White"), colour(255, 50, 50) value(0), shape("ellipse") | |||
checkbox bounds(600, 18, 45, 45) channel("indicator2"), FontColour("White"), colour(100,255,100) value(0), shape("ellipse") | |||
hslider bounds( 10, 75,750, 40), colour(160, 70,20,100), trackercolour(160, 70, 20,100), FontColour("White"), channel("tempo"), range(10,1000, 90, 1, 1) textBox(1) | |||
label bounds(345, 110, 80, 12), text("Tempo [BPM]"), fontcolour("white") | |||
groupbox bounds(655, 25,1030, 520), colour(160, 70,20,100), line(0), popup(1), plant("Large LEDs"){ | |||
checkbox bounds( 10, 10,500,500) channel("indicator"), FontColour("White"), colour(255, 50, 50) value(0), shape("ellipse") | |||
checkbox bounds(520, 10,500,500) channel("indicator2"), FontColour("White"), colour(100,255,100) value(0), shape("ellipse") | |||
} | |||
label bounds( 10,120, 200, 12), text("Author: Iain McCurdy |2013|"), FontColour("silvers") | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-dm0 -n -+rtmidi=null -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 16 ; for maximum timing accuracy set ksmps = 1 | |||
nchnls = 2 | |||
0dbfs = 1 ;MAXIMUM AMPLITUDE | |||
gistrt ftgen 0,0,8,-2, 200, 200, 2500, 5000, 5000 | |||
giend ftgen 0,0,8,-2, 20, 1000, 20, 20, 1000 | |||
gisine ftgen 0,0,4096,10,1 ; sine wave (used by the audio oscillator) | |||
gasend init 0 ; global variable used to send audio to the 'stereo' instrument | |||
gibar ftgen 0,0,64,-2,1 ; bar structure basically a '1' followed by 63 zeroes, '1' indicating the first neat of a bar and zero indicating any other beat | |||
instr 1 | |||
kOnOff chnget "OnOff" | |||
kdur chnget "dur" | |||
ksubdiv chnget "subdiv" | |||
ktone1 chnget "tone1" | |||
ktone2 chnget "tone2" | |||
klevel1 chnget "level1" | |||
klevel2 chnget "level2" | |||
kstrt tablei ktone1,gistrt | |||
kend tablei ktone1,giend | |||
kstrt2 tablei ktone2,gistrt | |||
kend2 tablei ktone2,giend | |||
; restart metronome if subdiv changes to ensure timing accuracy | |||
ktrig changed ksubdiv,kOnOff | |||
if ktrig==1 then | |||
reinit RESTART | |||
endif | |||
RESTART: | |||
kbeat init 0 ; initialise beat position (0 = first beat of the bar) | |||
if kOnOff==1 then | |||
gktempo chnget "tempo" | |||
kmetro metro gktempo/60 ; bar metronome | |||
if kmetro=1 then ; if a beat is occuring... | |||
ktype table kbeat,gibar ;1=bar 0=beat ; read if this is a first beat of a bar or not (1=first beat, 0=any other) | |||
if ktype=1 then ; if first beat of a bar... | |||
event "i",2,0,kdur,kstrt,kend,klevel1,1 ; ... call metronome click as if 1st beat (p7 = 1 = flash indicator) | |||
else ; otherwise (must be aby other beat of a bar)... | |||
event "i",2,0,kdur,kstrt2,kend2,klevel2,0 ; ...call metronome click as if any other beat of a bar (p7 = 0 = don't flash indicator) | |||
endif | |||
kbeat wrap kbeat+1, 0, ksubdiv ; increment beat position but wrap around to zero if final beat of a bar has already been reacxhed | |||
endif | |||
endif | |||
endin | |||
instr 2 ; produce metronome sound (this instrument will be called repeatedly) | |||
iwidth chnget "width" | |||
acps transeg p4,p3,-7,p5 ; pitch of oscillator (a quickly decaying exponential curve) start='tone 1', end='tone 2' | |||
aenv transeg 1,p3,-7,0 ; amplitude of oscillator (a quickly decaying exponential curve) | |||
asig oscili p6,acps,gisine ; audio oscillator | |||
amod oscili 3,200,gisine ; modulation signal | |||
asig = asig*amod ; ring modulate original audio signal | |||
asig butbp asig*10,100,100 ; bandpass filter the sound to attenuate lows and highs | |||
asig = asig*aenv ; apply envelope | |||
outs asig,asig ; send audio to outputs | |||
gasend = gasend+asig*iwidth ; send a bit of the audio to the stereo-ifying instrument | |||
event_i "i",5-p7,0,0.08 ; flash indicator (call instrument 4 for 0.1 duration) | |||
endin | |||
instr 3 ; 'stereo'ify the sound | |||
aL delay gasend, rnd(0.01) ; slightly delay audio by a random amount to create left channel audio | |||
aR delay gasend, rnd(0.01) ; slightly delay audio by a random amount to create right channel audio | |||
aL butlp aL,cpsoct(rnd(10)) ; filter left channel (random cutoff frequency) | |||
aR butlp aR,cpsoct(rnd(10)) ; filter right channel (random cutoff frequency) | |||
outs aL,aR ; send audio to outputs | |||
gasend = 0 ; clear global send variable | |||
endin | |||
instr 4 ; flash red indicator | |||
gkrelease release ; krelease=0 while note is active, =1 when note ends (final k-cycle) | |||
chnset 1-gkrelease,"indicator" ; turn indicator on or off | |||
endin | |||
instr 5 ; flash green indicator | |||
gkrelease release ; krelease=0 while note is active, =1 when note ends (final k-cycle) | |||
chnset 1-gkrelease,"indicator2" ; turn indicator on or off | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [60*60*24*7] | |||
i 3 0 [60*60*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,198 @@ | |||
<Cabbage> | |||
form caption("Percussive flute synthesizer"), size(760, 320), pluginID("per1") | |||
xypad bounds(0, 0, 250, 210), channel("chanx", "chany"), text("Modulation"), rangex(1,50,6.72), rangey(0,1,0.43) | |||
groupbox bounds(260, 0, 240, 100), text("ADSR"), plant("adsr"){ | |||
rslider bounds(.0, .3, .6, .6), text("A"), colour("orange"), channel("att"), range(0.01,3, .5) | |||
rslider bounds(.25, .3, .6, .6), text("D"), colour("orange"), channel("dec"), range(0,1, .5) | |||
rslider bounds(.5, .3, .6, .6), text("S"), colour("orange"), channel("sus"), range(0,1,.8) | |||
rslider bounds(.75, .3, .6, .6), text("R"), colour("orange"), channel("rel"), range(0.01,3, .2) | |||
} | |||
groupbox bounds(260, 105, 240, 100), text("Tune"), plant("tune"){ | |||
rslider bounds(.0, .3, .6, .6), text("Semi"), colour("white "), channel("semi"), range(-24,12,0) | |||
rslider bounds(.25, .3, .6, .6), text("Detune"), colour("white "), channel("detune"), range(-1,1,0) | |||
rslider bounds(.5, .3, .6, .6), text("Cutoff"), colour("white "), channel("cutoff"), range(200,12000,3000) | |||
rslider bounds(.75, .3, .6, .6), text("Spread"), colour("white "), channel("spread"), range(0,1,.5) | |||
} | |||
groupbox bounds(510,0, 240, 100), text("LFO/Stereo chorus"), plant("mod"){ | |||
rslider bounds(.0, .3, .6, .6), text("Lfo amp"), colour("white "), channel("lfoamp"), range(0,5, 0) | |||
rslider bounds(.25, .3, .6, .6), text("Lfo rate"), colour("white "), channel("lforate"), range(0,10, 0) | |||
rslider bounds(.5, .3, .6, .6), text("depth"), colour("white "), channel("chdepth"), range(0,10,0) | |||
rslider bounds(.75, .3, .6, .6), text("rate"), colour("white "), channel("chrate"), range(0,10,0) | |||
} | |||
groupbox bounds(510,105, 240, 100), text("Reverb"), plant("rev"){ | |||
rslider bounds(0, .3, .6, .6), text("level"), colour("dodgerblue"), channel("level"), range(0,1,0) | |||
rslider bounds(0.25, .3, .6, .6), text("size"), colour("dodgerblue"), channel("size"), range(.1,.99,.5) | |||
checkbox bounds(.55, .40, .60, .30),channel("onoff"), text("On/Off"), value(0) | |||
} | |||
keyboard bounds(0, 220, 750, 70) | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-n -d -m0d -+rtmidi=NULL -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 32 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
;Author: Giorgio Zucco (2012) | |||
;turnon 10 ;chorus | |||
;turnon 12 ;reverb | |||
ga1 init 0 | |||
ga2 init 0 | |||
garev1 init 0 | |||
garev2 init 0 | |||
;******************************************* | |||
opcode StChorus,aa,aakkkk | |||
asigr,asigl,kdepth,kdepthl,krate,kratel xin ;legge i parametri in entrata | |||
;ar,al StChorus asigr,asigl,kdepth,kdepthl,krate,kratel | |||
k1ch randi kdepth/2,krate,1 | |||
ar1 vdelay3 asigr,kdepth/2+k1ch,10 | |||
k2ch randi kdepth/2,krate*0.9,.2 | |||
ar2 vdelay3 asigr,kdepth/2+k2ch,10 | |||
k3ch randi kdepth/2,krate*1.1,.2 | |||
ar3 vdelay3 asigr,kdepth/2+k3ch,10 | |||
k4ch randi kdepth/2,krate*1.3,.1 | |||
ar4 vdelay3 asigr,kdepth/2+k4ch,10 | |||
k1chl randi kdepthl/2,kratel,1 | |||
ar1l vdelay3 asigl,kdepthl/2+k1chl,10 | |||
k2chl randi kdepthl/2,kratel*0.9,.2 | |||
ar2l vdelay3 asigl,kdepthl/2+k2chl,10 | |||
k3chl randi kdepthl/2,kratel*1.1,.2 | |||
ar3l vdelay3 asigl,kdepthl/2+k3chl,10 | |||
k4chl randi kdepthl/2,kratel*1.3,.1 | |||
ar4l vdelay3 asigl,kdepthl/2+k4chl,10 | |||
aL = (ar1+ar2+ar3+ar4)/2 | |||
aR = (ar1l+ar2l+ar3l+ar4l)/2 | |||
xout aL,aR ; write output | |||
endop | |||
;*********************************************** | |||
instr 1 | |||
iatt chnget "att" | |||
idec chnget "dec" | |||
isus chnget "sus" | |||
irel chnget "rel" | |||
kdet chnget "detune" | |||
ksemi chnget "semi" | |||
kcut chnget "cutoff" | |||
kspread chnget "spread" | |||
klfoamp chnget "lfoamp" | |||
klforate chnget "lforate" | |||
kindex chnget "fmamp" | |||
kfmrate chnget "fmrate" | |||
kcutoff chnget "cutoff" | |||
kreso chnget "resonance" | |||
kc1 chnget "chanx" | |||
kc2 chnget "chany" | |||
;midi | |||
imidinn notnum | |||
iamp ampmidi 1 | |||
kbend pchbend 0,2 ;pitch bend | |||
kfreq1 = cpsmidinn(imidinn+kbend+int(ksemi)) ;controllo midi | |||
kfreq2 = cpsmidinn(imidinn+kbend+int(ksemi)+kdet) | |||
ifn1 = 1 | |||
ifn2 = 1 | |||
ifn3 = 1 | |||
ifn4 = 1 | |||
ivfn = 1 | |||
asig1 fmpercfl iamp, kfreq1,kc1,kc2,klfoamp,klforate,ifn1,ifn2,ifn3,ifn4,ivfn | |||
asig2 fmpercfl iamp, kfreq2,kc1,kc2,klfoamp,klforate,ifn1,ifn2,ifn3,ifn4,ivfn | |||
afl1 clfilt asig1,kcutoff,0,4 | |||
afl2 clfilt asig2,kcutoff,0,4 | |||
;master | |||
al = ((afl1 * kspread) + (afl2 * (1 - kspread))) *.2 | |||
ar = ((afl1 * (1-kspread)) + (afl2 * kspread)) *.2 | |||
aoutL clip al,0,0dbfs | |||
aoutR clip ar,0,0dbfs | |||
kadsr mxadsr iatt,idec,isus,irel | |||
outs (aoutL*kadsr),(aoutR*kadsr) | |||
vincr ga1,(aoutL*kadsr) | |||
vincr ga2,(aoutR*kadsr) | |||
vincr garev1,(aoutL*kadsr) | |||
vincr garev2,(aoutR*kadsr) | |||
endin | |||
;stereo chorus | |||
instr 10 | |||
k1 chnget "chdepth" | |||
k2 chnget "chrate" | |||
kfxdepth portk k1,.01 | |||
kfxrate portk k2,.01 | |||
acho1,acho2 StChorus ga1,ga2,kfxdepth,kfxdepth*.8,kfxrate,kfxrate*.8 | |||
outs acho1,acho2 | |||
clear ga1,ga2 | |||
endin | |||
instr 12 ;reverb | |||
ktrig chnget "onoff" | |||
klevel chnget "level" | |||
ksize chnget "size" | |||
if ktrig = 1 then | |||
al,ar reverbsc garev1,garev2,ksize,16000,sr,0 | |||
adc1 dcblock2 al | |||
adc2 dcblock2 ar | |||
kpan1 randomi 0,1,4 | |||
kpan2 randomi 0,1,8 | |||
aout1,aout2 pan2 adc1,kpan1 | |||
aout3,aout4 pan2 adc2,1-kpan2 | |||
asum1 = (aout1+aout2)*klevel | |||
asum2 = (aout3+aout4)*klevel | |||
else | |||
asum1 = 0 | |||
asum2 = 0 | |||
endif | |||
outs asum1,asum2 | |||
clear garev1,garev2 | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
; sine wave. | |||
f 1 0 32768 10 1 | |||
i1 0 36000 | |||
i10 0 36000 | |||
i12 0 36000 | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,59 @@ | |||
<Cabbage> | |||
form caption("Pink Noise"), size(230, 80), pluginID("pnse") | |||
image bounds( 0, 0,230, 80), colour("pink"), shape("rounded"), outline("red"), line(4) | |||
checkbox bounds( 20, 10, 80, 15), text("On/Off"), channel("onoff"), value(1), fontcolour("black"), colour("yellow") | |||
combobox bounds( 20, 40, 70, 20), channel("method"), value(1), text("Gardner", "Kellet", "Kellet 2") | |||
rslider bounds(100, 10, 60, 60), text("Amplitude"), channel("amp"), range(0, 1, 0.5, 0.5, 0.001), fontcolour("black"), trackercolour("red") | |||
rslider bounds(160, 10, 60, 60), text("N.Bands"), channel("numbands"), range(4, 32, 20, 1, 1), fontcolour("black") , trackercolour("red") | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-dm0 -n -+rtmidi=null -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 64 | |||
nchnls = 2 | |||
0dbfs = 1 ;MAXIMUM AMPLITUDE | |||
massign 0,0 | |||
instr 1 | |||
konoff chnget "onoff" ;read in on/off switch widget value | |||
if konoff==0 goto SKIP ;if on/off switch is off jump to skip label | |||
kmethod chnget "method" | |||
kmethod = kmethod - 1 | |||
knumbands chnget "numbands" | |||
kamp chnget "amp" | |||
ktrig changed kmethod, knumbands ;GENERATE BANG (A MOMENTARY '1') IF ANY OF THE INPUT VARIABLES CHANGE | |||
if ktrig==1 then ;IF AN I-RATE VARIABLE HAS CHANGED | |||
reinit UPDATE ;BEGIN A REINITIALISATION PASS FROM LABEL 'UPDATE' | |||
endif ;END OF CONDITIONAL BRANCH | |||
UPDATE: ;LABEL CALLED 'UPDATE' | |||
if kmethod=0 then ;IF GARDNER METHOD HAS BEEN CHOSEN... | |||
asigL pinkish kamp, i(kmethod), i(knumbands) ;GENERATE PINK NOISE | |||
asigR pinkish kamp, i(kmethod), i(knumbands) ;GENERATE PINK NOISE | |||
else ;OTHERWISE (I.E. 2ND OR 3RD METHOD HAS BEEN CHOSEN) | |||
anoise unirand 2 ;WHITE NOISE BETWEEN ZERO AND 2 | |||
anoise = (anoise-1) ;OFFSET TO RANGE BETWEEN -1 AND 1 | |||
asigL pinkish anoise, i(kmethod) ;GENERATE PINK NOISE | |||
asigR pinkish anoise, i(kmethod) ;GENERATE PINK NOISE | |||
asigL = asigL * kamp ;RESCALE AMPLITUDE WITH gkpinkamp | |||
asigR = asigR * kamp ;RESCALE AMPLITUDE WITH gkpinkamp | |||
endif ;END OF CONDITIONAL | |||
rireturn ;RETURN FROM REINITIALISATION PASS | |||
outs asigL,asigR ;SEND AUDIO SIGNAL TO OUTPUT | |||
SKIP: ;A label. Skip to here is on/off switch is off | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [60*60*24*7] ;instrument that reads in widget data | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,203 @@ | |||
; Rhythmicon.csd | |||
; Written by Iain McCurdy, 2013. | |||
; Recreation of Henry Cowell and Leon Theremin's Rhythmicon instrument (http://en.wikipedia.org/wiki/Rhythmicon) | |||
; CONTROLS | |||
; -------- | |||
; BASE -- note number of the fundemental (lowest note) | |||
; RATE -- base rate (same as rate for fundemental) | |||
; LEVEL -- output level | |||
; DESCRIPTION | |||
; ----------- | |||
; Each note above the fundemental (C3) divides the base rate increasingly according to the arithmetic progression: 2,3,4,5... | |||
; Therefore if C3 plays crotchets (quarter notes), C#3 plays quavers (eighth notes), D3 triplets and so on. | |||
; The pitches of each note (in cycles per second) follow a simlar progression. | |||
; If C3 plays a 200Hz tone, C#3 plays 400Hz, D 600Hz and so on. | |||
; The 17th note (E4) does not play a note but instead engages a syncopation effect. | |||
; I have been unable to find a clear technical specification of how this was implemented but have nonetheless made my 'best guess'. | |||
<Cabbage> | |||
form caption("...") size(159, 180), pluginID("basl") | |||
label bounds( 5, 3, 22, 22), text("R"), fontcolour(red) | |||
label bounds( 20, 5, 22, 22), text("H"), fontcolour(yellow) | |||
label bounds( 35, 2, 22, 22), text("Y"), fontcolour(orchid) | |||
label bounds( 50, 4, 22, 22), text("T"), fontcolour(LightGreen) | |||
label bounds( 65, 2, 22, 22), text("H"), fontcolour(OrangeRed) | |||
label bounds( 80, 6, 22, 22), text("M"), fontcolour(orange) | |||
label bounds( 99, 1, 22, 22), text("I"), fontcolour(SkyBlue) | |||
label bounds(110, 4, 22, 22), text("C"), fontcolour(Tomato) | |||
label bounds(125, 1, 22, 22), text("O"), fontcolour(LightGreen) | |||
label bounds(140, 3, 22, 22), text("N"), fontcolour(violet) | |||
label bounds( 81, 24, 100, 8), text("Iain McCurdy [2013]"), FontColour("white") | |||
rslider bounds( 3, 45, 55, 55), channel("base"), textBox(1), range(0, 127,36, 1,1),fontcolour(138, 54, 15),colour(orange), trackercolour(orange) | |||
label bounds( 19, 34, 30, 10), text("BASE"), fontcolour(white) | |||
rslider bounds( 52, 45, 55, 55), channel("rate"), textBox(1), range(0.1, 5.00, 0.5, 0.5, 0.01),fontcolour(138, 54, 15),colour(orange), trackercolour(orange) | |||
label bounds( 68, 34, 30, 10), text("RATE"), fontcolour(white) | |||
rslider bounds(102, 45, 55, 54), channel("level"), textBox(1), range(0, 1.00, 0.5, 0.5, 0.01),fontcolour(138, 54, 15),colour(orange), trackercolour(orange) | |||
label bounds(115, 34, 30, 10), text("LEVEL"), fontcolour(white) | |||
checkbox bounds( 0, 101, 9, 10), channel("k1") value(0) shape(square) colour(yellow) | |||
checkbox bounds( 9, 101, 10, 10), channel("k2") value(0) shape(square) colour(yellow) | |||
checkbox bounds( 19, 101, 9, 10), channel("k3") value(0) shape(square) colour(yellow) | |||
checkbox bounds( 28, 101, 10, 10), channel("k4") value(0) shape(square) colour(yellow) | |||
checkbox bounds( 38, 101, 10, 10), channel("k5") value(0) shape(square) colour(yellow) | |||
checkbox bounds( 48, 101, 8, 10), channel("k6") value(0) shape(square) colour(yellow) | |||
checkbox bounds( 56, 101, 10, 10), channel("k7") value(0) shape(square) colour(yellow) | |||
checkbox bounds( 66, 101, 8, 10), channel("k8") value(0) shape(square) colour(yellow) | |||
checkbox bounds( 74, 101, 10, 10), channel("k9") value(0) shape(square) colour(yellow) | |||
checkbox bounds( 84, 101, 9, 10), channel("k10") value(0) shape(square) colour(yellow) | |||
checkbox bounds( 93, 101, 10, 10), channel("k11") value(0) shape(square) colour(yellow) | |||
checkbox bounds(103, 101, 9, 10), channel("k12") value(0) shape(square) colour(yellow) | |||
checkbox bounds(112, 101, 9, 10), channel("k13") value(0) shape(square) colour(yellow) | |||
checkbox bounds(121, 101, 10, 10), channel("k14") value(0) shape(square) colour(yellow) | |||
checkbox bounds(131, 101, 9, 10), channel("k15") value(0) shape(square) colour(yellow) | |||
checkbox bounds(140, 101, 10, 10), channel("k16") value(0) shape(square) colour(yellow) | |||
checkbox bounds(150, 101, 10, 10), channel("k17") value(0) shape(square) colour(red) | |||
keyboard bounds(-13, 110, 450, 70) | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-dm0 -n -+rtmidi=null -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 64 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
massign 0,1 | |||
; Author: Iain McCurdy (2013) | |||
giAmpScl ftgen 0,0,-20000,-16, 1,100,0,1, 20000-100,-100,0.2 | |||
opcode SwitchPort, k, kkk | |||
kin,kUpPort,kDnPort xin | |||
kold init 0 | |||
kporttime = (kin<kold?kDnPort:kUpPort) | |||
kout portk kin, kporttime | |||
kold = kout | |||
xout kout | |||
endop | |||
instr 1 ; Listen for midi note changes. Turn lights on or off. Start the rhymicon of at least 1 note is held. | |||
inum notnum ; read in midi note number | |||
#define LightToggle(N) # ; define a macro to reduce code repetition | |||
if inum=(59+$N) then ; if note number played on the keyboard corresponds to 'this' toggle light... (note that first note will be C3 (59 + 1) | |||
ik$N chnget "k$N" ; read current value for 'this' toggle light (at i-time) | |||
chnset 1-ik$N,"k$N" ; write the inverse to it (i.e. toggle it) | |||
endif# | |||
$LightToggle(1) ; expand macro for all 16 layers | |||
$LightToggle(2) | |||
$LightToggle(3) | |||
$LightToggle(4) | |||
$LightToggle(5) | |||
$LightToggle(6) | |||
$LightToggle(7) | |||
$LightToggle(8) | |||
$LightToggle(9) | |||
$LightToggle(10) | |||
$LightToggle(11) | |||
$LightToggle(12) | |||
$LightToggle(13) | |||
$LightToggle(14) | |||
$LightToggle(15) | |||
$LightToggle(16) | |||
$LightToggle(17) | |||
kk1 chnget "k1" | |||
kk2 chnget "k2" | |||
kk3 chnget "k3" | |||
kk4 chnget "k4" | |||
kk5 chnget "k5" | |||
kk6 chnget "k6" | |||
kk7 chnget "k7" | |||
kk8 chnget "k8" | |||
kk9 chnget "k9" | |||
kk10 chnget "k10" | |||
kk11 chnget "k11" | |||
kk12 chnget "k12" | |||
kk13 chnget "k13" | |||
kk14 chnget "k14" | |||
kk15 chnget "k15" | |||
kk16 chnget "k16" | |||
ksum = kk1 + kk2 + kk3 + kk4 + kk5 + kk6 + kk7 + kk8 + kk9 + kk10 + kk11 + kk12 + kk13 + kk14 + kk15 + kk16 | |||
if ksum>0 then | |||
schedkwhen 1,0,1,2,0,-1 | |||
else | |||
turnoff2 2,0,1 | |||
endif | |||
endin | |||
instr 2 | |||
kporttime linseg 0,0.001,0.05 | |||
kbase chnget "base" ; base pitch as a note number | |||
krate chnget "rate" ; rate of pulsation of fundemental | |||
krate portk krate, kporttime | |||
klevel chnget "level" ; output amplitude level | |||
ksync chnget "k17" ; syncopation mode | |||
kBaseFrq = cpsmidinn(kbase) | |||
kBaseFrq portk kBaseFrq,kporttime | |||
iamp = 0.6 | |||
amix = 0 | |||
#define LAYER(N)# ; use a macro to reduce code repetition | |||
kk$N chnget "k$N" | |||
kk$N SwitchPort kk$N,kporttime*0.01,kporttime*0.5 | |||
ktrig metro krate * $N | |||
kn = $N ; layer number as a variable | |||
if ksync=1&&kn>1 then ; if syncopation is on and this isn't the first layer (syncopation irrelevant for first layer) | |||
ktrig vdelayk ktrig, (1/(krate*$N))/$N , 1/0.1 ; add a syncopation delay for the metronome trigger for this layer | |||
endif | |||
kenv loopseg $N/60, ktrig, 0, 0,0.025, 1,0.84/krate, 0,60, 0 ; retriggering envelope | |||
aenv interp kenv*kk$N ; interpolate to a-rate (for better smoothness) | |||
kcps = kBaseFrq*$N ; pitch for this layer (in cycles per second) | |||
kscl table kcps,giAmpScl ; amp scaling value (to quieten higher sounds) | |||
kamp = iamp*kscl ; apply on/off switch for this layer to its amplitude | |||
asig vco2 kamp,kcps,2,0.1 ; generate a tone (pulse wave) | |||
kcf limit cpsoct(octcps(kcps*3)*kenv),1,10000 ; filter envelope | |||
asig clfilt asig,kcf,0,2 ; butterworth lowpass filter the sound | |||
asig = asig*aenv ; apply amplitude envelope | |||
amix = amix + asig# ; add to 'mix' signal with the other layers | |||
$LAYER(1) ; expand macro multiple times. Once for each layer | |||
$LAYER(2) | |||
$LAYER(3) | |||
$LAYER(4) | |||
$LAYER(5) | |||
$LAYER(6) | |||
$LAYER(7) | |||
$LAYER(8) | |||
$LAYER(9) | |||
$LAYER(10) | |||
$LAYER(11) | |||
$LAYER(12) | |||
$LAYER(13) | |||
$LAYER(14) | |||
$LAYER(15) | |||
$LAYER(16) | |||
xtratim 0.5 | |||
outs amix*klevel, amix*klevel | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [3600*24*7] ;read widgets | |||
;i 2 0 [3600*24*7] ;read widgets | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,379 @@ | |||
<Cabbage> | |||
form caption("Jean Claude Risset collection") size(552, 330), colour("black"),pluginID("jea1") | |||
rslider bounds(15, 10, 100, 100) channel("spread"), range(0,1,.5), caption("Spread"), colour("tomato"), midictrl(1, 1) | |||
rslider bounds(120, 10, 100, 100) channel("semi"), range(-24,12,-12), caption("Coarse"), colour("tomato") | |||
rslider bounds(225, 10, 100, 100) channel("detune"), range(-2,2,0), caption("Detune"), colour("tomato") | |||
rslider bounds(330, 10, 100, 100) channel("vibamp"), range(0,20,0), caption("Vib Amp"), colour("tomato") | |||
rslider bounds(435, 10, 100, 100) channel("vibrate"), range(0,20,0), caption("Vib rate"), colour("tomato") | |||
groupbox bounds(15, 120, 240, 100), text("ADSR amplitude"), plant("ADSR"){ | |||
rslider bounds(.0, .3, .6, .6), text("A"), colour("orange"), channel("att"), range(0.01,3, .5) | |||
rslider bounds(.25, .3, .6, .6), text("D"), colour("orange"), channel("dec"), range(0,1, .5) | |||
rslider bounds(.5, .3, .6, .6), text("S"), colour("orange"), channel("sus"), range(0,1,.8) | |||
rslider bounds(.75, .3, .6, .6), text("R"), colour("orange"), channel("rel"), range(0.01,3, .2) | |||
} | |||
;RissClar RissDrum RissFlute RissHarmon RissNoise RissOctave RissRing | |||
combobox bounds(280,120, 160, 20), channel("select"), value(1), text("clar","snare", "flute","harmon","noise","octave","ring") | |||
rslider bounds(280,150, 60, 60), text("Rev level"), colour("tomato"), channel("level"), range(0,1,.8) | |||
rslider bounds(350, 150, 60, 60), text("Rev size"), colour("tomato"), channel("size"), range(.1,.99,.7) | |||
checkbox bounds(420,150, 160, 30),channel("onoff"), text("Reverb On/Off"), value(0) | |||
keyboard pos(1, 240), size(550, 60) | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n -+rtmidi=null -M0 -b1024 -m0d | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 16 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
;Author: Giorgio Zucco (2012) | |||
ga1 init 0 | |||
ga2 init 0 | |||
;Risset opcodes | |||
;************************************************** | |||
opcode RissClar,a,kk | |||
gisine1 ftgen 0 ,0 ,512, 7, -1, 200, -.5, 112, .5 ,200, 1 | |||
gisine3 ftgen 0 , 0, 512, 9, 1, 1, 0 | |||
kveloc,knote xin | |||
kgate linenr kveloc,0,.2,.01 | |||
a1 linen 255,.085,.75,100 | |||
a1 poscil a1,knote,gisine3 | |||
a1 table a1+256,gisine1 | |||
xout a1*kgate | |||
endop | |||
;************************************************** | |||
opcode RissDrum,a,kk | |||
gitemp1 ftgen 0 , 0 ,512, 9 ,1, 1, 0 | |||
gitemp2 ftgen 0 , 0, 512, 5 ,4096 ,512, 1 | |||
gitemp3 ftgen 0 , 0, 512, 9 ,10 ,1 ,0, 16, 1.5, 0 ,22, 2 ,0, 23 ,1.5, 0 | |||
gitemp4 ftgen 0 , 0, 512, 9, 1, 1, 0 | |||
gitemp5 ftgen 0 , 0, 512, 5, 256, 512, 1 | |||
kveloc,knote xin | |||
kgate linenr kveloc/2, 0, .2, .01 | |||
i1 = 6000*.3 | |||
i2 = 500*.1 | |||
i3 = 1 | |||
i4 = 6000*.8 | |||
i5 = 500 | |||
a1 randi 6000,4000 | |||
a1 poscil a1,i3,gitemp2 | |||
a1 poscil a1,3000,gitemp1 | |||
a2 poscil i1,i3,gitemp2 | |||
a2 poscil a2,knote*.01,gitemp3 | |||
a3 poscil i4,i3,gitemp5 | |||
a3 poscil a3,knote,gitemp4 | |||
aout = (a1+a2+a3)*.0001 | |||
xout aout*kgate | |||
endop | |||
;************************************************** | |||
opcode RissGliss,a,ik | |||
gitemp1 ftgen 0 ,0, 8192, 10, 1 | |||
iamp,kfreq xin | |||
irise = .5 | |||
kenv1 expseg .01, irise, iamp*1200,1000-irise,1 | |||
k1 randi kfreq*.05, 1, .2/(1000) | |||
k2 randi kfreq*.25, .1, .3/(1000) | |||
a1 poscil kenv1, kfreq+k1+k2, gitemp1 | |||
kenv11 expseg .01, irise, iamp*.83*1200,1000-irise,1 | |||
k11 randi kfreq*.05*1.154, 1, .2/(1000) | |||
k12 randi kfreq*.25*1.154, .1, .3/(1000) | |||
a11 poscil kenv11, kfreq*1.154+k11+k12, gitemp1 | |||
kenv21 expseg .01, irise, iamp*.33*1200,1000-irise,1 | |||
k21 randi kfreq*.051*.417, 1, .2/(1000) | |||
k22 randi kfreq*.25*1.417, .1, .3/(1000) | |||
a21 poscil kenv21, kfreq*1.417+k21+k22, gitemp1 | |||
kenv31 expseg .01, irise, iamp*.67*1200,1000-irise,1 | |||
k31 randi kfreq*.05*1.604, 1, .2/(1000) | |||
k32 randi kfreq*.25*1.604, .1, .3/(1000) | |||
a31 poscil kenv31, kfreq*1.604+k31+k32, gitemp1 | |||
kenv41 expseg .01, irise, iamp*1200,1000-irise,1 | |||
k41 randi kfreq*.05*2.521, 1, .2/(1000) | |||
k42 randi kfreq*.25*2.521, .1, .3/(1000) | |||
a41 poscil kenv41, kfreq*2.521+k41+k42, gitemp1 | |||
kenv51 expseg .01, irise, iamp*.33*1200,1000-irise,1 | |||
k51 randi kfreq*.05*2.792, 1, .2/(1000) | |||
k52 randi kfreq*.25*2.792, .1, .3/(1000) | |||
a51 poscil kenv51, kfreq*2.792+k51+k52, gitemp1 | |||
kenv61 expseg .01, irise, iamp*.33*1200,1000-irise,1 | |||
k61 randi kfreq*.05*3.383, 1, .2/(1000) | |||
k62 randi kfreq*.25*3.383, .1, .3/(1000) | |||
a61 poscil kenv61, kfreq*3.383+k61+k62,gitemp1 | |||
a1=(a1+a11+a21+a31+a41+a51+a61)*.01 | |||
;kenv71 expseg .01, irise, 1, 100*.5, 1, 100*.5-irise, 1 | |||
;kdeclick linsegr 0,.1,1,.3,.5,0.001,.01 | |||
kdeclick linsegr 0.01, 0.01, 1, 0.33*1, 0 | |||
xout ((a1)*kdeclick)*.02 ; write output | |||
endop | |||
;************************************************** | |||
opcode RissFlute,a,kk | |||
gitemp1 ftgen 0 ,0, 512, 9 ,1 ,.26,0 | |||
gitemp2 ftgen 0 , 0, 512, 10, 1, .4, .2, .1, .1, .05 | |||
kamp,kfreq xin | |||
k1 randi kamp*.01,5 | |||
k1 = k1 + kamp | |||
k2 poscil k1,1/.24,gitemp1 | |||
k2 = k2 + .74 | |||
a1 poscil k2,kfreq,gitemp2 | |||
kdeclick linsegr 0.1, 0.01, 1, 0.33*1, 0 | |||
xout a1*kdeclick | |||
endop | |||
;************************************************** | |||
opcode RissHarmon,a,kk | |||
gisine ftgen 0 , 0, 1024, 10, 1 ,0, 0 ,0 , .7, .7, .7, .7 ,.7, .7 | |||
kveloc,knote xin | |||
kgate linenr kveloc,1,2,.01 | |||
i1 = .03 | |||
i2 = 2*.03 | |||
i3 = 3*.03 | |||
i4 = 4*.03 | |||
ampenv linenr 9,.01,1,.01 | |||
a1 poscil ampenv,knote,gisine | |||
a2 poscil ampenv,knote+i1,gisine | |||
a3 poscil ampenv,knote+i2,gisine | |||
a4 poscil ampenv,knote+i3,gisine | |||
a5 poscil ampenv,knote+i4,gisine | |||
a6 poscil ampenv,knote-i1,gisine | |||
a7 poscil ampenv,knote-i2,gisine | |||
a8 poscil ampenv,knote-i3,gisine | |||
a9 poscil ampenv,knote-i4,gisine | |||
aout = ((a1+a2+a3+a4+a5+a6+a7+a8+a9)*kgate)*.05 | |||
xout aout | |||
endop | |||
;************************************************** | |||
opcode RissNoise,a,ik | |||
gitemp1 ftgen 0 ,0, 8192, 10, 1 | |||
gitemp2 ftgen 0 ,0, 8192, 7, -1, 8192, 1 | |||
gitemp3 ftgen 0 ,0, 8192, 7, 1, 4096, 1, 0, -1, 4096, -1 | |||
gitemp4 ftgen 0 ,0, 8192, 21, 1 | |||
iveloc,knote xin | |||
kenv linsegr 0,.01,iveloc, 1, iveloc,2,iveloc*.2,.25, 0 | |||
aosc poscil kenv, 440, gitemp4 | |||
kenv expon 2, 1, .01 | |||
aosc2 butterbp aosc, knote, knote * kenv | |||
aosc2 butterbp aosc2, knote, knote * kenv | |||
aosc balance aosc2, aosc | |||
aosc = aosc * .7 | |||
xout aosc | |||
endop | |||
;************************************************** | |||
opcode RissOctave,a,kk | |||
gitemp2 ftgen 0 ,0, 128, 8, 0, .5, 0, 63.5, 1, 63.5, 0, .5 ,0 | |||
gisine ftgen 0 ,0, 4096,10,1 | |||
kamp,kfreq xin | |||
krate = .1 | |||
iphsoff = (65/5)*.01 | |||
ka1 = kamp | |||
iph1 = 0 | |||
kamp1 poscil ka1,krate,gitemp2,iph1 | |||
kfreq1 = kfreq | |||
asig1 poscil kamp1,kfreq1,gisine | |||
ka2 = kamp | |||
iph2 = iph1+iphsoff | |||
kamp2 poscil ka2,krate,gitemp2,iph2 | |||
kfreq2 = kfreq*2 | |||
asig2 poscil kamp2,kfreq2,gisine | |||
ka3 = kamp | |||
iph3 = iph2+iphsoff | |||
kamp3 poscil ka3,krate,gitemp2,iph3 | |||
kfreq3 = kfreq*3 | |||
asig3 poscil kamp3,kfreq3,gisine | |||
ka4 = kamp | |||
iph4 = iph3+iphsoff | |||
kamp4 poscil ka4,krate,gitemp2,iph4 | |||
kfreq4 = kfreq*4 | |||
asig4 poscil kamp4,kfreq4,gisine | |||
ka5 = kamp | |||
iph5 = iph4+iphsoff | |||
kamp5 poscil ka5,krate,gitemp2,iph5 | |||
kfreq5 = kfreq*5 | |||
asig5 poscil kamp5,kfreq5,gisine | |||
add = asig1+asig2+asig3+asig4+asig5 | |||
;kenv linseg 0,p3/2,1,p3/2,0 | |||
aout = add | |||
kdeclick linsegr 0.01, 0.01, 1, 0.33*1, 0 | |||
xout (aout*.5)*kdeclick | |||
endop | |||
;************************************************** | |||
opcode RissRing,a,kk | |||
gitemp2 ftgen 0 ,0, 512, 7, 0, 43, 1, 171, 1, 84, -1, 171, -1, 43, 0 | |||
gitemp3 ftgen 0 ,0, 512, 9, 1, 1, 0 | |||
kveloc,knote xin | |||
kgate linenr kveloc/2, 0, .2, .01 | |||
a1 expseg .2,2.3,1,1-.01,.001 | |||
a1 poscil a1,knote,gitemp3 | |||
a2 poscil 10000,1500,gitemp2 | |||
aout = (a1*a2)*.001 | |||
xout aout*kgate | |||
endop | |||
;************************************************** | |||
instr 1 | |||
;kselect init 1 | |||
;channel | |||
;kmodfreq chnget "mod" | |||
ksemi1 chnget "semi" | |||
kdetune chnget "detune" | |||
kspread chnget "spread" | |||
iatt chnget "att" | |||
idec chnget "dec" | |||
isus chnget "sus" | |||
irel chnget "rel" | |||
klfoamp chnget "vibamp" | |||
klforate chnget "vibrate" | |||
kselect chnget "select" | |||
;midi | |||
imidinn notnum | |||
iamp ampmidi 1 | |||
kbend pchbend 0,2 ;pitch bend | |||
;lfo | |||
klfo lfo klfoamp,klforate,2 | |||
kfreq1 = cpsmidinn(imidinn+kbend+int(ksemi1)) ;controllo midi | |||
kfreq2 = cpsmidinn(imidinn+kbend+kdetune+int(ksemi1)) | |||
if kselect = 1 then | |||
ariss1 RissClar iamp,kfreq1+klfo | |||
ariss2 RissClar iamp,kfreq2+klfo | |||
elseif kselect = 2 then | |||
ariss1 RissDrum iamp,kfreq1+klfo | |||
ariss2 RissDrum iamp,kfreq2+klfo | |||
elseif kselect = 3 then | |||
ariss1 RissFlute iamp,kfreq1+klfo | |||
ariss2 RissFlute iamp,kfreq2+klfo | |||
elseif kselect = 4 then | |||
ariss1 RissHarmon iamp,kfreq1+klfo | |||
ariss2 RissHarmon iamp,kfreq2+klfo | |||
elseif kselect = 5 then | |||
ariss1 RissNoise iamp,kfreq1+klfo | |||
ariss2 RissNoise iamp,kfreq2+klfo | |||
elseif kselect = 6 then | |||
ariss1 RissOctave iamp,kfreq1+klfo | |||
ariss2 RissOctave iamp,kfreq2+klfo | |||
elseif kselect = 7 then | |||
ariss1 RissRing iamp,kfreq1+klfo | |||
ariss2 RissRing iamp,kfreq2+klfo | |||
endif | |||
ktrig changed kselect | |||
if ktrig = 1 then | |||
reinit play | |||
endif | |||
play: | |||
;master | |||
aL clip ariss1,0,0dbfs | |||
aR clip ariss2,0,0dbfs | |||
aoutL = ((aL * kspread) + (aR * (1 - kspread))) *.5 | |||
aoutR = ((aL * (1-kspread)) + (aR * kspread)) *.5 | |||
kadsr mxadsr iatt,idec,isus,irel | |||
outs (aoutL*kadsr),(aoutR*kadsr) | |||
vincr ga1,aoutL*kadsr | |||
vincr ga2,aoutR*kadsr | |||
endin | |||
instr 10 ;reverb | |||
ktrig chnget "onoff" | |||
klevel chnget "level" | |||
ksize chnget "size" | |||
if ktrig = 1 then | |||
al,ar reverbsc ga1,ga2,ksize,16000,sr,0 | |||
asum1 dcblock2 al | |||
asum2 dcblock2 ar | |||
else | |||
asum1 = 0 | |||
asum2 = 0 | |||
endif | |||
outs asum1*klevel,asum2*klevel | |||
clear ga1,ga2 | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
f1 0 16384 10 1 | |||
;f0 3600 | |||
i1 0 36000 | |||
i10 0 36000 | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,339 @@ | |||
RubbedResonators.csd | |||
This example introduces a method of 'exciting' mode filters that creates an imitation of a resonant object being bowed or rubbed. The excitation signal consists of a stack of sine wave oscillators that match the number and frequencies of the mode filters being used. This arrangement can cause the mode filters to resonate with great intensity so the amplitudes of the sine wave oscillators should be kept low to prevent overloading. Additionally the frequency of each sine wave oscillator is individually modulated using a random 'jitter' function created using 'gaussi' (interpolating gaussian noise generator). This technique results is a shifting spectral response from the filters. Adjusting the rate and amplitude of this jitter function can imitate a variety of bowing and rubbing techniques. Increasing 'Jit.Dep.' while 'Jit.Rate' is kept low gives the impression of the resonator being rubbed with greater pressure. If both 'Jit.Dep.' and 'Jit.Rate' are high the impression is of the resonator begin brushed. | |||
If 'Q' is low then more of the character of the impulse sound (the sine wave oscillators) will be apparent (and therefore the jitter modulation will be more apparent). If 'Q' is higher then the character of the mode filters will dominate and modulation of the impulse sound frequencies will be less apparent. A key aspect of this instrument is that once the impulse sound is removed ('Impulse Amp.' is brought to minimum) the sound produced is solely the residual resonance of the mode filters, therefore any modulation within the sine wave oscillators becomes irrelevant. | |||
For brightness (damping) control to work properly modal ratios in their function table will need to be in ascending order. | |||
Chorus effect is disabled when 'Mix' is zero | |||
Number of partials in the chosen algorithm is printed to the GUI for the user's information. Algorithms with high numbers of partials will demand more CPU and lower polyphony will be possible. | |||
<Cabbage> | |||
form caption("Rubbed Resonators"), size(440, 320), pluginID("RubR") | |||
image pos(0, 0), size(440, 290), colour("Sienna"), shape("rounded"), outline("brown"), line(4) | |||
;IMPULSE | |||
groupbox bounds(10, 10, 260, 90), text("Impulse"), fontcolour("white"){ | |||
rslider bounds( 10, 35,60,60), text("Amp."), colour("Chocolate"), channel("ImpDB"), range(-70, 0, 0) | |||
rslider bounds( 60, 35,60,60), text("HPF"), colour("Chocolate"), channel("HPF"), range(20, 20000, 20, 0.5) | |||
rslider bounds(110, 35,60,60), text("LPF"), colour("Chocolate"), channel("LPF"), range(20, 20000, 20000, 0.5) | |||
rslider bounds(160, 35,60,60), text("Jit. Dep."), channel("JitDep"), colour("Chocolate"), range(0, 5, 0.4,0.5) | |||
rslider bounds(210, 35,60,60), text("Jit. Rate"), channel("JitRte"), colour("Chocolate"), range(0.01,100, 3,0.5) | |||
} | |||
;RESONATORS | |||
groupbox bounds(270, 10,160,180), text("Resonators"), fontcolour("white"){ | |||
label bounds(320, 40,120, 12), text("Instrument"), colour("white") | |||
combobox bounds(280, 55,140, 25), channel("sound"), value(4), text("Single", "Dahina", "Banyan", "Xylophone", "Tibetan Bowl 180mm", "Spinel Sphere", "Pot Lid", "Red Cedar Wood Plate", "Tubular Bell", "Redwood Wood Plate", "Douglas Fir Wood Plate", "Uniform Wooden Bar", "Uniform Aluminium Bar", "Vibraphone 1", "Vibraphone 2", "Chalandi Plates", "Tibetan Bowl 152mm", "Tibetan Bowl 140mm", "Wine Glass", "Small Handbell", "Albert Clock Bell", "Wood Block","Harmonic 10","Harmonic 20","Harmonic 30","Harmonic Odd 10","Harmonic Odd 20") | |||
rslider bounds(315, 85, 70, 30), text("N.Partials"), TextBox(1), channel("npartials"), range(1, 10000, 1, 1, 1) | |||
rslider bounds(270,125, 60, 60), text("Q"), colour("orange"), channel("Q"), range(50, 10000, 2000, 0.5) | |||
rslider bounds(320,125, 60, 60), text("Bright"), colour("orange"), channel("bright"), range(-4, 4, 0) | |||
rslider bounds(370,125, 60, 60), text("Gain"), colour("orange"), channel("gain"), range(0, 8, 1) | |||
} | |||
;POLYPHONY | |||
groupbox bounds( 10,100,100, 90), text("Polyphony"), fontcolour("white"){ | |||
button bounds( 20,125, 80, 20), text("poly","mono"), channel("monopoly"), value(0), fontcolour("lime") | |||
hslider bounds( 15,143, 90, 38), colour("chocolate"), channel("GlissTime"), range(0.005, 0.3, 0.1, 0.25, 0.001) | |||
label bounds( 32,174, 90, 12), text("Gliss Time") | |||
} | |||
;CHORUS | |||
groupbox bounds(110,100,160, 90), text("Chorus"), fontcolour("white"){ | |||
rslider bounds(110,125, 60, 60), text("Mix"), channel("ChoMix"), range(0, 1, 0.5), colour("yellow") | |||
rslider bounds(160,125, 60, 60), text("Depth"), channel("ChoDep"), range(0, 0.1, 0.01,0.5, 0.001), colour("yellow") | |||
rslider bounds(210,125, 60, 60), text("Rate"), channel("ChoRte"), range(0, 20, 0.96, 0.5), colour("yellow") | |||
} | |||
keyboard bounds(10, 195, 420, 85) | |||
image bounds(5, 295, 240, 22), colour(75, 85, 90, 100), plant("credit"){ | |||
label bounds(0.03, 0.15, .9, .7), text("Author: Iain McCurdy |2012|"), colour("white") | |||
} | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-dm0 -n -+rtmidi=null -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 64 | |||
nchnls = 2 | |||
0dbfs = 1 ;MAXIMUM AMPLITUDE | |||
massign 0,2 ;MIDI DATA DIRECTED TO INSTRUMENT 2 | |||
;Author: Iain McCurdy (2012) | |||
;FUNCTION TABLES STORING MODAL FREQUENCY RATIOS------------------------------------------------------------------------------------------------------------------------------------------------ | |||
;single | |||
girtos1 ftgen 0,0,2, -2, 1,1 | |||
;dahina | |||
girtos2 ftgen 0,0,-6,-2, 1, 2.89, 4.95, 6.99, 8.01, 9.02 | |||
;banyan | |||
girtos3 ftgen 0,0,-6,-2, 1, 2.0, 3.01, 4.01, 4.69, 5.63 | |||
;xylophone | |||
girtos4 ftgen 0,0,-6,-2, 1, 3.932, 9.538, 16.688, 24.566, 31.147 | |||
;tibetan bowl (180mm) | |||
girtos5 ftgen 0,0,-7,-2, 1, 2.77828, 5.18099, 8.16289, 11.66063, 15.63801, 19.99 | |||
;spinel sphere with diameter of 3.6675mm | |||
girtos6 ftgen 0,0,-24,-2, 1, 1.026513174725, 1.4224916858532, 1.4478690202098, 1.4661959580455, 1.499452545408, 1.7891839345101, 1.8768994627782, 1.9645945254541, 1.9786543873113, 2.0334612432847, 2.1452852391916, 2.1561524686621, 2.2533435661294, 2.2905090816065, 2.3331798413917, 2.4567715528268, 2.4925556408289, 2.5661806088514, 2.6055768738808, 2.6692760296751, 2.7140956766436, 2.7543617293425, 2.7710411870043 | |||
;pot lid | |||
girtos7 ftgen 0,0,-6,-2, 1, 3.2, 6.23, 6.27, 9.92, 14.15 | |||
;red cedar wood plate | |||
girtos8 ftgen 0,0,-4,-2, 1, 1.47, 2.09, 2.56 | |||
;tubular bell | |||
girtos9 ftgen 0,0,-10,-2, 272/437, 538/437, 874/437, 1281/437, 1755/437, 2264/437, 2813/437, 3389/437, 4822/437, 5255/437 | |||
;redwood wood plate | |||
girtos10 ftgen 0,0,-4,-2, 1, 1.47, 2.11, 2.57 | |||
;douglas fir wood plate | |||
girtos11 ftgen 0,0,-4,-2, 1, 1.42, 2.11, 2.47 | |||
;uniform wooden bar | |||
girtos12 ftgen 0,0,-6,-2, 1, 2.572, 4.644, 6.984, 9.723, 12 | |||
;uniform aluminum bar | |||
girtos13 ftgen 0,0,-6,-2, 1, 2.756, 5.423, 8.988, 13.448, 18.680 | |||
;vibraphone 1 | |||
girtos14 ftgen 0,0,-6,-2, 1, 3.984, 10.668, 17.979, 23.679, 33.642 | |||
;vibraphone 2 | |||
girtos15 ftgen 0,0,-6,-2, 1, 3.997, 9.469, 15.566, 20.863, 29.440 | |||
;Chalandi plates | |||
girtos16 ftgen 0,0,-5,-2, 1, 1.72581, 5.80645, 7.41935, 13.91935 | |||
;tibetan bowl (152 mm) | |||
girtos17 ftgen 0,0,-7,-2, 1, 2.66242, 4.83757, 7.51592, 10.64012, 14.21019, 18.14027 | |||
;tibetan bowl (140 mm) | |||
girtos18 ftgen 0,0,-5,-2, 1, 2.76515, 5.12121, 7.80681, 10.78409 | |||
;wine glass | |||
girtos19 ftgen 0,0,-5,-2, 1, 2.32, 4.25, 6.63, 9.38 | |||
;small handbell | |||
girtos20 ftgen 0,0,-22,-2, 1, 1.0019054878049, 1.7936737804878, 1.8009908536585, 2.5201981707317, 2.5224085365854, 2.9907012195122, 2.9940548780488, 3.7855182926829, 3.8061737804878, 4.5689024390244, 4.5754573170732, 5.0296493902439, 5.0455030487805, 6.0759908536585, 5.9094512195122, 6.4124237804878, 6.4430640243902, 7.0826219512195, 7.0923780487805, 7.3188262195122, 7.5551829268293 | |||
;albert clock bell belfast | |||
;girtos21 ftgen 0,0,-22,-2, 2.043260,1.482916,1.000000,3.328848,4.761811,1.477056,0.612007,2.661295,1.002793,4.023776,0.254139,2.043916,4.032463,2.659438,4.775560,5.500494,3.331014,0.809697,2.391301, 0.254098,1.901476,2.366563 ;,0.614968,2.046543,1.814887,3.130744,2.484426,0.558874,0.801697,0.070870,3.617036,2.782656 | |||
girtos21 ftgen 0,0,-22,-2, 0.254098,0.254139,0.612007,0.809697,1.000000,1.002793,1.477056,1.482916,1.901476,2.043260,2.043916,3.331014,2.366563,2.391301,2.659438,2.661295,3.328848,4.023776,4.032463,4.761811,4.775560,5.500494 | |||
;wood block | |||
girtos22 ftgen 0,0,4,-2, 915/915,1540/915,1863/915,3112/915 | |||
;harmonic 10 | |||
girtos23 ftgen 0,0,-10,-2, 1,2,3,4,5,6,7,8,9,10 | |||
;harmonic 20 | |||
girtos24 ftgen 0,0,-20,-2, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 | |||
;harmonic 30 | |||
girtos25 ftgen 0,0,-30,-2, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 | |||
;harmonic odd 10 | |||
girtos26 ftgen 0,0,-10,-2, 1,3,5,7,9,11,13,15,17,19 | |||
;harmonic odd 20 | |||
girtos27 ftgen 0,0,-20,-2, 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39 | |||
seed 0 ;random number generators seeded from the system clock | |||
gasend init 0 ;initialise the global audio send variable | |||
gisine ftgen 0,0,4096,10,1 ;a sine wave | |||
;table that stores indicators for each active note. 1=active 0=inactive index_location=note_number | |||
giNoteActive ftgen 0,0,128,2,0 | |||
;-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
gkbright init 0 | |||
gasend init 0 | |||
;--UDOS-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
opcode SineVoice,a,kkkiiii | |||
kfreq,kjitdep,kjitrte,icount,invoices,irtos,isfn xin | |||
amix = 0 ;initialise audio mix variable (mixture of all sine wave oscillators) | |||
kjit gaussi kjitdep, 1, kjitrte ;jitter function (semitone deviation) | |||
irto table icount-1,irtos ;read the frequency ratio for this oscillator from the appropriate ratios table | |||
a1 oscili 1,semitone(kjit)*kfreq*irto,isfn ;create the oscillator | |||
if icount<invoices then ;if not all required oscillators have been created yet... | |||
amix SineVoice kfreq,kjitdep,kjitrte,icount+1,invoices,irtos,isfn ;call the udo again, with the incremented counter | |||
endif | |||
xout amix + a1 ;send mix of all oscillators back the the udo output | |||
endop | |||
opcode ModeVoice,a,akkkiii ;mode udo (k-rate base frequency) - used for non-midi mode | |||
ain,kfreq,kq,kdamp,icount,inmodes,irtos xin ;name input variables | |||
amix = 0 ;initialise audio mix variable (mixture of all mode filters) | |||
asig = 0 ;initialise audio for the mode filter in this iteration of the UDO. Only needed if only 1 mode is present. | |||
irto table icount-1,irtos ;read frequency ratio for current mode according to iteration counter | |||
kThisFreq = kfreq * irto ;derive modal frequency from product of ratio and base frequency | |||
if sr/kThisFreq>=$M_PI then | |||
asig mode ain, kThisFreq, kq ;create mode signal | |||
if kdamp>0 then | |||
kamp = ((inmodes-icount+1)^(-kdamp))*(kdamp+1) | |||
else | |||
kamp = icount^kdamp | |||
endif | |||
aamp interp kamp | |||
asig = asig*aamp | |||
if icount < inmodes then ;if all the modes in this current instrument have not yet been created... | |||
amix ModeVoice ain, kfreq,kq,kdamp,icount+1, inmodes,irtos ;...call modemodule udo again with incremented counter | |||
endif ;end of conditional branching | |||
endif | |||
xout amix+asig ;send all audio back to caller instrument | |||
endop ;end of udo | |||
;-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
instr 1 ;read in widgets (always on) | |||
gkQ chnget "Q" ;read in widgets | |||
kImpDB chnget "ImpDB" | |||
gkHPF chnget "HPF" | |||
gkLPF chnget "LPF" | |||
gkJitDep chnget "JitDep" | |||
gkJitRte chnget "JitRte" | |||
gkbright chnget "bright" | |||
gkgain chnget "gain" | |||
gkmonopoly chnget "monopoly" | |||
gkGlissTime chnget "GlissTime" | |||
gksound chnget "sound" | |||
gkChoMix chnget "ChoMix" | |||
gkChoRte chnget "ChoRte" | |||
gkChoDep chnget "ChoDep" | |||
gkImpAmp = ampdbfs(kImpDB) ;convert from dB value to amp value | |||
gkbright port gkbright,0.02 ;smooth changes using portamento | |||
gkgain port gkgain,0.02 ; | |||
ktrig changed gksound ;if sound combobox changes... | |||
if ktrig==1 then | |||
event "i",5,0,0.001 ;...call instrument 5 to update 'N.Partials' number box | |||
endif | |||
endin | |||
instr 2 ;MIDI TRIGGERED INSTRUMENT | |||
gkNoteTrig init 1 ;at the beginning of a new note set note trigger flag to '1' | |||
ibase cpsmidi ;read in midi note number as a cps value | |||
gkbase = ibase | |||
ivel ampmidi 1 ;read in midi note velocity as a value within the range 0 to 1 | |||
gkvel init ivel | |||
inum notnum ;read in midi note number as an integer (used for create a table of active notes flags) | |||
krelease release ;note release flag (0 = note held, 1 = note released) | |||
tablew 1-krelease,inum,giNoteActive ;write note release flag to table at the location corresponding to note number | |||
iactive active p1+1 | |||
if iactive==0||i(gkmonopoly)==0 then ;if polyphonic mode or if this is the first in a series of notes in monophonic mode... | |||
event_i "i",p1+1,0,3600,ibase,inum ;call instrument 3 with the appropriate p-fields | |||
endif | |||
endin | |||
instr 3 ;impulse and modal resonators instrument | |||
ktrig changed gksound | |||
if ktrig==1 then | |||
reinit RESTART_INSTRUMENT | |||
endif | |||
RESTART_INSTRUMENT: | |||
isound init i(gksound) | |||
if gkmonopoly==1 then | |||
/*monophonic*/ | |||
kporttime linseg 0,0.001,1 | |||
kbase portk gkbase,kporttime*gkGlissTime | |||
kactive active p1-1 | |||
kactive limit kactive,0,1 | |||
else | |||
/*polyphponic*/ | |||
kbase init p4 ;base frequency read from p4 | |||
kactive table p5,giNoteActive ;check whether the midi key corresponding to this note is being held or has been released (1 = held, 0 = released). this value will be used to control whether the impulse scound should be active or not. | |||
endif | |||
inum = p5 ;note number | |||
icount = 1 ;counter to count iterations for recursive udos for sine oscillators and mode filters (starts at zero) | |||
irtos = girtos1 + isound - 1 ;derive actual function table number for ratios according to 'sound' chosen | |||
invoices = ftlen(irtos) ;derive the number of voices needed for the 'sound' chosen | |||
kactivePort port kactive,0.05 ;smooth note active on/off switching | |||
ktrig changed gkNoteTrig ;if a new note is started... | |||
if ktrig==1 then | |||
reinit RESTART_ENVELOPE ;...reinitialise from the given label | |||
endif | |||
RESTART_ENVELOPE: ;if a new note is trigger reinitialisation from here occurs to start a new impulse buid-up envelope based on new velocity value | |||
ivel init i(gkvel) | |||
kenv linseg 0,(1-ivel)+0.01,ivel ;create an amplitude envelope for the impulse sound. impulse sound will be velocity sensitive and the attack time of this envelope will be proportionate to the note velocity also. | |||
rireturn | |||
ktrig changed gksound ; to fix bug where sound would not update in mono mode | |||
if ktrig==1 then | |||
reinit RESTART_INSTRUMENT2 | |||
endif | |||
RESTART_INSTRUMENT2: | |||
aSineMix SineVoice kbase,gkJitDep,gkJitRte,icount,invoices,irtos,gisine ;call sine oscillator udo (it will be recursively recalled within the udo the appropriate number of times according to invoices) | |||
aSineMix = aSineMix*0.002*kactivePort*kenv*gkImpAmp ;scale the mixture of sines audio signal | |||
aSineMix buthp aSineMix,gkHPF | |||
aSineMix butlp aSineMix,gkLPF | |||
amodes ModeVoice aSineMix,kbase,gkQ,gkbright,icount,invoices,irtos ;call sine oscillator udo (it will be recursively recalled within the udo the appropriate number of times according to invoices) | |||
amodes = (amodes*gkgain*0.2)/invoices ;scale the amplitude of the sound according to the number of modes in the chosen algorithm | |||
krms rms amodes ;track the amplitude of the sound as an rms value | |||
ithreshold = 0.0001 | |||
if krms<ithreshold&&kactive=0 then ;if sound has died away and key is inactive... | |||
turnoff ;turn instrument off | |||
endif | |||
xtratim 0.1 ;this is needed to prevent initialisation crashes, I'm not sure why | |||
outs amodes,amodes ;send mode filters output mixture to output and rescale according to the number of modes used | |||
gasend = gasend+amodes*gkChoMix | |||
gkNoteTrig = 0 ;reset new-note trigger (in case it was '1') | |||
endin | |||
instr 4 ;Chorus effect | |||
if gkChoMix==0 goto SKIP_CHORUS | |||
kporttime linseg 0,0.001,1 | |||
kporttime = kporttime/gkChoRte | |||
kdlt1 randomi ksmps/sr,gkChoDep,gkChoRte,1 | |||
kdlt1 portk kdlt1,kporttime | |||
adlt1 interp kdlt1 | |||
acho1 vdelay gasend,adlt1*1000,1*1000 | |||
kdlt2 randomi ksmps/sr,gkChoDep,gkChoRte,1 | |||
kdlt2 portk kdlt2,kporttime | |||
adlt2 interp kdlt2 | |||
acho2 vdelay gasend,adlt2*1000,1*1000 | |||
kpan1 randomi 0,1,gkChoRte,1 | |||
kpan2 randomi 0,1,gkChoRte,1 | |||
a1L,a1R pan2 acho1,kpan1 | |||
a2L,a2R pan2 acho2,kpan2 | |||
achoL = a1L+a2L | |||
achoR = a1R+a2R | |||
outs achoL, achoR | |||
clear gasend | |||
SKIP_CHORUS: | |||
endin | |||
instr 5 ;update 'Number of Partials' number box | |||
invoices = ftlen(girtos1+i(gksound)-1) ;derive the number of voices needed for the 'sound' chosen | |||
knvoices init invoices ;create krate version of invoices | |||
chnset knvoices,"npartials" ;send value to number box | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [60*60*24*7] | |||
i 4 0 [60*60*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,144 @@ | |||
<Cabbage> | |||
form caption("Scanned synthesizer") size(552, 330), colour("black"),pluginID("sca1") | |||
rslider bounds(15, 10, 100, 100) channel("speed"), range(0.01,.2,.01), caption("Speed"), colour("orange"), midictrl(1, 1) | |||
rslider bounds(120, 10, 100, 100) channel("semi"), range(-12,12,-12), caption("Coarse"), colour("orange") | |||
rslider bounds(225, 10, 100, 100) channel("cutoff"), range(60,22000,12000), caption("Cutoff"), colour("orange") | |||
rslider bounds(330, 10, 100, 100) channel("reso"), range(.1,.99,.2), caption("Resonance"), colour("orange") | |||
rslider bounds(435, 10, 100, 100) channel("spread"), range(0, 1, .5), caption("Stereo image"), colour("orange") | |||
groupbox bounds(15, 120, 240, 100), text("ADSR amplitude"), plant("ADSR"){ | |||
rslider bounds(.0, .3, .6, .6), text("A"), colour("orange"), channel("att"), range(0.01,3, .5) | |||
rslider bounds(.25, .3, .6, .6), text("D"), colour("orange"), channel("dec"), range(0,1, .5) | |||
rslider bounds(.5, .3, .6, .6), text("S"), colour("orange"), channel("sus"), range(0,1,.8) | |||
rslider bounds(.75, .3, .6, .6), text("R"), colour("orange"), channel("rel"), range(0.01,3, .2) | |||
} | |||
groupbox bounds(270, 120, 130, 100), text("LFO"), plant("lfo"){ | |||
rslider bounds(.04, .3, .6, .6), text("Lfo Amp"), colour("orange"), channel("lfoamp"), range(0,4, 0) | |||
rslider bounds(.5, .3, .6, .6), text("Lfo Rate"), colour("orange"), channel("lforate"), range(.1,10, 0) | |||
;rslider bounds(115, 30, 60, 60), text("S"), colour("orange"), channel("sus"), range(0,1,.8) | |||
;rslider bounds(165, 30, 60, 60), text("R"), colour("orange"), channel("rel"), range(0.01,3, .2) | |||
} | |||
groupbox bounds(410, 120, 130, 100), text("LFO filter"), plant("lfofilter"){ | |||
rslider bounds(.04, .3, .6, .6), text("Lfo Amp"), colour("orange"), channel("lfoamp2"), range(0,1000, 0) | |||
rslider bounds(.5, .3, .6, .6), text("Lfo Rate"), colour("orange"), channel("lforate2"), range(0,10, 0) | |||
;rslider bounds(115, 30, 60, 60), text("S"), colour("orange"), channel("sus"), range(0,1,.8) | |||
;rslider bounds(165, 30, 60, 60), text("R"), colour("orange"), channel("rel"), range(0.01,3, .2) | |||
} | |||
keyboard pos(15, 240), size(530, 60) | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n -+rtmidi=null -M0 -b1024 -m0d | |||
</CsOptions> | |||
<CsInstruments> | |||
; Initialize the global variables. | |||
sr = 44100 | |||
ksmps = 64 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
;Author: Giorgio Zucco (2012) | |||
instr 1 | |||
;channel | |||
krate chnget "speed" | |||
ksemi1 chnget "semi" | |||
kcut chnget "cutoff" | |||
kreso chnget "reso" | |||
kspread chnget "spread" | |||
iatt chnget "att" | |||
idec chnget "dec" | |||
isus chnget "sus" | |||
irel chnget "rel" | |||
klfoamp chnget "lfoamp" | |||
klforate chnget "lforate" | |||
klfoamp2 chnget "lfoamp2" ;lfo x filter | |||
klforate2 chnget "lforate2" | |||
;midi | |||
imidinn notnum | |||
iamp ampmidi 1 | |||
kbend pchbend 0,2 ;pitch bend | |||
;lfo | |||
klfo lfo klfoamp,klforate,2 | |||
kfreq = cpsmidinn(imidinn+kbend+int(ksemi1))+klfo ;controllo midi | |||
;scanned | |||
ktrig changed krate | |||
if ktrig = 1 then | |||
reinit play | |||
endif | |||
play: | |||
;irate = i(krate) | |||
ifnvel = 6 | |||
ifnmass = 2 | |||
ifnstif = 3 | |||
ifnctr = 4 | |||
ifndamp = 5 | |||
kmass = 2 | |||
kstif = .1 | |||
kcentr = .1 | |||
kdamp = -.01 | |||
ileft = .5 | |||
iright = .5 | |||
kpos = 0 | |||
ky = 0 | |||
ain = 0 | |||
idisp = 1 | |||
id = 2 | |||
scanu 1,.01+i(krate),ifnvel,ifnmass,ifnstif,ifnctr,ifndamp,kmass,kstif, kcentr,kdamp,ileft,iright,kpos,ky,ain,idisp,id | |||
asig1 scans iamp,kfreq,8,id | |||
asig2 scans iamp,kfreq,7,id | |||
;filter | |||
klfofilter lfo klfoamp2,klforate2,3 | |||
amoog1 moogladder asig1,kcut+klfofilter,kreso | |||
amoog2 moogladder asig2,kcut+klfofilter,kreso | |||
aout1 balance amoog1,asig1 | |||
aout2 balance amoog2,asig2 | |||
;master | |||
aL clip aout1,0,.9 | |||
aR clip aout2,0,.9 | |||
aoutL = ((aL * kspread) + (aR * (1 - kspread))) *.5 | |||
aoutR = ((aL * (1-kspread)) + (aR * kspread)) *.5 | |||
kadsr madsr iatt,idec,isus,irel | |||
outs aoutL*kadsr,aoutR*kadsr | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
f1 0 128 10 1 | |||
; Initial condition | |||
;f1 0 128 7 0 64 1 64 0 | |||
; Masses | |||
f2 0 128 -7 1 128 .8 | |||
; Spring matrices | |||
f3 0 16384 -23 "string-128" | |||
; Centering force | |||
f4 0 128 -7 0 64 6 64 0 | |||
; Damping | |||
f5 0 128 -7 1 128 .0001 | |||
; Initial velocity | |||
f6 0 128 -7 .02 128 0 | |||
; Trajectories | |||
f8 0 128 -5 .001 32 64 64 96 32 | |||
f7 0 128 -7 0 128 128 | |||
;f0 3600 | |||
i1 0 36000 | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,128 @@ | |||
<Cabbage> | |||
form caption("Scantable synthesizer") size(552, 340), colour("black"),pluginID("sca1") | |||
rslider bounds(15, 10, 100, 100) channel("init"), range(50,59,50), caption("Initial"), colour("white"), midictrl(1, 1) | |||
rslider bounds(120, 10, 100, 100) channel("semi"), range(-24,12,-12), caption("Coarse"), colour("white") | |||
rslider bounds(225, 10, 100, 100) channel("detune"), range(-2,2,0), caption("detune"), colour("white") | |||
rslider bounds(330, 10, 100, 100) channel("cutoff"), range(60,22000,4500), caption("Lowpass"), colour("white") | |||
rslider bounds(435, 10, 100, 100) channel("spread"), range(0, 1, .5), caption("Stereo image"), colour("white") | |||
groupbox bounds(15, 120, 240, 100), text("ADSR amplitude"), plant("ADSR"){ | |||
rslider bounds(.0, .3, .6, .6), text("A"), colour("orange"), channel("att"), range(0.01,3, .5) | |||
rslider bounds(.25, .3, .6, .6), text("D"), colour("orange"), channel("dec"), range(0,1, .5) | |||
rslider bounds(.5, .3, .6, .6), text("S"), colour("orange"), channel("sus"), range(0,1,.8) | |||
rslider bounds(.75, .3, .6, .6), text("R"), colour("orange"), channel("rel"), range(0.01,3, .2) | |||
} | |||
groupbox bounds(270, 120, 130, 100), text("LFO"), plant("lfo"){ | |||
rslider bounds(.04, .3, .6, .6), text("Lfo Amp"), colour("white"), channel("lfoamp"), range(0,20, 0) | |||
rslider bounds(.5, .3, .6, .6), text("Lfo Rate"), colour("white"), channel("lforate"), range(.1,20, 0) | |||
} | |||
groupbox bounds(410, 120, 130, 100), text("LFO filter"), plant("lfofilter"){ | |||
rslider bounds(0.04, .3, .6, .6), text("Lfo Amp"), colour("white"), channel("lfoamp2"), range(0,2000, 0) | |||
rslider bounds(0.5, .3, .6, .6), text("Lfo Rate"), colour("white"), channel("lforate2"), range(0,20, 0) | |||
} | |||
keyboard pos(15, 240), size(520, 60) | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n -+rtmidi=null -M0 -b1024 -m0d | |||
</CsOptions> | |||
<CsInstruments> | |||
; Initialize the global variables. | |||
sr = 44100 | |||
ksmps = 64 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
;Author: Giorgio Zucco (2012) | |||
;scantable | |||
gitemp ftgen 2000, 0, 128, -7, 1, 128, 1 | |||
gitemp ftgen 3000, 0, 128, -7, 0, 64, 100, 64, 0 | |||
gitemp ftgen 4000, 0, 128, -7, 1, 128, 1 | |||
gitemp ftgen 5000, 0, 128, -7, 0, 128, 0 | |||
gitemp ftgen 29, 0, 4096, 10, 1 | |||
;************************************************ | |||
instr 1 | |||
;channel | |||
kcondfn init 50 | |||
ksemi1 chnget "semi" | |||
kdetune chnget "detune" | |||
kcut chnget "cutoff" | |||
kreso chnget "reso" | |||
kspread chnget "spread" | |||
iatt chnget "att" | |||
idec chnget "dec" | |||
isus chnget "sus" | |||
irel chnget "rel" | |||
klfoamp chnget "lfoamp" | |||
klforate chnget "lforate" | |||
klfoamp2 chnget "lfoamp2" ;lfo x filter | |||
klforate2 chnget "lforate2" | |||
;midi | |||
imidinn notnum | |||
iamp ampmidi 1 | |||
kbend pchbend 0,2 ;pitch bend | |||
;lfo | |||
klfo lfo klfoamp,klforate,2 | |||
kfreq1 = cpsmidinn(imidinn+kbend+int(ksemi1))+klfo ;controllo midi | |||
kfreq2 = cpsmidinn(imidinn+kbend+kdetune+int(ksemi1))+klfo | |||
kcondfn chnget "init" | |||
ktrig changed kcondfn | |||
if ktrig = 1 then | |||
reinit play | |||
endif | |||
play: | |||
asig1 scantable iamp,kfreq1,i(kcondfn),2000,3000,4000,5000 | |||
asig2 scantable iamp,kfreq2,i(kcondfn),2000,3000,4000,5000 | |||
;filter | |||
klfofilter lfo klfoamp2,klforate2,3 | |||
afilt1 clfilt asig1,kcut+klfofilter,0,8 | |||
afilt2 clfilt asig2,kcut+klfofilter,0,8 | |||
;master | |||
aL clip afilt1,0,0dbfs | |||
aR clip afilt2,0,0dbfs | |||
aoutL = ((aL * kspread) + (aR * (1 - kspread))) *.5 | |||
aoutR = ((aL * (1-kspread)) + (aR * kspread)) *.5 | |||
kadsr madsr iatt,idec,isus,irel | |||
outs aoutL*kadsr,aoutR*kadsr | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
;Initial Condition/State | |||
f50 0 128 7 0 30 0 2 1 2 0 30 0 30 0 2 -1 2 0 30 0 | |||
f51 0 128 7 0 30 0 2 1 2 0 30 0 | |||
f52 0 128 10 1 0 1 0 1 | |||
f53 0 128 10 1 .9 .8 .7 .6 .5 .4 .3 .2 | |||
f54 0 128 10 1 0 2 1 0 0 1 0 2 1 | |||
f55 0 128 10 1 1 0 1 2 1 0 1 2 1 0 | |||
f56 0 128 7 0 128 0 | |||
f57 0 128 7 0 64 1 64 0 | |||
f58 0 128 10 1 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 | |||
f59 0 128 7 0 32 1 32 0 32 1 32 0 | |||
;f0 3600 | |||
i1 0 36000 | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,64 @@ | |||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> | |||
<HTML> | |||
<HEAD> | |||
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252"> | |||
<TITLE></TITLE> | |||
<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.2 (Win32)"> | |||
<META NAME="CREATED" CONTENT="20120918;12541200"> | |||
<META NAME="CHANGED" CONTENT="20120920;9525900"> | |||
<STYLE TYPE="text/css"> | |||
<!-- | |||
@page { margin: 2cm } | |||
P { margin-bottom: 0.21cm } | |||
A:link { so-language: zxx } | |||
--> | |||
</STYLE> | |||
</HEAD> | |||
<BODY LANG="en-GB" DIR="LTR"> | |||
<P STYLE="margin-bottom: 0cm"><FONT FACE="Verdana, sans-serif"><FONT SIZE=5><U><B>Sonic | |||
Lava Lamp</B></U></FONT></FONT></P> | |||
<P STYLE="margin-bottom: 0cm"><BR> | |||
</P> | |||
<TABLE WIDTH=100% BORDER=1 CELLPADDING=4 CELLSPACING=3> | |||
<COL WIDTH=128*> | |||
<COL WIDTH=128*> | |||
<TR VALIGN=TOP> | |||
<TD WIDTH=50%> | |||
<P STYLE="margin-bottom: 0cm; text-decoration: none"><FONT FACE="Verdana, sans-serif"><B>xypad1:</B></FONT></P> | |||
<P STYLE="margin-bottom: 0cm; text-decoration: none"><FONT FACE="Verdana, sans-serif">x | |||
= LFO Speed</FONT></P> | |||
<P STYLE="text-decoration: none"><FONT FACE="Verdana, sans-serif">y | |||
= LFO Offset</FONT></P> | |||
</TD> | |||
<TD WIDTH=50%> | |||
<P STYLE="margin-bottom: 0cm; text-decoration: none"><FONT FACE="Verdana, sans-serif"><B>xypad2:</B></FONT></P> | |||
<P STYLE="margin-bottom: 0cm; text-decoration: none"><FONT FACE="Verdana, sans-serif">x | |||
= LFO Shape</FONT></P> | |||
<P STYLE="text-decoration: none"><FONT FACE="Verdana, sans-serif">y | |||
= LFO Depth</FONT></P> | |||
</TD> | |||
</TR> | |||
<TR VALIGN=TOP> | |||
<TD WIDTH=50%> | |||
<P STYLE="margin-bottom: 0cm; text-decoration: none"><FONT FACE="Verdana, sans-serif"><B>xypad3:</B></FONT></P> | |||
<P STYLE="margin-bottom: 0cm; text-decoration: none"><FONT FACE="Verdana, sans-serif">x | |||
= Pan Position</FONT></P> | |||
<P STYLE="text-decoration: none"><FONT FACE="Verdana, sans-serif">y | |||
= Amplitude</FONT></P> | |||
</TD> | |||
<TD WIDTH=50%> | |||
<P STYLE="margin-bottom: 0cm; text-decoration: none"><FONT FACE="Verdana, sans-serif"><B>xypad4:</B></FONT></P> | |||
<P STYLE="margin-bottom: 0cm; text-decoration: none"><FONT FACE="Verdana, sans-serif">x | |||
= Delay Time</FONT></P> | |||
<P><FONT FACE="Verdana, sans-serif"><SPAN STYLE="text-decoration: none">y | |||
= Delay Send</SPAN></FONT></P> | |||
</TD> | |||
</TR> | |||
</TABLE> | |||
<P STYLE="margin-bottom: 0cm; font-weight: normal; text-decoration: none"> | |||
<FONT FACE="Verdana, sans-serif"><FONT SIZE=3>Turn on automation for | |||
each xypad and set them all into slow motion...</FONT></FONT></P> | |||
<P STYLE="margin-bottom: 0cm"><BR> | |||
</P> | |||
</BODY> | |||
</HTML> |
@@ -0,0 +1,189 @@ | |||
StringFeedback.csd - an emulation of a feeding back vibrating string | |||
------------------ | |||
Amplifier | |||
--------- | |||
Feedback - signal that is fed back into the vibrating string model. If a particular note doesn't sound, boost this! | |||
Drive - overdrive level | |||
Sustain - sustain of the string vibrations. Inverse of damping. | |||
Bright - brightness of the signal (lowpass filtering). Uses keyboard tracking, value stated is a ratio of the fundemental of the note played. | |||
Cut - remove lower partials of the signal (highpass filtering). Uses keyboard tracking, value stated is a ratio of the fundemental of the note played. | |||
Movement | |||
--------- | |||
Movement is a rough imitation of the effect of moving the vibrating string with respect to the location of the speaker. This is simply a modulating very short delay. | |||
Speed - speed of modulation (created using a random spline) | |||
Pick-up | |||
------- | |||
Settings pertaining to the location of the pick-up along the length of the vibrating string | |||
Position - manual positioning of the pick-up. 0 or 1 = either end. 0.5 = half-way along the string's length. | |||
Auto - if this is active, manual positioning is ignored and the pick-up moves around randomly | |||
Speed - speed of random movement of the pick-up | |||
Reverb | |||
------ | |||
Distance - Distance of the listener from the speaker (basically a dry/wet signal crossfader) | |||
Room - Room size | |||
Output | |||
------ | |||
Release - ampllitude envelope release for the feedback signal | |||
Level - Level control (pre reverb so reverberation will always die away natuarally) | |||
<Cabbage> | |||
form caption("String Feedback"), size(775, 205), pluginID("fbck"), colour("0,0,0") | |||
groupbox bounds( 0, 0, 290, 90), text("Amplifier"), fontcolour(195,126, 0){ | |||
rslider bounds( 5, 25, 60, 60), text("Feedback"), colour(195,126, 0), FontColour(195,126, 0), channel("fback"), range(0, 8, 0.8,0.5) | |||
rslider bounds( 60, 25, 60, 60), text("Drive"), colour(195,126, 0), FontColour(195,126, 0), channel("drive"), range(0, 1, 0.25) | |||
rslider bounds(115, 25, 60, 60), text("Sustain"), colour(195,126, 0), FontColour(195,126, 0), channel("sustain"), range(0.0001, 1, 1, 0.5, 0.0001) | |||
rslider bounds(170, 25, 60, 60), text("Bright"), colour(195,126, 0), FontColour(195,126, 0), channel("LPF"), range(1, 32, 16) | |||
rslider bounds(225, 25, 60, 60), text("Cut"), colour(195,126, 0), FontColour(195,126, 0), channel("HPF"), range(0, 32, 1) | |||
} | |||
groupbox bounds(290, 0, 70, 90), text("Movement"), fontcolour(195,126, 0){ | |||
rslider bounds(295, 25, 60, 60), text("Speed"), colour(195,126, 0), FontColour(195,126, 0), channel("speed"), range(0.001,1, 0.1,0.5,0.0001) | |||
} | |||
groupbox bounds(360, 0,170, 90), text("Pick-up"), fontcolour(195,126, 0){ | |||
rslider bounds(365, 25, 60, 60), text("Position"),colour(195,126, 0), FontColour(195,126, 0), channel("PickPos"), range(0, 1, 0.1) | |||
checkbox bounds(425, 25, 70, 15), text("Auto") channel("auto"), FontColour(195,126, 0), colour("orange") | |||
rslider bounds(465, 25, 60, 60), text("Speed"),colour(195,126, 0), FontColour(195,126, 0), channel("PickPosSpeed"), range(0.001, 8, 1, 0.5,0.001) | |||
} | |||
groupbox bounds(530, 0,120, 90), text("Reverb"), fontcolour(195,126, 0){ | |||
rslider bounds(535, 25, 60, 60), text("Distance"),colour(195,126, 0), FontColour(195,126, 0), channel("distance"), range(0, 1, 0.1) | |||
rslider bounds(590, 25, 60, 60), text("Room"), colour(195,126, 0), FontColour(195,126, 0), channel("room"), range(0.5,0.99, 0.85) | |||
} | |||
groupbox bounds(650, 0,125, 90), text("Output"), fontcolour(195,126, 0){ | |||
rslider bounds(655, 25, 60, 60), text("Release"), colour(195,126, 0), FontColour(195,126, 0), channel("rel"), range(0.01, 8, 0.01, 0.5) | |||
rslider bounds(710, 25, 60, 60), text("Level"), colour(195,126, 0), FontColour(195,126, 0), channel("level"), range(0, 1, 0.5) | |||
} | |||
keyboard bounds(0, 95,775,80) | |||
image bounds(5, 180, 420, 20), colour(75, 85, 90, 50), plant("credit"){ | |||
label bounds(0.03, 0.1, .6, .7), text("Author: Iain McCurdy |2013|"), colour("white"), FontColour(195,126, 0) | |||
} | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-dm0 -n -+rtmidi=null -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 4 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
massign 0,1 ; assign all midi to channel 1 | |||
seed 0 ; random number generators seeded from system clock | |||
gasendL,gasendR,garvbL,garvbR init 0 ; initialise global variables to zero | |||
giscal ftgen 0,0,1024,-16,1,1024,4,8 ; amplitude scaling used in 'overdrive' mechanism | |||
gifbscl ftgen 0,0,128,-27, 0,1, 36,1, 86,3, 127,3 ; Feedback scaling function table. Higher notes need higher levels of feedback. | |||
instr 1 | |||
kporttime linseg 0,0.001,0.05 ; used to smooth GUI control movement | |||
iplk = 0.1 ; pluck position (largely irrelevant) | |||
iamp = 1 ; amplitude | |||
icps cpsmidi ; midi note played (in cycles-per-second) | |||
inum notnum ; midi note number | |||
ifbscl table inum, gifbscl ; Feedback scaling. Higher notes need higher levels of feedback. This scaling function is defined earlier in a function table. | |||
ksustain chnget "sustain" ; string sustain (inverse of damping). Higher values = more sustain | |||
krefl = 1-ksustain ; string damping (derived from sustain value). Higher values = more damping. Range 0 - 1 | |||
adel init 0 ; feedback signal from the modulating delay (initial value for the first pass) | |||
; pick-up position | |||
kauto chnget "auto" ; 'auto' checkbox button. | |||
if(kauto==0) then ; if 'auto' button is off pick-up position is set manually | |||
kpick chnget "PickPos" ; 'Position' GUI knob | |||
kpick portk kpick,kporttime ; smooth changes made to the value to prevent glitches | |||
else ; other 'Auto' pick-up position modulation mode is used | |||
kPickposSpeed chnget "PickPosSpeed" ; pick-up position modulation 'Speed' GUI knob | |||
kpick rspline 0.01,0.99,kPickposSpeed,kPickposSpeed*2 ; pick-up position created using a random spline method | |||
kpick limit kpick,0.01,0.99 ; contain possible values. (N.b. rspline will generate values beyond its given limits.) | |||
endif | |||
irel chnget "rel" ; feedback signal release time | |||
aInRel linsegr 1,irel,0 ; feedback signal release envelope | |||
adust dust 0.1,1 ; generate a sparse crackle signal. This is used to help keep the string vibrating. | |||
kfback chnget "fback" ; 'Feedback' value from GUI knob | |||
asig repluck iplk, iamp, icps, kpick, krefl,( (adel*kfback*ifbscl) + ( (garvbL+garvbR) * 0.1) + adust) * aInRel ; vibrating string model | |||
; overdrive | |||
kDrive chnget "drive" ; overdrive value from GUI knob | |||
ktrig changed kDrive ; if 'Drive' knob is moved generate a trigger. Reinitialisation will be needed to refresh the 'clip' opcode. | |||
if(ktrig==1) then ; if 'Drive' knob has been moved... | |||
reinit UPDATE ; reinitialise from 'UPDATE' label | |||
endif | |||
UPDATE: ; a label. Reinitialise from here. | |||
iClipLev = 1-(i(kDrive)*0.9) ; clip level remapped from 0 to 1 remapped to 1 to 0.1. | |||
asig clip asig,0,iClipLev ; clip the audio signal | |||
igain table i(kDrive),giscal,1 ; get amplitude compensation value according to the current 'Drive' setting | |||
asig = asig*igain ; compensate for gain loss | |||
rireturn | |||
; filtering | |||
kLPF chnget "LPF" ; Lowpass filter ('Bright') GUI knob. This is a ratio of the fundemental frequency so the final cutoff frequency will depend on the note played (keyboard tracking). | |||
kLPF portk kLPF,kporttime ; smooth changes | |||
kLPF limit icps*kLPF,20,sr/2 ; derive cycles-per-second filter cutoff value (and protect against out of range values which would cause the filter to 'blow up') | |||
asig butlp asig, kLPF ; lowpass filter the signal | |||
kHPF chnget "HPF" ; same as the above but with a highpass filter. (Highpass filter called 'Cut' in GUI.) | |||
kHPF portk kHPF,kporttime | |||
kHPF limit icps*kHPF,1,sr/2 | |||
asig buthp asig, kHPF | |||
; amplitude enveloping | |||
aAmpEnv expsegr 0.001,.1,1,15,0.001 ; amplitude envelope | |||
asig = asig*aAmpEnv ; apply amplitude envelope | |||
; delay (this controls how different harmonics are accentuated in the feedback process) | |||
kspeed chnget "speed" ; delay time modulation speed | |||
iDelMin = 0.0001 ; delay minimum... | |||
iDelMax = 0.01 ; ...and maximum. These could maybe be brought out as GUI controls | |||
kdeltim rspline iDelMin,iDelMax,kspeed,kspeed*2 ; random spline for delay time (k-rate) | |||
kdeltim limit kdeltim,iDelMin,iDelMax ; limit value (n.b. rspline will generate values beyond its given minimum and maximum) | |||
adeltim interp kdeltim ; interpolate to create a-rate verion for delay time (a-rate will give smoother results) | |||
adel vdelay3 asig, adeltim*1000, 1000 ; create modulating delay signal | |||
; stereo spatialisation - this gives the dry (unreverberated) signal some stereo width | |||
kdelL rspline 0.001, 0.01, 0.05, 0.1 ; left channel spatialising delay | |||
kdelR rspline 0.001, 0.01, 0.05, 0.1 ; right channel spatialising delay | |||
kdelL limit kdelL,0.001, 0.01 ; limit left channel delay times (n.b. rspline will generate values beyond its given minimum and maximum) | |||
kdelR limit kdelR,0.001, 0.01 ; limit right channel delay times (n.b. rspline will generate values beyond its given minimum and maximum) | |||
adelL interp kdelL ; create a-rate of left channel delay time version using interpolation | |||
adelR interp kdelR ; create a-rate of right channel delay time version using interpolation | |||
aL vdelay3 adel,adelL*1000,10 ; delay signal left channel | |||
aR vdelay3 adel,adelR*1000,10 ; delay signal right channel | |||
; create reverb send signals (stereo) | |||
klevel chnget "level" ; level control (pre reverb input therefore allows reverb to die away naturally) | |||
gasendL = gasendL+(aL*klevel) ; left channel reverb send signal accumulated with audio from this note | |||
gasendR = gasendR+(aR*klevel) ; right channel reverb send signal accumulated with audio from this note | |||
endin | |||
instr Reverb | |||
kroom chnget "room" ; room size | |||
garvbL, garvbR reverbsc gasendL, gasendR, kroom, 7000 ; apply reverb | |||
iDryLev = 0.1 ; dry signal level | |||
kRvbLev chnget "distance" ; reverb signal level | |||
outs (garvbL*kRvbLev*0.2)+(gasendL*iDryLev*(1-kRvbLev)), (garvbR*kRvbLev*0.2)+(gasendR*iDryLev*(1-kRvbLev)) | |||
clear gasendL,gasendR | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i "Reverb" 0 3600 | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,983 @@ | |||
Saving patterns saves tables as text file to the pwd. Each save to a new pattern number creates a new text file on disk for that pattern. | |||
Saving snapshots only saves visible widgets. | |||
<Cabbage> | |||
form caption("TR-808") size(800, 400), colour("SlateGrey"), pluginID("T808") | |||
snapshot bounds( 10,373,200, 20), preset("TR-808"), master(1), items("Preset 1", "Preset 2", "Preset 3", "Preset 4", "Preset 5", "Preset 6", "Preset 7", "Preset 8", "Preset 9", "Preset 10") | |||
label bounds(220,375,250, 14), text("Author: Iain McCurdy |2012|"), colour("white") | |||
groupbox bounds( 0, 0, 50, 225), text("B.Drum"),FontColour("black"), colour(192,192,192){ | |||
checkbox bounds(10, 24, 5, 5), colour("yellow"), channel("Act1"), value(0), shape("ellipse") | |||
rslider bounds( 5, 25, 45, 45), text("Level"), FontColour("black"), channel("level1"), range(0, 2, 1) | |||
rslider bounds( 5, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune1"), range(-2, 2, 0) | |||
rslider bounds( 5,125, 45, 45), text("Decay"), FontColour("black"), channel("dur1"), range(0.25, 2, 1, 0.8) | |||
rslider bounds( 5,175, 45, 45), text("Pan"), FontColour("black"),channel("pan1"), range(0, 1, 0.5) | |||
} | |||
groupbox bounds(50, 0, 50, 225), text("Snare"), FontColour("black"),colour(202,202,202){ | |||
checkbox bounds(60, 24, 5, 5), colour("yellow"), channel("Act2"), value(0), shape("ellipse") | |||
rslider bounds(55, 25, 45, 45), text("Level"), FontColour("black"), channel("level2"), range(0, 2, 1) | |||
rslider bounds(55, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune2"), range(-2, 2, 0) | |||
rslider bounds(55,125, 45, 45), text("Decay"), FontColour("black"), channel("dur2"), range(0.25, 2, 1, 0.8) | |||
rslider bounds(55,175, 45, 45), text("Pan"), FontColour("black"),channel("pan2"), range(0, 1, 0.5) | |||
} | |||
groupbox bounds(100, 0, 50, 225), text("Open HH"), FontColour("black"), colour(212,212,212){ | |||
checkbox bounds(110, 24, 5, 5), colour("yellow"), channel("Act3"), value(0), shape("ellipse") | |||
rslider bounds(105, 25, 45, 45), text("Level"), FontColour("black"), channel("level3"), range(0, 2, 1) | |||
rslider bounds(105, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune3"), range(-2, 2, 0) | |||
rslider bounds(105,125, 45, 45), text("Decay"), FontColour("black"),channel("dur3"), range(0.25, 2, 1, 0.8) | |||
rslider bounds(105,175, 45, 45), text("Pan"), FontColour("black"),channel("pan3"), range(0, 1, 0.5) | |||
} | |||
groupbox bounds(150, 0, 50, 225), text("Cl. HH"),FontColour("black"),colour(222,222,222){ | |||
checkbox bounds(160, 24, 5, 5), colour("yellow"), channel("Act4"), value(0), shape("ellipse") | |||
rslider bounds(155, 25, 45, 45), text("Level"), FontColour("black"), channel("level4"), range(0, 2, 1) | |||
rslider bounds(155, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune4"), range(-2, 2, 0) | |||
rslider bounds(155,125, 45, 45), text("Decay"), FontColour("black"),channel("dur4"), range(0.25, 2, 1, 0.8) | |||
rslider bounds(155,175, 45, 45), text("Pan"), FontColour("black"),channel("pan4"), range(0, 1, 0.5) | |||
} | |||
groupbox bounds(200, 0, 50, 225), text("Hi Tom"), FontColour("black"),colour(232,232,232){ | |||
checkbox bounds(210, 24, 5, 5), colour("yellow"), channel("Act5"), value(0), shape("ellipse") | |||
rslider bounds(205, 25, 45, 45), text("Level"), FontColour("black"), channel("level5"), range(0, 2, 1) | |||
rslider bounds(205, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune5"), range(-2, 2, 0) | |||
rslider bounds(205,125, 45, 45), text("Decay"), FontColour("black"),channel("dur5"), range(0.25, 2, 1, 0.8) | |||
rslider bounds(205,175, 45, 45), text("Pan"), FontColour("black"),channel("pan5"), range(0, 1, 0.5) | |||
} | |||
groupbox bounds(250, 0, 50, 225), text("Mid Tom"),FontColour("black"), colour(242,242,242){ | |||
checkbox bounds(260, 24, 5, 5), colour("yellow"), channel("Act6"), value(0), shape("ellipse") | |||
rslider bounds(255, 25, 45, 45), text("Level"), FontColour("black"), channel("level6"), range(0, 2, 1) | |||
rslider bounds(255, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune6"), range(-2, 2, 0) | |||
rslider bounds(255,125, 45, 45), text("Decay"), FontColour("black"),channel("dur6"), range(0.25, 2, 1, 0.8) | |||
rslider bounds(255,175, 45, 45), text("Pan"), FontColour("black"),channel("pan6"), range(0, 1, 0.5) | |||
} | |||
groupbox bounds(300, 0, 50, 225), text("Low Tom"),FontColour("black"), colour(232,232,232){ | |||
checkbox bounds(310, 24, 5, 5), colour("yellow"), channel("Act7"), value(0), shape("ellipse") | |||
rslider bounds(305, 25, 45, 45), text("Level"), FontColour("black"), channel("level7"), range(0, 2, 1) | |||
rslider bounds(305, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune7"), range(-2, 2, 0) | |||
rslider bounds(305,125, 45, 45), text("Decay"), FontColour("black"),channel("dur7"), range(0.25, 2, 1, 0.8) | |||
rslider bounds(305,175, 45, 45), text("Pan"), FontColour("black"),channel("pan7"), range(0, 1, 0.5) | |||
} | |||
groupbox bounds(350, 0, 50, 225), text("Cymbal"), FontColour("black"),colour(222,222,222){ | |||
checkbox bounds(360, 24, 5, 5), colour("yellow"), channel("Act8"), value(0), shape("ellipse") | |||
rslider bounds(355, 25, 45, 45), text("Level"), FontColour("black"), channel("level8"), range(0, 2, 1) | |||
rslider bounds(355, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune8"), range(-2, 2, 0) | |||
rslider bounds(355,125, 45, 45), text("Decay"), FontColour("black"),channel("dur8"), range(0.25, 2, 1, 0.8) | |||
rslider bounds(355,175, 45, 45), text("Pan"), FontColour("black"),channel("pan8"), range(0, 1, 0.5) | |||
} | |||
groupbox bounds(400, 0, 50, 225), text("Rim Shot"),FontColour("black"), colour(212,212,212){ | |||
checkbox bounds(410, 24, 5, 5), colour("yellow"), channel("Act9"), value(0), shape("ellipse") | |||
rslider bounds(405, 25, 45, 45), text("Level"), FontColour("black"), channel("level9"), range(0, 2, 1) | |||
rslider bounds(405, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune9"), range(-2, 2, 0) | |||
rslider bounds(405,125, 45, 45), text("Decay"), FontColour("black"),channel("dur9"), range(0.25, 2, 1, 0.8) | |||
rslider bounds(405,175, 45, 45), text("Pan"), FontColour("black"),channel("pan9"), range(0, 1, 0.5) | |||
} | |||
groupbox bounds(450, 0, 50, 225), text("Claves"), FontColour("black"),colour(202,202,202){ | |||
checkbox bounds(460, 24, 5, 5), colour("yellow"), channel("Act10"), value(0), shape("ellipse") | |||
rslider bounds(455, 25, 45, 45), text("Level"), FontColour("black"), channel("level10"), range(0, 2, 1) | |||
rslider bounds(455, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune10"), range(-2, 2, 0) | |||
rslider bounds(455,125, 45, 45), text("Decay"), FontColour("black"),channel("dur10"), range(0.25, 2, 1, 0.8) | |||
rslider bounds(455,175, 45, 45), text("Pan"), FontColour("black"),channel("pan10"), range(0, 1, 0.5) | |||
} | |||
groupbox bounds(500, 0, 50, 225), text("Cowbell"),FontColour("black"), colour(192,192,192){ | |||
checkbox bounds(510, 24, 5, 5), colour("yellow"), channel("Act11"), value(0), shape("ellipse") | |||
rslider bounds(505, 25, 45, 45), text("Level"), FontColour("black"), channel("level11"), range(0, 2, 1) | |||
rslider bounds(505, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune11"), range(-2, 2, 0) | |||
rslider bounds(505,125, 45, 45), text("Decay"), FontColour("black"),channel("dur11"), range(0.25, 2, 1, 0.8) | |||
rslider bounds(505,175, 45, 45), text("Pan"), FontColour("black"),channel("pan11"), range(0, 1, 0.5) | |||
} | |||
groupbox bounds(550, 0, 50, 225), text("Clap"), FontColour("black"),colour(182,182,182){ | |||
checkbox bounds(560, 24, 5, 5), colour("yellow"), channel("Act12"), value(0), shape("ellipse") | |||
rslider bounds(555, 25, 45, 45), text("Level"),FontColour("black"), channel("level12"), range(0, 2, 1) | |||
rslider bounds(555, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune12"), range(-2, 2, 0) | |||
rslider bounds(555,125, 45, 45), text("Decay"), FontColour("black"), channel("dur12"), range(0.25, 2, 1, 0.8) | |||
rslider bounds(555,175, 45, 45), text("Pan"), FontColour("black"),channel("pan12"), range(0, 1, 0.5) | |||
} | |||
groupbox bounds(600, 0, 50, 225), text("Maraca"),FontColour("black"), colour(172,172,172){ | |||
checkbox bounds(610, 24, 5, 5), colour("yellow"), channel("Act13"), value(0), shape("ellipse") | |||
rslider bounds(605, 25, 45, 45), text("Level"), FontColour("black"), channel("level13"), range(0, 2, 1) | |||
rslider bounds(605, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune13"), range(-2, 2, 0) | |||
rslider bounds(605,125, 45, 45), text("Decay"), FontColour("black"), channel("dur13"), range(0.25, 2, 1, 0.8) | |||
rslider bounds(605,175, 45, 45), text("Pan"), FontColour("black"),channel("pan13"), range(0, 1, 0.5) | |||
} | |||
groupbox bounds(650, 0, 50, 225), text("Hi Conga"),FontColour("black"), colour(162,162,162){ | |||
checkbox bounds(660, 24, 5, 5), colour("yellow"), channel("Act14"), value(0), shape("ellipse") | |||
rslider bounds(655, 25, 45, 45), text("Level"), FontColour("black"), channel("level14"), range(0, 2, 1) | |||
rslider bounds(655, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune14"), range(-2, 2, 0) | |||
rslider bounds(655,125, 45, 45), text("Decay"), FontColour("black"),channel("dur14"), range(0.25, 2, 1, 0.8) | |||
rslider bounds(655,175, 45, 45), text("Pan"), FontColour("black"),channel("pan14"), range(0, 1, 0.5) | |||
} | |||
groupbox bounds(700, 0, 50, 225), text("Md Cnga"),FontColour("black"), colour(152,152,152){ | |||
checkbox bounds(710, 24, 5, 5), colour("yellow"), channel("Act15"), value(0), shape("ellipse") | |||
rslider bounds(705, 25, 45, 45), text("Level"), FontColour("black"), channel("level15"), range(0, 2, 1) | |||
rslider bounds(705, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune15"), range(-2, 2, 0) | |||
rslider bounds(705,125, 45, 45), text("Decay"), FontColour("black"),channel("dur15"), range(0.25, 2, 1, 0.8) | |||
rslider bounds(705,175, 45, 45), text("Pan"), FontColour("black"),channel("pan15"), range(0, 1, 0.5) | |||
} | |||
groupbox bounds(750, 0, 50, 225), text("Lo Cnga"),FontColour("black"), colour(142,142,142){ | |||
checkbox bounds(760, 24, 5, 5), colour("yellow"), channel("Act16"), value(0), shape("ellipse") | |||
rslider bounds(755, 25, 45, 45), text("Level"), FontColour("black"), channel("level16"), range(0, 2, 1) | |||
rslider bounds(755, 75, 45, 45), text("Tune"), FontColour("black"), channel("tune16"), range(-2, 2, 0) | |||
rslider bounds(755,125, 45, 45), text("Decay"), FontColour("black"),channel("dur16"), range(0.25, 2, 1, 0.8) | |||
rslider bounds(755,175, 45, 45), text("Pan"), FontColour("black"),channel("pan16"), range(0, 1, 0.5) | |||
} | |||
keyboard pos(0, 225), size(800, 80) | |||
button bounds( 10,315, 80, 25), text("Run","Stop"), channel("OnOff"), value(0) | |||
combobox bounds( 10,345, 80, 15), channel("sound"), value(1), text("Bass Drum","Snare","Open HH","Cl. HH","Hi Tom","Mid Tom","Lo Tom","Cymbal","Rimshot","Claves","Cowbell","Clap","Maraca","Hi Conga","Mid Conga","Lo Conga") | |||
button bounds(462,315, 80, 20), text("Clear","Clear"), channel("clear"), value(0) | |||
button bounds(462,338, 38, 20), text("Save","Save"), channel("save"), value(0) | |||
button bounds(502,338, 38, 20), text("Load","Load"), channel("load"), value(0) | |||
label bounds(544,328, 48, 10), text("PATTERN"), colour("black"), FontColour("black") | |||
combobox bounds(544,338, 48, 20), channel("pattern"), value(1), text("1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16") | |||
rslider bounds(593,310, 60, 60), text("Accent"), FontColour("black"), channel("AccLev"), range(0, 1, 0.4) | |||
rslider bounds(643,310, 60, 60), text("Tempo"), FontColour("black"), channel("tempo"), range(10, 500, 70, 1, 1) | |||
rslider bounds(693,310, 60, 60), text("Swing"), FontColour("black"), channel("swing"), range(0, 0.5, 0) | |||
rslider bounds(743,310, 60, 60), text("Level"), FontColour("black"), channel("level"), range(0, 2, 1) | |||
label bounds(143,312, 12, 10), text("1"), colour("black"), FontColour("black") | |||
label bounds(163,312, 12, 10), text("2"), colour("black"), FontColour("black") | |||
label bounds(183,312, 12, 10), text("3"), colour("black"), FontColour("black") | |||
label bounds(203,312, 12, 10), text("4"), colour("black"), FontColour("black") | |||
label bounds(223,312, 12, 10), text("5"), colour("black"), FontColour("black") | |||
label bounds(243,312, 12, 10), text("6"), colour("black"), FontColour("black") | |||
label bounds(263,312, 12, 10), text("7"), colour("black"), FontColour("black") | |||
label bounds(283,312, 12, 10), text("8"), colour("black"), FontColour("black") | |||
label bounds(303,312, 12, 10), text("9"), colour("black"), FontColour("black") | |||
label bounds(320,312, 12, 10), text("10"), colour("black"), FontColour("black") | |||
label bounds(340,312, 12, 10), text("11"), colour("black"), FontColour("black") | |||
label bounds(360,312, 12, 10), text("12"), colour("black"), FontColour("black") | |||
label bounds(380,312, 12, 10), text("13"), colour("black"), FontColour("black") | |||
label bounds(400,312, 12, 10), text("14"), colour("black"), FontColour("black") | |||
label bounds(420,312, 12, 10), text("15"), colour("black"), FontColour("black") | |||
label bounds(440,312, 12, 10), text("16"), colour("black"), FontColour("black") | |||
label bounds(122, 325, 30, 12), text("On"), colour("black"), FontColour("black") | |||
checkbox bounds(140, 325, 12, 12), channel("On1"), value(0) | |||
checkbox bounds(160, 325, 12, 12), channel("On2"), value(0) | |||
checkbox bounds(180, 325, 12, 12), channel("On3"), value(0) | |||
checkbox bounds(200, 325, 12, 12), channel("On4"), value(0) | |||
checkbox bounds(220, 325, 12, 12), channel("On5"), value(0) | |||
checkbox bounds(240, 325, 12, 12), channel("On6"), value(0) | |||
checkbox bounds(260, 325, 12, 12), channel("On7"), value(0) | |||
checkbox bounds(280, 325, 12, 12), channel("On8"), value(0) | |||
checkbox bounds(300, 325, 12, 12), channel("On9"), value(0) | |||
checkbox bounds(320, 325, 12, 12), channel("On10"), value(0) | |||
checkbox bounds(340, 325, 12, 12), channel("On11"), value(0) | |||
checkbox bounds(360, 325, 12, 12), channel("On12"), value(0) | |||
checkbox bounds(380, 325, 12, 12), channel("On13"), value(0) | |||
checkbox bounds(400, 325, 12, 12), channel("On14"), value(0) | |||
checkbox bounds(420, 325, 12, 12), channel("On15"), value(0) | |||
checkbox bounds(440, 325, 12, 12), channel("On16"), value(0) | |||
label bounds( 98, 345, 40, 12), text("Accent"), colour("black"), FontColour("black") | |||
checkbox bounds(140, 345, 12, 12), channel("Acc1"), value(0), colour("yellow") | |||
checkbox bounds(160, 345, 12, 12), channel("Acc2"), value(0), colour("yellow") | |||
checkbox bounds(180, 345, 12, 12), channel("Acc3"), value(0), colour("yellow") | |||
checkbox bounds(200, 345, 12, 12), channel("Acc4"), value(0), colour("yellow") | |||
checkbox bounds(220, 345, 12, 12), channel("Acc5"), value(0), colour("yellow") | |||
checkbox bounds(240, 345, 12, 12), channel("Acc6"), value(0), colour("yellow") | |||
checkbox bounds(260, 345, 12, 12), channel("Acc7"), value(0), colour("yellow") | |||
checkbox bounds(280, 345, 12, 12), channel("Acc8"), value(0), colour("yellow") | |||
checkbox bounds(300, 345, 12, 12), channel("Acc9"), value(0), colour("yellow") | |||
checkbox bounds(320, 345, 12, 12), channel("Acc10"), value(0), colour("yellow") | |||
checkbox bounds(340, 345, 12, 12), channel("Acc11"), value(0), colour("yellow") | |||
checkbox bounds(360, 345, 12, 12), channel("Acc12"), value(0), colour("yellow") | |||
checkbox bounds(380, 345, 12, 12), channel("Acc13"), value(0), colour("yellow") | |||
checkbox bounds(400, 345, 12, 12), channel("Acc14"), value(0), colour("yellow") | |||
checkbox bounds(420, 345, 12, 12), channel("Acc15"), value(0), colour("yellow") | |||
checkbox bounds(440, 345, 12, 12), channel("Acc16"), value(0), colour("yellow") | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-n -+rtmidi=null -M0 -dm0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 ;SAMPLE RATE | |||
ksmps = 32 ;NUMBER OF AUDIO SAMPLES IN EACH CONTROL CYCLE | |||
nchnls = 2 ;NUMBER OF CHANNELS (2=STEREO) | |||
0dbfs = 1 | |||
massign 0,2 | |||
;Author: Iain McCurdy (2012) | |||
gisine ftgen 0,0,1024,10,1 ;A SINE WAVE | |||
gicos ftgen 0,0,65536,9,1,1,90 ;A COSINE WAVE | |||
gkoff init 0 | |||
; 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16 | |||
giOn1 ftgen 0,0,16,2, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0 ;BD | |||
giOn2 ftgen 0,0,16,2, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0 ;SN | |||
giOn3 ftgen 0,0,16,2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 ;HHO | |||
giOn4 ftgen 0,0,16,2, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1 ;HHCl | |||
giOn5 ftgen 0,0,16,2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Hi Tom | |||
giOn6 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Mid Tom | |||
giOn7 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 ;Lo Tom | |||
giOn8 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 ;Cym | |||
giOn9 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Rimshot | |||
giOn10 ftgen 0,0,16,2, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0 ;Claves | |||
giOn11 ftgen 0,0,16,2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1 ;Cowbell | |||
giOn12 ftgen 0,0,16,2, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 ;Clap | |||
giOn13 ftgen 0,0,16,2, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 ;Maraca | |||
giOn14 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0 ;Hi Conga | |||
giOn15 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0 ;Mid Conga | |||
giOn16 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 ;Lo Conga | |||
giAcc1 ftgen 0,0,16,2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;BD | |||
giAcc2 ftgen 0,0,16,2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;SN | |||
giAcc3 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;HHO | |||
giAcc4 ftgen 0,0,16,2, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 ;HHCl | |||
giAcc5 ftgen 0,0,16,2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Hi Tom | |||
giAcc6 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Mid Tom | |||
giAcc7 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Lo Tom | |||
giAcc8 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 ;Cym | |||
giAcc9 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Rimshot | |||
giAcc10 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Claves | |||
giAcc11 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Cowbell | |||
giAcc12 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;Clap | |||
giAcc13 ftgen 0,0,16,2, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ;Maraca | |||
giAcc14 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 ;Hi Conga | |||
giAcc15 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 ;Mid Conga | |||
giAcc16 ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 ;Lo Conga | |||
giblank ftgen 0,0,16,2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;blank | |||
instr 1 ;READ IN WIDGETS, SCAN MIDI NOTES PLAYED AND RELAY TO DRUM SOUNDS | |||
;READ IN WIDGETS | |||
gklevel1 chnget "level1" | |||
gklevel2 chnget "level2" | |||
gklevel3 chnget "level3" | |||
gklevel4 chnget "level4" | |||
gklevel5 chnget "level5" | |||
gklevel6 chnget "level6" | |||
gklevel7 chnget "level7" | |||
gklevel8 chnget "level8" | |||
gklevel9 chnget "level9" | |||
gklevel10 chnget "level10" | |||
gklevel11 chnget "level11" | |||
gklevel12 chnget "level12" | |||
gklevel13 chnget "level13" | |||
gklevel14 chnget "level14" | |||
gklevel15 chnget "level15" | |||
gklevel16 chnget "level16" | |||
gktune1 chnget "tune1" | |||
gktune2 chnget "tune2" | |||
gktune3 chnget "tune3" | |||
gktune4 chnget "tune4" | |||
gktune5 chnget "tune5" | |||
gktune6 chnget "tune6" | |||
gktune7 chnget "tune7" | |||
gktune8 chnget "tune8" | |||
gktune9 chnget "tune9" | |||
gktune10 chnget "tune10" | |||
gktune11 chnget "tune11" | |||
gktune12 chnget "tune12" | |||
gktune13 chnget "tune13" | |||
gktune14 chnget "tune14" | |||
gktune15 chnget "tune15" | |||
gktune16 chnget "tune16" | |||
gkdur1 chnget "dur1" | |||
gkdur2 chnget "dur2" | |||
gkdur3 chnget "dur3" | |||
gkdur4 chnget "dur4" | |||
gkdur5 chnget "dur5" | |||
gkdur6 chnget "dur6" | |||
gkdur7 chnget "dur7" | |||
gkdur8 chnget "dur8" | |||
gkdur9 chnget "dur9" | |||
gkdur10 chnget "dur10" | |||
gkdur11 chnget "dur11" | |||
gkdur12 chnget "dur12" | |||
gkdur13 chnget "dur13" | |||
gkdur14 chnget "dur14" | |||
gkdur15 chnget "dur15" | |||
gkdur16 chnget "dur16" | |||
gkpan1 chnget "pan1" | |||
gkpan2 chnget "pan2" | |||
gkpan3 chnget "pan3" | |||
gkpan4 chnget "pan4" | |||
gkpan5 chnget "pan5" | |||
gkpan6 chnget "pan6" | |||
gkpan7 chnget "pan7" | |||
gkpan8 chnget "pan8" | |||
gkpan9 chnget "pan9" | |||
gkpan10 chnget "pan10" | |||
gkpan11 chnget "pan11" | |||
gkpan12 chnget "pan12" | |||
gkpan13 chnget "pan13" | |||
gkpan14 chnget "pan14" | |||
gkpan15 chnget "pan15" | |||
gkpan16 chnget "pan16" | |||
gkOnOff chnget "OnOff" | |||
gksound chnget "sound" | |||
gkOn1 chnget "On1" | |||
gkOn2 chnget "On2" | |||
gkOn3 chnget "On3" | |||
gkOn4 chnget "On4" | |||
gkOn5 chnget "On5" | |||
gkOn6 chnget "On6" | |||
gkOn7 chnget "On7" | |||
gkOn8 chnget "On8" | |||
gkOn9 chnget "On9" | |||
gkOn10 chnget "On10" | |||
gkOn11 chnget "On11" | |||
gkOn12 chnget "On12" | |||
gkOn13 chnget "On13" | |||
gkOn14 chnget "On14" | |||
gkOn15 chnget "On15" | |||
gkOn16 chnget "On16" | |||
gkAcc1 chnget "Acc1" | |||
gkAcc2 chnget "Acc2" | |||
gkAcc3 chnget "Acc3" | |||
gkAcc4 chnget "Acc4" | |||
gkAcc5 chnget "Acc5" | |||
gkAcc6 chnget "Acc6" | |||
gkAcc7 chnget "Acc7" | |||
gkAcc8 chnget "Acc8" | |||
gkAcc9 chnget "Acc9" | |||
gkAcc10 chnget "Acc10" | |||
gkAcc11 chnget "Acc11" | |||
gkAcc12 chnget "Acc12" | |||
gkAcc13 chnget "Acc13" | |||
gkAcc14 chnget "Acc14" | |||
gkAcc15 chnget "Acc15" | |||
gkAcc16 chnget "Acc16" | |||
gkclear chnget "clear" | |||
gksave chnget "save" | |||
gkload chnget "load" | |||
gkpattern chnget "pattern" | |||
gkAccLev chnget "AccLev" | |||
gktempo chnget "tempo" | |||
gkswing chnget "swing" | |||
gklevel chnget "level" | |||
;START/STOP SEQUENCER | |||
ktrig changed gkOnOff ;if Run/Stop button is changed... | |||
if ktrig==1 then ; | |||
if gkOnOff==1 then ;...if Run/Stop has been changed to 'Run'... | |||
event "i",3,0,-1 ;...start instr 3 playing a held note | |||
else ;otherwise... | |||
event "i",-3,0,0 ;...stop instr 3 playing | |||
endif | |||
endif | |||
;CLEAR SEQUENCES FOR ALL DRUM SOUNDS | |||
ktrig changed gkclear | |||
if ktrig==1 then | |||
tablecopy giOn1, giblank ;copy blank table over existing sequence for voice 1 | |||
tablecopy giOn2, giblank ;repeat for every other voice | |||
tablecopy giOn3, giblank | |||
tablecopy giOn4, giblank | |||
tablecopy giOn5, giblank | |||
tablecopy giOn6, giblank | |||
tablecopy giOn7, giblank | |||
tablecopy giOn8, giblank | |||
tablecopy giOn9, giblank | |||
tablecopy giOn10, giblank | |||
tablecopy giOn11, giblank | |||
tablecopy giOn12, giblank | |||
tablecopy giOn13, giblank | |||
tablecopy giOn14, giblank | |||
tablecopy giOn15, giblank | |||
tablecopy giOn16, giblank | |||
tablecopy giAcc1, giblank | |||
tablecopy giAcc2, giblank | |||
tablecopy giAcc3, giblank | |||
tablecopy giAcc4, giblank | |||
tablecopy giAcc5, giblank | |||
tablecopy giAcc6, giblank | |||
tablecopy giAcc7, giblank | |||
tablecopy giAcc8, giblank | |||
tablecopy giAcc9, giblank | |||
tablecopy giAcc10, giblank | |||
tablecopy giAcc11, giblank | |||
tablecopy giAcc12, giblank | |||
tablecopy giAcc13, giblank | |||
tablecopy giAcc14, giblank | |||
tablecopy giAcc15, giblank | |||
tablecopy giAcc16, giblank | |||
endif | |||
;STORE SEQUENCE TABLES | |||
ktrig changed gksave ;if save button is toggled... | |||
if ktrig==1 then | |||
reinit SAVE_TABLES ;begin a reinitialisation pass from label (ftsave operates only at i-time) | |||
endif | |||
SAVE_TABLES: | |||
SFileName sprintf "TR-808_pattern.%d.txt", i(gkpattern) ;create the file name (string variable) that will be used to name the text file that will contain the pattern data | |||
ftsave SFileName, 1, giOn1, giOn2, giOn3, giOn4, giOn5, giOn6, giOn7, giOn8, giOn9, giOn10, giOn11, giOn12, giOn13, giOn14, giOn15, giOn16, giAcc1, giAcc2, giAcc3, giAcc4, giAcc5, giAcc6, giAcc7, giAcc8, giAcc9, giAcc10, giAcc11, giAcc12, giAcc13, giAcc14, giAcc15, giAcc16 ;save all tables (on information and accents) to a text file in the pwd | |||
rireturn | |||
;LOAD SEQUENCE TABLES | |||
ktrig changed gkload ;if load button is toggled... | |||
if ktrig==1 then | |||
reinit LOAD_TABLES ;begin a reinitialisation pass from label (ftload operates only at i-time) | |||
endif | |||
LOAD_TABLES: | |||
SFileName sprintf "TR-808_pattern.%d.txt", i(gkpattern) ;create the file name (string variable) that will be the name of the file from which data will be retrieved | |||
ftload SFileName, 1, giOn1, giOn2, giOn3, giOn4, giOn5, giOn6, giOn7, giOn8, giOn9, giOn10, giOn11, giOn12, giOn13, giOn14, giOn15, giOn16, giAcc1, giAcc2, giAcc3, giAcc4, giAcc5, giAcc6, giAcc7, giAcc8, giAcc9, giAcc10, giAcc11, giAcc12, giAcc13, giAcc14, giAcc15, giAcc16 ;load all tables (on information and accents) to a text file in the pwd | |||
rireturn | |||
;UPDATE SEQUENCE DISPLAY | |||
ktrig changed gksound,gkclear,gkload | |||
if ktrig==1 then | |||
#define UPDATE_SEQUENCE(N) | |||
# | |||
kval tablekt $N-1,giOn1+gksound-1 | |||
chnset kval,"On$N" | |||
kval tablekt $N-1,giAcc1+gksound-1 | |||
chnset kval,"Acc$N" | |||
# | |||
$UPDATE_SEQUENCE(1) | |||
$UPDATE_SEQUENCE(2) | |||
$UPDATE_SEQUENCE(3) | |||
$UPDATE_SEQUENCE(4) | |||
$UPDATE_SEQUENCE(5) | |||
$UPDATE_SEQUENCE(6) | |||
$UPDATE_SEQUENCE(7) | |||
$UPDATE_SEQUENCE(8) | |||
$UPDATE_SEQUENCE(9) | |||
$UPDATE_SEQUENCE(10) | |||
$UPDATE_SEQUENCE(11) | |||
$UPDATE_SEQUENCE(12) | |||
$UPDATE_SEQUENCE(13) | |||
$UPDATE_SEQUENCE(14) | |||
$UPDATE_SEQUENCE(15) | |||
$UPDATE_SEQUENCE(16) | |||
endif | |||
;UPDATE TABLE IF SEQUENCE BUTTON CHANGED | |||
#define UPDATE_TABLE(N) | |||
# | |||
ktrig changed gkOn$N | |||
if ktrig==1 then | |||
tablewkt gkOn$N,$N-1,giOn1+gksound-1 | |||
endif | |||
ktrig changed gkAcc$N | |||
if ktrig==1 then | |||
tablewkt gkAcc$N,$N-1,giAcc1+gksound-1 | |||
endif | |||
# | |||
$UPDATE_TABLE(1) | |||
$UPDATE_TABLE(2) | |||
$UPDATE_TABLE(3) | |||
$UPDATE_TABLE(4) | |||
$UPDATE_TABLE(5) | |||
$UPDATE_TABLE(6) | |||
$UPDATE_TABLE(7) | |||
$UPDATE_TABLE(8) | |||
$UPDATE_TABLE(9) | |||
$UPDATE_TABLE(10) | |||
$UPDATE_TABLE(11) | |||
$UPDATE_TABLE(12) | |||
$UPDATE_TABLE(13) | |||
$UPDATE_TABLE(14) | |||
$UPDATE_TABLE(15) | |||
$UPDATE_TABLE(16) | |||
endin | |||
instr 2 ;READ MIDI AND TRIGGER NOTES | |||
inum notnum ;READ IN MIDI NOTE NUMBER | |||
idb veloc -30,0 ;READ IN MIDI NOTE VELOCITY (WILL BE USED AS A DECIBEL VALUE) | |||
iinstr wrap inum,0,16 ;MAP MIDI NOTE NUMBERS (RANGE: 0 - 127) TO DRUM SOUND NUMBER (0 - 15) | |||
event_i "i",101+iinstr,0,0.001,ampdbfs(idb) ;CALL THE RELEVANT INSTRUMENT AND SEND AMPLITUDE VALUE AS p4 | |||
endin | |||
instr 3 ;PLAY SEQUENCE | |||
gindx init 0 | |||
ktick metro (gktempo*4)/60 | |||
;SWING | |||
kSwingBeat init 0 | |||
kSwingTime = (kSwingBeat==1?(60*gkswing)/(gktempo*4):0) | |||
if ktick==1 then | |||
kSwingBeat = abs(kSwingBeat-1) ;FLIP BETWEEN ZERO AND 1 | |||
endif | |||
schedkwhen ktick, 0, 0, 4, kSwingTime, 0.001 | |||
endin | |||
instr 4 ;TEST FOR NOTE ON SEQUENCE STEP | |||
#define VOICE(N) | |||
# | |||
iOnOff$N table gindx, giOn$N | |||
if iOnOff$N==1 then | |||
iAcc table gindx,giAcc$N | |||
event_i "i", 100+$N, 0, 0.001, 0.4 + (iAcc*i(gkAccLev)) | |||
endif | |||
# | |||
$VOICE(1) | |||
$VOICE(2) | |||
$VOICE(3) | |||
$VOICE(4) | |||
$VOICE(5) | |||
$VOICE(6) | |||
$VOICE(7) | |||
$VOICE(8) | |||
$VOICE(9) | |||
$VOICE(10) | |||
$VOICE(11) | |||
$VOICE(12) | |||
$VOICE(13) | |||
$VOICE(14) | |||
$VOICE(15) | |||
$VOICE(16) | |||
gindx wrap gindx+1, 0, 16 | |||
turnoff | |||
endin | |||
instr 101 ;BASS DRUM | |||
xtratim 0.1 | |||
krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO) | |||
chnset 1-krelease,"Act1" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS | |||
p3 = 2*i(gkdur1) ;NOTE DURATION. SCALED USING GUI 'Decay' KNOB | |||
;SUSTAIN AND BODY OF THE SOUND | |||
kmul transeg 0.2,p3*0.5,-15,0.01, p3*0.5,0,0 ;PARTIAL STRENGTHS MULTIPLIER USED BY GBUZZ. DECAYS FROM A SOUND WITH OVERTONES TO A SINE TONE. | |||
kbend transeg 0.5,1.2,-4, 0,1,0,0 ;SLIGHT PITCH BEND AT THE START OF THE NOTE | |||
asig gbuzz 0.5,50*octave(gktune1)*semitone(kbend),20,1,kmul,gicos ;GBUZZ TONE | |||
aenv transeg 1,p3-0.004,-6,0 ;AMPLITUDE ENVELOPE FOR SUSTAIN OF THE SOUND | |||
aatt linseg 0,0.004,1 ;SOFT ATTACK | |||
asig = asig*aenv*aatt | |||
;HARD, SHORT ATTACK OF THE SOUND | |||
aenv linseg 1,0.07,0 ;AMPLITUDE ENVELOPE (FAST DECAY) | |||
acps expsega 400,0.07,0.001,1,0.001 ;FREQUENCY OF THE ATTACK SOUND. QUICKLY GLISSES FROM 400 Hz TO SUB-AUDIO | |||
aimp oscili aenv,acps*octave(gktune1*0.25),gisine ;CREATE ATTACK SOUND | |||
amix = ((asig*0.5)+(aimp*0.35))*gklevel1*p4*gklevel ;MIX SUSTAIN AND ATTACK SOUND ELEMENTS AND SCALE USING GUI 'Level' KNOB | |||
aL,aR pan2 amix,gkpan1 ;PAN THE MONOPHONIC SOUND | |||
outs aL,aR ;SEND AUDIO TO OUTPUTS | |||
endin | |||
instr 102 ;SNARE DRUM | |||
xtratim 0.1 | |||
krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO) | |||
chnset 1-krelease,"Act2" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS | |||
;SOUND CONSISTS OF TWO SINE TONES, AN OCTAVE APART AND A NOISE SIGNAL | |||
ifrq = 342 ;FREQUENCY OF THE TONES | |||
iNseDur = 0.3 * i(gkdur2) ;DURATION OF THE NOISE COMPONENT | |||
iPchDur = 0.1 * i(gkdur2) ;DURATION OF THE SINE TONES COMPONENT | |||
p3 = iNseDur ;p3 DURATION TAKEN FROM NOISE COMPONENT DURATION (ALWATS THE LONGEST COMPONENT) | |||
;SINE TONES COMPONENT | |||
aenv1 expseg 1,iPchDur,0.0001,p3-iPchDur,0.0001 ;AMPLITUDE ENVELOPE | |||
apitch1 oscili 1,ifrq*octave(gktune2),gisine ;SINE TONE 1 | |||
apitch2 oscili 0.25,ifrq*0.5*octave(gktune2),gisine ;SINE TONE 2 (AN OCTAVE LOWER) | |||
apitch = (apitch1+apitch2)*0.75 ;MIX THE TWO SINE TONES | |||
;NOISE COMPONENT | |||
aenv2 expon 1,p3,0.0005 ;AMPLITUDE ENVELOPE | |||
anoise noise 0.75,0 ;CREATE SOME NOISE | |||
anoise butbp anoise,10000*octave(gktune2),10000 ;BANDPASS FILTER THE NOISE SIGNAL | |||
anoise buthp anoise,1000 ;HIGHPASS FILTER THE NOISE SIGNAL | |||
kcf expseg 5000,0.1,3000,p3-0.2,3000 ;CUTOFF FREQUENCY FOR A LOWPASS FILTER | |||
anoise butlp anoise,kcf ;LOWPASS FILTER THE NOISE SIGNAL | |||
amix = ((apitch*aenv1)+(anoise*aenv2))*gklevel2*p4*gklevel ;MIX AUDIO SIGNALS AND SCALE ACCORDING TO GUI 'Level' CONTROL | |||
aL,aR pan2 amix,i(gkpan2) ;PAN THE MONOPHONIC AUDIO SIGNAL | |||
outs aL,aR ;SEND AUDIO TO OUTPUTS | |||
endin | |||
instr 103 ;OPEN HIGH HAT | |||
xtratim 0.1 | |||
kFrq1 = 296*octave(gktune3) ;FREQUENCIES OF THE 6 OSCILLATORS | |||
kFrq2 = 285*octave(gktune3) | |||
kFrq3 = 365*octave(gktune3) | |||
kFrq4 = 348*octave(gktune3) | |||
kFrq5 = 420*octave(gktune3) | |||
kFrq6 = 835*octave(gktune3) | |||
p3 = 0.5*i(gkdur3) ;DURATION OF THE NOTE | |||
;SOUND CONSISTS OF 6 PULSE OSCILLATORS MIXED WITH A NOISE COMPONENT | |||
;PITCHED ELEMENT | |||
aenv linseg 1,p3-0.05,0.1,0.05,0 ;AMPLITUDE ENVELOPE FOR THE PULSE OSCILLATORS | |||
ipw = 0.25 ;PULSE WIDTH | |||
a1 vco2 0.5,kFrq1,2,ipw ;PULSE OSCILLATORS... | |||
a2 vco2 0.5,kFrq2,2,ipw | |||
a3 vco2 0.5,kFrq3,2,ipw | |||
a4 vco2 0.5,kFrq4,2,ipw | |||
a5 vco2 0.5,kFrq5,2,ipw | |||
a6 vco2 0.5,kFrq6,2,ipw | |||
amix sum a1,a2,a3,a4,a5,a6 ;MIX THE PULSE OSCILLATORS | |||
amix reson amix,5000*octave(gktune3),5000,1 ;BANDPASS FILTER THE MIXTURE | |||
amix buthp amix,5000 ;HIGHPASS FILTER THE SOUND... | |||
amix buthp amix,5000 ;...AND AGAIN | |||
amix = amix*aenv ;APPLY THE AMPLITUDE ENVELOPE | |||
;NOISE ELEMENT | |||
anoise noise 0.8,0 ;GENERATE SOME WHITE NOISE | |||
aenv linseg 1,p3-0.05,0.1,0.05,0 ;CREATE AN AMPLITUDE ENVELOPE | |||
kcf expseg 20000,0.7,9000,p3-0.1,9000 ;CREATE A CUTOFF FREQ. ENVELOPE | |||
anoise butlp anoise,kcf ;LOWPASS FILTER THE NOISE SIGNAL | |||
anoise buthp anoise,8000 ;HIGHPASS FILTER THE NOISE SIGNAL | |||
anoise = anoise*aenv ;APPLY THE AMPLITUDE ENVELOPE | |||
;MIX PULSE OSCILLATOR AND NOISE COMPONENTS | |||
amix = (amix+anoise)*gklevel3*p4*0.55*gklevel | |||
aL,aR pan2 amix,gkpan3 ;PAN MONOPHONIC SIGNAL | |||
outs aL,aR ;SEND TO OUTPUTS | |||
;kactive active p1+1 ;CHECK NUMBER OF ACTIVE INSTANCES OF CLOSED HIGH HAT INSTRUMENT | |||
;if kactive>0 then ;IF HIGH-HAT CLOSED IS ACTIVE... | |||
; turnoff ;TURN OFF THIS INSTRUMENT | |||
;endif | |||
krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO) | |||
chnset 1-krelease,"Act3" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS | |||
endin | |||
instr 104 ;CLOSED HIGH HAT | |||
xtratim 0.1 | |||
krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO) | |||
chnset 1-krelease,"Act4" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS | |||
kFrq1 = 296*octave(gktune4) ;FREQUENCIES OF THE 6 OSCILLATORS | |||
kFrq2 = 285*octave(gktune4) | |||
kFrq3 = 365*octave(gktune4) | |||
kFrq4 = 348*octave(gktune4) | |||
kFrq5 = 420*octave(gktune4) | |||
kFrq6 = 835*octave(gktune4) | |||
idur = 0.088*i(gkdur4) ;DURATION OF THE NOTE | |||
p3 limit idur,0.1,10 ;LIMIT THE MINIMUM DURATION OF THE NOTE (VERY SHORT NOTES CAN RESULT IN THE INDICATOR LIGHT ON-OFF NOTE BEING TO0 SHORT) | |||
iactive active p1-1 ;SENSE ACTIVITY OF PREVIOUS INSTRUMENT (OPEN HIGH HAT) | |||
if iactive>0 then ;IF 'OPEN HIGH HAT' IS ACTIVE... | |||
turnoff2 p1-1,0,0 ;TURN IT OFF (CLOSED HIGH HAT TAKES PRESIDENCE) | |||
chnset gkoff,"Act3" ;TURN OFF ACTIVE LIGHT FOR OPEN HIGH HAT | |||
endif | |||
;PITCHED ELEMENT | |||
aenv expsega 1,idur,0.001,1,0.001 ;AMPLITUDE ENVELOPE FOR THE PULSE OSCILLATORS | |||
ipw = 0.25 ;PULSE WIDTH | |||
a1 vco2 0.5,kFrq1,2,ipw ;PULSE OSCILLATORS... | |||
a2 vco2 0.5,kFrq2,2,ipw | |||
a3 vco2 0.5,kFrq3,2,ipw | |||
a4 vco2 0.5,kFrq4,2,ipw | |||
a5 vco2 0.5,kFrq5,2,ipw | |||
a6 vco2 0.5,kFrq6,2,ipw | |||
amix sum a1,a2,a3,a4,a5,a6 ;MIX THE PULSE OSCILLATORS | |||
amix reson amix,5000*octave(gktune4),5000,1 ;BANDPASS FILTER THE MIXTURE | |||
amix buthp amix,5000 ;HIGHPASS FILTER THE SOUND... | |||
amix buthp amix,5000 ;...AND AGAIN | |||
amix = amix*aenv ;APPLY THE AMPLITUDE ENVELOPE | |||
;NOISE ELEMENT | |||
anoise noise 0.8,0 ;GENERATE SOME WHITE NOISE | |||
aenv expsega 1,idur,0.001,1,0.001 ;CREATE AN AMPLITUDE ENVELOPE | |||
kcf expseg 20000,0.7,9000,idur-0.1,9000 ;CREATE A CUTOFF FREQ. ENVELOPE | |||
anoise butlp anoise,kcf ;LOWPASS FILTER THE NOISE SIGNAL | |||
anoise buthp anoise,8000 ;HIGHPASS FILTER THE NOISE SIGNAL | |||
anoise = anoise*aenv ;APPLY THE AMPLITUDE ENVELOPE | |||
;MIX PULSE OSCILLATOR AND NOISE COMPONENTS | |||
amix = (amix+anoise)*gklevel4*p4*0.55*gklevel | |||
aL,aR pan2 amix,gkpan4 ;PAN MONOPHONIC SIGNAL | |||
outs aL,aR ;SEND TO OUTPUTS | |||
endin | |||
instr 105 ;HIGH TOM | |||
xtratim 0.1 | |||
krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO) | |||
chnset 1-krelease,"Act5" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS | |||
ifrq = 200 * octave(i(gktune5)) ;FREQUENCY | |||
p3 = 0.5 * i(gkdur5) ;DURATION OF THIS NOTE | |||
;SINE TONE SIGNAL | |||
aAmpEnv transeg 1,p3,-10,0.001 ;AMPLITUDE ENVELOPE FOR SINE TONE SIGNAL | |||
afmod expsega 5,0.125/ifrq,1,1,1 ;FREQUENCY MODULATION ENVELOPE. GIVES THE TONE MORE OF AN ATTACK. | |||
asig oscili -aAmpEnv*0.6,ifrq*afmod,gisine ;SINE TONE SIGNAL | |||
;NOISE SIGNAL | |||
aEnvNse transeg 1,p3,-6,0.001 ;AMPLITUDE ENVELOPE FOR NOISE SIGNAL | |||
anoise dust2 0.4, 8000 ;GENERATE NOISE SIGNAL | |||
anoise reson anoise,400*octave(i(gktune5)),800,1 ;BANDPASS FILTER THE NOISE SIGNAL | |||
anoise buthp anoise,100*octave(i(gktune5)) ;HIGHPASS FILTER THE NOSIE SIGNAL | |||
anoise butlp anoise,1000*octave(i(gktune5)) ;LOWPASS FILTER THE NOISE SIGNAL | |||
anoise = anoise * aEnvNse ;SCALE NOISE SIGNAL WITH AMPLITUDE ENVELOPE | |||
;MIX THE TWO SOUND COMPONENTS | |||
amix = (asig + anoise)*gklevel5*p4*gklevel | |||
aL,aR pan2 amix,gkpan5 ;PAN MONOPHONIC SIGNAL | |||
outs aL,aR ;SEND AUDIO TO OUTPUTS | |||
endin | |||
instr 106 ;MID TOM | |||
xtratim 0.1 | |||
krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO) | |||
chnset 1-krelease,"Act6" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS | |||
ifrq = 133*octave(i(gktune6)) ;FREQUENCY | |||
p3 = 0.6 * i(gkdur6) ;DURATION OF THIS NOTE | |||
;SINE TONE SIGNAL | |||
aAmpEnv transeg 1,p3,-10,0.001 ;AMPLITUDE ENVELOPE FOR SINE TONE SIGNAL | |||
afmod expsega 5,0.125/ifrq,1,1,1 ;FREQUENCY MODULATION ENVELOPE. GIVES THE TONE MORE OF AN ATTACK. | |||
asig oscili -aAmpEnv*0.6,ifrq*afmod,gisine ;SINE TONE SIGNAL | |||
;NOISE SIGNAL | |||
aEnvNse transeg 1,p3,-6,0.001 ;AMPLITUDE ENVELOPE FOR NOISE SIGNAL | |||
anoise dust2 0.4, 8000 ;GENERATE NOISE SIGNAL | |||
anoise reson anoise, 400*octave(i(gktune6)),800,1 ;BANDPASS FILTER THE NOISE SIGNAL | |||
anoise buthp anoise,100*octave(i(gktune6)) ;HIGHPASS FILTER THE NOSIE SIGNAL | |||
anoise butlp anoise,600*octave(i(gktune6)) ;LOWPASS FILTER THE NOISE SIGNAL | |||
anoise = anoise * aEnvNse ;SCALE NOISE SIGNAL WITH AMPLITUDE ENVELOPE | |||
;MIX THE TWO SOUND COMPONENTS | |||
amix = (asig + anoise)*gklevel6*p4*gklevel | |||
aL,aR pan2 amix,i(gkpan6) ;PAN MONOPHONIC SIGNAL | |||
outs aL,aR ;SEND AUDIO TO OUTPUTS | |||
endin | |||
instr 107 ;LOW TOM | |||
xtratim 0.1 | |||
krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO) | |||
chnset 1-krelease,"Act7" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS | |||
ifrq = 90 * octave(i(gktune7)) ;FREQUENCY | |||
p3 = 0.7*i(gkdur7) ;DURATION OF THIS NOTE | |||
;SINE TONE SIGNAL | |||
aAmpEnv transeg 1,p3,-10,0.001 ;AMPLITUDE ENVELOPE FOR SINE TONE SIGNAL | |||
afmod expsega 5,0.125/ifrq,1,1,1 ;FREQUENCY MODULATION ENVELOPE. GIVES THE TONE MORE OF AN ATTACK. | |||
asig oscili -aAmpEnv*0.6,ifrq*afmod,gisine ;SINE TONE SIGNAL | |||
;NOISE SIGNAL | |||
aEnvNse transeg 1,p3,-6,0.001 ;AMPLITUDE ENVELOPE FOR NOISE SIGNAL | |||
anoise dust2 0.4, 8000 ;GENERATE NOISE SIGNAL | |||
anoise reson anoise,40*octave(gktune7),800,1 ;BANDPASS FILTER THE NOISE SIGNAL | |||
anoise buthp anoise,100*octave(i(gktune7)) ;HIGHPASS FILTER THE NOSIE SIGNAL | |||
anoise butlp anoise,600*octave(i(gktune7)) ;LOWPASS FILTER THE NOISE SIGNAL | |||
anoise = anoise * aEnvNse ;SCALE NOISE SIGNAL WITH AMPLITUDE ENVELOPE | |||
;MIX THE TWO SOUND COMPONENTS | |||
amix = (asig + anoise)*gklevel7*p4*gklevel | |||
aL,aR pan2 amix,i(gkpan7) ;PAN MONOPHONIC SIGNAL | |||
outs aL,aR ;SEND AUDIO TO OUTPUTS | |||
endin | |||
instr 108 ;CYMBAL | |||
xtratim 0.1 | |||
krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO) | |||
chnset 1-krelease,"Act8" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS | |||
kFrq1 = 296*octave(gktune8) ;FREQUENCIES OF THE 6 OSCILLATORS | |||
kFrq2 = 285*octave(gktune8) | |||
kFrq3 = 365*octave(gktune8) | |||
kFrq4 = 348*octave(gktune8) | |||
kFrq5 = 420*octave(gktune8) | |||
kFrq6 = 835*octave(gktune8) | |||
p3 = 2*i(gkdur8) ;DURATION OF THE NOTE | |||
;SOUND CONSISTS OF 6 PULSE OSCILLATORS MIXED WITH A NOISE COMPONENT | |||
;PITCHED ELEMENT | |||
aenv expon 1,p3,0.0001 ;AMPLITUDE ENVELOPE FOR THE PULSE OSCILLATORS | |||
ipw = 0.25 ;PULSE WIDTH | |||
a1 vco2 0.5,kFrq1,2,ipw ;PULSE OSCILLATORS... | |||
a2 vco2 0.5,kFrq2,2,ipw | |||
a3 vco2 0.5,kFrq3,2,ipw | |||
a4 vco2 0.5,kFrq4,2,ipw | |||
a5 vco2 0.5,kFrq5,2,ipw | |||
a6 vco2 0.5,kFrq6,2,ipw | |||
amix sum a1,a2,a3,a4,a5,a6 ;MIX THE PULSE OSCILLATORS | |||
amix reson amix,5000 *octave(gktune8),5000,1 ;BANDPASS FILTER THE MIXTURE | |||
amix buthp amix,10000 ;HIGHPASS FILTER THE SOUND | |||
amix butlp amix,12000 ;LOWPASS FILTER THE SOUND... | |||
amix butlp amix,12000 ;AND AGAIN... | |||
amix = amix*aenv ;APPLY THE AMPLITUDE ENVELOPE | |||
;NOISE ELEMENT | |||
anoise noise 0.8,0 ;GENERATE SOME WHITE NOISE | |||
aenv expsega 1,0.3,0.07,p3-0.1,0.00001 ;CREATE AN AMPLITUDE ENVELOPE | |||
kcf expseg 14000,0.7,7000,p3-0.1,5000 ;CREATE A CUTOFF FREQ. ENVELOPE | |||
anoise butlp anoise,kcf ;LOWPASS FILTER THE NOISE SIGNAL | |||
anoise buthp anoise,8000 ;HIGHPASS FILTER THE NOISE SIGNAL | |||
anoise = anoise*aenv ;APPLY THE AMPLITUDE ENVELOPE | |||
;MIX PULSE OSCILLATOR AND NOISE COMPONENTS | |||
amix = (amix+anoise)*gklevel8*p4*0.85*gklevel | |||
aL,aR pan2 amix,i(gkpan8) ;PAN MONOPHONIC SIGNAL | |||
outs aL,aR ;SEND TO OUTPUTS | |||
endin | |||
instr 109 ;RIM SHOT | |||
xtratim 0.1 | |||
iTR808RimShot ftgenonce 0,0,1024,10, 0.971,0.269,0.041,0.054,0.011,0.013,0.08,0.0065,0.005,0.004,0.003,0.003,0.002,0.002,0.002,0.002,0.002,0.001,0.001,0.001,0.001,0.001,0.002,0.001,0.001 ;WAVEFORM FOR TR808 RIMSHOT | |||
krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO) | |||
chnset 1-krelease,"Act9" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS | |||
idur = 0.027*i(gkdur9) ;NOTE DURATION | |||
p3 limit idur,0.1,10 ;LIMIT THE MINIMUM DURATION OF THE NOTE (VERY SHORT NOTES CAN RESULT IN THE INDICATOR LIGHT ON-OFF NOTE BEING TO0 SHORT) | |||
;RING | |||
aenv1 expsega 1,idur,0.001,1,0.001 ;AMPLITUDE ENVELOPE FOR SUSTAIN ELEMENT OF SOUND | |||
ifrq1 = 1700*octave(i(gktune9)) ;FREQUENCY OF SUSTAIN ELEMENT OF SOUND | |||
aring oscili 1,ifrq1,iTR808RimShot,0 ;CREATE SUSTAIN ELEMENT OF SOUND | |||
aring butbp aring,ifrq1,ifrq1*8 | |||
aring = aring*(aenv1-0.001)*0.5 ;APPLY AMPLITUDE ENVELOPE | |||
;NOISE | |||
anoise noise 1,0 ;CREATE A NOISE SIGNAL | |||
aenv2 expsega 1, 0.002, 0.8, 0.005, 0.5, idur-0.002-0.005, 0.0001, 1, 0.0001 ;CREATE AMPLITUDE ENVELOPE | |||
anoise buthp anoise,800 ;HIGHPASS FILTER THE NOISE SOUND | |||
kcf expseg 4000,p3,20 ;CUTOFF FREQUENCY FUNCTION FOR LOWPASS FILTER | |||
anoise butlp anoise,kcf ;LOWPASS FILTER THE SOUND | |||
anoise = anoise*(aenv2-0.001) ;APPLY ENVELOPE TO NOISE SIGNAL | |||
;MIX | |||
amix = (aring+anoise)*gklevel9*p4*0.8*gklevel | |||
aL,aR pan2 amix,gkpan9 ;PAN MONOPHONIC SIGNAL | |||
outs aL,aR ;SEND TO OUTPUTS | |||
endin | |||
instr 110 ;CLAVES | |||
xtratim 0.1 | |||
krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO) | |||
chnset 1-krelease,"Act10" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS | |||
ifrq = 2500*octave(i(gktune10)) ;FREQUENCY OF OSCILLATOR | |||
idur = 0.045 * i(gkdur10) ;DURATION OF THE NOTE | |||
p3 limit idur,0.1,10 ;LIMIT THE MINIMUM DURATION OF THE NOTE (VERY SHORT NOTES CAN RESULT IN THE INDICATOR LIGHT ON-OFF NOTE BEING TO0 SHORT) | |||
aenv expsega 1,idur,0.001,1,0.001 ;AMPLITUDE ENVELOPE | |||
afmod expsega 3,0.00005,1,1,1 ;FREQUENCY MODULATION ENVELOPE. GIVES THE SOUND A LITTLE MORE ATTACK. | |||
asig oscili -(aenv-0.001),ifrq*afmod,gisine,0 ;AUDIO OSCILLATOR | |||
asig = asig*0.4*gklevel10*p4*gklevel ;RESCALE AMPLITUDE | |||
aL,aR pan2 asig,gkpan10 ;PAN MONOPHONIC AUDIO SIGNAL | |||
outs aL,aR ;SEND AUDIO TO OUTPUTS | |||
endin | |||
instr 111 ;COWBELL | |||
xtratim 0.1 | |||
krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO) | |||
chnset 1-krelease,"Act11" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS | |||
ifrq1 = 562 * octave(i(gktune11)) ;FREQUENCIES OF THE TWO OSCILLATORS | |||
ifrq2 = 845 * octave(i(gktune11)) ; | |||
ipw = 0.5 ;PULSE WIDTH OF THE OSCILLATOR | |||
idur = 0.7 ;NOTE DURATION | |||
ishp = -30 | |||
idur = 0.7 ;NOTE DURATION | |||
p3 = idur*i(gkdur11) ;LIMIT THE MINIMUM DURATION OF THE NOTE (VERY SHORT NOTES CAN RESULT IN THE INDICATOR LIGHT ON-OFF NOTE BEING TO0 SHORT) | |||
ishape = -30 ;SHAPE OF THE CURVES IN THE AMPLITUDE ENVELOPE | |||
kenv1 transeg 1,p3*0.3,ishape,0.2, p3*0.7,ishape,0.2 ;FIRST AMPLITUDE ENVELOPE - PRINCIPALLY THE ATTACK OF THE NOTE | |||
kenv2 expon 1,p3,0.0005 ;SECOND AMPLITUDE ENVELOPE - THE SUSTAIN PORTION OF THE NOTE | |||
kenv = kenv1*kenv2 ;COMBINE THE TWO ENVELOPES | |||
itype = 2 ;WAVEFORM FOR VCO2 (2=PULSE) | |||
a1 vco2 0.65,ifrq1,itype,ipw ;CREATE THE TWO OSCILLATORS | |||
a2 vco2 0.65,ifrq2,itype,ipw | |||
amix = a1+a2 ;MIX THE TWO OSCILLATORS | |||
iLPF2 = 10000 ;LOWPASS FILTER RESTING FREQUENCY | |||
kcf expseg 12000,0.07,iLPF2,1,iLPF2 ;LOWPASS FILTER CUTOFF FREQUENCY ENVELOPE | |||
alpf butlp amix,kcf ;LOWPASS FILTER THE MIX OF THE TWO OSCILLATORS (CREATE A NEW SIGNAL) | |||
abpf reson amix, ifrq2, 25 ;BANDPASS FILTER THE MIX OF THE TWO OSCILLATORS (CREATE A NEW SIGNAL) | |||
amix dcblock2 (abpf*0.06*kenv1)+(alpf*0.5)+(amix*0.9) ;MIX ALL SIGNALS AND BLOCK DC OFFSET | |||
amix buthp amix,700 ;HIGHPASS FILTER THE MIX OF ALL SIGNALS | |||
amix = amix*0.07*kenv*p4*gklevel11*gklevel ;RESCALE AMPLITUDE | |||
aL,aR pan2 amix,i(gkpan11) ;PAN THE MONOPHONIC AUDIO SIGNAL | |||
outs aL,aR ;SEND AUDIO TO OUTPUTS | |||
endin | |||
instr 112 ;CLAP | |||
;;xtratim 0.1 | |||
krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO) | |||
chnset 1-krelease,"Act12" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS | |||
iTimGap = 0.01 ;GAP BETWEEN EVENTS DURING ATTACK PORTION OF CLAP | |||
idur1 = 0.02 ;DURING OF THE THREE INITIAL 'CLAPS' | |||
idur2 = 2*i(gkdur12) ;DURATION OF THE FOURTH, MAIN, CLAP | |||
idens = 8000 ;DENSITY OF THE NOISE SIGNAL USED TO FORM THE CLAPS | |||
iamp1 = 0.5 ;AMPLITUDE OF AUDIO BEFORE BANDPASS FILTER IN OUTPUT | |||
iamp2 = 1 ;AMPLITUDE OF AUDIO AFTER BANDPASS FILTER IN OUTPUT | |||
if frac(p1)==0 then ;IF THIS IS THE INITIAL NOTE (p1 WILL BE AN INTEGER) | |||
; del. dur env.shape | |||
event_i "i", p1+0.1, 0, idur1, p4 ;CALL THIS INSTRUMENT 4 TIMES. ADD A FRACTION ONTO p1 TO BE ABLE TO DIFFERENTIATE THESE SUBSEQUENT NOTES | |||
event_i "i", p1+0.1, iTimGap, idur1, p4 | |||
event_i "i", p1+0.1, iTimGap*2, idur1, p4 | |||
event_i "i", p1+0.1, iTimGap*3, idur2, p4 | |||
else | |||
kenv transeg 1,p3,-25,0 ;AMPLITUDE ENVELOPE | |||
iamp random 0.7,1 ;SLIGHT RANDOMISATION OF AMPLITUDE | |||
anoise dust2 kenv*iamp, idens ;CREATE NOISE SIGNAL | |||
iBPF = 1100*octave(i(gktune12)) ;FREQUENCY OF THE BANDPASS FILTER | |||
ibw = 2000*octave(i(gktune12)) ;BANDWIDTH OF THE BANDPASS FILTER | |||
iHPF = 1000 ;FREQUENCY OF A HIGHPASS FILTER | |||
iLPF = 1 ;SCALER FOR FREQUENCY OF A LOWPASS FILTER | |||
kcf expseg 8000,0.07,1700,1,800,2,500,1,500 ;CREATE CUTOFF FREQUENCY ENVELOPE | |||
asig butlp anoise,kcf*iLPF ;LOWPASS FILTER THE SOUND | |||
asig buthp asig,iHPF ;HIGHPASS FILTER THE SOUND | |||
ares reson asig,iBPF,ibw,1 ;BANDPASS FILTER THE SOUND (CREATE A NEW SIGNAL) | |||
asig dcblock2 (asig*iamp1)+(ares*iamp2) ;MIX BANDPASS FILTERED AND NON-BANDPASS FILTERED SOUND ELEMENTS | |||
asig = asig*p4*i(gklevel12)*1.75*gklevel ;SCALE AMPLITUDE | |||
aL,aR pan2 asig,i(gkpan12) ;PAN MONOPHONIC SIGNAL | |||
outs aL,aR ;SEND AUDIO TO OUTPUTS | |||
endif | |||
endin | |||
instr 113 ;MARACA | |||
xtratim 0.1 | |||
krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO) | |||
chnset 1-krelease,"Act13" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS | |||
idur = 0.07*i(gkdur13) ;DURATION 3 | |||
p3 limit idur,0.1,10 ;LIMIT THE MINIMUM DURATION OF THE NOTE (VERY SHORT NOTES CAN RESULT IN THE INDICATOR LIGHT ON-OFF NOTE BEING TO0 SHORT) | |||
iHPF limit 6000*octave(i(gktune13)),20,sr/2 ;HIGHPASS FILTER FREQUENCY | |||
iLPF limit 12000*octave(i(gktune13)),20,sr/3 ;LOWPASS FILTER FREQUENCY. (LIMIT MAXIMUM TO PREVENT OUT OF RANGE VALUES) | |||
;AMPLITUDE ENVELOPE | |||
iBP1 = 0.4 ;BREAK-POINT 1 | |||
iDur1 = 0.014*i(gkdur13) ;DURATION 1 | |||
iBP2 = 1 ;BREAKPOINT 2 | |||
iDur2 = 0.01 *i(gkdur13) ;DURATION 2 | |||
iBP3 = 0.05 ;BREAKPOINT 3 | |||
p3 limit idur,0.1,10 ;LIMIT THE MINIMUM DURATION OF THE NOTE (VERY SHORT NOTES CAN RESULT IN THE INDICATOR LIGHT ON-OFF NOTE BEING TO0 SHORT) | |||
aenv expsega iBP1,iDur1,iBP2,iDur2,iBP3 ;CREATE AMPLITUDE ENVELOPE | |||
anoise noise 0.75,0 ;CREATE A NOISE SIGNAL | |||
anoise buthp anoise,iHPF ;HIGHPASS FILTER THE SOUND | |||
anoise butlp anoise,iLPF ;LOWPASS FILTER THE SOUND | |||
anoise = anoise*aenv*p4*gklevel13*gklevel ;SCALE THE AMPLITUDE | |||
aL,aR pan2 anoise,i(gkpan13) ;PAN THE MONOPONIC SIGNAL | |||
outs aL,aR ;SEND AUDIO TO OUTPUTS | |||
endin | |||
instr 114 ;HIGH CONGA | |||
xtratim 0.1 | |||
krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO) | |||
chnset 1-krelease,"Act14" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS | |||
ifrq = 420*octave(i(gktune14)) ;FREQUENCY OF NOTE | |||
p3 = 0.22*i(gkdur14) ;DURATION OF NOTE | |||
aenv transeg 0.7,1/ifrq,1,1,p3,-6,0.001 ;AMPLITUDE ENVELOPE | |||
afrq expsega ifrq*3,0.25/ifrq,ifrq,1,ifrq ;FREQUENCY ENVELOPE (CREATE A SHARPER ATTACK) | |||
asig oscili -aenv*0.25,afrq,gisine ;CREATE THE AUDIO OSCILLATOR | |||
asig = asig*p4*gklevel14*gklevel ;SCALE THE AMPLITUDE | |||
aL,aR pan2 asig,gkpan14 ;PAN THE MONOPHONIC AUDIO SIGNAL | |||
outs aL,aR ;SEND AUDIO TO THE OUTPUTS | |||
endin | |||
instr 115 ;MID CONGA | |||
xtratim 0.1 | |||
krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO) | |||
chnset 1-krelease,"Act15" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS | |||
ifrq = 310*octave(i(gktune15)) ;FREQUENCY OF NOTE | |||
p3 = 0.33*i(gkdur15) ;DURATION OF NOTE | |||
aenv transeg 0.7,1/ifrq,1,1,p3,-6,0.001 ;AMPLITUDE ENVELOPE | |||
afrq expsega ifrq*3,0.25/ifrq,ifrq,1,ifrq ;FREQUENCY ENVELOPE (CREATE A SHARPER ATTACK) | |||
asig oscili -aenv*0.25,afrq,gisine ;CREATE THE AUDIO OSCILLATOR | |||
asig = asig*p4*gklevel15*gklevel ;SCALE THE AMPLITUDE | |||
aL,aR pan2 asig,gkpan15 ;PAN THE MONOPHONIC AUDIO SIGNAL | |||
outs aL,aR ;SEND AUDIO TO THE OUTPUTS | |||
endin | |||
instr 116 ;LOW CONGA | |||
xtratim 0.1 | |||
krelease release ;SENSE RELEASE OF THIS NOTE ('1' WHEN RELEASED, OTHERWISE ZERO) | |||
chnset 1-krelease,"Act16" ;TURN ON ACTIVE LIGHT WHEN NOTE STARTS, TURN IT OFF WHEN NOTE ENDS | |||
ifrq = 227*octave(i(gktune16)) ;FREQUENCY OF NOTE | |||
p3 = 0.41*i(gkdur16) ;DURATION OF NOTE | |||
aenv transeg 0.7,1/ifrq,1,1,p3,-6,0.001 ;AMPLITUDE ENVELOPE | |||
afrq expsega ifrq*3,0.25/ifrq,ifrq,1,ifrq ;FREQUENCY ENVELOPE (CREATE A SHARPER ATTACK) | |||
asig oscili -aenv*0.25,afrq,gisine ;CREATE THE AUDIO OSCILLATOR | |||
asig = asig*p4*gklevel16*gklevel ;SCALE THE AMPLITUDE | |||
aL,aR pan2 asig,gkpan16 ;PAN THE MONOPHONIC AUDIO SIGNAL | |||
outs aL,aR ;SEND AUDIO TO THE OUTPUTS | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
f 0 [3600*24*7] | |||
i 1 0 [3600*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,250 @@ | |||
<Cabbage> | |||
form caption("Vectorial Synth"), size(760, 320), pluginID("vec1") | |||
xypad bounds(5, 0, 250, 205), channel("chanx", "chany"), text("Vectorial mixing"), rangex(0, 1, .5), rangey(0, 1, .5) | |||
groupbox bounds(260, 0, 240, 100), text("ADSR"), plant("adsr"){ | |||
rslider bounds(.0, .3, .6, .6), text("A"), colour("orange"), channel("att"), range(0.01,3, .5) | |||
rslider bounds(.25, .3, .6, .6), text("D"), colour("orange"), channel("dec"), range(0,1, .5) | |||
rslider bounds(.5, .3, .6, .6), text("S"), colour("orange"), channel("sus"), range(0,1,.8) | |||
rslider bounds(.75, .3, .6, .6), text("R"), colour("orange"), channel("rel"), range(0.01,3, .2) | |||
} | |||
groupbox bounds(260, 105, 240, 100), text("Tune"), plant("tune"){ | |||
rslider bounds(.0, .3, .6, .6), text("Detune1"), colour("dodgerblue"), channel("det1"), range(-24,12,0) | |||
rslider bounds(.25, .3, .6, .6), text("Detune2"), colour("dodgerblue"), channel("det2"), range(-24,12,-5) | |||
rslider bounds(.5, .3, .6, .6), text("Detune3"), colour("dodgerblue"), channel("det3"), range(-24,12,0) | |||
rslider bounds(.75, .3, .6, .6), text("Detune4"), colour("dodgerblue"), channel("det4"), range(-24,12,-12) | |||
} | |||
groupbox bounds(505,0, 240, 100), text("LFO/Stereo chorus"), plant("mod"){ | |||
rslider bounds(.0, .3, .6, .6), text("Lfo amp"), colour("dodgerblue"), channel("lfoamp"), range(0,50, 0) | |||
rslider bounds(.25, .3, .6, .6), text("Lfo rate"), colour("dodgerblue"), channel("lforate"), range(0,20, 0) | |||
rslider bounds(.5, .3, .6, .6), text("depth"), colour("dodgerblue"), channel("chdepth"), range(0,10,0) | |||
rslider bounds(.75, .3, .6, .6), text("rate"), colour("dodgerblue"), channel("chrate"), range(0,10,0) | |||
} | |||
groupbox bounds(505,105, 240, 100), text("Reverb"), plant("rev"){ | |||
rslider bounds(0, .3, .6, .6), text("level"), colour("dodgerblue"), channel("level"), range(0,1,0) | |||
rslider bounds(0.25, .3, .6, .6), text("size"), colour("dodgerblue"), channel("size"), range(.1,.99,.5) | |||
;rslider bounds(115, 30, 60, 60), text("depth"), colour("dodgerblue"), channel("chdepth"), range(0,10,0) | |||
;rslider bounds(165, 30, 60, 60), text("rate"), colour("dodgerblue"), channel("chrate"), range(0,10,0) | |||
checkbox bounds(.55, .40, .60, .30),channel("onoff"), text("On/Off"), value(0), colour("blue") | |||
} | |||
keyboard bounds(5, 220, 750, 70) | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-n -d -m0d -+rtmidi=NULL -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 32 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
;Author: Giorgio Zucco (2012) | |||
;turnon don't work! | |||
;turnon 10 ;chorus | |||
;turnon 12 ;reverb | |||
ga1 init 0 | |||
ga2 init 0 | |||
garev1 init 0 | |||
garev2 init 0 | |||
gifn ftgen 1,0,16384,10,1 | |||
gifn ftgen 2,0,16384,10,1,0,1 | |||
gifn ftgen 3,0,16384,10,1,0,0,1 | |||
gifn ftgen 4,0,16384,10,1,0,0,0,1 | |||
gifn ftgen 5,0,16384,10,1,0,0,0,0,1 | |||
gifn ftgen 6,0,16384,10,1,0,1,0,0,0,1 | |||
gifn ftgen 7,0,16384,10,1,0,0,1,0,0,0,1 | |||
gifn ftgen 8,0,16384,10,1,0,0,0,1,0,0,0,1 | |||
gifn ftgen 9,0,16384,10,1,0,0,0,0,1,0,0,1,1 | |||
gifn ftgen 10,0,16384,10,1,0,0,0,0,0,1,1,0,0,1 | |||
gifn ftgen 11,0,16384,10,1,0,0,0,0,1,1,0,0,0,0,1 | |||
gifn ftgen 12,0,16384,10,1,0,0,0,1,1,0,0,0,0,0,0,1 | |||
gifn ftgen 13,0,16384,10,1,0,0,0,1,1,0,0,0,0,0,0,0,1 | |||
gifn ftgen 14,0,16384,10,1,0,0,1,0,0,1,0,0,0,0,0,0,0,1 | |||
gifn ftgen 15,0,16384,10,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1 | |||
gifn ftgen 16,0,16384,10,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1 | |||
gibell ftgen 17,0,16384,9,1,1,0,1.02,.28,0,.98,.14,0,4,.22,0,7,.39,0 ;bell | |||
gichord ftgen 18,0,16384,9, 1,1,0,1.25,.08,0,1.49,.28,0,2,.52,0,2.52,.74,0 ;chord | |||
gitemp ftgen 19 , 0 , 16384, 10 , 1 , 1 , 0 , 5 , 0 , 3, 0 , 1 | |||
gitemp ftgen 20, 0, 16384, 10, 1, 1, 0, 0, 1 ,0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 | |||
gitemp ftgen 21, 0 ,16384 ,10, 1, 1, 0, 1, 0, 1, 0 ,1, 0, 1, 0, 1, 0, 1, 0, 1 | |||
gitemp ftgen 22 , 0 ,16384, 10 ,1 ,0, .2 ,.2 ,.03, .12, .22, .11 ,.022, .0101, .0167 | |||
;******************************************* | |||
opcode StChorus,aa,aakkkk | |||
asigr,asigl,kdepth,kdepthl,krate,kratel xin ;legge i parametri in entrata | |||
;ar,al StChorus asigr,asigl,kdepth,kdepthl,krate,kratel | |||
k1ch randi kdepth/2,krate,1 | |||
ar1 vdelay asigr,kdepth/2+k1ch,10 | |||
k2ch randi kdepth/2,krate*0.9,.2 | |||
ar2 vdelay asigr,kdepth/2+k2ch,10 | |||
k3ch randi kdepth/2,krate*1.1,.2 | |||
ar3 vdelay asigr,kdepth/2+k3ch,10 | |||
k4ch randi kdepth/2,krate*1.3,.1 | |||
ar4 vdelay asigr,kdepth/2+k4ch,10 | |||
k1chl randi kdepthl/2,kratel,1 | |||
ar1l vdelay asigl,kdepthl/2+k1chl,10 | |||
k2chl randi kdepthl/2,kratel*0.9,.2 | |||
ar2l vdelay asigl,kdepthl/2+k2chl,10 | |||
k3chl randi kdepthl/2,kratel*1.1,.2 | |||
ar3l vdelay asigl,kdepthl/2+k3chl,10 | |||
k4chl randi kdepthl/2,kratel*1.3,.1 | |||
ar4l vdelay asigl,kdepthl/2+k4chl,10 | |||
aL = (ar1+ar2+ar3+ar4)/2 | |||
aR = (ar1l+ar2l+ar3l+ar4l)/2 | |||
xout aL,aR ; write output | |||
endop | |||
;*********************************************** | |||
instr 1 | |||
iatt chnget "att" | |||
idec chnget "dec" | |||
isus chnget "sus" | |||
irel chnget "rel" | |||
kdet1 chnget "det1" | |||
kdet2 chnget "det2" | |||
kdet3 chnget "det3" | |||
kdet4 chnget "det4" | |||
klfoamp chnget "lfoamp" | |||
klforate chnget "lforate" | |||
kindex chnget "fmamp" | |||
kfmrate chnget "fmrate" | |||
kcutoff chnget "cutoff" | |||
kreso chnget "resonance" | |||
kx chnget "chanx" | |||
ky chnget "chany" | |||
;midi | |||
imidinn notnum | |||
iamp ampmidi 1 | |||
kbend pchbend 0,2 ;pitch bend | |||
kfreq1 = cpsmidinn(imidinn+kbend+int(kdet1)) ;controllo midi | |||
kfreq2 = cpsmidinn(imidinn+kbend+int(kdet2)) | |||
kfreq3 = cpsmidinn(imidinn+kbend+int(kdet3)) | |||
kfreq4 = cpsmidinn(imidinn+kbend+int(kdet4)) | |||
;lfo | |||
klfo poscil klfoamp,klforate,1 | |||
kfreq1 = kfreq1+klfo | |||
kfreq2 = kfreq2+klfo | |||
kfreq3 = kfreq3+klfo | |||
kfreq4 = kfreq4+klfo | |||
ifunc1 = rnd(15) | |||
ifunc2 = rnd(15) | |||
ifunc3 = rnd(15) | |||
ifunc4 = rnd(15) | |||
;4 osc | |||
ain1 poscil iamp,kfreq1,ifunc1+1 | |||
ain2 poscil iamp,kfreq2,ifunc2+1 | |||
ain3 poscil iamp,kfreq3,ifunc3+1 | |||
ain4 poscil iamp,kfreq4,ifunc4+1 | |||
;vectorial mixing | |||
k1 = (1-kx)*(1-ky) | |||
k2 = kx*(1-ky) | |||
k3 = (1-kx)*ky | |||
k4 = kx*ky | |||
k1port portk k1,.01 | |||
k2port portk k2,.01 | |||
k3port portk k3,.01 | |||
k4port portk k4,.01 | |||
kadsr mxadsr iatt,idec,isus,irel | |||
aout = (ain1*k1port + ain2*k2port + ain3*k3port + ain4*k4port)*.3 ;global out | |||
;abulp1 butterlp aout,kcutoff*kadsrfilt | |||
;aring poscil aout,kcutoff,1 | |||
;amaster balance afilt1,aout | |||
aclip clip aout,0,0dbfs | |||
kpan jspline 1,0,4 | |||
al,ar pan2 aclip,kpan | |||
outs (al*kadsr),(ar*kadsr) | |||
vincr ga1,(al*kadsr) | |||
vincr ga2,(ar*kadsr) | |||
vincr garev1,(al*kadsr) | |||
vincr garev2,(ar*kadsr) | |||
endin | |||
;stereo chorus | |||
instr 10 | |||
k1 chnget "chdepth" | |||
k2 chnget "chrate" | |||
kfxdepth portk k1,.01 | |||
kfxrate portk k2,.01 | |||
acho1,acho2 StChorus ga1,ga2,kfxdepth,kfxdepth*.8,kfxrate,kfxrate*.8 | |||
outs acho1,acho2 | |||
clear ga1,ga2 | |||
endin | |||
instr 12 ;reverb | |||
ktrig chnget "onoff" | |||
klevel chnget "level" | |||
ksize chnget "size" | |||
if ktrig = 1 then | |||
al,ar reverbsc garev1,garev2,ksize,16000,sr,0 | |||
adc1 dcblock2 al | |||
adc2 dcblock2 ar | |||
kpan1 randomi 0,1,4 | |||
kpan2 randomi 0,1,8 | |||
aout1,aout2 pan2 adc1,kpan1 | |||
aout3,aout4 pan2 adc2,1-kpan2 | |||
asum1 = (aout1+aout2)*klevel | |||
asum2 = (aout3+aout4)*klevel | |||
else | |||
asum1 = 0 | |||
asum2 = 0 | |||
endif | |||
outs asum1,asum2 | |||
clear garev1,garev2 | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
;f0 36000 | |||
i1 0 36000 | |||
i10 0 36000 | |||
i12 0 36000 | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,708 @@ | |||
; WavetableSynth.csd | |||
; Implements wavetable synthesis a spectral morphing based on note played. | |||
; This can be used to maintain a convincing spectral appearance fo an instrument imitation across a range of note. | |||
; As this morphing is done continuously between notes and not just stepwise note to note, | |||
; - use of pitch bend will also cause spectral morphing resulting in more convincing glissandi than are normally implemented in commercial | |||
; - hardware. | |||
; As there are many tables of waveform data in this example, it may take a moment or two to load. | |||
; CONTROLS | |||
; -------- | |||
; | |||
; Tone -- tone control | |||
; Shift -- shifts the note to wavetable relationship resulting in tonal variations | |||
; Jitter -- humanizing of the tone through random amplitude, pitch and tonal | |||
; Noise -- amount of noise in the sound. Used to simulate breath noise. | |||
; EQ -- EQ of the noise quotient | |||
; Drop -- Amount of pitch drop upon note conclusion | |||
<Cabbage> | |||
form caption("Wavetable Synth") size(675, 320), pluginID("wtsy") | |||
image pos(0, 0), size(675, 290), colour("brown"), shape("rounded"), outline("maroon"), line(4) | |||
image bounds(160, 6,240, 88), colour("brown"), shape("rounded"), outline("white"), line(1) ;modulation | |||
image bounds(405, 6,140, 88), colour("brown"), shape("rounded"), outline("white"), line(1) ;polyphony | |||
image bounds(550, 6,110, 88), colour("brown"), shape("rounded"), outline("white"), line(1) ;pitch bend | |||
image bounds( 15,103,110, 88), colour("brown"), shape("rounded"), outline("white"), line(1) ;noise attack | |||
image bounds(130,103,155, 88), colour("brown"), shape("rounded"), outline("white"), line(1) ;quality | |||
image bounds(290,103,110, 88), colour("brown"), shape("rounded"), outline("white"), line(1) ;reverb | |||
image bounds(405,103,260, 88), colour("brown"), shape("rounded"), outline("white"), line(1) ;output | |||
combobox caption("Instrument"), channel("Instr"), bounds(10, 10, 140, 80) value(1), text("Clarinet", "Bass Clarinet", "C.bass Clarinet", "Oboe", "Bassoon", "C.bassoon", "Violin", "Cello", "Piccolo", "Flute", "Alto Flute", "Bass Flute", "Ahh", "Horn P", "Horn F", "B.Trb.Harmon Mute", "B.Trb.Cup Mute", "B.Trb.Open") | |||
label bounds(170, 80, 40, 12), text("Mod.") | |||
label bounds(245, 11,100, 15), text("Modulation") | |||
label bounds(440, 11,100, 15), text("Polyphony") | |||
label bounds(567, 11,100, 15), text("Pitch Bend") | |||
label bounds( 50,107,100, 15), text("Attack") | |||
label bounds(185,107,100, 15), text("Quality") | |||
label bounds(200,175,100, 11), text("EQ") | |||
label bounds(325,107,100, 15), text("Reverb") | |||
label bounds(510,107,100, 15), text("Output") | |||
;MODULATION | |||
vslider bounds(160,-10, 40, 90), channel("moddep"), range(0, 1, 0.4),midCtrl(1, 1) | |||
rslider bounds(190, 32, 60, 60), text("Vib."), channel("vibdep"), range(0, 1, 0.15) | |||
rslider bounds(240, 32, 60, 60), text("Trem."), channel("tremdep"), range(0, 1, 0.4) | |||
rslider bounds(290, 32, 60, 60), text("Tone"), channel("tonedep"), range(0, 4, 2) | |||
rslider bounds(340, 32, 60, 60), text("Rate"), channel("ModRte"), range(0, 16, 4.25, 0.5) | |||
;POLYPHONY | |||
button bounds(415, 40, 70, 25), text("poly","mono"), channel("monopoly"), value(1), fontcolour("lime") | |||
rslider bounds(485, 32, 60, 60), text("Leg.Time"), channel("LegTim"), range(0.001, 2, 0.002, 0.5, 0.001) | |||
;PITCH BEND | |||
rslider bounds(550, 32, 60, 60), text("<"), channel("BendDn"), range(0, 1, 1) | |||
rslider bounds(600, 32, 60, 60), text(">"), channel("BendUp"), range(0, 1, 0) | |||
;NOISE ATTACK | |||
rslider bounds( 15,127, 60, 60), text("Amp."), channel("NAttAmp"), range(0, 4.00, 0.5) | |||
rslider bounds( 65,127, 60, 60), text("Time"), channel("NAttTim"), range(0.001,0.5,0.05,0.5) | |||
;QUALITY | |||
rslider bounds(130,127, 60, 60), text("Noise"), channel("NoiseAmp"), range(0,5,0.01,0.5,0.0001) | |||
vslider bounds(183,110, 30, 70), text(""), channel("EQ_Lo"), range(500,10000,2000,0.5,0.01) | |||
vslider bounds(203,110, 30, 70), text(""), channel("EQ_Hi"), range(20,5000,200,0.5,0.01) | |||
rslider bounds(225,127, 60, 60), text("Drop"), channel("drop"), range(0,0.5,0.05,0.5,0.0001) | |||
;REVERB | |||
rslider bounds(290,127, 60, 60), text("Mix"), channel("RvbMix"), range(0, 1.00, 1) | |||
rslider bounds(340,127, 60, 60), text("Size"), channel("RvbSize"), range(0.3, 1.00, 0.4) | |||
;OUTPUT | |||
rslider bounds(405,127, 60, 60), text("Tone"), channel("bright"), range(0, 1.00, 1) | |||
rslider bounds(455,127, 60, 60), text("Shift"), channel("shift"), range(-36, 36.00, 0,1,0.001) | |||
rslider bounds(505,127, 60, 60), text("Jitter"), channel("jitter"), range(0, 1.00, 0.4) | |||
rslider bounds(555,127, 60, 60), text("Pan"), channel("pan"), range(0, 1.00, 0.5) | |||
rslider bounds(605,127, 60, 60), text("Level"), channel("level"), range(0, 2.00, 1) | |||
keyboard pos(10, 200), size(655, 80) | |||
image bounds(5, 295, 250, 20), colour(75, 85, 90, 100), plant("credit"){ | |||
label bounds(0.03, 0.2, .9, .6), text("Author: Iain McCurdy |2012|"), colour("white") | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-dm0 -n -+rtmidi=null -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 16 | |||
nchnls = 2 | |||
0dbfs = 1 ;MAXIMUM AMPLITUDE | |||
seed 0 | |||
massign 0,2 | |||
gkactive init 0 ; Will contain number of active instances of instr 3 when legato mode is chosen. NB. notes in release stage will not be regarded as active. | |||
;Author: Iain McCurdy (2012) | |||
gisine ftgen 0,0,4096,10,1 ;A SINE WAVE. USED BY THE LFOs. | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; CLARINET | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
;FOUR GEN10 FUNCTION TABLES WHICH CORRESPOND TO THE SPECTRAL ENVELOPES OF FOUR DIFFERENT NOTES PLAYED ON THE CLARINET | |||
;THE FOUR NOTES CHOSEN COVER THE SOUNDING RANGE OF THE INSTRUMENT | |||
;NOTE THAT ALL FUNCTION TABLES USED BY ftmorph IN THE MORPHING PROCESS, INCLUDING THE ONE INTO WHICH THE MORPHED TABLE IS WRITTEN (SEE INSTR 1), SHOULD BE THE SAME SIZE | |||
;FOUR GEN10 FUNCTION TABLES WHICH CORRESPOND TO THE SPECTRAL ENVELOPES OF FOUR DIFFERENT NOTES PLAYED ON THE CLARINET | |||
;THE FOUR NOTES CHOSEN COVER THE SOUNDING RANGE OF THE INSTRUMENT | |||
;NOTE THAT ALL FUNCTION TABLES USED BY ftmorph IN THE MORPHING PROCESS, INCLUDING THE ONE INTO WHICH THE MORPHED TABLE IS WRITTEN (SEE INSTR 1), SHOULD BE THE SAME SIZE | |||
giclar50 ftgen 0,0,4096,10,0.273597,0.027434,0.737705,0.049480,0.448437,0.272536,0.131175,0.129945,0.283082,0.130714,0.026719,0.037582,0.018953,0.010729,0.067580,0.024573,0.016586,0.049988,0.033294,0.017090,0.008591,0.021128,0.007237,0.016060,0.016060 | |||
giclar62 ftgen 0,0,4096,10,0.753504,0.011446,0.501720,0.055791,0.241768,0.037889,0.027203,0.062793,0.102494,0.030506,0.042453,0.050202,0.031077,0.027208,0.020897,0.022205,0.012154,0.008160,0.004886,0.005076,0.003805,0.001322,0.001149,0.001450,0.001450 | |||
giclar74 ftgen 0,0,4096,10,0.519536,0.062430,0.745521,0.055790,0.103856,0.097554,0.090420,0.077181,0.017130,0.013446,0.005674,0.003296,0.003438,0.003395,0.002506,0.001169,0.002525,0.001237,0.002624,0.001440,0.000880,0.001061,0.002672,0.002090,0.002090 | |||
giclar86 ftgen 0,0,4096,10,0.823209,0.201690,0.171118,0.161374,0.041951,0.004950,0.010889,0.001107,0.001365,0.003340,0.002259,0.001175,0.000442,0.001544,0.001259,0.000549,0.000455,0.000352,0.000345,0.000396,0.000477,0.000848,0.001199,0.001081,0.001081 | |||
giwavemapClar ftgen 0,0,128,-27, 0,0, 50,0, 62,1, 74,2, 86,3, 127,3 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
gitabs4morfClar ftgen 0,0,4,-2,giclar50,giclar62,giclar74,giclar86 | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; BASS CLARINET | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
giBClar35 ftgen 0,0,4096,10,0.384232,0.038085,0.578537,0.029558,0.143002,0.119033,0.397678,0.113380,0.577246,0.158831,0.577514,0.094994,0.440674,0.109136,0.500666,0.132354,0.360370,0.104810,0.231403,0.089565,0.207353,0.099773,0.209066,0.123801,0.158769,0.079383,0.036078,0.019583,0.010310,0.017060,0.029465,0.045821,0.031622,0.038326,0.052222,0.058647,0.083956,0.079748,0.081955,0.097274,0.069934,0.075100,0.049259,0.058121,0.068078,0.065276,0.070165,0.065898,0.072432,0.055423,0.052283,0.036547,0.034082,0.035287,0.044801,0.053917,0.050263,0.036979,0.034264,0.035892,0.035011,0.037199,0.041542,0.043201,0.039923,0.035164,0.035828,0.036193,0.037155,0.035493,0.034546,0.035091,0.029891,0.027394,0.026174,0.023757,0.021365,0.019468,0.016295,0.015301,0.015263,0.014310,0.013239,0.011972,0.011445,0.011727,0.012391,0.013892,0.015395,0.015147,0.015137,0.014816,0.013898,0.012682,0.011462,0.009883,0.008579,0.007797,0.007749 | |||
giBClar41 ftgen 0,0,4096,10,0.525063,0.002869,0.469239,0.024384,0.895713,0.021156,0.199553,0.014871,0.215693,0.036697,0.212856,0.060220,0.224360,0.026202,0.021469,0.019475,0.067282,0.034970,0.025525,0.028958,0.038550,0.041724,0.035988,0.016617,0.026564,0.031021,0.037801,0.030070,0.055636,0.040575,0.029792,0.031356,0.031871,0.058063,0.027829,0.023825,0.015824,0.011714,0.011110,0.015367,0.011850,0.008957,0.011489,0.007029,0.004640,0.004862,0.006536,0.006771,0.006683,0.005231,0.005323,0.006834,0.005342,0.005818,0.004902,0.005468,0.005431,0.006151,0.004672,0.003041,0.002322,0.002274,0.002661,0.003122,0.002931,0.002587,0.002527,0.002499,0.003095,0.003755,0.003651,0.003768,0.003972,0.003962,0.003999,0.003352,0.002866,0.002449,0.002120,0.001972,0.002040,0.002221,0.002063,0.002057,0.002415,0.002849,0.003276,0.003776,0.003994,0.003829,0.003419,0.003328,0.003575,0.003829,0.003703,0.003454,0.003149,0.002825,0.002697,0.002765 | |||
giBClar47 ftgen 0,0,4096,10,0.447815,0.011780,0.911495,0.027076,0.846723,0.050517,0.224579,0.039801,0.048967,0.024162,0.071418,0.087315,0.031778,0.048063,0.058394,0.078770,0.021135,0.041585,0.092206,0.058125,0.063991,0.033673,0.025813,0.045142,0.037450,0.016766,0.014278,0.016668,0.017869,0.025925,0.010244,0.010062,0.010634,0.008986,0.006992,0.005186,0.004618,0.003658,0.002913,0.003004,0.004250,0.003142,0.002387,0.002692,0.003592,0.004496,0.002831,0.001838,0.001680,0.002144,0.002567,0.003185,0.002727,0.002419,0.001998,0.001883,0.002286,0.002626,0.003202,0.003257,0.003056,0.003241,0.002838,0.002521,0.002294,0.002409,0.002746,0.002848,0.003387,0.004173,0.004189,0.004587,0.005402,0.004977,0.004132,0.003842,0.003974,0.003650,0.003605,0.003810,0.003745,0.003770,0.003520,0.003363,0.003391,0.003302,0.003124,0.003422,0.004022,0.004064,0.003584,0.002939,0.002329,0.001970,0.001947,0.002034,0.002069,0.002043,0.001854,0.001658 | |||
giBClar53 ftgen 0,0,4096,10,0.819856,0.006052,0.508263,0.007439,0.271031,0.012967,0.059374,0.017922,0.016997,0.004014,0.027132,0.014921,0.020230,0.012123,0.021066,0.004875,0.016894,0.004428,0.004157,0.007603,0.004211,0.011103,0.005054,0.007329,0.004043,0.002169,0.003183,0.001822,0.001158,0.001758,0.002350,0.001442,0.002218,0.002815,0.001503,0.001764,0.001171,0.001508,0.000934,0.000714,0.000902,0.000884,0.000943,0.000825,0.000579,0.000572,0.000654,0.000752,0.000902,0.000932,0.000868,0.000909,0.000903,0.001065,0.001472,0.001483,0.001803,0.001941,0.002100,0.002756,0.002543,0.001984,0.001589,0.001342,0.001414,0.001219,0.001004,0.000908,0.000887,0.001102,0.001342,0.001312,0.001089,0.000869,0.000733,0.000620,0.000574,0.000518,0.000451,0.000422,0.000446,0.000473,0.000423,0.000354,0.000335,0.000370,0.000410,0.000418,0.000435,0.000434,0.000417,0.000417,0.000388,0.000342,0.000316,0.000303,0.000306,0.000309,0.000292,0.000267 | |||
giBClar59 ftgen 0,0,4096,10,0.866645,0.024133,0.420624,0.171074,0.353043,0.050546,0.198619,0.047824,0.110458,0.081558,0.064116,0.041109,0.026267,0.036570,0.013031,0.023724,0.007023,0.010067,0.004550,0.011618,0.009601,0.005731,0.005607,0.005036,0.002347,0.002907,0.001472,0.001519,0.001304,0.002584,0.001383,0.001362,0.001591,0.002655,0.004442,0.004905,0.003148,0.004830,0.002947,0.002926,0.003063,0.002394,0.002276,0.002019,0.001689,0.002028,0.002368,0.003510,0.004637,0.004228,0.003257,0.002700,0.002231,0.001681,0.001293,0.001062,0.001121,0.000894,0.000797,0.000865,0.000752,0.000724,0.000719,0.000787,0.000896,0.000801,0.000686,0.000551,0.000468,0.000466,0.000515,0.000460,0.000382,0.000358,0.000366,0.000400,0.000405,0.000355,0.000333,0.000349,0.000352,0.000346,0.000335,0.000317,0.000303,0.000297,0.000289,0.000276,0.000290,0.000292,0.000287,0.000307,0.000318,0.000332,0.000353,0.000374,0.000388,0.000398,0.000399,0.000407 | |||
giBClar65 ftgen 0,0,4096,10,0.934141,0.012361,0.023358,0.045609,0.025913,0.017772,0.009955,0.010837,0.007253,0.001002,0.004215,0.001570,0.004226,0.001334,0.000580,0.001740,0.000839,0.001364,0.001337,0.000523,0.000377,0.000535,0.000290,0.000461,0.000486,0.000333,0.000462,0.000685,0.001136,0.000794,0.000625,0.000436,0.000303,0.000270,0.000259,0.000289,0.000208,0.000224,0.000249,0.000271,0.000200,0.000240,0.000298,0.000226,0.000198,0.000188,0.000200,0.000259,0.000198,0.000169,0.000155,0.000144,0.000123,0.000120,0.000118,0.000112,0.000108,0.000105,0.000096,0.000091,0.000090,0.000093,0.000089,0.000093,0.000094,0.000095,0.000101,0.000112,0.000120,0.000126,0.000134,0.000142,0.000149,0.000170,0.000190,0.000212,0.000246,0.000289,0.000286,0.000269,0.000279,0.000310,0.000352,0.000355,0.000341,0.000361,0.000376,0.000373,0.000385,0.000427,0.000475,0.000539,0.000655,0.000838,0.001061,0.001284,0.001429,0.001364,0.001171,0.001020 | |||
giBClar71 ftgen 0,0,4096,10,0.951349,0.052635,0.166289,0.036346,0.080225,0.105328,0.019032,0.014538,0.003453,0.003349,0.001065,0.003529,0.004876,0.003334,0.003537,0.009903,0.004407,0.002506,0.002863,0.005317,0.004116,0.003426,0.001538,0.001829,0.001351,0.001942,0.001728,0.001103,0.000733,0.000413,0.000643,0.000468,0.000336,0.000631,0.000868,0.000470,0.000257,0.000240,0.000210,0.000190,0.000182,0.000170,0.000178,0.000178 | |||
giBClar77 ftgen 0,0,4096,10,0.679870,0.126072,0.031529,0.103885,0.017231,0.001781,0.005132,0.000787,0.003992,0.001819,0.002500,0.002660,0.001298,0.001834,0.001238,0.004273,0.001518,0.000670,0.000588,0.000395,0.000786,0.000400,0.000399,0.000471,0.000235,0.000212,0.000208,0.000169,0.000163,0.000146,0.000134 | |||
giwavemapBClar ftgen 0,0,128,-27, 0,0, 35,0, 41,1, 47,2, 53,3, 59,4, 65,5, 71,6, 77,7, 127,7 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
gitabs4morfBClar ftgen 0,0,8,-2,giBClar35,giBClar41,giBClar47,giBClar53,giBClar59,giBClar65,giBClar71,giBClar77 | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; CONTRA-BASS CLARINET | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
giCBClar26 ftgen 0,0,4096,10,0.100160,0.005519,0.631940,0.013046,0.749042,0.308868,0.475605,0.152792,0.074315,0.238927,0.152260,0.251283,0.030787,0.052465,0.032473,0.121972,0.064172,0.090564,0.043994,0.091868,0.039563,0.058622,0.024531,0.023127,0.026665,0.067522,0.081377,0.057914,0.066176,0.036134,0.026135,0.021056,0.038011,0.036534,0.058393,0.040915,0.050051,0.038446,0.034166,0.021341,0.014481,0.015708,0.025527,0.026622,0.033577,0.027355,0.034434,0.022920,0.016354,0.010905,0.011160,0.015075,0.019871,0.017505,0.013189,0.011442,0.008511,0.007974,0.006368,0.005988,0.005976,0.005922,0.006590,0.008199,0.006566,0.005254,0.004955,0.005576,0.005463,0.005101,0.003955,0.003622,0.004027,0.003772,0.003504,0.002848,0.002183,0.002075,0.002143,0.002014,0.001907,0.001850,0.001736,0.001543,0.001318,0.001180,0.001107,0.001066,0.001169,0.001372,0.001533,0.001667,0.001738,0.001655,0.001604,0.001603,0.001571,0.001575,0.001638,0.001696 | |||
giCBClar32 ftgen 0,0,4096,10,0.227476,0.006718,0.707706,0.018101,0.539432,0.018848,0.590242,0.029143,0.512926,0.035712,0.324304,0.035306,0.035964,0.050992,0.096916,0.025035,0.098203,0.072427,0.068155,0.060324,0.042818,0.074538,0.049430,0.100999,0.052956,0.109337,0.053778,0.108791,0.040535,0.041998,0.050107,0.102568,0.075823,0.121836,0.062713,0.047451,0.042146,0.061836,0.063525,0.079775,0.056177,0.039271,0.021422,0.017934,0.022472,0.016758,0.023407,0.025034,0.018765,0.012566,0.009566,0.008232,0.011234,0.015948,0.018924,0.020397,0.016720,0.016224,0.010210,0.006760,0.006525,0.006464,0.006410,0.007832,0.010929,0.013172,0.010412,0.008153,0.005887,0.004927,0.005543,0.006358,0.006415,0.006246,0.004977,0.004037,0.003084,0.002646,0.002504,0.002716,0.003253,0.003484,0.003416,0.003566,0.003392,0.002924,0.002750,0.002979,0.003398,0.003635,0.003855,0.004032,0.004285,0.004278,0.003688,0.003182,0.002942,0.003043,0.003240,0.003317 | |||
giCBClar38 ftgen 0,0,4096,10,0.805943,0.003127,0.607438,0.006915,0.078379,0.025071,0.319458,0.040967,0.418440,0.096874,0.067519,0.066830,0.181701,0.148461,0.024736,0.047734,0.027229,0.065092,0.020252,0.015890,0.047795,0.096969,0.049469,0.024097,0.032227,0.032247,0.057763,0.064995,0.031760,0.023574,0.021449,0.017946,0.015989,0.010329,0.017096,0.025053,0.020021,0.014542,0.009659,0.010282,0.011754,0.016404,0.013970,0.019292,0.012226,0.007260,0.007191,0.010064,0.007246,0.007400,0.007562,0.005179,0.005520,0.005811,0.004710,0.005570,0.007523,0.007671,0.005694,0.004881,0.005241,0.004991,0.005944,0.006659,0.006213,0.004986,0.004006,0.003617,0.003290,0.003479,0.004050,0.003911,0.003373,0.003294,0.003284,0.002858,0.002674,0.003290,0.003986,0.003982,0.003503,0.003424,0.003640,0.003903,0.004267,0.004774,0.005048,0.005020,0.005284,0.005837,0.006116,0.006124,0.006474,0.007329,0.008198,0.008721,0.009014,0.008920,0.008202,0.007419 | |||
giCBClar44 ftgen 0,0,4096,10,0.715187,0.010393,0.137973,0.010188,0.404486,0.073659,0.420943,0.145565,0.080881,0.104506,0.227785,0.021310,0.035316,0.052724,0.023335,0.014334,0.087911,0.036461,0.047658,0.016909,0.047453,0.017513,0.031591,0.010028,0.009677,0.014384,0.012660,0.031094,0.010732,0.009677,0.005632,0.007197,0.005202,0.005881,0.004438,0.005851,0.003283,0.002870,0.001732,0.001824,0.003100,0.002099,0.002084,0.002567,0.003519,0.003856,0.003017,0.003288,0.003518,0.003481,0.002717,0.002212,0.002009,0.002374,0.002508,0.003004,0.002356,0.001681,0.001376,0.001435,0.001604,0.001881,0.001924,0.001783,0.002097,0.002582,0.002971,0.002922,0.002735,0.002884,0.003498,0.003726,0.003454,0.003486,0.003620,0.003356,0.003457,0.003775,0.003730,0.003481,0.003126,0.002660,0.002244,0.001883,0.001625,0.001518,0.001533,0.001594,0.001565,0.001529,0.001485,0.001598,0.001965,0.002295,0.002394,0.002424,0.002401,0.002320,0.002329,0.002436 | |||
giCBClar50 ftgen 0,0,4096,10,0.880714,0.104962,0.497883,0.045337,0.172861,0.109234,0.166844,0.037601,0.179775,0.048578,0.136813,0.079191,0.068937,0.019908,0.087293,0.031265,0.010402,0.048393,0.020759,0.005769,0.015444,0.004339,0.006113,0.010598,0.009591,0.007441,0.002840,0.003349,0.003193,0.003806,0.004954,0.003108,0.003744,0.003254,0.003682,0.002736,0.002830,0.004080,0.005132,0.004023,0.004801,0.004386,0.003962,0.002657,0.003137,0.003478,0.004208,0.004600,0.004272,0.004501,0.004804,0.004328,0.003739,0.003495,0.003378,0.002513,0.002268,0.002182,0.002140,0.001833,0.001900,0.001666,0.001525,0.001441,0.001541,0.001518,0.001571,0.001664,0.001746,0.001600,0.001474,0.001527,0.001644,0.001577,0.001450,0.001382,0.001479,0.001646,0.001713,0.001652,0.001720,0.001859,0.001891,0.001654,0.001420,0.001306,0.001228,0.001173,0.001188,0.001247,0.001299,0.001317,0.001264,0.001186,0.001091,0.000947,0.000797,0.000685,0.000610,0.000547 | |||
giCBClar54 ftgen 0,0,4096,10,0.889990,0.001348,0.087695,0.023926,0.066262,0.023447,0.075142,0.026596,0.020409,0.052699,0.027246,0.016811,0.017828,0.004566,0.005199,0.010830,0.003227,0.005838,0.001883,0.001580,0.004878,0.001870,0.000924,0.001648,0.002681,0.001616,0.003610,0.002587,0.002221,0.002332,0.001110,0.001616,0.002062,0.001241,0.000899,0.001174,0.001196,0.001105,0.001254,0.001253,0.001237,0.001093,0.001281,0.001260,0.001266,0.001255,0.001194,0.000995,0.001213,0.000908,0.000857,0.000902,0.000863,0.001171,0.001146,0.001074,0.000908,0.000908,0.000752,0.000618,0.000456,0.000395,0.000445,0.000503,0.000434,0.000353,0.000347,0.000373,0.000416,0.000392,0.000334,0.000271,0.000275,0.000314,0.000314,0.000317,0.000280,0.000275,0.000289,0.000253,0.000221,0.000203,0.000194,0.000194,0.000208,0.000221,0.000212,0.000185,0.000172,0.000176,0.000173,0.000178,0.000175,0.000159,0.000152,0.000150,0.000135,0.000120,0.000115,0.000119 | |||
giwavemapCBClar ftgen 0,0,128,-27, 0,0, 26,0, 32,1, 38,2, 44,3, 50,4, 54,5, 127,5 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
gitabs4morfCBClar ftgen 0,0,8,-2,giCBClar26,giCBClar32,giCBClar38,giCBClar44,giCBClar50,giCBClar54,giCBClar54,giCBClar54 | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; OBOE | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
gioboe59 ftgen 0,0,4096,10,0.239013,0.078927,0.241030,0.206347,0.832266,0.054540,0.013821,0.007450,0.022905,0.021737,0.018123,0.013105,0.002361,0.001433,0.003509,0.002589,0.001326,0.000743,0.000990,0.000868,0.000863,0.000994,0.000406,0.000288,0.000288 | |||
gioboe65 ftgen 0,0,4096,10,0.199317,0.508088,0.859044,0.346880,0.121336,0.005269,0.071954,0.035188,0.012195,0.010362,0.001516,0.002397,0.004325,0.002943,0.008168,0.003519,0.002074,0.001366,0.001019,0.000715,0.000788,0.000757,0.001403,0.001108,0.001108 | |||
gioboe73 ftgen 0,0,4096,10,0.297865,0.916220,0.218345,0.030903,0.016039,0.045984,0.003571,0.006255,0.007310,0.003701,0.001306,0.001355,0.000361,0.001108,0.001552,0.000991,0.000588,0.000780,0.000678,0.001103,0.000615,0.000264,0.000310,0.000464,0.000464 | |||
gioboe81 ftgen 0,0,4096,10,0.875554,0.822621,0.094665,0.308960,0.046707,0.031827,0.002702,0.002222,0.009030,0.009257,0.007814,0.000781,0.002099,0.001154,0.002638,0.000756,0.000750,0.001290,0.000476,0.001285,0.000627,0.000379,0.000594,0.000379,0.000379 | |||
gioboe89 ftgen 0,0,4096,10,0.965505,0.344315,0.033044,0.068398,0.013147,0.008580,0.003609,0.001848,0.001060,0.001429,0.001832,0.001218,0.000703,0.000642,0.000646,0.000867,0.000550,0.000567,0.001386,0.001239,0.001416,0.001354,0.001710,0.003111,0.003111 | |||
giwavemapOboe ftgen 0,0,128,-27, 0,0, 59,0, 65,1, 73,2, 81,3, 89,4, 127,4 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
gitabs4morfOboe ftgen 0,0,8,-2,gioboe59,gioboe65,gioboe73,gioboe81,gioboe89,gioboe89,gioboe89,gioboe89 | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; BASSOON | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
gibassoon34 ftgen 0,0,4096,10,0.213868,0.268493,0.244166,0.230801,0.105833,0.308087,0.556920,0.478956,0.523357,0.900665,0.213470,0.229596,0.031221,0.040117,0.067113,0.060158,0.030778,0.061028,0.143814,0.063668,0.126426,0.055009,0.049138,0.085854,0.113027,0.111464,0.088765,0.037342,0.050990,0.035579,0.040460,0.032219,0.027305,0.034141,0.019655,0.009315,0.008270,0.006748,0.006472,0.007088,0.008133,0.007046,0.007850,0.005791,0.006273,0.006847,0.007249,0.009398,0.010309,0.010418,0.010247,0.010333,0.009562,0.008180,0.009576,0.009469,0.008529,0.008844,0.008053,0.007565,0.008026,0.007284,0.007299,0.007423,0.008280,0.008374,0.008239,0.008512,0.009431,0.010246,0.010350,0.009381,0.008652,0.008150,0.007888,0.007951,0.008166,0.008210,0.007921,0.007548,0.007147,0.006991,0.006978,0.006527,0.005617,0.004781,0.004549,0.004707,0.004803,0.004640,0.004303,0.003866,0.003524,0.003348,0.003108,0.002766,0.002439,0.002278,0.002406,0.002733 | |||
gibassoon38 ftgen 0,0,4096,10,0.242897,0.242266,0.380380,0.667003,0.720921,0.402509,0.422424,0.475496,0.823674,0.135651,0.169435,0.062761,0.017494,0.023826,0.049210,0.074371,0.035978,0.086397,0.160820,0.122072,0.061609,0.020374,0.023031,0.018479,0.013838,0.015511,0.012693,0.005626,0.007015,0.007590,0.008854,0.004833,0.006678,0.008155,0.006694,0.007708,0.007823,0.004336,0.003679,0.003698,0.005616,0.004049,0.003555,0.002815,0.002166,0.001778,0.002195,0.002446,0.003427,0.003600,0.005046,0.005043,0.003980,0.002591,0.002168,0.002644,0.003363,0.004603,0.004571,0.005024,0.004653,0.004659,0.004447,0.004128,0.004325,0.004464,0.004393,0.004144,0.004285,0.004442,0.004203,0.003640,0.003229,0.003115,0.003017,0.002902,0.002799,0.002839,0.003045,0.003262,0.003391,0.003250,0.003008,0.002726,0.002506,0.002370,0.002215,0.002130,0.002058,0.001832,0.001574,0.001339,0.001133,0.001005,0.000924,0.000860,0.000849,0.000896,0.000994,0.001115 | |||
gibassoon43 ftgen 0,0,4096,10,0.101647,0.135289,0.245027,0.142720,0.728360,0.361154,0.030730,0.079698,0.011579,0.074893,0.094091,0.028910,0.084641,0.058767,0.035341,0.016688,0.006781,0.020365,0.020545,0.008172,0.007968,0.017127,0.016825,0.009248,0.003609,0.002361,0.002361,0.001409,0.001208,0.001278,0.001752,0.002711,0.002221,0.001898,0.001255,0.001150,0.001935,0.001759,0.001661,0.001219,0.001111,0.001527,0.001167,0.001290,0.001366,0.001058,0.000935,0.000898,0.000937,0.001254,0.001464,0.001695,0.002012,0.002054,0.001872,0.001370,0.001074,0.000988,0.001009,0.000959,0.000905,0.000957,0.000885,0.000825,0.000811,0.000776,0.000727,0.000696,0.000758,0.000768,0.000667,0.000604,0.000548,0.000525,0.000508,0.000485,0.000445,0.000380,0.000330,0.000307,0.000329,0.000366,0.000367,0.000334,0.000291,0.000259,0.000247,0.000265,0.000309,0.000378,0.000436,0.000425,0.000390,0.000375,0.000353,0.000328,0.000312,0.000292,0.000273,0.000269 | |||
gibassoon50 ftgen 0,0,4096,10,0.147763,0.340255,0.879202,0.404023,0.259274,0.130887,0.095096,0.039056,0.091976,0.009828,0.004879,0.013408,0.016090,0.015931,0.012402,0.003430,0.006421,0.004323,0.002018,0.001465,0.003012,0.001397,0.002446,0.002683,0.002425,0.004828,0.002422,0.002479,0.002086,0.002351,0.002269,0.002034,0.001708,0.001324,0.001927,0.002764,0.003997,0.003514,0.002736,0.002327,0.002054,0.001842,0.001577,0.002009,0.002098,0.001411,0.001019,0.000816,0.000899,0.000893,0.001005,0.001296,0.000987,0.000657,0.000539,0.000400,0.000313,0.000284,0.000331,0.000417,0.000479,0.000633,0.000798,0.000893,0.001067,0.001242,0.001260,0.001282,0.001218,0.001023,0.000887,0.000830,0.000746,0.000637,0.000553,0.000534,0.000537,0.000506,0.000482,0.000477,0.000490,0.000515,0.000532,0.000508,0.000473,0.000416,0.000336,0.000271,0.000229,0.000193,0.000170,0.000169,0.000185,0.000197,0.000205,0.000223,0.000247,0.000255,0.000248,0.000249 | |||
gibassoon56 ftgen 0,0,4096,10,0.258143,0.954570,0.553228,0.188964,0.031203,0.252375,0.179421,0.053961,0.022121,0.016058,0.006372,0.002854,0.002507,0.006348,0.006626,0.008348,0.005125,0.001342,0.001956,0.002664,0.005721,0.003529,0.004933,0.002543,0.003026,0.003332,0.001828,0.003024,0.002223,0.001464,0.001354,0.001310,0.000827,0.000966,0.001111,0.001685,0.001048,0.000806,0.000660,0.000445,0.000368,0.000436,0.000578,0.000518,0.000372,0.000346,0.000342,0.000340,0.000259,0.000272,0.000318,0.000395,0.000481,0.000454,0.000428,0.000391,0.000351,0.000302,0.000261,0.000245,0.000253,0.000249,0.000223,0.000228,0.000244,0.000217,0.000203,0.000222,0.000250,0.000271,0.000235,0.000202,0.000179,0.000160,0.000151,0.000151,0.000144,0.000126,0.000116,0.000123,0.000134,0.000140,0.000142,0.000142,0.000130,0.000117,0.000109,0.000109,0.000110,0.000111,0.000122,0.000129,0.000124,0.000116,0.000115,0.000113,0.000104,0.000092,0.000080,0.000071 | |||
gibassoon62 ftgen 0,0,4096,10,0.802206,0.854305,0.242064,0.037491,0.024258,0.012991,0.003920,0.008373,0.001787,0.001801,0.003935,0.008957,0.009944,0.004249,0.003799,0.003374,0.001734,0.004753,0.008252,0.004132,0.002330,0.001700,0.001925,0.001098,0.001154,0.001943,0.000954,0.000487,0.000432,0.000605,0.000812,0.000806,0.001001,0.001178,0.001065,0.001137,0.000877,0.000630,0.000538,0.000499,0.000605,0.000532,0.000532,0.000387,0.000288,0.000253,0.000313,0.000347,0.000292,0.000225,0.000167,0.000144,0.000121,0.000116,0.000110,0.000110,0.000119,0.000111,0.000106,0.000111,0.000115,0.000114,0.000101,0.000094,0.000100,0.000102,0.000097,0.000088,0.000079,0.000070,0.000064,0.000059,0.000054,0.000053,0.000053 | |||
gibassoon67 ftgen 0,0,4096,10,0.262539,0.973041,0.138354,0.113396,0.058172,0.030635,0.005565,0.001686,0.003483,0.001977,0.003774,0.002477,0.002439,0.001226,0.002781,0.002527,0.001020,0.000611,0.000658,0.000715,0.000728,0.000531,0.000442,0.000238,0.000414,0.000325,0.000560,0.000689,0.000445,0.000306,0.000301,0.000305,0.000296,0.000325,0.000252,0.000218,0.000248,0.000193,0.000174,0.000179,0.000143,0.000140,0.000140,0.000104,0.000096,0.000116,0.000128,0.000137,0.000144,0.000113,0.000112,0.000119,0.000140,0.000116,0.000107,0.000102 | |||
giwavemapBassoon ftgen 0,0,128,-27, 0,0, 34,0, 38,1, 43,2, 50,3, 56,4, 62,5, 67,6, 127,6 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
gitabs4morfBassoon ftgen 0,0,8,-2,gibassoon34,gibassoon38,gibassoon43,gibassoon50,gibassoon56,gibassoon62,gibassoon67,gibassoon67 | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; CONTRA-BASSOON | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
giCBassoon22 ftgen 0,0,4096,10,0.497216,0.592986,0.588338,0.378063,0.343716,0.540022,0.620921,0.613540,0.848864,0.535558,0.632297,0.584663,0.443376,0.419439,0.291262,0.249631,0.256447,0.182209,0.062888,0.160047,0.156792,0.115884,0.107766,0.130415,0.183253,0.145108,0.156478,0.170472,0.185752,0.181506,0.155042,0.154256,0.167703,0.145571,0.172382,0.169936,0.191248,0.207520,0.161789,0.114105,0.096757,0.068310,0.056357,0.068193,0.048257,0.046235,0.041903,0.032361,0.023090,0.012851,0.008788,0.010598,0.010151,0.010905,0.009426,0.009439,0.012674,0.016976,0.019287,0.017791,0.014995,0.015280,0.014007,0.012293,0.013920,0.015130,0.017138,0.020001,0.026003,0.029085,0.026391,0.021776,0.018388,0.016337,0.014700,0.015521,0.019019,0.022414,0.024168,0.024006,0.023403,0.022377,0.020534,0.018428,0.016165,0.013675,0.011929,0.011056,0.010352,0.010070,0.009561,0.009378,0.008855,0.008393,0.008147,0.008048,0.008099,0.007480,0.006551,0.005481 | |||
giCBassoon26 ftgen 0,0,4096,10,0.076357,0.137793,0.174617,0.207802,0.302523,0.705801,0.162577,0.073808,0.224559,0.050465,0.066110,0.181682,0.062409,0.052317,0.037698,0.029936,0.042341,0.053436,0.135414,0.059248,0.025689,0.033567,0.051201,0.029910,0.028697,0.052991,0.059280,0.029742,0.027742,0.023801,0.013878,0.006197,0.004814,0.005139,0.007873,0.007104,0.009903,0.007952,0.008234,0.005783,0.006682,0.007272,0.006943,0.007674,0.007728,0.006326,0.005179,0.004259,0.004142,0.003705,0.002547,0.001785,0.002073,0.002887,0.004184,0.004075,0.004174,0.005101,0.004993,0.004189,0.003170,0.002599,0.002866,0.003689,0.005272,0.006515,0.007262,0.006420,0.005939,0.005247,0.004710,0.004619,0.004018,0.003371,0.002611,0.001906,0.001540,0.001341,0.001128,0.001025,0.001114,0.001151,0.001224,0.001403,0.001564,0.001709,0.001914,0.002097,0.002148,0.002190,0.002192,0.002124,0.002190,0.002485,0.002819,0.002892,0.002769,0.002559,0.002374,0.002161 | |||
giCBassoon38 ftgen 0,0,4096,10,0.240531,0.304670,0.289169,0.727482,0.578083,0.169149,0.057305,0.193624,0.167977,0.206006,0.182632,0.057408,0.103574,0.044785,0.084239,0.068303,0.030771,0.133375,0.096231,0.037016,0.046566,0.020770,0.020264,0.015211,0.029647,0.018603,0.027940,0.062861,0.033828,0.015594,0.016305,0.025478,0.034356,0.038642,0.028451,0.026747,0.014914,0.016727,0.015524,0.013236,0.014264,0.013651,0.014838,0.016490,0.021208,0.017660,0.013009,0.014867,0.013013,0.010426,0.009144,0.009462,0.009367,0.009624,0.008079,0.007399,0.009012,0.009384,0.008661,0.009051,0.009394,0.010578,0.011610,0.012184,0.010442,0.009130,0.008795,0.008468,0.010039,0.011205,0.011438,0.011489,0.010526,0.008902,0.007391,0.006198,0.005970,0.005264,0.004331,0.003874,0.003514,0.003418,0.003518,0.003409,0.003150,0.003023,0.003047,0.003199,0.003624,0.003999,0.003839,0.003629,0.003712,0.003872,0.003974,0.003836,0.003596,0.003353,0.003177,0.003070 | |||
giCBassoon50 ftgen 0,0,4096,10,0.200451,0.511764,0.153876,0.491651,0.722151,0.174751,0.087283,0.068341,0.008971,0.040014,0.041083,0.015335,0.047809,0.037606,0.038259,0.020124,0.022425,0.024747,0.016480,0.008528,0.006892,0.004131,0.005947,0.005585,0.006842,0.008448,0.015885,0.005820,0.002834,0.004626,0.003886,0.003621,0.004837,0.005276,0.002715,0.002900,0.003817,0.005081,0.005598,0.006033,0.006164,0.004260,0.003944,0.004776,0.004223,0.004351,0.004769,0.004836,0.004959,0.005380,0.004538,0.003969,0.003860,0.003536,0.003521,0.003397,0.002823,0.002162,0.002001,0.001663,0.001430,0.001505,0.001566,0.001468,0.001406,0.001439,0.001225,0.001095,0.001134,0.001316,0.001630,0.001839,0.001964,0.001940,0.001824,0.001694,0.001617,0.001526,0.001348,0.001116,0.000972,0.000973,0.001011,0.001015,0.000944,0.000785,0.000650,0.000609,0.000675,0.000782,0.000839,0.000818,0.000755,0.000661,0.000566,0.000498,0.000471,0.000478,0.000486,0.000479 | |||
giwavemapCBassoon ftgen 0,0,128,-27, 0,0, 22,0, 26,1, 38,2, 50,3, 127,3 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
gitabs4morfCBassoon ftgen 0,0,4,-2,giCBassoon22,giCBassoon26,giCBassoon38,giCBassoon50 | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; VIOLIN | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
giviolin55 ftgen 0,0,4096,10,0.081672,0.785854,0.808302,0.221447,0.136644,0.103608,0.051154,0.040070,0.071067,0.358903,0.053101,0.090036,0.033729,0.068969,0.060398,0.147336,0.060769,0.055245,0.044695,0.022179,0.058528,0.083706,0.029581,0.013173;,0.013173 | |||
giviolin67 ftgen 0,0,4096,10,0.344116,0.095361,0.038223,0.090317,0.145798,0.049369,0.076997,0.057555,0.016248,0.036189,0.014161,0.008738,0.010238,0.009625,0.005588,0.004762,0.002635,0.002162,0.002822,0.002144,0.001687,0.001955,0.001870,0.001011;,0.001011 | |||
giviolin79 ftgen 0,0,4096,10,0.403041,0.281156,0.259204,0.392900,0.236559,0.108769,0.117288,0.063588,0.039483,0.018245,0.012717,0.020183,0.008506,0.017915,0.008925,0.008575,0.006947,0.008142,0.005487,0.005970,0.004402,0.003161,0.002361,0.001942;,0.001942 | |||
giviolin91 ftgen 0,0,4096,10,0.231708,0.906742,0.215622,0.092709,0.057338,0.038101,0.030758,0.023439,0.009905,0.001298,0.002108,0.000516,0.000499,0.000123,0.000642,0.000732,0.004757,0.004547,0.017582,0.033035,0.098559,0.013616,0.017674,0.019601;,0.019601 | |||
giwavemapViolin ftgen 0,0,128,-27, 0,0, 55,0, 67,1, 79,2, 91,3, 127,3 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
gitabs4morfViolin ftgen 0,0,4,-2,giviolin55,giviolin67,giviolin79,giviolin91 ; | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; CELLO | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
gicello36 ftgen 0,0,4096,10,0.022943,0.412962,0.548431,0.578468,0.092241,0.116378,0.052974,0.029585,0.093977,0.119660,0.064074,0.051807,0.015094,0.094184,0.015488,0.006640,0.007091,0.011557,0.043467,0.023330,0.018118,0.026921,0.010285,0.007653,0.015306,0.023175,0.013051,0.004840,0.005658,0.010814,0.014921,0.026066,0.028334,0.015227,0.010740,0.008966,0.009389,0.012547,0.011544,0.009900,0.012403,0.013093,0.008259,0.007148,0.006129,0.004932,0.004332,0.003397,0.002497,0.002241,0.002187,0.002227,0.001634,0.001186,0.001119,0.001131,0.001276,0.000970,0.001101,0.001647,0.001936,0.001632,0.001190,0.000891,0.000883,0.000906,0.000894,0.000855,0.000768,0.000721,0.000750,0.000900,0.000965,0.000844,0.000765,0.000643,0.000535,0.000464,0.000409,0.000403,0.000489,0.000642,0.000773,0.000819,0.000871,0.000930,0.000979,0.000950,0.000781,0.000649,0.000620,0.000653,0.000661,0.000706,0.000805,0.000856,0.000832,0.000793,0.000750,0.000702 | |||
gicello48 ftgen 0,0,4096,10,0.171752,0.537455,0.217980,0.172188,0.552902,0.583964,0.452897,0.095360,0.059208,0.033024,0.126570,0.028481,0.067671,0.029869,0.055112,0.056284,0.025151,0.038689,0.027323,0.027935,0.070762,0.023514,0.016984,0.013118,0.008692,0.004591,0.002235,0.003399,0.002568,0.002224,0.002366,0.002892,0.004660,0.003562,0.002923,0.002328,0.002327,0.001705,0.001566,0.002356,0.002199,0.003381,0.006360,0.007320,0.004930,0.002809,0.002686,0.002156,0.001566,0.001273,0.001192,0.001380,0.001683,0.002133,0.003160,0.002820,0.002065,0.002097,0.002013,0.001649,0.001366,0.001053,0.000819,0.000730,0.000775,0.000937,0.001097,0.001063,0.000917,0.000815,0.000792,0.000857,0.001010,0.001203,0.001372,0.001408,0.001295,0.001173,0.001062,0.000942,0.000825,0.000761,0.000774,0.000854,0.000932,0.000968,0.000987,0.001022,0.001018,0.000944,0.000882,0.000829,0.000779,0.000734,0.000693,0.000655,0.000602,0.000547,0.000529,0.000548 | |||
gicello60 ftgen 0,0,4096,10,0.762584,0.124687,0.088950,0.091324,0.058688,0.034069,0.038828,0.065420,0.062254,0.058503,0.033332,0.014105,0.011585,0.004135,0.005176,0.004496,0.006698,0.008491,0.007044,0.003450,0.004771,0.016317,0.009897,0.007180,0.004105,0.002477,0.003995,0.002992,0.002346,0.002233,0.002558,0.002135,0.002301,0.001713,0.001191,0.001850,0.004203,0.001813,0.000969,0.001090,0.000636,0.001237,0.000844,0.001107,0.000880,0.000791,0.000640,0.000894,0.000554,0.000727,0.001041,0.001046,0.001079,0.000456,0.000410,0.000442,0.000431,0.000437,0.000427,0.000389,0.000350,0.000284,0.000269,0.000260,0.000210,0.000253,0.000328,0.000296,0.000290,0.000419,0.000452,0.000328,0.000215,0.000229,0.000333,0.000275,0.000208,0.000204,0.000163,0.000283,0.000253,0.000264,0.000178,0.000208,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
gicello72 ftgen 0,0,4096,10,0.601382,0.263076,0.197963,0.244245,0.217992,0.114034,0.025768,0.041518,0.011954,0.006391,0.012239,0.017818,0.016819,0.012798,0.007576,0.007376,0.002891,0.021377,0.005261,0.004421,0.009226,0.004333,0.001808,0.003989,0.002078,0.001344,0.001560,0.001240,0.001586,0.001307,0.000519,0.000761,0.001009,0.000632,0.000412,0.000414,0.000361,0.000406,0.000544,0.000741,0.000281,0.000164,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giwavemapCello ftgen 0,0,128,-27, 0,0, 36,0, 48,1, 60,2, 72,3, 127,3 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
gitabs4morfCello ftgen 0,0,4,-2,gicello36,gicello48,gicello60,gicello72 ; | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; PICCOLO | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
gipiccolo74 ftgen 0,0,4096,10,0.898113,0.247693,0.060222,0.127742,0.034019,0.044738,0.029980,0.018041,0.008219,0.009819,0.015719,0.009423,0.020117,0.011802,0.007226,0.003198,0.001597,0.002062,0.001590,0.001420,0.001087,0.000581,0.000370,0.000393,0.000393 | |||
gipiccolo80 ftgen 0,0,4096,10,0.837581,0.024769,0.144022,0.109176,0.031512,0.026122,0.004565,0.008379,0.004995,0.002685,0.003489,0.002674,0.002743,0.001129,0.000485,0.000367,0.000701,0.001563,0.001166,0.000647,0.000808,0.000622,0.000358,0.000227,0.000227 | |||
gipiccolo86 ftgen 0,0,4096,10,0.730803,0.323120,0.277720,0.044844,0.009400,0.022785,0.004602,0.005762,0.006400,0.002483,0.001490,0.002354,0.004728,0.002669,0.003175,0.001177,0.000761,0.000509,0.000449,0.000703,0.001078,0.002471,0.003905,0.004114,0.004114 | |||
gipiccolo92 ftgen 0,0,4096,10,0.883567,0.117309,0.144273,0.012664,0.016747,0.002921,0.002043,0.001429,0.002107,0.008510,0.001611,0.002330,0.000075,0.000381,0.000943,0.002268,0.001748,0.001626,0.000882,0.002765,0.003187,0.004911,0.008342,0.017209,0.017209 | |||
gipiccolo98 ftgen 0,0,4096,10,0.922186,0.144948,0.042529,0.011837,0.006901,0.000900,0.001625,0.000686,0.000507 ; ,0.000305,0.000305,0.000730,0.000922,0.001408,0.001499,0.005116,0.021056,0.151393,0.034986,0.124701,0.024182,0.008037,0.002664,0.001934,0.001934 | |||
gipiccolo106 ftgen 0,0,4096,10,0.501042,0.019695,0.008976,0.003473,0.006493,0.001700,0.002765,0.003224,0.006276 ; ,0.025062,0.036907,0.005386,0.046443,0.013720,0.005391,0.007819,0.019832,0.008441,0.006927,0.007528,0.018483,0.042516,0.057060,0.083779,0.083779 | |||
giwavemapPiccolo ftgen 0,0,128,-27, 0,0, 74,0, 80,1, 86,2, 92,3, 98,4, 106,5, 127,5 | |||
gitabs4morfPiccolo ftgen 0,0,8,-2,gipiccolo74,gipiccolo80,gipiccolo86,gipiccolo92,gipiccolo98,gipiccolo106,gipiccolo106,gipiccolo106 ; | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; FLUTE | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
giflute59 ftgen 0,0,4096,10,0.876155,0.188136,0.766537,0.278649,0.134428,0.143342,0.201465,0.068043,0.011284,0.021093,0.021494,0.010577,0.016431,0.007352,0.006864,0.007433,0.006500,0.004716,0.004282,0.002545,0.002718,0.002045,0.001768,0.002409,0.002409 | |||
giflute65 ftgen 0,0,4096,10,0.799971,0.564039,0.327027,0.076562,0.324116,0.049951,0.035116,0.048856,0.017988,0.004316,0.007909,0.004093,0.003013,0.003329,0.001707,0.001995,0.001913,0.000937,0.001543,0.001868,0.001289,0.001463,0.001865,0.001076,0.001076 | |||
giflute71 ftgen 0,0,4096,10,0.902388,0.107786,0.423495,0.078015,0.066093,0.032990,0.012352,0.008687,0.005253,0.004091,0.001790,0.002202,0.000853,0.001228,0.000810,0.000828,0.000601,0.000593,0.000647,0.000906,0.000925,0.001111,0.001302,0.000899,0.000899 | |||
giflute77 ftgen 0,0,4096,10,0.925667,0.059839,0.214284,0.013980,0.026778,0.008733,0.019436,0.002640,0.004217,0.002126,0.003513,0.002455,0.001336,0.001508,0.001589,0.002155,0.002549,0.001951,0.001614,0.001076,0.001253,0.001138,0.001073,0.000990,0.000990 | |||
giflute83 ftgen 0,0,4096,10,0.865610,0.041090,0.054192,0.043068,0.022098,0.002450,0.005687,0.002093,0.005076,0.001357,0.003848,0.006820,0.002879,0.005038,0.002273,0.002877,0.001043,0.001188,0.000857,0.000726,0.000537,0.000320,0.000390,0.000666,0.000666 | |||
giflute89 ftgen 0,0,4096,10,0.907108,0.032221,0.007003,0.010577,0.004166,0.002274,0.001089,0.002739,0.002459,0.002194,0.001351,0.000570,0.000469,0.000388,0.000228,0.000180,0.000377,0.000470,0.000724,0.001478,0.002258,0.002625,0.006255,0.003183,0.003183 | |||
giflute95 ftgen 0,0,4096,10,0.927168,0.094811,0.014160,0.010743,0.004640,0.002540,0.000535,0.000356,0.000205,0.000147,0.000042,0.000032,0.000090,0.000201,0.000171,0.000595,0.000136,0.000338,0.000284,0.000244,0.001813,0.001310,0.002113,0.000510,0.000510 | |||
giflute98 ftgen 0,0,4096,10,0.793870,0.077609,0.047389,0.012277,0.005127,0.002760,0.002619,0.000390,0.000109,0.000105,0.000147,0.000425,0.000266,0.000201,0.000312,0.000210,0.001391,0.003570,0.001720,0.002746,0.001399,0.000749,0.000411,0.001156,0.001156 | |||
giwavemapFlute ftgen 0,0,128,-27, 0,0, 59,0, 65,1, 71,2, 77,3, 83,4, 89,5, 95,6, 98,7, 127,7 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
gitabs4morfFlute ftgen 0,0,8,-2,giflute59,giflute65,giflute71,giflute77,giflute83,giflute89,giflute95,giflute98 | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; ALTO FLUTE | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
giAFlute55 ftgen 0,0,4096,10,0.821986,0.323726,0.027144,0.049562,0.045630,0.004837,0.008584,0.002449,0.002921,0.004780,0.006174,0.006496,0.009180,0.010020,0.008884,0.006397,0.007728,0.007543,0.005540,0.004643,0.004213,0.003464,0.002247,0.001529,0.001529 | |||
giAFlute61 ftgen 0,0,4096,10,0.629423,0.050378,0.078267,0.098147,0.002593,0.003473,0.002978,0.007847,0.002718,0.004264,0.004001,0.003129,0.002278,0.001767,0.001591,0.001198,0.000790,0.000910,0.000907,0.000909,0.000690,0.001006,0.000870,0.000801,0.000801 | |||
giAFlute67 ftgen 0,0,4096,10,0.734185,0.213440,0.086548,0.055143,0.004785,0.001811,0.011006,0.004212,0.001873,0.002130,0.001001,0.000376,0.000632,0.000823,0.000595,0.000764,0.000514,0.000403,0.000326,0.000317,0.000537,0.000523,0.000835,0.000743,0.000743 | |||
giAFlute76 ftgen 0,0,4096,10,0.868899,0.390848,0.052590,0.023839,0.033699,0.031143,0.013923,0.008881,0.003821,0.001797,0.003048,0.002506,0.002295,0.001878,0.001118,0.001109,0.001133,0.001732,0.002085,0.002020,0.001240,0.000963,0.000929,0.000456,0.000456 | |||
giwavemapAFlute ftgen 0,0,128,-27, 0,0, 55,0, 61,1, 67,2, 76,3, 127,3 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
gitabs4morfAFlute ftgen 0,0,4,-2,giAFlute55,giAFlute55,giAFlute55,giAFlute55 | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; BASS FLUTE | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
giBFlute48 ftgen 0,0,4096,10,0.691967,0.034269,0.271945,0.033667,0.017446,0.011342,0.007238,0.006576,0.003027,0.003556,0.004425,0.004988,0.003990,0.005253,0.006140,0.003051,0.004437,0.003567,0.002838,0.001703,0.001528,0.001368,0.001703,0.001153,0.000827,0.001023,0.000899,0.000612,0.000827,0.000823,0.000948,0.001184,0.001201,0.001272,0.001032,0.001141,0.001128,0.000887,0.000790,0.000612,0.000565,0.000573,0.000586,0.000554,0.000483,0.000450,0.000404,0.000416,0.000392,0.000391,0.000327,0.000336,0.000370,0.000424,0.000460,0.000459,0.000456,0.000395,0.000319,0.000306,0.000283,0.000306,0.000338,0.000305,0.000288,0.000263,0.000247,0.000239,0.000245,0.000233,0.000190,0.000166,0.000161,0.000160,0.000150,0.000136,0.000130,0.000130,0.000126,0.000126,0.000128,0.000131,0.000131,0.000136,0.000138,0.000132,0.000122,0.000116,0.000119,0.000126,0.000122,0.000112,0.000109,0.000113,0.000118,0.000118,0.000118,0.000117,0.000116,0.000118 | |||
giBFlute54 ftgen 0,0,4096,10,0.633439,0.578363,0.200810,0.008032,0.068714,0.005615,0.005448,0.012421,0.009987,0.006289,0.004137,0.002738,0.001944,0.002935,0.003674,0.002567,0.002545,0.004116,0.003915,0.002935,0.002322,0.002647,0.003186,0.003370,0.003213,0.002193,0.001902,0.001629,0.001652,0.001274,0.001102,0.001205,0.001277,0.001134,0.001117,0.001286,0.001477,0.001607,0.002607,0.003270,0.002939,0.002558,0.001826,0.001324,0.001228,0.001070,0.001110,0.001120,0.001042,0.000924,0.000909,0.000880,0.000765,0.000674,0.000600,0.000491,0.000437,0.000441,0.000443,0.000452,0.000467,0.000527,0.000606,0.000571,0.000554,0.000518,0.000420,0.000363,0.000315,0.000275,0.000245,0.000221,0.000200,0.000202,0.000219,0.000211,0.000194,0.000187,0.000197,0.000197,0.000193,0.000201,0.000217,0.000223,0.000219,0.000213,0.000200,0.000175,0.000149,0.000131,0.000124,0.000120,0.000115,0.000111,0.000113,0.000117,0.000115,0.000107,0.000100,0.000098 | |||
giBFlute60 ftgen 0,0,4096,10,0.801592,0.068816,0.032303,0.012614,0.002660,0.014692,0.002493,0.006175,0.001826,0.001416,0.002607,0.001063,0.001542,0.001053,0.001293,0.001226,0.000781,0.001142,0.000975,0.000922,0.000693,0.000570,0.000538,0.000429,0.000587,0.000775,0.000855,0.001295,0.001190,0.000941,0.000912,0.000796,0.000662,0.000789,0.000828,0.000784,0.000614,0.000480,0.000455,0.000378,0.000334,0.000309,0.000351,0.000375,0.000427,0.000378,0.000293,0.000232,0.000224,0.000199,0.000150,0.000119,0.000100,0.000084,0.000084,0.000088,0.000085,0.000081,0.000076,0.000081,0.000080,0.000075,0.000071,0.000068,0.000063,0.000060,0.000064,0.000067,0.000065,0.000058,0.000055,0.000054,0.000054,0.000053,0.000052,0.000053,0.000053,0.000053,0.000052,0.000050,0.000049,0.000049,0.000049,0.000049,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giBFlute66 ftgen 0,0,4096,10,0.743019,0.068238,0.021487,0.010397,0.001744,0.013212,0.001676,0.005245,0.002049,0.001401,0.001686,0.001346,0.001288,0.000879,0.001087,0.000922,0.000878,0.000678,0.000904,0.000729,0.000481,0.000542,0.000525,0.000561,0.000481,0.000552,0.000745,0.001153,0.001211,0.001000,0.000706,0.000621,0.000613,0.000779,0.000764,0.000717,0.000619,0.000486,0.000448,0.000429,0.000341,0.000327,0.000331,0.000340,0.000340,0.000335,0.000288,0.000255,0.000233,0.000195,0.000173,0.000150,0.000127,0.000123,0.000119,0.000113,0.000111,0.000115,0.000116,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giBFlute72 ftgen 0,0,4096,10,0.741444,0.066744,0.018973,0.009713,0.002046,0.010742,0.001911,0.004984,0.002277,0.001308,0.001841,0.000932,0.001065,0.000889,0.001029,0.000970,0.000767,0.000708,0.000743,0.000629,0.000541,0.000457,0.000410,0.000534,0.000487,0.000489,0.000743,0.001263,0.001164,0.001062,0.000757,0.000529,0.000538,0.000606,0.000594,0.000583,0.000497,0.000463,0.000498,0.000433,0.000369,0.000363,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giBFlute76 ftgen 0,0,4096,10,0.745977,0.066489,0.014197,0.007352,0.002175,0.009766,0.002280,0.004362,0.001870,0.001375,0.001383,0.001328,0.001381,0.001194,0.001429,0.000949,0.000917,0.000802,0.000818,0.000932,0.000636,0.000646,0.000571,0.000575,0.000613,0.000679,0.000959,0.001343,0.001448,0.001365,0.001241,0.001091,0.001093,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giwavemapBFlute ftgen 0,0,128,-27, 0,0, 48,0, 54,1, 60,2, 66,3, 72,4, 76,5, 127,5 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
gitabs4morfBFlute ftgen 0,0,4,-2,giBFlute48,giBFlute54,giBFlute60,giBFlute66,giBFlute72,giBFlute76 | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; AHH | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
giahh43 ftgen 0,0,4096,10,0.386674,0.073031,0.081855,0.018459,0.053239,0.061160,0.058957,0.045203,0.039489,0.065846,0.041424,0.012866,0.006504,0.005909,0.005469,0.003737,0.003814,0.002639,0.002638,0.003016,0.004285,0.006226,0.007688,0.008839,0.014596,0.028866,0.037921,0.022164,0.015744,0.007756,0.005050,0.007234,0.008132,0.006564,0.005699,0.007003,0.007011,0.005459,0.004080,0.003820,0.004403,0.004661,0.005385,0.007278,0.009647,0.010877,0.012884,0.014945,0.015339,0.012290,0.009204,0.008363,0.007093,0.005203,0.003328,0.002161,0.001538,0.001215,0.001037,0.001033,0.001172,0.001483,0.002127,0.002644,0.002412,0.001679,0.001068,0.000848,0.000972,0.001425,0.002263,0.003492,0.004427,0.004100,0.003201,0.002484,0.002255,0.002495,0.003139,0.004136,0.005259,0.005878,0.005432,0.004477,0.003617,0.002973,0.002606,0.002518,0.002611,0.002863,0.003395,0.004095,0.004529,0.004686,0.004927,0.005437,0.006092,0.006727,0.007073,0.006966 | |||
giahh49 ftgen 0,0,4096,10,0.600063,0.256340,0.126445,0.040717,0.097956,0.082383,0.135342,0.006369,0.002414,0.002312,0.001526,0.000552,0.000868,0.000435,0.000576,0.001145,0.001706,0.003688,0.013234,0.006626,0.006840,0.012971,0.003639,0.002955,0.001962,0.001988,0.000831,0.000533,0.000748,0.000490,0.000674,0.001431,0.002663,0.002680,0.002874,0.003227,0.001837,0.000874,0.000662,0.000901,0.001630,0.002139,0.001816,0.001233,0.000817,0.000658,0.000730,0.000864,0.001037,0.001616,0.002390,0.002487,0.002363,0.002429,0.002624,0.002971,0.002486,0.001530,0.000895,0.000669,0.000806,0.001085,0.001185,0.001002,0.000857,0.000900,0.001009,0.001198,0.001398,0.001306,0.001302,0.001562,0.001670,0.001440,0.001105,0.000872,0.000746,0.000748,0.000770,0.000788,0.000890,0.000973,0.000896,0.000716,0.000598,0.000536,0.000492,0.000469,0.000443,0.000384,0.000317,0.000262,0.000209,0.000162,0.000129,0.000110,0.000102,0.000099,0.000099,0.000096 | |||
giahh55 ftgen 0,0,4096,10,0.667225,0.194524,0.098683,0.096875,0.021209,0.006311,0.002978,0.001013,0.001249,0.001446,0.002393,0.004826,0.018741,0.012161,0.010480,0.005261,0.004569,0.001376,0.001132,0.003605,0.001846,0.002757,0.005346,0.004712,0.004806,0.002357,0.001109,0.001302,0.001860,0.001054,0.001120,0.001642,0.002240,0.004382,0.005473,0.003755,0.002444,0.002088,0.001822,0.000946,0.000790,0.001222,0.001653,0.001374,0.001401,0.002118,0.002061,0.001470,0.001198,0.001635,0.002387,0.002248,0.001327,0.000951,0.000884,0.000844,0.000805,0.000667,0.000669,0.000701,0.000591,0.000445,0.000367,0.000314,0.000272,0.000225,0.000179,0.000152,0.000164,0.000169,0.000151,0.000144,0.000137,0.000121,0.000115,0.000123,0.000125,0.000116,0.000102,0.000095,0.000102,0.000120,0.000135,0.000132,0.000117,0.000100,0.000084,0.000074,0.000072,0.000075,0.000077,0.000079,0.000083,0.000083,0.000081,0.000082,0.000084,0.000081,0.000074,0.000063 | |||
giahh61 ftgen 0,0,4096,10,0.701578,0.444091,0.390732,0.103519,0.007759,0.002497,0.001883,0.001103,0.001729,0.001889,0.001679,0.002455,0.000872,0.000433,0.001071,0.001382,0.002270,0.001077,0.000930,0.000940,0.001143,0.001633,0.001901,0.001446,0.002619,0.003724,0.002339,0.001969,0.001199,0.000674,0.001015,0.001321,0.001504,0.001378,0.000778,0.000682,0.001100,0.001312,0.001438,0.001513,0.000928,0.000466,0.000374,0.000410,0.000492,0.000515,0.000367,0.000230,0.000171,0.000169,0.000209,0.000236,0.000189,0.000194,0.000205,0.000196,0.000184,0.000168,0.000186,0.000223,0.000241,0.000197,0.000144,0.000113,0.000100,0.000101,0.000097,0.000088,0.000075,0.000067,0.000060,0.000051,0.000044,0.000040,0.000036,0.000034,0.000033,0.000033,0.000033,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giahh67 ftgen 0,0,4096,10,0.836515,0.800602,0.036351,0.016206,0.006383,0.007973,0.003273,0.011820,0.001230,0.001857,0.003725,0.004792,0.002586,0.008972,0.005518,0.007339,0.005207,0.006633,0.005670,0.005010,0.005379,0.002919,0.004501,0.004490,0.002854,0.003643,0.005161,0.002824,0.002183,0.001438,0.001060,0.000978,0.001138,0.001729,0.001501,0.001117,0.000626,0.000578,0.000512,0.000294,0.000255,0.000311,0.000397,0.000310,0.000205,0.000188,0.000179,0.000164,0.000172,0.000143,0.000115,0.000095,0.000084,0.000081,0.000080,0.000080,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giwavemapAhh ftgen 0,0,128,-27, 0,0, 43,0, 49,1, 55,2, 61,3, 67,4, 127,4 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
gitabs4morfAhh ftgen 0,0,8,-2,giahh43,giahh49,giahh55,giahh61,giahh67,giahh67,giahh67,giahh67 | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; HORN P | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
giHornP38 ftgen 0,0,4096,10,0.045737,0.148188,0.335691,0.493464,0.710665,0.765723,0.694286,0.628629,0.521398,0.428206,0.365416,0.306040,0.298023,0.254152,0.201721,0.154086,0.161771,0.146790,0.124044,0.110268,0.091099,0.076808,0.057743,0.042724,0.042724 | |||
giHornP50 ftgen 0,0,4096,10,0.280951,0.717837,0.823404,0.588908,0.394696,0.286430,0.176355,0.118365,0.064524,0.033209,0.016001,0.004104,0.004396,0.002069,0.002350,0.001903,0.001098,0.001262,0.001129,0.000906,0.000543,0.000575,0.000427,0.000355,0.000355 | |||
giHornP62 ftgen 0,0,4096,10,0.495327,0.909763,0.613398,0.368832,0.202553,0.124640,0.046586,0.011810,0.012510,0.011370,0.006659,0.004564,0.002331,0.001790,0.000667,0.000538,0.000352,0.000302,0.000558,0.000794,0.000797,0.000331,0.000342,0.000389,0.000389 | |||
giHornP74 ftgen 0,0,4096,10,0.796534,0.226262,0.060526,0.013273,0.003161,0.001015,0.001071,0.000595,0.000191,0.000337,0.000199,0.000173,0.000183,0.000187,0.000105,0.000113,0.000156,0.000119,0.000098,0.000067,0.000066,0.000064,0.000054,0.000043,0.000043 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
giwavemapHornP ftgen 0,0,128,-27, 0,0, 38,0, 50,1, 62,2, 74,3, 127,3 | |||
gitabs4morfHornP ftgen 0,0,4,-2,giHornP38,giHornP50,giHornP62,giHornP74 | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; HORN F | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
giHornF38 ftgen 0,0,4096,10,0.150333,0.205756,0.869097,0.723941,0.707935,0.116871,0.238125,0.330962,0.443031,0.325212,0.131256,0.267361,0.273576,0.146568,0.209758,0.158564,0.179271,0.084668,0.112177,0.118845,0.124993,0.096945,0.128906,0.125534,0.125534 | |||
giHornF50 ftgen 0,0,4096,10,0.348154,0.319965,0.418661,0.396206,0.046368,0.198167,0.035091,0.107400,0.035358,0.066696,0.053722,0.045581,0.066494,0.109943,0.059354,0.050001,0.123615,0.052990,0.032207,0.039448,0.051629,0.014079,0.014571,0.017523,0.017523 | |||
giHornF62 ftgen 0,0,4096,10,0.449507,0.544173,0.108516,0.300530,0.163030,0.351952,0.171674,0.202505,0.098101,0.066418,0.044492,0.071036,0.074224,0.064911,0.027430,0.041991,0.022245,0.017689,0.013130,0.020853,0.016891,0.038363,0.017524,0.016841,0.016841 | |||
giHornF74 ftgen 0,0,4096,10,0.923831,0.259141,0.262670,0.175552,0.089346,0.073056,0.055113,0.031968,0.027964,0.033656,0.035303,0.010920,0.019420,0.013447,0.012944,0.006111,0.007041,0.003864,0.005702,0.004615,0.003076,0.001589,0.002756,0.001234,0.001234 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
giwavemapHornF ftgen 0,0,128,-27, 0,0, 38,0, 50,1, 62,2, 74,3, 127,3 | |||
gitabs4morfHornF ftgen 0,0,4,-2,giHornF38,giHornF50,giHornF62,giHornF74 | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; BASS TROMBONE (HARMON MUTE) | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
giharmon33 ftgen 0,0,4096,10,0.875348,0.155770,0.111939,0.181031,0.355046,0.044216,0.039025,0.036422,0.074587,0.050492,0.042464,0.079868,0.121542,0.243299,0.253642,0.263571,0.422410,0.624259,0.742333,0.514304,0.760971,0.444426,0.456583,0.195508,0.070084,0.032239,0.029621,0.058523,0.044442,0.057324,0.077997,0.047218,0.046215,0.023786,0.017859,0.017652,0.012055,0.009595,0.009020,0.006000,0.004077,0.004950,0.004543,0.003196,0.002659,0.003533,0.004156,0.003745,0.002471,0.002264,0.003050,0.002614,0.001944,0.001709,0.001717,0.001934,0.002458,0.003618,0.004915,0.004334,0.003733,0.003804,0.003489,0.002755,0.002427,0.002273,0.002577,0.002702,0.002483,0.002059,0.002016,0.002214,0.002215,0.001947,0.001952,0.002236,0.002357,0.002417,0.002406,0.002309,0.002176,0.002227,0.002527,0.002649,0.002448,0.002165,0.002175,0.002322,0.002371,0.002202,0.001845,0.001620,0.001626,0.001927,0.002537,0.003091,0.003220,0.003231,0.003453,0.003751 | |||
giharmon34 ftgen 0,0,4096,10,0.443604,0.040301,0.041393,0.115682,0.622143,0.055550,0.073493,0.090539,0.109410,0.039052,0.138611,0.161174,0.290931,0.212197,0.410393,0.749789,0.917784,1.375368,0.934044,0.781551,0.356416,0.290222,0.181279,0.061983,0.081959,0.039112,0.044805,0.058922,0.022274,0.022731,0.038966,0.025063,0.031263,0.030753,0.032383,0.045020,0.032652,0.027144,0.033411,0.020397,0.015121,0.017071,0.014804,0.013636,0.012149,0.012930,0.014231,0.012821,0.011342,0.009001,0.008587,0.006187,0.005928,0.008836,0.012118,0.012242,0.009968,0.009445,0.006852,0.004519,0.002870,0.001975,0.001680,0.001593,0.001930,0.002744,0.003798,0.003938,0.003311,0.003174,0.003465,0.004740,0.006267,0.006620,0.006071,0.005274,0.005318,0.005795,0.006440,0.007152,0.007792,0.008192,0.007304,0.005765,0.004397,0.003369,0.002855,0.003059,0.003731,0.004377,0.004923,0.005763,0.006567,0.006834,0.006780,0.006575,0.005922,0.004714,0.003481,0.002696 | |||
giharmon36 ftgen 0,0,4096,10,0.934870,0.094639,0.263729,0.103300,0.556951,0.047384,0.167404,0.119804,0.122737,0.048833,0.154640,0.111318,0.302046,0.230750,0.517436,0.259307,0.354474,0.152230,0.109031,0.091431,0.071065,0.027335,0.037383,0.048534,0.033460,0.066084,0.041563,0.049933,0.029361,0.032804,0.017292,0.018054,0.023006,0.019576,0.018461,0.008645,0.007040,0.005924,0.005415,0.003713,0.003447,0.002816,0.003594,0.003583,0.002658,0.001561,0.001446,0.002347,0.003707,0.005343,0.007152,0.006970,0.005630,0.004404,0.002749,0.002098,0.002393,0.001708,0.001255,0.001150,0.001263,0.001445,0.001397,0.001331,0.001510,0.001783,0.001849,0.001576,0.001508,0.001400,0.001153,0.000940,0.000797,0.000734,0.000677,0.000581,0.000531,0.000644,0.000829,0.000891,0.000846,0.000864,0.000921,0.000980,0.000945,0.000994,0.001078,0.001054,0.000936,0.000863,0.000855,0.000855,0.000757,0.000683,0.000687,0.000667,0.000654,0.000639,0.000610,0.000586 | |||
giharmon38 ftgen 0,0,4096,10,0.275894,0.119750,0.302577,0.931731,0.080509,0.210351,0.194035,0.223110,0.137304,0.197845,0.327194,0.349699,0.653623,0.881895,0.939789,0.691399,0.569520,0.195895,0.129254,0.040633,0.094914,0.073078,0.145254,0.105583,0.162773,0.080818,0.095817,0.054832,0.079542,0.059357,0.055196,0.036903,0.021942,0.019084,0.020925,0.014726,0.013288,0.012653,0.010311,0.008738,0.008159,0.006852,0.004697,0.006565,0.011392,0.016788,0.018297,0.017879,0.015021,0.009463,0.005643,0.005105,0.004046,0.004010,0.005012,0.004282,0.003406,0.003104,0.003782,0.005116,0.003975,0.002459,0.001720,0.001650,0.002105,0.002882,0.003694,0.004103,0.003070,0.001947,0.001446,0.001258,0.001170,0.001349,0.001876,0.002582,0.002853,0.002391,0.002009,0.001887,0.001808,0.001514,0.001333,0.001265,0.001131,0.001082,0.001169,0.001278,0.001225,0.001070,0.000913,0.000800,0.000767,0.000799,0.000824,0.000902,0.001003,0.001061,0.001115,0.001185 | |||
giharmon39 ftgen 0,0,4096,10,0.215899,0.043569,0.155862,0.915877,0.029041,0.085938,0.096861,0.027476,0.042161,0.045780,0.077178,0.073681,0.292899,0.268475,0.052870,0.047343,0.020451,0.005226,0.004051,0.013123,0.014796,0.018766,0.016900,0.010549,0.011430,0.006502,0.006649,0.009883,0.007521,0.005298,0.002202,0.001505,0.001267,0.001744,0.001762,0.001880,0.001510,0.001300,0.001551,0.001113,0.001344,0.002682,0.004692,0.003899,0.003280,0.002211,0.001351,0.000889,0.000702,0.000681,0.000890,0.000985,0.000873,0.001082,0.000955,0.001016,0.001084,0.000930,0.000860,0.000656,0.000607,0.000724,0.000840,0.000859,0.000735,0.000640,0.000553,0.000553,0.000664,0.000694,0.000736,0.000846,0.000794,0.000763,0.000690,0.000686,0.000654,0.000659,0.000732,0.000714,0.000736,0.000748,0.000741,0.000620,0.000514,0.000484,0.000540,0.000707,0.000958,0.001141,0.001115,0.001012,0.000967,0.000906,0.000789,0.000653,0.000550,0.000512,0.000523,0.000521 | |||
giharmon40 ftgen 0,0,4096,10,0.369055,0.131998,0.314332,0.267587,0.083279,0.197505,0.246057,0.188865,0.247543,0.447904,0.311578,0.951654,0.440089,0.497270,0.248691,0.084689,0.024288,0.043815,0.092522,0.149863,0.063883,0.137365,0.089276,0.106339,0.067676,0.038080,0.044355,0.030311,0.016710,0.009404,0.009432,0.010647,0.009912,0.005595,0.004133,0.004025,0.003963,0.005248,0.007884,0.011332,0.009707,0.007295,0.004440,0.003429,0.004551,0.003060,0.002116,0.001763,0.001514,0.002027,0.002310,0.003069,0.002321,0.001811,0.001688,0.002021,0.001926,0.001770,0.001680,0.001534,0.001470,0.001491,0.001508,0.001391,0.001324,0.001260,0.001327,0.001406,0.001495,0.001338,0.001292,0.001395,0.001369,0.001408,0.001332,0.001258,0.001360,0.001502,0.001505,0.001392,0.001389,0.001469,0.001354,0.001230,0.001168,0.001229,0.001270,0.001296,0.001299,0.001384,0.001495,0.001524,0.001735,0.002015,0.002003,0.001730,0.001490,0.001313,0.001201,0.001201 | |||
giharmon41 ftgen 0,0,4096,10,0.338560,0.097872,0.404630,0.072213,0.101149,0.122271,0.088489,0.206809,0.295859,0.455726,0.802773,0.963091,0.671085,0.510166,0.125095,0.028121,0.044968,0.022808,0.033809,0.020551,0.006760,0.009093,0.007270,0.015331,0.017393,0.011093,0.005257,0.003771,0.002662,0.001862,0.002670,0.003093,0.003083,0.002636,0.001647,0.002030,0.003615,0.005828,0.005317,0.003389,0.002213,0.002189,0.002077,0.001392,0.000953,0.000899,0.000930,0.001189,0.001829,0.001616,0.001463,0.001355,0.001413,0.001368,0.001472,0.001201,0.000951,0.000804,0.000750,0.000839,0.001162,0.001540,0.001515,0.001241,0.001296,0.001396,0.001129,0.000785,0.000579,0.000562,0.000702,0.000938,0.001154,0.001155,0.001088,0.001192,0.001489,0.001693,0.001713,0.001549,0.001472,0.001606,0.001560,0.001278,0.001057,0.001106,0.001217,0.001127,0.001002,0.000959,0.000869,0.000789,0.000751,0.000712,0.000744,0.000874,0.001032,0.001112,0.001055,0.001033 | |||
giharmon43 ftgen 0,0,4096,10,0.135645,0.120943,0.979143,0.023489,0.114683,0.114072,0.130730,0.180948,0.281652,0.683720,0.964428,0.306787,0.213682,0.058648,0.025209,0.025596,0.047105,0.038846,0.017756,0.006258,0.005601,0.010206,0.010689,0.004381,0.002744,0.002982,0.002040,0.002284,0.001570,0.001528,0.002115,0.001649,0.002514,0.003304,0.005338,0.002902,0.001301,0.000713,0.000665,0.000652,0.000695,0.000698,0.000700,0.001056,0.000728,0.000485,0.000534,0.000633,0.000450,0.000429,0.000625,0.000827,0.001012,0.001160,0.001256,0.001213,0.001133,0.001362,0.001533,0.001305,0.001367,0.001616,0.001627,0.001417,0.001458,0.001637,0.001588,0.001552,0.001476,0.001327,0.001247,0.001076,0.000857,0.000699,0.000670,0.000726,0.000750,0.000854,0.000976,0.000936,0.000830,0.000768,0.000683,0.000599,0.000530,0.000491,0.000451,0.000398,0.000378,0.000368,0.000380,0.000455,0.000533,0.000535,0.000501,0.000464,0.000470,0.000496,0.000480,0.000442 | |||
giharmon45 ftgen 0,0,4096,10,0.244591,0.267325,0.126930,0.136762,0.271635,0.312002,0.223921,0.477139,0.969260,0.621811,0.276235,0.133028,0.017955,0.053396,0.048589,0.033493,0.018488,0.024467,0.024072,0.021974,0.013672,0.005364,0.005982,0.003607,0.001893,0.001866,0.001242,0.001433,0.001334,0.002488,0.002930,0.001518,0.001627,0.002275,0.001495,0.001193,0.000972,0.000737,0.000811,0.001235,0.001057,0.000838,0.001036,0.001047,0.001114,0.001012,0.000995,0.001090,0.001298,0.001286,0.001257,0.001216,0.001222,0.001045,0.001114,0.001441,0.001842,0.001582,0.001233,0.001180,0.001395,0.001374,0.001319,0.001317,0.001143,0.001024,0.001053,0.001334,0.001740,0.001862,0.001603,0.001274,0.001051,0.001022,0.000939,0.000839,0.000784,0.000794,0.000787,0.000752,0.000772,0.000742,0.000760,0.000882,0.001044,0.001103,0.001124,0.001129,0.001259,0.001523,0.001689,0.001631,0.001499,0.001332,0.001219,0.001138,0.001037,0.000952,0.000828,0.000746 | |||
giharmon46 ftgen 0,0,4096,10,0.315815,0.844525,0.164412,0.451756,0.585703,0.518759,0.681565,0.411064,0.952335,0.494514,0.366224,0.049949,0.050057,0.056689,0.053659,0.035965,0.043860,0.032015,0.019827,0.005201,0.006601,0.005746,0.007203,0.005429,0.003518,0.004758,0.003756,0.007828,0.015721,0.006418,0.003773,0.007304,0.003491,0.004073,0.002821,0.001771,0.002371,0.001798,0.002341,0.002659,0.003029,0.001998,0.001673,0.001293,0.000985,0.001051,0.001602,0.002316,0.002076,0.001608,0.001182,0.001234,0.001509,0.002038,0.001745,0.001690,0.001788,0.002285,0.002474,0.002206,0.002242,0.002438,0.002520,0.003014,0.003823,0.004834,0.005921,0.005640,0.004222,0.003103,0.002822,0.003289,0.003754,0.003426,0.002719,0.002201,0.001856,0.001927,0.002461,0.002893,0.002831,0.002430,0.002388,0.002815,0.003393,0.003964,0.004124,0.003523,0.002801,0.002546,0.002599,0.002485,0.002105,0.001812,0.001794,0.001803,0.001606,0.001468,0.001509,0.001549 | |||
giharmon48 ftgen 0,0,4096,10,0.122676,0.220788,0.073432,0.127649,0.149907,0.310663,0.320023,0.888642,0.333339,0.133323,0.020148,0.021610,0.031312,0.019058,0.010338,0.008856,0.009259,0.004665,0.008040,0.006064,0.004765,0.002412,0.001080,0.002281,0.002107,0.003516,0.001246,0.000827,0.000714,0.001050,0.000701,0.000675,0.000523,0.000934,0.001128,0.001435,0.000766,0.000427,0.000568,0.000725,0.001140,0.001379,0.000939,0.000679,0.000677,0.000639,0.000687,0.000664,0.000490,0.000511,0.000557,0.000610,0.000728,0.001052,0.001004,0.000764,0.000789,0.000916,0.000909,0.001108,0.000978,0.000656,0.000487,0.000484,0.000484,0.000521,0.000592,0.000647,0.000545,0.000494,0.000588,0.000761,0.000868,0.000902,0.000912,0.000928,0.000781,0.000667,0.000669,0.000665,0.000649,0.000608,0.000541,0.000459,0.000419,0.000435,0.000481,0.000492,0.000493,0.000550,0.000622,0.000616,0.000575,0.000571,0.000566,0.000520,0.000445,0.000380,0.000345,0.000334 | |||
giharmon50 ftgen 0,0,4096,10,0.162293,0.952587,0.107970,0.148379,0.162877,0.302263,0.378248,0.526544,0.202053,0.019075,0.035439,0.025852,0.023804,0.025676,0.028522,0.013081,0.004084,0.002802,0.001949,0.002297,0.001565,0.001596,0.004229,0.004413,0.001504,0.001251,0.001021,0.001404,0.001139,0.001161,0.000682,0.000466,0.000926,0.000495,0.000656,0.000798,0.001105,0.000691,0.000515,0.000562,0.000460,0.000566,0.000474,0.000481,0.000452,0.000510,0.000694,0.000487,0.000439,0.000584,0.000605,0.000623,0.000670,0.000916,0.000792,0.000871,0.000636,0.000514,0.000540,0.000466,0.000488,0.000461,0.000448,0.000510,0.000642,0.000795,0.000743,0.000838,0.001039,0.001142,0.000966,0.000733,0.000659,0.000657,0.000595,0.000548,0.000480,0.000411,0.000427,0.000488,0.000580,0.000723,0.000773,0.000693,0.000563,0.000471,0.000412,0.000429,0.000481,0.000468,0.000408,0.000367,0.000352,0.000329,0.000288,0.000260,0.000253,0.000249,0.000251,0.000257 | |||
giharmon52 ftgen 0,0,4096,10,0.167672,0.198778,0.227405,0.284738,0.650198,0.940684,0.975647,0.268741,0.049829,0.071939,0.024052,0.019628,0.020109,0.016231,0.003867,0.003960,0.004551,0.001438,0.002545,0.005214,0.004055,0.001727,0.002282,0.002593,0.001856,0.002206,0.001924,0.000871,0.000924,0.001558,0.001059,0.001121,0.001112,0.001260,0.001747,0.001193,0.000757,0.001035,0.000862,0.000951,0.001089,0.001598,0.001563,0.001170,0.001427,0.001409,0.001130,0.001424,0.001095,0.000785,0.000800,0.001135,0.001025,0.001093,0.000966,0.001083,0.001357,0.001272,0.001103,0.001508,0.002036,0.001512,0.001143,0.001348,0.001716,0.001528,0.001151,0.000935,0.001007,0.001124,0.000930,0.000715,0.000611,0.000658,0.000759,0.000788,0.000734,0.000745,0.000773,0.000916,0.001069,0.001056,0.000942,0.000778,0.000676,0.000670,0.000675,0.000675,0.000644,0.000597,0.000550,0.000537,0.000555,0.000559,0.000525,0.000454,0.000404,0.000407,0.000442,0.000480 | |||
giharmon53 ftgen 0,0,4096,10,0.026511,0.043338,0.103983,0.172681,0.197084,0.979650,0.257547,0.017830,0.077807,0.064492,0.041376,0.053973,0.027216,0.006355,0.007006,0.001571,0.001221,0.001837,0.007442,0.004872,0.002662,0.002280,0.002188,0.001493,0.002889,0.002534,0.002305,0.002344,0.001085,0.001468,0.002010,0.002087,0.000876,0.000665,0.000602,0.000985,0.000607,0.000521,0.000609,0.000586,0.000566,0.000481,0.000501,0.000665,0.000626,0.000653,0.000579,0.000643,0.000690,0.000651,0.000432,0.000403,0.000504,0.000532,0.000598,0.000456,0.000369,0.000393,0.000370,0.000313,0.000265,0.000292,0.000299,0.000335,0.000381,0.000415,0.000449,0.000480,0.000399,0.000307,0.000245,0.000249,0.000338,0.000468,0.000545,0.000532,0.000495,0.000471,0.000476,0.000450,0.000388,0.000331,0.000297,0.000269,0.000233,0.000202,0.000188,0.000169,0.000158,0.000175,0.000208,0.000254,0.000316,0.000380,0.000433,0.000473,0.000499,0.000504,0.000472,0.000425 | |||
giharmon55 ftgen 0,0,4096,10,0.081729,0.021968,0.138971,0.239901,0.947997,0.478402,0.152261,0.093610,0.063734,0.039617,0.032944,0.006609,0.015447,0.010428,0.006706,0.002730,0.013404,0.010554,0.003963,0.002958,0.000885,0.000799,0.001120,0.001680,0.001729,0.001274,0.001362,0.000943,0.002299,0.001254,0.001112,0.000960,0.001034,0.000866,0.000912,0.000751,0.001101,0.000945,0.000888,0.000760,0.000758,0.000764,0.000797,0.000790,0.000657,0.000779,0.000816,0.000819,0.000797,0.000793,0.000830,0.000803,0.000678,0.000695,0.000912,0.000796,0.000686,0.000833,0.000798,0.000772,0.000941,0.000835,0.000815,0.000695,0.000533,0.000448,0.000405,0.000411,0.000492,0.000554,0.000576,0.000587,0.000573,0.000542,0.000560,0.000560,0.000557,0.000544,0.000547,0.000555,0.000551,0.000537,0.000544,0.000557,0.000533,0.000512,0.000499,0.000514,0.000548,0.000548,0.000539,0.000526,0.000511,0.000513,0.000513,0.000510,0.000506,0.000503,0.000507,0.000508 | |||
giharmon57 ftgen 0,0,4096,10,0.150966,0.141943,0.169272,0.391010,0.953809,0.119929,0.039950,0.075251,0.042294,0.016963,0.005858,0.005238,0.002857,0.003841,0.008582,0.001485,0.001148,0.002596,0.001639,0.001556,0.002197,0.001142,0.001112,0.001195,0.001136,0.001245,0.000909,0.001301,0.000937,0.000941,0.001212,0.001227,0.000900,0.000862,0.000883,0.000728,0.001073,0.001100,0.000883,0.001160,0.000948,0.000936,0.001199,0.000883,0.000791,0.000945,0.000697,0.000592,0.000626,0.000588,0.000617,0.000696,0.000684,0.000803,0.000743,0.000641,0.000514,0.000453,0.000480,0.000536,0.000586,0.000581,0.000619,0.000622,0.000602,0.000589,0.000589,0.000600,0.000582,0.000552,0.000553,0.000557,0.000549,0.000526,0.000512,0.000519,0.000533,0.000535,0.000547,0.000544,0.000539,0.000534,0.000524,0.000512,0.000502,0.000502,0.000502,0.000497,0.000480,0.000468,0.000466,0.000464,0.000461,0.000459,0.000463,0.000470,0.000477,0.000482,0.000483,0.000488 | |||
giharmon60 ftgen 0,0,4096,10,0.306985,0.126374,0.301596,0.969500,0.074344,0.009729,0.006039,0.004002,0.001666,0.001675,0.002331,0.000674,0.000730,0.000729,0.000758,0.000585,0.000577,0.000687,0.000657,0.001017,0.000768,0.000581,0.000549,0.000326,0.000290,0.000463,0.000666,0.000567,0.000312,0.000634,0.000665,0.000397,0.000264,0.000232,0.000286,0.000583,0.000629,0.000663,0.000354,0.000268,0.000259,0.000263,0.000303,0.000274,0.000231,0.000322,0.000471,0.000473,0.000488,0.000569,0.000596,0.000564,0.000445,0.000430,0.000473,0.000519,0.000490,0.000446,0.000488,0.000475,0.000372,0.000301,0.000312,0.000304,0.000374,0.000526,0.000614,0.000564,0.000443,0.000349,0.000321,0.000320,0.000292,0.000243,0.000210,0.000227,0.000301,0.000393,0.000452,0.000473,0.000454,0.000415,0.000375,0.000353,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giharmon62 ftgen 0,0,4096,10,0.969106,0.095726,0.196065,0.188016,0.005133,0.010386,0.004868,0.005030,0.003515,0.002819,0.002632,0.002361,0.001260,0.000235,0.000966,0.001186,0.001018,0.000871,0.001416,0.000300,0.000430,0.000824,0.000912,0.000810,0.000516,0.000452,0.000279,0.000463,0.000690,0.000443,0.000429,0.000374,0.000579,0.000876,0.000457,0.000456,0.000449,0.000577,0.000797,0.000538,0.000571,0.000564,0.000466,0.000418,0.000306,0.000321,0.000334,0.000294,0.000244,0.000204,0.000231,0.000265,0.000340,0.000422,0.000467,0.000400,0.000291,0.000221,0.000207,0.000236,0.000249,0.000246,0.000207,0.000188,0.000203,0.000210,0.000206,0.000193,0.000167,0.000155,0.000192,0.000247,0.000284,0.000296,0.000308,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giharmon64 ftgen 0,0,4096,10,0.361663,0.582855,0.979701,0.215161,0.118878,0.052107,0.013704,0.009061,0.004379,0.007958,0.002817,0.003129,0.003908,0.003040,0.002896,0.002083,0.002113,0.004424,0.003621,0.002331,0.002616,0.002100,0.002293,0.001878,0.002282,0.002077,0.002490,0.002088,0.001811,0.001576,0.001425,0.001407,0.001400,0.001482,0.001847,0.001816,0.001426,0.001730,0.001541,0.001272,0.001398,0.001231,0.001332,0.001350,0.001199,0.001258,0.001149,0.001243,0.001247,0.001156,0.001074,0.001049,0.001142,0.001143,0.001058,0.000978,0.000854,0.000777,0.000688,0.000751,0.000914,0.001100,0.001101,0.001029,0.001044,0.001018,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giharmon65 ftgen 0,0,4096,10,0.314097,0.342771,0.973682,0.028876,0.015118,0.012713,0.002418,0.005174,0.003787,0.002218,0.002249,0.001625,0.002664,0.001830,0.002581,0.001180,0.001626,0.001619,0.001315,0.001513,0.001344,0.001175,0.000964,0.001112,0.001416,0.001129,0.001190,0.001045,0.001248,0.001029,0.000799,0.000750,0.000815,0.000965,0.000955,0.000725,0.000652,0.000709,0.000801,0.000717,0.000786,0.000648,0.000597,0.000630,0.000744,0.000667,0.000613,0.000496,0.000535,0.000596,0.000603,0.000583,0.000599,0.000593,0.000594,0.000603,0.000579,0.000588,0.000623,0.000624,0.000595,0.000573,0.000574,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
giwavemapharmon ftgen 0,0,128,-27, 0,0, 33,0, 34,1, 36,2, 38,3, 39,3, 40,4, 41,5, 43,6, 45,7, 46,8, 48,9, 50,10, 52,11, 53,12, 55,13, 57,14, 60,15, 62,16, 64,17, 65,18, 127,18 | |||
gitabs4morfharmon ftgen 0,0,32,-2, giharmon33,giharmon34,giharmon36,giharmon38,giharmon39,giharmon40,giharmon41,giharmon43,giharmon45,giharmon46,giharmon48,giharmon50,giharmon52,giharmon53,giharmon55,giharmon57,giharmon60,giharmon62,giharmon64,giharmon65,giharmon65,giharmon65,giharmon65,giharmon65,giharmon65,giharmon65,giharmon65,giharmon65,giharmon65,giharmon65,giharmon65,giharmon65 | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; BASS TROMBONE (STRAIGHT MUTE) | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
giMute122 ftgen 0,0,4096,10,0.164339,0.102551,0.069563,0.138697,0.223728,0.265220,0.280256,0.332069,0.420578,0.494911,0.577300,0.438019,0.538305,0.547959,0.857117,0.773953,0.517366,0.523329,0.250443,0.159600,0.171983,0.125233,0.061672,0.045591,0.028822,0.029244,0.026342,0.016326,0.018016,0.016474,0.009454,0.006045,0.003657,0.004270,0.008585,0.014528,0.017452,0.019652,0.016908,0.013257,0.016063,0.015947,0.010616,0.009647,0.007357,0.006942,0.005472,0.008460,0.014247,0.013954,0.009828,0.009192,0.009759,0.008585,0.009964,0.012870,0.010975,0.007757,0.007624,0.008209,0.008005,0.007979,0.007726,0.007655,0.007795,0.007616,0.006725,0.005945,0.005229,0.004482,0.003678,0.003014,0.002618,0.002393,0.002731,0.003322,0.003436,0.002905,0.002194,0.001589,0.001214,0.001156,0.001328,0.001483,0.001561,0.001609,0.001696,0.001872,0.001908,0.002069,0.002367,0.002374,0.002130,0.001840,0.001674,0.001720,0.001812,0.001802,0.001732,0.001622 | |||
giMute123 ftgen 0,0,4096,10,0.168432,0.062246,0.078354,0.110195,0.129041,0.377921,0.282536,0.228004,0.524063,0.552904,0.492429,0.533439,0.241793,0.431759,0.960231,0.527526,0.457018,0.447269,0.173908,0.188096,0.117536,0.088623,0.038960,0.034631,0.040187,0.030976,0.019737,0.017966,0.018488,0.010201,0.006147,0.003826,0.005925,0.007905,0.007681,0.008607,0.015400,0.021169,0.020768,0.019478,0.013836,0.014839,0.014657,0.013690,0.013236,0.016605,0.019334,0.015552,0.016319,0.019658,0.016907,0.011550,0.009411,0.009522,0.010270,0.008678,0.008528,0.008212,0.007305,0.006920,0.008975,0.009992,0.007897,0.006576,0.006398,0.005486,0.004674,0.004082,0.003255,0.002525,0.001877,0.001735,0.002072,0.002316,0.002265,0.001877,0.001508,0.001299,0.001160,0.001268,0.001500,0.001614,0.001649,0.001544,0.001559,0.001869,0.002444,0.002837,0.002564,0.002224,0.002193,0.002264,0.002103,0.001864,0.001829,0.001964,0.001969,0.001708,0.001368,0.001146 | |||
giMute124 ftgen 0,0,4096,10,0.142996,0.083116,0.064144,0.232641,0.363109,0.345440,0.348866,0.301465,0.496059,0.590541,0.450344,0.611392,0.691633,0.939595,0.719155,0.655138,0.609154,0.236629,0.218778,0.154757,0.077033,0.074852,0.040400,0.038516,0.034596,0.023126,0.013779,0.015070,0.008541,0.005439,0.004834,0.008763,0.016084,0.025053,0.033607,0.047747,0.045648,0.045497,0.025409,0.021094,0.022069,0.038009,0.041759,0.063224,0.070253,0.055822,0.048910,0.048219,0.052210,0.039531,0.037339,0.030915,0.028370,0.038122,0.044865,0.047418,0.042297,0.039872,0.040218,0.036388,0.033231,0.028010,0.022884,0.020191,0.018026,0.013653,0.011148,0.010124,0.011725,0.014502,0.015977,0.012802,0.008969,0.006321,0.005229,0.005789,0.006897,0.007670,0.008699,0.009835,0.010769,0.010605,0.010601,0.010721,0.010749,0.010852,0.010291,0.009559,0.008597,0.007779,0.007284,0.006683,0.005906,0.005353,0.005322,0.005542,0.005543,0.005124,0.004449,0.003603 | |||
giMute125 ftgen 0,0,4096,10,0.044114,0.061305,0.127226,0.214587,0.248138,0.322022,0.289079,0.300066,0.219345,0.389034,0.679974,0.361926,0.905776,0.756147,0.724622,0.413971,0.233101,0.180408,0.145204,0.056539,0.046805,0.060866,0.050067,0.038355,0.032608,0.021983,0.011622,0.006955,0.011848,0.020388,0.023077,0.028897,0.039329,0.040006,0.051071,0.030060,0.035671,0.024931,0.038339,0.037708,0.058492,0.053593,0.037184,0.045630,0.043341,0.034029,0.031437,0.034031,0.025773,0.028039,0.030454,0.031458,0.031318,0.029135,0.028627,0.025452,0.021115,0.018088,0.014741,0.013689,0.012102,0.010087,0.009117,0.010501,0.012107,0.011147,0.008670,0.006054,0.004653,0.004909,0.005979,0.007571,0.008945,0.009279,0.009403,0.009990,0.010831,0.011229,0.011576,0.012198,0.011522,0.009582,0.007918,0.007133,0.006815,0.006874,0.006545,0.005823,0.005215,0.004793,0.004226,0.003549,0.002763,0.002034,0.001527,0.001275,0.001284,0.001501,0.001663,0.001513 | |||
giMute126 ftgen 0,0,4096,10,0.060196,0.079208,0.165018,0.403007,0.474143,0.259060,0.390988,0.369395,0.520597,0.147418,0.294315,0.719113,0.948583,0.911775,0.688364,0.284237,0.196457,0.197963,0.098875,0.075773,0.045829,0.020036,0.034330,0.015751,0.015028,0.009926,0.008781,0.011622,0.026268,0.030349,0.027636,0.033521,0.031042,0.039392,0.034047,0.037282,0.023269,0.035915,0.033496,0.040946,0.033303,0.030305,0.029753,0.029612,0.029870,0.024821,0.021197,0.017836,0.015201,0.014801,0.017255,0.016419,0.014400,0.014847,0.014196,0.013845,0.010243,0.007414,0.006884,0.005313,0.005125,0.006712,0.007001,0.005537,0.003835,0.002755,0.002847,0.003574,0.003940,0.004035,0.004370,0.004927,0.004830,0.004569,0.004559,0.004585,0.004513,0.003828,0.003072,0.002596,0.002377,0.002294,0.002087,0.001940,0.001859,0.001843,0.002114,0.002255,0.001844,0.001305,0.000970,0.000768,0.000670,0.000707,0.000807,0.000885,0.000924,0.000852,0.000694,0.000544 | |||
giMute127 ftgen 0,0,4096,10,0.052401,0.049320,0.080590,0.183766,0.164401,0.307439,0.388671,0.284459,0.318081,0.164443,0.441431,0.928201,0.876487,0.740904,0.324363,0.142732,0.081529,0.077495,0.028649,0.043648,0.038991,0.025075,0.013227,0.010195,0.011781,0.010501,0.016602,0.024255,0.023187,0.036495,0.057654,0.054268,0.048563,0.024903,0.054174,0.048040,0.071704,0.054365,0.049624,0.064806,0.092036,0.062098,0.048326,0.054051,0.039134,0.032416,0.036465,0.055694,0.042371,0.035750,0.021224,0.022257,0.011427,0.014694,0.009479,0.004552,0.013174,0.019261,0.013315,0.005818,0.001677,0.002772,0.003021,0.006297,0.007154,0.008171,0.010310,0.008506,0.007517,0.010904,0.006062,0.012403,0.007495,0.006084,0.005664,0.006058,0.004342,0.006256,0.008205,0.007899,0.006624,0.007878,0.003449,0.001680,0.000514,0.001804,0.002081,0.003443,0.004990,0.003472,0.003035,0.002319,0.001815,0.000843,0.001081,0.003090,0.002248,0.001877,0.002589,0.003743 | |||
giMute128 ftgen 0,0,4096,10,0.027923,0.100208,0.119497,0.305740,0.241671,0.283542,0.288061,0.232034,0.826888,0.407135,0.944943,0.754001,0.650071,0.360755,0.163788,0.199546,0.064667,0.047976,0.067193,0.033442,0.022636,0.018891,0.006473,0.006036,0.009904,0.016425,0.024814,0.044941,0.038557,0.069982,0.053960,0.007689,0.060655,0.019491,0.072831,0.052666,0.042308,0.055883,0.044001,0.027661,0.043229,0.023057,0.025173,0.028614,0.031240,0.027168,0.026598,0.023386,0.018674,0.009964,0.010171,0.008959,0.004421,0.009443,0.011811,0.008975,0.005444,0.002992,0.002577,0.004840,0.005217,0.007905,0.008254,0.008604,0.004473,0.009592,0.008601,0.005583,0.008098,0.005796,0.002345,0.007586,0.005015,0.004900,0.007488,0.005743,0.006825,0.002224,0.002742,0.001117,0.001857,0.001298,0.003169,0.002324,0.002382,0.001822,0.001779,0.001092,0.000752,0.001206,0.002075,0.000843,0.001972,0.001844,0.002893,0.002804,0.002542,0.001110,0.001376,0.000804 | |||
giMute129 ftgen 0,0,4096,10,0.014669,0.032320,0.102462,0.174664,0.169222,0.111331,0.339606,0.209754,0.217866,0.343088,0.891951,0.530957,0.472318,0.164643,0.165367,0.091601,0.090801,0.015419,0.039607,0.019025,0.012281,0.004714,0.002434,0.014861,0.038522,0.020090,0.049806,0.050949,0.061040,0.054492,0.035308,0.046103,0.018911,0.085037,0.066539,0.090037,0.115123,0.114020,0.059158,0.070988,0.070450,0.068910,0.054753,0.043435,0.030742,0.021866,0.024247,0.013293,0.017833,0.010515,0.011265,0.016382,0.023641,0.010420,0.007923,0.005015,0.009328,0.008929,0.010346,0.011125,0.009063,0.009311,0.010454,0.010758,0.009200,0.014939,0.006906,0.005195,0.007827,0.007531,0.008761,0.010132,0.008289,0.010958,0.004572,0.001934,0.001818,0.002642,0.002171,0.002199,0.002528,0.001704,0.001645,0.001110,0.000567,0.001256,0.000671,0.001415,0.003604,0.003233,0.002086,0.001933,0.001526,0.000662,0.001458,0.000497,0.000845,0.000680,0.001138,0.001279 | |||
giMute130 ftgen 0,0,4096,10,0.064908,0.079846,0.127850,0.445046,0.330968,0.420691,0.480533,0.374119,0.245280,0.729167,0.936260,0.749421,0.381456,0.247718,0.207617,0.116908,0.051373,0.019507,0.008564,0.025213,0.010576,0.007009,0.011265,0.017944,0.027208,0.040488,0.021178,0.046272,0.038151,0.021208,0.044463,0.023287,0.045981,0.030790,0.020921,0.015858,0.026172,0.019160,0.017080,0.011607,0.015955,0.006307,0.009311,0.006865,0.003784,0.003961,0.002271,0.002504,0.000904,0.002864,0.002378,0.001916,0.001531,0.000626,0.001045,0.001491,0.001672,0.000890,0.001666,0.001476,0.001501,0.000957,0.003007,0.001529,0.001037,0.001154,0.001031,0.000515,0.000881,0.000327,0.000467,0.000436,0.000280,0.000329,0.000454,0.000243,0.000168,0.000282,0.000948,0.000411,0.000184,0.000452,0.000360,0.000354,0.000193,0.000243,0.000591,0.000203,0.000418,0.000245,0.000193,0.000287,0.000162,0.000386,0.000147,0.000097,0.000291,0.000161,0.000222,0.000228 | |||
giMute131 ftgen 0,0,4096,10,0.068230,0.065611,0.217451,0.232412,0.188182,0.427625,0.292296,0.554990,0.340081,0.915514,0.522787,0.307999,0.162151,0.094669,0.056724,0.027329,0.011538,0.010489,0.008261,0.001997,0.007832,0.008040,0.029670,0.021346,0.029403,0.071206,0.042160,0.041297,0.059757,0.018923,0.105664,0.038842,0.027166,0.042666,0.031872,0.028802,0.030657,0.019773,0.024186,0.023554,0.016848,0.015145,0.013926,0.008132,0.010479,0.005103,0.002808,0.010621,0.007445,0.004301,0.001100,0.003068,0.003063,0.004833,0.003047,0.003019,0.003716,0.005204,0.002390,0.002979,0.001408,0.001568,0.001539,0.001833,0.002366,0.001838,0.000682,0.001960,0.000613,0.000686,0.000652,0.000399,0.000606,0.000602,0.000521,0.000455,0.000432,0.000091,0.000136,0.000332,0.000272,0.000302,0.000126,0.000375,0.000314,0.000203,0.000126,0.000237,0.000293,0.000291,0.000185,0.000182,0.000275,0.000263,0.000195,0.000151,0.000202,0.000294,0.000205,0.000198 | |||
giMute132 ftgen 0,0,4096,10,0.072458,0.092631,0.167684,0.302817,0.140977,0.255042,0.110714,0.344468,0.928686,0.667412,0.338258,0.200769,0.147649,0.065744,0.004582,0.023573,0.011837,0.008391,0.007660,0.014753,0.031615,0.027782,0.039431,0.047372,0.049448,0.013895,0.042049,0.032148,0.026316,0.026284,0.049745,0.043954,0.026083,0.037453,0.029582,0.022591,0.018017,0.013163,0.009816,0.004994,0.005845,0.002926,0.004507,0.007678,0.002757,0.002125,0.001498,0.002105,0.002073,0.003179,0.003552,0.003030,0.003107,0.003121,0.004471,0.001227,0.002877,0.002488,0.002740,0.003051,0.002796,0.002240,0.000296,0.000464,0.000414,0.001290,0.000687,0.001086,0.000537,0.000387,0.000130,0.000370,0.000092,0.000561,0.000559,0.000109,0.000094,0.000089,0.000290,0.000073,0.000183,0.000250,0.000318,0.000509,0.000515,0.000390,0.000503,0.000327,0.000338,0.000232,0.000327,0.000154,0.000173,0.000108,0.000092,0.000271,0.000089,0.000076,0.000105,0.000132 | |||
giMute133 ftgen 0,0,4096,10,0.171302,0.215302,0.554037,0.602813,0.500383,0.551353,0.792246,0.972277,0.915826,0.832314,0.393008,0.188469,0.087171,0.051938,0.057335,0.030089,0.018181,0.012795,0.030872,0.033984,0.097553,0.117375,0.088919,0.019750,0.074370,0.074970,0.077987,0.098699,0.118454,0.054334,0.051802,0.037932,0.045722,0.044228,0.016572,0.018704,0.013524,0.013398,0.003788,0.004323,0.010291,0.003069,0.001274,0.001330,0.002466,0.002824,0.003268,0.005612,0.003975,0.000819,0.002777,0.002460,0.002046,0.001584,0.002892,0.002346,0.003012,0.001881,0.000649,0.000801,0.000646,0.001523,0.001240,0.001310,0.000390,0.000248,0.000279,0.000518,0.000341,0.000512,0.000393,0.000190,0.000358,0.000126,0.000196,0.000125,0.000251,0.000327,0.000531,0.000833,0.000907,0.000336,0.000482,0.000237,0.000687,0.000266,0.000316,0.000368,0.000104,0.000129,0.000172,0.000171,0.000167,0.000055,0.000143,0.000116,0.000132,0.000198,0.000238,0.000318 | |||
giMute134 ftgen 0,0,4096,10,0.097133,0.173820,0.374605,0.474497,0.645937,0.376089,0.435327,0.976798,0.725285,0.297676,0.120366,0.069249,0.033502,0.014976,0.014214,0.011249,0.006081,0.003570,0.011892,0.014690,0.022764,0.024186,0.025001,0.044955,0.049727,0.048851,0.047898,0.053897,0.023052,0.038993,0.025427,0.027582,0.022350,0.021270,0.010750,0.009160,0.013099,0.002909,0.008796,0.006376,0.001857,0.001716,0.003061,0.001735,0.002918,0.004325,0.002877,0.003817,0.005184,0.003931,0.001995,0.004293,0.003739,0.003678,0.003158,0.002071,0.001133,0.000232,0.000323,0.001563,0.001268,0.000658,0.000426,0.000063,0.000421,0.000195,0.000767,0.000535,0.000446,0.000289,0.000184,0.000296,0.000288,0.000200,0.000535,0.000186,0.000733,0.000229,0.000412,0.000107,0.000166,0.000355,0.000312,0.000317,0.000354,0.000185,0.000132,0.000137,0.000206,0.000233,0.000262,0.000150,0.000123,0.000145,0.000145,0.000117,0.000140,0.000106,0.000135,0.000169 | |||
giMute135 ftgen 0,0,4096,10,0.179021,0.401691,0.729330,0.982922,0.746447,0.524380,0.900583,0.585038,0.953435,0.443166,0.289448,0.098763,0.031244,0.011392,0.020066,0.020371,0.036289,0.021837,0.044660,0.116353,0.070855,0.059093,0.066299,0.083923,0.069741,0.061417,0.033091,0.045547,0.029414,0.028975,0.021471,0.021629,0.010855,0.013960,0.004240,0.008225,0.009562,0.004312,0.001601,0.002687,0.001271,0.003054,0.004689,0.003158,0.006429,0.004058,0.005468,0.002640,0.001551,0.003253,0.003142,0.003027,0.001217,0.000340,0.000216,0.000471,0.000540,0.000381,0.000432,0.000182,0.000650,0.000176,0.000758,0.000323,0.000522,0.000156,0.000289,0.000185,0.000281,0.000179,0.000391,0.000461,0.000214,0.000356,0.000189,0.000425,0.000214,0.000172,0.000322,0.000195,0.000387,0.000323,0.000373,0.000170,0.000176,0.000048,0.000079,0.000049,0.000161,0.000129,0.000141,0.000083,0.000119,0.000204,0.000318,0.000410,0.000202,0.000283,0.000292,0.000127 | |||
giMute136 ftgen 0,0,4096,10,0.084007,0.199308,0.212901,0.389112,0.310014,0.209644,0.951984,0.633937,0.286005,0.146120,0.053652,0.047694,0.020100,0.016786,0.003816,0.018198,0.008332,0.020077,0.037293,0.016675,0.022299,0.027356,0.023496,0.049061,0.039132,0.026396,0.012922,0.017081,0.012583,0.010068,0.005525,0.002721,0.003104,0.004799,0.003308,0.002047,0.001239,0.002036,0.002197,0.002242,0.003547,0.004859,0.003272,0.001567,0.002063,0.002229,0.001760,0.001286,0.001961,0.000541,0.000366,0.000986,0.000730,0.000861,0.000630,0.000616,0.000358,0.001058,0.000464,0.000438,0.000450,0.000487,0.000193,0.000559,0.000479,0.000260,0.000259,0.000887,0.000529,0.000258,0.000611,0.000375,0.000388,0.000092,0.000430,0.000337,0.000138,0.000312,0.000579,0.000492,0.000207,0.000330,0.000350,0.000212,0.000159,0.000387,0.000350,0.000158,0.000191,0.000374,0.000113,0.000150,0.000260,0.000156,0.000117,0.000208,0.000235,0.000105,0.000074,0.000268 | |||
giMute137 ftgen 0,0,4096,10,0.121187,0.301409,0.437255,0.488546,0.532406,0.556320,0.940536,0.612558,0.171145,0.078278,0.033359,0.039980,0.019198,0.003684,0.014541,0.021902,0.025869,0.028022,0.020078,0.018008,0.063141,0.040559,0.061443,0.025176,0.045882,0.030795,0.027823,0.023490,0.015819,0.011054,0.004279,0.008778,0.007683,0.002850,0.002807,0.001837,0.004594,0.006832,0.003882,0.006682,0.004472,0.002359,0.002653,0.002120,0.002271,0.001366,0.001048,0.000977,0.001563,0.000795,0.000741,0.000197,0.000435,0.000663,0.000303,0.000697,0.000460,0.000621,0.000388,0.000298,0.000103,0.000484,0.000378,0.000376,0.000296,0.000134,0.000043,0.000150,0.000155,0.000176,0.000187,0.000055,0.000111,0.000091,0.000143,0.000129,0.000153,0.000171,0.000204,0.000159,0.000206,0.000139,0.000065,0.000078,0.000107,0.000102,0.000128,0.000113,0.000157,0.000150,0.000078,0.000128,0.000144,0.000084,0.000114,0.000188,0.000043,0.000106,0.000116,0.000128 | |||
giMute138 ftgen 0,0,4096,10,0.137239,0.608302,0.333203,0.546467,0.231739,0.766708,0.950744,0.327806,0.160412,0.060869,0.019878,0.003953,0.008113,0.006915,0.028018,0.027245,0.043331,0.020302,0.014454,0.025972,0.026882,0.018782,0.017822,0.013846,0.010287,0.009995,0.005808,0.004941,0.003243,0.000812,0.002013,0.001670,0.000819,0.000666,0.000772,0.000298,0.000436,0.000772,0.000741,0.000154,0.001321,0.000422,0.000226,0.000631,0.000439,0.000344,0.000337,0.000336,0.000616,0.000238,0.000312,0.000215,0.000181,0.000430,0.000292,0.000227,0.000331,0.000311,0.000246,0.000311,0.000279,0.000324,0.000208,0.000103,0.000266,0.000302,0.000310,0.000240,0.000310,0.000296,0.000228,0.000305,0.000203,0.000181,0.000235,0.000154,0.000238,0.000155,0.000185,0.000226,0.000170,0.000202,0.000202,0.000228,0.000150,0.000178,0.000239,0.000187,0.000194,0.000253,0.000070,0.000165,0.000223,0.000127,0.000156,0.000160,0.000180,0.000163,0.000129,0.000224 | |||
giMute139 ftgen 0,0,4096,10,0.061443,0.238708,0.356688,0.269787,0.339649,0.912187,0.776022,0.165931,0.073909,0.021161,0.016878,0.008990,0.003708,0.022300,0.041143,0.038233,0.004859,0.023579,0.053718,0.052003,0.042268,0.022601,0.022660,0.029648,0.019517,0.017414,0.011974,0.004870,0.011305,0.003101,0.000546,0.002006,0.003619,0.004048,0.005624,0.003647,0.002198,0.002634,0.003291,0.001943,0.000613,0.000545,0.000250,0.000451,0.000789,0.000299,0.000410,0.000212,0.000138,0.000424,0.000415,0.000404,0.000244,0.000269,0.000335,0.000329,0.000230,0.000373,0.000400,0.000370,0.000260,0.000376,0.000293,0.000187,0.000119,0.000256,0.000177,0.000244,0.000278,0.000293,0.000302,0.000158,0.000215,0.000196,0.000203,0.000167,0.000136,0.000170,0.000168,0.000137,0.000166,0.000168,0.000160,0.000177,0.000247,0.000183,0.000197,0.000135,0.000162,0.000164,0.000186,0.000121,0.000206,0.000166,0.000144,0.000145,0.000141,0.000122,0.000131,0.000148 | |||
giMute140 ftgen 0,0,4096,10,0.171458,0.486737,0.414556,0.287720,0.507039,0.974434,0.387302,0.180263,0.044683,0.029233,0.014770,0.003589,0.009392,0.033786,0.054370,0.010033,0.024497,0.035533,0.046495,0.020949,0.024322,0.023346,0.018462,0.011212,0.009184,0.003515,0.005537,0.002905,0.001147,0.001777,0.002912,0.002534,0.003007,0.002041,0.002109,0.001352,0.001160,0.001111,0.000145,0.000433,0.000205,0.000056,0.000347,0.000268,0.000294,0.000170,0.000469,0.000118,0.000167,0.000252,0.000207,0.000132,0.000371,0.000145,0.000293,0.000072,0.000271,0.000135,0.000201,0.000141,0.000204,0.000171,0.000237,0.000126,0.000167,0.000093,0.000231,0.000074,0.000160,0.000043,0.000250,0.000055,0.000217,0.000066,0.000199,0.000066,0.000231,0.000104,0.000233,0.000061,0.000246,0.000078,0.000219,0.000099,0.000254,0.000073,0.000200,0.000053,0.000175,0.000057,0.000197,0.000066,0.000126,0.000068,0.000163,0.000069,0.000139,0.000114,0.000270,0.000106 | |||
giMute141 ftgen 0,0,4096,10,0.096700,0.501938,0.304973,0.388545,0.605784,0.973491,0.310298,0.166062,0.031823,0.020041,0.008197,0.018099,0.031406,0.032118,0.028621,0.035283,0.026152,0.031724,0.045821,0.032749,0.023933,0.009329,0.006590,0.003520,0.002035,0.005414,0.003178,0.001420,0.002462,0.001216,0.000800,0.002760,0.002395,0.001093,0.001088,0.001647,0.001527,0.000979,0.001163,0.001119,0.001071,0.001064,0.001131,0.001297,0.001070,0.001080,0.000990,0.000967,0.000985,0.001105,0.000916,0.000726,0.000869,0.000896,0.000931,0.000845,0.000797,0.000762,0.000805,0.000802,0.000683,0.000685,0.000708,0.000714,0.000719,0.000727,0.000634,0.000711,0.000686,0.000637,0.000694,0.000701,0.000592,0.000664,0.000534,0.000558,0.000681,0.000688,0.000614,0.000609,0.000647,0.000479,0.000513,0.000489,0.000396,0.000420,0.000504,0.000454,0.000492,0.000467,0.000503,0.000515,0.000470,0.000401,0.000502,0.000592,0.000567,0.000411,0.000453,0.000449 | |||
giMute142 ftgen 0,0,4096,10,0.079836,0.330689,0.372144,0.493873,0.925375,0.694151,0.118777,0.028983,0.015396,0.009622,0.001526,0.002627,0.008783,0.011024,0.010140,0.015272,0.009621,0.006265,0.004497,0.003760,0.002472,0.001108,0.000363,0.000521,0.000643,0.000834,0.000511,0.000843,0.000434,0.000735,0.001056,0.000991,0.001287,0.000997,0.000751,0.000669,0.000309,0.000891,0.000656,0.000613,0.000705,0.000663,0.000676,0.000561,0.000583,0.000611,0.000611,0.000702,0.000495,0.000478,0.000451,0.000393,0.000461,0.000506,0.000433,0.000473,0.000465,0.000454,0.000425,0.000361,0.000423,0.000458,0.000385,0.000422,0.000473,0.000380,0.000405,0.000421,0.000338,0.000379,0.000351,0.000358,0.000335,0.000353,0.000378,0.000372,0.000313,0.000331,0.000343,0.000315,0.000320,0.000280,0.000296,0.000226,0.000364,0.000296,0.000272,0.000282,0.000254,0.000289,0.000277,0.000204,0.000220,0.000269,0.000299,0.000321,0.000450,0.000259,0.000266,0.000435 | |||
giMute143 ftgen 0,0,4096,10,0.093603,0.658042,0.988507,0.565236,0.957972,0.360885,0.102049,0.051660,0.027922,0.005483,0.010335,0.012495,0.003673,0.003952,0.012964,0.008898,0.005397,0.006281,0.001252,0.006122,0.003828,0.000827,0.003226,0.002089,0.001925,0.000243,0.002872,0.002421,0.003325,0.002270,0.001755,0.001168,0.001149,0.000770,0.000928,0.000937,0.000720,0.000406,0.000688,0.000732,0.000790,0.000819,0.000398,0.000728,0.000703,0.001198,0.000151,0.000857,0.000600,0.000571,0.000660,0.000529,0.000450,0.000520,0.000520,0.000470,0.000463,0.000462,0.000454,0.000347,0.000590,0.000427,0.000210,0.000402,0.000401,0.000381,0.000525,0.000294,0.000410,0.000335,0.000296,0.000348,0.000580,0.000399,0.000186,0.000198,0.000288,0.000442,0.000411,0.000234,0.000356,0.000386,0.000271,0.000338,0.000271,0.000303,0.000385,0.000352,0.000226,0.000193,0.000103,0.000388,0.000349,0.000222,0.000208,0.000266,0.000232,0.000314,0.000425,0.000268 | |||
giMute144 ftgen 0,0,4096,10,0.127739,0.412859,0.669901,0.617303,0.972749,0.358440,0.065748,0.045528,0.010129,0.008737,0.005631,0.028396,0.004839,0.008872,0.006019,0.011096,0.006903,0.003885,0.004722,0.003204,0.000936,0.002573,0.001532,0.001369,0.001172,0.001160,0.002432,0.000544,0.000609,0.001867,0.000966,0.001039,0.001031,0.000884,0.000753,0.000848,0.000659,0.000749,0.000579,0.000769,0.000665,0.000754,0.000781,0.000490,0.000653,0.000626,0.000524,0.000572,0.000539,0.000566,0.000514,0.000414,0.000441,0.000453,0.000417,0.000478,0.000444,0.000495,0.000551,0.000346,0.000475,0.000442,0.000477,0.000269,0.000501,0.000483,0.000442,0.000267,0.000338,0.000368,0.000470,0.000382,0.000335,0.000358,0.000341,0.000354,0.000345,0.000310,0.000359,0.000228,0.000299,0.000348,0.000336,0.000319,0.000275,0.000294,0.000244,0.000271,0.000232,0.000358,0.000237,0.000269,0.000247,0.000360,0.000301,0.000208,0.000223,0.000248,0.000270,0.000258 | |||
giMute145 ftgen 0,0,4096,10,0.172584,0.253006,0.499844,0.963093,0.599448,0.063091,0.027923,0.009556,0.005430,0.007267,0.030576,0.010839,0.007632,0.008691,0.007373,0.004773,0.004338,0.006857,0.003189,0.000319,0.002787,0.001103,0.001002,0.001076,0.001129,0.001241,0.000702,0.000657,0.000919,0.000769,0.000959,0.000576,0.000715,0.000619,0.000732,0.000611,0.000499,0.000600,0.000491,0.000700,0.000580,0.000348,0.000432,0.000611,0.000489,0.000494,0.000446,0.000425,0.000537,0.000395,0.000420,0.000348,0.000423,0.000452,0.000417,0.000289,0.000444,0.000331,0.000335,0.000289,0.000366,0.000340,0.000289,0.000333,0.000336,0.000346,0.000297,0.000305,0.000318,0.000278,0.000199,0.000327,0.000258,0.000240,0.000298,0.000311,0.000247,0.000309,0.000274,0.000297,0.000343,0.000148,0.000267,0.000204,0.000326,0.000251,0.000194,0.000230,0.000250,0.000186,0.000238,0.000251,0.000196,0.000238,0.000292,0.000233,0.000162,0.000197,0.000198,0.000193 | |||
giMute146 ftgen 0,0,4096,10,0.169930,0.357871,0.478870,0.971148,0.103667,0.027577,0.012460,0.004728,0.004455,0.018143,0.018903,0.009745,0.013588,0.009707,0.007034,0.005601,0.003105,0.000981,0.000341,0.001493,0.000631,0.000446,0.000832,0.000522,0.000996,0.001277,0.000334,0.000333,0.000435,0.000326,0.000323,0.000353,0.000202,0.000214,0.000190,0.000284,0.000171,0.000339,0.000329,0.000183,0.000124,0.000342,0.000303,0.000128,0.000091,0.000224,0.000255,0.000167,0.000148,0.000089,0.000154,0.000248,0.000151,0.000141,0.000149,0.000108,0.000284,0.000121,0.000121,0.000193,0.000201,0.000123,0.000226,0.000223,0.000154,0.000094,0.000194,0.000058,0.000146,0.000232,0.000097,0.000224,0.000132,0.000062,0.000163,0.000214,0.000246,0.000418,0.000139,0.000221,0.000100,0.000095,0.000131,0.000152,0.000158,0.000051,0.000077,0.000080,0.000061,0.000131,0.000109,0.000055,0.000120,0.000091,0.000080,0.000081,0.000120,0.000053,0.000045,0.000123 | |||
giMute147 ftgen 0,0,4096,10,0.175950,0.306151,0.921267,0.803899,0.232506,0.029817,0.015312,0.002411,0.010177,0.008768,0.003962,0.004998,0.003485,0.001495,0.002390,0.001727,0.000838,0.000237,0.000572,0.000579,0.000740,0.001153,0.000286,0.000378,0.000226,0.000269,0.000314,0.000265,0.000200,0.000117,0.000250,0.000150,0.000183,0.000079,0.000168,0.000177,0.000049,0.000188,0.000111,0.000136,0.000108,0.000088,0.000122,0.000076,0.000110,0.000119,0.000091,0.000137,0.000123,0.000074,0.000144,0.000146,0.000077,0.000035,0.000056,0.000085,0.000020,0.000095,0.000092,0.000051,0.000122,0.000063,0.000147,0.000073,0.000076,0.000045,0.000098,0.000114,0.000063,0.000075,0.000037,0.000125,0.000019,0.000072,0.000077,0.000087,0.000132,0.000061,0.000112,0.000071,0.000050,0.000051,0.000054,0.000046,0.000107,0.000026,0.000027,0.000021,0.000035,0.000042,0.000030,0.000041,0.000038,0.000047,0.000015,0.000021,0.000032,0.000120,0.000147,0.000238 | |||
giMute148 ftgen 0,0,4096,10,0.546831,0.588315,0.974745,0.966438,0.134855,0.030603,0.009346,0.000932,0.030580,0.012583,0.020113,0.009766,0.016236,0.007109,0.004226,0.002316,0.001376,0.000358,0.001380,0.001135,0.000319,0.000940,0.000401,0.000703,0.000385,0.000515,0.000292,0.000252,0.000145,0.000137,0.000403,0.000278,0.000292,0.000275,0.000222,0.000110,0.000160,0.000085,0.000217,0.000270,0.000172,0.000158,0.000177,0.000095,0.000182,0.000067,0.000232,0.000159,0.000178,0.000150,0.000206,0.000086,0.000273,0.000112,0.000141,0.000195,0.000084,0.000079,0.000246,0.000201,0.000063,0.000129,0.000125,0.000117,0.000158,0.000162,0.000192,0.000121,0.000175,0.000267,0.000096,0.000179,0.000039,0.000074,0.000268,0.000160,0.000033,0.000069,0.000065,0.000055,0.000088,0.000054,0.000142,0.000087,0.000045,0.000095,0.000026,0.000039,0.000075,0.000073,0.000067,0.000054,0.000068,0.000091,0.000101,0.000092,0.000171,0.000084,0.000049,0.000055 | |||
giMute149 ftgen 0,0,4096,10,0.294629,0.975075,0.694387,0.796446,0.188314,0.013147,0.006022,0.018607,0.064160,0.026936,0.065686,0.065969,0.031796,0.020120,0.015238,0.003443,0.002738,0.001360,0.003362,0.001182,0.001135,0.002047,0.001013,0.000558,0.000429,0.000717,0.000504,0.000555,0.000624,0.000479,0.000343,0.000421,0.000606,0.000462,0.000385,0.000445,0.000230,0.000176,0.000301,0.000222,0.000323,0.000195,0.000306,0.000246,0.000307,0.000237,0.000215,0.000210,0.000380,0.000241,0.000377,0.000152,0.000491,0.000197,0.000367,0.000186,0.000204,0.000108,0.000304,0.000260,0.000093,0.000231,0.000163,0.000112,0.000185,0.000239,0.000226,0.000179,0.000200,0.000203,0.000175,0.000088,0.000156,0.000218,0.000201,0.000222,0.000100,0.000212,0.000151,0.000114,0.000168,0.000167,0.000170,0.000170,0.000116,0.000205,0.000116,0.000133,0.000139,0.000176,0.000154,0.000145,0.000119,0.000095,0.000085,0.000125,0.000145,0.000106,0.000145,0.000141 | |||
giMute150 ftgen 0,0,4096,10,0.594912,0.608509,0.961469,0.229985,0.033626,0.009789,0.002734,0.011904,0.013878,0.018699,0.018956,0.006098,0.006134,0.002889,0.000518,0.000310,0.000591,0.000264,0.000257,0.000698,0.000478,0.000286,0.000276,0.000212,0.000349,0.000257,0.000272,0.000224,0.000177,0.000174,0.000082,0.000176,0.000161,0.000172,0.000230,0.000066,0.000165,0.000161,0.000152,0.000109,0.000094,0.000130,0.000185,0.000186,0.000258,0.000200,0.000154,0.000204,0.000184,0.000157,0.000047,0.000131,0.000123,0.000097,0.000062,0.000144,0.000118,0.000149,0.000134,0.000157,0.000198,0.000063,0.000156,0.000144,0.000094,0.000105,0.000096,0.000093,0.000113,0.000081,0.000076,0.000079,0.000049,0.000061,0.000040,0.000104,0.000079,0.000022,0.000068,0.000078,0.000072,0.000063,0.000085,0.000086,0.000053,0.000080,0.000082,0.000054,0.000046,0.000081,0.000075,0.000056,0.000061,0.000025,0.000072,0.000042,0.000050,0.000054,0.000053,0.000068 | |||
giMute151 ftgen 0,0,4096,10,0.206347,0.510370,0.950258,0.127507,0.010206,0.002549,0.001810,0.012483,0.004635,0.004683,0.005187,0.003165,0.001760,0.000999,0.000554,0.000268,0.000624,0.000195,0.000027,0.000147,0.000141,0.000163,0.000117,0.000060,0.000105,0.000099,0.000067,0.000093,0.000160,0.000103,0.000140,0.000060,0.000090,0.000115,0.000051,0.000073,0.000045,0.000055,0.000143,0.000072,0.000114,0.000130,0.000048,0.000106,0.000081,0.000052,0.000096,0.000074,0.000050,0.000088,0.000108,0.000167,0.000065,0.000093,0.000168,0.000053,0.000085,0.000083,0.000061,0.000128,0.000058,0.000064,0.000040,0.000027,0.000100,0.000081,0.000054,0.000030,0.000036,0.000081,0.000048,0.000047,0.000067,0.000034,0.000037,0.000030,0.000021,0.000028,0.000043,0.000106,0.000063,0.000019,0.000039,0.000057,0.000021,0.000037,0.000026,0.000041,0.000039,0.000032,0.000024,0.000048,0.000021,0.000064,0.000037,0.000065,0.000049,0.000031,0.000048,0.000014 | |||
giMute152 ftgen 0,0,4096,10,0.718310,0.828992,0.971094,0.089148,0.007432,0.001882,0.006326,0.016275,0.013664,0.005083,0.004192,0.002987,0.000575,0.000244,0.000598,0.000195,0.000566,0.000394,0.000580,0.000162,0.000255,0.000166,0.000116,0.000132,0.000146,0.000108,0.000133,0.000237,0.000251,0.000229,0.000158,0.000127,0.000139,0.000150,0.000119,0.000043,0.000076,0.000198,0.000147,0.000151,0.000075,0.000073,0.000078,0.000098,0.000125,0.000095,0.000098,0.000053,0.000180,0.000068,0.000097,0.000168,0.000085,0.000055,0.000094,0.000084,0.000102,0.000047,0.000079,0.000083,0.000046,0.000050,0.000047,0.000066,0.000081,0.000049,0.000040,0.000040,0.000068,0.000075,0.000057,0.000054,0.000024,0.000106,0.000054,0.000084,0.000044,0.000058,0.000034,0.000045,0.000058,0.000029,0.000068,0.000046,0.000029,0.000029,0.000066,0.000045,0.000077,0.000038,0.000027,0.000035,0.000043,0.000036,0.000049,0.000024,0.000024,0.000045,0.000046,0.000034 | |||
giMute153 ftgen 0,0,4096,10,0.551061,0.501444,0.953401,0.068491,0.008520,0.012056,0.020903,0.021636,0.008585,0.007399,0.006298,0.001414,0.000788,0.000891,0.000358,0.000686,0.001110,0.000613,0.000691,0.000460,0.000664,0.000614,0.000565,0.000426,0.000472,0.000397,0.000391,0.000456,0.000378,0.000437,0.000434,0.000310,0.000368,0.000415,0.000400,0.000343,0.000353,0.000349,0.000357,0.000326,0.000313,0.000231,0.000257,0.000212,0.000281,0.000273,0.000286,0.000207,0.000174,0.000326,0.000097,0.000332,0.000115,0.000149,0.000211,0.000305,0.000186,0.000198,0.000220,0.000141,0.000131,0.000182,0.000188,0.000186,0.000182,0.000117,0.000163,0.000173,0.000185,0.000121,0.000186,0.000073,0.000203,0.000192,0.000150,0.000147,0.000131,0.000138,0.000145,0.000135,0.000111,0.000135,0.000109,0.000125,0.000126,0.000121,0.000105,0.000083,0.000102,0.000109,0.000069,0.000107,0.000148,0.000139,0.000126,0.000096,0.000101,0.000123,0.000104,0.000104 | |||
giMute154 ftgen 0,0,4096,10,0.965465,0.238341,0.801452,0.050222,0.006640,0.011475,0.012533,0.012724,0.004704,0.006848,0.004228,0.001130,0.001409,0.001463,0.000398,0.000800,0.000513,0.001091,0.001100,0.000393,0.000445,0.000310,0.000446,0.000589,0.000358,0.000505,0.000369,0.000525,0.000346,0.000322,0.000437,0.000435,0.000262,0.000286,0.000307,0.000308,0.000358,0.000350,0.000347,0.000237,0.000076,0.000385,0.000217,0.000215,0.000278,0.000200,0.000335,0.000203,0.000329,0.000194,0.000066,0.000171,0.000388,0.000178,0.000305,0.000205,0.000231,0.000150,0.000228,0.000249,0.000070,0.000179,0.000201,0.000134,0.000138,0.000151,0.000193,0.000156,0.000150,0.000137,0.000132,0.000132,0.000128,0.000118,0.000138,0.000126,0.000141,0.000133,0.000148,0.000184,0.000137,0.000131,0.000138,0.000107,0.000100,0.000116,0.000121,0.000092,0.000099,0.000106,0.000080,0.000101,0.000102,0.000073,0.000094,0.000104,0.000107,0.000106,0.000093,0.000085 | |||
giMute155 ftgen 0,0,4096,10,0.938142,0.970313,0.508740,0.021568,0.001864,0.002894,0.002724,0.002263,0.003861,0.001793,0.000443,0.001267,0.000409,0.000899,0.000541,0.000180,0.000417,0.000464,0.000377,0.000359,0.000247,0.000485,0.000254,0.000339,0.000219,0.000319,0.000168,0.000254,0.000251,0.000160,0.000021,0.000183,0.000145,0.000251,0.000161,0.000219,0.000034,0.000174,0.000112,0.000219,0.000100,0.000130,0.000289,0.000226,0.000368,0.000095,0.000094,0.000122,0.000072,0.000121,0.000126,0.000143,0.000135,0.000153,0.000050,0.000099,0.000080,0.000071,0.000089,0.000079,0.000117,0.000090,0.000082,0.000068,0.000126,0.000073,0.000077,0.000094,0.000076,0.000063,0.000056,0.000070,0.000076,0.000063,0.000036,0.000059,0.000040,0.000039,0.000031,0.000048,0.000048,0.000066,0.000072,0.000047,0.000057,0.000058,0.000066,0.000033,0.000044,0.000035,0.000051,0.000038,0.000039,0.000047,0.000046,0.000052,0.000050,0.000033,0.000052,0.000039 | |||
giMute156 ftgen 0,0,4096,10,0.625565,0.965980,0.202403,0.024063,0.002481,0.005337,0.005024,0.008205,0.003554,0.001210,0.000983,0.001570,0.000901,0.000291,0.000664,0.000883,0.000489,0.000671,0.000602,0.000605,0.000552,0.000393,0.000580,0.000544,0.000508,0.000536,0.000523,0.000420,0.000400,0.000436,0.000414,0.000508,0.000302,0.000362,0.000336,0.000489,0.000355,0.000362,0.000320,0.000350,0.000246,0.000251,0.000326,0.000214,0.000175,0.000260,0.000273,0.000224,0.000202,0.000232,0.000185,0.000237,0.000245,0.000169,0.000199,0.000160,0.000153,0.000211,0.000161,0.000157,0.000165,0.000177,0.000207,0.000214,0.000158,0.000167,0.000146,0.000138,0.000161,0.000162,0.000163,0.000138,0.000160,0.000141,0.000113,0.000139,0.000144,0.000099,0.000091,0.000160,0.000120,0.000102,0.000131,0.000108,0.000113,0.000114,0.000113,0.000111,0.000105,0.000113,0.000123,0.000107,0.000110,0.000112,0.000110,0.000106,0.000122,0.000112,0.000105,0.000101 | |||
giMute157 ftgen 0,0,4096,10,0.314475,0.959696,0.048444,0.004582,0.006574,0.012611,0.005426,0.002115,0.000604,0.000404,0.000356,0.000685,0.001096,0.000409,0.000072,0.000321,0.000329,0.000236,0.000403,0.000240,0.000158,0.000233,0.000268,0.000168,0.000154,0.000209,0.000165,0.000121,0.000111,0.000136,0.000085,0.000217,0.000086,0.000083,0.000149,0.000151,0.000115,0.000148,0.000123,0.000087,0.000095,0.000113,0.000089,0.000044,0.000137,0.000116,0.000130,0.000027,0.000101,0.000085,0.000121,0.000079,0.000106,0.000042,0.000011,0.000071,0.000080,0.000029,0.000039,0.000081,0.000041,0.000060,0.000040,0.000068,0.000066,0.000052,0.000050,0.000031,0.000056,0.000054,0.000039,0.000051,0.000037,0.000059,0.000054,0.000037,0.000046,0.000043,0.000038,0.000041,0.000031,0.000049,0.000033,0.000040,0.000038,0.000035,0.000050,0.000040,0.000043,0.000039,0.000051,0.000035,0.000045,0.000020,0.000038,0.000032,0.000026,0.000030,0.000031,0.000030 | |||
giMute158 ftgen 0,0,4096,10,0.428817,0.965152,0.013016,0.001790,0.004347,0.004997,0.005604,0.002582,0.000836,0.000569,0.000599,0.000465,0.000517,0.000563,0.000538,0.000350,0.000281,0.000361,0.000460,0.000274,0.000209,0.000199,0.000249,0.000304,0.000340,0.000213,0.000240,0.000152,0.000238,0.000157,0.000200,0.000196,0.000164,0.000118,0.000156,0.000141,0.000124,0.000105,0.000108,0.000150,0.000140,0.000124,0.000109,0.000104,0.000111,0.000096,0.000120,0.000092,0.000094,0.000103,0.000077,0.000064,0.000066,0.000111,0.000094,0.000093,0.000082,0.000078,0.000073,0.000096,0.000082,0.000079,0.000075,0.000072,0.000085,0.000068,0.000072,0.000053,0.000069,0.000054,0.000057,0.000058,0.000058,0.000065,0.000055,0.000063,0.000066,0.000063,0.000063,0.000058,0.000053,0.000052,0.000046,0.000046,0.000050,0.000049,0.000047,0.000045,0.000043,0.000050,0.000047,0.000052,0.000050,0.000049,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
giwavemapMute1 ftgen 0,0,128,-27, 0,0, 22,0, 23,1, 24,2, 25,3, 26,4, 27,5, 28,6, 29,7, 30,8, 31,9, 32,10, 33,11, 34,12, 35,13, 36,14, 37,15, 38,16, 39,17, 40,18, 41,19, 42,20, 43,21, 44,22, 45,23, 46,24, 47,25, 48,26, 49,27, 50,28, 51,29, 52,30, 53,31, 54,32, 55,33, 56,34, 57,35, 58,36, 127,36 | |||
gitabs4morfMute1 ftgen 0,0,64,-2, giMute122,giMute123,giMute124,giMute125,giMute126,giMute127,giMute128,giMute129,giMute130,giMute131,giMute132,giMute133,giMute134,giMute135,giMute136,giMute137,giMute138,giMute139,giMute140,giMute141,giMute142,giMute143,giMute144,giMute145,giMute146,giMute147,giMute148,giMute149,giMute150,giMute151,giMute152,giMute153,giMute154,giMute155,giMute156,giMute157,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158 | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; BASS TROMBONE (OPEN) | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
giUnmuted22 ftgen 0,0,4096,10,0.209301,0.150536,0.083014,0.207956,0.321939,0.399510,0.327987,0.421479,0.539528,0.533091,0.721756,0.467196,0.947246,0.770314,0.912692,0.965128,0.962101,1.093136,0.708144,0.664071,0.619031,0.643414,0.371645,0.533120,0.477851,0.481481,0.451545,0.370726,0.360377,0.459325,0.288110,0.235271,0.205264,0.198828,0.206768,0.219183,0.205657,0.164230,0.168498,0.156362,0.109323,0.096989,0.105552,0.095551,0.069663,0.068933,0.067166,0.055414,0.072408,0.055978,0.033534,0.049491,0.054904,0.029956,0.018835,0.027602,0.035912,0.015979,0.021303,0.011033,0.024278,0.030411,0.020777,0.027002,0.020715,0.010245,0.010418,0.019612,0.017841,0.017176,0.012772,0.008424,0.009403,0.002947,0.006355,0.006158,0.015418,0.015477,0.011268,0.008620,0.008935,0.006072,0.005458,0.006560,0.006368,0.007559,0.004779,0.008830,0.007041,0.006334,0.002719,0.003830,0.006208,0.008425,0.006728,0.006139,0.002789,0.007133,0.005592,0.005069 | |||
giUnmuted23 ftgen 0,0,4096,10,0.129222,0.088552,0.116290,0.170792,0.176577,0.331680,0.281710,0.247957,0.379599,0.404781,0.432966,0.873924,0.774290,0.657216,0.986727,0.929760,0.832314,0.808580,0.585809,0.684034,0.674170,0.330450,0.888687,0.598954,0.599019,0.566506,0.632303,0.502653,0.431058,0.214554,0.351572,0.335693,0.277218,0.341691,0.264970,0.296760,0.293654,0.224055,0.213823,0.138880,0.188425,0.156849,0.137821,0.185206,0.172163,0.184744,0.153256,0.116401,0.138614,0.155349,0.095606,0.075646,0.091523,0.087233,0.081355,0.068920,0.094557,0.066191,0.069861,0.065915,0.072343,0.065165,0.065968,0.041851,0.063905,0.036430,0.041801,0.035516,0.038545,0.044169,0.038034,0.042219,0.032505,0.038202,0.034556,0.037548,0.036070,0.036673,0.037173,0.024089,0.029610,0.028726,0.018206,0.028118,0.023534,0.023563,0.025997,0.024870,0.021673,0.024752,0.020165,0.019645,0.016172,0.017942,0.018241,0.016560,0.014997,0.013671,0.015848,0.011383 | |||
giUnmuted24 ftgen 0,0,4096,10,0.014100,0.027948,0.037471,0.118589,0.278733,0.166216,0.237592,0.204888,0.303225,0.239198,0.590081,0.558590,0.488846,0.934503,0.791766,0.769104,0.451529,0.465344,0.363957,0.375648,0.362512,0.527955,0.584553,0.562238,0.409571,0.447397,0.547498,0.349795,0.363085,0.318352,0.305372,0.298282,0.236937,0.259059,0.251424,0.235425,0.253896,0.305811,0.227171,0.177695,0.218484,0.204418,0.227246,0.182265,0.183710,0.198997,0.141695,0.093968,0.119182,0.128975,0.118829,0.086353,0.143691,0.082113,0.096768,0.076006,0.108551,0.073045,0.080734,0.075566,0.076978,0.047507,0.057911,0.055554,0.070030,0.060662,0.054519,0.055938,0.064493,0.032839,0.043612,0.052568,0.034145,0.054702,0.041937,0.045108,0.037413,0.033601,0.044130,0.036376,0.036994,0.032488,0.031456,0.030170,0.029857,0.031038,0.027679,0.029891,0.027195,0.023506,0.027610,0.023146,0.022810,0.019058,0.018170,0.018749,0.017019,0.015480,0.016379,0.015893 | |||
giUnmuted25 ftgen 0,0,4096,10,0.075402,0.101145,0.176728,0.270616,0.291285,0.324780,0.333295,0.233831,0.290677,0.540830,0.767506,0.512758,0.980849,0.771417,0.804053,0.408122,0.631555,0.670085,0.408376,0.681153,0.911500,0.859956,0.697578,0.595419,0.593307,0.469251,0.543682,0.529757,0.367768,0.498910,0.305667,0.300578,0.386836,0.363336,0.347656,0.332606,0.322633,0.253819,0.316454,0.284584,0.227632,0.212815,0.324061,0.212387,0.161264,0.199347,0.187103,0.169679,0.152185,0.206879,0.129213,0.127022,0.158412,0.109282,0.134290,0.097383,0.119959,0.099454,0.111739,0.076911,0.100854,0.086224,0.089536,0.075617,0.075879,0.080690,0.071350,0.079834,0.089408,0.079954,0.081367,0.068297,0.067636,0.067458,0.048890,0.064138,0.053887,0.056479,0.047270,0.039648,0.049324,0.050416,0.048009,0.042951,0.034023,0.037808,0.026799,0.042091,0.023668,0.027252,0.027430,0.027822,0.030900,0.025171,0.030639,0.031093,0.018787,0.024957,0.020116,0.016682 | |||
giUnmuted26 ftgen 0,0,4096,10,0.043072,0.066480,0.103784,0.299131,0.266755,0.210417,0.254095,0.299260,0.120587,0.627381,0.502409,0.682945,0.896451,0.718962,0.798438,0.342935,0.438196,0.391451,0.571924,0.500613,0.522119,0.554206,0.351133,0.573747,0.415485,0.314183,0.377587,0.407768,0.269407,0.243405,0.358414,0.278435,0.297179,0.205957,0.278884,0.139884,0.230059,0.203655,0.273754,0.208405,0.268930,0.220588,0.093617,0.135109,0.140624,0.125541,0.127288,0.075447,0.145203,0.086283,0.144206,0.092668,0.097130,0.101259,0.096756,0.087998,0.053647,0.093505,0.075780,0.063445,0.057768,0.067925,0.062568,0.059886,0.049874,0.061576,0.047362,0.059277,0.045356,0.045205,0.049725,0.059766,0.051216,0.043048,0.047544,0.034671,0.055494,0.029430,0.038554,0.039949,0.030711,0.033481,0.031643,0.028951,0.022707,0.022752,0.019352,0.028349,0.020961,0.022731,0.022740,0.021957,0.021687,0.023511,0.015741,0.017651,0.017310,0.015487,0.015835,0.014889 | |||
giUnmuted27 ftgen 0,0,4096,10,0.116392,0.064448,0.127432,0.239485,0.257590,0.362741,0.449254,0.199901,0.348867,0.637406,0.429112,0.918400,0.936649,0.907354,0.601632,0.359938,0.492393,0.465346,0.501258,0.682788,0.539385,0.377763,0.493182,0.284353,0.308310,0.236111,0.324894,0.290903,0.171987,0.259098,0.209363,0.188311,0.165040,0.129121,0.179891,0.142395,0.192837,0.155400,0.140506,0.154670,0.085903,0.084914,0.123353,0.033350,0.085811,0.066361,0.064805,0.053334,0.059168,0.051871,0.024556,0.050781,0.036654,0.034625,0.037417,0.026993,0.036074,0.041271,0.034852,0.030858,0.035521,0.039943,0.029248,0.023157,0.034015,0.022517,0.032273,0.025478,0.021464,0.021306,0.020706,0.015205,0.017217,0.016590,0.014839,0.015475,0.014872,0.012173,0.018427,0.015918,0.010766,0.011403,0.007469,0.006837,0.010460,0.009821,0.011490,0.012841,0.009228,0.009485,0.005268,0.008016,0.007500,0.007632,0.009359,0.005060,0.006834,0.006729,0.005832,0.006610 | |||
giUnmuted28 ftgen 0,0,4096,10,0.076757,0.165970,0.231682,0.474308,0.397207,0.459106,0.300853,0.244548,0.666795,0.602133,0.902710,0.655767,0.483398,0.313870,0.349970,0.212690,0.704653,0.764853,0.648917,0.660316,0.500843,0.406945,0.437095,0.364433,0.332150,0.247819,0.335990,0.413334,0.272378,0.303040,0.347189,0.202684,0.273591,0.358844,0.326756,0.187244,0.245830,0.136904,0.149347,0.181123,0.074118,0.123133,0.099890,0.059919,0.124875,0.090488,0.085029,0.115332,0.036687,0.106389,0.065025,0.070006,0.054270,0.053720,0.068047,0.055966,0.079658,0.070141,0.046135,0.065892,0.044587,0.048301,0.044148,0.045919,0.038547,0.040422,0.052374,0.032757,0.026433,0.030900,0.031810,0.034349,0.013986,0.030399,0.015539,0.018593,0.017769,0.024225,0.019160,0.022166,0.018451,0.016544,0.010230,0.012227,0.012961,0.015889,0.015651,0.009872,0.014459,0.011942,0.015592,0.014711,0.013394,0.010871,0.008229,0.007572,0.008106,0.008828,0.011451,0.009952 | |||
giUnmuted30 ftgen 0,0,4096,10,0.102601,0.100887,0.167098,0.516781,0.330986,0.422868,0.412850,0.397849,0.628756,0.686835,0.929709,0.845577,0.935266,0.508059,0.792158,0.281350,0.378308,0.568489,0.346813,0.566233,0.413541,0.405762,0.359363,0.216505,0.366221,0.301854,0.216945,0.249969,0.168763,0.194386,0.278248,0.046419,0.257812,0.124464,0.096054,0.116201,0.059755,0.096572,0.074147,0.047405,0.054049,0.073919,0.023499,0.080643,0.079127,0.031933,0.076588,0.051990,0.032645,0.031250,0.046055,0.022654,0.038293,0.031067,0.045355,0.035515,0.043591,0.024758,0.020123,0.028097,0.025231,0.014737,0.015258,0.020891,0.010029,0.015487,0.004561,0.009797,0.007038,0.006923,0.012160,0.005577,0.012809,0.007007,0.007626,0.004440,0.008034,0.008475,0.006052,0.009027,0.006419,0.007999,0.005562,0.004974,0.008232,0.007159,0.005841,0.004633,0.005878,0.004708,0.005378,0.005775,0.004317,0.003135,0.006019,0.002682,0.003519,0.002106,0.001173,0.002911 | |||
giUnmuted31 ftgen 0,0,4096,10,0.066770,0.048141,0.313114,0.280252,0.266590,0.227818,0.195576,0.598114,0.585360,0.631625,0.922780,0.476250,0.557175,0.516114,0.284400,0.347304,0.327824,0.186298,0.429619,0.319332,0.143321,0.268362,0.179246,0.187779,0.187831,0.069696,0.157916,0.087219,0.051108,0.180413,0.090807,0.061893,0.087674,0.029616,0.053852,0.035420,0.032698,0.030786,0.031084,0.040347,0.022290,0.019770,0.033986,0.022503,0.008514,0.028204,0.013058,0.011683,0.016372,0.011838,0.005125,0.012279,0.007251,0.009685,0.008196,0.009381,0.007698,0.004608,0.004124,0.002835,0.002636,0.005858,0.004185,0.001287,0.002347,0.002862,0.004396,0.003505,0.001776,0.002038,0.003386,0.001389,0.002214,0.001394,0.002558,0.001971,0.001212,0.000993,0.001220,0.001435,0.001036,0.000315,0.000862,0.001509,0.000972,0.000423,0.000797,0.001030,0.001800,0.000491,0.000318,0.000990,0.000987,0.000840,0.000380,0.000536,0.000975,0.000576,0.000444,0.000286 | |||
giUnmuted32 ftgen 0,0,4096,10,0.153577,0.222613,0.376395,0.526417,0.515836,0.662033,0.484716,0.943689,0.936088,0.683402,0.940687,0.666224,0.399824,0.298609,0.378373,0.633100,0.213897,0.505597,0.312328,0.232655,0.144484,0.129531,0.225201,0.231697,0.116577,0.093467,0.083941,0.021798,0.081229,0.048477,0.071105,0.034486,0.057723,0.028194,0.029190,0.019811,0.027128,0.025539,0.014725,0.015158,0.019471,0.022215,0.011935,0.015510,0.012182,0.010768,0.007979,0.010226,0.004972,0.009394,0.006760,0.006326,0.005823,0.003912,0.005859,0.001846,0.002697,0.003683,0.003892,0.002554,0.002904,0.004195,0.000672,0.001703,0.001212,0.002070,0.001499,0.001454,0.002153,0.001936,0.000769,0.001242,0.001260,0.000672,0.000842,0.001179,0.001096,0.001223,0.001090,0.001644,0.001218,0.000337,0.000969,0.000736,0.000734,0.000228,0.000786,0.000788,0.000390,0.000223,0.001065,0.000755,0.000257,0.000513,0.000711,0.000538,0.000385,0.000437,0.000469,0.000430 | |||
giUnmuted33 ftgen 0,0,4096,10,0.199259,0.293112,0.678605,0.427095,0.796552,0.592920,0.832602,0.749712,0.753129,0.956136,0.706813,0.595711,0.292833,0.370551,0.334616,0.299621,0.458159,0.299313,0.277013,0.116169,0.127934,0.137952,0.174017,0.060317,0.067909,0.049889,0.073748,0.061114,0.028611,0.050743,0.022684,0.016755,0.015577,0.022867,0.023917,0.026384,0.015817,0.016226,0.020209,0.017937,0.014795,0.014935,0.011316,0.011197,0.003987,0.006306,0.007657,0.008754,0.008017,0.001430,0.002030,0.006426,0.004673,0.001697,0.003547,0.003128,0.001704,0.002225,0.003744,0.001255,0.001218,0.001706,0.000784,0.001874,0.002414,0.001450,0.001425,0.001431,0.001039,0.000512,0.001115,0.001012,0.000767,0.001368,0.000891,0.001254,0.000438,0.001473,0.000396,0.000944,0.000406,0.000645,0.000805,0.000497,0.000596,0.000632,0.000660,0.000453,0.000657,0.000437,0.000597,0.000534,0.000231,0.000579,0.000359,0.000597,0.000289,0.000515,0.000474,0.000508 | |||
giUnmuted34 ftgen 0,0,4096,10,0.156283,0.263433,0.503588,0.547226,0.458841,0.440476,0.745137,0.926771,0.703339,0.326809,0.455305,0.144506,0.578160,0.557536,0.390538,0.373849,0.349519,0.171391,0.136852,0.175680,0.170348,0.095999,0.101795,0.067277,0.069750,0.038210,0.062274,0.031281,0.045966,0.025999,0.019665,0.025196,0.019584,0.017978,0.018616,0.019068,0.009254,0.008323,0.009829,0.007950,0.009281,0.004125,0.006169,0.005516,0.008089,0.004623,0.003210,0.003435,0.002272,0.003102,0.002101,0.002482,0.000800,0.001308,0.001448,0.002671,0.000440,0.001102,0.000625,0.001246,0.000739,0.001198,0.000853,0.000982,0.000459,0.000870,0.000679,0.000793,0.000524,0.000192,0.000634,0.000314,0.000778,0.000405,0.000532,0.000235,0.000824,0.000204,0.000655,0.000308,0.000375,0.000408,0.000459,0.000698,0.000335,0.000370,0.000416,0.000463,0.000712,0.000202,0.000604,0.000194,0.000642,0.000492,0.000566,0.000304,0.000430,0.000666,0.000460,0.000725 | |||
giUnmuted35 ftgen 0,0,4096,10,0.109719,0.205679,0.327171,0.211979,0.275588,0.441424,0.909739,0.954713,0.704080,0.558176,0.412328,0.520298,0.672399,0.332547,0.403159,0.369356,0.239488,0.211806,0.231043,0.127727,0.249776,0.131377,0.104229,0.096938,0.102833,0.065079,0.066313,0.070405,0.083568,0.043975,0.062456,0.056332,0.053849,0.056551,0.038084,0.032551,0.031631,0.024900,0.019231,0.022793,0.025653,0.029848,0.012080,0.012343,0.008958,0.007429,0.009658,0.011782,0.006432,0.008668,0.004940,0.004961,0.011409,0.003677,0.005188,0.006053,0.002706,0.005660,0.005030,0.003473,0.004147,0.002260,0.003165,0.004611,0.001572,0.002973,0.001712,0.001380,0.002403,0.001241,0.001415,0.002559,0.000850,0.001416,0.000832,0.001164,0.001932,0.000912,0.001026,0.000996,0.000473,0.001056,0.000666,0.000709,0.000940,0.000380,0.000715,0.000818,0.000554,0.000733,0.000482,0.000638,0.000669,0.000419,0.000706,0.000551,0.000449,0.000615,0.000441,0.000574 | |||
giUnmuted37 ftgen 0,0,4096,10,0.163591,0.404564,0.575089,0.472316,0.486294,0.822510,0.806591,0.969411,0.362995,0.433080,0.496749,0.467537,0.467839,0.267451,0.183238,0.218200,0.199060,0.155508,0.175596,0.093844,0.131201,0.054473,0.064991,0.054622,0.028696,0.047964,0.032300,0.032288,0.027946,0.028929,0.025863,0.016471,0.015090,0.011768,0.012035,0.007896,0.009150,0.007422,0.006861,0.006328,0.006340,0.003206,0.001979,0.001196,0.003410,0.003344,0.001708,0.001304,0.001426,0.001391,0.002381,0.001136,0.000501,0.000621,0.001295,0.001362,0.001331,0.000559,0.000199,0.000503,0.000879,0.001032,0.000443,0.000370,0.000358,0.000616,0.000749,0.000331,0.000239,0.000475,0.000621,0.000552,0.000280,0.000188,0.000404,0.000434,0.000385,0.000500,0.000299,0.000339,0.000250,0.000436,0.000389,0.000319,0.000252,0.000279,0.000331,0.000496,0.000362,0.000299,0.000301,0.000389,0.000340,0.000331,0.000305,0.000321,0.000282,0.000312,0.000322,0.000305 | |||
giUnmuted38 ftgen 0,0,4096,10,0.088638,0.393952,0.219528,0.233796,0.390552,0.873953,0.973908,0.452420,0.406845,0.369372,0.418449,0.275682,0.233818,0.174596,0.176589,0.199987,0.084305,0.099145,0.066017,0.092595,0.045456,0.041233,0.057805,0.035677,0.029982,0.021224,0.023785,0.011487,0.013368,0.009656,0.009504,0.010544,0.006813,0.005152,0.006761,0.004720,0.005569,0.005772,0.003926,0.003876,0.001447,0.001937,0.001824,0.001260,0.001196,0.001056,0.001716,0.000597,0.000870,0.000129,0.001182,0.000562,0.000716,0.000558,0.000346,0.000458,0.000280,0.000472,0.000305,0.000628,0.000215,0.000532,0.000286,0.000686,0.000363,0.000433,0.000417,0.000257,0.000323,0.000182,0.000362,0.000182,0.000308,0.000090,0.000457,0.000168,0.000301,0.000207,0.000232,0.000295,0.000234,0.000253,0.000115,0.000278,0.000128,0.000246,0.000142,0.000206,0.000208,0.000168,0.000245,0.000156,0.000184,0.000153,0.000195,0.000110,0.000237,0.000120,0.000147,0.000197 | |||
giUnmuted39 ftgen 0,0,4096,10,0.072477,0.251689,0.379198,0.380111,0.725478,0.949509,0.692901,0.578175,0.268676,0.362999,0.292393,0.221151,0.135379,0.142198,0.166308,0.080654,0.080723,0.055948,0.052355,0.045652,0.019205,0.017803,0.021033,0.012636,0.010918,0.015171,0.012617,0.010832,0.009232,0.006483,0.005626,0.003851,0.002409,0.001860,0.003662,0.003232,0.003431,0.001824,0.002610,0.001564,0.001117,0.000540,0.000571,0.001003,0.001335,0.000552,0.000678,0.000584,0.001061,0.000360,0.000733,0.000138,0.000610,0.000585,0.000395,0.000329,0.000646,0.000491,0.000414,0.000402,0.000119,0.000403,0.000173,0.000409,0.000081,0.000323,0.000367,0.000312,0.000184,0.000390,0.000085,0.000295,0.000195,0.000268,0.000142,0.000267,0.000047,0.000196,0.000144,0.000201,0.000119,0.000264,0.000129,0.000192,0.000106,0.000089,0.000146,0.000206,0.000209,0.000106,0.000142,0.000140,0.000184,0.000083,0.000036,0.000158,0.000137,0.000135,0.000284,0.000115 | |||
giUnmuted40 ftgen 0,0,4096,10,0.225959,0.669389,0.383703,0.337797,0.897874,0.917315,0.679617,0.847733,0.413981,0.550916,0.384995,0.299373,0.229249,0.175955,0.251333,0.151143,0.072766,0.141216,0.038843,0.059075,0.024251,0.038600,0.034595,0.024303,0.012174,0.014682,0.023313,0.013042,0.011554,0.011010,0.010318,0.007734,0.007817,0.007700,0.004889,0.002809,0.002953,0.002732,0.002419,0.002929,0.001031,0.001758,0.002569,0.001934,0.000195,0.000657,0.000465,0.000529,0.000132,0.000495,0.000114,0.000374,0.000066,0.000383,0.000298,0.000374,0.000325,0.000203,0.000379,0.000195,0.000256,0.000055,0.000261,0.000143,0.000303,0.000225,0.000165,0.000287,0.000154,0.000362,0.000079,0.000339,0.000076,0.000304,0.000074,0.000377,0.000110,0.000203,0.000160,0.000220,0.000170,0.000246,0.000154,0.000238,0.000107,0.000233,0.000176,0.000143,0.000173,0.000149,0.000209,0.000112,0.000150,0.000111,0.000112,0.000142,0.000096,0.000126,0.000128,0.000116 | |||
giUnmuted41 ftgen 0,0,4096,10,0.097703,0.458893,0.214092,0.303131,0.643075,0.941287,0.605134,0.446467,0.333405,0.230717,0.265198,0.183918,0.159675,0.159325,0.106876,0.068197,0.087184,0.044215,0.041701,0.023995,0.024583,0.018444,0.017021,0.012909,0.009709,0.009292,0.005646,0.005169,0.005487,0.004703,0.003198,0.001953,0.002304,0.001896,0.001346,0.001214,0.000950,0.001006,0.000408,0.000899,0.000811,0.000603,0.000416,0.000186,0.000451,0.000580,0.000293,0.000134,0.000491,0.000610,0.000365,0.000202,0.000238,0.000284,0.000383,0.000318,0.000171,0.000207,0.000319,0.000262,0.000156,0.000201,0.000269,0.000277,0.000189,0.000255,0.000252,0.000251,0.000238,0.000176,0.000262,0.000221,0.000254,0.000156,0.000243,0.000273,0.000203,0.000144,0.000205,0.000227,0.000273,0.000231,0.000129,0.000148,0.000263,0.000231,0.000178,0.000240,0.000111,0.000150,0.000125,0.000253,0.000117,0.000217,0.000249,0.000167,0.000129,0.000153,0.000156,0.000166 | |||
giUnmuted42 ftgen 0,0,4096,10,0.124305,0.470693,0.408472,0.419845,0.726811,0.899803,0.320069,0.227380,0.170542,0.278327,0.087448,0.075657,0.070450,0.011278,0.027231,0.027560,0.017657,0.007864,0.003498,0.005879,0.002004,0.003338,0.002302,0.002026,0.001182,0.001269,0.001074,0.000364,0.000612,0.000235,0.000662,0.000064,0.000466,0.000427,0.000278,0.000267,0.000353,0.000292,0.000282,0.000261,0.000314,0.000191,0.000121,0.000300,0.000198,0.000184,0.000171,0.000233,0.000128,0.000158,0.000242,0.000129,0.000168,0.000158,0.000221,0.000105,0.000151,0.000134,0.000034,0.000239,0.000107,0.000190,0.000107,0.000133,0.000170,0.000077,0.000159,0.000133,0.000084,0.000139,0.000186,0.000114,0.000238,0.000054,0.000180,0.000124,0.000143,0.000260,0.000043,0.000132,0.000091,0.000030,0.000116,0.000080,0.000072,0.000057,0.000105,0.000076,0.000116,0.000065,0.000171,0.000053,0.000072,0.000074,0.000062,0.000114,0.000055,0.000095,0.000113,0.000044 | |||
giUnmuted43 ftgen 0,0,4096,10,0.125142,0.748133,0.488996,0.937672,0.810384,0.425414,0.265649,0.228407,0.170598,0.111821,0.121106,0.061239,0.019591,0.017183,0.019865,0.007807,0.001783,0.002592,0.001011,0.003527,0.002854,0.000493,0.002776,0.000788,0.001901,0.002961,0.000261,0.000981,0.000309,0.001260,0.001590,0.000419,0.000880,0.000853,0.000491,0.001106,0.000390,0.000507,0.000664,0.000732,0.000588,0.000322,0.000375,0.000612,0.000570,0.000284,0.000276,0.000346,0.000470,0.000510,0.000208,0.000313,0.000421,0.000286,0.000339,0.000330,0.000236,0.000285,0.000339,0.000333,0.000325,0.000301,0.000405,0.000289,0.000185,0.000254,0.000429,0.000220,0.000088,0.000342,0.000434,0.000323,0.000114,0.000423,0.000294,0.000189,0.000274,0.000329,0.000150,0.000193,0.000230,0.000213,0.000130,0.000222,0.000238,0.000078,0.000370,0.000313,0.000161,0.000338,0.000185,0.000246,0.000194,0.000179,0.000174,0.000154,0.000140,0.000235,0.000115,0.000258 | |||
giUnmuted44 ftgen 0,0,4096,10,0.302063,0.713050,0.452426,0.930055,0.680724,0.256993,0.187429,0.166946,0.128520,0.034480,0.011033,0.010095,0.010484,0.013378,0.003779,0.001842,0.002372,0.003682,0.002032,0.001052,0.001063,0.001158,0.000116,0.001123,0.001585,0.000539,0.001398,0.000809,0.000447,0.000282,0.000640,0.000371,0.000503,0.000484,0.000108,0.000162,0.000180,0.000319,0.000232,0.000211,0.000045,0.000246,0.000082,0.000069,0.000149,0.000105,0.000143,0.000097,0.000032,0.000091,0.000142,0.000202,0.000052,0.000133,0.000185,0.000054,0.000154,0.000137,0.000181,0.000042,0.000135,0.000129,0.000100,0.000108,0.000143,0.000065,0.000082,0.000182,0.000049,0.000189,0.000083,0.000061,0.000143,0.000078,0.000056,0.000079,0.000120,0.000037,0.000098,0.000063,0.000110,0.000162,0.000076,0.000078,0.000059,0.000095,0.000049,0.000104,0.000088,0.000117,0.000133,0.000031,0.000103,0.000040,0.000058,0.000025,0.000024,0.000077,0.000069,0.000155 | |||
giUnmuted45 ftgen 0,0,4096,10,0.233846,0.388855,0.488775,0.775865,0.964456,0.501325,0.291914,0.282804,0.153115,0.120898,0.100772,0.061525,0.021515,0.015412,0.010305,0.004386,0.004785,0.007854,0.004759,0.004311,0.003465,0.002391,0.000787,0.001491,0.000948,0.000812,0.000611,0.000750,0.000529,0.000347,0.000811,0.000462,0.000235,0.000129,0.000100,0.000270,0.000180,0.000344,0.000298,0.000283,0.000076,0.000033,0.000229,0.000057,0.000107,0.000302,0.000392,0.000250,0.000158,0.000123,0.000211,0.000176,0.000204,0.000052,0.000045,0.000073,0.000098,0.000048,0.000042,0.000062,0.000184,0.000108,0.000087,0.000108,0.000246,0.000201,0.000114,0.000035,0.000098,0.000163,0.000193,0.000214,0.000220,0.000138,0.000157,0.000201,0.000169,0.000255,0.000225,0.000166,0.000090,0.000040,0.000130,0.000094,0.000063,0.000032,0.000089,0.000092,0.000126,0.000045,0.000031,0.000089,0.000106,0.000113,0.000102,0.000097,0.000078,0.000087,0.000116,0.000073 | |||
giUnmuted46 ftgen 0,0,4096,10,0.278221,0.573695,0.445852,0.941888,0.349456,0.146739,0.401320,0.181176,0.109258,0.079677,0.027531,0.020462,0.010172,0.004976,0.008831,0.004459,0.003116,0.005925,0.003482,0.001955,0.000824,0.000849,0.000990,0.000555,0.000572,0.000248,0.000282,0.000312,0.000425,0.000324,0.000073,0.000533,0.000097,0.000455,0.000267,0.000126,0.000125,0.000100,0.000382,0.000051,0.000129,0.000240,0.000307,0.000083,0.000247,0.000140,0.000183,0.000087,0.000275,0.000383,0.000065,0.000167,0.000138,0.000204,0.000147,0.000389,0.000087,0.000087,0.000085,0.000041,0.000137,0.000224,0.000036,0.000053,0.000195,0.000205,0.000101,0.000065,0.000194,0.000064,0.000193,0.000258,0.000182,0.000073,0.000094,0.000173,0.000055,0.000075,0.000093,0.000129,0.000045,0.000085,0.000107,0.000117,0.000074,0.000107,0.000122,0.000085,0.000048,0.000110,0.000056,0.000075,0.000100,0.000057,0.000058,0.000070,0.000058,0.000062,0.000024,0.000053 | |||
giUnmuted48 ftgen 0,0,4096,10,0.452762,0.304359,0.946745,0.826937,0.631116,0.540533,0.395792,0.137892,0.089376,0.056327,0.024940,0.018700,0.015991,0.009294,0.006775,0.006495,0.001878,0.002247,0.000868,0.001248,0.001564,0.001249,0.001144,0.001326,0.001103,0.000911,0.000811,0.000899,0.000763,0.000818,0.000796,0.000855,0.000820,0.000710,0.000624,0.000684,0.000656,0.000643,0.000581,0.000503,0.000628,0.000640,0.000595,0.000471,0.000287,0.000521,0.000550,0.000603,0.000454,0.000276,0.000515,0.000524,0.000515,0.000548,0.000414,0.000417,0.000623,0.000306,0.000257,0.000314,0.000328,0.000356,0.000371,0.000363,0.000334,0.000261,0.000258,0.000294,0.000248,0.000426,0.000222,0.000250,0.000403,0.000222,0.000365,0.000158,0.000358,0.000267,0.000252,0.000328,0.000186,0.000291,0.000280,0.000198,0.000269,0.000258,0.000279,0.000252,0.000236,0.000257,0.000228,0.000248,0.000225,0.000222,0.000211,0.000262,0.000206,0.000219,0.000216,0.000223 | |||
giUnmuted49 ftgen 0,0,4096,10,0.384255,0.558888,0.714667,0.956957,0.356637,0.233667,0.190339,0.102786,0.061868,0.032079,0.017290,0.009522,0.005673,0.005487,0.002456,0.002036,0.000425,0.001796,0.002623,0.001222,0.000730,0.000805,0.000937,0.000709,0.000258,0.000626,0.000855,0.000810,0.000503,0.000376,0.000366,0.000792,0.000435,0.000475,0.000434,0.000367,0.000729,0.000327,0.000400,0.000367,0.000285,0.000247,0.000517,0.000305,0.000346,0.000356,0.000254,0.000337,0.000385,0.000231,0.000456,0.000215,0.000106,0.000201,0.000338,0.000284,0.000295,0.000166,0.000172,0.000132,0.000143,0.000401,0.000352,0.000229,0.000228,0.000272,0.000210,0.000234,0.000250,0.000182,0.000231,0.000084,0.000152,0.000170,0.000231,0.000207,0.000174,0.000130,0.000145,0.000280,0.000219,0.000185,0.000135,0.000104,0.000157,0.000222,0.000197,0.000090,0.000129,0.000142,0.000121,0.000183,0.000157,0.000120,0.000130,0.000101,0.000113,0.000151,0.000146,0.000114 | |||
giUnmuted50 ftgen 0,0,4096,10,0.446591,0.477584,0.426492,0.970753,0.374135,0.215282,0.306904,0.140851,0.070867,0.038834,0.002282,0.017849,0.007741,0.003585,0.006831,0.006003,0.003705,0.001554,0.003344,0.000137,0.001907,0.000924,0.001095,0.001011,0.000580,0.000998,0.001204,0.000696,0.001058,0.000873,0.000742,0.000768,0.000685,0.000814,0.000666,0.000827,0.000659,0.000713,0.000613,0.000584,0.000711,0.000452,0.000535,0.000517,0.000488,0.000572,0.000501,0.000577,0.000468,0.000403,0.000316,0.000555,0.000474,0.000513,0.000541,0.000421,0.000425,0.000418,0.000385,0.000321,0.000462,0.000415,0.000342,0.000312,0.000347,0.000323,0.000339,0.000320,0.000298,0.000318,0.000268,0.000265,0.000232,0.000302,0.000354,0.000263,0.000304,0.000222,0.000312,0.000311,0.000342,0.000363,0.000274,0.000300,0.000250,0.000296,0.000254,0.000287,0.000249,0.000199,0.000219,0.000195,0.000210,0.000230,0.000217,0.000181,0.000209,0.000200,0.000218,0.000224 | |||
giUnmuted51 ftgen 0,0,4096,10,0.287446,0.531276,0.971557,0.630155,0.300795,0.250731,0.098819,0.107126,0.053101,0.062126,0.011011,0.012837,0.004178,0.006909,0.004394,0.002253,0.002430,0.002140,0.001992,0.000671,0.000287,0.000471,0.000271,0.000130,0.000051,0.000046,0.000110,0.000021,0.000075,0.000192,0.000076,0.000065,0.000131,0.000125,0.000081,0.000150,0.000030,0.000017,0.000085,0.000079,0.000026,0.000096,0.000129,0.000153,0.000110,0.000071,0.000054,0.000060,0.000076,0.000043,0.000064,0.000017,0.000052,0.000117,0.000038,0.000047,0.000024,0.000058,0.000033,0.000021,0.000042,0.000074,0.000063,0.000027,0.000066,0.000039,0.000035,0.000030,0.000050,0.000068,0.000048,0.000058,0.000037,0.000069,0.000030,0.000032,0.000081,0.000067,0.000051,0.000033,0.000053,0.000067,0.000038,0.000025,0.000009,0.000037,0.000026,0.000021,0.000009,0.000039,0.000025,0.000029,0.000019,0.000007,0.000014,0.000020,0.000025,0.000019,0.000024,0.000011 | |||
giUnmuted52 ftgen 0,0,4096,10,0.780315,0.602043,0.971703,0.598540,0.419892,0.250576,0.135924,0.028914,0.007076,0.002504,0.001073,0.002881,0.002091,0.001033,0.001393,0.001759,0.002069,0.001160,0.001046,0.000119,0.000300,0.000679,0.000689,0.000161,0.000393,0.000523,0.000306,0.000179,0.000312,0.000431,0.000186,0.000165,0.000492,0.000276,0.000209,0.000416,0.000299,0.000153,0.000254,0.000350,0.000169,0.000155,0.000291,0.000165,0.000059,0.000258,0.000299,0.000257,0.000195,0.000128,0.000254,0.000142,0.000138,0.000172,0.000115,0.000086,0.000226,0.000168,0.000117,0.000109,0.000203,0.000108,0.000106,0.000096,0.000163,0.000088,0.000138,0.000083,0.000076,0.000118,0.000119,0.000130,0.000104,0.000106,0.000157,0.000102,0.000046,0.000053,0.000071,0.000098,0.000102,0.000096,0.000078,0.000080,0.000075,0.000076,0.000080,0.000077,0.000073,0.000056,0.000081,0.000076,0.000093,0.000054,0.000098,0.000069,0.000047,0.000076,0.000050,0.000039 | |||
giUnmuted53 ftgen 0,0,4096,10,0.372046,0.398945,0.933433,0.303716,0.202319,0.090480,0.045828,0.011018,0.009763,0.001157,0.003828,0.006742,0.001634,0.000320,0.001952,0.001823,0.000292,0.001455,0.000996,0.000511,0.001143,0.001002,0.000470,0.000777,0.000907,0.000648,0.000685,0.000677,0.000506,0.000454,0.000526,0.000488,0.000439,0.000473,0.000508,0.000505,0.000540,0.000447,0.000407,0.000416,0.000398,0.000364,0.000198,0.000374,0.000324,0.000391,0.000404,0.000361,0.000265,0.000399,0.000341,0.000282,0.000274,0.000277,0.000232,0.000236,0.000232,0.000234,0.000221,0.000241,0.000245,0.000215,0.000179,0.000214,0.000247,0.000215,0.000207,0.000202,0.000207,0.000195,0.000189,0.000164,0.000193,0.000172,0.000163,0.000189,0.000196,0.000183,0.000169,0.000170,0.000159,0.000177,0.000172,0.000148,0.000148,0.000174,0.000160,0.000170,0.000159,0.000159,0.000153,0.000140,0.000152,0.000124,0.000137,0.000135,0.000132,0.000111,0.000136,0.000145 | |||
giUnmuted55 ftgen 0,0,4096,10,0.553293,0.970661,0.775964,0.469479,0.247296,0.167610,0.076609,0.033410,0.020341,0.014035,0.008333,0.004948,0.005841,0.001285,0.003257,0.000737,0.001858,0.001036,0.001645,0.001036,0.001103,0.001137,0.001058,0.001046,0.000830,0.000920,0.000754,0.000986,0.000805,0.000941,0.000725,0.000785,0.000639,0.000792,0.000693,0.000710,0.000502,0.000630,0.000647,0.000611,0.000541,0.000612,0.000564,0.000535,0.000526,0.000550,0.000561,0.000452,0.000489,0.000502,0.000455,0.000494,0.000395,0.000489,0.000391,0.000455,0.000426,0.000401,0.000395,0.000424,0.000366,0.000409,0.000441,0.000420,0.000368,0.000384,0.000385,0.000372,0.000378,0.000347,0.000334,0.000364,0.000324,0.000342,0.000334,0.000331,0.000328,0.000319,0.000317,0.000303,0.000307,0.000324,0.000295,0.000316,0.000284,0.000293,0.000301,0.000292,0.000308,0.000294,0.000306,0.000291,0.000290,0.000281,0.000282,0.000284,0.000276,0.000270,0.000271,0.000271 | |||
giUnmuted56 ftgen 0,0,4096,10,0.400932,0.968520,0.498998,0.389257,0.178633,0.106598,0.036188,0.017795,0.012342,0.000119,0.001239,0.002906,0.000849,0.000166,0.001155,0.001166,0.000733,0.000431,0.000261,0.000740,0.000954,0.000788,0.000425,0.000292,0.000215,0.000111,0.000367,0.000116,0.000157,0.000202,0.000291,0.000325,0.000311,0.000291,0.000228,0.000258,0.000334,0.000245,0.000207,0.000181,0.000101,0.000272,0.000256,0.000160,0.000202,0.000191,0.000135,0.000209,0.000287,0.000145,0.000174,0.000142,0.000151,0.000158,0.000211,0.000156,0.000085,0.000205,0.000120,0.000149,0.000178,0.000110,0.000128,0.000155,0.000127,0.000078,0.000172,0.000112,0.000089,0.000134,0.000141,0.000080,0.000122,0.000145,0.000057,0.000148,0.000118,0.000076,0.000098,0.000141,0.000071,0.000118,0.000134,0.000051,0.000121,0.000094,0.000107,0.000067,0.000125,0.000091,0.000070,0.000129,0.000072,0.000073,0.000102,0.000110,0.000065,0.000125,0.000102,0.000073 | |||
giUnmuted57 ftgen 0,0,4096,10,0.291306,0.935026,0.610503,0.348987,0.214608,0.091185,0.014377,0.010820,0.009119,0.004516,0.002313,0.001529,0.002367,0.001896,0.001988,0.001276,0.001387,0.001297,0.001665,0.001145,0.001069,0.001265,0.001014,0.000912,0.000914,0.000884,0.001057,0.000657,0.000966,0.000629,0.000867,0.000822,0.000934,0.000930,0.000759,0.000705,0.000586,0.000610,0.000554,0.000522,0.000534,0.000515,0.000527,0.000475,0.000482,0.000475,0.000461,0.000481,0.000430,0.000442,0.000430,0.000434,0.000438,0.000393,0.000406,0.000411,0.000359,0.000372,0.000357,0.000351,0.000349,0.000324,0.000336,0.000324,0.000314,0.000303,0.000301,0.000285,0.000290,0.000281,0.000290,0.000278,0.000275,0.000275,0.000263,0.000266,0.000238,0.000227,0.000236,0.000240,0.000236,0.000232,0.000222,0.000228,0.000230,0.000219,0.000211,0.000210,0.000218,0.000220,0.000216,0.000205,0.000201,0.000207,0.000204,0.000198,0.000198,0.000199,0.000198,0.000204 | |||
giUnmuted58 ftgen 0,0,4096,10,0.424856,0.955425,0.300308,0.167209,0.106790,0.022221,0.009677,0.003945,0.002919,0.000972,0.002109,0.001042,0.000179,0.000802,0.000783,0.000469,0.000622,0.000452,0.000340,0.000342,0.000529,0.000442,0.000227,0.000537,0.000344,0.000279,0.000438,0.000291,0.000255,0.000281,0.000355,0.000226,0.000212,0.000190,0.000247,0.000230,0.000217,0.000203,0.000212,0.000229,0.000161,0.000199,0.000193,0.000163,0.000189,0.000156,0.000148,0.000176,0.000153,0.000136,0.000144,0.000163,0.000148,0.000142,0.000156,0.000124,0.000124,0.000128,0.000131,0.000128,0.000116,0.000119,0.000096,0.000126,0.000103,0.000119,0.000108,0.000098,0.000108,0.000100,0.000109,0.000095,0.000104,0.000104,0.000089,0.000098,0.000092,0.000092,0.000094,0.000088,0.000084,0.000083,0.000085,0.000085,0.000078,0.000083,0.000080,0.000081,0.000078,0.000077,0.000082,0.000082,0.000079,0.000080,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giUnmuted59 ftgen 0,0,4096,10,0.359547,0.978853,0.629720,0.355319,0.173057,0.062497,0.018952,0.015355,0.001883,0.003244,0.000776,0.001277,0.001682,0.000930,0.001021,0.000861,0.000797,0.000784,0.000905,0.000938,0.000691,0.000529,0.000651,0.000668,0.000567,0.000394,0.000564,0.000553,0.000563,0.000374,0.000399,0.000503,0.000337,0.000498,0.000410,0.000391,0.000452,0.000316,0.000406,0.000293,0.000417,0.000301,0.000349,0.000279,0.000358,0.000270,0.000271,0.000287,0.000270,0.000252,0.000235,0.000266,0.000229,0.000223,0.000239,0.000206,0.000237,0.000201,0.000212,0.000207,0.000197,0.000204,0.000185,0.000193,0.000174,0.000185,0.000168,0.000173,0.000159,0.000158,0.000167,0.000156,0.000160,0.000158,0.000153,0.000144,0.000156,0.000152,0.000147,0.000148,0.000140,0.000141,0.000134,0.000134,0.000132,0.000133,0.000132,0.000129,0.000139,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giUnmuted60 ftgen 0,0,4096,10,0.261374,0.958638,0.539283,0.255231,0.147692,0.058306,0.039086,0.029455,0.008523,0.006366,0.003368,0.001295,0.000525,0.000726,0.000847,0.000590,0.000475,0.000526,0.000505,0.000443,0.000320,0.000407,0.000362,0.000443,0.000436,0.000378,0.000327,0.000302,0.000313,0.000302,0.000287,0.000249,0.000268,0.000271,0.000288,0.000219,0.000205,0.000188,0.000206,0.000244,0.000213,0.000204,0.000153,0.000138,0.000190,0.000183,0.000175,0.000180,0.000157,0.000145,0.000159,0.000168,0.000161,0.000138,0.000144,0.000137,0.000134,0.000133,0.000132,0.000126,0.000126,0.000129,0.000119,0.000120,0.000108,0.000109,0.000110,0.000111,0.000101,0.000092,0.000091,0.000098,0.000100,0.000096,0.000094,0.000096,0.000089,0.000087,0.000090,0.000085,0.000088,0.000082,0.000081,0.000085,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giUnmuted61 ftgen 0,0,4096,10,0.417597,0.966833,0.416727,0.180794,0.059064,0.009951,0.012483,0.005985,0.000936,0.001803,0.000655,0.001165,0.001044,0.000808,0.000730,0.000802,0.000431,0.000761,0.000635,0.000600,0.000672,0.000449,0.000439,0.000419,0.000423,0.000466,0.000371,0.000301,0.000340,0.000369,0.000332,0.000355,0.000303,0.000303,0.000266,0.000327,0.000298,0.000235,0.000293,0.000250,0.000196,0.000286,0.000226,0.000187,0.000270,0.000214,0.000201,0.000218,0.000195,0.000204,0.000206,0.000186,0.000183,0.000183,0.000170,0.000171,0.000168,0.000166,0.000163,0.000161,0.000161,0.000147,0.000147,0.000142,0.000139,0.000140,0.000142,0.000142,0.000138,0.000137,0.000135,0.000131,0.000129,0.000130,0.000131,0.000129,0.000128,0.000128,0.000129,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giUnmuted62 ftgen 0,0,4096,10,0.619523,0.961285,0.413119,0.108674,0.024175,0.002125,0.004476,0.003247,0.001352,0.001965,0.000417,0.001471,0.001777,0.000808,0.001622,0.001287,0.001022,0.001266,0.000711,0.000939,0.000934,0.000662,0.000613,0.000589,0.000621,0.000570,0.000567,0.000537,0.000348,0.000623,0.000348,0.000581,0.000430,0.000433,0.000451,0.000404,0.000403,0.000380,0.000391,0.000385,0.000372,0.000351,0.000360,0.000320,0.000325,0.000307,0.000314,0.000267,0.000307,0.000276,0.000259,0.000269,0.000263,0.000231,0.000245,0.000235,0.000254,0.000203,0.000228,0.000209,0.000210,0.000212,0.000201,0.000201,0.000200,0.000193,0.000197,0.000181,0.000186,0.000191,0.000187,0.000179,0.000186,0.000183,0.000156,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giUnmuted63 ftgen 0,0,4096,10,0.930506,0.830293,0.419689,0.124916,0.038385,0.024593,0.004794,0.004719,0.003135,0.000873,0.001282,0.002043,0.001147,0.000967,0.000988,0.000678,0.000173,0.000513,0.000302,0.000290,0.000411,0.000762,0.000371,0.000406,0.000100,0.000164,0.000359,0.000407,0.000105,0.000293,0.000391,0.000246,0.000158,0.000094,0.000092,0.000176,0.000072,0.000179,0.000079,0.000130,0.000159,0.000270,0.000068,0.000103,0.000061,0.000031,0.000141,0.000112,0.000103,0.000058,0.000084,0.000104,0.000104,0.000093,0.000106,0.000081,0.000073,0.000109,0.000082,0.000051,0.000083,0.000073,0.000065,0.000063,0.000070,0.000082,0.000059,0.000073,0.000066,0.000057,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giUnmuted64 ftgen 0,0,4096,10,0.972240,0.962179,0.327494,0.131881,0.030060,0.012594,0.010159,0.006424,0.001103,0.003403,0.002598,0.002451,0.001553,0.001352,0.001133,0.001503,0.001006,0.001536,0.001309,0.001202,0.000888,0.001138,0.001263,0.001203,0.001186,0.000543,0.000766,0.000841,0.000896,0.000659,0.000695,0.000682,0.000638,0.000554,0.000597,0.000599,0.000595,0.000633,0.000510,0.000491,0.000552,0.000483,0.000426,0.000553,0.000423,0.000448,0.000409,0.000425,0.000270,0.000375,0.000420,0.000306,0.000414,0.000322,0.000332,0.000333,0.000282,0.000349,0.000328,0.000344,0.000339,0.000347,0.000316,0.000285,0.000300,0.000263,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giUnmuted65 ftgen 0,0,4096,10,0.946888,0.960545,0.184774,0.018883,0.010446,0.014745,0.001268,0.004635,0.003175,0.000946,0.004142,0.002215,0.000862,0.002500,0.001973,0.001800,0.000634,0.001025,0.001812,0.001970,0.001697,0.001360,0.000855,0.000747,0.001079,0.000849,0.000880,0.000574,0.000730,0.000688,0.000981,0.000337,0.000974,0.000733,0.000756,0.000555,0.000861,0.000545,0.000749,0.000475,0.000535,0.000441,0.000525,0.000483,0.000584,0.000565,0.000414,0.000551,0.000370,0.000472,0.000237,0.000446,0.000374,0.000619,0.000426,0.000403,0.000396,0.000408,0.000394,0.000340,0.000296,0.000324,0.000299,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giUnmuted67 ftgen 0,0,4096,10,0.904104,0.687203,0.074239,0.008596,0.008832,0.003406,0.003870,0.000671,0.001852,0.001635,0.001087,0.000499,0.001292,0.000964,0.000856,0.000780,0.000614,0.000711,0.000618,0.000934,0.000903,0.000581,0.000840,0.000399,0.000489,0.000328,0.000505,0.000515,0.000432,0.000365,0.000364,0.000454,0.000390,0.000377,0.000361,0.000314,0.000378,0.000357,0.000330,0.000270,0.000342,0.000244,0.000217,0.000204,0.000235,0.000181,0.000230,0.000167,0.000212,0.000212,0.000203,0.000218,0.000163,0.000210,0.000170,0.000173,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giUnmuted69 ftgen 0,0,4096,10,0.944934,0.293223,0.066919,0.017808,0.007234,0.002307,0.002545,0.000739,0.000556,0.000511,0.000549,0.000723,0.000242,0.000601,0.000453,0.000316,0.000324,0.000312,0.000164,0.000264,0.000131,0.000093,0.000233,0.000211,0.000152,0.000187,0.000090,0.000233,0.000171,0.000154,0.000116,0.000082,0.000095,0.000121,0.000103,0.000074,0.000094,0.000088,0.000098,0.000122,0.000105,0.000080,0.000084,0.000079,0.000074,0.000104,0.000062,0.000071,0.000065,0.000064,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giUnmuted70 ftgen 0,0,4096,10,0.943312,0.441802,0.052080,0.022643,0.001043,0.002473,0.002554,0.002310,0.001720,0.000881,0.001191,0.001619,0.000857,0.000858,0.001539,0.000697,0.000554,0.000498,0.000409,0.000174,0.000105,0.000147,0.000252,0.000549,0.000348,0.000262,0.000426,0.000336,0.000226,0.000305,0.000193,0.000333,0.000263,0.000183,0.000164,0.000171,0.000202,0.000221,0.000188,0.000137,0.000129,0.000098,0.000100,0.000144,0.000071,0.000094,0.000086,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
giwavemapUnmuted ftgen 0,0,128,-27, 0,0, 22,0, 23,1, 24,2, 25,3, 26,4, 27,5, 28,6, 30,7, 31,8, 32,9, 33,10, 34,11, 35,12, 37,13, 38,14, 39,15, 40,16, 41,17, 42,18, 43,19, 44,20, 45,21, 46,22, 48,23, 49,24, 50,25, 51,26, 52,27, 53,28, 55,29, 56,30, 57,31, 58,32, 59,33, 60,34, 61,35, 62,36, 63,37, 64,38, 65,39, 67,40, 69,41, 70,42, 127,42 | |||
gitabs4morfUnmuted ftgen 0,0,64,-2, giUnmuted22,giUnmuted23,giUnmuted24,giUnmuted25,giUnmuted26,giUnmuted27,giUnmuted28,giUnmuted30,giUnmuted31,giUnmuted32,giUnmuted33,giUnmuted34,giUnmuted35,giUnmuted37,giUnmuted38,giUnmuted39,giUnmuted40,giUnmuted41,giUnmuted42,giUnmuted43,giUnmuted44,giUnmuted45,giUnmuted46,giUnmuted48,giUnmuted49,giUnmuted50,giUnmuted51,giUnmuted52,giUnmuted53,giUnmuted55,giUnmuted56,giUnmuted57,giUnmuted58,giUnmuted59,giUnmuted60,giUnmuted61,giUnmuted62,giUnmuted63,giUnmuted64,giUnmuted65,giUnmuted67,giUnmuted69,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70 | |||
;INITIAL INSTRUMENT SETTING WILL BE 'CLARINET' | |||
giwavemap init giwavemapClar | |||
gitabs4morf init gitabs4morfClar | |||
giSingleTab init giclar62 | |||
;FUNCTION TABLE USED TO RE-MAP THE RELATIONSHIP BETWEEN VELOCITY AND ATTACK TIME | |||
giattscl ftgen 0,0,128,-16,2,128,-10,0.005 | |||
giNAttScl ftgen 0,0,128,-16,8,128,-4,0.25 | |||
gasendL,gasendR init 0 | |||
opcode butlpsr,a,aa | |||
setksmps 1 | |||
ain,afreq xin | |||
kfreq downsamp afreq | |||
aout butlp ain,kfreq | |||
xout aout | |||
endop | |||
opcode SsplinePort,k,KkkO ;DEFINE OPCODE | |||
knum,kporttime,kcurve,iopt xin ;READ IN INPUT ARGUMENTS | |||
kout init i(knum) ;INITIALISE TO OUTPUT VALUE (PORTAMENTO APPLIED VALUE) | |||
ktrig changed knum ;...GENERATE A TRIGGER IS A NEW NOTE NUMBER IS GENERATED (FROM INSTR. 1) | |||
if ktrig=1 then ;IF A NEW (LEGATO) NOTE HAS BEEN PRESSED | |||
reinit S_CURVE ;BEGIN A REINITIALISATION PASS FROM LABEL | |||
endif ;END OF CONDITIONAL BRANCH | |||
S_CURVE: ;A LABEL. REINITIALISATION BEGINS FROM HERE. | |||
if iopt!=0 then ;IF ABSOLUTE/PROPORTIONAL SWITCH IS ON... (I.E. PROPORTIONAL) | |||
idiff = 1+abs(i(knum)-i(kout)) ;ABSOLUTE DIFFERENCE BETWEEN OLD NOTE AND NEW NOTE IN STEPS (+ 1) | |||
kporttime = kporttime*idiff ;SCALE PORTAMENTO TIME ACCORDING TO THE NOTE GAP | |||
endif ;END OF CONDITIONAL BRANCH | |||
imid = i(kout)+((i(knum)-i(kout))/2) ;SPLINE MID POINT VALUE | |||
isspline ftgentmp 0,0,4096,-16,i(kout),4096*0.5,i(kcurve),imid,(4096/2)-1,-i(kcurve),i(knum) ;GENERATE 'S' SPLINE | |||
kspd = i(kporttime)/kporttime ;POINTER SPEED AS A RATIO (WITH REFERENCE TO THE ORIGINAL DURATION) | |||
kptr init 0 ;POINTER INITIAL VALUE | |||
kout tablei kptr,isspline ;READ VALUE FROM TABLE | |||
kptr limit kptr+((ftlen(isspline)/(i(kporttime)*kr))*kspd), 0, ftlen(isspline)-1 ;INCREMENT THE POINTER BY THE REQUIRED NUMBER OF TABLE POINTS IN ONE CONTROL CYCLE AND LIMIT IT BETWEEN FIRST AND LAST TABLE POINT - FINAL VALUE WILL BE HELD IF POINTER ATTEMPTS TO EXCEED TABLE DURATION | |||
rireturn ;RETURN FROM REINITIALISATION PASS | |||
xout kout ;SEND PORTAMENTOED VALUES BACK TO CALLER INSTRUMENT | |||
endop | |||
instr UpdateTableNumbers ; SET VALUES FOR INSTRUMENT PRESETS ACCORDING TO BUTTON BANK CHOICE | |||
kporttime linseg 0,0.001,0.1 | |||
gkmonopoly chnget "monopoly" | |||
gkLegTim chnget "LegTim" | |||
gkModRte chnget "ModRte" | |||
gkshift chnget "shift" | |||
gkshift portk gkshift,kporttime | |||
gkNoiseAmp chnget "NoiseAmp" | |||
gkEQ_Lo chnget "EQ_Lo" | |||
gkEQ_Hi chnget "EQ_Hi" | |||
iPBendRange = 6 | |||
gkBendDn chnget "BendDn" | |||
gkBendDn scale gkBendDn,0,-iPBendRange | |||
gkBendUp chnget "BendUp" | |||
gkBendUp scale gkBendUp,iPBendRange,0 | |||
gkBend = gkBendUp+gkBendDn | |||
gkBend portk gkBend,kporttime | |||
gkpan chnget "pan" | |||
gklevel chnget "level" | |||
gkRvbMix chnget "RvbMix" | |||
gkRvbSize chnget "RvbSize" | |||
kInstr chnget "Instr" | |||
ktrig changed kInstr | |||
if ktrig==1 then | |||
reinit UPDATE | |||
endif | |||
UPDATE: | |||
iInstr = i(kInstr) | |||
if iInstr==1 then | |||
giwavemap init giwavemapClar | |||
gitabs4morf init gitabs4morfClar | |||
elseif iInstr==2 then | |||
giwavemap init giwavemapBClar | |||
gitabs4morf init gitabs4morfBClar | |||
elseif iInstr==3 then | |||
giwavemap init giwavemapCBClar | |||
gitabs4morf init gitabs4morfCBClar | |||
elseif iInstr==4 then | |||
giwavemap init giwavemapOboe | |||
gitabs4morf init gitabs4morfOboe | |||
elseif iInstr==5 then | |||
giwavemap init giwavemapBassoon | |||
gitabs4morf init gitabs4morfBassoon | |||
elseif iInstr==6 then | |||
giwavemap init giwavemapCBassoon | |||
gitabs4morf init gitabs4morfCBassoon | |||
elseif iInstr==7 then | |||
giwavemap init giwavemapViolin | |||
gitabs4morf init gitabs4morfViolin | |||
elseif iInstr==8 then | |||
giwavemap init giwavemapCello | |||
gitabs4morf init gitabs4morfCello | |||
elseif iInstr==9 then | |||
giwavemap init giwavemapPiccolo | |||
gitabs4morf init gitabs4morfPiccolo | |||
elseif iInstr==10 then | |||
giwavemap init giwavemapFlute | |||
gitabs4morf init gitabs4morfFlute | |||
elseif iInstr==11 then | |||
giwavemap init giwavemapAFlute | |||
gitabs4morf init gitabs4morfAFlute | |||
elseif iInstr==12 then | |||
giwavemap init giwavemapBFlute | |||
gitabs4morf init gitabs4morfBFlute | |||
elseif iInstr==13 then | |||
giwavemap init giwavemapAhh | |||
gitabs4morf init gitabs4morfAhh | |||
elseif iInstr==14 then | |||
giwavemap init giwavemapHornP | |||
gitabs4morf init gitabs4morfHornP | |||
elseif iInstr==15 then | |||
giwavemap init giwavemapHornF | |||
gitabs4morf init gitabs4morfHornF | |||
elseif iInstr==16 then | |||
giwavemap init giwavemapharmon | |||
gitabs4morf init gitabs4morfharmon | |||
elseif iInstr==17 then | |||
giwavemap init giwavemapMute1 | |||
gitabs4morf init gitabs4morfMute1 | |||
elseif iInstr==18 then | |||
giwavemap init giwavemapUnmuted | |||
gitabs4morf init gitabs4morfUnmuted | |||
endif | |||
rireturn | |||
endin | |||
instr 2 ;triggered via MIDI | |||
gkNoteTrig init 1 ;at the beginning of a new note set note trigger flag to '1' | |||
ijitter chnget "jitter" | |||
inum notnum ;read in midi note number | |||
inum = inum+ijitter*0.2 ;random fixed pitch offset | |||
givel veloc 0,1 ;read in midi note velocity | |||
gknum = inum ;update a global krate variable for note pitch | |||
if i(gkmonopoly)==0 then ;if we are *not* in legato mode... | |||
inum notnum ; read midi note number (0 - 127) | |||
event_i "i",p1+1+(inum*0.001),0,-1,inum ; call sound producing instr | |||
krel release ; release flag (1 when note is released, 0 otherwise) | |||
if krel==1 then ; when note is released... | |||
turnoff2 p1+1+(inum*0.001),4,1 ; turn off the called instrument | |||
endif ; end of conditional | |||
else ;otherwise... (i.e. legato mode) | |||
iactive = i(gkactive) ;number of active notes of instr 3 (note in release are disregarded) | |||
if iactive==0 then ;...if no notes are active | |||
event_i "i",p1+1,0,-1 ;...start a new held note | |||
endif | |||
endif | |||
endin | |||
instr 3 ;waveguide instrument. MIDI notes are directed here. | |||
kporttime linseg 0,0.001,1 ;portamento time function rises quickly from zero to a held value | |||
kporttime = kporttime*gkLegTim ;scale portamento time function with value from GUI knob widget | |||
if i(gkmonopoly)==1 then ;if we are in legato mode... | |||
krel release ;sense when note has been released | |||
gkactive = 1-krel ;if note is in release, gkactive=0, otherwise =1 | |||
knum SsplinePort gknum,kporttime,2,1 ;GLISSANDO TIME PROPORTIONAL TO NOTE GAP (OPTION SET TO '1'), THEREFORE PORTAMENTO TIME DEPENDENT UPON NOTE GAP. LARGER INTERVALS WILL RESULT IN PROPORTIONALLY LONGER PORTAMENTO TIMES. | |||
kactive active p1-1 ;...check number of active midi notes (previous instrument) | |||
if kactive==0 then ;if no midi notes are active... | |||
turnoff ;... turn this instrument off | |||
endif | |||
else ;otherwise... (polyphonic / non-legato mode) | |||
knum = p4 ;pitch equal to the original note pitch | |||
endif | |||
ivel init givel | |||
kvibdep chnget "vibdep" ;read in widgets | |||
ktremdep chnget "tremdep" | |||
ktonedep chnget "tonedep" | |||
kporttime linseg 0,0.001,0.02 ;CREATE A FUNCTION THAT RISES RAPIDLY FROM ZERO TO A FIXED VALUE THAT WILL BE USED FOR PORTAMENTO TIME | |||
kjitter chnget "jitter" | |||
iNAttAmp chnget "NAttAmp" | |||
iNAttTim chnget "NAttTim" | |||
idrop chnget "drop" | |||
;------------------------------------------------------------------------------------------------------------ | |||
;AMPLITUDE MODULATION (TREMOLO), VIBRATO AND TONE MODULATION | |||
;------------------------------------------------------------------------------------------------------------ | |||
if gkNoteTrig==1&&gkmonopoly==1 then ;if a new note is beginning and if we are in monophonic mode... | |||
reinit RESTART_ENVELOPE ;reinitialise the modulations build up | |||
endif | |||
RESTART_ENVELOPE: | |||
iphs random 0,1 ;RANDOM INITIAL PHASE FOR EACH NOTE | |||
kmoddep chnget "moddep";ctrl7 1,1,0,1 ;READ IN CONTROLLER 1. WILL BE USED TO CONTROL LFO MODULATION DEPTH | |||
irisetime = 1 ;THE TIME IT TAKES FOR MODULATION TO RISE TO ITS MAXIMUM VALUE | |||
kmodenv expseg 0.01,irisetime,1,1,1 ;MODULATION ENVELOPE. MODULATION WILL RISE FROM NEAR ZERO TO ITS REQUIRED VALUE OVER THE DURATION OF 'irisetime' FOR EACH NEW NOTE | |||
rireturn | |||
kmodenv portk kmodenv,0.05 ;smooth changes in modulation envelope. This is needed if the envelope is restarted in monophonic mode | |||
kRteVar randi 0.1,4 ;random variation of the rate of modulation | |||
kmodrate = gkModRte*octave(kRteVar) ;MODULATION RATE. (NOT CONSTANT IN ORDER TO ADD A BIT OF REALISM) | |||
kDepVar randomi 0.5,1,4,1 ;random variance of the depth of modulation | |||
kmoddep = kmoddep*kDepVar ;modulation depth modulated by randopm factor | |||
kvib oscili kvibdep*kmoddep*kmodenv,kmodrate, gisine,iphs ;VIBRATO LFO | |||
ktrem oscili ktremdep*kmoddep*kmodenv,kmodrate,gisine,iphs+0.5 ;TREMOLO LFO (NOTE PHASE WITH RESPECT TO THAT OF VIBRATO) | |||
ktrem = 1+(ktrem) ;OFFSET TREMOLO SO THAT IT MODULATES ABOUT '1' INSTEAD OF ABOUT ZERO. | |||
ktonemod oscili ktonedep*kmoddep*kmodenv,kmodrate,gisine,iphs+0.5 ;TONE MODULATION LFO | |||
ktonemod = ktonemod - (3*kmoddep*kmodenv) ; | |||
;------------------------------------------------------------------------------------------------------------ | |||
;PITCH JITTER (THIS WILL BE USED TO ADD HUMAN-PLAYER REALISM) | |||
;------------------------------------------------------------------------------------------------------------ | |||
; AMP | MIN_FREQ. | MAX_FREQ | |||
kPitchJit jitter 0.05*kjitter*4, 1, 20 | |||
;------------------------------------------------------------------------------------------------------------ | |||
;AMPLITUDE JITTER (THIS WILL BE USED TO ADD HUMAN-PLAYER REALISM) | |||
;------------------------------------------------------------------------------------------------------------ | |||
; AMP | MIN_FREQ. | MAX_FREQ | |||
kAmpJit jitter 0.1*kjitter*4, 0.2, 1 | |||
kAmpJit = kAmpJit+1 ;OFFSET SO IT MODULATES ABOUT '1' INSTEAD OF ABOUT ZERO | |||
;THE TABLE INTO WHICH THE MORPHED TABLE WILL BE WRITTEN IS CREATED WITHIN THE INSTRUMENT ITSELF | |||
;THIS IS DONE SO AS EACH NOTE PLAYED WILL REQUIRE ITS OWN UNIQUE MORPHED TABLE | |||
;THE TABLE CREATED WILL BE A TEMPORARY TABLE. IT WILL BE DESTROYED WHEN THE NOTE IS FINISHED AND IT IS NO LONGER NEEDED. | |||
imorphtab ftgentmp 0,0,4096,10,1 | |||
;pchbend DOESN'T SEEM TO WORK AT PRESENT IN CABBAGE | |||
kpchbend pchbend 0,4 ;READ MIDI PITCH BEND. THIS LINE OUTPUTS VALUES IN THE RANGE -2 TO 2. EQUILIBRIUM POSITION = 0. | |||
kpchbend portk kpchbend,kporttime ;APPLY SOME PORTAMENTO SMOOTHING TO THE PITCH BEND PARAMETER | |||
knum = knum+kpchbend+kvib+kPitchJit+gkBend ;DERIVE K-RATE NOTE NUMBER VALUE INCORPORATING PITCH BEND, VIBRATO, AND PITCH JITTER | |||
ktabndx limit knum+gkshift,0,127 ;SHIFT TABLE INDEX | |||
kftndx tablei ktabndx,giwavemap ;ftndx REMAPPED ACCORDING TO THE WAVETABLE MAP FOR THIS INSTRUMENT | |||
ftmorf kftndx, gitabs4morf, imorphtab ;CREATE THE MORHED TABLE ACCORDING TO THE VALUE OF THE FUNCTION TABLE INDEX CREATED ABOVE | |||
iatt table ivel,giattscl,1 ;READ A VALUE MAPPED FROM KEY VELOCITY TO ATTACK TIME. (SEE TABLE giattscl) | |||
aenv linsegr 0,iatt,1,0.05,0 ;AMPLITUDE ENVELOPE | |||
kenv linsegr 0,iatt,1,0.05,0 ;K-RATE VERSION OF THE ABOVE | |||
/*NOISE ATTACK*/ | |||
iscale table i(gknum),giNAttScl ;LONGER ATTACK TIMES FOR LOWER NOTES | |||
kNenv expseg iNAttAmp+0.001,iNAttTim*iscale,0.001, 1, 0.001 ;NOISE ENVELOPE. WILL CREATE A HARD ATTACK AT THE START OF THE NOTE | |||
anoise gaussi 1,(kNenv-0.001)*iscale,1000 ;GENERATE GAUSSIAN NOISE IMPULSE AT THE START OF A NOTE | |||
if idrop>0 then | |||
adrop linsegr 0,0.05,-idrop ;SLIGHT PITCH DROP OFF UPON NOTE RELEASE | |||
acps = cpsmidinn(knum)*octave(anoise)*octave(adrop) | |||
else | |||
acps = cpsmidinn(knum)*octave(anoise) | |||
endif | |||
aAmpNoise gauss gkNoiseAmp | |||
aAmpNoise butlp aAmpNoise,gkEQ_Lo | |||
aAmpNoise buthp aAmpNoise,gkEQ_Hi | |||
asig poscil (aenv*ktrem*kAmpJit*0.1)*(1+aAmpNoise),acps,imorphtab ;CREATE THE AUDIO OSCILLATOR FROM THE MORPHED FUNCTION TABLE (IF MULTI-TABLE MODE IS SELECTED) | |||
kbright chnget "bright" ;BRIGHTNESS CONTROL (I.E. LOWPASS FILTER CUTOFF). | |||
kbright portk kbright,kporttime ;SMOOTH MOVEMENTS OF THE BRIGHTNESS CONTROL | |||
afreq interp cpsoct((kenv*4*kbright)+8+ktonemod) | |||
asig butlpsr asig,afreq ;LOWPASS FILTER THE SOUND (CALL UDO) | |||
aL,aR pan2 asig*gklevel,gkpan ;scale amplitude level and create stereo panned signal | |||
outs aL, aR ;SEND AUDIO TO THE OUTPUTS | |||
gasendL = gasendL+aL*gkRvbMix | |||
gasendR = gasendR+aR*gkRvbMix | |||
gkNoteTrig = 0 ;reset new-note trigger (in case it was '1') | |||
endin | |||
instr 5 ;reverb | |||
if gkRvbMix==0 kgoto SKIP_REVERB | |||
aL,aR reverbsc gasendL,gasendR,gkRvbSize,12000 | |||
outs aL,aR | |||
clear gasendL,gasendR | |||
SKIP_REVERB: | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i "UpdateTableNumbers" 0 3600 | |||
i 5 0 3600 ;reverb | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,65 @@ | |||
<Cabbage> | |||
form caption("Waveguide clar ") size(335, 165), colour("black"), pluginID("cla1") | |||
rslider bounds(0, 0, 80, 80) channel("noise"), range(0,0.5,.1), caption("Noise"), colour("yellow"), midictrl(1, 1) | |||
rslider bounds(85, 0, 80, 80) channel("vib"), range(0,12,1), caption("Vib rate"), colour("yellow"), midictrl(1, 2) | |||
rslider bounds(170, 0, 80, 80) channel("vibamp"), range(0,10,0), caption("Vib amp"), colour("yellow"), midictrl(1, 3) | |||
rslider bounds(255, 0, 80, 80) channel("stiff"), range(-0.44,-0.18, - 0.6), caption("Stiffness"), colour("yellow"), midictrl(1, 3) | |||
keyboard bounds(0, 85, 330, 50) | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n -+rtmidi=NULL -M0 | |||
;-n -d -+rtmidi=NULL -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
;Author: Giorgio Zucco (2012) | |||
sr = 44100 | |||
ksmps = 10 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
instr 1 | |||
iamp ampmidi 1 | |||
ifreq cpsmidi | |||
kngain chnget "noise" | |||
kvibf chnget "vib" | |||
kstiff chnget "stiff" | |||
kvamp chnget "vibamp" | |||
;kstiff = -0.3 | |||
iatt = 0.1 | |||
idetk = 0.1 | |||
;kngain = 0 ;vary breath | |||
;kvibf = 5.735 | |||
kvamp = 0.1 | |||
aclar wgclar iamp,ifreq,kstiff,iatt,idetk,kngain,kvibf,kvamp,1 | |||
aout clip aclar,0,0dbfs | |||
kenv linsegr 1,.1,1,.3,.5,.2,0 ;inviluppo d'ampiezza | |||
outs aout*kenv,aout*kenv | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
f1 0 16384 10 1 | |||
f0 36000 | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,62 @@ | |||
<Cabbage> | |||
form caption("Waveguide flute ") size(335, 165), colour("black"), pluginID("flu") | |||
rslider bounds(0, 0, 80, 80) channel("jet"), range(0.08,0.56,0.08), caption("Air jet"), colour("yellow"), midictrl(1, 1) | |||
rslider bounds(85, 0, 80, 80) channel("vib"), range(0,12,1), caption("Vib rate"), colour("yellow"), midictrl(1, 2) | |||
rslider bounds(170, 0, 80, 80) channel("vibamp"), range(0,1,0), caption("Vib amp"), colour("yellow"), midictrl(1, 3) | |||
rslider bounds(255, 0, 80, 80) channel("noise"), range(0,0.6,0.1), caption("Noise"), colour("yellow"), midictrl(1, 3) | |||
keyboard bounds(0, 85, 330, 50) | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n -+rtmidi=NULL -M0 | |||
;-n -d -+rtmidi=NULL -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
;Author: Giorgio Zucco (2012) | |||
sr = 44100 | |||
ksmps = 10 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
instr 1 | |||
iamp ampmidi 1 | |||
ifreq cpsmidi | |||
kjet chnget "jet" | |||
kvibf chnget "vib" | |||
kngain chnget "noise" | |||
kstiff chnget "stiff" | |||
kvamp chnget "vibamp" | |||
iatt = 0.1 | |||
idetk = 0.1 | |||
aflute wgflute iamp, ifreq, kjet, iatt, idetk, kngain, kvibf, kvamp, 1 | |||
aout clip aflute,0,0dbfs | |||
kenv linsegr 1,.1,1,.3,.5,.2,0 ;inviluppo d'ampiezza | |||
outs aout*kenv,aout*kenv | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
f1 0 16384 10 1 | |||
f0 36000 | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,64 @@ | |||
<Cabbage> | |||
form caption("Waveguide pluck ") size(335, 170), colour("black"), pluginID("plu1") | |||
rslider bounds(0, 0, 80, 80) channel("pick"), tracker(0), range(.1, 1,.5), caption("Pick"), colour("yellow"), midictrl(1, 1) | |||
rslider bounds(85, 0, 80, 80) channel("plucked"), range(0,2,1), caption("Point-plucked"), colour("yellow"), midictrl(1, 2) | |||
rslider bounds(170, 0, 80, 80) channel("damping"), range(1, 100, 10), caption("Damping"), colour("yellow"), midictrl(1, 3) | |||
rslider bounds(255, 0, 80, 80) channel("filter"), range(10, 30000, 100), caption("Filter"), colour("yellow"), midictrl(1, 4) | |||
keyboard pos(0, 85), size(330, 50) | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n -+rtmidi=NULL -M0 | |||
;-n -d -+rtmidi=NULL -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
;Author: Giorgio Zucco (2012) | |||
sr = 44100 | |||
ksmps = 10 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
instr 1 | |||
iamp ampmidi 1 | |||
ifreq cpsmidi | |||
kpick chnget "pick" | |||
kpoint chnget "plucked" | |||
kdamp chnget "damping" | |||
kfilt chnget "filter" | |||
kpickx portk kpick,.02 | |||
axcite oscil 1,1,1 ;segnale eccitatore | |||
apluck wgpluck ifreq,iamp,kpickx,i(kpoint),i(kdamp),i(kfilt),axcite | |||
aout clip apluck,0,0dbfs | |||
kenv linsegr 1,.1,1,.3,.5,.2,0 ;inviluppo d'ampiezza | |||
outs aout*kenv,aout*kenv | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
f1 0 16384 10 1 | |||
f0 36000 | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,97 @@ | |||
<Cabbage> | |||
form caption("Impulse waveguide") size(560, 325), colour("black"),pluginID("imp1") | |||
rslider bounds(15, 10, 100, 100) channel("semi"), range(-12,12,-12), caption("Coarse"), colour("tomato") | |||
rslider bounds(120, 10, 100, 100) channel("spread"), range(0,1,.5), caption("spread"), colour("tomato") | |||
rslider bounds(225, 10, 100, 100) channel("detune"), range(-1,1,0), caption("Detune"), colour("tomato") | |||
rslider bounds(330, 10, 100, 100) channel("fback"), range(0.1,1,.8), caption("Feedback"), colour("tomato") | |||
rslider bounds(435, 10, 100, 100) channel("filter"), range(100,10000,2000), caption("Cutoff"), colour("tomato") | |||
rslider bounds(15, 120, 100, 100), caption("Impulse1"), colour("tomato"), channel("random1"), range(0,3,.1) | |||
rslider bounds(120, 120, 100, 100), caption("Impulse2"), colour("tomato"), channel("random2"), range(0,3,.1) | |||
rslider bounds(225, 120, 100, 100), caption("Rev level"), colour("tomato"), channel("level"), range(0,1,.8) | |||
rslider bounds(330, 120, 100, 100), caption("Rev size"), colour("tomato"), channel("revsize"), range(.1,.99,.7) | |||
checkbox bounds(450,120, 160, 20),channel("onoff"), text("Rev On/Off"), value(0) | |||
keyboard pos(15,230), size(520, 60) | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n -+rtmidi=NULL -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 32 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
;Author: Giorgio Zucco (2012) | |||
seed 0 | |||
ga1 init 0 | |||
ga2 init 0 | |||
instr 1 | |||
gkrnd1 chnget "random1" | |||
gkrnd2 chnget "random2" | |||
gkrate chnget "rate" | |||
gksemi chnget "semi" | |||
gkspread chnget "spread" | |||
gkdetune chnget "detune" | |||
gkfeedback chnget "fback" | |||
gkfilt chnget "filter" | |||
iamp ampmidi 1 | |||
inote notnum | |||
kfreq1 = cpsmidinn(inote+int(gksemi)) | |||
kfreq2 = cpsmidinn(inote+int(gksemi)+gkdetune) | |||
kdev = rnd(.01) | |||
krnd1 randomh kdev,.01+gkrnd1,10 | |||
asig1 mpulse iamp,0.01+krnd1 | |||
krnd2 randomh kdev,.01+gkrnd2,10 | |||
asig2 mpulse iamp,0.01+krnd2 | |||
awg1 wguide1 asig1,kfreq1,gkfilt,gkfeedback | |||
awg2 wguide1 asig2,kfreq2,gkfilt,gkfeedback | |||
aL clip awg1,0,0dbfs | |||
aR clip awg2,0,0dbfs | |||
kenv mxadsr .001,1,1,.5 | |||
aoutL = ((aL * gkspread) + (aR * (1 - gkspread))) | |||
aoutR = ((aL * (1-gkspread)) + (aR * gkspread)) | |||
outs aoutL*kenv,aoutR*kenv | |||
vincr ga1,aoutL*kenv | |||
vincr ga2,aoutR*kenv | |||
endin | |||
instr 10 ;reverb | |||
ktrig chnget "onoff" | |||
klevel chnget "level" | |||
ksize chnget "revsize" | |||
if ktrig = 1 then | |||
al,ar reverbsc ga1,ga2,ksize,12000,sr,0 | |||
asum1 dcblock2 al | |||
asum2 dcblock2 ar | |||
else | |||
asum1 = 0 | |||
asum2 = 0 | |||
endif | |||
outs asum1*klevel,asum2*klevel | |||
clear ga1,ga2 | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i1 0 36000 | |||
i10 0 36000 | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,97 @@ | |||
<Cabbage> | |||
form caption("Impulse waveguide 2") size(550, 325), colour("black"),pluginID("imp2") | |||
rslider bounds(15, 10, 100, 100) channel("semi"), range(-12,12,-12), caption("Coarse"), colour("HotPink ") | |||
rslider bounds(120, 10, 100, 100) channel("spread"), range(0,1,.5), caption("spread"), colour("HotPink ") | |||
rslider bounds(225, 10, 100, 100) channel("detune"), range(-1,1,0), caption("Detune"), colour("HotPink ") | |||
rslider bounds(330, 10, 100, 100) channel("filter1"), range(100,20000,2000), caption("Cutoff1"), colour("HotPink ") | |||
rslider bounds(435, 10, 100, 100) channel("filter2"), range(100,20000,2000), caption("Cutoff2"), colour("HotPink ") | |||
rslider bounds(15, 120, 100, 100), caption("Impulse1"), colour("HotPink "), channel("random1"), range(0,3,.1) | |||
rslider bounds(120, 120, 100, 100), caption("Impulse2"), colour("HotPink "), channel("random2"), range(0,3,.1) | |||
rslider bounds(225, 120, 100, 100), caption("Rev level"), colour("HotPink "), channel("level"), range(0,1,.8) | |||
rslider bounds(330, 120, 100, 100), caption("Rev size"), colour("HotPink "), channel("revsize"), range(.1,.99,.7) | |||
checkbox bounds(450,120, 160, 20),channel("onoff"), text("Rev On/Off"), value(0) | |||
keyboard pos(15,230), size(520, 60) | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-d -n -+rtmidi=NULL -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 32 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
;Author: Giorgio Zucco (2012) | |||
seed 0 | |||
ga1 init 0 | |||
ga2 init 0 | |||
instr 1 | |||
gkrnd1 chnget "random1" | |||
gkrnd2 chnget "random2" | |||
gkrate chnget "rate" | |||
gksemi chnget "semi" | |||
gkspread chnget "spread" | |||
gkdetune chnget "detune" | |||
gkfilt1 chnget "filter1" | |||
gkfilt2 chnget "filter2" | |||
iamp ampmidi 1 | |||
inote notnum | |||
kfreq1 = cpsmidinn(inote+int(gksemi)) | |||
kfreq2 = cpsmidinn(inote+int(gksemi)+gkdetune) | |||
kdev = rnd(.01) | |||
krnd1 randomh kdev,.01+gkrnd1,10 | |||
asig1 mpulse iamp,0.01+krnd1 | |||
krnd2 randomh kdev,.01+gkrnd2,10 | |||
asig2 mpulse iamp,0.01+krnd2 | |||
awg1 wguide2 asig1,kfreq1,kfreq1*.5,gkfilt1,gkfilt2,.24,.24 | |||
awg2 wguide2 asig1,kfreq2,kfreq2*.5,gkfilt1,gkfilt2,.24,.24 | |||
aL clip awg1,0,0dbfs | |||
aR clip awg2,0,0dbfs | |||
kenv mxadsr .001,1,1,.5 | |||
aoutL = ((aL * gkspread) + (aR * (1 - gkspread))) | |||
aoutR = ((aL * (1-gkspread)) + (aR * gkspread)) | |||
outs aoutL*kenv,aoutR*kenv | |||
vincr ga1,aoutL*kenv | |||
vincr ga2,aoutR*kenv | |||
endin | |||
instr 10 ;reverb | |||
ktrig chnget "onoff" | |||
klevel chnget "level" | |||
ksize chnget "revsize" | |||
if ktrig = 1 then | |||
al,ar reverbsc ga1,ga2,ksize,12000,sr,0 | |||
asum1 dcblock2 al | |||
asum2 dcblock2 ar | |||
else | |||
asum1 = 0 | |||
asum2 = 0 | |||
endif | |||
outs asum1*klevel,asum2*klevel | |||
clear ga1,ga2 | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i1 0 36000 | |||
i10 0 36000 | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,204 @@ | |||
<Cabbage> | |||
form caption("Wave Terrain Synth"), size(760, 320), pluginID("wte1") | |||
xypad bounds(0, 0, 250, 210), channel("chanx", "chany"), text("Wave terrain X/Y"), rangex(0, 1, .2), rangey(0, 1, .4) | |||
groupbox bounds(260, 0, 240, 100), text("ADSR"), plant("adsr"){ | |||
rslider bounds(.0, .3, .6, .6), text("A"), colour("orange"), channel("att"), range(0.01,3, .5) | |||
rslider bounds(.25, .3, .6, .6), text("D"), colour("orange"), channel("dec"), range(0,1, .5) | |||
rslider bounds(.5, .3, .6, .6), text("S"), colour("orange"), channel("sus"), range(0,1,.8) | |||
rslider bounds(.75, .3, .6, .6), text("R"), colour("orange"), channel("rel"), range(0.01,3, .2) | |||
} | |||
groupbox bounds(260, 105, 240, 100), text("Tune/Moog filter"), plant("tune"){ | |||
rslider bounds(.0, .3, .6, .6), text("Coarse"), colour("red"), channel("det1"), range(-24,12,0) | |||
rslider bounds(.25, .3, .6, .6), text("Detune"), colour("red"), channel("detune"), range(-1,1,0) | |||
rslider bounds(.5, .3, .6, .6), text("cutoff"), colour("red"), channel("cutoff"), range(500,22000,4000) | |||
rslider bounds(.74, .3, .6, .6), text("reso"), colour("red"), channel("resonance"), range(.1,.9,.5) | |||
} | |||
groupbox bounds(510,0, 240, 100), text("LFO/Stereo chorus"), plant("mod"){ | |||
rslider bounds(.0, .3, .6, .6), text("Lfo amp"), colour("red"), channel("lfoamp"), range(0,50, 0) | |||
rslider bounds(.25, .3, .6, .6), text("Lfo rate"), colour("red"), channel("lforate"), range(0,20, 0) | |||
rslider bounds(.5, .3, .6, .6), text("depth"), colour("red"), channel("chdepth"), range(0,10,0) | |||
rslider bounds(.75, .3, .6, .6), text("rate"), colour("red"), channel("chrate"), range(0,10,0) | |||
} | |||
groupbox bounds(510,105, 240, 100), text("Reverb"), plant("rev"){ | |||
rslider bounds(0, .3, .6, .6), text("level"), colour("dodgerblue"), channel("level"), range(0,1,0) | |||
rslider bounds(0.25, .3, .6, .6), text("size"), colour("dodgerblue"), channel("size"), range(.1,.99,.5) | |||
;rslider bounds(115, 30, 60, 60), text("depth"), colour("dodgerblue"), channel("chdepth"), range(0,10,0) | |||
;rslider bounds(165, 30, 60, 60), text("rate"), colour("dodgerblue"), channel("chrate"), range(0,10,0) | |||
checkbox bounds(.55, .40, .60, .30),channel("onoff"), text("On/Off"), value(0), colour("red") | |||
} | |||
} | |||
keyboard bounds(0, 220, 750, 70) | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-n -d -m0d -+rtmidi=NULL -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 32 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
;Author: Giorgio Zucco (2012) | |||
;turnon don't work! | |||
;turnon 10 ;chorus | |||
;turnon 12 ;reverb | |||
ga1 init 0 | |||
ga2 init 0 | |||
garev1 init 0 | |||
garev2 init 0 | |||
gitemp ftgen 1,0,16384,10,1,0,.6,0,.3,0,.2,0,.1 | |||
gitemp ftgen 2,0,16384,10,1,1,1,1,0.7,0.5,0.3,0.1 | |||
;******************************************* | |||
opcode StChorus,aa,aakkkk | |||
asigr,asigl,kdepth,kdepthl,krate,kratel xin ;legge i parametri in entrata | |||
;ar,al StChorus asigr,asigl,kdepth,kdepthl,krate,kratel | |||
k1ch randi kdepth/2,krate,1 | |||
ar1 vdelay asigr,kdepth/2+k1ch,10 | |||
k2ch randi kdepth/2,krate*0.9,.2 | |||
ar2 vdelay asigr,kdepth/2+k2ch,10 | |||
k3ch randi kdepth/2,krate*1.1,.2 | |||
ar3 vdelay asigr,kdepth/2+k3ch,10 | |||
k4ch randi kdepth/2,krate*1.3,.1 | |||
ar4 vdelay asigr,kdepth/2+k4ch,10 | |||
k1chl randi kdepthl/2,kratel,1 | |||
ar1l vdelay asigl,kdepthl/2+k1chl,10 | |||
k2chl randi kdepthl/2,kratel*0.9,.2 | |||
ar2l vdelay asigl,kdepthl/2+k2chl,10 | |||
k3chl randi kdepthl/2,kratel*1.1,.2 | |||
ar3l vdelay asigl,kdepthl/2+k3chl,10 | |||
k4chl randi kdepthl/2,kratel*1.3,.1 | |||
ar4l vdelay asigl,kdepthl/2+k4chl,10 | |||
aL = (ar1+ar2+ar3+ar4)/4 | |||
aR = (ar1l+ar2l+ar3l+ar4l)/4 | |||
xout aL,aR ; write output | |||
endop | |||
;*********************************************** | |||
instr 1 | |||
iatt chnget "att" | |||
idec chnget "dec" | |||
isus chnget "sus" | |||
irel chnget "rel" | |||
ksemi chnget "det1" | |||
kdet chnget "detune" | |||
klfoamp chnget "lfoamp" | |||
klforate chnget "lforate" | |||
kcutoff chnget "cutoff" | |||
kreso chnget "resonance" | |||
kx1 chnget "chanx" | |||
ky1 chnget "chany" | |||
kx portk kx1,.05 ;remove noise | |||
ky portk ky1,.05 | |||
;midi | |||
imidinn notnum | |||
iamp ampmidi 1 | |||
kbend pchbend 0,2 ;pitch bend | |||
kfreq1 = cpsmidinn(imidinn+kbend+int(ksemi)) ;controllo midi | |||
kfreq2 = cpsmidinn(imidinn+kbend+int(ksemi)+kdet) | |||
;lfo | |||
klfo poscil klfoamp,klforate,1 | |||
ifunc1 = 1 | |||
ifunc2 = 2 | |||
a1b wterrain iamp,(kfreq1+klfo),.1+kx,.1+ky,-kx,.1+ky,ifunc1,ifunc2 | |||
a2b wterrain iamp,(kfreq2+klfo),.1+kx,.1+ky,-kx,.1+ky,ifunc1,ifunc2 | |||
kadsr mxadsr iatt,idec,isus,irel | |||
aout = a1b+a2b ;global out | |||
;abulp1 butterlp aout,kcutoff*kadsrfilt | |||
afilt moogladder aout,kcutoff,kreso | |||
amaster balance afilt,aout | |||
aclip clip amaster,0,0dbfs | |||
kpan jspline 1,0,8 | |||
al,ar pan2 aclip,kpan | |||
outs (al*kadsr),(ar*kadsr) | |||
vincr ga1,(al*kadsr) | |||
vincr ga2,(ar*kadsr) | |||
vincr garev1,(al*kadsr) | |||
vincr garev2,(ar*kadsr) | |||
endin | |||
;stereo chorus | |||
instr 10 | |||
k1 chnget "chdepth" | |||
k2 chnget "chrate" | |||
kfxdepth portk k1,.01 | |||
kfxrate portk k2,.01 | |||
acho1,acho2 StChorus ga1,ga2,kfxdepth,kfxdepth*.8,kfxrate*.8,kfxrate*.5 | |||
outs acho1,acho2 | |||
clear ga1,ga2 | |||
endin | |||
instr 12 ;reverb | |||
ktrig chnget "onoff" | |||
klevel chnget "level" | |||
ksize chnget "size" | |||
if ktrig = 1 then | |||
al,ar reverbsc garev1,garev2,ksize,16000,sr,0 | |||
asum1 dcblock2 al | |||
asum2 dcblock2 ar | |||
else | |||
asum1 = 0 | |||
asum2 = 0 | |||
endif | |||
outs asum1*klevel,asum2*klevel | |||
clear garev1,garev2 | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
;f0 36000 | |||
i1 0 36000 | |||
i10 0 36000 | |||
i12 0 36000 | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,486 @@ | |||
<Cabbage> | |||
form caption("gbuzz Synth") size(875, 375), pluginID("GBuz") | |||
image bounds( 0, 0,875,295), colour("DarkSlateGrey"), outline("MediumSlateBlue"), line(3) ; main panel colouration | |||
;MAIN | |||
image bounds( 10, 6,495, 90), colour("DarkSlateGrey"), outline("white"), line(2), shape("sharp"),plant("main"){ ;main | |||
label bounds(180, 5,100, 15), text("Main"), fontcolour(white) | |||
rslider bounds( 0, 23, 62, 62), text("Level"), colour(SlateGrey) channel("level"),range(0,20, 10,0.5,0.001), fontcolour(white) | |||
rslider bounds( 60, 23, 62, 62), text("Power"), colour(SlateGrey) channel("mul"), range(0, 0.97, 0.1), fontcolour(white) | |||
rslider bounds(120, 23, 62, 62), text("Lowest"), colour(SlateGrey) channel("lh"), range(1, 40, 3,1,1), fontcolour(white) | |||
rslider bounds(180, 23, 62, 62), text("Number"), colour(SlateGrey) channel("nh"), range(1,200,10,1,1), fontcolour(white) | |||
rslider bounds(240, 23, 62, 62), text("Jitter"), colour(SlateGrey) channel("jitter"),range(0, 1, 0.4), fontcolour(white) | |||
rslider bounds(300, 23, 62, 62), text("Pan"), colour(SlateGrey) channel("pan"),range(0, 1, 0.5), fontcolour(white) | |||
label bounds(368, 19, 90, 11), text("Waveform"), fontcolour(white) | |||
combobox bounds(365, 30, 60, 18), channel("waveform"), value(3), text("cosine", "sine", "user") | |||
label bounds(368, 52, 90, 11), text("User Matrix"), fontcolour(white) | |||
checkbox bounds(368, 63, 10, 10), channel("part1"), FontColour(white), colour("lime"), value(1) | |||
checkbox bounds(378, 63, 10, 10), channel("part2"), FontColour(white), colour("lime"), value(0) | |||
checkbox bounds(388, 63, 10, 10), channel("part3"), FontColour(white), colour("lime"), value(1) | |||
checkbox bounds(398, 63, 10, 10), channel("part4"), FontColour(white), colour("lime"), value(0) | |||
checkbox bounds(408, 63, 10, 10), channel("part5"), FontColour(white), colour("lime"), value(0) | |||
checkbox bounds(418, 63, 10, 10), channel("part6"), FontColour(white), colour("lime"), value(0) | |||
checkbox bounds(368, 73, 10, 10), channel("part7"), FontColour(white), colour("lime"), value(1) | |||
checkbox bounds(378, 73, 10, 10), channel("part8"), FontColour(white), colour("lime"), value(0) | |||
checkbox bounds(388, 73, 10, 10), channel("part9"), FontColour(white), colour("lime"), value(0) | |||
checkbox bounds(398, 73, 10, 10), channel("part10"), FontColour(white), colour("lime"), value(1) | |||
checkbox bounds(408, 73, 10, 10), channel("part11"), FontColour(white), colour("lime"), value(1) | |||
checkbox bounds(418, 73, 10, 10), channel("part12"), FontColour(white), colour("lime"), value(0) | |||
rslider bounds(430, 23, 62, 62), text("Octave"), colour(SlateGrey) channel("octave"),range(-8, 8, -4,1,1), fontcolour(white) | |||
} | |||
;POLYPHONY | |||
image bounds(510, 6,170, 90), colour("DarkSlateGrey"), outline("white"), line(2), shape("sharp"), plant("polyphony"){ ;polyphony | |||
label bounds( 35, 5,100, 15), text("Polyphony"), fontcolour(white) | |||
button bounds( 10, 24, 70, 25), text("mono", "poly"), channel("monopoly"), value(1), fontcolour("lime") | |||
rslider bounds(110, 26, 60, 60), text("Leg.Time"), channel("LegTim"), range(0.01, 15, 0.05, 0.25, 0.00001), fontcolour(white) colour(SlateGrey) | |||
label bounds( 37, 54, 90, 11), text("Mode"), fontcolour(white) | |||
combobox bounds( 10, 65, 90, 18), channel("PortMode"), value(1), text("Fixed", "Proportional") | |||
} | |||
;REVERB | |||
image bounds(710,101,120, 90), colour("DarkSlateGrey"), outline("white"), line(2), shape("sharp"), plant("reverb"){ ;reverb | |||
label bounds( 35, 5,100, 15), text("Reverb"), fontcolour(white) | |||
rslider bounds( 0, 23, 60, 60), text("Mix"), channel("RvbMix"), range(0, 1, 0.3), fontcolour(white) colour(SlateGrey) | |||
rslider bounds( 60, 23, 60, 60), text("Size"), channel("RvbSize"), range(0.3, 1, 0.7), fontcolour(white) colour(SlateGrey) | |||
} | |||
;PITCH BEND | |||
image bounds(685, 6,185, 90), colour("DarkSlateGrey"), outline("white"), line(2), shape("sharp"), plant("pitchbend"){ ;pitch bend | |||
label bounds( 52, 5,100, 15), text("Pitch Bend"), fontcolour(white) | |||
rslider bounds( 0, 23, 60, 60), fontcolour("white"), text("< Bend"), channel("BendDown"), range(-1,0, 0, 1,0.001), colour(SlateGrey) | |||
rslider bounds( 60, 23, 60, 60), fontcolour("white"), text("Bend >"), channel("BendUp"), range(0, 1, 0, 1,0.001), colour(SlateGrey) | |||
rslider bounds(120, 23, 60, 60), fontcolour("white"), text("Bend Rng."), channel("BendRange"), range(1, 24, 12, 1,1), colour(SlateGrey) | |||
} | |||
;MULTIPLIER ENVELOPE | |||
image bounds( 10,101,305, 90), colour("DarkSlateGrey"), outline("white"), line(2), shape("sharp"), plant("multiplierenvelope"){ ;multiplier envelope | |||
label bounds( 83, 5,160, 15), text("Multiplier Envelope"), fontcolour(white) | |||
rslider bounds( 0, 23, 62, 62), text("Att"), colour(SlateGrey) channel("MAtt"),range(0, 8.000, 0.01, 0.375,0.0001), fontcolour(white) | |||
rslider bounds( 60, 23, 62, 62), text("Lev"), colour(SlateGrey) channel("MLev"),range(0, 1.000, 0.6), fontcolour(white) | |||
rslider bounds(120, 23, 62, 62), text("Dec"), colour(SlateGrey) channel("MDec"),range(0, 8.000, 3, 0.375,0.0001), fontcolour(white) | |||
rslider bounds(180, 23, 62, 62), text("Sus"), colour(SlateGrey) channel("MSus"),range(0, 1.000, 0), fontcolour(white) | |||
rslider bounds(240, 23, 62, 62), text("Rel"), colour(SlateGrey) channel("MRel"),range(0, 8.000, 0.1, 0.375,0.0001), fontcolour(white) | |||
} | |||
;LOW CUT | |||
image bounds(320,101,125, 90), colour("DarkSlateGrey"), outline("white"), line(2), shape("sharp"), plant("lowcut"){ ;Low Cut | |||
checkbox bounds( 30, 6, 70, 12), text("Low Cut") channel("LowCutOnOff"), FontColour(white), colour("lime") | |||
rslider bounds( 0, 23, 62, 62), text("Low Cut"), colour(SlateGrey) channel("LowCut"),range(0, 30.00, 0,1,0.0011), fontcolour(white) | |||
rslider bounds( 60, 23, 62, 62), text("Lo Poles"), colour(SlateGrey) channel("LowPoles"),range(2, 30, 2,1,1), fontcolour(white) | |||
} | |||
;HIGH CUT | |||
image bounds(450,101,125, 90), colour("DarkSlateGrey"), outline("white"), line(2), shape("sharp"), plant("highcut"){ ;High Cut | |||
checkbox bounds( 28, 6, 70, 12), text("High Cut") channel("HighCutOnOff"), FontColour(white), colour("lime"), value(1) | |||
rslider bounds( 2, 23, 62, 62), text("High Cut"), colour(SlateGrey) channel("HighCut"),range(1, 100.00, 7,0.25,0.0001), fontcolour(white) | |||
rslider bounds( 62, 23, 62, 62), text("Hi Poles"), colour(SlateGrey) channel("HighPoles"),range(2, 30, 8,1,1), fontcolour(white) | |||
} | |||
;AMPLITUDE ENVELOPE | |||
image bounds( 10,196,305, 90), colour("DarkSlateGrey"), outline("white"), line(2), shape("sharp"), plant("amplitudeenvelope"){ ;amplitude envelope | |||
label bounds( 83, 5,160, 15), text("Amplitude Envelope"), fontcolour(white) | |||
rslider bounds( 0, 23, 62, 62), text("Att"), colour(SlateGrey) channel("AAtt"),range(0, 8.000, 0, 0.375,0.0001), fontcolour(white) | |||
rslider bounds( 60, 23, 62, 62), text("Lev"), colour(SlateGrey) channel("ALev"),range(0, 1.000, 1), fontcolour(white) | |||
rslider bounds(120, 23, 62, 62), text("Dec"), colour(SlateGrey) channel("ADec"),range(0, 8.000, 3, 0.375,0.0001), fontcolour(white) | |||
rslider bounds(180, 23, 62, 62), text("Sus"), colour(SlateGrey) channel("ASus"),range(0, 1.000, 0), fontcolour(white) | |||
rslider bounds(240, 23, 62, 62), text("Rel"), colour(SlateGrey) channel("ARel"),range(0, 8.000, 0.05, 0.375,0.0001), fontcolour(white) | |||
} | |||
;MODULATION | |||
image bounds(320,196,485, 90), colour("DarkSlateGrey"), outline("white"), line(2), shape("sharp"), plant("modulation"){ ;MODULATION | |||
label bounds(203, 5,100, 15), text("Modulation"), fontcolour(white) | |||
rslider bounds( 2, 23, 62, 62), text("Mod.Depth"), colour(SlateGrey) channel("mod"), range(0, 1.00, 0.7), fontcolour(white) | |||
rslider bounds( 62, 23, 62, 62), text("Delay"), colour(SlateGrey) channel("VDel"), range(0, 4.00, 0), fontcolour(white) | |||
rslider bounds(122, 23, 62, 62), text("Rise"), colour(SlateGrey) channel("VRis"), range(0, 5.00, 1.5), fontcolour(white) | |||
rslider bounds(182, 23, 62, 62), text("Rate"), colour(SlateGrey) channel("VRate"), range(0,30.00, 2.7), fontcolour(white) | |||
rslider bounds(242, 23, 62, 62), text("Rate Rnd."), colour(SlateGrey) channel("VRatRnd"),range(0, 2.00, 0.5), fontcolour(white) | |||
rslider bounds(302, 23, 62, 62), text("Vib.Dep."), colour(SlateGrey) channel("VibDep"),range(0, 1.00, 0.2), fontcolour(white) | |||
rslider bounds(362, 23, 62, 62), text("Trem.Dep."), colour(SlateGrey) channel("TremDep"),range(0, 0.5, 0.3), fontcolour(white) | |||
rslider bounds(422, 23, 62, 62), text("Tone Dep."), colour(SlateGrey) channel("ToneDep"),range(0, 4.00, 0), fontcolour(white) | |||
} | |||
;NOISE | |||
image bounds(580,101,125, 90), colour("DarkSlateGrey"), outline("white"), line(2), shape("sharp"), plant("noise"){ ;NOISE | |||
label bounds( 40, 5,100, 15), text("Noise"), fontcolour(white) | |||
rslider bounds( 2, 23, 62, 62), text("Depth"), colour(SlateGrey) channel("NoiseAmp"),range(0,300.00, 0, 1, 0.0001), fontcolour(white) | |||
rslider bounds( 62, 23, 62, 62), text("Damp"), colour(SlateGrey) channel("NoiseDamp"),range(15, 10000, 1000, 0.5, 0.01), fontcolour(white) | |||
} | |||
keyboard pos(0, 295), size(875, 80) | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-dm0 -n -+rtmidi=null -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 16 | |||
nchnls = 2 | |||
0dbfs = 1 ;MAXIMUM AMPLITUDE | |||
seed 0 | |||
massign 0,2 | |||
;Author: Iain McCurdy (2012) | |||
gicos ftgen 0,0,131072,9,1,1,90 ;FUNCTION TABLE THAT STORES A SINGLE CYCLE OF A COSINE WAVE | |||
gisine ftgen 0,0,131072,10,1 ;A SINE WAVE. USED BY THE LFOs. | |||
giwave ftgen 999,0,131073,10,1,0,1 ;USER WAVEFORM | |||
gasendL,gasendR init 0 | |||
;FUNCTION TABLE USED TO RE-MAP THE RELATIONSHIP BETWEEN VELOCITY AND ATTACK TIME | |||
giattscl ftgen 0,0,128,-16,2,128,-10,0.005 | |||
giNAttScl ftgen 0,0,128,-16,8,128,-4,0.25 | |||
gkactive init 0 ; Will contain number of active instances of instr 3 when legato mode is chosen. NB. notes in release stage will not be regarded as active. | |||
opcode FreqShifter,a,aki | |||
ain,kfshift,ifn xin ;READ IN INPUT ARGUMENTS | |||
areal, aimag hilbert ain ;HILBERT OPCODE OUTPUTS TWO PHASE SHIFTED SIGNALS, EACH 90 OUT OF PHASE WITH EACH OTHER | |||
asin oscili 1, kfshift, ifn, 0 | |||
acos oscili 1, kfshift, ifn, 0.25 | |||
;RING MODULATE EACH SIGNAL USING THE QUADRATURE OSCILLATORS AS MODULATORS | |||
amod1 = areal * acos | |||
amod2 = aimag * asin | |||
;UPSHIFTING OUTPUT | |||
aFS = (amod1 - amod2) | |||
xout aFS ;SEND AUDIO BACK TO CALLER INSTRUMENT | |||
endop | |||
opcode SsplinePort,k,KkkO ;DEFINE OPCODE | |||
knum,kporttime,kcurve,iopt xin ;READ IN INPUT ARGUMENTS | |||
kout init i(knum) ;INITIALISE TO OUTPUT VALUE (PORTAMENTO APPLIED VALUE) | |||
ktrig changed knum ;...GENERATE A TRIGGER IS A NEW NOTE NUMBER IS GENERATED (FROM INSTR. 1) | |||
if ktrig=1 then ;IF A NEW (LEGATO) NOTE HAS BEEN PRESSED | |||
reinit S_CURVE ;BEGIN A REINITIALISATION PASS FROM LABEL | |||
endif ;END OF CONDITIONAL BRANCH | |||
S_CURVE: ;A LABEL. REINITIALISATION BEGINS FROM HERE. | |||
if iopt!=0 then ;IF ABSOLUTE/PROPORTIONAL SWITCH IS ON... (I.E. PROPORTIONAL) | |||
idiff = 1+abs(i(knum)-i(kout)) ;ABSOLUTE DIFFERENCE BETWEEN OLD NOTE AND NEW NOTE IN STEPS (+ 1) | |||
kporttime = kporttime*idiff ;SCALE PORTAMENTO TIME ACCORDING TO THE NOTE GAP | |||
endif ;END OF CONDITIONAL BRANCH | |||
imid = i(kout)+((i(knum)-i(kout))/2) ;SPLINE MID POINT VALUE | |||
isspline ftgentmp 0,0,4096,-16,i(kout),4096*0.5,i(kcurve),imid,(4096/2)-1,-i(kcurve),i(knum) ;GENERATE 'S' SPLINE | |||
kspd = i(kporttime)/kporttime ;POINTER SPEED AS A RATIO (WITH REFERENCE TO THE ORIGINAL DURATION) | |||
kptr init 0 ;POINTER INITIAL VALUE | |||
kout tablei kptr,isspline ;READ VALUE FROM TABLE | |||
kptr limit kptr+((ftlen(isspline)/(i(kporttime)*kr))*kspd), 0, ftlen(isspline)-1 ;INCREMENT THE POINTER BY THE REQUIRED NUMBER OF TABLE POINTS IN ONE CONTROL CYCLE AND LIMIT IT BETWEEN FIRST AND LAST TABLE POINT - FINAL VALUE WILL BE HELD IF POINTER ATTEMPTS TO EXCEED TABLE DURATION | |||
rireturn ;RETURN FROM REINITIALISATION PASS | |||
xout kout ;SEND PORTAMENTOED VALUES BACK TO CALLER INSTRUMENT | |||
endop | |||
instr 1 ; read in widgets | |||
kporttime linseg 0,0.001,0.05 | |||
gkmul chnget "mul" | |||
gklh chnget "lh" | |||
gknh chnget "nh" | |||
gkjitter chnget "jitter" | |||
gkwaveform chnget "waveform" | |||
gkoctave chnget "octave" | |||
gkpart1 chnget "part1" | |||
gkpart2 chnget "part2" | |||
gkpart3 chnget "part3" | |||
gkpart4 chnget "part4" | |||
gkpart5 chnget "part5" | |||
gkpart6 chnget "part6" | |||
gkpart7 chnget "part7" | |||
gkpart8 chnget "part8" | |||
gkpart9 chnget "part9" | |||
gkpart10 chnget "part10" | |||
gkpart11 chnget "part11" | |||
gkpart12 chnget "part12" | |||
ktrig changed gkpart1,gkpart2,gkpart3,gkpart4,gkpart5,gkpart6,gkpart7,gkpart8,gkpart9,gkpart10,gkpart11,gkpart12 | |||
if ktrig==1 then | |||
reinit USER_WAVEFORM | |||
endif | |||
USER_WAVEFORM: | |||
giwave ftgen 999,0,131073,10,i(gkpart1),i(gkpart2),i(gkpart3),i(gkpart4),i(gkpart5),i(gkpart6),i(gkpart7),i(gkpart8),i(gkpart9),i(gkpart10),i(gkpart11),i(gkpart12) ;USER WAVEFORM | |||
rireturn | |||
gkmonopoly chnget "monopoly" | |||
printk2 gkmonopoly | |||
gkLegTim chnget "LegTim" | |||
gkPortMode chnget "PortMode" | |||
gkpan chnget "pan" | |||
gklevel chnget "level" | |||
gkRvbMix chnget "RvbMix" | |||
gkRvbSize chnget "RvbSize" | |||
gkMAtt chnget "MAtt" ; multiplier envelope | |||
gkMLev chnget "MLev" | |||
gkMDec chnget "MDec" | |||
gkMSus chnget "MSus" | |||
gkMRel chnget "MRel" | |||
gkAAtt chnget "AAtt" ; amplitude envelope | |||
gkALev chnget "ALev" | |||
gkADec chnget "ADec" | |||
gkASus chnget "ASus" | |||
gkARel chnget "ARel" | |||
gkLowCutOnOff chnget "LowCutOnOff" | |||
gkLowCut chnget "LowCut" | |||
gkLowPoles chnget "LowPoles" | |||
gkHighCutOnOff chnget "HighCutOnOff" | |||
gkHighCut chnget "HighCut" | |||
gkHighPoles chnget "HighPoles" | |||
gkmod chnget "mod" ; modulation | |||
gkVDel chnget "VDel" | |||
gkVRis chnget "VRis" | |||
gkVRate chnget "VRate" | |||
gkVRatRnd chnget "VRatRnd" | |||
gkVibDep chnget "VibDep" | |||
gkTremDep chnget "TremDep" | |||
gkToneDep chnget "ToneDep" | |||
gkNoiseAmp chnget "NoiseAmp" ; noise | |||
gkNoiseDamp chnget "NoiseDamp" | |||
gkBendDown chnget "BendDown" | |||
gkBendUp chnget "BendUp" | |||
gkBendRange chnget "BendRange" | |||
gkPchBend portk (gkBendDown+gkBendUp)*gkBendRange, kporttime | |||
endin | |||
instr 2 ;triggered via MIDI | |||
gkNoteTrig init 1 ;at the beginning of a new note set note trigger flag to '1' | |||
inum notnum ;read in midi note number | |||
givel veloc 0,1 ;read in midi note velocity | |||
gknum = inum ;update a global krate variable for note pitch | |||
;============================================================================================================================================================ | |||
if i(gkmonopoly)==0 then ; if we are *not* in legato mode... | |||
; METHOD 1: calling sub-instruments using event_1, fractional p1s and turnoff2s. (problematic on windows) | |||
; event_i "i",p1+1+(inum*0.001),0,-1,inum ; call sound producing instr | |||
;krel release ; release flag (1 when note is released, 0 otherwise) | |||
;if krel==1 then ; when note is released... | |||
; turnoff2 p1+1+(inum*0.001),4,1 ; turn off the called instrument | |||
;endif ; end of conditional | |||
; METHOD 2: using subinstr (problematic on windows and mac) | |||
;a1,a2 subinstr 3,inum | |||
; outs a1,a2 | |||
; METHOD 3: all instr code within the same instrument (the safest option on windows and mac, if rather inelegant) | |||
kporttime linseg 0,0.001,1 ;portamento time function rises quickly from zero to a held value | |||
kglisstime = kporttime*gkLegTim ;scale portamento time function with value from GUI knob widget | |||
/* MODULATION */ | |||
krate randomi gkVRate-gkVRatRnd,gkVRate+gkVRatRnd,1,1 | |||
kModRise linseg 0,i(gkVDel)+0.0001, 0, i(gkVRis)+0.0001, 1 | |||
kmod lfo gkmod*kModRise,krate,0 | |||
kporttime linseg 0,0.001,1 ;CREATE A FUNCTION THAT RISES RAPIDLY FROM ZERO TO A FIXED VALUE THAT WILL BE USED FOR PORTAMENTO TIME | |||
;------------------------------------------------------------------------------------------------------------ | |||
;PITCH JITTER (THIS WILL BE USED TO ADD HUMAN-PLAYER REALISM) | |||
;------------------------------------------------------------------------------------------------------------ | |||
; AMP | MIN_FREQ. | MAX_FREQ | |||
kPitchJit jitter 0.05*gkjitter*4, 1, 20 | |||
;------------------------------------------------------------------------------------------------------------ | |||
;AMPLITUDE JITTER (THIS WILL BE USED TO ADD HUMAN-PLAYER REALISM) | |||
;------------------------------------------------------------------------------------------------------------ | |||
; AMP | MIN_FREQ. | MAX_FREQ | |||
kAmpJit jitter 0.1*gkjitter*4, 0.2, 1 | |||
kAmpJit = kAmpJit+1 ;OFFSET SO IT MODULATES ABOUT '1' INSTEAD OF ABOUT ZERO | |||
knum = inum+kPitchJit ;DERIVE K-RATE NOTE NUMBER VALUE INCORPORATING PITCH BEND, VIBRATO, AND PITCH JITTER | |||
/* OSCILLATOR */ | |||
kmul portk gkmul, kporttime*0.1 | |||
;kMulEnv linsegr 0, i(gkMAtt)+0.0001, i(gkMLev), i(gkMDec)+0.0001, i(gkMSus), i(gkMRel)+0.0001, 0 | |||
kMulEnv expsegr 0.001, i(gkMAtt)+0.0001, i(gkMLev)+0.001, i(gkMDec)+0.0001, i(gkMSus)+0.001, i(gkMRel)+0.0001, 0.001 | |||
kMulEnv = kMulEnv + 0.001 ; offset | |||
kmul = kmul+kMulEnv+(kmod*gkToneDep) | |||
kmul limit kmul,0,0.9 | |||
knum = knum + gkPchBend + (kmod*gkVibDep) | |||
ifn = ( i(gkwaveform) < 3 ? (gicos+i(gkwaveform)-1) : giwave) | |||
knum = knum+(gkoctave*12) | |||
asig gbuzz (kAmpJit*0.1)*(1+(kmod*gkTremDep*0.9)), cpsmidinn(knum), gknh, gklh, kmul, ifn;gicos+i(gkwaveform)-1 | |||
/* NOISE */ | |||
kNoiseAmp expcurve kmul,40 | |||
kNoiseAmp scale kNoiseAmp,2,0.1 | |||
anoise gauss kNoiseAmp*gkNoiseAmp | |||
anoise butlp anoise,gkNoiseDamp | |||
asig = asig * (1+anoise) | |||
/* LOW CUT / HIGH CUT FILTERS */ | |||
;FILTER | |||
if gkLowCutOnOff=1 then | |||
kLowCut portk gkLowCut,kporttime*0.1 | |||
kLowCut limit cpsmidinn(knum)*kLowCut,20,sr/2 | |||
ktrig changed gkLowPoles | |||
if ktrig=1 then | |||
reinit RESTART_LOWCUT | |||
endif | |||
RESTART_LOWCUT: | |||
asig clfilt asig,kLowCut,1,i(gkLowPoles) | |||
rireturn | |||
endif | |||
if gkHighCutOnOff=1 then | |||
kHighCut portk gkHighCut,kporttime*0.1 | |||
kHighCut limit cpsmidinn(knum)*kHighCut,20,sr/2 | |||
ktrig changed gkHighPoles | |||
if ktrig=1 then | |||
reinit RESTART_HIGHCUT | |||
endif | |||
RESTART_HIGHCUT: | |||
asig clfilt asig,kHighCut,0,i(gkHighPoles) | |||
rireturn | |||
endif | |||
aenv linsegr 0,i(gkAAtt)+0.0001,i(gkALev),i(gkADec),i(gkASus),i(gkARel),0 ;AMPLITUDE ENVELOPE | |||
asig = asig * aenv | |||
klevel portk gklevel,kporttime*0.1 | |||
kpan portk gkpan,kporttime*0.1 | |||
kRvbMix portk gkRvbMix,kporttime*0.1 | |||
aL,aR pan2 asig*klevel,kpan ;scale amplitude level and create stereo panned signal | |||
outs aL*(1-gkRvbSize), aR*(1-gkRvbSize) ;SEND AUDIO TO THE OUTPUTS | |||
gasendL = gasendL+aL*kRvbMix | |||
gasendR = gasendR+aR*kRvbMix | |||
;============================================================================================================================================================ | |||
else ;otherwise... (i.e. legato mode) | |||
;iactive active p1+1 ;check to see if there is already a note active... | |||
iactive = i(gkactive) ;number of active notes of instr 3 (note in release are disregarded) | |||
if iactive==0 then ;...if no notes are active | |||
event_i "i",p1+1,0,-1 ;...start a new held note | |||
endif | |||
endif | |||
endin | |||
instr 3 ;gbuzz instrument. MIDI notes are directed here. | |||
kporttime linseg 0,0.001,1 ;portamento time function rises quickly from zero to a held value | |||
kglisstime = kporttime*gkLegTim ;scale portamento time function with value from GUI knob widget | |||
/* MODULATION */ | |||
krate randomi gkVRate-gkVRatRnd,gkVRate+gkVRatRnd,1,1 | |||
if gkNoteTrig==1 then | |||
reinit RESTART_MOD_ENV | |||
endif | |||
RESTART_MOD_ENV: | |||
kModRise linseg 0,i(gkVDel)+0.0001, 0, i(gkVRis)+0.0001, 1 | |||
kmod lfo gkmod*kModRise,krate,0 | |||
rireturn | |||
gkNoteTrig = 0 ;reset new-note trigger (in case it was '1') | |||
if i(gkmonopoly)==1 then ;if we are in legato mode... | |||
krel release ;sense when note has been released | |||
gkactive = 1-krel ;if note is in release, gkactive=0, otherwise =1 | |||
knum SsplinePort gknum,kglisstime,1,i(gkPortMode)-1 | |||
kactive active p1-1 ;...check number of active midi notes (previous instrument) | |||
if kactive==0 then ;if no midi notes are active... | |||
turnoff ;... turn this instrument off | |||
endif | |||
else ;otherwise... (polyphonic / non-legato mode) | |||
knum = p4 ;pitch equal to the original note pitch | |||
endif | |||
ivel init givel | |||
;------------------------------------------------------------------------------------------------------------ | |||
;PITCH JITTER (THIS WILL BE USED TO ADD HUMAN-PLAYER-LIKE INSTABILITY) | |||
;------------------------------------------------------------------------------------------------------------ | |||
; AMP | MIN_FREQ. | MAX_FREQ | |||
kPitchJit jitter 0.05*gkjitter*4, 1, 20 | |||
;------------------------------------------------------------------------------------------------------------ | |||
;AMPLITUDE JITTER (THIS WILL BE USED TO ADD HUMAN-PLAYER-LIKE INSTABILITY) | |||
;------------------------------------------------------------------------------------------------------------ | |||
; AMP | MIN_FREQ. | MAX_FREQ | |||
kAmpJit jitter 0.1*gkjitter*4, 0.2, 1 | |||
kAmpJit = kAmpJit+1 ;OFFSET SO IT MODULATES ABOUT '1' INSTEAD OF ABOUT ZERO | |||
knum = knum+kPitchJit ;DERIVE K-RATE NOTE NUMBER VALUE INCORPORATING PITCH BEND, VIBRATO, AND PITCH JITTER | |||
/* OSCILLATOR */ | |||
kmul portk gkmul, kporttime*0.1 | |||
;kMulEnv linsegr 0, i(gkMAtt)+0.0001, i(gkMLev), i(gkMDec)+0.0001, i(gkMSus), i(gkMRel)+0.0001, 0 | |||
kMulEnv expsegr 0.001, i(gkMAtt)+0.0001, i(gkMLev)+0.001, i(gkMDec)+0.0001, i(gkMSus)+0.001, i(gkMRel)+0.0001, 0.001 | |||
kMulEnv = kMulEnv + 0.001 ; offset | |||
kmul = kmul+kMulEnv+(kmod*gkToneDep) | |||
kmul limit kmul,0,0.9 | |||
knum = knum + gkPchBend + (kmod*gkVibDep) | |||
ifn = ( i(gkwaveform) < 3 ? (gicos+i(gkwaveform)-1) : giwave) | |||
asig gbuzz (kAmpJit*0.1)*(1+(kmod*gkTremDep*0.9)), cpsmidinn(knum+(gkoctave*12)), gknh, gklh, kmul, ifn;gicos+i(gkwaveform)-1 | |||
/* NOISE */ | |||
kNoiseAmp expcurve kmul,40 | |||
kNoiseAmp scale kNoiseAmp,2,0.1 | |||
anoise gauss kNoiseAmp*gkNoiseAmp | |||
anoise butlp anoise,gkNoiseDamp | |||
asig = asig * (1+anoise) | |||
/* LOW CUT / HIGH CUT FILTERS */ | |||
;FILTER | |||
if gkLowCutOnOff=1 then | |||
kLowCut portk gkLowCut,kporttime*0.1 | |||
kLowCut limit cpsmidinn(knum)*kLowCut,20,sr/2 | |||
ktrig changed gkLowPoles | |||
if ktrig=1 then | |||
reinit RESTART_LOWCUT | |||
endif | |||
RESTART_LOWCUT: | |||
asig clfilt asig,kLowCut,1,i(gkLowPoles) | |||
endif | |||
if gkHighCutOnOff=1 then | |||
kHighCut portk gkHighCut,kporttime*0.1 | |||
kHighCut limit cpsmidinn(knum)*kHighCut,20,sr/2 | |||
ktrig changed gkHighPoles | |||
if ktrig=1 then | |||
reinit RESTART_HIGHCUT | |||
endif | |||
RESTART_HIGHCUT: | |||
asig clfilt asig,kHighCut,0,i(gkHighPoles) | |||
rireturn | |||
endif | |||
aenv linsegr 0,i(gkAAtt)+0.0001,i(gkALev),i(gkADec),i(gkASus),i(gkARel),0 ;AMPLITUDE ENVELOPE | |||
asig = asig * aenv | |||
klevel portk gklevel,kporttime*0.1 | |||
kpan portk gkpan,kporttime*0.1 | |||
kRvbMix portk gkRvbMix,kporttime*0.1 | |||
aL,aR pan2 asig*klevel,kpan ;scale amplitude level and create stereo panned signal | |||
outs aL*(1-gkRvbSize), aR*(1-gkRvbSize) ;SEND AUDIO TO THE OUTPUTS | |||
gasendL = gasendL+aL*kRvbMix | |||
gasendR = gasendR+aR*kRvbMix | |||
endin | |||
instr 5 ;reverb | |||
if gkRvbMix==0 kgoto SKIP_REVERB | |||
aL,aR reverbsc gasendL,gasendR,gkRvbSize,12000 | |||
outs aL,aR | |||
clear gasendL,gasendR | |||
SKIP_REVERB: | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 3600 ; read widgets | |||
i 5 0 3600 ; reverb | |||
f 0 3600 | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,363 @@ | |||
hsboscil_synth.csd | |||
Synthesizer is divided into seven panels. | |||
Amplitude | |||
--------- | |||
Amp - amplitude control | |||
Att. - amplitude envelope attack time | |||
Dec. - amplitude envelope decay time | |||
Sus. - amplitude envelope sustain level | |||
Rel. - amplitude envelope release time | |||
Mod.Shape- shape used for amplitude modulation (tremolo). Choose from sine shaped, random splines, random sample and hold (randomh) or square wave. | |||
Rate - rate of amplitude LFO (tremolo) | |||
Depth - depth of amplitude LFO | |||
Delay - delay time before amplitude LFO begins | |||
Rise - time over which amplitude LFO depth rises from zero to its prescribed value | |||
Brightness - brightness is really just a description of where the emphasis is in the stack of octave spaced tones that hsboscil produces | |||
---------- | |||
Brite - manual brightness control | |||
Vel. - amount of velocity to brightness control | |||
Att. - brightness envelope attack time | |||
Att.Lev - brightness envelope attack level | |||
Dec. - brightness envelope decay time | |||
Sus. - brightness envelope sustain level | |||
Rel. - brightness envelope release time | |||
Rel.Lev - brightness envelope release level | |||
Oct.Cnt.- Number of octave spaced partials in a tone | |||
Mod.Shape- shape used for brightness modulation. Choose from sine shaped, random splines, random sample and hold (randomh) or square wave. | |||
Rate - rate of brightness LFO | |||
Depth - depth of brightness LFO | |||
Delay - delay time before brightness LFO begins | |||
Rise - time over which brightness LFO depth rises from zero to its prescribed value | |||
Noise - interpolated gaussian modulation is applied to the pitch (tone) parameter which, at high rates/frequencies results in the addition of a noise component in the tone | |||
----- | |||
Rate - rate/frequency of noise modulation | |||
Depth - depth of noise modulation | |||
Reverb - the screverb opcode is used | |||
------ | |||
Mix - amount of reverb that is mixed into the output. When mix is zero the effect is bypassed. | |||
Size - size of the virtual space created by the reverb effect | |||
Pitch Modulation - modulation of the tone (pitch) parameter. This will be at a much slower rate than that applied using the 'noise' function | |||
---------------- | |||
Mod.Shape- shape used for pitch modulation. Choose from sine shaped, random splines, random sample and hold (randomh) or square wave. | |||
Rate - rate of pitch modulation LFO | |||
Depth - depth of pitch modulation LFO | |||
Delay - delay time before pitch modulation LFO begins | |||
Rise - time over which pitch modulation LFO depth rises from zero to its prescribed value | |||
Freq.Shift - a frequency shifting effect | |||
---------- | |||
Freq. - frequency by which the signal will be shifted | |||
Chorus - a stereo chorus effect. Two chorus voices are created which the panning of which is modulated randomly. Delay time/pitch modulations are random rather than cyclical. | |||
------ | |||
Mix - Amount of chorussed signal that is mixed into the output | |||
Depth - Depth of modualtion used in the chorus effect | |||
Rate - Rate of modulation used in the chorus effect | |||
<Cabbage> | |||
form caption("hsboscil Synth") size(590, 480), pluginID("hsbo") | |||
snapshot bounds( 5,455,200, 20), preset("hsboscil"), master(1), items("Preset 1", "Preset 2", "Preset 3", "Preset 4", "Preset 5", "Preset 6", "Preset 7", "Preset 8", "Preset 9", "Preset 10") | |||
;AMPLITUDE | |||
groupbox bounds(0, 0, 590, 100), colour( 10, 15, 30, 100) text("Amplitude"), fontcolour(255,0,0){ | |||
rslider bounds( 5, 30, 60, 60), text("Amp."), channel("amp"), range(0, 1, 0.3) | |||
line bounds( 65, 30, 2, 60), colour("DarkSlateGrey") | |||
rslider bounds( 70, 30, 60, 60), text("Att."), channel("AAtt"), range( 0, 8.00, 0.3,0.5) | |||
rslider bounds(120, 30, 60, 60), text("Dec."), channel("ADec"), range( 0, 8.00, 0.01,0.5) | |||
rslider bounds(170, 30, 60, 60), text("Sus."), channel("ASus"), range( 0, 1.00, 0.5,0.5) | |||
rslider bounds(220, 30, 60, 60), text("Rel."), channel("ARel"), range(0.01, 8, 0.3,0.5) | |||
line bounds(285, 30, 2, 60), colour("DarkSlateGrey") | |||
label bounds(305, 35, 70, 12), text("Mod.Shape") | |||
combobox bounds(300, 50, 70, 20), channel("amplfo"), value(2), text("sine", "splines", "S+H", "square") | |||
rslider bounds(375, 30, 60, 60), text("Rate"), channel("ARte"), range(0, 16.0, 4) | |||
rslider bounds(425, 30, 60, 60), text("Depth"), channel("ADep"), range(0, 1.00, 1) | |||
rslider bounds(475, 30, 60, 60), text("Delay"), channel("ADel"), range(0, 2.00, 0, 0.5) | |||
rslider bounds(525, 30, 60, 60), text("Rise"), channel("ARis"), range(0, 2.00, 0.1, 0.5) | |||
} | |||
;BRIGHTNESS | |||
groupbox bounds(0, 100,450,170), colour( 6, 18, 22, 100), text("Brightness"), fontcolour(205,10,10){ | |||
rslider bounds( 5,135, 60, 60), text("Brite"), channel("brite"), range(-6, 6.00, -2) | |||
rslider bounds( 5,200, 60, 60), text("Vel."), channel("BVelDep"), range(0, 6.00, 3) | |||
rslider bounds( 65,135, 60, 60), text("Oct.Cnt."), channel("octcnt"), range(2, 20, 3, 1, 1) | |||
line bounds(130,127, 2, 60), colour("DarkSlateGrey") | |||
rslider bounds(135,135, 60, 60), text("Att."), channel("BAtt"), range(0, 8.00, 0.1,0.5) | |||
rslider bounds(185,135, 60, 60), text("Att.Lev."), channel("BAttLev"), range(-6.00, 6, 1) | |||
rslider bounds(235,135, 60, 60), text("Dec."), channel("BDec"), range(0, 8.00, 0.1,0.5) | |||
rslider bounds(285,135, 60, 60), text("Sus."), channel("BSus"), range(-6, 6.00, 0) | |||
rslider bounds(335,135, 60, 60), text("Rel."), channel("BRel"), range(0, 8.00, 0.01,0.5) | |||
rslider bounds(385,135, 60, 60), text("Rel.Lev."), channel("BRelLev"), range(-4.00, 4, 0) | |||
line bounds( 90,200, 2, 60), colour("DarkSlateGrey") | |||
label bounds(120,205, 70, 12), text("Mod.Shape") | |||
combobox bounds(115,220, 70, 20), channel("britelfo"), value(2), text("sine", "splines", "S+H", "square") | |||
rslider bounds(185,200, 60, 60), text("Rate"), channel("BRte"), range(0, 30.0, 4) | |||
rslider bounds(235,200, 60, 60), text("Depth"), channel("BDep"), range(0, 6.00, 2) | |||
rslider bounds(285,200, 60, 60), text("Delay"), channel("BDel"), range(0, 2.00, 0.5, 0.5) | |||
rslider bounds(335,200, 60, 60), text("Rise"), channel("BRis"), range(0, 4.00, 1.5, 0.5) | |||
} | |||
;NOISE | |||
groupbox bounds(450, 100, 70,170), colour( 20, 7, 19, 100), text("Noise"), fontcolour(255,40,60){ | |||
rslider bounds(455, 135, 60, 60), text("Rate"), channel("NRte"), range(16,10000, 1000, 0.5) | |||
rslider bounds(455, 200, 60, 60), text("Depth"), channel("NDep"), range(0, 1.00, 0.05, 0.5) | |||
} | |||
;REVERB | |||
groupbox bounds(520, 100, 70,170), colour( 3, 25, 11, 100), text("Reverb"), fontcolour(255,0,100){ | |||
rslider bounds(525,135, 60, 60), text("Mix"), channel("RvbMix"), range(0, 1.00, 0.3) | |||
rslider bounds(525,200, 60, 60), text("Size"), channel("RvbSize"), range(0, 1.00, 0.82) | |||
} | |||
;PITCH MOD. | |||
groupbox bounds( 0,270,350,100), colour( 20, 25, 40, 100), text("Pitch Modulation"), fontcolour(255,100,0){ | |||
label bounds( 15,305, 65, 12), text("Mod.Shape") | |||
combobox bounds( 10,320, 65, 20), channel("pitchlfo"), value(1), text("sine", "splines", "S+H", "square") | |||
rslider bounds( 80,300, 60, 60), text("Rate"), channel("PRte"), range(0, 16.00, 0, 0.5) | |||
rslider bounds(130,300, 60, 60), text("Depth"), channel("PDep"), range(0, 1.00, 0) | |||
rslider bounds(180,300, 60, 60), text("Delay"), channel("PDel"), range(0, 2.00, 0, 0.5) | |||
rslider bounds(230,300, 60, 60), text("Rise"), channel("PRis"), range(0, 2.00, 0.1, 0.5) | |||
rslider bounds(280,300, 60, 60), text("Risset"), channel("TRate"), range(-3.00, 3, 0) | |||
} | |||
;FREQ. SHIFT | |||
groupbox bounds(350,270, 70,100), colour( 20, 5, 25, 100), text("Freq.Shift"), fontcolour(200,0,0){ | |||
rslider bounds(355,300, 60, 60), text("Freq."), channel("FShift"), range(-1000, 1000, -1000) | |||
} | |||
;CHORUS | |||
groupbox bounds(420,270,170,100), colour( 3, 10, 13, 100), text("Chorus"), fontcolour(255,200,0){ | |||
rslider bounds(425,300, 60, 60), text("Mix"), channel("ChoMix"), range(0, 1.00, 1) | |||
rslider bounds(475,300, 60, 60), text("Depth"), channel("ChoDep"), range(0, 0.100, 0.01,0.5,0.0001) | |||
rslider bounds(525,300, 60, 60), text("Rate"), channel("ChoRte"), range(0, 20.0, 4, 0.5) | |||
} | |||
keyboard pos(0, 370), size(590, 80) | |||
} | |||
image bounds(290, 455, 210, 20), colour(75, 85, 90, 100), plant("credit"){ | |||
label bounds(0.03, 0.15, .9, .7), text("Author: Iain McCurdy |2012|"), colour("white") | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-dm0 -n -+rtmidi=null -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 ;SAMPLE RATE | |||
ksmps = 32 ;NUMBER OF AUDIO SAMPLES IN EACH CONTROL CYCLE. HIGHER ksmps can result in quantisation noise in kbrite modulations. | |||
nchnls = 2 ;NUMBER OF CHANNELS (2=STEREO) | |||
0dbfs = 1 | |||
seed 0 | |||
massign 0,2 | |||
;Author: Iain McCurdy (2012) | |||
gisine ftgen 0,0,4096,10,1 | |||
giwfn ftgen 0, 0, 131072, 10, 1 ;A SINE WAVE | |||
gioctfn ftgen 0, 0, 1024, -19, 1, 0.5, 270, 0.5 ;A HANNING-TYPE WINDOW | |||
gasendL,gasendR init 0 | |||
opcode FreqShifter,a,aki | |||
ain,kfshift,ifn xin ;READ IN INPUT ARGUMENTS | |||
areal, aimag hilbert ain ;HILBERT OPCODE OUTPUTS TWO PHASE SHIFTED SIGNALS, EACH 90 OUT OF PHASE WITH EACH OTHER | |||
asin oscili 1, kfshift, ifn, 0 | |||
acos oscili 1, kfshift, ifn, 0.25 | |||
;RING MODULATE EACH SIGNAL USING THE QUADRATURE OSCILLATORS AS MODULATORS | |||
amod1 = areal * acos | |||
amod2 = aimag * asin | |||
;UPSHIFTING OUTPUT | |||
aFS = (amod1 - amod2) | |||
xout aFS ;SEND AUDIO BACK TO CALLER INSTRUMENT | |||
endop | |||
instr 1 ;read in widgets | |||
gkamplfo chnget "amplfo" | |||
gkbritelfo chnget "britelfo" | |||
gkChoMix chnget "ChoMix" | |||
gkChoDep chnget "ChoDep" | |||
gkChoRte chnget "ChoRte" | |||
gkRvbMix chnget "RvbMix" | |||
gkRvbSize chnget "RvbSize" | |||
gkFShift chnget "FShift" | |||
gkNRte chnget "NRte" | |||
gkNDep chnget "NDep" | |||
gkpitchlfo chnget "pitchlfo" | |||
gkPDel chnget "PDel" | |||
gkPRis chnget "PRis" | |||
gkPRte chnget "PRte" | |||
gkPDep chnget "PDep" | |||
endin | |||
instr 2 ;hsboscil instrument. MIDI notes are directed here. | |||
kporttime linseg 0,0.001,0.01 ;PORTAMENTO TIME VALUE RISES QUICKLY FROM ZERO TO A HELD VALUE | |||
kamp chnget "amp" ;READ WIDGETS... | |||
iAAtt chnget "AAtt" ; | |||
iADec chnget "ADec" ; | |||
iASus chnget "ASus" ; | |||
iARel chnget "ARel" ; | |||
aenv linsegr 0.001,iAAtt+0.001,1,iADec+0.001,iASus,iARel+0.001,0.001 ;AMPLITUDE ENVELOPE | |||
iADel chnget "ADel" ; | |||
iARis chnget "ARis" ; | |||
kADep chnget "ADep" ; | |||
kARte chnget "ARte" ; | |||
kbrite chnget "brite" ; | |||
kbrite portk kbrite,kporttime | |||
koctcnt chnget "octcnt" ; | |||
iBVelDep chnget "BVelDep" ; | |||
iBAtt chnget "BAtt" ; | |||
iBAttLev chnget "BAttLev" ; | |||
iBDec chnget "BDec" ; | |||
iBSus chnget "BSus" ; | |||
iBRel chnget "BRel" ; | |||
iBRelLev chnget "BRelLev" ; | |||
kBEnv linsegr 0,iBAtt+0.001,iBAttLev,iBDec+0.001,iBSus,iBRel+0.001,iBRelLev ;'BRIGHTNESS' ENVELOPE | |||
iBDel chnget "BDel" ; | |||
iBRis chnget "BRis" ; | |||
kBDep chnget "BDep" ; | |||
kBRte chnget "BRte" ; | |||
kTRate chnget "TRate" ; | |||
ibasfreq cpsmidi ;READ MIDI NOTE PITCH | |||
ktrig changed koctcnt ;IF 'NUMBER OF OCTAVES' AS DEFINED BY WIDGET CHANGES GENERATE A TRIGGER | |||
if ktrig==1 then ;IF 'NUMBER OF OCTAVES' CHANGE TRIGGER HAS BEEN GENERATED... | |||
reinit UPDATE ;BEGIN A REINITIALISATION PASS FROM LABEL 'UPDATE' | |||
endif ;END OF CONDITIONAL | |||
UPDATE: ;LABEL 'UPDATE'. REINITIALISATION PASS BEGINS FROM HERE | |||
;AMPLITUDE LFO | |||
kdepth linseg 0,iADel+0.001,0,iARis+0.001,1 ;DEPTH OF MODULATION ENVELOPE | |||
if gkamplfo==1 then | |||
kALFO lfo (kdepth*kADep)/2,kARte,0 ;LFO (sine) | |||
elseif gkamplfo==2 then | |||
kALFO jspline (kdepth*kADep)/2,kARte,kARte | |||
elseif gkamplfo==3 then | |||
kALFO randomh -(kdepth*kADep)/2,(kdepth*kADep)/2,kARte | |||
kALFO port kALFO,0.001 ;smooth out the clicks | |||
else | |||
kALFO lfo (kdepth*kADep)/2,kARte,2 ;LFO (bi-square) | |||
kALFO port kALFO,0.001 ;smooth out the clicks | |||
endif | |||
kALFO = (kALFO+0.5) + (1 - kADep) ;OFFSET AND RESCALE LFO FUNCTION | |||
;VELOCITY TO AMPLITUDE | |||
iVelAmp veloc 0.2,1 ;READ IN MIDI NOTE VELOCITY AS A VALUE WITHIN THE RANGE 0.2 TO 1 | |||
;BRIGHTNESS LFO | |||
kdepth linseg 0,iBDel+0.001,0,iBRis+0.001,1 ;DEPTH OF MODULATION ENVELOPE | |||
if gkbritelfo==1 then | |||
kBLFO lfo kdepth*kBDep,kBRte,0 ;LFO (sine) | |||
elseif gkbritelfo==2 then | |||
kBLFO jspline kdepth*kBDep,kBRte,kBRte | |||
elseif gkbritelfo==3 then | |||
kBLFO randomh -kdepth*kBDep,kdepth*kBDep,kBRte | |||
kBLFO port kBLFO,0.004 ;smooth out the clicks | |||
else | |||
kBLFO lfo kdepth*kBDep,kBRte,2 ;LFO (bi-square) | |||
kBLFO port kBLFO,0.004 ;smooth out the clicks | |||
endif | |||
;VELOCITY TO BRIGHTNESS | |||
iBVel ampmidi iBVelDep ;MIDI NOTE VELOCITY USED TO DERIVE A VALUE THAT WILL INFLUENCE 'BRIGHTNESS' | |||
;NOISE | |||
knoise gaussi 1, gkNDep, gkNRte | |||
;RISSET | |||
kRisset lfo 1,kTRate,4 ;'RISSET GLISSANDO' FUNCTION | |||
;PITCH MODULATION | |||
kPDepth linseg 0,i(gkPDel)+0.001,0,i(gkPRis)+0.001,1 ;DEPTH OF MODULATION ENVELOPE | |||
if gkpitchlfo==1 then | |||
kPLFO lfo gkPDep*kPDepth,gkPRte,0 ;LFO | |||
elseif gkpitchlfo==2 then | |||
kPLFO jspline gkPDep*kPDepth,gkPRte,gkPRte | |||
elseif gkpitchlfo==3 then | |||
kPLFO randomh -gkPDep*kPDepth,gkPDep*kPDepth,gkPRte | |||
kPLFO port kPLFO,0.002 ;smooth out the clicks | |||
else | |||
kPLFO lfo gkPDep*kPDepth,gkPRte,2 ;LFO (bi-square) | |||
kPLFO port kPLFO,0.002 ;smooth out the clicks | |||
endif | |||
aL hsboscil kamp*kALFO*iVelAmp, kPLFO+kRisset+knoise, kbrite+kBEnv+kBLFO+iBVel, ibasfreq, giwfn, gioctfn, i(koctcnt), rnd(1) ;CREATE AN hsboscil TONE FOR THE LEFT CHANNEL. RANDOM INITIAL PHASE CREATE STEREO EFFECT. | |||
aR hsboscil kamp*kALFO*iVelAmp, kPLFO+kRisset+knoise, kbrite+kBEnv+kBLFO+iBVel, ibasfreq, giwfn, gioctfn, i(koctcnt), rnd(1) ;CREATE AN hsboscil TONE FOR THE RIGHT CHANNEL. RANDOM INITIAL PHASE CREATE STEREO EFFECT. | |||
aL = aL*aenv ;APPLY AMPLITUDE ENVELOPE TO AUDIO OUTPUT OF hsboscil | |||
aR = aR*aenv ;APPLY AMPLITUDE ENVELOPE TO AUDIO OUTPUT OF hsboscil | |||
rireturn | |||
/*FREQUENCY SHIFTER*/ | |||
if gkFShift==0 kgoto SKIP_FSHIFT ;IF F.SHIFT VALUE = 0, BYPASS THE EFFECT | |||
kFShift portk gkFShift,kporttime | |||
aL FreqShifter aL,kFShift,gisine | |||
aR FreqShifter aR,kFShift,gisine | |||
SKIP_FSHIFT: | |||
outs aL,aR ;SEND AUDIO TO OUTPUTS | |||
gasendL = gasendL+aL | |||
gasendR = gasendR+aR | |||
endin | |||
instr 3 ;Chorus effect | |||
if gkChoMix==0 goto SKIP_CHORUS | |||
kporttime linseg 0,0.001,1 | |||
kporttime = kporttime/gkChoRte | |||
kdlt1 randomi ksmps/sr,gkChoDep,gkChoRte,1 | |||
kdlt1 portk kdlt1,kporttime | |||
adlt1 interp kdlt1 | |||
acho1 vdelay gasendL,adlt1*1000,1*1000 | |||
kdlt2 randomi ksmps/sr,gkChoDep,gkChoRte,1 | |||
kdlt2 portk kdlt2,kporttime | |||
adlt2 interp kdlt2 | |||
acho2 vdelay gasendR,adlt2*1000,1*1000 | |||
kpan1 randomi 0,1,gkChoRte,1 | |||
kpan2 randomi 0,1,gkChoRte,1 | |||
a1L,a1R pan2 acho1,kpan1 | |||
a2L,a2R pan2 acho2,kpan2 | |||
achoL = a1L+a2L | |||
achoR = a1R+a2R | |||
outs achoL*gkChoMix,achoR*gkChoMix | |||
gasendL = (gasendL+achoL)*gkRvbMix | |||
gasendR = (gasendR+achoR)*gkRvbMix | |||
SKIP_CHORUS: | |||
gasendL = gasendL*gkRvbMix | |||
gasendR = gasendR*gkRvbMix | |||
endin | |||
instr 4 ;reverb | |||
if gkRvbMix==0 goto SKIP_REVERB | |||
aL,aR reverbsc gasendL,gasendR,gkRvbSize,12000 | |||
outs aL,aR | |||
SKIP_REVERB: | |||
clear gasendL,gasendR | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i 1 0 [3600*24*7] | |||
i 3 0 [3600*24*7] | |||
i 4 0 [3600*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,808 @@ | |||
oscbnk_synth.csd | |||
A synthesizer utilising the oscbnk opcode | |||
CONTROLS | |||
-------- | |||
-Oscillators- | |||
Amp -- output amplitude of the oscillators sections | |||
N.Oscs -- number of oscillators | |||
Spread -- pitch spread | |||
SPeed -- speed of pitch modulations | |||
Waveform -- (dropdown menu) wavefrom used by the oscillator. Trombone 2 is a multi-waveform wavetable instrument. | |||
mono -- activate monophonic mode | |||
Time -- portamento time (monophonic mode) | |||
T.Shift -- wavetable shift (will alter the tone if a multi-waveform wavetable instrument is chosen) | |||
< Bend / Bend > -- pitch bend up / pitch bend down (in semitones). These can be linked to midi controllers to replace Cabbages lack of response to pitch bend. | |||
Bend Rng. -- pitch bend range | |||
-Filter Envelope- | |||
Filter -- filter cutoff global control | |||
Env. -- amount of influnce of the envelope | |||
Att. -- envelope attack time | |||
Dec. -- envelope decay time | |||
Sus. -- envelope sustain level | |||
Rel. -- envelope release time | |||
-Amplitude Envelope- | |||
Att -- envelope attack time | |||
Dec -- envelope decay time | |||
Sus -- envelope sustain level | |||
Rel -- envelope release time | |||
-Filter- | |||
Layers -- number of interations of tonex filter. Increasing this number will sharpen cutoff. | |||
-Filter LFO- | |||
shape -- (drop down menu) LFO shape | |||
Rate -- LFO rate | |||
Depth -- LFO depth / amplitude | |||
Delay -- delay time before LFO has any effect | |||
Rise -- time it take for LFO amplitude to rise from zero to 'Depth' | |||
-Reverb- | |||
Mix -- dry/wet mix | |||
Size -- room size | |||
<Cabbage> | |||
form caption("Oscillator Bank Synth") size(525, 330), pluginID("oscb") | |||
image bounds( 0, 0,525, 330), colour( 0, 0, 50), shape("sharp"), outline("white"), line(0) | |||
;OSCILLATOR | |||
groupbox bounds( 0, 0,525, 85), text("Oscillators"), fontcolour("white") plant("oscillators"){ | |||
rslider bounds( 5, 25, 55, 55), fontcolour("white"), text("Amp."), channel("amp"), range(0, 1.00, 0.2), trackercolour("white") colour(LightBlue) | |||
rslider bounds( 50, 25, 55, 55), fontcolour("white"), text("N.Oscs."), channel("NOscs"), range(1, 100, 10, 1, 1), trackercolour("white") colour(LightBlue) | |||
rslider bounds( 95, 25, 55, 55), fontcolour("white"), text("Spread"), channel("fmd"), range(0, 1.00, 0.005,0.25,0.000001), trackercolour("white") colour(LightBlue) | |||
rslider bounds(140, 25, 55, 55), fontcolour("white"), text("Speed"), channel("mvt"), range(0, 100.000, 1, 0.25,0.0001), trackercolour("white") colour(LightBlue) | |||
rslider bounds(185, 25, 55, 55), fontcolour("white"), text("Width"), channel("width"), range(0, 1.000, 1, 1,0.001), trackercolour("white") colour(LightBlue) | |||
combobox bounds(240, 25, 80,18), channel("waveform"), value(1), text("saw", "square", "organ", "eee", "ooh", "Clarinet","Bass Clarinet", "C.Bass Clarinet","Oboe","Bassoon","C.Bassoon",Violin","Cello","Piccolo","Flute","Alto Flute","Bass Flute", "Ahh", "Horn P", "Horn F", "B.Tbn.Harmon", "B.Tbn.Straight", "B.Tbn.Open") | |||
checkbox bounds(240, 50, 85, 13), text("Legato"), colour("yellow"), channel("legato"), value(0) | |||
checkbox bounds(240, 65, 85, 13), text("Mono"), colour("yellow"), channel("mono"), value(0) | |||
rslider bounds(292, 44, 38, 38), fontcolour("white"), text("Time"), channel("LegTim"), range(0, 4.00, 0.09, 0.5, 0.01), trackercolour("white") colour(LightBlue) | |||
rslider bounds(325, 25, 55, 55), fontcolour("white"), text("T.Shift"), channel("WTableShift"), range(-36, 36, 0, 1,0.001), trackercolour("white") colour(LightBlue) | |||
;PITCH BEND | |||
rslider bounds(370, 25, 55, 55), fontcolour("white"), text("< Bend"), channel("BendDown"), range(-1,0, 0, 1,0.001), trackercolour("white") colour(LightBlue) | |||
rslider bounds(415, 25, 55, 55), fontcolour("white"), text("Bend >"), channel("BendUp"), range(0, 1, 0, 1,0.001), trackercolour("white") colour(LightBlue) | |||
rslider bounds(465, 25, 55, 55), fontcolour("white"), text("Bend Rng."), channel("BendRange"), range(1, 24, 12, 1,1), trackercolour("white") colour(LightBlue) | |||
} | |||
;AMPLITUDE ENVELOPE | |||
groupbox bounds(290,85, 200, 85), text("Amplitude Envelope"), plant("AmpEnv"), fontcolour("white"){ | |||
rslider bounds( 5, 25, 55, 55), fontcolour("white"), text("Att."), channel("AAtt"), range(0, 8.00, 0.13,0.5), trackercolour("white") colour(LightBlue) | |||
rslider bounds( 50, 25, 55, 55), fontcolour("white"), text("Dec."), channel("ADec"), range(0, 8.00, 0.01,0.5), trackercolour("white") colour(LightBlue) | |||
rslider bounds( 95, 25, 55, 55), fontcolour("white"), text("Sus."), channel("ASus"), range(0, 1.00, 1.00, 0.5), trackercolour("white") colour(LightBlue) | |||
rslider bounds(140, 25, 55, 55), fontcolour("white"), text("Rel."), channel("ARel"), range(0.01, 8, 1.67, 0.5), trackercolour("white") colour(LightBlue) | |||
} | |||
;FILTER | |||
groupbox bounds(0, 85, 290, 85), text("Filter Envelope"), fontcolour("white"){ | |||
rslider bounds( 5, 110, 55, 55), fontcolour("white"), text("Filter"), channel("cf"), range(0, 10.00, 6), trackercolour("white") colour(LightBlue) | |||
rslider bounds( 50, 110, 55, 55), fontcolour("white"), text("Env."), channel("FEnvAmt"), range(0, 10.00, 1.16), trackercolour("white") colour(LightBlue) | |||
rslider bounds( 95, 110, 55, 55), fontcolour("white"), text("Att."), channel("FAtt"), range(0, 8.00, 0.1,0.5), trackercolour("white") colour(LightBlue) | |||
rslider bounds(140, 110, 55, 55), fontcolour("white"), text("Dec."), channel("FDec"), range(0, 8.00, 1,0.5), trackercolour("white") colour(LightBlue) | |||
rslider bounds(185, 110, 55, 55), fontcolour("white"), text("Sus."), channel("FSus"), range(0, 1.00, 4, 0.5), trackercolour("white") colour(LightBlue) | |||
rslider bounds(230, 110, 55, 55), fontcolour("white"), text("Rel."), channel("FRel"), range(0.01, 8, 1.3, 0.5), trackercolour("white") colour(LightBlue) | |||
} | |||
;FILTER | |||
groupbox bounds( 0,170, 90, 85), text("Filter"), plant("Filter"){ | |||
rslider bounds( 17, 25, 55, 55), fontcolour("white"), text("Layers"), channel("FiltLayers"), range(1, 10, 1,1,1), trackercolour("white") colour(LightBlue) | |||
} | |||
;FILTER LFO | |||
groupbox bounds( 90,170,290, 85), text("Filter LFO"), plant("FilterLFO"), fontcolour("white"){ | |||
combobox bounds( 15, 35, 80, 20), channel("FlfoType"), value(2), text("sine", "splines", "S+H", "square") | |||
rslider bounds( 95, 25, 55, 55), text("Rate"), channel("FRte"), range(0, 16.00, 4), fontcolour("white"), trackercolour("white") colour(LightBlue) | |||
rslider bounds(140, 25, 55, 55), text("Depth"), channel("FDep"), range(0, 4.00, 0), fontcolour("white"), trackercolour("white") colour(LightBlue) | |||
rslider bounds(185, 25, 55, 55), text("Delay"), channel("FDel"), range(0, 2.00, 0, 0.5), fontcolour("white"), trackercolour("white") colour(LightBlue) | |||
rslider bounds(230, 25, 55, 55), text("Rise"), channel("FRis"), range(0, 2.00, 0.1, 0.5), fontcolour("white"), trackercolour("white") colour(LightBlue) | |||
;REVERB | |||
groupbox bounds(380,170, 110, 85), text("Reverb"), plant("Reverb"), fontcolour("white"){ | |||
rslider bounds( 5, 25, 55, 55), fontcolour("white"), text("Mix"), channel("RvbMix"), range(0, 1.00, 0.5), trackercolour("white") colour(LightBlue) | |||
rslider bounds( 50, 25, 55, 55), fontcolour("white"), text("Size"), channel("RvbSize"), range(0, 1.00, 0.77), trackercolour("white") colour(LightBlue) | |||
} | |||
keyboard bounds(0, 255, 525, 75) | |||
image bounds(5, 337, 250, 25), colour(75, 85, 90, 100), plant("credit"){ | |||
label bounds(0.03, 0.2, .9, .6), text("Author: Iain McCurdy |2012|"), colour("white") | |||
} | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-dm0 -n -+rtmidi=NULL -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 64 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
massign 0,1 | |||
;Author: Iain McCurdy (2012) | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; CLARINET | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
;FOUR GEN10 FUNCTION TABLES WHICH CORRESPOND TO THE SPECTRAL ENVELOPES OF FOUR DIFFERENT NOTES PLAYED ON THE CLARINET | |||
;THE FOUR NOTES CHOSEN COVER THE SOUNDING RANGE OF THE INSTRUMENT | |||
;NOTE THAT ALL FUNCTION TABLES USED BY ftmorph IN THE MORPHING PROCESS, INCLUDING THE ONE INTO WHICH THE MORPHED TABLE IS WRITTEN (SEE INSTR 1), SHOULD BE THE SAME SIZE | |||
;FOUR GEN10 FUNCTION TABLES WHICH CORRESPOND TO THE SPECTRAL ENVELOPES OF FOUR DIFFERENT NOTES PLAYED ON THE CLARINET | |||
;THE FOUR NOTES CHOSEN COVER THE SOUNDING RANGE OF THE INSTRUMENT | |||
;NOTE THAT ALL FUNCTION TABLES USED BY ftmorph IN THE MORPHING PROCESS, INCLUDING THE ONE INTO WHICH THE MORPHED TABLE IS WRITTEN (SEE INSTR 1), SHOULD BE THE SAME SIZE | |||
giclar50 ftgen 0,0,4096,10,0.273597,0.027434,0.737705,0.049480,0.448437,0.272536,0.131175,0.129945,0.283082,0.130714,0.026719,0.037582,0.018953,0.010729,0.067580,0.024573,0.016586,0.049988,0.033294,0.017090,0.008591,0.021128,0.007237,0.016060,0.016060 | |||
giclar62 ftgen 0,0,4096,10,0.753504,0.011446,0.501720,0.055791,0.241768,0.037889,0.027203,0.062793,0.102494,0.030506,0.042453,0.050202,0.031077,0.027208,0.020897,0.022205,0.012154,0.008160,0.004886,0.005076,0.003805,0.001322,0.001149,0.001450,0.001450 | |||
giclar74 ftgen 0,0,4096,10,0.519536,0.062430,0.745521,0.055790,0.103856,0.097554,0.090420,0.077181,0.017130,0.013446,0.005674,0.003296,0.003438,0.003395,0.002506,0.001169,0.002525,0.001237,0.002624,0.001440,0.000880,0.001061,0.002672,0.002090,0.002090 | |||
giclar86 ftgen 0,0,4096,10,0.823209,0.201690,0.171118,0.161374,0.041951,0.004950,0.010889,0.001107,0.001365,0.003340,0.002259,0.001175,0.000442,0.001544,0.001259,0.000549,0.000455,0.000352,0.000345,0.000396,0.000477,0.000848,0.001199,0.001081,0.001081 | |||
giwavemapClar ftgen 0,0,128,-27, 0,0, 50,0, 62,1, 74,2, 86,3, 127,3 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
gitabs4morfClar ftgen 0,0,4,-2,giclar50,giclar62,giclar74,giclar86 | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; BASS CLARINET | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
giBClar35 ftgen 0,0,4096,10,0.384232,0.038085,0.578537,0.029558,0.143002,0.119033,0.397678,0.113380,0.577246,0.158831,0.577514,0.094994,0.440674,0.109136,0.500666,0.132354,0.360370,0.104810,0.231403,0.089565,0.207353,0.099773,0.209066,0.123801,0.158769,0.079383,0.036078,0.019583,0.010310,0.017060,0.029465,0.045821,0.031622,0.038326,0.052222,0.058647,0.083956,0.079748,0.081955,0.097274,0.069934,0.075100,0.049259,0.058121,0.068078,0.065276,0.070165,0.065898,0.072432,0.055423,0.052283,0.036547,0.034082,0.035287,0.044801,0.053917,0.050263,0.036979,0.034264,0.035892,0.035011,0.037199,0.041542,0.043201,0.039923,0.035164,0.035828,0.036193,0.037155,0.035493,0.034546,0.035091,0.029891,0.027394,0.026174,0.023757,0.021365,0.019468,0.016295,0.015301,0.015263,0.014310,0.013239,0.011972,0.011445,0.011727,0.012391,0.013892,0.015395,0.015147,0.015137,0.014816,0.013898,0.012682,0.011462,0.009883,0.008579,0.007797,0.007749 | |||
giBClar41 ftgen 0,0,4096,10,0.525063,0.002869,0.469239,0.024384,0.895713,0.021156,0.199553,0.014871,0.215693,0.036697,0.212856,0.060220,0.224360,0.026202,0.021469,0.019475,0.067282,0.034970,0.025525,0.028958,0.038550,0.041724,0.035988,0.016617,0.026564,0.031021,0.037801,0.030070,0.055636,0.040575,0.029792,0.031356,0.031871,0.058063,0.027829,0.023825,0.015824,0.011714,0.011110,0.015367,0.011850,0.008957,0.011489,0.007029,0.004640,0.004862,0.006536,0.006771,0.006683,0.005231,0.005323,0.006834,0.005342,0.005818,0.004902,0.005468,0.005431,0.006151,0.004672,0.003041,0.002322,0.002274,0.002661,0.003122,0.002931,0.002587,0.002527,0.002499,0.003095,0.003755,0.003651,0.003768,0.003972,0.003962,0.003999,0.003352,0.002866,0.002449,0.002120,0.001972,0.002040,0.002221,0.002063,0.002057,0.002415,0.002849,0.003276,0.003776,0.003994,0.003829,0.003419,0.003328,0.003575,0.003829,0.003703,0.003454,0.003149,0.002825,0.002697,0.002765 | |||
giBClar47 ftgen 0,0,4096,10,0.447815,0.011780,0.911495,0.027076,0.846723,0.050517,0.224579,0.039801,0.048967,0.024162,0.071418,0.087315,0.031778,0.048063,0.058394,0.078770,0.021135,0.041585,0.092206,0.058125,0.063991,0.033673,0.025813,0.045142,0.037450,0.016766,0.014278,0.016668,0.017869,0.025925,0.010244,0.010062,0.010634,0.008986,0.006992,0.005186,0.004618,0.003658,0.002913,0.003004,0.004250,0.003142,0.002387,0.002692,0.003592,0.004496,0.002831,0.001838,0.001680,0.002144,0.002567,0.003185,0.002727,0.002419,0.001998,0.001883,0.002286,0.002626,0.003202,0.003257,0.003056,0.003241,0.002838,0.002521,0.002294,0.002409,0.002746,0.002848,0.003387,0.004173,0.004189,0.004587,0.005402,0.004977,0.004132,0.003842,0.003974,0.003650,0.003605,0.003810,0.003745,0.003770,0.003520,0.003363,0.003391,0.003302,0.003124,0.003422,0.004022,0.004064,0.003584,0.002939,0.002329,0.001970,0.001947,0.002034,0.002069,0.002043,0.001854,0.001658 | |||
giBClar53 ftgen 0,0,4096,10,0.819856,0.006052,0.508263,0.007439,0.271031,0.012967,0.059374,0.017922,0.016997,0.004014,0.027132,0.014921,0.020230,0.012123,0.021066,0.004875,0.016894,0.004428,0.004157,0.007603,0.004211,0.011103,0.005054,0.007329,0.004043,0.002169,0.003183,0.001822,0.001158,0.001758,0.002350,0.001442,0.002218,0.002815,0.001503,0.001764,0.001171,0.001508,0.000934,0.000714,0.000902,0.000884,0.000943,0.000825,0.000579,0.000572,0.000654,0.000752,0.000902,0.000932,0.000868,0.000909,0.000903,0.001065,0.001472,0.001483,0.001803,0.001941,0.002100,0.002756,0.002543,0.001984,0.001589,0.001342,0.001414,0.001219,0.001004,0.000908,0.000887,0.001102,0.001342,0.001312,0.001089,0.000869,0.000733,0.000620,0.000574,0.000518,0.000451,0.000422,0.000446,0.000473,0.000423,0.000354,0.000335,0.000370,0.000410,0.000418,0.000435,0.000434,0.000417,0.000417,0.000388,0.000342,0.000316,0.000303,0.000306,0.000309,0.000292,0.000267 | |||
giBClar59 ftgen 0,0,4096,10,0.866645,0.024133,0.420624,0.171074,0.353043,0.050546,0.198619,0.047824,0.110458,0.081558,0.064116,0.041109,0.026267,0.036570,0.013031,0.023724,0.007023,0.010067,0.004550,0.011618,0.009601,0.005731,0.005607,0.005036,0.002347,0.002907,0.001472,0.001519,0.001304,0.002584,0.001383,0.001362,0.001591,0.002655,0.004442,0.004905,0.003148,0.004830,0.002947,0.002926,0.003063,0.002394,0.002276,0.002019,0.001689,0.002028,0.002368,0.003510,0.004637,0.004228,0.003257,0.002700,0.002231,0.001681,0.001293,0.001062,0.001121,0.000894,0.000797,0.000865,0.000752,0.000724,0.000719,0.000787,0.000896,0.000801,0.000686,0.000551,0.000468,0.000466,0.000515,0.000460,0.000382,0.000358,0.000366,0.000400,0.000405,0.000355,0.000333,0.000349,0.000352,0.000346,0.000335,0.000317,0.000303,0.000297,0.000289,0.000276,0.000290,0.000292,0.000287,0.000307,0.000318,0.000332,0.000353,0.000374,0.000388,0.000398,0.000399,0.000407 | |||
giBClar65 ftgen 0,0,4096,10,0.934141,0.012361,0.023358,0.045609,0.025913,0.017772,0.009955,0.010837,0.007253,0.001002,0.004215,0.001570,0.004226,0.001334,0.000580,0.001740,0.000839,0.001364,0.001337,0.000523,0.000377,0.000535,0.000290,0.000461,0.000486,0.000333,0.000462,0.000685,0.001136,0.000794,0.000625,0.000436,0.000303,0.000270,0.000259,0.000289,0.000208,0.000224,0.000249,0.000271,0.000200,0.000240,0.000298,0.000226,0.000198,0.000188,0.000200,0.000259,0.000198,0.000169,0.000155,0.000144,0.000123,0.000120,0.000118,0.000112,0.000108,0.000105,0.000096,0.000091,0.000090,0.000093,0.000089,0.000093,0.000094,0.000095,0.000101,0.000112,0.000120,0.000126,0.000134,0.000142,0.000149,0.000170,0.000190,0.000212,0.000246,0.000289,0.000286,0.000269,0.000279,0.000310,0.000352,0.000355,0.000341,0.000361,0.000376,0.000373,0.000385,0.000427,0.000475,0.000539,0.000655,0.000838,0.001061,0.001284,0.001429,0.001364,0.001171,0.001020 | |||
giBClar71 ftgen 0,0,4096,10,0.951349,0.052635,0.166289,0.036346,0.080225,0.105328,0.019032,0.014538,0.003453,0.003349,0.001065,0.003529,0.004876,0.003334,0.003537,0.009903,0.004407,0.002506,0.002863,0.005317,0.004116,0.003426,0.001538,0.001829,0.001351,0.001942,0.001728,0.001103,0.000733,0.000413,0.000643,0.000468,0.000336,0.000631,0.000868,0.000470,0.000257,0.000240,0.000210,0.000190,0.000182,0.000170,0.000178,0.000178 | |||
giBClar77 ftgen 0,0,4096,10,0.679870,0.126072,0.031529,0.103885,0.017231,0.001781,0.005132,0.000787,0.003992,0.001819,0.002500,0.002660,0.001298,0.001834,0.001238,0.004273,0.001518,0.000670,0.000588,0.000395,0.000786,0.000400,0.000399,0.000471,0.000235,0.000212,0.000208,0.000169,0.000163,0.000146,0.000134 | |||
giwavemapBClar ftgen 0,0,128,-27, 0,0, 35,0, 41,1, 47,2, 53,3, 59,4, 65,5, 71,6, 77,7, 127,7 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
gitabs4morfBClar ftgen 0,0,8,-2,giBClar35,giBClar41,giBClar47,giBClar53,giBClar59,giBClar65,giBClar71,giBClar77 | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; CONTRA-BASS CLARINET | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
giCBClar26 ftgen 0,0,4096,10,0.100160,0.005519,0.631940,0.013046,0.749042,0.308868,0.475605,0.152792,0.074315,0.238927,0.152260,0.251283,0.030787,0.052465,0.032473,0.121972,0.064172,0.090564,0.043994,0.091868,0.039563,0.058622,0.024531,0.023127,0.026665,0.067522,0.081377,0.057914,0.066176,0.036134,0.026135,0.021056,0.038011,0.036534,0.058393,0.040915,0.050051,0.038446,0.034166,0.021341,0.014481,0.015708,0.025527,0.026622,0.033577,0.027355,0.034434,0.022920,0.016354,0.010905,0.011160,0.015075,0.019871,0.017505,0.013189,0.011442,0.008511,0.007974,0.006368,0.005988,0.005976,0.005922,0.006590,0.008199,0.006566,0.005254,0.004955,0.005576,0.005463,0.005101,0.003955,0.003622,0.004027,0.003772,0.003504,0.002848,0.002183,0.002075,0.002143,0.002014,0.001907,0.001850,0.001736,0.001543,0.001318,0.001180,0.001107,0.001066,0.001169,0.001372,0.001533,0.001667,0.001738,0.001655,0.001604,0.001603,0.001571,0.001575,0.001638,0.001696 | |||
giCBClar32 ftgen 0,0,4096,10,0.227476,0.006718,0.707706,0.018101,0.539432,0.018848,0.590242,0.029143,0.512926,0.035712,0.324304,0.035306,0.035964,0.050992,0.096916,0.025035,0.098203,0.072427,0.068155,0.060324,0.042818,0.074538,0.049430,0.100999,0.052956,0.109337,0.053778,0.108791,0.040535,0.041998,0.050107,0.102568,0.075823,0.121836,0.062713,0.047451,0.042146,0.061836,0.063525,0.079775,0.056177,0.039271,0.021422,0.017934,0.022472,0.016758,0.023407,0.025034,0.018765,0.012566,0.009566,0.008232,0.011234,0.015948,0.018924,0.020397,0.016720,0.016224,0.010210,0.006760,0.006525,0.006464,0.006410,0.007832,0.010929,0.013172,0.010412,0.008153,0.005887,0.004927,0.005543,0.006358,0.006415,0.006246,0.004977,0.004037,0.003084,0.002646,0.002504,0.002716,0.003253,0.003484,0.003416,0.003566,0.003392,0.002924,0.002750,0.002979,0.003398,0.003635,0.003855,0.004032,0.004285,0.004278,0.003688,0.003182,0.002942,0.003043,0.003240,0.003317 | |||
giCBClar38 ftgen 0,0,4096,10,0.805943,0.003127,0.607438,0.006915,0.078379,0.025071,0.319458,0.040967,0.418440,0.096874,0.067519,0.066830,0.181701,0.148461,0.024736,0.047734,0.027229,0.065092,0.020252,0.015890,0.047795,0.096969,0.049469,0.024097,0.032227,0.032247,0.057763,0.064995,0.031760,0.023574,0.021449,0.017946,0.015989,0.010329,0.017096,0.025053,0.020021,0.014542,0.009659,0.010282,0.011754,0.016404,0.013970,0.019292,0.012226,0.007260,0.007191,0.010064,0.007246,0.007400,0.007562,0.005179,0.005520,0.005811,0.004710,0.005570,0.007523,0.007671,0.005694,0.004881,0.005241,0.004991,0.005944,0.006659,0.006213,0.004986,0.004006,0.003617,0.003290,0.003479,0.004050,0.003911,0.003373,0.003294,0.003284,0.002858,0.002674,0.003290,0.003986,0.003982,0.003503,0.003424,0.003640,0.003903,0.004267,0.004774,0.005048,0.005020,0.005284,0.005837,0.006116,0.006124,0.006474,0.007329,0.008198,0.008721,0.009014,0.008920,0.008202,0.007419 | |||
giCBClar44 ftgen 0,0,4096,10,0.715187,0.010393,0.137973,0.010188,0.404486,0.073659,0.420943,0.145565,0.080881,0.104506,0.227785,0.021310,0.035316,0.052724,0.023335,0.014334,0.087911,0.036461,0.047658,0.016909,0.047453,0.017513,0.031591,0.010028,0.009677,0.014384,0.012660,0.031094,0.010732,0.009677,0.005632,0.007197,0.005202,0.005881,0.004438,0.005851,0.003283,0.002870,0.001732,0.001824,0.003100,0.002099,0.002084,0.002567,0.003519,0.003856,0.003017,0.003288,0.003518,0.003481,0.002717,0.002212,0.002009,0.002374,0.002508,0.003004,0.002356,0.001681,0.001376,0.001435,0.001604,0.001881,0.001924,0.001783,0.002097,0.002582,0.002971,0.002922,0.002735,0.002884,0.003498,0.003726,0.003454,0.003486,0.003620,0.003356,0.003457,0.003775,0.003730,0.003481,0.003126,0.002660,0.002244,0.001883,0.001625,0.001518,0.001533,0.001594,0.001565,0.001529,0.001485,0.001598,0.001965,0.002295,0.002394,0.002424,0.002401,0.002320,0.002329,0.002436 | |||
giCBClar50 ftgen 0,0,4096,10,0.880714,0.104962,0.497883,0.045337,0.172861,0.109234,0.166844,0.037601,0.179775,0.048578,0.136813,0.079191,0.068937,0.019908,0.087293,0.031265,0.010402,0.048393,0.020759,0.005769,0.015444,0.004339,0.006113,0.010598,0.009591,0.007441,0.002840,0.003349,0.003193,0.003806,0.004954,0.003108,0.003744,0.003254,0.003682,0.002736,0.002830,0.004080,0.005132,0.004023,0.004801,0.004386,0.003962,0.002657,0.003137,0.003478,0.004208,0.004600,0.004272,0.004501,0.004804,0.004328,0.003739,0.003495,0.003378,0.002513,0.002268,0.002182,0.002140,0.001833,0.001900,0.001666,0.001525,0.001441,0.001541,0.001518,0.001571,0.001664,0.001746,0.001600,0.001474,0.001527,0.001644,0.001577,0.001450,0.001382,0.001479,0.001646,0.001713,0.001652,0.001720,0.001859,0.001891,0.001654,0.001420,0.001306,0.001228,0.001173,0.001188,0.001247,0.001299,0.001317,0.001264,0.001186,0.001091,0.000947,0.000797,0.000685,0.000610,0.000547 | |||
giCBClar54 ftgen 0,0,4096,10,0.889990,0.001348,0.087695,0.023926,0.066262,0.023447,0.075142,0.026596,0.020409,0.052699,0.027246,0.016811,0.017828,0.004566,0.005199,0.010830,0.003227,0.005838,0.001883,0.001580,0.004878,0.001870,0.000924,0.001648,0.002681,0.001616,0.003610,0.002587,0.002221,0.002332,0.001110,0.001616,0.002062,0.001241,0.000899,0.001174,0.001196,0.001105,0.001254,0.001253,0.001237,0.001093,0.001281,0.001260,0.001266,0.001255,0.001194,0.000995,0.001213,0.000908,0.000857,0.000902,0.000863,0.001171,0.001146,0.001074,0.000908,0.000908,0.000752,0.000618,0.000456,0.000395,0.000445,0.000503,0.000434,0.000353,0.000347,0.000373,0.000416,0.000392,0.000334,0.000271,0.000275,0.000314,0.000314,0.000317,0.000280,0.000275,0.000289,0.000253,0.000221,0.000203,0.000194,0.000194,0.000208,0.000221,0.000212,0.000185,0.000172,0.000176,0.000173,0.000178,0.000175,0.000159,0.000152,0.000150,0.000135,0.000120,0.000115,0.000119 | |||
giwavemapCBClar ftgen 0,0,128,-27, 0,0, 26,0, 32,1, 38,2, 44,3, 50,4, 54,5, 127,5 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
gitabs4morfCBClar ftgen 0,0,8,-2,giCBClar26,giCBClar32,giCBClar38,giCBClar44,giCBClar50,giCBClar54,giCBClar54,giCBClar54 | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; OBOE | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
gioboe59 ftgen 0,0,4096,10,0.239013,0.078927,0.241030,0.206347,0.832266,0.054540,0.013821,0.007450,0.022905,0.021737,0.018123,0.013105,0.002361,0.001433,0.003509,0.002589,0.001326,0.000743,0.000990,0.000868,0.000863,0.000994,0.000406,0.000288,0.000288 | |||
gioboe65 ftgen 0,0,4096,10,0.199317,0.508088,0.859044,0.346880,0.121336,0.005269,0.071954,0.035188,0.012195,0.010362,0.001516,0.002397,0.004325,0.002943,0.008168,0.003519,0.002074,0.001366,0.001019,0.000715,0.000788,0.000757,0.001403,0.001108,0.001108 | |||
gioboe73 ftgen 0,0,4096,10,0.297865,0.916220,0.218345,0.030903,0.016039,0.045984,0.003571,0.006255,0.007310,0.003701,0.001306,0.001355,0.000361,0.001108,0.001552,0.000991,0.000588,0.000780,0.000678,0.001103,0.000615,0.000264,0.000310,0.000464,0.000464 | |||
gioboe81 ftgen 0,0,4096,10,0.875554,0.822621,0.094665,0.308960,0.046707,0.031827,0.002702,0.002222,0.009030,0.009257,0.007814,0.000781,0.002099,0.001154,0.002638,0.000756,0.000750,0.001290,0.000476,0.001285,0.000627,0.000379,0.000594,0.000379,0.000379 | |||
gioboe89 ftgen 0,0,4096,10,0.965505,0.344315,0.033044,0.068398,0.013147,0.008580,0.003609,0.001848,0.001060,0.001429,0.001832,0.001218,0.000703,0.000642,0.000646,0.000867,0.000550,0.000567,0.001386,0.001239,0.001416,0.001354,0.001710,0.003111,0.003111 | |||
giwavemapOboe ftgen 0,0,128,-27, 0,0, 59,0, 65,1, 73,2, 81,3, 89,4, 127,4 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
gitabs4morfOboe ftgen 0,0,8,-2,gioboe59,gioboe65,gioboe73,gioboe81,gioboe89,gioboe89,gioboe89,gioboe89 | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; BASSOON | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
gibassoon34 ftgen 0,0,4096,10,0.213868,0.268493,0.244166,0.230801,0.105833,0.308087,0.556920,0.478956,0.523357,0.900665,0.213470,0.229596,0.031221,0.040117,0.067113,0.060158,0.030778,0.061028,0.143814,0.063668,0.126426,0.055009,0.049138,0.085854,0.113027,0.111464,0.088765,0.037342,0.050990,0.035579,0.040460,0.032219,0.027305,0.034141,0.019655,0.009315,0.008270,0.006748,0.006472,0.007088,0.008133,0.007046,0.007850,0.005791,0.006273,0.006847,0.007249,0.009398,0.010309,0.010418,0.010247,0.010333,0.009562,0.008180,0.009576,0.009469,0.008529,0.008844,0.008053,0.007565,0.008026,0.007284,0.007299,0.007423,0.008280,0.008374,0.008239,0.008512,0.009431,0.010246,0.010350,0.009381,0.008652,0.008150,0.007888,0.007951,0.008166,0.008210,0.007921,0.007548,0.007147,0.006991,0.006978,0.006527,0.005617,0.004781,0.004549,0.004707,0.004803,0.004640,0.004303,0.003866,0.003524,0.003348,0.003108,0.002766,0.002439,0.002278,0.002406,0.002733 | |||
gibassoon38 ftgen 0,0,4096,10,0.242897,0.242266,0.380380,0.667003,0.720921,0.402509,0.422424,0.475496,0.823674,0.135651,0.169435,0.062761,0.017494,0.023826,0.049210,0.074371,0.035978,0.086397,0.160820,0.122072,0.061609,0.020374,0.023031,0.018479,0.013838,0.015511,0.012693,0.005626,0.007015,0.007590,0.008854,0.004833,0.006678,0.008155,0.006694,0.007708,0.007823,0.004336,0.003679,0.003698,0.005616,0.004049,0.003555,0.002815,0.002166,0.001778,0.002195,0.002446,0.003427,0.003600,0.005046,0.005043,0.003980,0.002591,0.002168,0.002644,0.003363,0.004603,0.004571,0.005024,0.004653,0.004659,0.004447,0.004128,0.004325,0.004464,0.004393,0.004144,0.004285,0.004442,0.004203,0.003640,0.003229,0.003115,0.003017,0.002902,0.002799,0.002839,0.003045,0.003262,0.003391,0.003250,0.003008,0.002726,0.002506,0.002370,0.002215,0.002130,0.002058,0.001832,0.001574,0.001339,0.001133,0.001005,0.000924,0.000860,0.000849,0.000896,0.000994,0.001115 | |||
gibassoon43 ftgen 0,0,4096,10,0.101647,0.135289,0.245027,0.142720,0.728360,0.361154,0.030730,0.079698,0.011579,0.074893,0.094091,0.028910,0.084641,0.058767,0.035341,0.016688,0.006781,0.020365,0.020545,0.008172,0.007968,0.017127,0.016825,0.009248,0.003609,0.002361,0.002361,0.001409,0.001208,0.001278,0.001752,0.002711,0.002221,0.001898,0.001255,0.001150,0.001935,0.001759,0.001661,0.001219,0.001111,0.001527,0.001167,0.001290,0.001366,0.001058,0.000935,0.000898,0.000937,0.001254,0.001464,0.001695,0.002012,0.002054,0.001872,0.001370,0.001074,0.000988,0.001009,0.000959,0.000905,0.000957,0.000885,0.000825,0.000811,0.000776,0.000727,0.000696,0.000758,0.000768,0.000667,0.000604,0.000548,0.000525,0.000508,0.000485,0.000445,0.000380,0.000330,0.000307,0.000329,0.000366,0.000367,0.000334,0.000291,0.000259,0.000247,0.000265,0.000309,0.000378,0.000436,0.000425,0.000390,0.000375,0.000353,0.000328,0.000312,0.000292,0.000273,0.000269 | |||
gibassoon50 ftgen 0,0,4096,10,0.147763,0.340255,0.879202,0.404023,0.259274,0.130887,0.095096,0.039056,0.091976,0.009828,0.004879,0.013408,0.016090,0.015931,0.012402,0.003430,0.006421,0.004323,0.002018,0.001465,0.003012,0.001397,0.002446,0.002683,0.002425,0.004828,0.002422,0.002479,0.002086,0.002351,0.002269,0.002034,0.001708,0.001324,0.001927,0.002764,0.003997,0.003514,0.002736,0.002327,0.002054,0.001842,0.001577,0.002009,0.002098,0.001411,0.001019,0.000816,0.000899,0.000893,0.001005,0.001296,0.000987,0.000657,0.000539,0.000400,0.000313,0.000284,0.000331,0.000417,0.000479,0.000633,0.000798,0.000893,0.001067,0.001242,0.001260,0.001282,0.001218,0.001023,0.000887,0.000830,0.000746,0.000637,0.000553,0.000534,0.000537,0.000506,0.000482,0.000477,0.000490,0.000515,0.000532,0.000508,0.000473,0.000416,0.000336,0.000271,0.000229,0.000193,0.000170,0.000169,0.000185,0.000197,0.000205,0.000223,0.000247,0.000255,0.000248,0.000249 | |||
gibassoon56 ftgen 0,0,4096,10,0.258143,0.954570,0.553228,0.188964,0.031203,0.252375,0.179421,0.053961,0.022121,0.016058,0.006372,0.002854,0.002507,0.006348,0.006626,0.008348,0.005125,0.001342,0.001956,0.002664,0.005721,0.003529,0.004933,0.002543,0.003026,0.003332,0.001828,0.003024,0.002223,0.001464,0.001354,0.001310,0.000827,0.000966,0.001111,0.001685,0.001048,0.000806,0.000660,0.000445,0.000368,0.000436,0.000578,0.000518,0.000372,0.000346,0.000342,0.000340,0.000259,0.000272,0.000318,0.000395,0.000481,0.000454,0.000428,0.000391,0.000351,0.000302,0.000261,0.000245,0.000253,0.000249,0.000223,0.000228,0.000244,0.000217,0.000203,0.000222,0.000250,0.000271,0.000235,0.000202,0.000179,0.000160,0.000151,0.000151,0.000144,0.000126,0.000116,0.000123,0.000134,0.000140,0.000142,0.000142,0.000130,0.000117,0.000109,0.000109,0.000110,0.000111,0.000122,0.000129,0.000124,0.000116,0.000115,0.000113,0.000104,0.000092,0.000080,0.000071 | |||
gibassoon62 ftgen 0,0,4096,10,0.802206,0.854305,0.242064,0.037491,0.024258,0.012991,0.003920,0.008373,0.001787,0.001801,0.003935,0.008957,0.009944,0.004249,0.003799,0.003374,0.001734,0.004753,0.008252,0.004132,0.002330,0.001700,0.001925,0.001098,0.001154,0.001943,0.000954,0.000487,0.000432,0.000605,0.000812,0.000806,0.001001,0.001178,0.001065,0.001137,0.000877,0.000630,0.000538,0.000499,0.000605,0.000532,0.000532,0.000387,0.000288,0.000253,0.000313,0.000347,0.000292,0.000225,0.000167,0.000144,0.000121,0.000116,0.000110,0.000110,0.000119,0.000111,0.000106,0.000111,0.000115,0.000114,0.000101,0.000094,0.000100,0.000102,0.000097,0.000088,0.000079,0.000070,0.000064,0.000059,0.000054,0.000053,0.000053 | |||
gibassoon67 ftgen 0,0,4096,10,0.262539,0.973041,0.138354,0.113396,0.058172,0.030635,0.005565,0.001686,0.003483,0.001977,0.003774,0.002477,0.002439,0.001226,0.002781,0.002527,0.001020,0.000611,0.000658,0.000715,0.000728,0.000531,0.000442,0.000238,0.000414,0.000325,0.000560,0.000689,0.000445,0.000306,0.000301,0.000305,0.000296,0.000325,0.000252,0.000218,0.000248,0.000193,0.000174,0.000179,0.000143,0.000140,0.000140,0.000104,0.000096,0.000116,0.000128,0.000137,0.000144,0.000113,0.000112,0.000119,0.000140,0.000116,0.000107,0.000102 | |||
giwavemapBassoon ftgen 0,0,128,-27, 0,0, 34,0, 38,1, 43,2, 50,3, 56,4, 62,5, 67,6, 127,6 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
gitabs4morfBassoon ftgen 0,0,8,-2,gibassoon34,gibassoon38,gibassoon43,gibassoon50,gibassoon56,gibassoon62,gibassoon67,gibassoon67 | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; CONTRA-BASSOON | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
giCBassoon22 ftgen 0,0,4096,10,0.497216,0.592986,0.588338,0.378063,0.343716,0.540022,0.620921,0.613540,0.848864,0.535558,0.632297,0.584663,0.443376,0.419439,0.291262,0.249631,0.256447,0.182209,0.062888,0.160047,0.156792,0.115884,0.107766,0.130415,0.183253,0.145108,0.156478,0.170472,0.185752,0.181506,0.155042,0.154256,0.167703,0.145571,0.172382,0.169936,0.191248,0.207520,0.161789,0.114105,0.096757,0.068310,0.056357,0.068193,0.048257,0.046235,0.041903,0.032361,0.023090,0.012851,0.008788,0.010598,0.010151,0.010905,0.009426,0.009439,0.012674,0.016976,0.019287,0.017791,0.014995,0.015280,0.014007,0.012293,0.013920,0.015130,0.017138,0.020001,0.026003,0.029085,0.026391,0.021776,0.018388,0.016337,0.014700,0.015521,0.019019,0.022414,0.024168,0.024006,0.023403,0.022377,0.020534,0.018428,0.016165,0.013675,0.011929,0.011056,0.010352,0.010070,0.009561,0.009378,0.008855,0.008393,0.008147,0.008048,0.008099,0.007480,0.006551,0.005481 | |||
giCBassoon26 ftgen 0,0,4096,10,0.076357,0.137793,0.174617,0.207802,0.302523,0.705801,0.162577,0.073808,0.224559,0.050465,0.066110,0.181682,0.062409,0.052317,0.037698,0.029936,0.042341,0.053436,0.135414,0.059248,0.025689,0.033567,0.051201,0.029910,0.028697,0.052991,0.059280,0.029742,0.027742,0.023801,0.013878,0.006197,0.004814,0.005139,0.007873,0.007104,0.009903,0.007952,0.008234,0.005783,0.006682,0.007272,0.006943,0.007674,0.007728,0.006326,0.005179,0.004259,0.004142,0.003705,0.002547,0.001785,0.002073,0.002887,0.004184,0.004075,0.004174,0.005101,0.004993,0.004189,0.003170,0.002599,0.002866,0.003689,0.005272,0.006515,0.007262,0.006420,0.005939,0.005247,0.004710,0.004619,0.004018,0.003371,0.002611,0.001906,0.001540,0.001341,0.001128,0.001025,0.001114,0.001151,0.001224,0.001403,0.001564,0.001709,0.001914,0.002097,0.002148,0.002190,0.002192,0.002124,0.002190,0.002485,0.002819,0.002892,0.002769,0.002559,0.002374,0.002161 | |||
giCBassoon38 ftgen 0,0,4096,10,0.240531,0.304670,0.289169,0.727482,0.578083,0.169149,0.057305,0.193624,0.167977,0.206006,0.182632,0.057408,0.103574,0.044785,0.084239,0.068303,0.030771,0.133375,0.096231,0.037016,0.046566,0.020770,0.020264,0.015211,0.029647,0.018603,0.027940,0.062861,0.033828,0.015594,0.016305,0.025478,0.034356,0.038642,0.028451,0.026747,0.014914,0.016727,0.015524,0.013236,0.014264,0.013651,0.014838,0.016490,0.021208,0.017660,0.013009,0.014867,0.013013,0.010426,0.009144,0.009462,0.009367,0.009624,0.008079,0.007399,0.009012,0.009384,0.008661,0.009051,0.009394,0.010578,0.011610,0.012184,0.010442,0.009130,0.008795,0.008468,0.010039,0.011205,0.011438,0.011489,0.010526,0.008902,0.007391,0.006198,0.005970,0.005264,0.004331,0.003874,0.003514,0.003418,0.003518,0.003409,0.003150,0.003023,0.003047,0.003199,0.003624,0.003999,0.003839,0.003629,0.003712,0.003872,0.003974,0.003836,0.003596,0.003353,0.003177,0.003070 | |||
giCBassoon50 ftgen 0,0,4096,10,0.200451,0.511764,0.153876,0.491651,0.722151,0.174751,0.087283,0.068341,0.008971,0.040014,0.041083,0.015335,0.047809,0.037606,0.038259,0.020124,0.022425,0.024747,0.016480,0.008528,0.006892,0.004131,0.005947,0.005585,0.006842,0.008448,0.015885,0.005820,0.002834,0.004626,0.003886,0.003621,0.004837,0.005276,0.002715,0.002900,0.003817,0.005081,0.005598,0.006033,0.006164,0.004260,0.003944,0.004776,0.004223,0.004351,0.004769,0.004836,0.004959,0.005380,0.004538,0.003969,0.003860,0.003536,0.003521,0.003397,0.002823,0.002162,0.002001,0.001663,0.001430,0.001505,0.001566,0.001468,0.001406,0.001439,0.001225,0.001095,0.001134,0.001316,0.001630,0.001839,0.001964,0.001940,0.001824,0.001694,0.001617,0.001526,0.001348,0.001116,0.000972,0.000973,0.001011,0.001015,0.000944,0.000785,0.000650,0.000609,0.000675,0.000782,0.000839,0.000818,0.000755,0.000661,0.000566,0.000498,0.000471,0.000478,0.000486,0.000479 | |||
giwavemapCBassoon ftgen 0,0,128,-27, 0,0, 22,0, 26,1, 38,2, 50,3, 127,3 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
gitabs4morfCBassoon ftgen 0,0,4,-2,giCBassoon22,giCBassoon26,giCBassoon38,giCBassoon50 | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; VIOLIN | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
giviolin55 ftgen 0,0,4096,10,0.081672,0.785854,0.808302,0.221447,0.136644,0.103608,0.051154,0.040070,0.071067,0.358903,0.053101,0.090036,0.033729,0.068969,0.060398,0.147336,0.060769,0.055245,0.044695,0.022179,0.058528,0.083706,0.029581,0.013173;,0.013173 | |||
giviolin67 ftgen 0,0,4096,10,0.344116,0.095361,0.038223,0.090317,0.145798,0.049369,0.076997,0.057555,0.016248,0.036189,0.014161,0.008738,0.010238,0.009625,0.005588,0.004762,0.002635,0.002162,0.002822,0.002144,0.001687,0.001955,0.001870,0.001011;,0.001011 | |||
giviolin79 ftgen 0,0,4096,10,0.403041,0.281156,0.259204,0.392900,0.236559,0.108769,0.117288,0.063588,0.039483,0.018245,0.012717,0.020183,0.008506,0.017915,0.008925,0.008575,0.006947,0.008142,0.005487,0.005970,0.004402,0.003161,0.002361,0.001942;,0.001942 | |||
giviolin91 ftgen 0,0,4096,10,0.231708,0.906742,0.215622,0.092709,0.057338,0.038101,0.030758,0.023439,0.009905,0.001298,0.002108,0.000516,0.000499,0.000123,0.000642,0.000732,0.004757,0.004547,0.017582,0.033035,0.098559,0.013616,0.017674,0.019601;,0.019601 | |||
giwavemapViolin ftgen 0,0,128,-27, 0,0, 55,0, 67,1, 79,2, 91,3, 127,3 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
gitabs4morfViolin ftgen 0,0,4,-2,giviolin55,giviolin67,giviolin79,giviolin91 ; | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; CELLO | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
gicello36 ftgen 0,0,4096,10,0.022943,0.412962,0.548431,0.578468,0.092241,0.116378,0.052974,0.029585,0.093977,0.119660,0.064074,0.051807,0.015094,0.094184,0.015488,0.006640,0.007091,0.011557,0.043467,0.023330,0.018118,0.026921,0.010285,0.007653,0.015306,0.023175,0.013051,0.004840,0.005658,0.010814,0.014921,0.026066,0.028334,0.015227,0.010740,0.008966,0.009389,0.012547,0.011544,0.009900,0.012403,0.013093,0.008259,0.007148,0.006129,0.004932,0.004332,0.003397,0.002497,0.002241,0.002187,0.002227,0.001634,0.001186,0.001119,0.001131,0.001276,0.000970,0.001101,0.001647,0.001936,0.001632,0.001190,0.000891,0.000883,0.000906,0.000894,0.000855,0.000768,0.000721,0.000750,0.000900,0.000965,0.000844,0.000765,0.000643,0.000535,0.000464,0.000409,0.000403,0.000489,0.000642,0.000773,0.000819,0.000871,0.000930,0.000979,0.000950,0.000781,0.000649,0.000620,0.000653,0.000661,0.000706,0.000805,0.000856,0.000832,0.000793,0.000750,0.000702 | |||
gicello48 ftgen 0,0,4096,10,0.171752,0.537455,0.217980,0.172188,0.552902,0.583964,0.452897,0.095360,0.059208,0.033024,0.126570,0.028481,0.067671,0.029869,0.055112,0.056284,0.025151,0.038689,0.027323,0.027935,0.070762,0.023514,0.016984,0.013118,0.008692,0.004591,0.002235,0.003399,0.002568,0.002224,0.002366,0.002892,0.004660,0.003562,0.002923,0.002328,0.002327,0.001705,0.001566,0.002356,0.002199,0.003381,0.006360,0.007320,0.004930,0.002809,0.002686,0.002156,0.001566,0.001273,0.001192,0.001380,0.001683,0.002133,0.003160,0.002820,0.002065,0.002097,0.002013,0.001649,0.001366,0.001053,0.000819,0.000730,0.000775,0.000937,0.001097,0.001063,0.000917,0.000815,0.000792,0.000857,0.001010,0.001203,0.001372,0.001408,0.001295,0.001173,0.001062,0.000942,0.000825,0.000761,0.000774,0.000854,0.000932,0.000968,0.000987,0.001022,0.001018,0.000944,0.000882,0.000829,0.000779,0.000734,0.000693,0.000655,0.000602,0.000547,0.000529,0.000548 | |||
gicello60 ftgen 0,0,4096,10,0.762584,0.124687,0.088950,0.091324,0.058688,0.034069,0.038828,0.065420,0.062254,0.058503,0.033332,0.014105,0.011585,0.004135,0.005176,0.004496,0.006698,0.008491,0.007044,0.003450,0.004771,0.016317,0.009897,0.007180,0.004105,0.002477,0.003995,0.002992,0.002346,0.002233,0.002558,0.002135,0.002301,0.001713,0.001191,0.001850,0.004203,0.001813,0.000969,0.001090,0.000636,0.001237,0.000844,0.001107,0.000880,0.000791,0.000640,0.000894,0.000554,0.000727,0.001041,0.001046,0.001079,0.000456,0.000410,0.000442,0.000431,0.000437,0.000427,0.000389,0.000350,0.000284,0.000269,0.000260,0.000210,0.000253,0.000328,0.000296,0.000290,0.000419,0.000452,0.000328,0.000215,0.000229,0.000333,0.000275,0.000208,0.000204,0.000163,0.000283,0.000253,0.000264,0.000178,0.000208,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
gicello72 ftgen 0,0,4096,10,0.601382,0.263076,0.197963,0.244245,0.217992,0.114034,0.025768,0.041518,0.011954,0.006391,0.012239,0.017818,0.016819,0.012798,0.007576,0.007376,0.002891,0.021377,0.005261,0.004421,0.009226,0.004333,0.001808,0.003989,0.002078,0.001344,0.001560,0.001240,0.001586,0.001307,0.000519,0.000761,0.001009,0.000632,0.000412,0.000414,0.000361,0.000406,0.000544,0.000741,0.000281,0.000164,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giwavemapCello ftgen 0,0,128,-27, 0,0, 36,0, 48,1, 60,2, 72,3, 127,3 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
gitabs4morfCello ftgen 0,0,4,-2,gicello36,gicello48,gicello60,gicello72 ; | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; PICCOLO | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
gipiccolo74 ftgen 0,0,4096,10,0.898113,0.247693,0.060222,0.127742,0.034019,0.044738,0.029980,0.018041,0.008219,0.009819,0.015719,0.009423,0.020117,0.011802,0.007226,0.003198,0.001597,0.002062,0.001590,0.001420,0.001087,0.000581,0.000370,0.000393,0.000393 | |||
gipiccolo80 ftgen 0,0,4096,10,0.837581,0.024769,0.144022,0.109176,0.031512,0.026122,0.004565,0.008379,0.004995,0.002685,0.003489,0.002674,0.002743,0.001129,0.000485,0.000367,0.000701,0.001563,0.001166,0.000647,0.000808,0.000622,0.000358,0.000227,0.000227 | |||
gipiccolo86 ftgen 0,0,4096,10,0.730803,0.323120,0.277720,0.044844,0.009400,0.022785,0.004602,0.005762,0.006400,0.002483,0.001490,0.002354,0.004728,0.002669,0.003175,0.001177,0.000761,0.000509,0.000449,0.000703,0.001078,0.002471,0.003905,0.004114,0.004114 | |||
gipiccolo92 ftgen 0,0,4096,10,0.883567,0.117309,0.144273,0.012664,0.016747,0.002921,0.002043,0.001429,0.002107,0.008510,0.001611,0.002330,0.000075,0.000381,0.000943,0.002268,0.001748,0.001626,0.000882,0.002765,0.003187,0.004911,0.008342,0.017209,0.017209 | |||
gipiccolo98 ftgen 0,0,4096,10,0.922186,0.144948,0.042529,0.011837,0.006901,0.000900,0.001625,0.000686,0.000507 ; ,0.000305,0.000305,0.000730,0.000922,0.001408,0.001499,0.005116,0.021056,0.151393,0.034986,0.124701,0.024182,0.008037,0.002664,0.001934,0.001934 | |||
gipiccolo106 ftgen 0,0,4096,10,0.501042,0.019695,0.008976,0.003473,0.006493,0.001700,0.002765,0.003224,0.006276 ; ,0.025062,0.036907,0.005386,0.046443,0.013720,0.005391,0.007819,0.019832,0.008441,0.006927,0.007528,0.018483,0.042516,0.057060,0.083779,0.083779 | |||
giwavemapPiccolo ftgen 0,0,128,-27, 0,0, 74,0, 80,1, 86,2, 92,3, 98,4, 106,5, 127,5 | |||
gitabs4morfPiccolo ftgen 0,0,8,-2,gipiccolo74,gipiccolo80,gipiccolo86,gipiccolo92,gipiccolo98,gipiccolo106,gipiccolo106,gipiccolo106 ; | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; FLUTE | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
giflute59 ftgen 0,0,4096,10,0.876155,0.188136,0.766537,0.278649,0.134428,0.143342,0.201465,0.068043,0.011284,0.021093,0.021494,0.010577,0.016431,0.007352,0.006864,0.007433,0.006500,0.004716,0.004282,0.002545,0.002718,0.002045,0.001768,0.002409,0.002409 | |||
giflute65 ftgen 0,0,4096,10,0.799971,0.564039,0.327027,0.076562,0.324116,0.049951,0.035116,0.048856,0.017988,0.004316,0.007909,0.004093,0.003013,0.003329,0.001707,0.001995,0.001913,0.000937,0.001543,0.001868,0.001289,0.001463,0.001865,0.001076,0.001076 | |||
giflute71 ftgen 0,0,4096,10,0.902388,0.107786,0.423495,0.078015,0.066093,0.032990,0.012352,0.008687,0.005253,0.004091,0.001790,0.002202,0.000853,0.001228,0.000810,0.000828,0.000601,0.000593,0.000647,0.000906,0.000925,0.001111,0.001302,0.000899,0.000899 | |||
giflute77 ftgen 0,0,4096,10,0.925667,0.059839,0.214284,0.013980,0.026778,0.008733,0.019436,0.002640,0.004217,0.002126,0.003513,0.002455,0.001336,0.001508,0.001589,0.002155,0.002549,0.001951,0.001614,0.001076,0.001253,0.001138,0.001073,0.000990,0.000990 | |||
giflute83 ftgen 0,0,4096,10,0.865610,0.041090,0.054192,0.043068,0.022098,0.002450,0.005687,0.002093,0.005076,0.001357,0.003848,0.006820,0.002879,0.005038,0.002273,0.002877,0.001043,0.001188,0.000857,0.000726,0.000537,0.000320,0.000390,0.000666,0.000666 | |||
giflute89 ftgen 0,0,4096,10,0.907108,0.032221,0.007003,0.010577,0.004166,0.002274,0.001089,0.002739,0.002459,0.002194,0.001351,0.000570,0.000469,0.000388,0.000228,0.000180,0.000377,0.000470,0.000724,0.001478,0.002258,0.002625,0.006255,0.003183,0.003183 | |||
giflute95 ftgen 0,0,4096,10,0.927168,0.094811,0.014160,0.010743,0.004640,0.002540,0.000535,0.000356,0.000205,0.000147,0.000042,0.000032,0.000090,0.000201,0.000171,0.000595,0.000136,0.000338,0.000284,0.000244,0.001813,0.001310,0.002113,0.000510,0.000510 | |||
giflute98 ftgen 0,0,4096,10,0.793870,0.077609,0.047389,0.012277,0.005127,0.002760,0.002619,0.000390,0.000109,0.000105,0.000147,0.000425,0.000266,0.000201,0.000312,0.000210,0.001391,0.003570,0.001720,0.002746,0.001399,0.000749,0.000411,0.001156,0.001156 | |||
giwavemapFlute ftgen 0,0,128,-27, 0,0, 59,0, 65,1, 71,2, 77,3, 83,4, 89,5, 95,6, 98,7, 127,7 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
gitabs4morfFlute ftgen 0,0,8,-2,giflute59,giflute65,giflute71,giflute77,giflute83,giflute89,giflute95,giflute98 | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; ALTO FLUTE | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
giAFlute55 ftgen 0,0,4096,10,0.821986,0.323726,0.027144,0.049562,0.045630,0.004837,0.008584,0.002449,0.002921,0.004780,0.006174,0.006496,0.009180,0.010020,0.008884,0.006397,0.007728,0.007543,0.005540,0.004643,0.004213,0.003464,0.002247,0.001529,0.001529 | |||
giAFlute61 ftgen 0,0,4096,10,0.629423,0.050378,0.078267,0.098147,0.002593,0.003473,0.002978,0.007847,0.002718,0.004264,0.004001,0.003129,0.002278,0.001767,0.001591,0.001198,0.000790,0.000910,0.000907,0.000909,0.000690,0.001006,0.000870,0.000801,0.000801 | |||
giAFlute67 ftgen 0,0,4096,10,0.734185,0.213440,0.086548,0.055143,0.004785,0.001811,0.011006,0.004212,0.001873,0.002130,0.001001,0.000376,0.000632,0.000823,0.000595,0.000764,0.000514,0.000403,0.000326,0.000317,0.000537,0.000523,0.000835,0.000743,0.000743 | |||
giAFlute76 ftgen 0,0,4096,10,0.868899,0.390848,0.052590,0.023839,0.033699,0.031143,0.013923,0.008881,0.003821,0.001797,0.003048,0.002506,0.002295,0.001878,0.001118,0.001109,0.001133,0.001732,0.002085,0.002020,0.001240,0.000963,0.000929,0.000456,0.000456 | |||
giwavemapAFlute ftgen 0,0,128,-27, 0,0, 55,0, 61,1, 67,2, 76,3, 127,3 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
gitabs4morfAFlute ftgen 0,0,4,-2,giAFlute55,giAFlute55,giAFlute55,giAFlute55 | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; BASS FLUTE | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
giBFlute48 ftgen 0,0,4096,10,0.691967,0.034269,0.271945,0.033667,0.017446,0.011342,0.007238,0.006576,0.003027,0.003556,0.004425,0.004988,0.003990,0.005253,0.006140,0.003051,0.004437,0.003567,0.002838,0.001703,0.001528,0.001368,0.001703,0.001153,0.000827,0.001023,0.000899,0.000612,0.000827,0.000823,0.000948,0.001184,0.001201,0.001272,0.001032,0.001141,0.001128,0.000887,0.000790,0.000612,0.000565,0.000573,0.000586,0.000554,0.000483,0.000450,0.000404,0.000416,0.000392,0.000391,0.000327,0.000336,0.000370,0.000424,0.000460,0.000459,0.000456,0.000395,0.000319,0.000306,0.000283,0.000306,0.000338,0.000305,0.000288,0.000263,0.000247,0.000239,0.000245,0.000233,0.000190,0.000166,0.000161,0.000160,0.000150,0.000136,0.000130,0.000130,0.000126,0.000126,0.000128,0.000131,0.000131,0.000136,0.000138,0.000132,0.000122,0.000116,0.000119,0.000126,0.000122,0.000112,0.000109,0.000113,0.000118,0.000118,0.000118,0.000117,0.000116,0.000118 | |||
giBFlute54 ftgen 0,0,4096,10,0.633439,0.578363,0.200810,0.008032,0.068714,0.005615,0.005448,0.012421,0.009987,0.006289,0.004137,0.002738,0.001944,0.002935,0.003674,0.002567,0.002545,0.004116,0.003915,0.002935,0.002322,0.002647,0.003186,0.003370,0.003213,0.002193,0.001902,0.001629,0.001652,0.001274,0.001102,0.001205,0.001277,0.001134,0.001117,0.001286,0.001477,0.001607,0.002607,0.003270,0.002939,0.002558,0.001826,0.001324,0.001228,0.001070,0.001110,0.001120,0.001042,0.000924,0.000909,0.000880,0.000765,0.000674,0.000600,0.000491,0.000437,0.000441,0.000443,0.000452,0.000467,0.000527,0.000606,0.000571,0.000554,0.000518,0.000420,0.000363,0.000315,0.000275,0.000245,0.000221,0.000200,0.000202,0.000219,0.000211,0.000194,0.000187,0.000197,0.000197,0.000193,0.000201,0.000217,0.000223,0.000219,0.000213,0.000200,0.000175,0.000149,0.000131,0.000124,0.000120,0.000115,0.000111,0.000113,0.000117,0.000115,0.000107,0.000100,0.000098 | |||
giBFlute60 ftgen 0,0,4096,10,0.801592,0.068816,0.032303,0.012614,0.002660,0.014692,0.002493,0.006175,0.001826,0.001416,0.002607,0.001063,0.001542,0.001053,0.001293,0.001226,0.000781,0.001142,0.000975,0.000922,0.000693,0.000570,0.000538,0.000429,0.000587,0.000775,0.000855,0.001295,0.001190,0.000941,0.000912,0.000796,0.000662,0.000789,0.000828,0.000784,0.000614,0.000480,0.000455,0.000378,0.000334,0.000309,0.000351,0.000375,0.000427,0.000378,0.000293,0.000232,0.000224,0.000199,0.000150,0.000119,0.000100,0.000084,0.000084,0.000088,0.000085,0.000081,0.000076,0.000081,0.000080,0.000075,0.000071,0.000068,0.000063,0.000060,0.000064,0.000067,0.000065,0.000058,0.000055,0.000054,0.000054,0.000053,0.000052,0.000053,0.000053,0.000053,0.000052,0.000050,0.000049,0.000049,0.000049,0.000049,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giBFlute66 ftgen 0,0,4096,10,0.743019,0.068238,0.021487,0.010397,0.001744,0.013212,0.001676,0.005245,0.002049,0.001401,0.001686,0.001346,0.001288,0.000879,0.001087,0.000922,0.000878,0.000678,0.000904,0.000729,0.000481,0.000542,0.000525,0.000561,0.000481,0.000552,0.000745,0.001153,0.001211,0.001000,0.000706,0.000621,0.000613,0.000779,0.000764,0.000717,0.000619,0.000486,0.000448,0.000429,0.000341,0.000327,0.000331,0.000340,0.000340,0.000335,0.000288,0.000255,0.000233,0.000195,0.000173,0.000150,0.000127,0.000123,0.000119,0.000113,0.000111,0.000115,0.000116,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giBFlute72 ftgen 0,0,4096,10,0.741444,0.066744,0.018973,0.009713,0.002046,0.010742,0.001911,0.004984,0.002277,0.001308,0.001841,0.000932,0.001065,0.000889,0.001029,0.000970,0.000767,0.000708,0.000743,0.000629,0.000541,0.000457,0.000410,0.000534,0.000487,0.000489,0.000743,0.001263,0.001164,0.001062,0.000757,0.000529,0.000538,0.000606,0.000594,0.000583,0.000497,0.000463,0.000498,0.000433,0.000369,0.000363,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giBFlute76 ftgen 0,0,4096,10,0.745977,0.066489,0.014197,0.007352,0.002175,0.009766,0.002280,0.004362,0.001870,0.001375,0.001383,0.001328,0.001381,0.001194,0.001429,0.000949,0.000917,0.000802,0.000818,0.000932,0.000636,0.000646,0.000571,0.000575,0.000613,0.000679,0.000959,0.001343,0.001448,0.001365,0.001241,0.001091,0.001093,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giwavemapBFlute ftgen 0,0,128,-27, 0,0, 48,0, 54,1, 60,2, 66,3, 72,4, 76,5, 127,5 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
gitabs4morfBFlute ftgen 0,0,4,-2,giBFlute48,giBFlute54,giBFlute60,giBFlute66,giBFlute72,giBFlute76 | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; AHH | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
giahh43 ftgen 0,0,4096,10,0.386674,0.073031,0.081855,0.018459,0.053239,0.061160,0.058957,0.045203,0.039489,0.065846,0.041424,0.012866,0.006504,0.005909,0.005469,0.003737,0.003814,0.002639,0.002638,0.003016,0.004285,0.006226,0.007688,0.008839,0.014596,0.028866,0.037921,0.022164,0.015744,0.007756,0.005050,0.007234,0.008132,0.006564,0.005699,0.007003,0.007011,0.005459,0.004080,0.003820,0.004403,0.004661,0.005385,0.007278,0.009647,0.010877,0.012884,0.014945,0.015339,0.012290,0.009204,0.008363,0.007093,0.005203,0.003328,0.002161,0.001538,0.001215,0.001037,0.001033,0.001172,0.001483,0.002127,0.002644,0.002412,0.001679,0.001068,0.000848,0.000972,0.001425,0.002263,0.003492,0.004427,0.004100,0.003201,0.002484,0.002255,0.002495,0.003139,0.004136,0.005259,0.005878,0.005432,0.004477,0.003617,0.002973,0.002606,0.002518,0.002611,0.002863,0.003395,0.004095,0.004529,0.004686,0.004927,0.005437,0.006092,0.006727,0.007073,0.006966 | |||
giahh49 ftgen 0,0,4096,10,0.600063,0.256340,0.126445,0.040717,0.097956,0.082383,0.135342,0.006369,0.002414,0.002312,0.001526,0.000552,0.000868,0.000435,0.000576,0.001145,0.001706,0.003688,0.013234,0.006626,0.006840,0.012971,0.003639,0.002955,0.001962,0.001988,0.000831,0.000533,0.000748,0.000490,0.000674,0.001431,0.002663,0.002680,0.002874,0.003227,0.001837,0.000874,0.000662,0.000901,0.001630,0.002139,0.001816,0.001233,0.000817,0.000658,0.000730,0.000864,0.001037,0.001616,0.002390,0.002487,0.002363,0.002429,0.002624,0.002971,0.002486,0.001530,0.000895,0.000669,0.000806,0.001085,0.001185,0.001002,0.000857,0.000900,0.001009,0.001198,0.001398,0.001306,0.001302,0.001562,0.001670,0.001440,0.001105,0.000872,0.000746,0.000748,0.000770,0.000788,0.000890,0.000973,0.000896,0.000716,0.000598,0.000536,0.000492,0.000469,0.000443,0.000384,0.000317,0.000262,0.000209,0.000162,0.000129,0.000110,0.000102,0.000099,0.000099,0.000096 | |||
giahh55 ftgen 0,0,4096,10,0.667225,0.194524,0.098683,0.096875,0.021209,0.006311,0.002978,0.001013,0.001249,0.001446,0.002393,0.004826,0.018741,0.012161,0.010480,0.005261,0.004569,0.001376,0.001132,0.003605,0.001846,0.002757,0.005346,0.004712,0.004806,0.002357,0.001109,0.001302,0.001860,0.001054,0.001120,0.001642,0.002240,0.004382,0.005473,0.003755,0.002444,0.002088,0.001822,0.000946,0.000790,0.001222,0.001653,0.001374,0.001401,0.002118,0.002061,0.001470,0.001198,0.001635,0.002387,0.002248,0.001327,0.000951,0.000884,0.000844,0.000805,0.000667,0.000669,0.000701,0.000591,0.000445,0.000367,0.000314,0.000272,0.000225,0.000179,0.000152,0.000164,0.000169,0.000151,0.000144,0.000137,0.000121,0.000115,0.000123,0.000125,0.000116,0.000102,0.000095,0.000102,0.000120,0.000135,0.000132,0.000117,0.000100,0.000084,0.000074,0.000072,0.000075,0.000077,0.000079,0.000083,0.000083,0.000081,0.000082,0.000084,0.000081,0.000074,0.000063 | |||
giahh61 ftgen 0,0,4096,10,0.701578,0.444091,0.390732,0.103519,0.007759,0.002497,0.001883,0.001103,0.001729,0.001889,0.001679,0.002455,0.000872,0.000433,0.001071,0.001382,0.002270,0.001077,0.000930,0.000940,0.001143,0.001633,0.001901,0.001446,0.002619,0.003724,0.002339,0.001969,0.001199,0.000674,0.001015,0.001321,0.001504,0.001378,0.000778,0.000682,0.001100,0.001312,0.001438,0.001513,0.000928,0.000466,0.000374,0.000410,0.000492,0.000515,0.000367,0.000230,0.000171,0.000169,0.000209,0.000236,0.000189,0.000194,0.000205,0.000196,0.000184,0.000168,0.000186,0.000223,0.000241,0.000197,0.000144,0.000113,0.000100,0.000101,0.000097,0.000088,0.000075,0.000067,0.000060,0.000051,0.000044,0.000040,0.000036,0.000034,0.000033,0.000033,0.000033,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giahh67 ftgen 0,0,4096,10,0.836515,0.800602,0.036351,0.016206,0.006383,0.007973,0.003273,0.011820,0.001230,0.001857,0.003725,0.004792,0.002586,0.008972,0.005518,0.007339,0.005207,0.006633,0.005670,0.005010,0.005379,0.002919,0.004501,0.004490,0.002854,0.003643,0.005161,0.002824,0.002183,0.001438,0.001060,0.000978,0.001138,0.001729,0.001501,0.001117,0.000626,0.000578,0.000512,0.000294,0.000255,0.000311,0.000397,0.000310,0.000205,0.000188,0.000179,0.000164,0.000172,0.000143,0.000115,0.000095,0.000084,0.000081,0.000080,0.000080,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giwavemapAhh ftgen 0,0,128,-27, 0,0, 43,0, 49,1, 55,2, 61,3, 67,4, 127,4 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
gitabs4morfAhh ftgen 0,0,8,-2,giahh43,giahh49,giahh55,giahh61,giahh67,giahh67,giahh67,giahh67 | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; HORN P | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
giHornP38 ftgen 0,0,4096,10,0.045737,0.148188,0.335691,0.493464,0.710665,0.765723,0.694286,0.628629,0.521398,0.428206,0.365416,0.306040,0.298023,0.254152,0.201721,0.154086,0.161771,0.146790,0.124044,0.110268,0.091099,0.076808,0.057743,0.042724,0.042724 | |||
giHornP50 ftgen 0,0,4096,10,0.280951,0.717837,0.823404,0.588908,0.394696,0.286430,0.176355,0.118365,0.064524,0.033209,0.016001,0.004104,0.004396,0.002069,0.002350,0.001903,0.001098,0.001262,0.001129,0.000906,0.000543,0.000575,0.000427,0.000355,0.000355 | |||
giHornP62 ftgen 0,0,4096,10,0.495327,0.909763,0.613398,0.368832,0.202553,0.124640,0.046586,0.011810,0.012510,0.011370,0.006659,0.004564,0.002331,0.001790,0.000667,0.000538,0.000352,0.000302,0.000558,0.000794,0.000797,0.000331,0.000342,0.000389,0.000389 | |||
giHornP74 ftgen 0,0,4096,10,0.796534,0.226262,0.060526,0.013273,0.003161,0.001015,0.001071,0.000595,0.000191,0.000337,0.000199,0.000173,0.000183,0.000187,0.000105,0.000113,0.000156,0.000119,0.000098,0.000067,0.000066,0.000064,0.000054,0.000043,0.000043 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
giwavemapHornP ftgen 0,0,128,-27, 0,0, 38,0, 50,1, 62,2, 74,3, 127,3 | |||
gitabs4morfHornP ftgen 0,0,4,-2,giHornP38,giHornP50,giHornP62,giHornP74 | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; HORN F | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
giHornF38 ftgen 0,0,4096,10,0.150333,0.205756,0.869097,0.723941,0.707935,0.116871,0.238125,0.330962,0.443031,0.325212,0.131256,0.267361,0.273576,0.146568,0.209758,0.158564,0.179271,0.084668,0.112177,0.118845,0.124993,0.096945,0.128906,0.125534,0.125534 | |||
giHornF50 ftgen 0,0,4096,10,0.348154,0.319965,0.418661,0.396206,0.046368,0.198167,0.035091,0.107400,0.035358,0.066696,0.053722,0.045581,0.066494,0.109943,0.059354,0.050001,0.123615,0.052990,0.032207,0.039448,0.051629,0.014079,0.014571,0.017523,0.017523 | |||
giHornF62 ftgen 0,0,4096,10,0.449507,0.544173,0.108516,0.300530,0.163030,0.351952,0.171674,0.202505,0.098101,0.066418,0.044492,0.071036,0.074224,0.064911,0.027430,0.041991,0.022245,0.017689,0.013130,0.020853,0.016891,0.038363,0.017524,0.016841,0.016841 | |||
giHornF74 ftgen 0,0,4096,10,0.923831,0.259141,0.262670,0.175552,0.089346,0.073056,0.055113,0.031968,0.027964,0.033656,0.035303,0.010920,0.019420,0.013447,0.012944,0.006111,0.007041,0.003864,0.005702,0.004615,0.003076,0.001589,0.002756,0.001234,0.001234 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
giwavemapHornF ftgen 0,0,128,-27, 0,0, 38,0, 50,1, 62,2, 74,3, 127,3 | |||
gitabs4morfHornF ftgen 0,0,4,-2,giHornF38,giHornF50,giHornF62,giHornF74 | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; BASS TROMBONE (HARMON MUTE) | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
giharmon33 ftgen 0,0,4096,10,0.875348,0.155770,0.111939,0.181031,0.355046,0.044216,0.039025,0.036422,0.074587,0.050492,0.042464,0.079868,0.121542,0.243299,0.253642,0.263571,0.422410,0.624259,0.742333,0.514304,0.760971,0.444426,0.456583,0.195508,0.070084,0.032239,0.029621,0.058523,0.044442,0.057324,0.077997,0.047218,0.046215,0.023786,0.017859,0.017652,0.012055,0.009595,0.009020,0.006000,0.004077,0.004950,0.004543,0.003196,0.002659,0.003533,0.004156,0.003745,0.002471,0.002264,0.003050,0.002614,0.001944,0.001709,0.001717,0.001934,0.002458,0.003618,0.004915,0.004334,0.003733,0.003804,0.003489,0.002755,0.002427,0.002273,0.002577,0.002702,0.002483,0.002059,0.002016,0.002214,0.002215,0.001947,0.001952,0.002236,0.002357,0.002417,0.002406,0.002309,0.002176,0.002227,0.002527,0.002649,0.002448,0.002165,0.002175,0.002322,0.002371,0.002202,0.001845,0.001620,0.001626,0.001927,0.002537,0.003091,0.003220,0.003231,0.003453,0.003751 | |||
giharmon34 ftgen 0,0,4096,10,0.443604,0.040301,0.041393,0.115682,0.622143,0.055550,0.073493,0.090539,0.109410,0.039052,0.138611,0.161174,0.290931,0.212197,0.410393,0.749789,0.917784,1.375368,0.934044,0.781551,0.356416,0.290222,0.181279,0.061983,0.081959,0.039112,0.044805,0.058922,0.022274,0.022731,0.038966,0.025063,0.031263,0.030753,0.032383,0.045020,0.032652,0.027144,0.033411,0.020397,0.015121,0.017071,0.014804,0.013636,0.012149,0.012930,0.014231,0.012821,0.011342,0.009001,0.008587,0.006187,0.005928,0.008836,0.012118,0.012242,0.009968,0.009445,0.006852,0.004519,0.002870,0.001975,0.001680,0.001593,0.001930,0.002744,0.003798,0.003938,0.003311,0.003174,0.003465,0.004740,0.006267,0.006620,0.006071,0.005274,0.005318,0.005795,0.006440,0.007152,0.007792,0.008192,0.007304,0.005765,0.004397,0.003369,0.002855,0.003059,0.003731,0.004377,0.004923,0.005763,0.006567,0.006834,0.006780,0.006575,0.005922,0.004714,0.003481,0.002696 | |||
giharmon36 ftgen 0,0,4096,10,0.934870,0.094639,0.263729,0.103300,0.556951,0.047384,0.167404,0.119804,0.122737,0.048833,0.154640,0.111318,0.302046,0.230750,0.517436,0.259307,0.354474,0.152230,0.109031,0.091431,0.071065,0.027335,0.037383,0.048534,0.033460,0.066084,0.041563,0.049933,0.029361,0.032804,0.017292,0.018054,0.023006,0.019576,0.018461,0.008645,0.007040,0.005924,0.005415,0.003713,0.003447,0.002816,0.003594,0.003583,0.002658,0.001561,0.001446,0.002347,0.003707,0.005343,0.007152,0.006970,0.005630,0.004404,0.002749,0.002098,0.002393,0.001708,0.001255,0.001150,0.001263,0.001445,0.001397,0.001331,0.001510,0.001783,0.001849,0.001576,0.001508,0.001400,0.001153,0.000940,0.000797,0.000734,0.000677,0.000581,0.000531,0.000644,0.000829,0.000891,0.000846,0.000864,0.000921,0.000980,0.000945,0.000994,0.001078,0.001054,0.000936,0.000863,0.000855,0.000855,0.000757,0.000683,0.000687,0.000667,0.000654,0.000639,0.000610,0.000586 | |||
giharmon38 ftgen 0,0,4096,10,0.275894,0.119750,0.302577,0.931731,0.080509,0.210351,0.194035,0.223110,0.137304,0.197845,0.327194,0.349699,0.653623,0.881895,0.939789,0.691399,0.569520,0.195895,0.129254,0.040633,0.094914,0.073078,0.145254,0.105583,0.162773,0.080818,0.095817,0.054832,0.079542,0.059357,0.055196,0.036903,0.021942,0.019084,0.020925,0.014726,0.013288,0.012653,0.010311,0.008738,0.008159,0.006852,0.004697,0.006565,0.011392,0.016788,0.018297,0.017879,0.015021,0.009463,0.005643,0.005105,0.004046,0.004010,0.005012,0.004282,0.003406,0.003104,0.003782,0.005116,0.003975,0.002459,0.001720,0.001650,0.002105,0.002882,0.003694,0.004103,0.003070,0.001947,0.001446,0.001258,0.001170,0.001349,0.001876,0.002582,0.002853,0.002391,0.002009,0.001887,0.001808,0.001514,0.001333,0.001265,0.001131,0.001082,0.001169,0.001278,0.001225,0.001070,0.000913,0.000800,0.000767,0.000799,0.000824,0.000902,0.001003,0.001061,0.001115,0.001185 | |||
giharmon39 ftgen 0,0,4096,10,0.215899,0.043569,0.155862,0.915877,0.029041,0.085938,0.096861,0.027476,0.042161,0.045780,0.077178,0.073681,0.292899,0.268475,0.052870,0.047343,0.020451,0.005226,0.004051,0.013123,0.014796,0.018766,0.016900,0.010549,0.011430,0.006502,0.006649,0.009883,0.007521,0.005298,0.002202,0.001505,0.001267,0.001744,0.001762,0.001880,0.001510,0.001300,0.001551,0.001113,0.001344,0.002682,0.004692,0.003899,0.003280,0.002211,0.001351,0.000889,0.000702,0.000681,0.000890,0.000985,0.000873,0.001082,0.000955,0.001016,0.001084,0.000930,0.000860,0.000656,0.000607,0.000724,0.000840,0.000859,0.000735,0.000640,0.000553,0.000553,0.000664,0.000694,0.000736,0.000846,0.000794,0.000763,0.000690,0.000686,0.000654,0.000659,0.000732,0.000714,0.000736,0.000748,0.000741,0.000620,0.000514,0.000484,0.000540,0.000707,0.000958,0.001141,0.001115,0.001012,0.000967,0.000906,0.000789,0.000653,0.000550,0.000512,0.000523,0.000521 | |||
giharmon40 ftgen 0,0,4096,10,0.369055,0.131998,0.314332,0.267587,0.083279,0.197505,0.246057,0.188865,0.247543,0.447904,0.311578,0.951654,0.440089,0.497270,0.248691,0.084689,0.024288,0.043815,0.092522,0.149863,0.063883,0.137365,0.089276,0.106339,0.067676,0.038080,0.044355,0.030311,0.016710,0.009404,0.009432,0.010647,0.009912,0.005595,0.004133,0.004025,0.003963,0.005248,0.007884,0.011332,0.009707,0.007295,0.004440,0.003429,0.004551,0.003060,0.002116,0.001763,0.001514,0.002027,0.002310,0.003069,0.002321,0.001811,0.001688,0.002021,0.001926,0.001770,0.001680,0.001534,0.001470,0.001491,0.001508,0.001391,0.001324,0.001260,0.001327,0.001406,0.001495,0.001338,0.001292,0.001395,0.001369,0.001408,0.001332,0.001258,0.001360,0.001502,0.001505,0.001392,0.001389,0.001469,0.001354,0.001230,0.001168,0.001229,0.001270,0.001296,0.001299,0.001384,0.001495,0.001524,0.001735,0.002015,0.002003,0.001730,0.001490,0.001313,0.001201,0.001201 | |||
giharmon41 ftgen 0,0,4096,10,0.338560,0.097872,0.404630,0.072213,0.101149,0.122271,0.088489,0.206809,0.295859,0.455726,0.802773,0.963091,0.671085,0.510166,0.125095,0.028121,0.044968,0.022808,0.033809,0.020551,0.006760,0.009093,0.007270,0.015331,0.017393,0.011093,0.005257,0.003771,0.002662,0.001862,0.002670,0.003093,0.003083,0.002636,0.001647,0.002030,0.003615,0.005828,0.005317,0.003389,0.002213,0.002189,0.002077,0.001392,0.000953,0.000899,0.000930,0.001189,0.001829,0.001616,0.001463,0.001355,0.001413,0.001368,0.001472,0.001201,0.000951,0.000804,0.000750,0.000839,0.001162,0.001540,0.001515,0.001241,0.001296,0.001396,0.001129,0.000785,0.000579,0.000562,0.000702,0.000938,0.001154,0.001155,0.001088,0.001192,0.001489,0.001693,0.001713,0.001549,0.001472,0.001606,0.001560,0.001278,0.001057,0.001106,0.001217,0.001127,0.001002,0.000959,0.000869,0.000789,0.000751,0.000712,0.000744,0.000874,0.001032,0.001112,0.001055,0.001033 | |||
giharmon43 ftgen 0,0,4096,10,0.135645,0.120943,0.979143,0.023489,0.114683,0.114072,0.130730,0.180948,0.281652,0.683720,0.964428,0.306787,0.213682,0.058648,0.025209,0.025596,0.047105,0.038846,0.017756,0.006258,0.005601,0.010206,0.010689,0.004381,0.002744,0.002982,0.002040,0.002284,0.001570,0.001528,0.002115,0.001649,0.002514,0.003304,0.005338,0.002902,0.001301,0.000713,0.000665,0.000652,0.000695,0.000698,0.000700,0.001056,0.000728,0.000485,0.000534,0.000633,0.000450,0.000429,0.000625,0.000827,0.001012,0.001160,0.001256,0.001213,0.001133,0.001362,0.001533,0.001305,0.001367,0.001616,0.001627,0.001417,0.001458,0.001637,0.001588,0.001552,0.001476,0.001327,0.001247,0.001076,0.000857,0.000699,0.000670,0.000726,0.000750,0.000854,0.000976,0.000936,0.000830,0.000768,0.000683,0.000599,0.000530,0.000491,0.000451,0.000398,0.000378,0.000368,0.000380,0.000455,0.000533,0.000535,0.000501,0.000464,0.000470,0.000496,0.000480,0.000442 | |||
giharmon45 ftgen 0,0,4096,10,0.244591,0.267325,0.126930,0.136762,0.271635,0.312002,0.223921,0.477139,0.969260,0.621811,0.276235,0.133028,0.017955,0.053396,0.048589,0.033493,0.018488,0.024467,0.024072,0.021974,0.013672,0.005364,0.005982,0.003607,0.001893,0.001866,0.001242,0.001433,0.001334,0.002488,0.002930,0.001518,0.001627,0.002275,0.001495,0.001193,0.000972,0.000737,0.000811,0.001235,0.001057,0.000838,0.001036,0.001047,0.001114,0.001012,0.000995,0.001090,0.001298,0.001286,0.001257,0.001216,0.001222,0.001045,0.001114,0.001441,0.001842,0.001582,0.001233,0.001180,0.001395,0.001374,0.001319,0.001317,0.001143,0.001024,0.001053,0.001334,0.001740,0.001862,0.001603,0.001274,0.001051,0.001022,0.000939,0.000839,0.000784,0.000794,0.000787,0.000752,0.000772,0.000742,0.000760,0.000882,0.001044,0.001103,0.001124,0.001129,0.001259,0.001523,0.001689,0.001631,0.001499,0.001332,0.001219,0.001138,0.001037,0.000952,0.000828,0.000746 | |||
giharmon46 ftgen 0,0,4096,10,0.315815,0.844525,0.164412,0.451756,0.585703,0.518759,0.681565,0.411064,0.952335,0.494514,0.366224,0.049949,0.050057,0.056689,0.053659,0.035965,0.043860,0.032015,0.019827,0.005201,0.006601,0.005746,0.007203,0.005429,0.003518,0.004758,0.003756,0.007828,0.015721,0.006418,0.003773,0.007304,0.003491,0.004073,0.002821,0.001771,0.002371,0.001798,0.002341,0.002659,0.003029,0.001998,0.001673,0.001293,0.000985,0.001051,0.001602,0.002316,0.002076,0.001608,0.001182,0.001234,0.001509,0.002038,0.001745,0.001690,0.001788,0.002285,0.002474,0.002206,0.002242,0.002438,0.002520,0.003014,0.003823,0.004834,0.005921,0.005640,0.004222,0.003103,0.002822,0.003289,0.003754,0.003426,0.002719,0.002201,0.001856,0.001927,0.002461,0.002893,0.002831,0.002430,0.002388,0.002815,0.003393,0.003964,0.004124,0.003523,0.002801,0.002546,0.002599,0.002485,0.002105,0.001812,0.001794,0.001803,0.001606,0.001468,0.001509,0.001549 | |||
giharmon48 ftgen 0,0,4096,10,0.122676,0.220788,0.073432,0.127649,0.149907,0.310663,0.320023,0.888642,0.333339,0.133323,0.020148,0.021610,0.031312,0.019058,0.010338,0.008856,0.009259,0.004665,0.008040,0.006064,0.004765,0.002412,0.001080,0.002281,0.002107,0.003516,0.001246,0.000827,0.000714,0.001050,0.000701,0.000675,0.000523,0.000934,0.001128,0.001435,0.000766,0.000427,0.000568,0.000725,0.001140,0.001379,0.000939,0.000679,0.000677,0.000639,0.000687,0.000664,0.000490,0.000511,0.000557,0.000610,0.000728,0.001052,0.001004,0.000764,0.000789,0.000916,0.000909,0.001108,0.000978,0.000656,0.000487,0.000484,0.000484,0.000521,0.000592,0.000647,0.000545,0.000494,0.000588,0.000761,0.000868,0.000902,0.000912,0.000928,0.000781,0.000667,0.000669,0.000665,0.000649,0.000608,0.000541,0.000459,0.000419,0.000435,0.000481,0.000492,0.000493,0.000550,0.000622,0.000616,0.000575,0.000571,0.000566,0.000520,0.000445,0.000380,0.000345,0.000334 | |||
giharmon50 ftgen 0,0,4096,10,0.162293,0.952587,0.107970,0.148379,0.162877,0.302263,0.378248,0.526544,0.202053,0.019075,0.035439,0.025852,0.023804,0.025676,0.028522,0.013081,0.004084,0.002802,0.001949,0.002297,0.001565,0.001596,0.004229,0.004413,0.001504,0.001251,0.001021,0.001404,0.001139,0.001161,0.000682,0.000466,0.000926,0.000495,0.000656,0.000798,0.001105,0.000691,0.000515,0.000562,0.000460,0.000566,0.000474,0.000481,0.000452,0.000510,0.000694,0.000487,0.000439,0.000584,0.000605,0.000623,0.000670,0.000916,0.000792,0.000871,0.000636,0.000514,0.000540,0.000466,0.000488,0.000461,0.000448,0.000510,0.000642,0.000795,0.000743,0.000838,0.001039,0.001142,0.000966,0.000733,0.000659,0.000657,0.000595,0.000548,0.000480,0.000411,0.000427,0.000488,0.000580,0.000723,0.000773,0.000693,0.000563,0.000471,0.000412,0.000429,0.000481,0.000468,0.000408,0.000367,0.000352,0.000329,0.000288,0.000260,0.000253,0.000249,0.000251,0.000257 | |||
giharmon52 ftgen 0,0,4096,10,0.167672,0.198778,0.227405,0.284738,0.650198,0.940684,0.975647,0.268741,0.049829,0.071939,0.024052,0.019628,0.020109,0.016231,0.003867,0.003960,0.004551,0.001438,0.002545,0.005214,0.004055,0.001727,0.002282,0.002593,0.001856,0.002206,0.001924,0.000871,0.000924,0.001558,0.001059,0.001121,0.001112,0.001260,0.001747,0.001193,0.000757,0.001035,0.000862,0.000951,0.001089,0.001598,0.001563,0.001170,0.001427,0.001409,0.001130,0.001424,0.001095,0.000785,0.000800,0.001135,0.001025,0.001093,0.000966,0.001083,0.001357,0.001272,0.001103,0.001508,0.002036,0.001512,0.001143,0.001348,0.001716,0.001528,0.001151,0.000935,0.001007,0.001124,0.000930,0.000715,0.000611,0.000658,0.000759,0.000788,0.000734,0.000745,0.000773,0.000916,0.001069,0.001056,0.000942,0.000778,0.000676,0.000670,0.000675,0.000675,0.000644,0.000597,0.000550,0.000537,0.000555,0.000559,0.000525,0.000454,0.000404,0.000407,0.000442,0.000480 | |||
giharmon53 ftgen 0,0,4096,10,0.026511,0.043338,0.103983,0.172681,0.197084,0.979650,0.257547,0.017830,0.077807,0.064492,0.041376,0.053973,0.027216,0.006355,0.007006,0.001571,0.001221,0.001837,0.007442,0.004872,0.002662,0.002280,0.002188,0.001493,0.002889,0.002534,0.002305,0.002344,0.001085,0.001468,0.002010,0.002087,0.000876,0.000665,0.000602,0.000985,0.000607,0.000521,0.000609,0.000586,0.000566,0.000481,0.000501,0.000665,0.000626,0.000653,0.000579,0.000643,0.000690,0.000651,0.000432,0.000403,0.000504,0.000532,0.000598,0.000456,0.000369,0.000393,0.000370,0.000313,0.000265,0.000292,0.000299,0.000335,0.000381,0.000415,0.000449,0.000480,0.000399,0.000307,0.000245,0.000249,0.000338,0.000468,0.000545,0.000532,0.000495,0.000471,0.000476,0.000450,0.000388,0.000331,0.000297,0.000269,0.000233,0.000202,0.000188,0.000169,0.000158,0.000175,0.000208,0.000254,0.000316,0.000380,0.000433,0.000473,0.000499,0.000504,0.000472,0.000425 | |||
giharmon55 ftgen 0,0,4096,10,0.081729,0.021968,0.138971,0.239901,0.947997,0.478402,0.152261,0.093610,0.063734,0.039617,0.032944,0.006609,0.015447,0.010428,0.006706,0.002730,0.013404,0.010554,0.003963,0.002958,0.000885,0.000799,0.001120,0.001680,0.001729,0.001274,0.001362,0.000943,0.002299,0.001254,0.001112,0.000960,0.001034,0.000866,0.000912,0.000751,0.001101,0.000945,0.000888,0.000760,0.000758,0.000764,0.000797,0.000790,0.000657,0.000779,0.000816,0.000819,0.000797,0.000793,0.000830,0.000803,0.000678,0.000695,0.000912,0.000796,0.000686,0.000833,0.000798,0.000772,0.000941,0.000835,0.000815,0.000695,0.000533,0.000448,0.000405,0.000411,0.000492,0.000554,0.000576,0.000587,0.000573,0.000542,0.000560,0.000560,0.000557,0.000544,0.000547,0.000555,0.000551,0.000537,0.000544,0.000557,0.000533,0.000512,0.000499,0.000514,0.000548,0.000548,0.000539,0.000526,0.000511,0.000513,0.000513,0.000510,0.000506,0.000503,0.000507,0.000508 | |||
giharmon57 ftgen 0,0,4096,10,0.150966,0.141943,0.169272,0.391010,0.953809,0.119929,0.039950,0.075251,0.042294,0.016963,0.005858,0.005238,0.002857,0.003841,0.008582,0.001485,0.001148,0.002596,0.001639,0.001556,0.002197,0.001142,0.001112,0.001195,0.001136,0.001245,0.000909,0.001301,0.000937,0.000941,0.001212,0.001227,0.000900,0.000862,0.000883,0.000728,0.001073,0.001100,0.000883,0.001160,0.000948,0.000936,0.001199,0.000883,0.000791,0.000945,0.000697,0.000592,0.000626,0.000588,0.000617,0.000696,0.000684,0.000803,0.000743,0.000641,0.000514,0.000453,0.000480,0.000536,0.000586,0.000581,0.000619,0.000622,0.000602,0.000589,0.000589,0.000600,0.000582,0.000552,0.000553,0.000557,0.000549,0.000526,0.000512,0.000519,0.000533,0.000535,0.000547,0.000544,0.000539,0.000534,0.000524,0.000512,0.000502,0.000502,0.000502,0.000497,0.000480,0.000468,0.000466,0.000464,0.000461,0.000459,0.000463,0.000470,0.000477,0.000482,0.000483,0.000488 | |||
giharmon60 ftgen 0,0,4096,10,0.306985,0.126374,0.301596,0.969500,0.074344,0.009729,0.006039,0.004002,0.001666,0.001675,0.002331,0.000674,0.000730,0.000729,0.000758,0.000585,0.000577,0.000687,0.000657,0.001017,0.000768,0.000581,0.000549,0.000326,0.000290,0.000463,0.000666,0.000567,0.000312,0.000634,0.000665,0.000397,0.000264,0.000232,0.000286,0.000583,0.000629,0.000663,0.000354,0.000268,0.000259,0.000263,0.000303,0.000274,0.000231,0.000322,0.000471,0.000473,0.000488,0.000569,0.000596,0.000564,0.000445,0.000430,0.000473,0.000519,0.000490,0.000446,0.000488,0.000475,0.000372,0.000301,0.000312,0.000304,0.000374,0.000526,0.000614,0.000564,0.000443,0.000349,0.000321,0.000320,0.000292,0.000243,0.000210,0.000227,0.000301,0.000393,0.000452,0.000473,0.000454,0.000415,0.000375,0.000353,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giharmon62 ftgen 0,0,4096,10,0.969106,0.095726,0.196065,0.188016,0.005133,0.010386,0.004868,0.005030,0.003515,0.002819,0.002632,0.002361,0.001260,0.000235,0.000966,0.001186,0.001018,0.000871,0.001416,0.000300,0.000430,0.000824,0.000912,0.000810,0.000516,0.000452,0.000279,0.000463,0.000690,0.000443,0.000429,0.000374,0.000579,0.000876,0.000457,0.000456,0.000449,0.000577,0.000797,0.000538,0.000571,0.000564,0.000466,0.000418,0.000306,0.000321,0.000334,0.000294,0.000244,0.000204,0.000231,0.000265,0.000340,0.000422,0.000467,0.000400,0.000291,0.000221,0.000207,0.000236,0.000249,0.000246,0.000207,0.000188,0.000203,0.000210,0.000206,0.000193,0.000167,0.000155,0.000192,0.000247,0.000284,0.000296,0.000308,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giharmon64 ftgen 0,0,4096,10,0.361663,0.582855,0.979701,0.215161,0.118878,0.052107,0.013704,0.009061,0.004379,0.007958,0.002817,0.003129,0.003908,0.003040,0.002896,0.002083,0.002113,0.004424,0.003621,0.002331,0.002616,0.002100,0.002293,0.001878,0.002282,0.002077,0.002490,0.002088,0.001811,0.001576,0.001425,0.001407,0.001400,0.001482,0.001847,0.001816,0.001426,0.001730,0.001541,0.001272,0.001398,0.001231,0.001332,0.001350,0.001199,0.001258,0.001149,0.001243,0.001247,0.001156,0.001074,0.001049,0.001142,0.001143,0.001058,0.000978,0.000854,0.000777,0.000688,0.000751,0.000914,0.001100,0.001101,0.001029,0.001044,0.001018,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giharmon65 ftgen 0,0,4096,10,0.314097,0.342771,0.973682,0.028876,0.015118,0.012713,0.002418,0.005174,0.003787,0.002218,0.002249,0.001625,0.002664,0.001830,0.002581,0.001180,0.001626,0.001619,0.001315,0.001513,0.001344,0.001175,0.000964,0.001112,0.001416,0.001129,0.001190,0.001045,0.001248,0.001029,0.000799,0.000750,0.000815,0.000965,0.000955,0.000725,0.000652,0.000709,0.000801,0.000717,0.000786,0.000648,0.000597,0.000630,0.000744,0.000667,0.000613,0.000496,0.000535,0.000596,0.000603,0.000583,0.000599,0.000593,0.000594,0.000603,0.000579,0.000588,0.000623,0.000624,0.000595,0.000573,0.000574,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
giwavemapharmon ftgen 0,0,128,-27, 0,0, 33,0, 34,1, 36,2, 38,3, 39,3, 40,4, 41,5, 43,6, 45,7, 46,8, 48,9, 50,10, 52,11, 53,12, 55,13, 57,14, 60,15, 62,16, 64,17, 65,18, 127,18 | |||
gitabs4morfharmon ftgen 0,0,32,-2, giharmon33,giharmon34,giharmon36,giharmon38,giharmon39,giharmon40,giharmon41,giharmon43,giharmon45,giharmon46,giharmon48,giharmon50,giharmon52,giharmon53,giharmon55,giharmon57,giharmon60,giharmon62,giharmon64,giharmon65,giharmon65,giharmon65,giharmon65,giharmon65,giharmon65,giharmon65,giharmon65,giharmon65,giharmon65,giharmon65,giharmon65,giharmon65 | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; BASS TROMBONE (STRAIGHT MUTE) | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
giMute122 ftgen 0,0,4096,10,0.164339,0.102551,0.069563,0.138697,0.223728,0.265220,0.280256,0.332069,0.420578,0.494911,0.577300,0.438019,0.538305,0.547959,0.857117,0.773953,0.517366,0.523329,0.250443,0.159600,0.171983,0.125233,0.061672,0.045591,0.028822,0.029244,0.026342,0.016326,0.018016,0.016474,0.009454,0.006045,0.003657,0.004270,0.008585,0.014528,0.017452,0.019652,0.016908,0.013257,0.016063,0.015947,0.010616,0.009647,0.007357,0.006942,0.005472,0.008460,0.014247,0.013954,0.009828,0.009192,0.009759,0.008585,0.009964,0.012870,0.010975,0.007757,0.007624,0.008209,0.008005,0.007979,0.007726,0.007655,0.007795,0.007616,0.006725,0.005945,0.005229,0.004482,0.003678,0.003014,0.002618,0.002393,0.002731,0.003322,0.003436,0.002905,0.002194,0.001589,0.001214,0.001156,0.001328,0.001483,0.001561,0.001609,0.001696,0.001872,0.001908,0.002069,0.002367,0.002374,0.002130,0.001840,0.001674,0.001720,0.001812,0.001802,0.001732,0.001622 | |||
giMute123 ftgen 0,0,4096,10,0.168432,0.062246,0.078354,0.110195,0.129041,0.377921,0.282536,0.228004,0.524063,0.552904,0.492429,0.533439,0.241793,0.431759,0.960231,0.527526,0.457018,0.447269,0.173908,0.188096,0.117536,0.088623,0.038960,0.034631,0.040187,0.030976,0.019737,0.017966,0.018488,0.010201,0.006147,0.003826,0.005925,0.007905,0.007681,0.008607,0.015400,0.021169,0.020768,0.019478,0.013836,0.014839,0.014657,0.013690,0.013236,0.016605,0.019334,0.015552,0.016319,0.019658,0.016907,0.011550,0.009411,0.009522,0.010270,0.008678,0.008528,0.008212,0.007305,0.006920,0.008975,0.009992,0.007897,0.006576,0.006398,0.005486,0.004674,0.004082,0.003255,0.002525,0.001877,0.001735,0.002072,0.002316,0.002265,0.001877,0.001508,0.001299,0.001160,0.001268,0.001500,0.001614,0.001649,0.001544,0.001559,0.001869,0.002444,0.002837,0.002564,0.002224,0.002193,0.002264,0.002103,0.001864,0.001829,0.001964,0.001969,0.001708,0.001368,0.001146 | |||
giMute124 ftgen 0,0,4096,10,0.142996,0.083116,0.064144,0.232641,0.363109,0.345440,0.348866,0.301465,0.496059,0.590541,0.450344,0.611392,0.691633,0.939595,0.719155,0.655138,0.609154,0.236629,0.218778,0.154757,0.077033,0.074852,0.040400,0.038516,0.034596,0.023126,0.013779,0.015070,0.008541,0.005439,0.004834,0.008763,0.016084,0.025053,0.033607,0.047747,0.045648,0.045497,0.025409,0.021094,0.022069,0.038009,0.041759,0.063224,0.070253,0.055822,0.048910,0.048219,0.052210,0.039531,0.037339,0.030915,0.028370,0.038122,0.044865,0.047418,0.042297,0.039872,0.040218,0.036388,0.033231,0.028010,0.022884,0.020191,0.018026,0.013653,0.011148,0.010124,0.011725,0.014502,0.015977,0.012802,0.008969,0.006321,0.005229,0.005789,0.006897,0.007670,0.008699,0.009835,0.010769,0.010605,0.010601,0.010721,0.010749,0.010852,0.010291,0.009559,0.008597,0.007779,0.007284,0.006683,0.005906,0.005353,0.005322,0.005542,0.005543,0.005124,0.004449,0.003603 | |||
giMute125 ftgen 0,0,4096,10,0.044114,0.061305,0.127226,0.214587,0.248138,0.322022,0.289079,0.300066,0.219345,0.389034,0.679974,0.361926,0.905776,0.756147,0.724622,0.413971,0.233101,0.180408,0.145204,0.056539,0.046805,0.060866,0.050067,0.038355,0.032608,0.021983,0.011622,0.006955,0.011848,0.020388,0.023077,0.028897,0.039329,0.040006,0.051071,0.030060,0.035671,0.024931,0.038339,0.037708,0.058492,0.053593,0.037184,0.045630,0.043341,0.034029,0.031437,0.034031,0.025773,0.028039,0.030454,0.031458,0.031318,0.029135,0.028627,0.025452,0.021115,0.018088,0.014741,0.013689,0.012102,0.010087,0.009117,0.010501,0.012107,0.011147,0.008670,0.006054,0.004653,0.004909,0.005979,0.007571,0.008945,0.009279,0.009403,0.009990,0.010831,0.011229,0.011576,0.012198,0.011522,0.009582,0.007918,0.007133,0.006815,0.006874,0.006545,0.005823,0.005215,0.004793,0.004226,0.003549,0.002763,0.002034,0.001527,0.001275,0.001284,0.001501,0.001663,0.001513 | |||
giMute126 ftgen 0,0,4096,10,0.060196,0.079208,0.165018,0.403007,0.474143,0.259060,0.390988,0.369395,0.520597,0.147418,0.294315,0.719113,0.948583,0.911775,0.688364,0.284237,0.196457,0.197963,0.098875,0.075773,0.045829,0.020036,0.034330,0.015751,0.015028,0.009926,0.008781,0.011622,0.026268,0.030349,0.027636,0.033521,0.031042,0.039392,0.034047,0.037282,0.023269,0.035915,0.033496,0.040946,0.033303,0.030305,0.029753,0.029612,0.029870,0.024821,0.021197,0.017836,0.015201,0.014801,0.017255,0.016419,0.014400,0.014847,0.014196,0.013845,0.010243,0.007414,0.006884,0.005313,0.005125,0.006712,0.007001,0.005537,0.003835,0.002755,0.002847,0.003574,0.003940,0.004035,0.004370,0.004927,0.004830,0.004569,0.004559,0.004585,0.004513,0.003828,0.003072,0.002596,0.002377,0.002294,0.002087,0.001940,0.001859,0.001843,0.002114,0.002255,0.001844,0.001305,0.000970,0.000768,0.000670,0.000707,0.000807,0.000885,0.000924,0.000852,0.000694,0.000544 | |||
giMute127 ftgen 0,0,4096,10,0.052401,0.049320,0.080590,0.183766,0.164401,0.307439,0.388671,0.284459,0.318081,0.164443,0.441431,0.928201,0.876487,0.740904,0.324363,0.142732,0.081529,0.077495,0.028649,0.043648,0.038991,0.025075,0.013227,0.010195,0.011781,0.010501,0.016602,0.024255,0.023187,0.036495,0.057654,0.054268,0.048563,0.024903,0.054174,0.048040,0.071704,0.054365,0.049624,0.064806,0.092036,0.062098,0.048326,0.054051,0.039134,0.032416,0.036465,0.055694,0.042371,0.035750,0.021224,0.022257,0.011427,0.014694,0.009479,0.004552,0.013174,0.019261,0.013315,0.005818,0.001677,0.002772,0.003021,0.006297,0.007154,0.008171,0.010310,0.008506,0.007517,0.010904,0.006062,0.012403,0.007495,0.006084,0.005664,0.006058,0.004342,0.006256,0.008205,0.007899,0.006624,0.007878,0.003449,0.001680,0.000514,0.001804,0.002081,0.003443,0.004990,0.003472,0.003035,0.002319,0.001815,0.000843,0.001081,0.003090,0.002248,0.001877,0.002589,0.003743 | |||
giMute128 ftgen 0,0,4096,10,0.027923,0.100208,0.119497,0.305740,0.241671,0.283542,0.288061,0.232034,0.826888,0.407135,0.944943,0.754001,0.650071,0.360755,0.163788,0.199546,0.064667,0.047976,0.067193,0.033442,0.022636,0.018891,0.006473,0.006036,0.009904,0.016425,0.024814,0.044941,0.038557,0.069982,0.053960,0.007689,0.060655,0.019491,0.072831,0.052666,0.042308,0.055883,0.044001,0.027661,0.043229,0.023057,0.025173,0.028614,0.031240,0.027168,0.026598,0.023386,0.018674,0.009964,0.010171,0.008959,0.004421,0.009443,0.011811,0.008975,0.005444,0.002992,0.002577,0.004840,0.005217,0.007905,0.008254,0.008604,0.004473,0.009592,0.008601,0.005583,0.008098,0.005796,0.002345,0.007586,0.005015,0.004900,0.007488,0.005743,0.006825,0.002224,0.002742,0.001117,0.001857,0.001298,0.003169,0.002324,0.002382,0.001822,0.001779,0.001092,0.000752,0.001206,0.002075,0.000843,0.001972,0.001844,0.002893,0.002804,0.002542,0.001110,0.001376,0.000804 | |||
giMute129 ftgen 0,0,4096,10,0.014669,0.032320,0.102462,0.174664,0.169222,0.111331,0.339606,0.209754,0.217866,0.343088,0.891951,0.530957,0.472318,0.164643,0.165367,0.091601,0.090801,0.015419,0.039607,0.019025,0.012281,0.004714,0.002434,0.014861,0.038522,0.020090,0.049806,0.050949,0.061040,0.054492,0.035308,0.046103,0.018911,0.085037,0.066539,0.090037,0.115123,0.114020,0.059158,0.070988,0.070450,0.068910,0.054753,0.043435,0.030742,0.021866,0.024247,0.013293,0.017833,0.010515,0.011265,0.016382,0.023641,0.010420,0.007923,0.005015,0.009328,0.008929,0.010346,0.011125,0.009063,0.009311,0.010454,0.010758,0.009200,0.014939,0.006906,0.005195,0.007827,0.007531,0.008761,0.010132,0.008289,0.010958,0.004572,0.001934,0.001818,0.002642,0.002171,0.002199,0.002528,0.001704,0.001645,0.001110,0.000567,0.001256,0.000671,0.001415,0.003604,0.003233,0.002086,0.001933,0.001526,0.000662,0.001458,0.000497,0.000845,0.000680,0.001138,0.001279 | |||
giMute130 ftgen 0,0,4096,10,0.064908,0.079846,0.127850,0.445046,0.330968,0.420691,0.480533,0.374119,0.245280,0.729167,0.936260,0.749421,0.381456,0.247718,0.207617,0.116908,0.051373,0.019507,0.008564,0.025213,0.010576,0.007009,0.011265,0.017944,0.027208,0.040488,0.021178,0.046272,0.038151,0.021208,0.044463,0.023287,0.045981,0.030790,0.020921,0.015858,0.026172,0.019160,0.017080,0.011607,0.015955,0.006307,0.009311,0.006865,0.003784,0.003961,0.002271,0.002504,0.000904,0.002864,0.002378,0.001916,0.001531,0.000626,0.001045,0.001491,0.001672,0.000890,0.001666,0.001476,0.001501,0.000957,0.003007,0.001529,0.001037,0.001154,0.001031,0.000515,0.000881,0.000327,0.000467,0.000436,0.000280,0.000329,0.000454,0.000243,0.000168,0.000282,0.000948,0.000411,0.000184,0.000452,0.000360,0.000354,0.000193,0.000243,0.000591,0.000203,0.000418,0.000245,0.000193,0.000287,0.000162,0.000386,0.000147,0.000097,0.000291,0.000161,0.000222,0.000228 | |||
giMute131 ftgen 0,0,4096,10,0.068230,0.065611,0.217451,0.232412,0.188182,0.427625,0.292296,0.554990,0.340081,0.915514,0.522787,0.307999,0.162151,0.094669,0.056724,0.027329,0.011538,0.010489,0.008261,0.001997,0.007832,0.008040,0.029670,0.021346,0.029403,0.071206,0.042160,0.041297,0.059757,0.018923,0.105664,0.038842,0.027166,0.042666,0.031872,0.028802,0.030657,0.019773,0.024186,0.023554,0.016848,0.015145,0.013926,0.008132,0.010479,0.005103,0.002808,0.010621,0.007445,0.004301,0.001100,0.003068,0.003063,0.004833,0.003047,0.003019,0.003716,0.005204,0.002390,0.002979,0.001408,0.001568,0.001539,0.001833,0.002366,0.001838,0.000682,0.001960,0.000613,0.000686,0.000652,0.000399,0.000606,0.000602,0.000521,0.000455,0.000432,0.000091,0.000136,0.000332,0.000272,0.000302,0.000126,0.000375,0.000314,0.000203,0.000126,0.000237,0.000293,0.000291,0.000185,0.000182,0.000275,0.000263,0.000195,0.000151,0.000202,0.000294,0.000205,0.000198 | |||
giMute132 ftgen 0,0,4096,10,0.072458,0.092631,0.167684,0.302817,0.140977,0.255042,0.110714,0.344468,0.928686,0.667412,0.338258,0.200769,0.147649,0.065744,0.004582,0.023573,0.011837,0.008391,0.007660,0.014753,0.031615,0.027782,0.039431,0.047372,0.049448,0.013895,0.042049,0.032148,0.026316,0.026284,0.049745,0.043954,0.026083,0.037453,0.029582,0.022591,0.018017,0.013163,0.009816,0.004994,0.005845,0.002926,0.004507,0.007678,0.002757,0.002125,0.001498,0.002105,0.002073,0.003179,0.003552,0.003030,0.003107,0.003121,0.004471,0.001227,0.002877,0.002488,0.002740,0.003051,0.002796,0.002240,0.000296,0.000464,0.000414,0.001290,0.000687,0.001086,0.000537,0.000387,0.000130,0.000370,0.000092,0.000561,0.000559,0.000109,0.000094,0.000089,0.000290,0.000073,0.000183,0.000250,0.000318,0.000509,0.000515,0.000390,0.000503,0.000327,0.000338,0.000232,0.000327,0.000154,0.000173,0.000108,0.000092,0.000271,0.000089,0.000076,0.000105,0.000132 | |||
giMute133 ftgen 0,0,4096,10,0.171302,0.215302,0.554037,0.602813,0.500383,0.551353,0.792246,0.972277,0.915826,0.832314,0.393008,0.188469,0.087171,0.051938,0.057335,0.030089,0.018181,0.012795,0.030872,0.033984,0.097553,0.117375,0.088919,0.019750,0.074370,0.074970,0.077987,0.098699,0.118454,0.054334,0.051802,0.037932,0.045722,0.044228,0.016572,0.018704,0.013524,0.013398,0.003788,0.004323,0.010291,0.003069,0.001274,0.001330,0.002466,0.002824,0.003268,0.005612,0.003975,0.000819,0.002777,0.002460,0.002046,0.001584,0.002892,0.002346,0.003012,0.001881,0.000649,0.000801,0.000646,0.001523,0.001240,0.001310,0.000390,0.000248,0.000279,0.000518,0.000341,0.000512,0.000393,0.000190,0.000358,0.000126,0.000196,0.000125,0.000251,0.000327,0.000531,0.000833,0.000907,0.000336,0.000482,0.000237,0.000687,0.000266,0.000316,0.000368,0.000104,0.000129,0.000172,0.000171,0.000167,0.000055,0.000143,0.000116,0.000132,0.000198,0.000238,0.000318 | |||
giMute134 ftgen 0,0,4096,10,0.097133,0.173820,0.374605,0.474497,0.645937,0.376089,0.435327,0.976798,0.725285,0.297676,0.120366,0.069249,0.033502,0.014976,0.014214,0.011249,0.006081,0.003570,0.011892,0.014690,0.022764,0.024186,0.025001,0.044955,0.049727,0.048851,0.047898,0.053897,0.023052,0.038993,0.025427,0.027582,0.022350,0.021270,0.010750,0.009160,0.013099,0.002909,0.008796,0.006376,0.001857,0.001716,0.003061,0.001735,0.002918,0.004325,0.002877,0.003817,0.005184,0.003931,0.001995,0.004293,0.003739,0.003678,0.003158,0.002071,0.001133,0.000232,0.000323,0.001563,0.001268,0.000658,0.000426,0.000063,0.000421,0.000195,0.000767,0.000535,0.000446,0.000289,0.000184,0.000296,0.000288,0.000200,0.000535,0.000186,0.000733,0.000229,0.000412,0.000107,0.000166,0.000355,0.000312,0.000317,0.000354,0.000185,0.000132,0.000137,0.000206,0.000233,0.000262,0.000150,0.000123,0.000145,0.000145,0.000117,0.000140,0.000106,0.000135,0.000169 | |||
giMute135 ftgen 0,0,4096,10,0.179021,0.401691,0.729330,0.982922,0.746447,0.524380,0.900583,0.585038,0.953435,0.443166,0.289448,0.098763,0.031244,0.011392,0.020066,0.020371,0.036289,0.021837,0.044660,0.116353,0.070855,0.059093,0.066299,0.083923,0.069741,0.061417,0.033091,0.045547,0.029414,0.028975,0.021471,0.021629,0.010855,0.013960,0.004240,0.008225,0.009562,0.004312,0.001601,0.002687,0.001271,0.003054,0.004689,0.003158,0.006429,0.004058,0.005468,0.002640,0.001551,0.003253,0.003142,0.003027,0.001217,0.000340,0.000216,0.000471,0.000540,0.000381,0.000432,0.000182,0.000650,0.000176,0.000758,0.000323,0.000522,0.000156,0.000289,0.000185,0.000281,0.000179,0.000391,0.000461,0.000214,0.000356,0.000189,0.000425,0.000214,0.000172,0.000322,0.000195,0.000387,0.000323,0.000373,0.000170,0.000176,0.000048,0.000079,0.000049,0.000161,0.000129,0.000141,0.000083,0.000119,0.000204,0.000318,0.000410,0.000202,0.000283,0.000292,0.000127 | |||
giMute136 ftgen 0,0,4096,10,0.084007,0.199308,0.212901,0.389112,0.310014,0.209644,0.951984,0.633937,0.286005,0.146120,0.053652,0.047694,0.020100,0.016786,0.003816,0.018198,0.008332,0.020077,0.037293,0.016675,0.022299,0.027356,0.023496,0.049061,0.039132,0.026396,0.012922,0.017081,0.012583,0.010068,0.005525,0.002721,0.003104,0.004799,0.003308,0.002047,0.001239,0.002036,0.002197,0.002242,0.003547,0.004859,0.003272,0.001567,0.002063,0.002229,0.001760,0.001286,0.001961,0.000541,0.000366,0.000986,0.000730,0.000861,0.000630,0.000616,0.000358,0.001058,0.000464,0.000438,0.000450,0.000487,0.000193,0.000559,0.000479,0.000260,0.000259,0.000887,0.000529,0.000258,0.000611,0.000375,0.000388,0.000092,0.000430,0.000337,0.000138,0.000312,0.000579,0.000492,0.000207,0.000330,0.000350,0.000212,0.000159,0.000387,0.000350,0.000158,0.000191,0.000374,0.000113,0.000150,0.000260,0.000156,0.000117,0.000208,0.000235,0.000105,0.000074,0.000268 | |||
giMute137 ftgen 0,0,4096,10,0.121187,0.301409,0.437255,0.488546,0.532406,0.556320,0.940536,0.612558,0.171145,0.078278,0.033359,0.039980,0.019198,0.003684,0.014541,0.021902,0.025869,0.028022,0.020078,0.018008,0.063141,0.040559,0.061443,0.025176,0.045882,0.030795,0.027823,0.023490,0.015819,0.011054,0.004279,0.008778,0.007683,0.002850,0.002807,0.001837,0.004594,0.006832,0.003882,0.006682,0.004472,0.002359,0.002653,0.002120,0.002271,0.001366,0.001048,0.000977,0.001563,0.000795,0.000741,0.000197,0.000435,0.000663,0.000303,0.000697,0.000460,0.000621,0.000388,0.000298,0.000103,0.000484,0.000378,0.000376,0.000296,0.000134,0.000043,0.000150,0.000155,0.000176,0.000187,0.000055,0.000111,0.000091,0.000143,0.000129,0.000153,0.000171,0.000204,0.000159,0.000206,0.000139,0.000065,0.000078,0.000107,0.000102,0.000128,0.000113,0.000157,0.000150,0.000078,0.000128,0.000144,0.000084,0.000114,0.000188,0.000043,0.000106,0.000116,0.000128 | |||
giMute138 ftgen 0,0,4096,10,0.137239,0.608302,0.333203,0.546467,0.231739,0.766708,0.950744,0.327806,0.160412,0.060869,0.019878,0.003953,0.008113,0.006915,0.028018,0.027245,0.043331,0.020302,0.014454,0.025972,0.026882,0.018782,0.017822,0.013846,0.010287,0.009995,0.005808,0.004941,0.003243,0.000812,0.002013,0.001670,0.000819,0.000666,0.000772,0.000298,0.000436,0.000772,0.000741,0.000154,0.001321,0.000422,0.000226,0.000631,0.000439,0.000344,0.000337,0.000336,0.000616,0.000238,0.000312,0.000215,0.000181,0.000430,0.000292,0.000227,0.000331,0.000311,0.000246,0.000311,0.000279,0.000324,0.000208,0.000103,0.000266,0.000302,0.000310,0.000240,0.000310,0.000296,0.000228,0.000305,0.000203,0.000181,0.000235,0.000154,0.000238,0.000155,0.000185,0.000226,0.000170,0.000202,0.000202,0.000228,0.000150,0.000178,0.000239,0.000187,0.000194,0.000253,0.000070,0.000165,0.000223,0.000127,0.000156,0.000160,0.000180,0.000163,0.000129,0.000224 | |||
giMute139 ftgen 0,0,4096,10,0.061443,0.238708,0.356688,0.269787,0.339649,0.912187,0.776022,0.165931,0.073909,0.021161,0.016878,0.008990,0.003708,0.022300,0.041143,0.038233,0.004859,0.023579,0.053718,0.052003,0.042268,0.022601,0.022660,0.029648,0.019517,0.017414,0.011974,0.004870,0.011305,0.003101,0.000546,0.002006,0.003619,0.004048,0.005624,0.003647,0.002198,0.002634,0.003291,0.001943,0.000613,0.000545,0.000250,0.000451,0.000789,0.000299,0.000410,0.000212,0.000138,0.000424,0.000415,0.000404,0.000244,0.000269,0.000335,0.000329,0.000230,0.000373,0.000400,0.000370,0.000260,0.000376,0.000293,0.000187,0.000119,0.000256,0.000177,0.000244,0.000278,0.000293,0.000302,0.000158,0.000215,0.000196,0.000203,0.000167,0.000136,0.000170,0.000168,0.000137,0.000166,0.000168,0.000160,0.000177,0.000247,0.000183,0.000197,0.000135,0.000162,0.000164,0.000186,0.000121,0.000206,0.000166,0.000144,0.000145,0.000141,0.000122,0.000131,0.000148 | |||
giMute140 ftgen 0,0,4096,10,0.171458,0.486737,0.414556,0.287720,0.507039,0.974434,0.387302,0.180263,0.044683,0.029233,0.014770,0.003589,0.009392,0.033786,0.054370,0.010033,0.024497,0.035533,0.046495,0.020949,0.024322,0.023346,0.018462,0.011212,0.009184,0.003515,0.005537,0.002905,0.001147,0.001777,0.002912,0.002534,0.003007,0.002041,0.002109,0.001352,0.001160,0.001111,0.000145,0.000433,0.000205,0.000056,0.000347,0.000268,0.000294,0.000170,0.000469,0.000118,0.000167,0.000252,0.000207,0.000132,0.000371,0.000145,0.000293,0.000072,0.000271,0.000135,0.000201,0.000141,0.000204,0.000171,0.000237,0.000126,0.000167,0.000093,0.000231,0.000074,0.000160,0.000043,0.000250,0.000055,0.000217,0.000066,0.000199,0.000066,0.000231,0.000104,0.000233,0.000061,0.000246,0.000078,0.000219,0.000099,0.000254,0.000073,0.000200,0.000053,0.000175,0.000057,0.000197,0.000066,0.000126,0.000068,0.000163,0.000069,0.000139,0.000114,0.000270,0.000106 | |||
giMute141 ftgen 0,0,4096,10,0.096700,0.501938,0.304973,0.388545,0.605784,0.973491,0.310298,0.166062,0.031823,0.020041,0.008197,0.018099,0.031406,0.032118,0.028621,0.035283,0.026152,0.031724,0.045821,0.032749,0.023933,0.009329,0.006590,0.003520,0.002035,0.005414,0.003178,0.001420,0.002462,0.001216,0.000800,0.002760,0.002395,0.001093,0.001088,0.001647,0.001527,0.000979,0.001163,0.001119,0.001071,0.001064,0.001131,0.001297,0.001070,0.001080,0.000990,0.000967,0.000985,0.001105,0.000916,0.000726,0.000869,0.000896,0.000931,0.000845,0.000797,0.000762,0.000805,0.000802,0.000683,0.000685,0.000708,0.000714,0.000719,0.000727,0.000634,0.000711,0.000686,0.000637,0.000694,0.000701,0.000592,0.000664,0.000534,0.000558,0.000681,0.000688,0.000614,0.000609,0.000647,0.000479,0.000513,0.000489,0.000396,0.000420,0.000504,0.000454,0.000492,0.000467,0.000503,0.000515,0.000470,0.000401,0.000502,0.000592,0.000567,0.000411,0.000453,0.000449 | |||
giMute142 ftgen 0,0,4096,10,0.079836,0.330689,0.372144,0.493873,0.925375,0.694151,0.118777,0.028983,0.015396,0.009622,0.001526,0.002627,0.008783,0.011024,0.010140,0.015272,0.009621,0.006265,0.004497,0.003760,0.002472,0.001108,0.000363,0.000521,0.000643,0.000834,0.000511,0.000843,0.000434,0.000735,0.001056,0.000991,0.001287,0.000997,0.000751,0.000669,0.000309,0.000891,0.000656,0.000613,0.000705,0.000663,0.000676,0.000561,0.000583,0.000611,0.000611,0.000702,0.000495,0.000478,0.000451,0.000393,0.000461,0.000506,0.000433,0.000473,0.000465,0.000454,0.000425,0.000361,0.000423,0.000458,0.000385,0.000422,0.000473,0.000380,0.000405,0.000421,0.000338,0.000379,0.000351,0.000358,0.000335,0.000353,0.000378,0.000372,0.000313,0.000331,0.000343,0.000315,0.000320,0.000280,0.000296,0.000226,0.000364,0.000296,0.000272,0.000282,0.000254,0.000289,0.000277,0.000204,0.000220,0.000269,0.000299,0.000321,0.000450,0.000259,0.000266,0.000435 | |||
giMute143 ftgen 0,0,4096,10,0.093603,0.658042,0.988507,0.565236,0.957972,0.360885,0.102049,0.051660,0.027922,0.005483,0.010335,0.012495,0.003673,0.003952,0.012964,0.008898,0.005397,0.006281,0.001252,0.006122,0.003828,0.000827,0.003226,0.002089,0.001925,0.000243,0.002872,0.002421,0.003325,0.002270,0.001755,0.001168,0.001149,0.000770,0.000928,0.000937,0.000720,0.000406,0.000688,0.000732,0.000790,0.000819,0.000398,0.000728,0.000703,0.001198,0.000151,0.000857,0.000600,0.000571,0.000660,0.000529,0.000450,0.000520,0.000520,0.000470,0.000463,0.000462,0.000454,0.000347,0.000590,0.000427,0.000210,0.000402,0.000401,0.000381,0.000525,0.000294,0.000410,0.000335,0.000296,0.000348,0.000580,0.000399,0.000186,0.000198,0.000288,0.000442,0.000411,0.000234,0.000356,0.000386,0.000271,0.000338,0.000271,0.000303,0.000385,0.000352,0.000226,0.000193,0.000103,0.000388,0.000349,0.000222,0.000208,0.000266,0.000232,0.000314,0.000425,0.000268 | |||
giMute144 ftgen 0,0,4096,10,0.127739,0.412859,0.669901,0.617303,0.972749,0.358440,0.065748,0.045528,0.010129,0.008737,0.005631,0.028396,0.004839,0.008872,0.006019,0.011096,0.006903,0.003885,0.004722,0.003204,0.000936,0.002573,0.001532,0.001369,0.001172,0.001160,0.002432,0.000544,0.000609,0.001867,0.000966,0.001039,0.001031,0.000884,0.000753,0.000848,0.000659,0.000749,0.000579,0.000769,0.000665,0.000754,0.000781,0.000490,0.000653,0.000626,0.000524,0.000572,0.000539,0.000566,0.000514,0.000414,0.000441,0.000453,0.000417,0.000478,0.000444,0.000495,0.000551,0.000346,0.000475,0.000442,0.000477,0.000269,0.000501,0.000483,0.000442,0.000267,0.000338,0.000368,0.000470,0.000382,0.000335,0.000358,0.000341,0.000354,0.000345,0.000310,0.000359,0.000228,0.000299,0.000348,0.000336,0.000319,0.000275,0.000294,0.000244,0.000271,0.000232,0.000358,0.000237,0.000269,0.000247,0.000360,0.000301,0.000208,0.000223,0.000248,0.000270,0.000258 | |||
giMute145 ftgen 0,0,4096,10,0.172584,0.253006,0.499844,0.963093,0.599448,0.063091,0.027923,0.009556,0.005430,0.007267,0.030576,0.010839,0.007632,0.008691,0.007373,0.004773,0.004338,0.006857,0.003189,0.000319,0.002787,0.001103,0.001002,0.001076,0.001129,0.001241,0.000702,0.000657,0.000919,0.000769,0.000959,0.000576,0.000715,0.000619,0.000732,0.000611,0.000499,0.000600,0.000491,0.000700,0.000580,0.000348,0.000432,0.000611,0.000489,0.000494,0.000446,0.000425,0.000537,0.000395,0.000420,0.000348,0.000423,0.000452,0.000417,0.000289,0.000444,0.000331,0.000335,0.000289,0.000366,0.000340,0.000289,0.000333,0.000336,0.000346,0.000297,0.000305,0.000318,0.000278,0.000199,0.000327,0.000258,0.000240,0.000298,0.000311,0.000247,0.000309,0.000274,0.000297,0.000343,0.000148,0.000267,0.000204,0.000326,0.000251,0.000194,0.000230,0.000250,0.000186,0.000238,0.000251,0.000196,0.000238,0.000292,0.000233,0.000162,0.000197,0.000198,0.000193 | |||
giMute146 ftgen 0,0,4096,10,0.169930,0.357871,0.478870,0.971148,0.103667,0.027577,0.012460,0.004728,0.004455,0.018143,0.018903,0.009745,0.013588,0.009707,0.007034,0.005601,0.003105,0.000981,0.000341,0.001493,0.000631,0.000446,0.000832,0.000522,0.000996,0.001277,0.000334,0.000333,0.000435,0.000326,0.000323,0.000353,0.000202,0.000214,0.000190,0.000284,0.000171,0.000339,0.000329,0.000183,0.000124,0.000342,0.000303,0.000128,0.000091,0.000224,0.000255,0.000167,0.000148,0.000089,0.000154,0.000248,0.000151,0.000141,0.000149,0.000108,0.000284,0.000121,0.000121,0.000193,0.000201,0.000123,0.000226,0.000223,0.000154,0.000094,0.000194,0.000058,0.000146,0.000232,0.000097,0.000224,0.000132,0.000062,0.000163,0.000214,0.000246,0.000418,0.000139,0.000221,0.000100,0.000095,0.000131,0.000152,0.000158,0.000051,0.000077,0.000080,0.000061,0.000131,0.000109,0.000055,0.000120,0.000091,0.000080,0.000081,0.000120,0.000053,0.000045,0.000123 | |||
giMute147 ftgen 0,0,4096,10,0.175950,0.306151,0.921267,0.803899,0.232506,0.029817,0.015312,0.002411,0.010177,0.008768,0.003962,0.004998,0.003485,0.001495,0.002390,0.001727,0.000838,0.000237,0.000572,0.000579,0.000740,0.001153,0.000286,0.000378,0.000226,0.000269,0.000314,0.000265,0.000200,0.000117,0.000250,0.000150,0.000183,0.000079,0.000168,0.000177,0.000049,0.000188,0.000111,0.000136,0.000108,0.000088,0.000122,0.000076,0.000110,0.000119,0.000091,0.000137,0.000123,0.000074,0.000144,0.000146,0.000077,0.000035,0.000056,0.000085,0.000020,0.000095,0.000092,0.000051,0.000122,0.000063,0.000147,0.000073,0.000076,0.000045,0.000098,0.000114,0.000063,0.000075,0.000037,0.000125,0.000019,0.000072,0.000077,0.000087,0.000132,0.000061,0.000112,0.000071,0.000050,0.000051,0.000054,0.000046,0.000107,0.000026,0.000027,0.000021,0.000035,0.000042,0.000030,0.000041,0.000038,0.000047,0.000015,0.000021,0.000032,0.000120,0.000147,0.000238 | |||
giMute148 ftgen 0,0,4096,10,0.546831,0.588315,0.974745,0.966438,0.134855,0.030603,0.009346,0.000932,0.030580,0.012583,0.020113,0.009766,0.016236,0.007109,0.004226,0.002316,0.001376,0.000358,0.001380,0.001135,0.000319,0.000940,0.000401,0.000703,0.000385,0.000515,0.000292,0.000252,0.000145,0.000137,0.000403,0.000278,0.000292,0.000275,0.000222,0.000110,0.000160,0.000085,0.000217,0.000270,0.000172,0.000158,0.000177,0.000095,0.000182,0.000067,0.000232,0.000159,0.000178,0.000150,0.000206,0.000086,0.000273,0.000112,0.000141,0.000195,0.000084,0.000079,0.000246,0.000201,0.000063,0.000129,0.000125,0.000117,0.000158,0.000162,0.000192,0.000121,0.000175,0.000267,0.000096,0.000179,0.000039,0.000074,0.000268,0.000160,0.000033,0.000069,0.000065,0.000055,0.000088,0.000054,0.000142,0.000087,0.000045,0.000095,0.000026,0.000039,0.000075,0.000073,0.000067,0.000054,0.000068,0.000091,0.000101,0.000092,0.000171,0.000084,0.000049,0.000055 | |||
giMute149 ftgen 0,0,4096,10,0.294629,0.975075,0.694387,0.796446,0.188314,0.013147,0.006022,0.018607,0.064160,0.026936,0.065686,0.065969,0.031796,0.020120,0.015238,0.003443,0.002738,0.001360,0.003362,0.001182,0.001135,0.002047,0.001013,0.000558,0.000429,0.000717,0.000504,0.000555,0.000624,0.000479,0.000343,0.000421,0.000606,0.000462,0.000385,0.000445,0.000230,0.000176,0.000301,0.000222,0.000323,0.000195,0.000306,0.000246,0.000307,0.000237,0.000215,0.000210,0.000380,0.000241,0.000377,0.000152,0.000491,0.000197,0.000367,0.000186,0.000204,0.000108,0.000304,0.000260,0.000093,0.000231,0.000163,0.000112,0.000185,0.000239,0.000226,0.000179,0.000200,0.000203,0.000175,0.000088,0.000156,0.000218,0.000201,0.000222,0.000100,0.000212,0.000151,0.000114,0.000168,0.000167,0.000170,0.000170,0.000116,0.000205,0.000116,0.000133,0.000139,0.000176,0.000154,0.000145,0.000119,0.000095,0.000085,0.000125,0.000145,0.000106,0.000145,0.000141 | |||
giMute150 ftgen 0,0,4096,10,0.594912,0.608509,0.961469,0.229985,0.033626,0.009789,0.002734,0.011904,0.013878,0.018699,0.018956,0.006098,0.006134,0.002889,0.000518,0.000310,0.000591,0.000264,0.000257,0.000698,0.000478,0.000286,0.000276,0.000212,0.000349,0.000257,0.000272,0.000224,0.000177,0.000174,0.000082,0.000176,0.000161,0.000172,0.000230,0.000066,0.000165,0.000161,0.000152,0.000109,0.000094,0.000130,0.000185,0.000186,0.000258,0.000200,0.000154,0.000204,0.000184,0.000157,0.000047,0.000131,0.000123,0.000097,0.000062,0.000144,0.000118,0.000149,0.000134,0.000157,0.000198,0.000063,0.000156,0.000144,0.000094,0.000105,0.000096,0.000093,0.000113,0.000081,0.000076,0.000079,0.000049,0.000061,0.000040,0.000104,0.000079,0.000022,0.000068,0.000078,0.000072,0.000063,0.000085,0.000086,0.000053,0.000080,0.000082,0.000054,0.000046,0.000081,0.000075,0.000056,0.000061,0.000025,0.000072,0.000042,0.000050,0.000054,0.000053,0.000068 | |||
giMute151 ftgen 0,0,4096,10,0.206347,0.510370,0.950258,0.127507,0.010206,0.002549,0.001810,0.012483,0.004635,0.004683,0.005187,0.003165,0.001760,0.000999,0.000554,0.000268,0.000624,0.000195,0.000027,0.000147,0.000141,0.000163,0.000117,0.000060,0.000105,0.000099,0.000067,0.000093,0.000160,0.000103,0.000140,0.000060,0.000090,0.000115,0.000051,0.000073,0.000045,0.000055,0.000143,0.000072,0.000114,0.000130,0.000048,0.000106,0.000081,0.000052,0.000096,0.000074,0.000050,0.000088,0.000108,0.000167,0.000065,0.000093,0.000168,0.000053,0.000085,0.000083,0.000061,0.000128,0.000058,0.000064,0.000040,0.000027,0.000100,0.000081,0.000054,0.000030,0.000036,0.000081,0.000048,0.000047,0.000067,0.000034,0.000037,0.000030,0.000021,0.000028,0.000043,0.000106,0.000063,0.000019,0.000039,0.000057,0.000021,0.000037,0.000026,0.000041,0.000039,0.000032,0.000024,0.000048,0.000021,0.000064,0.000037,0.000065,0.000049,0.000031,0.000048,0.000014 | |||
giMute152 ftgen 0,0,4096,10,0.718310,0.828992,0.971094,0.089148,0.007432,0.001882,0.006326,0.016275,0.013664,0.005083,0.004192,0.002987,0.000575,0.000244,0.000598,0.000195,0.000566,0.000394,0.000580,0.000162,0.000255,0.000166,0.000116,0.000132,0.000146,0.000108,0.000133,0.000237,0.000251,0.000229,0.000158,0.000127,0.000139,0.000150,0.000119,0.000043,0.000076,0.000198,0.000147,0.000151,0.000075,0.000073,0.000078,0.000098,0.000125,0.000095,0.000098,0.000053,0.000180,0.000068,0.000097,0.000168,0.000085,0.000055,0.000094,0.000084,0.000102,0.000047,0.000079,0.000083,0.000046,0.000050,0.000047,0.000066,0.000081,0.000049,0.000040,0.000040,0.000068,0.000075,0.000057,0.000054,0.000024,0.000106,0.000054,0.000084,0.000044,0.000058,0.000034,0.000045,0.000058,0.000029,0.000068,0.000046,0.000029,0.000029,0.000066,0.000045,0.000077,0.000038,0.000027,0.000035,0.000043,0.000036,0.000049,0.000024,0.000024,0.000045,0.000046,0.000034 | |||
giMute153 ftgen 0,0,4096,10,0.551061,0.501444,0.953401,0.068491,0.008520,0.012056,0.020903,0.021636,0.008585,0.007399,0.006298,0.001414,0.000788,0.000891,0.000358,0.000686,0.001110,0.000613,0.000691,0.000460,0.000664,0.000614,0.000565,0.000426,0.000472,0.000397,0.000391,0.000456,0.000378,0.000437,0.000434,0.000310,0.000368,0.000415,0.000400,0.000343,0.000353,0.000349,0.000357,0.000326,0.000313,0.000231,0.000257,0.000212,0.000281,0.000273,0.000286,0.000207,0.000174,0.000326,0.000097,0.000332,0.000115,0.000149,0.000211,0.000305,0.000186,0.000198,0.000220,0.000141,0.000131,0.000182,0.000188,0.000186,0.000182,0.000117,0.000163,0.000173,0.000185,0.000121,0.000186,0.000073,0.000203,0.000192,0.000150,0.000147,0.000131,0.000138,0.000145,0.000135,0.000111,0.000135,0.000109,0.000125,0.000126,0.000121,0.000105,0.000083,0.000102,0.000109,0.000069,0.000107,0.000148,0.000139,0.000126,0.000096,0.000101,0.000123,0.000104,0.000104 | |||
giMute154 ftgen 0,0,4096,10,0.965465,0.238341,0.801452,0.050222,0.006640,0.011475,0.012533,0.012724,0.004704,0.006848,0.004228,0.001130,0.001409,0.001463,0.000398,0.000800,0.000513,0.001091,0.001100,0.000393,0.000445,0.000310,0.000446,0.000589,0.000358,0.000505,0.000369,0.000525,0.000346,0.000322,0.000437,0.000435,0.000262,0.000286,0.000307,0.000308,0.000358,0.000350,0.000347,0.000237,0.000076,0.000385,0.000217,0.000215,0.000278,0.000200,0.000335,0.000203,0.000329,0.000194,0.000066,0.000171,0.000388,0.000178,0.000305,0.000205,0.000231,0.000150,0.000228,0.000249,0.000070,0.000179,0.000201,0.000134,0.000138,0.000151,0.000193,0.000156,0.000150,0.000137,0.000132,0.000132,0.000128,0.000118,0.000138,0.000126,0.000141,0.000133,0.000148,0.000184,0.000137,0.000131,0.000138,0.000107,0.000100,0.000116,0.000121,0.000092,0.000099,0.000106,0.000080,0.000101,0.000102,0.000073,0.000094,0.000104,0.000107,0.000106,0.000093,0.000085 | |||
giMute155 ftgen 0,0,4096,10,0.938142,0.970313,0.508740,0.021568,0.001864,0.002894,0.002724,0.002263,0.003861,0.001793,0.000443,0.001267,0.000409,0.000899,0.000541,0.000180,0.000417,0.000464,0.000377,0.000359,0.000247,0.000485,0.000254,0.000339,0.000219,0.000319,0.000168,0.000254,0.000251,0.000160,0.000021,0.000183,0.000145,0.000251,0.000161,0.000219,0.000034,0.000174,0.000112,0.000219,0.000100,0.000130,0.000289,0.000226,0.000368,0.000095,0.000094,0.000122,0.000072,0.000121,0.000126,0.000143,0.000135,0.000153,0.000050,0.000099,0.000080,0.000071,0.000089,0.000079,0.000117,0.000090,0.000082,0.000068,0.000126,0.000073,0.000077,0.000094,0.000076,0.000063,0.000056,0.000070,0.000076,0.000063,0.000036,0.000059,0.000040,0.000039,0.000031,0.000048,0.000048,0.000066,0.000072,0.000047,0.000057,0.000058,0.000066,0.000033,0.000044,0.000035,0.000051,0.000038,0.000039,0.000047,0.000046,0.000052,0.000050,0.000033,0.000052,0.000039 | |||
giMute156 ftgen 0,0,4096,10,0.625565,0.965980,0.202403,0.024063,0.002481,0.005337,0.005024,0.008205,0.003554,0.001210,0.000983,0.001570,0.000901,0.000291,0.000664,0.000883,0.000489,0.000671,0.000602,0.000605,0.000552,0.000393,0.000580,0.000544,0.000508,0.000536,0.000523,0.000420,0.000400,0.000436,0.000414,0.000508,0.000302,0.000362,0.000336,0.000489,0.000355,0.000362,0.000320,0.000350,0.000246,0.000251,0.000326,0.000214,0.000175,0.000260,0.000273,0.000224,0.000202,0.000232,0.000185,0.000237,0.000245,0.000169,0.000199,0.000160,0.000153,0.000211,0.000161,0.000157,0.000165,0.000177,0.000207,0.000214,0.000158,0.000167,0.000146,0.000138,0.000161,0.000162,0.000163,0.000138,0.000160,0.000141,0.000113,0.000139,0.000144,0.000099,0.000091,0.000160,0.000120,0.000102,0.000131,0.000108,0.000113,0.000114,0.000113,0.000111,0.000105,0.000113,0.000123,0.000107,0.000110,0.000112,0.000110,0.000106,0.000122,0.000112,0.000105,0.000101 | |||
giMute157 ftgen 0,0,4096,10,0.314475,0.959696,0.048444,0.004582,0.006574,0.012611,0.005426,0.002115,0.000604,0.000404,0.000356,0.000685,0.001096,0.000409,0.000072,0.000321,0.000329,0.000236,0.000403,0.000240,0.000158,0.000233,0.000268,0.000168,0.000154,0.000209,0.000165,0.000121,0.000111,0.000136,0.000085,0.000217,0.000086,0.000083,0.000149,0.000151,0.000115,0.000148,0.000123,0.000087,0.000095,0.000113,0.000089,0.000044,0.000137,0.000116,0.000130,0.000027,0.000101,0.000085,0.000121,0.000079,0.000106,0.000042,0.000011,0.000071,0.000080,0.000029,0.000039,0.000081,0.000041,0.000060,0.000040,0.000068,0.000066,0.000052,0.000050,0.000031,0.000056,0.000054,0.000039,0.000051,0.000037,0.000059,0.000054,0.000037,0.000046,0.000043,0.000038,0.000041,0.000031,0.000049,0.000033,0.000040,0.000038,0.000035,0.000050,0.000040,0.000043,0.000039,0.000051,0.000035,0.000045,0.000020,0.000038,0.000032,0.000026,0.000030,0.000031,0.000030 | |||
giMute158 ftgen 0,0,4096,10,0.428817,0.965152,0.013016,0.001790,0.004347,0.004997,0.005604,0.002582,0.000836,0.000569,0.000599,0.000465,0.000517,0.000563,0.000538,0.000350,0.000281,0.000361,0.000460,0.000274,0.000209,0.000199,0.000249,0.000304,0.000340,0.000213,0.000240,0.000152,0.000238,0.000157,0.000200,0.000196,0.000164,0.000118,0.000156,0.000141,0.000124,0.000105,0.000108,0.000150,0.000140,0.000124,0.000109,0.000104,0.000111,0.000096,0.000120,0.000092,0.000094,0.000103,0.000077,0.000064,0.000066,0.000111,0.000094,0.000093,0.000082,0.000078,0.000073,0.000096,0.000082,0.000079,0.000075,0.000072,0.000085,0.000068,0.000072,0.000053,0.000069,0.000054,0.000057,0.000058,0.000058,0.000065,0.000055,0.000063,0.000066,0.000063,0.000063,0.000058,0.000053,0.000052,0.000046,0.000046,0.000050,0.000049,0.000047,0.000045,0.000043,0.000050,0.000047,0.000052,0.000050,0.000049,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
giwavemapMute1 ftgen 0,0,128,-27, 0,0, 22,0, 23,1, 24,2, 25,3, 26,4, 27,5, 28,6, 29,7, 30,8, 31,9, 32,10, 33,11, 34,12, 35,13, 36,14, 37,15, 38,16, 39,17, 40,18, 41,19, 42,20, 43,21, 44,22, 45,23, 46,24, 47,25, 48,26, 49,27, 50,28, 51,29, 52,30, 53,31, 54,32, 55,33, 56,34, 57,35, 58,36, 127,36 | |||
gitabs4morfMute1 ftgen 0,0,64,-2, giMute122,giMute123,giMute124,giMute125,giMute126,giMute127,giMute128,giMute129,giMute130,giMute131,giMute132,giMute133,giMute134,giMute135,giMute136,giMute137,giMute138,giMute139,giMute140,giMute141,giMute142,giMute143,giMute144,giMute145,giMute146,giMute147,giMute148,giMute149,giMute150,giMute151,giMute152,giMute153,giMute154,giMute155,giMute156,giMute157,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158,giMute158 | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
; BASS TROMBONE (OPEN) | |||
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |||
giUnmuted22 ftgen 0,0,4096,10,0.209301,0.150536,0.083014,0.207956,0.321939,0.399510,0.327987,0.421479,0.539528,0.533091,0.721756,0.467196,0.947246,0.770314,0.912692,0.965128,0.962101,1.093136,0.708144,0.664071,0.619031,0.643414,0.371645,0.533120,0.477851,0.481481,0.451545,0.370726,0.360377,0.459325,0.288110,0.235271,0.205264,0.198828,0.206768,0.219183,0.205657,0.164230,0.168498,0.156362,0.109323,0.096989,0.105552,0.095551,0.069663,0.068933,0.067166,0.055414,0.072408,0.055978,0.033534,0.049491,0.054904,0.029956,0.018835,0.027602,0.035912,0.015979,0.021303,0.011033,0.024278,0.030411,0.020777,0.027002,0.020715,0.010245,0.010418,0.019612,0.017841,0.017176,0.012772,0.008424,0.009403,0.002947,0.006355,0.006158,0.015418,0.015477,0.011268,0.008620,0.008935,0.006072,0.005458,0.006560,0.006368,0.007559,0.004779,0.008830,0.007041,0.006334,0.002719,0.003830,0.006208,0.008425,0.006728,0.006139,0.002789,0.007133,0.005592,0.005069 | |||
giUnmuted23 ftgen 0,0,4096,10,0.129222,0.088552,0.116290,0.170792,0.176577,0.331680,0.281710,0.247957,0.379599,0.404781,0.432966,0.873924,0.774290,0.657216,0.986727,0.929760,0.832314,0.808580,0.585809,0.684034,0.674170,0.330450,0.888687,0.598954,0.599019,0.566506,0.632303,0.502653,0.431058,0.214554,0.351572,0.335693,0.277218,0.341691,0.264970,0.296760,0.293654,0.224055,0.213823,0.138880,0.188425,0.156849,0.137821,0.185206,0.172163,0.184744,0.153256,0.116401,0.138614,0.155349,0.095606,0.075646,0.091523,0.087233,0.081355,0.068920,0.094557,0.066191,0.069861,0.065915,0.072343,0.065165,0.065968,0.041851,0.063905,0.036430,0.041801,0.035516,0.038545,0.044169,0.038034,0.042219,0.032505,0.038202,0.034556,0.037548,0.036070,0.036673,0.037173,0.024089,0.029610,0.028726,0.018206,0.028118,0.023534,0.023563,0.025997,0.024870,0.021673,0.024752,0.020165,0.019645,0.016172,0.017942,0.018241,0.016560,0.014997,0.013671,0.015848,0.011383 | |||
giUnmuted24 ftgen 0,0,4096,10,0.014100,0.027948,0.037471,0.118589,0.278733,0.166216,0.237592,0.204888,0.303225,0.239198,0.590081,0.558590,0.488846,0.934503,0.791766,0.769104,0.451529,0.465344,0.363957,0.375648,0.362512,0.527955,0.584553,0.562238,0.409571,0.447397,0.547498,0.349795,0.363085,0.318352,0.305372,0.298282,0.236937,0.259059,0.251424,0.235425,0.253896,0.305811,0.227171,0.177695,0.218484,0.204418,0.227246,0.182265,0.183710,0.198997,0.141695,0.093968,0.119182,0.128975,0.118829,0.086353,0.143691,0.082113,0.096768,0.076006,0.108551,0.073045,0.080734,0.075566,0.076978,0.047507,0.057911,0.055554,0.070030,0.060662,0.054519,0.055938,0.064493,0.032839,0.043612,0.052568,0.034145,0.054702,0.041937,0.045108,0.037413,0.033601,0.044130,0.036376,0.036994,0.032488,0.031456,0.030170,0.029857,0.031038,0.027679,0.029891,0.027195,0.023506,0.027610,0.023146,0.022810,0.019058,0.018170,0.018749,0.017019,0.015480,0.016379,0.015893 | |||
giUnmuted25 ftgen 0,0,4096,10,0.075402,0.101145,0.176728,0.270616,0.291285,0.324780,0.333295,0.233831,0.290677,0.540830,0.767506,0.512758,0.980849,0.771417,0.804053,0.408122,0.631555,0.670085,0.408376,0.681153,0.911500,0.859956,0.697578,0.595419,0.593307,0.469251,0.543682,0.529757,0.367768,0.498910,0.305667,0.300578,0.386836,0.363336,0.347656,0.332606,0.322633,0.253819,0.316454,0.284584,0.227632,0.212815,0.324061,0.212387,0.161264,0.199347,0.187103,0.169679,0.152185,0.206879,0.129213,0.127022,0.158412,0.109282,0.134290,0.097383,0.119959,0.099454,0.111739,0.076911,0.100854,0.086224,0.089536,0.075617,0.075879,0.080690,0.071350,0.079834,0.089408,0.079954,0.081367,0.068297,0.067636,0.067458,0.048890,0.064138,0.053887,0.056479,0.047270,0.039648,0.049324,0.050416,0.048009,0.042951,0.034023,0.037808,0.026799,0.042091,0.023668,0.027252,0.027430,0.027822,0.030900,0.025171,0.030639,0.031093,0.018787,0.024957,0.020116,0.016682 | |||
giUnmuted26 ftgen 0,0,4096,10,0.043072,0.066480,0.103784,0.299131,0.266755,0.210417,0.254095,0.299260,0.120587,0.627381,0.502409,0.682945,0.896451,0.718962,0.798438,0.342935,0.438196,0.391451,0.571924,0.500613,0.522119,0.554206,0.351133,0.573747,0.415485,0.314183,0.377587,0.407768,0.269407,0.243405,0.358414,0.278435,0.297179,0.205957,0.278884,0.139884,0.230059,0.203655,0.273754,0.208405,0.268930,0.220588,0.093617,0.135109,0.140624,0.125541,0.127288,0.075447,0.145203,0.086283,0.144206,0.092668,0.097130,0.101259,0.096756,0.087998,0.053647,0.093505,0.075780,0.063445,0.057768,0.067925,0.062568,0.059886,0.049874,0.061576,0.047362,0.059277,0.045356,0.045205,0.049725,0.059766,0.051216,0.043048,0.047544,0.034671,0.055494,0.029430,0.038554,0.039949,0.030711,0.033481,0.031643,0.028951,0.022707,0.022752,0.019352,0.028349,0.020961,0.022731,0.022740,0.021957,0.021687,0.023511,0.015741,0.017651,0.017310,0.015487,0.015835,0.014889 | |||
giUnmuted27 ftgen 0,0,4096,10,0.116392,0.064448,0.127432,0.239485,0.257590,0.362741,0.449254,0.199901,0.348867,0.637406,0.429112,0.918400,0.936649,0.907354,0.601632,0.359938,0.492393,0.465346,0.501258,0.682788,0.539385,0.377763,0.493182,0.284353,0.308310,0.236111,0.324894,0.290903,0.171987,0.259098,0.209363,0.188311,0.165040,0.129121,0.179891,0.142395,0.192837,0.155400,0.140506,0.154670,0.085903,0.084914,0.123353,0.033350,0.085811,0.066361,0.064805,0.053334,0.059168,0.051871,0.024556,0.050781,0.036654,0.034625,0.037417,0.026993,0.036074,0.041271,0.034852,0.030858,0.035521,0.039943,0.029248,0.023157,0.034015,0.022517,0.032273,0.025478,0.021464,0.021306,0.020706,0.015205,0.017217,0.016590,0.014839,0.015475,0.014872,0.012173,0.018427,0.015918,0.010766,0.011403,0.007469,0.006837,0.010460,0.009821,0.011490,0.012841,0.009228,0.009485,0.005268,0.008016,0.007500,0.007632,0.009359,0.005060,0.006834,0.006729,0.005832,0.006610 | |||
giUnmuted28 ftgen 0,0,4096,10,0.076757,0.165970,0.231682,0.474308,0.397207,0.459106,0.300853,0.244548,0.666795,0.602133,0.902710,0.655767,0.483398,0.313870,0.349970,0.212690,0.704653,0.764853,0.648917,0.660316,0.500843,0.406945,0.437095,0.364433,0.332150,0.247819,0.335990,0.413334,0.272378,0.303040,0.347189,0.202684,0.273591,0.358844,0.326756,0.187244,0.245830,0.136904,0.149347,0.181123,0.074118,0.123133,0.099890,0.059919,0.124875,0.090488,0.085029,0.115332,0.036687,0.106389,0.065025,0.070006,0.054270,0.053720,0.068047,0.055966,0.079658,0.070141,0.046135,0.065892,0.044587,0.048301,0.044148,0.045919,0.038547,0.040422,0.052374,0.032757,0.026433,0.030900,0.031810,0.034349,0.013986,0.030399,0.015539,0.018593,0.017769,0.024225,0.019160,0.022166,0.018451,0.016544,0.010230,0.012227,0.012961,0.015889,0.015651,0.009872,0.014459,0.011942,0.015592,0.014711,0.013394,0.010871,0.008229,0.007572,0.008106,0.008828,0.011451,0.009952 | |||
giUnmuted30 ftgen 0,0,4096,10,0.102601,0.100887,0.167098,0.516781,0.330986,0.422868,0.412850,0.397849,0.628756,0.686835,0.929709,0.845577,0.935266,0.508059,0.792158,0.281350,0.378308,0.568489,0.346813,0.566233,0.413541,0.405762,0.359363,0.216505,0.366221,0.301854,0.216945,0.249969,0.168763,0.194386,0.278248,0.046419,0.257812,0.124464,0.096054,0.116201,0.059755,0.096572,0.074147,0.047405,0.054049,0.073919,0.023499,0.080643,0.079127,0.031933,0.076588,0.051990,0.032645,0.031250,0.046055,0.022654,0.038293,0.031067,0.045355,0.035515,0.043591,0.024758,0.020123,0.028097,0.025231,0.014737,0.015258,0.020891,0.010029,0.015487,0.004561,0.009797,0.007038,0.006923,0.012160,0.005577,0.012809,0.007007,0.007626,0.004440,0.008034,0.008475,0.006052,0.009027,0.006419,0.007999,0.005562,0.004974,0.008232,0.007159,0.005841,0.004633,0.005878,0.004708,0.005378,0.005775,0.004317,0.003135,0.006019,0.002682,0.003519,0.002106,0.001173,0.002911 | |||
giUnmuted31 ftgen 0,0,4096,10,0.066770,0.048141,0.313114,0.280252,0.266590,0.227818,0.195576,0.598114,0.585360,0.631625,0.922780,0.476250,0.557175,0.516114,0.284400,0.347304,0.327824,0.186298,0.429619,0.319332,0.143321,0.268362,0.179246,0.187779,0.187831,0.069696,0.157916,0.087219,0.051108,0.180413,0.090807,0.061893,0.087674,0.029616,0.053852,0.035420,0.032698,0.030786,0.031084,0.040347,0.022290,0.019770,0.033986,0.022503,0.008514,0.028204,0.013058,0.011683,0.016372,0.011838,0.005125,0.012279,0.007251,0.009685,0.008196,0.009381,0.007698,0.004608,0.004124,0.002835,0.002636,0.005858,0.004185,0.001287,0.002347,0.002862,0.004396,0.003505,0.001776,0.002038,0.003386,0.001389,0.002214,0.001394,0.002558,0.001971,0.001212,0.000993,0.001220,0.001435,0.001036,0.000315,0.000862,0.001509,0.000972,0.000423,0.000797,0.001030,0.001800,0.000491,0.000318,0.000990,0.000987,0.000840,0.000380,0.000536,0.000975,0.000576,0.000444,0.000286 | |||
giUnmuted32 ftgen 0,0,4096,10,0.153577,0.222613,0.376395,0.526417,0.515836,0.662033,0.484716,0.943689,0.936088,0.683402,0.940687,0.666224,0.399824,0.298609,0.378373,0.633100,0.213897,0.505597,0.312328,0.232655,0.144484,0.129531,0.225201,0.231697,0.116577,0.093467,0.083941,0.021798,0.081229,0.048477,0.071105,0.034486,0.057723,0.028194,0.029190,0.019811,0.027128,0.025539,0.014725,0.015158,0.019471,0.022215,0.011935,0.015510,0.012182,0.010768,0.007979,0.010226,0.004972,0.009394,0.006760,0.006326,0.005823,0.003912,0.005859,0.001846,0.002697,0.003683,0.003892,0.002554,0.002904,0.004195,0.000672,0.001703,0.001212,0.002070,0.001499,0.001454,0.002153,0.001936,0.000769,0.001242,0.001260,0.000672,0.000842,0.001179,0.001096,0.001223,0.001090,0.001644,0.001218,0.000337,0.000969,0.000736,0.000734,0.000228,0.000786,0.000788,0.000390,0.000223,0.001065,0.000755,0.000257,0.000513,0.000711,0.000538,0.000385,0.000437,0.000469,0.000430 | |||
giUnmuted33 ftgen 0,0,4096,10,0.199259,0.293112,0.678605,0.427095,0.796552,0.592920,0.832602,0.749712,0.753129,0.956136,0.706813,0.595711,0.292833,0.370551,0.334616,0.299621,0.458159,0.299313,0.277013,0.116169,0.127934,0.137952,0.174017,0.060317,0.067909,0.049889,0.073748,0.061114,0.028611,0.050743,0.022684,0.016755,0.015577,0.022867,0.023917,0.026384,0.015817,0.016226,0.020209,0.017937,0.014795,0.014935,0.011316,0.011197,0.003987,0.006306,0.007657,0.008754,0.008017,0.001430,0.002030,0.006426,0.004673,0.001697,0.003547,0.003128,0.001704,0.002225,0.003744,0.001255,0.001218,0.001706,0.000784,0.001874,0.002414,0.001450,0.001425,0.001431,0.001039,0.000512,0.001115,0.001012,0.000767,0.001368,0.000891,0.001254,0.000438,0.001473,0.000396,0.000944,0.000406,0.000645,0.000805,0.000497,0.000596,0.000632,0.000660,0.000453,0.000657,0.000437,0.000597,0.000534,0.000231,0.000579,0.000359,0.000597,0.000289,0.000515,0.000474,0.000508 | |||
giUnmuted34 ftgen 0,0,4096,10,0.156283,0.263433,0.503588,0.547226,0.458841,0.440476,0.745137,0.926771,0.703339,0.326809,0.455305,0.144506,0.578160,0.557536,0.390538,0.373849,0.349519,0.171391,0.136852,0.175680,0.170348,0.095999,0.101795,0.067277,0.069750,0.038210,0.062274,0.031281,0.045966,0.025999,0.019665,0.025196,0.019584,0.017978,0.018616,0.019068,0.009254,0.008323,0.009829,0.007950,0.009281,0.004125,0.006169,0.005516,0.008089,0.004623,0.003210,0.003435,0.002272,0.003102,0.002101,0.002482,0.000800,0.001308,0.001448,0.002671,0.000440,0.001102,0.000625,0.001246,0.000739,0.001198,0.000853,0.000982,0.000459,0.000870,0.000679,0.000793,0.000524,0.000192,0.000634,0.000314,0.000778,0.000405,0.000532,0.000235,0.000824,0.000204,0.000655,0.000308,0.000375,0.000408,0.000459,0.000698,0.000335,0.000370,0.000416,0.000463,0.000712,0.000202,0.000604,0.000194,0.000642,0.000492,0.000566,0.000304,0.000430,0.000666,0.000460,0.000725 | |||
giUnmuted35 ftgen 0,0,4096,10,0.109719,0.205679,0.327171,0.211979,0.275588,0.441424,0.909739,0.954713,0.704080,0.558176,0.412328,0.520298,0.672399,0.332547,0.403159,0.369356,0.239488,0.211806,0.231043,0.127727,0.249776,0.131377,0.104229,0.096938,0.102833,0.065079,0.066313,0.070405,0.083568,0.043975,0.062456,0.056332,0.053849,0.056551,0.038084,0.032551,0.031631,0.024900,0.019231,0.022793,0.025653,0.029848,0.012080,0.012343,0.008958,0.007429,0.009658,0.011782,0.006432,0.008668,0.004940,0.004961,0.011409,0.003677,0.005188,0.006053,0.002706,0.005660,0.005030,0.003473,0.004147,0.002260,0.003165,0.004611,0.001572,0.002973,0.001712,0.001380,0.002403,0.001241,0.001415,0.002559,0.000850,0.001416,0.000832,0.001164,0.001932,0.000912,0.001026,0.000996,0.000473,0.001056,0.000666,0.000709,0.000940,0.000380,0.000715,0.000818,0.000554,0.000733,0.000482,0.000638,0.000669,0.000419,0.000706,0.000551,0.000449,0.000615,0.000441,0.000574 | |||
giUnmuted37 ftgen 0,0,4096,10,0.163591,0.404564,0.575089,0.472316,0.486294,0.822510,0.806591,0.969411,0.362995,0.433080,0.496749,0.467537,0.467839,0.267451,0.183238,0.218200,0.199060,0.155508,0.175596,0.093844,0.131201,0.054473,0.064991,0.054622,0.028696,0.047964,0.032300,0.032288,0.027946,0.028929,0.025863,0.016471,0.015090,0.011768,0.012035,0.007896,0.009150,0.007422,0.006861,0.006328,0.006340,0.003206,0.001979,0.001196,0.003410,0.003344,0.001708,0.001304,0.001426,0.001391,0.002381,0.001136,0.000501,0.000621,0.001295,0.001362,0.001331,0.000559,0.000199,0.000503,0.000879,0.001032,0.000443,0.000370,0.000358,0.000616,0.000749,0.000331,0.000239,0.000475,0.000621,0.000552,0.000280,0.000188,0.000404,0.000434,0.000385,0.000500,0.000299,0.000339,0.000250,0.000436,0.000389,0.000319,0.000252,0.000279,0.000331,0.000496,0.000362,0.000299,0.000301,0.000389,0.000340,0.000331,0.000305,0.000321,0.000282,0.000312,0.000322,0.000305 | |||
giUnmuted38 ftgen 0,0,4096,10,0.088638,0.393952,0.219528,0.233796,0.390552,0.873953,0.973908,0.452420,0.406845,0.369372,0.418449,0.275682,0.233818,0.174596,0.176589,0.199987,0.084305,0.099145,0.066017,0.092595,0.045456,0.041233,0.057805,0.035677,0.029982,0.021224,0.023785,0.011487,0.013368,0.009656,0.009504,0.010544,0.006813,0.005152,0.006761,0.004720,0.005569,0.005772,0.003926,0.003876,0.001447,0.001937,0.001824,0.001260,0.001196,0.001056,0.001716,0.000597,0.000870,0.000129,0.001182,0.000562,0.000716,0.000558,0.000346,0.000458,0.000280,0.000472,0.000305,0.000628,0.000215,0.000532,0.000286,0.000686,0.000363,0.000433,0.000417,0.000257,0.000323,0.000182,0.000362,0.000182,0.000308,0.000090,0.000457,0.000168,0.000301,0.000207,0.000232,0.000295,0.000234,0.000253,0.000115,0.000278,0.000128,0.000246,0.000142,0.000206,0.000208,0.000168,0.000245,0.000156,0.000184,0.000153,0.000195,0.000110,0.000237,0.000120,0.000147,0.000197 | |||
giUnmuted39 ftgen 0,0,4096,10,0.072477,0.251689,0.379198,0.380111,0.725478,0.949509,0.692901,0.578175,0.268676,0.362999,0.292393,0.221151,0.135379,0.142198,0.166308,0.080654,0.080723,0.055948,0.052355,0.045652,0.019205,0.017803,0.021033,0.012636,0.010918,0.015171,0.012617,0.010832,0.009232,0.006483,0.005626,0.003851,0.002409,0.001860,0.003662,0.003232,0.003431,0.001824,0.002610,0.001564,0.001117,0.000540,0.000571,0.001003,0.001335,0.000552,0.000678,0.000584,0.001061,0.000360,0.000733,0.000138,0.000610,0.000585,0.000395,0.000329,0.000646,0.000491,0.000414,0.000402,0.000119,0.000403,0.000173,0.000409,0.000081,0.000323,0.000367,0.000312,0.000184,0.000390,0.000085,0.000295,0.000195,0.000268,0.000142,0.000267,0.000047,0.000196,0.000144,0.000201,0.000119,0.000264,0.000129,0.000192,0.000106,0.000089,0.000146,0.000206,0.000209,0.000106,0.000142,0.000140,0.000184,0.000083,0.000036,0.000158,0.000137,0.000135,0.000284,0.000115 | |||
giUnmuted40 ftgen 0,0,4096,10,0.225959,0.669389,0.383703,0.337797,0.897874,0.917315,0.679617,0.847733,0.413981,0.550916,0.384995,0.299373,0.229249,0.175955,0.251333,0.151143,0.072766,0.141216,0.038843,0.059075,0.024251,0.038600,0.034595,0.024303,0.012174,0.014682,0.023313,0.013042,0.011554,0.011010,0.010318,0.007734,0.007817,0.007700,0.004889,0.002809,0.002953,0.002732,0.002419,0.002929,0.001031,0.001758,0.002569,0.001934,0.000195,0.000657,0.000465,0.000529,0.000132,0.000495,0.000114,0.000374,0.000066,0.000383,0.000298,0.000374,0.000325,0.000203,0.000379,0.000195,0.000256,0.000055,0.000261,0.000143,0.000303,0.000225,0.000165,0.000287,0.000154,0.000362,0.000079,0.000339,0.000076,0.000304,0.000074,0.000377,0.000110,0.000203,0.000160,0.000220,0.000170,0.000246,0.000154,0.000238,0.000107,0.000233,0.000176,0.000143,0.000173,0.000149,0.000209,0.000112,0.000150,0.000111,0.000112,0.000142,0.000096,0.000126,0.000128,0.000116 | |||
giUnmuted41 ftgen 0,0,4096,10,0.097703,0.458893,0.214092,0.303131,0.643075,0.941287,0.605134,0.446467,0.333405,0.230717,0.265198,0.183918,0.159675,0.159325,0.106876,0.068197,0.087184,0.044215,0.041701,0.023995,0.024583,0.018444,0.017021,0.012909,0.009709,0.009292,0.005646,0.005169,0.005487,0.004703,0.003198,0.001953,0.002304,0.001896,0.001346,0.001214,0.000950,0.001006,0.000408,0.000899,0.000811,0.000603,0.000416,0.000186,0.000451,0.000580,0.000293,0.000134,0.000491,0.000610,0.000365,0.000202,0.000238,0.000284,0.000383,0.000318,0.000171,0.000207,0.000319,0.000262,0.000156,0.000201,0.000269,0.000277,0.000189,0.000255,0.000252,0.000251,0.000238,0.000176,0.000262,0.000221,0.000254,0.000156,0.000243,0.000273,0.000203,0.000144,0.000205,0.000227,0.000273,0.000231,0.000129,0.000148,0.000263,0.000231,0.000178,0.000240,0.000111,0.000150,0.000125,0.000253,0.000117,0.000217,0.000249,0.000167,0.000129,0.000153,0.000156,0.000166 | |||
giUnmuted42 ftgen 0,0,4096,10,0.124305,0.470693,0.408472,0.419845,0.726811,0.899803,0.320069,0.227380,0.170542,0.278327,0.087448,0.075657,0.070450,0.011278,0.027231,0.027560,0.017657,0.007864,0.003498,0.005879,0.002004,0.003338,0.002302,0.002026,0.001182,0.001269,0.001074,0.000364,0.000612,0.000235,0.000662,0.000064,0.000466,0.000427,0.000278,0.000267,0.000353,0.000292,0.000282,0.000261,0.000314,0.000191,0.000121,0.000300,0.000198,0.000184,0.000171,0.000233,0.000128,0.000158,0.000242,0.000129,0.000168,0.000158,0.000221,0.000105,0.000151,0.000134,0.000034,0.000239,0.000107,0.000190,0.000107,0.000133,0.000170,0.000077,0.000159,0.000133,0.000084,0.000139,0.000186,0.000114,0.000238,0.000054,0.000180,0.000124,0.000143,0.000260,0.000043,0.000132,0.000091,0.000030,0.000116,0.000080,0.000072,0.000057,0.000105,0.000076,0.000116,0.000065,0.000171,0.000053,0.000072,0.000074,0.000062,0.000114,0.000055,0.000095,0.000113,0.000044 | |||
giUnmuted43 ftgen 0,0,4096,10,0.125142,0.748133,0.488996,0.937672,0.810384,0.425414,0.265649,0.228407,0.170598,0.111821,0.121106,0.061239,0.019591,0.017183,0.019865,0.007807,0.001783,0.002592,0.001011,0.003527,0.002854,0.000493,0.002776,0.000788,0.001901,0.002961,0.000261,0.000981,0.000309,0.001260,0.001590,0.000419,0.000880,0.000853,0.000491,0.001106,0.000390,0.000507,0.000664,0.000732,0.000588,0.000322,0.000375,0.000612,0.000570,0.000284,0.000276,0.000346,0.000470,0.000510,0.000208,0.000313,0.000421,0.000286,0.000339,0.000330,0.000236,0.000285,0.000339,0.000333,0.000325,0.000301,0.000405,0.000289,0.000185,0.000254,0.000429,0.000220,0.000088,0.000342,0.000434,0.000323,0.000114,0.000423,0.000294,0.000189,0.000274,0.000329,0.000150,0.000193,0.000230,0.000213,0.000130,0.000222,0.000238,0.000078,0.000370,0.000313,0.000161,0.000338,0.000185,0.000246,0.000194,0.000179,0.000174,0.000154,0.000140,0.000235,0.000115,0.000258 | |||
giUnmuted44 ftgen 0,0,4096,10,0.302063,0.713050,0.452426,0.930055,0.680724,0.256993,0.187429,0.166946,0.128520,0.034480,0.011033,0.010095,0.010484,0.013378,0.003779,0.001842,0.002372,0.003682,0.002032,0.001052,0.001063,0.001158,0.000116,0.001123,0.001585,0.000539,0.001398,0.000809,0.000447,0.000282,0.000640,0.000371,0.000503,0.000484,0.000108,0.000162,0.000180,0.000319,0.000232,0.000211,0.000045,0.000246,0.000082,0.000069,0.000149,0.000105,0.000143,0.000097,0.000032,0.000091,0.000142,0.000202,0.000052,0.000133,0.000185,0.000054,0.000154,0.000137,0.000181,0.000042,0.000135,0.000129,0.000100,0.000108,0.000143,0.000065,0.000082,0.000182,0.000049,0.000189,0.000083,0.000061,0.000143,0.000078,0.000056,0.000079,0.000120,0.000037,0.000098,0.000063,0.000110,0.000162,0.000076,0.000078,0.000059,0.000095,0.000049,0.000104,0.000088,0.000117,0.000133,0.000031,0.000103,0.000040,0.000058,0.000025,0.000024,0.000077,0.000069,0.000155 | |||
giUnmuted45 ftgen 0,0,4096,10,0.233846,0.388855,0.488775,0.775865,0.964456,0.501325,0.291914,0.282804,0.153115,0.120898,0.100772,0.061525,0.021515,0.015412,0.010305,0.004386,0.004785,0.007854,0.004759,0.004311,0.003465,0.002391,0.000787,0.001491,0.000948,0.000812,0.000611,0.000750,0.000529,0.000347,0.000811,0.000462,0.000235,0.000129,0.000100,0.000270,0.000180,0.000344,0.000298,0.000283,0.000076,0.000033,0.000229,0.000057,0.000107,0.000302,0.000392,0.000250,0.000158,0.000123,0.000211,0.000176,0.000204,0.000052,0.000045,0.000073,0.000098,0.000048,0.000042,0.000062,0.000184,0.000108,0.000087,0.000108,0.000246,0.000201,0.000114,0.000035,0.000098,0.000163,0.000193,0.000214,0.000220,0.000138,0.000157,0.000201,0.000169,0.000255,0.000225,0.000166,0.000090,0.000040,0.000130,0.000094,0.000063,0.000032,0.000089,0.000092,0.000126,0.000045,0.000031,0.000089,0.000106,0.000113,0.000102,0.000097,0.000078,0.000087,0.000116,0.000073 | |||
giUnmuted46 ftgen 0,0,4096,10,0.278221,0.573695,0.445852,0.941888,0.349456,0.146739,0.401320,0.181176,0.109258,0.079677,0.027531,0.020462,0.010172,0.004976,0.008831,0.004459,0.003116,0.005925,0.003482,0.001955,0.000824,0.000849,0.000990,0.000555,0.000572,0.000248,0.000282,0.000312,0.000425,0.000324,0.000073,0.000533,0.000097,0.000455,0.000267,0.000126,0.000125,0.000100,0.000382,0.000051,0.000129,0.000240,0.000307,0.000083,0.000247,0.000140,0.000183,0.000087,0.000275,0.000383,0.000065,0.000167,0.000138,0.000204,0.000147,0.000389,0.000087,0.000087,0.000085,0.000041,0.000137,0.000224,0.000036,0.000053,0.000195,0.000205,0.000101,0.000065,0.000194,0.000064,0.000193,0.000258,0.000182,0.000073,0.000094,0.000173,0.000055,0.000075,0.000093,0.000129,0.000045,0.000085,0.000107,0.000117,0.000074,0.000107,0.000122,0.000085,0.000048,0.000110,0.000056,0.000075,0.000100,0.000057,0.000058,0.000070,0.000058,0.000062,0.000024,0.000053 | |||
giUnmuted48 ftgen 0,0,4096,10,0.452762,0.304359,0.946745,0.826937,0.631116,0.540533,0.395792,0.137892,0.089376,0.056327,0.024940,0.018700,0.015991,0.009294,0.006775,0.006495,0.001878,0.002247,0.000868,0.001248,0.001564,0.001249,0.001144,0.001326,0.001103,0.000911,0.000811,0.000899,0.000763,0.000818,0.000796,0.000855,0.000820,0.000710,0.000624,0.000684,0.000656,0.000643,0.000581,0.000503,0.000628,0.000640,0.000595,0.000471,0.000287,0.000521,0.000550,0.000603,0.000454,0.000276,0.000515,0.000524,0.000515,0.000548,0.000414,0.000417,0.000623,0.000306,0.000257,0.000314,0.000328,0.000356,0.000371,0.000363,0.000334,0.000261,0.000258,0.000294,0.000248,0.000426,0.000222,0.000250,0.000403,0.000222,0.000365,0.000158,0.000358,0.000267,0.000252,0.000328,0.000186,0.000291,0.000280,0.000198,0.000269,0.000258,0.000279,0.000252,0.000236,0.000257,0.000228,0.000248,0.000225,0.000222,0.000211,0.000262,0.000206,0.000219,0.000216,0.000223 | |||
giUnmuted49 ftgen 0,0,4096,10,0.384255,0.558888,0.714667,0.956957,0.356637,0.233667,0.190339,0.102786,0.061868,0.032079,0.017290,0.009522,0.005673,0.005487,0.002456,0.002036,0.000425,0.001796,0.002623,0.001222,0.000730,0.000805,0.000937,0.000709,0.000258,0.000626,0.000855,0.000810,0.000503,0.000376,0.000366,0.000792,0.000435,0.000475,0.000434,0.000367,0.000729,0.000327,0.000400,0.000367,0.000285,0.000247,0.000517,0.000305,0.000346,0.000356,0.000254,0.000337,0.000385,0.000231,0.000456,0.000215,0.000106,0.000201,0.000338,0.000284,0.000295,0.000166,0.000172,0.000132,0.000143,0.000401,0.000352,0.000229,0.000228,0.000272,0.000210,0.000234,0.000250,0.000182,0.000231,0.000084,0.000152,0.000170,0.000231,0.000207,0.000174,0.000130,0.000145,0.000280,0.000219,0.000185,0.000135,0.000104,0.000157,0.000222,0.000197,0.000090,0.000129,0.000142,0.000121,0.000183,0.000157,0.000120,0.000130,0.000101,0.000113,0.000151,0.000146,0.000114 | |||
giUnmuted50 ftgen 0,0,4096,10,0.446591,0.477584,0.426492,0.970753,0.374135,0.215282,0.306904,0.140851,0.070867,0.038834,0.002282,0.017849,0.007741,0.003585,0.006831,0.006003,0.003705,0.001554,0.003344,0.000137,0.001907,0.000924,0.001095,0.001011,0.000580,0.000998,0.001204,0.000696,0.001058,0.000873,0.000742,0.000768,0.000685,0.000814,0.000666,0.000827,0.000659,0.000713,0.000613,0.000584,0.000711,0.000452,0.000535,0.000517,0.000488,0.000572,0.000501,0.000577,0.000468,0.000403,0.000316,0.000555,0.000474,0.000513,0.000541,0.000421,0.000425,0.000418,0.000385,0.000321,0.000462,0.000415,0.000342,0.000312,0.000347,0.000323,0.000339,0.000320,0.000298,0.000318,0.000268,0.000265,0.000232,0.000302,0.000354,0.000263,0.000304,0.000222,0.000312,0.000311,0.000342,0.000363,0.000274,0.000300,0.000250,0.000296,0.000254,0.000287,0.000249,0.000199,0.000219,0.000195,0.000210,0.000230,0.000217,0.000181,0.000209,0.000200,0.000218,0.000224 | |||
giUnmuted51 ftgen 0,0,4096,10,0.287446,0.531276,0.971557,0.630155,0.300795,0.250731,0.098819,0.107126,0.053101,0.062126,0.011011,0.012837,0.004178,0.006909,0.004394,0.002253,0.002430,0.002140,0.001992,0.000671,0.000287,0.000471,0.000271,0.000130,0.000051,0.000046,0.000110,0.000021,0.000075,0.000192,0.000076,0.000065,0.000131,0.000125,0.000081,0.000150,0.000030,0.000017,0.000085,0.000079,0.000026,0.000096,0.000129,0.000153,0.000110,0.000071,0.000054,0.000060,0.000076,0.000043,0.000064,0.000017,0.000052,0.000117,0.000038,0.000047,0.000024,0.000058,0.000033,0.000021,0.000042,0.000074,0.000063,0.000027,0.000066,0.000039,0.000035,0.000030,0.000050,0.000068,0.000048,0.000058,0.000037,0.000069,0.000030,0.000032,0.000081,0.000067,0.000051,0.000033,0.000053,0.000067,0.000038,0.000025,0.000009,0.000037,0.000026,0.000021,0.000009,0.000039,0.000025,0.000029,0.000019,0.000007,0.000014,0.000020,0.000025,0.000019,0.000024,0.000011 | |||
giUnmuted52 ftgen 0,0,4096,10,0.780315,0.602043,0.971703,0.598540,0.419892,0.250576,0.135924,0.028914,0.007076,0.002504,0.001073,0.002881,0.002091,0.001033,0.001393,0.001759,0.002069,0.001160,0.001046,0.000119,0.000300,0.000679,0.000689,0.000161,0.000393,0.000523,0.000306,0.000179,0.000312,0.000431,0.000186,0.000165,0.000492,0.000276,0.000209,0.000416,0.000299,0.000153,0.000254,0.000350,0.000169,0.000155,0.000291,0.000165,0.000059,0.000258,0.000299,0.000257,0.000195,0.000128,0.000254,0.000142,0.000138,0.000172,0.000115,0.000086,0.000226,0.000168,0.000117,0.000109,0.000203,0.000108,0.000106,0.000096,0.000163,0.000088,0.000138,0.000083,0.000076,0.000118,0.000119,0.000130,0.000104,0.000106,0.000157,0.000102,0.000046,0.000053,0.000071,0.000098,0.000102,0.000096,0.000078,0.000080,0.000075,0.000076,0.000080,0.000077,0.000073,0.000056,0.000081,0.000076,0.000093,0.000054,0.000098,0.000069,0.000047,0.000076,0.000050,0.000039 | |||
giUnmuted53 ftgen 0,0,4096,10,0.372046,0.398945,0.933433,0.303716,0.202319,0.090480,0.045828,0.011018,0.009763,0.001157,0.003828,0.006742,0.001634,0.000320,0.001952,0.001823,0.000292,0.001455,0.000996,0.000511,0.001143,0.001002,0.000470,0.000777,0.000907,0.000648,0.000685,0.000677,0.000506,0.000454,0.000526,0.000488,0.000439,0.000473,0.000508,0.000505,0.000540,0.000447,0.000407,0.000416,0.000398,0.000364,0.000198,0.000374,0.000324,0.000391,0.000404,0.000361,0.000265,0.000399,0.000341,0.000282,0.000274,0.000277,0.000232,0.000236,0.000232,0.000234,0.000221,0.000241,0.000245,0.000215,0.000179,0.000214,0.000247,0.000215,0.000207,0.000202,0.000207,0.000195,0.000189,0.000164,0.000193,0.000172,0.000163,0.000189,0.000196,0.000183,0.000169,0.000170,0.000159,0.000177,0.000172,0.000148,0.000148,0.000174,0.000160,0.000170,0.000159,0.000159,0.000153,0.000140,0.000152,0.000124,0.000137,0.000135,0.000132,0.000111,0.000136,0.000145 | |||
giUnmuted55 ftgen 0,0,4096,10,0.553293,0.970661,0.775964,0.469479,0.247296,0.167610,0.076609,0.033410,0.020341,0.014035,0.008333,0.004948,0.005841,0.001285,0.003257,0.000737,0.001858,0.001036,0.001645,0.001036,0.001103,0.001137,0.001058,0.001046,0.000830,0.000920,0.000754,0.000986,0.000805,0.000941,0.000725,0.000785,0.000639,0.000792,0.000693,0.000710,0.000502,0.000630,0.000647,0.000611,0.000541,0.000612,0.000564,0.000535,0.000526,0.000550,0.000561,0.000452,0.000489,0.000502,0.000455,0.000494,0.000395,0.000489,0.000391,0.000455,0.000426,0.000401,0.000395,0.000424,0.000366,0.000409,0.000441,0.000420,0.000368,0.000384,0.000385,0.000372,0.000378,0.000347,0.000334,0.000364,0.000324,0.000342,0.000334,0.000331,0.000328,0.000319,0.000317,0.000303,0.000307,0.000324,0.000295,0.000316,0.000284,0.000293,0.000301,0.000292,0.000308,0.000294,0.000306,0.000291,0.000290,0.000281,0.000282,0.000284,0.000276,0.000270,0.000271,0.000271 | |||
giUnmuted56 ftgen 0,0,4096,10,0.400932,0.968520,0.498998,0.389257,0.178633,0.106598,0.036188,0.017795,0.012342,0.000119,0.001239,0.002906,0.000849,0.000166,0.001155,0.001166,0.000733,0.000431,0.000261,0.000740,0.000954,0.000788,0.000425,0.000292,0.000215,0.000111,0.000367,0.000116,0.000157,0.000202,0.000291,0.000325,0.000311,0.000291,0.000228,0.000258,0.000334,0.000245,0.000207,0.000181,0.000101,0.000272,0.000256,0.000160,0.000202,0.000191,0.000135,0.000209,0.000287,0.000145,0.000174,0.000142,0.000151,0.000158,0.000211,0.000156,0.000085,0.000205,0.000120,0.000149,0.000178,0.000110,0.000128,0.000155,0.000127,0.000078,0.000172,0.000112,0.000089,0.000134,0.000141,0.000080,0.000122,0.000145,0.000057,0.000148,0.000118,0.000076,0.000098,0.000141,0.000071,0.000118,0.000134,0.000051,0.000121,0.000094,0.000107,0.000067,0.000125,0.000091,0.000070,0.000129,0.000072,0.000073,0.000102,0.000110,0.000065,0.000125,0.000102,0.000073 | |||
giUnmuted57 ftgen 0,0,4096,10,0.291306,0.935026,0.610503,0.348987,0.214608,0.091185,0.014377,0.010820,0.009119,0.004516,0.002313,0.001529,0.002367,0.001896,0.001988,0.001276,0.001387,0.001297,0.001665,0.001145,0.001069,0.001265,0.001014,0.000912,0.000914,0.000884,0.001057,0.000657,0.000966,0.000629,0.000867,0.000822,0.000934,0.000930,0.000759,0.000705,0.000586,0.000610,0.000554,0.000522,0.000534,0.000515,0.000527,0.000475,0.000482,0.000475,0.000461,0.000481,0.000430,0.000442,0.000430,0.000434,0.000438,0.000393,0.000406,0.000411,0.000359,0.000372,0.000357,0.000351,0.000349,0.000324,0.000336,0.000324,0.000314,0.000303,0.000301,0.000285,0.000290,0.000281,0.000290,0.000278,0.000275,0.000275,0.000263,0.000266,0.000238,0.000227,0.000236,0.000240,0.000236,0.000232,0.000222,0.000228,0.000230,0.000219,0.000211,0.000210,0.000218,0.000220,0.000216,0.000205,0.000201,0.000207,0.000204,0.000198,0.000198,0.000199,0.000198,0.000204 | |||
giUnmuted58 ftgen 0,0,4096,10,0.424856,0.955425,0.300308,0.167209,0.106790,0.022221,0.009677,0.003945,0.002919,0.000972,0.002109,0.001042,0.000179,0.000802,0.000783,0.000469,0.000622,0.000452,0.000340,0.000342,0.000529,0.000442,0.000227,0.000537,0.000344,0.000279,0.000438,0.000291,0.000255,0.000281,0.000355,0.000226,0.000212,0.000190,0.000247,0.000230,0.000217,0.000203,0.000212,0.000229,0.000161,0.000199,0.000193,0.000163,0.000189,0.000156,0.000148,0.000176,0.000153,0.000136,0.000144,0.000163,0.000148,0.000142,0.000156,0.000124,0.000124,0.000128,0.000131,0.000128,0.000116,0.000119,0.000096,0.000126,0.000103,0.000119,0.000108,0.000098,0.000108,0.000100,0.000109,0.000095,0.000104,0.000104,0.000089,0.000098,0.000092,0.000092,0.000094,0.000088,0.000084,0.000083,0.000085,0.000085,0.000078,0.000083,0.000080,0.000081,0.000078,0.000077,0.000082,0.000082,0.000079,0.000080,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giUnmuted59 ftgen 0,0,4096,10,0.359547,0.978853,0.629720,0.355319,0.173057,0.062497,0.018952,0.015355,0.001883,0.003244,0.000776,0.001277,0.001682,0.000930,0.001021,0.000861,0.000797,0.000784,0.000905,0.000938,0.000691,0.000529,0.000651,0.000668,0.000567,0.000394,0.000564,0.000553,0.000563,0.000374,0.000399,0.000503,0.000337,0.000498,0.000410,0.000391,0.000452,0.000316,0.000406,0.000293,0.000417,0.000301,0.000349,0.000279,0.000358,0.000270,0.000271,0.000287,0.000270,0.000252,0.000235,0.000266,0.000229,0.000223,0.000239,0.000206,0.000237,0.000201,0.000212,0.000207,0.000197,0.000204,0.000185,0.000193,0.000174,0.000185,0.000168,0.000173,0.000159,0.000158,0.000167,0.000156,0.000160,0.000158,0.000153,0.000144,0.000156,0.000152,0.000147,0.000148,0.000140,0.000141,0.000134,0.000134,0.000132,0.000133,0.000132,0.000129,0.000139,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giUnmuted60 ftgen 0,0,4096,10,0.261374,0.958638,0.539283,0.255231,0.147692,0.058306,0.039086,0.029455,0.008523,0.006366,0.003368,0.001295,0.000525,0.000726,0.000847,0.000590,0.000475,0.000526,0.000505,0.000443,0.000320,0.000407,0.000362,0.000443,0.000436,0.000378,0.000327,0.000302,0.000313,0.000302,0.000287,0.000249,0.000268,0.000271,0.000288,0.000219,0.000205,0.000188,0.000206,0.000244,0.000213,0.000204,0.000153,0.000138,0.000190,0.000183,0.000175,0.000180,0.000157,0.000145,0.000159,0.000168,0.000161,0.000138,0.000144,0.000137,0.000134,0.000133,0.000132,0.000126,0.000126,0.000129,0.000119,0.000120,0.000108,0.000109,0.000110,0.000111,0.000101,0.000092,0.000091,0.000098,0.000100,0.000096,0.000094,0.000096,0.000089,0.000087,0.000090,0.000085,0.000088,0.000082,0.000081,0.000085,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giUnmuted61 ftgen 0,0,4096,10,0.417597,0.966833,0.416727,0.180794,0.059064,0.009951,0.012483,0.005985,0.000936,0.001803,0.000655,0.001165,0.001044,0.000808,0.000730,0.000802,0.000431,0.000761,0.000635,0.000600,0.000672,0.000449,0.000439,0.000419,0.000423,0.000466,0.000371,0.000301,0.000340,0.000369,0.000332,0.000355,0.000303,0.000303,0.000266,0.000327,0.000298,0.000235,0.000293,0.000250,0.000196,0.000286,0.000226,0.000187,0.000270,0.000214,0.000201,0.000218,0.000195,0.000204,0.000206,0.000186,0.000183,0.000183,0.000170,0.000171,0.000168,0.000166,0.000163,0.000161,0.000161,0.000147,0.000147,0.000142,0.000139,0.000140,0.000142,0.000142,0.000138,0.000137,0.000135,0.000131,0.000129,0.000130,0.000131,0.000129,0.000128,0.000128,0.000129,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giUnmuted62 ftgen 0,0,4096,10,0.619523,0.961285,0.413119,0.108674,0.024175,0.002125,0.004476,0.003247,0.001352,0.001965,0.000417,0.001471,0.001777,0.000808,0.001622,0.001287,0.001022,0.001266,0.000711,0.000939,0.000934,0.000662,0.000613,0.000589,0.000621,0.000570,0.000567,0.000537,0.000348,0.000623,0.000348,0.000581,0.000430,0.000433,0.000451,0.000404,0.000403,0.000380,0.000391,0.000385,0.000372,0.000351,0.000360,0.000320,0.000325,0.000307,0.000314,0.000267,0.000307,0.000276,0.000259,0.000269,0.000263,0.000231,0.000245,0.000235,0.000254,0.000203,0.000228,0.000209,0.000210,0.000212,0.000201,0.000201,0.000200,0.000193,0.000197,0.000181,0.000186,0.000191,0.000187,0.000179,0.000186,0.000183,0.000156,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giUnmuted63 ftgen 0,0,4096,10,0.930506,0.830293,0.419689,0.124916,0.038385,0.024593,0.004794,0.004719,0.003135,0.000873,0.001282,0.002043,0.001147,0.000967,0.000988,0.000678,0.000173,0.000513,0.000302,0.000290,0.000411,0.000762,0.000371,0.000406,0.000100,0.000164,0.000359,0.000407,0.000105,0.000293,0.000391,0.000246,0.000158,0.000094,0.000092,0.000176,0.000072,0.000179,0.000079,0.000130,0.000159,0.000270,0.000068,0.000103,0.000061,0.000031,0.000141,0.000112,0.000103,0.000058,0.000084,0.000104,0.000104,0.000093,0.000106,0.000081,0.000073,0.000109,0.000082,0.000051,0.000083,0.000073,0.000065,0.000063,0.000070,0.000082,0.000059,0.000073,0.000066,0.000057,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giUnmuted64 ftgen 0,0,4096,10,0.972240,0.962179,0.327494,0.131881,0.030060,0.012594,0.010159,0.006424,0.001103,0.003403,0.002598,0.002451,0.001553,0.001352,0.001133,0.001503,0.001006,0.001536,0.001309,0.001202,0.000888,0.001138,0.001263,0.001203,0.001186,0.000543,0.000766,0.000841,0.000896,0.000659,0.000695,0.000682,0.000638,0.000554,0.000597,0.000599,0.000595,0.000633,0.000510,0.000491,0.000552,0.000483,0.000426,0.000553,0.000423,0.000448,0.000409,0.000425,0.000270,0.000375,0.000420,0.000306,0.000414,0.000322,0.000332,0.000333,0.000282,0.000349,0.000328,0.000344,0.000339,0.000347,0.000316,0.000285,0.000300,0.000263,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giUnmuted65 ftgen 0,0,4096,10,0.946888,0.960545,0.184774,0.018883,0.010446,0.014745,0.001268,0.004635,0.003175,0.000946,0.004142,0.002215,0.000862,0.002500,0.001973,0.001800,0.000634,0.001025,0.001812,0.001970,0.001697,0.001360,0.000855,0.000747,0.001079,0.000849,0.000880,0.000574,0.000730,0.000688,0.000981,0.000337,0.000974,0.000733,0.000756,0.000555,0.000861,0.000545,0.000749,0.000475,0.000535,0.000441,0.000525,0.000483,0.000584,0.000565,0.000414,0.000551,0.000370,0.000472,0.000237,0.000446,0.000374,0.000619,0.000426,0.000403,0.000396,0.000408,0.000394,0.000340,0.000296,0.000324,0.000299,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giUnmuted67 ftgen 0,0,4096,10,0.904104,0.687203,0.074239,0.008596,0.008832,0.003406,0.003870,0.000671,0.001852,0.001635,0.001087,0.000499,0.001292,0.000964,0.000856,0.000780,0.000614,0.000711,0.000618,0.000934,0.000903,0.000581,0.000840,0.000399,0.000489,0.000328,0.000505,0.000515,0.000432,0.000365,0.000364,0.000454,0.000390,0.000377,0.000361,0.000314,0.000378,0.000357,0.000330,0.000270,0.000342,0.000244,0.000217,0.000204,0.000235,0.000181,0.000230,0.000167,0.000212,0.000212,0.000203,0.000218,0.000163,0.000210,0.000170,0.000173,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giUnmuted69 ftgen 0,0,4096,10,0.944934,0.293223,0.066919,0.017808,0.007234,0.002307,0.002545,0.000739,0.000556,0.000511,0.000549,0.000723,0.000242,0.000601,0.000453,0.000316,0.000324,0.000312,0.000164,0.000264,0.000131,0.000093,0.000233,0.000211,0.000152,0.000187,0.000090,0.000233,0.000171,0.000154,0.000116,0.000082,0.000095,0.000121,0.000103,0.000074,0.000094,0.000088,0.000098,0.000122,0.000105,0.000080,0.000084,0.000079,0.000074,0.000104,0.000062,0.000071,0.000065,0.000064,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
giUnmuted70 ftgen 0,0,4096,10,0.943312,0.441802,0.052080,0.022643,0.001043,0.002473,0.002554,0.002310,0.001720,0.000881,0.001191,0.001619,0.000857,0.000858,0.001539,0.000697,0.000554,0.000498,0.000409,0.000174,0.000105,0.000147,0.000252,0.000549,0.000348,0.000262,0.000426,0.000336,0.000226,0.000305,0.000193,0.000333,0.000263,0.000183,0.000164,0.000171,0.000202,0.000221,0.000188,0.000137,0.000129,0.000098,0.000100,0.000144,0.000071,0.000094,0.000086,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000 | |||
;GEN02 TABLE CONTAINING THE FUNCTION TABLE NUMBERS OF THE TABLES BETWEEN WHICH MORPHING WILL TAKE PLACE | |||
giwavemapUnmuted ftgen 0,0,128,-27, 0,0, 22,0, 23,1, 24,2, 25,3, 26,4, 27,5, 28,6, 30,7, 31,8, 32,9, 33,10, 34,11, 35,12, 37,13, 38,14, 39,15, 40,16, 41,17, 42,18, 43,19, 44,20, 45,21, 46,22, 48,23, 49,24, 50,25, 51,26, 52,27, 53,28, 55,29, 56,30, 57,31, 58,32, 59,33, 60,34, 61,35, 62,36, 63,37, 64,38, 65,39, 67,40, 69,41, 70,42, 127,42 | |||
gitabs4morfUnmuted ftgen 0,0,64,-2, giUnmuted22,giUnmuted23,giUnmuted24,giUnmuted25,giUnmuted26,giUnmuted27,giUnmuted28,giUnmuted30,giUnmuted31,giUnmuted32,giUnmuted33,giUnmuted34,giUnmuted35,giUnmuted37,giUnmuted38,giUnmuted39,giUnmuted40,giUnmuted41,giUnmuted42,giUnmuted43,giUnmuted44,giUnmuted45,giUnmuted46,giUnmuted48,giUnmuted49,giUnmuted50,giUnmuted51,giUnmuted52,giUnmuted53,giUnmuted55,giUnmuted56,giUnmuted57,giUnmuted58,giUnmuted59,giUnmuted60,giUnmuted61,giUnmuted62,giUnmuted63,giUnmuted64,giUnmuted65,giUnmuted67,giUnmuted69,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70,giUnmuted70 | |||
gisaw ftgen 0,0,4096,11,80,1,0.9 | |||
gisquare ftgen 0,0,4096,10, 1,0, 1/3,0, 1/5,0, 1/7,0, 1/9,0, 1/11,0, 1/13,0, 1/15,0, 1/17,0, 1/19,0, 1/21,0, 1/23,0, 1/25,0, 1/27,0, 1/29,0, 1/31,0, 1/33,0, 1/35,0, 1/37,0, 1/39 | |||
giorg ftgen 0,0,4096,9, 1,1,rnd(1), 2,1/2,rnd(1), 4,1/4,rnd(1), 8,1/8,rnd(1), 16,1/16,rnd(1), 32,1/32,rnd(1), 64,1/64,rnd(1), 128,1/128,rnd(1) | |||
gieee ftgen 0,0,4096,10, 0.430487,0.778043,0.090552,0.011467,0.030632,0.017911,0.006520,0.006820,0.007109,0.006437,0.008527,0.009083,0.016774,0.058922,0.070507,0.116728,0.045479,0.060107,0.069023,0.036487,0.047350,0.049526,0.036678,0.022550,0.022550 | |||
giooh ftgen 0,0,4096,10, 0.110941,0.606890,0.046168,0.040510,0.031310,0.007323,0.003115,0.002749,0.002420,0.002253,0.002853,0.002337,0.002672,0.002061,0.002202,0.002410,0.002615,0.005079,0.003192,0.002699,0.003708,0.003501,0.002264,0.001713,0.001713 | |||
gicos ftgen 0,0,4096,11,1 ;COSINE WAVE (USED BY THE LFOS) | |||
gieqffn ftgen 0,0,4097,7,-1,4096,1 | |||
gieqlfn ftgen 0,0,4097,7,-1,4096,1 | |||
gieqqfn ftgen 0,0,4097,7,-1,4096,1 | |||
gasendL,gasendR init 0 | |||
gkactive init 0 ; Will contain number of active instances of instr 3 when legato mode is chosen. NB. notes in release stage will not be regarded as active. | |||
opcode sspline,k,Kiii | |||
kdur,istart,iend,icurve xin ;READ IN INPUT ARGUMENTS | |||
imid = istart+((iend-istart)/2) ;SPLINE MID POINT VALUE | |||
isspline ftgentmp 0,0,4096,-16,istart,4096*0.5,icurve,imid,(4096/2)-1,-icurve,iend ;GENERATE 'S' SPLINE | |||
kspd = i(kdur)/kdur ;POINTER SPEED AS A RATIO (WITH REFERENCE TO THE ORIGINAL DURATION) | |||
kptr init 0 ;POINTER INITIAL VALUE | |||
kout tablei kptr,isspline ;READ VALUE FROM TABLE | |||
kptr limit kptr+((ftlen(isspline)/(i(kdur)*kr))*kspd), 0, ftlen(isspline)-1 ;INCREMENT THE POINTER BY THE REQUIRED NUMBER OF TABLE POINTS IN ONE CONTROL CYCLE AND LIMIT IT BETWEEN FIRST AND LAST TABLE POINT - FINAL VALUE WILL BE HELD IF POINTER ATTEMPTS TO EXCEED TABLE DURATION | |||
xout kout ;SEND VALUE BACK TO CALLER INSTRUMENT | |||
endop | |||
instr ReadWidgets | |||
kporttime linseg 0,0.001,0.1 | |||
;OSCILLATOR | |||
gkamp chnget "amp" | |||
gkNOscs chnget "NOscs" | |||
gkfmd chnget "fmd" | |||
gkmvt chnget "mvt" | |||
gkwaveform chnget "waveform" | |||
gkwaveform init 1 | |||
gkwidth chnget "width" | |||
gkWTableShift chnget "WTableShift" | |||
gkBendDown chnget "BendDown" | |||
gkBendUp chnget "BendUp" | |||
gkBendRange chnget "BendRange" | |||
gkPchBend portk (gkBendDown+gkBendUp)*gkBendRange, kporttime | |||
gkWTableShift portk gkWTableShift, kporttime | |||
gkFiltLayers chnget "FiltLayers" | |||
gkFlfoType chnget "FlfoType" | |||
gkFRte chnget "FRte" | |||
gkFDep chnget "FDep" | |||
gkFDel chnget "FDel" | |||
gkFRis chnget "FRis" | |||
gkcfoct chnget "cf" | |||
gkFEnvAmt chnget "FEnvAmt" | |||
gkFAtt chnget "FAtt" | |||
gkFDec chnget "FDec" | |||
gkFSus chnget "FSus" | |||
gkFRel chnget "FRel" | |||
gkRvbMix chnget "RvbMix" | |||
gkAAtt chnget "AAtt" | |||
gkADec chnget "ADec" | |||
gkASus chnget "ASus" | |||
gkARel chnget "ARel" | |||
gklegato chnget "legato" | |||
gkLegTim chnget "LegTim" | |||
gkmono chnget "mono" | |||
endin | |||
instr 1 ; triggered via midi | |||
gkNoteTrig init 1 ;at the beginning of a new note set note trigger flag to '1' | |||
inum notnum | |||
gknum = inum | |||
ivel veloc 0,1 ;read in midi note velocity | |||
if i(gklegato)==0 then ;if we are *not* in legato mode... | |||
;aL,aR subinstr p1+1,inum ;call voice instrument as a subinstrument. Audio will be fed back to this instrument before being sent to the outputs. | |||
; outs aL,aR ;send audio to outputs | |||
event_i "i",p1+1+(inum*0.001),0,-1,inum,ivel ; call sound producing instr | |||
krel release ; release flag (1 when note is released, 0 otherwise) | |||
if krel==1 then ; when note is released... | |||
turnoff2 p1+1+(inum*0.001),4,1 ; turn off the called instrument | |||
endif ; end of conditional | |||
else ;otherwise... (i.e. legato mode) | |||
iactive = i(gkactive) ;number of active notes of instr 3 (note in release are disregarded) | |||
if iactive==0 then ;...if no notes are active | |||
event_i "i",p1+1,0,3600,inum,ivel ;...start a new held note | |||
endif | |||
endif | |||
endin | |||
instr 2 ; triggered by instr 2 | |||
;print p4 | |||
;kporttime linseg 0,0.001,1 ;portamento time function rises quickly from zero to a held value | |||
kLegTime = gkLegTim;*kporttime ;scale portamento time function with value from GUI knob widget | |||
if i(gklegato)==1 then ;if we are in legato mode... | |||
krel release ;sense when note has been released | |||
gkactive = 1-krel ;if note is in release, gkactive=0, otherwise =1 | |||
if krel==0 then | |||
ktrig changed gknum ;...GENERATE A TRIGGER IS A NEW NOTE NUMBER IS GENERATED (FROM INSTR. 1) | |||
gkNoteTrig = 0 | |||
endif | |||
gkOldNum init p4 ;OLD NOTE NUMBER = FIRST NOTE NUMBER UPON INITIAL NOTE BEING PLAYED | |||
if ktrig=1 then ;IF A NEW (LEGATO) NOTE HAS BEEN PRESSED | |||
reinit S_CURVE_2 ;BEGIN A REINITIALISATION PASS FROM LABEL | |||
endif ;END OF CONDITIONAL BRANCH | |||
S_CURVE_2: ;A LABEL. REINITIALISATION BEGINS FROM HERE. | |||
idiff = 1+abs(i(gknum)-i(gkOldNum)) ;ABSOLUTE DIFFERENCE BETWEEN OLD NOTE AND NEW NOTE IN STEPS (+ 1) | |||
knum sspline (kLegTime*idiff)+ksmps/sr,i(gkOldNum),i(gknum),1 ;CALL sspline UDO (PORTASMENTO TIME MULTIPLIED BY NOTE GAP (idiff)) | |||
rireturn ;RETURN FROM INITIALISATION PASS | |||
gkOldNum = knum ;SET OLD NUMBER CURRENT NUMBER | |||
kactive active p1-1 ;...check number of active midi notes (previous instrument) | |||
if kactive==0 then ;if no midi notes are active... | |||
turnoff ;... turn this instrument off | |||
endif | |||
else ;otherwise... (polyphonic / non-legato mode) | |||
knum = p4 | |||
endif | |||
knum init p4 | |||
knum = knum + gkPchBend ;add pitch bend | |||
;AMPLITUDE ENVELOPE | |||
aenv linsegr 0.001,i(gkAAtt)+0.001,1,i(gkADec)+0.001,i(gkASus),i(gkARel)+0.001,0.001 ;AMPLITUDE ENVELOPE | |||
aenv = aenv-0.001 | |||
;FILTER AND FILTER ENVELOPE | |||
kFEnv linsegr 0,i(gkFAtt)+0.001,1,i(gkFDec)+0.001,i(gkFSus),i(gkFRel)+0.001,0 | |||
kFEnv = kFEnv * gkFEnvAmt | |||
;FILTER LFO | |||
kdepth linseg 0,i(gkFDel)+0.001,0,i(gkFRis)+0.001,1 ;DEPTH OF MODULATION ENVELOPE | |||
if gkFlfoType==1 then | |||
kFLFO lfo kdepth*gkFDep,gkFRte,0 ;LFO (sine) | |||
elseif gkFlfoType==2 then | |||
kFLFO jspline kdepth*gkFDep,gkFRte,gkFRte | |||
elseif gkFlfoType==3 then | |||
kFLFO randomh -kdepth*gkFDep,kdepth*gkFDep,gkFRte | |||
kFLFO port kFLFO,0.004 ;smooth out the clicks | |||
else | |||
kFLFO lfo kdepth*gkFDep,gkFRte,2 ;LFO (bi-square) | |||
kFLFO port kFLFO,0.004 ;smooth out the clicks | |||
endif | |||
kCFoct limit 4+kFEnv+gkcfoct+kFLFO,4,14 | |||
kCF = cpsoct(kCFoct) | |||
if i(gkwaveform)==6 then | |||
giwavemap = giwavemapClar | |||
gitabs4morf = gitabs4morfClar | |||
imorphtab ftgentmp 0,0,4096,10,1 | |||
kndx limit knum+gkWTableShift,0,127 | |||
kftndx tablei kndx,giwavemap ;ftndx REMAPPED ACCORDING TO THE WAVETABLE MAP FOR THIS INSTRUMENT | |||
ftmorf kftndx, gitabs4morf, imorphtab ;CREATE THE MORPHED TABLE ACCORDING TO THE VALUE OF THE FUNCTION TABLE INDEX CREATED ABOVE | |||
kwave = imorphtab | |||
elseif i(gkwaveform)==7 then | |||
giwavemap = giwavemapBClar | |||
gitabs4morf = gitabs4morfBClar | |||
imorphtab ftgentmp 0,0,4096,10,1 | |||
kndx limit knum+gkWTableShift,0,127 | |||
kftndx tablei kndx,giwavemap ;ftndx REMAPPED ACCORDING TO THE WAVETABLE MAP FOR THIS INSTRUMENT | |||
ftmorf kftndx, gitabs4morf, imorphtab ;CREATE THE MORPHED TABLE ACCORDING TO THE VALUE OF THE FUNCTION TABLE INDEX CREATED ABOVE | |||
kwave = imorphtab | |||
elseif i(gkwaveform)==8 then | |||
giwavemap = giwavemapCBClar | |||
gitabs4morf = gitabs4morfCBClar | |||
imorphtab ftgentmp 0,0,4096,10,1 | |||
kndx limit knum+gkWTableShift,0,127 | |||
kftndx tablei kndx,giwavemap ;ftndx REMAPPED ACCORDING TO THE WAVETABLE MAP FOR THIS INSTRUMENT | |||
ftmorf kftndx, gitabs4morf, imorphtab ;CREATE THE MORPHED TABLE ACCORDING TO THE VALUE OF THE FUNCTION TABLE INDEX CREATED ABOVE | |||
kwave = imorphtab | |||
elseif i(gkwaveform)==9 then | |||
giwavemap = giwavemapOboe | |||
gitabs4morf = gitabs4morfOboe | |||
imorphtab ftgentmp 0,0,4096,10,1 | |||
kndx limit knum+gkWTableShift,0,127 | |||
kftndx tablei kndx,giwavemap ;ftndx REMAPPED ACCORDING TO THE WAVETABLE MAP FOR THIS INSTRUMENT | |||
ftmorf kftndx, gitabs4morf, imorphtab ;CREATE THE MORPHED TABLE ACCORDING TO THE VALUE OF THE FUNCTION TABLE INDEX CREATED ABOVE | |||
kwave = imorphtab | |||
elseif i(gkwaveform)==10 then | |||
giwavemap = giwavemapBassoon | |||
gitabs4morf = gitabs4morfBassoon | |||
imorphtab ftgentmp 0,0,4096,10,1 | |||
kndx limit knum+gkWTableShift,0,127 | |||
kftndx tablei kndx,giwavemap ;ftndx REMAPPED ACCORDING TO THE WAVETABLE MAP FOR THIS INSTRUMENT | |||
ftmorf kftndx, gitabs4morf, imorphtab ;CREATE THE MORPHED TABLE ACCORDING TO THE VALUE OF THE FUNCTION TABLE INDEX CREATED ABOVE | |||
kwave = imorphtab | |||
elseif i(gkwaveform)==11 then | |||
giwavemap = giwavemapCBassoon | |||
gitabs4morf = gitabs4morfCBassoon | |||
imorphtab ftgentmp 0,0,4096,10,1 | |||
kndx limit knum+gkWTableShift,0,127 | |||
kftndx tablei kndx,giwavemap ;ftndx REMAPPED ACCORDING TO THE WAVETABLE MAP FOR THIS INSTRUMENT | |||
ftmorf kftndx, gitabs4morf, imorphtab ;CREATE THE MORPHED TABLE ACCORDING TO THE VALUE OF THE FUNCTION TABLE INDEX CREATED ABOVE | |||
kwave = imorphtab | |||
elseif i(gkwaveform)==12 then | |||
giwavemap = giwavemapViolin | |||
gitabs4morf = gitabs4morfViolin | |||
imorphtab ftgentmp 0,0,4096,10,1 | |||
kndx limit knum+gkWTableShift,0,127 | |||
kftndx tablei kndx,giwavemap ;ftndx REMAPPED ACCORDING TO THE WAVETABLE MAP FOR THIS INSTRUMENT | |||
ftmorf kftndx, gitabs4morf, imorphtab ;CREATE THE MORPHED TABLE ACCORDING TO THE VALUE OF THE FUNCTION TABLE INDEX CREATED ABOVE | |||
kwave = imorphtab | |||
elseif i(gkwaveform)==13 then | |||
giwavemap = giwavemapCello | |||
gitabs4morf = gitabs4morfCello | |||
imorphtab ftgentmp 0,0,4096,10,1 | |||
kndx limit knum+gkWTableShift,0,127 | |||
kftndx tablei kndx,giwavemap ;ftndx REMAPPED ACCORDING TO THE WAVETABLE MAP FOR THIS INSTRUMENT | |||
ftmorf kftndx, gitabs4morf, imorphtab ;CREATE THE MORPHED TABLE ACCORDING TO THE VALUE OF THE FUNCTION TABLE INDEX CREATED ABOVE | |||
kwave = imorphtab | |||
elseif i(gkwaveform)==14 then | |||
giwavemap = giwavemapPiccolo | |||
gitabs4morf = gitabs4morfPiccolo | |||
imorphtab ftgentmp 0,0,4096,10,1 | |||
kndx limit knum+gkWTableShift,0,127 | |||
kftndx tablei kndx,giwavemap ;ftndx REMAPPED ACCORDING TO THE WAVETABLE MAP FOR THIS INSTRUMENT | |||
ftmorf kftndx, gitabs4morf, imorphtab ;CREATE THE MORPHED TABLE ACCORDING TO THE VALUE OF THE FUNCTION TABLE INDEX CREATED ABOVE | |||
kwave = imorphtab | |||
elseif i(gkwaveform)==15 then | |||
giwavemap = giwavemapFlute | |||
gitabs4morf = gitabs4morfFlute | |||
imorphtab ftgentmp 0,0,4096,10,1 | |||
kndx limit knum+gkWTableShift,0,127 | |||
kftndx tablei kndx,giwavemap ;ftndx REMAPPED ACCORDING TO THE WAVETABLE MAP FOR THIS INSTRUMENT | |||
ftmorf kftndx, gitabs4morf, imorphtab ;CREATE THE MORPHED TABLE ACCORDING TO THE VALUE OF THE FUNCTION TABLE INDEX CREATED ABOVE | |||
kwave = imorphtab | |||
elseif i(gkwaveform)==16 then | |||
giwavemap = giwavemapAFlute | |||
gitabs4morf = gitabs4morfAFlute | |||
imorphtab ftgentmp 0,0,4096,10,1 | |||
kndx limit knum+gkWTableShift,0,127 | |||
kftndx tablei kndx,giwavemap ;ftndx REMAPPED ACCORDING TO THE WAVETABLE MAP FOR THIS INSTRUMENT | |||
ftmorf kftndx, gitabs4morf, imorphtab ;CREATE THE MORPHED TABLE ACCORDING TO THE VALUE OF THE FUNCTION TABLE INDEX CREATED ABOVE | |||
kwave = imorphtab | |||
elseif i(gkwaveform)==17 then | |||
giwavemap = giwavemapBFlute | |||
gitabs4morf = gitabs4morfBFlute | |||
imorphtab ftgentmp 0,0,4096,10,1 | |||
kndx limit knum+gkWTableShift,0,127 | |||
kftndx tablei kndx,giwavemap ;ftndx REMAPPED ACCORDING TO THE WAVETABLE MAP FOR THIS INSTRUMENT | |||
ftmorf kftndx, gitabs4morf, imorphtab ;CREATE THE MORPHED TABLE ACCORDING TO THE VALUE OF THE FUNCTION TABLE INDEX CREATED ABOVE | |||
kwave = imorphtab | |||
elseif i(gkwaveform)==18 then | |||
giwavemap = giwavemapAhh | |||
gitabs4morf = gitabs4morfAhh | |||
imorphtab ftgentmp 0,0,4096,10,1 | |||
kndx limit knum+gkWTableShift,0,127 | |||
kftndx tablei kndx,giwavemap ;ftndx REMAPPED ACCORDING TO THE WAVETABLE MAP FOR THIS INSTRUMENT | |||
ftmorf kftndx, gitabs4morf, imorphtab ;CREATE THE MORPHED TABLE ACCORDING TO THE VALUE OF THE FUNCTION TABLE INDEX CREATED ABOVE | |||
kwave = imorphtab | |||
elseif i(gkwaveform)==19 then | |||
giwavemap = giwavemapHornP | |||
gitabs4morf = gitabs4morfHornP | |||
imorphtab ftgentmp 0,0,4096,10,1 | |||
kndx limit knum+gkWTableShift,0,127 | |||
kftndx tablei kndx,giwavemap ;ftndx REMAPPED ACCORDING TO THE WAVETABLE MAP FOR THIS INSTRUMENT | |||
ftmorf kftndx, gitabs4morf, imorphtab ;CREATE THE MORPHED TABLE ACCORDING TO THE VALUE OF THE FUNCTION TABLE INDEX CREATED ABOVE | |||
kwave = imorphtab | |||
elseif i(gkwaveform)==20 then | |||
giwavemap = giwavemapHornF | |||
gitabs4morf = gitabs4morfHornF | |||
imorphtab ftgentmp 0,0,4096,10,1 | |||
kndx limit knum+gkWTableShift,0,127 | |||
kftndx tablei kndx,giwavemap ;ftndx REMAPPED ACCORDING TO THE WAVETABLE MAP FOR THIS INSTRUMENT | |||
ftmorf kftndx, gitabs4morf, imorphtab ;CREATE THE MORPHED TABLE ACCORDING TO THE VALUE OF THE FUNCTION TABLE INDEX CREATED ABOVE | |||
kwave = imorphtab | |||
elseif i(gkwaveform)==21 then | |||
giwavemap = giwavemapharmon | |||
gitabs4morf = gitabs4morfharmon | |||
imorphtab ftgentmp 0,0,4096,10,1 | |||
kndx limit knum+gkWTableShift,0,127 | |||
kftndx tablei kndx,giwavemap ;ftndx REMAPPED ACCORDING TO THE WAVETABLE MAP FOR THIS INSTRUMENT | |||
ftmorf kftndx, gitabs4morf, imorphtab ;CREATE THE MORPHED TABLE ACCORDING TO THE VALUE OF THE FUNCTION TABLE INDEX CREATED ABOVE | |||
kwave = imorphtab | |||
elseif i(gkwaveform)==22 then | |||
giwavemap = giwavemapMute1 | |||
gitabs4morf = gitabs4morfMute1 | |||
imorphtab ftgentmp 0,0,4096,10,1 | |||
kndx limit knum+gkWTableShift,0,127 | |||
kftndx tablei kndx,giwavemap ;ftndx REMAPPED ACCORDING TO THE WAVETABLE MAP FOR THIS INSTRUMENT | |||
ftmorf kftndx, gitabs4morf, imorphtab ;CREATE THE MORPHED TABLE ACCORDING TO THE VALUE OF THE FUNCTION TABLE INDEX CREATED ABOVE | |||
kwave = imorphtab | |||
elseif i(gkwaveform)==23 then | |||
giwavemap = giwavemapUnmuted | |||
gitabs4morf = gitabs4morfUnmuted | |||
imorphtab ftgentmp 0,0,4096,10,1 | |||
kndx limit knum+gkWTableShift,0,127 | |||
kftndx tablei kndx,giwavemap ;ftndx REMAPPED ACCORDING TO THE WAVETABLE MAP FOR THIS INSTRUMENT | |||
ftmorf kftndx, gitabs4morf, imorphtab ;CREATE THE MORPHED TABLE ACCORDING TO THE VALUE OF THE FUNCTION TABLE INDEX CREATED ABOVE | |||
kwave = imorphtab | |||
else | |||
kwave = gisaw+gkwaveform-1 ;DERIVE FUNCTION TABLE NUMBER OF WAVEFORM FOR THE OSCILLATORS | |||
endif | |||
ktrig changed gkNOscs,gkmono ;IF ANY OF THE CONTROLS WHICH MUST BE ENTERED AS I-RATE CONTROLLERS HAVE CHANGED GENERATE A TRIGGER IMPULSE AT THE OUTPUT | |||
if ktrig==1 then ;IF ANY I-RATE CONTROL HAS CHANGED... | |||
reinit UPDATE ;BEGIN A RE-INITILISATION PASS FROM LABEL 'UPDATE' | |||
endif | |||
UPDATE: ;BEGIN REINIT PASS FROM HERE | |||
kmvt jspline gkmvt,gkmvt,gkmvt | |||
kcps = cpsmidinn(knum) | |||
if i(gkmono)==1 then | |||
;OUTPUT OPCODE CPS | AMD | FMD | PMD | OVERLAPS | SEED | L1MINF | L1MAXF | L2MINF | L2MAXF | LFOMODE | EQMINF | EQMAXF | EQMINL | EQMAXL | EQMINQ | EQMAXQ | EQMODE | KFN | L1FN | L2FN | EQFFN | EQLF | EQQFN | TABL | OUTFN | |||
aL oscbnk kcps, 0, gkfmd*kcps, 0, i(gkNOscs), rnd(1), 0, kmvt, 0, 0, 238, 0, 8000, 1, 1, 1, 1, -1, kwave, gicos, gicos, gieqffn, gieqlfn, gieqqfn | |||
aR = aL | |||
else | |||
;TWO ITERATIONS OF oscbnk ARE CREATED, ONE FOR EACH OF THE STEREO AUDIO CHANNELS. THE OUTPUTS WILL BE DIFFERENT AS THE RANDOM NUMBER GENERATORS WILL BE SEEDED BY THE SYSTEM CLOCK | |||
;OUTPUT OPCODE CPS | AMD | FMD | PMD | OVERLAPS | SEED | L1MINF | L1MAXF | L2MINF | L2MAXF | LFOMODE | EQMINF | EQMAXF | EQMINL | EQMAXL | EQMINQ | EQMAXQ | EQMODE | KFN | L1FN | L2FN | EQFFN | EQLF | EQQFN | TABL | OUTFN | |||
aL oscbnk kcps, 0, gkfmd*kcps, 0, i(gkNOscs), rnd(1), 0, kmvt, 0, 0, 238, 0, 8000, 1, 1, 1, 1, -1, kwave, gicos, gicos, gieqffn, gieqlfn, gieqqfn | |||
aR oscbnk kcps, 0, gkfmd*kcps, 0, i(gkNOscs), rnd(1), 0, -kmvt, 0, 0, 238, 0, 8000, 1, 1, 1, 1, -1, kwave, gicos, gicos, gieqffn, gieqlfn, gieqqfn | |||
aL ntrpol (aL+aR)*0.66,aL,gkwidth | |||
aR ntrpol (aL+aR)*0.66,aR,gkwidth | |||
endif | |||
rireturn ;RETURN FROM REINIT PASS | |||
;aL clfilt aL, kCF,0,2 | |||
;aR clfilt aR, kCF,0,2 | |||
ktrig changed gkFiltLayers | |||
if ktrig=1 then | |||
reinit RESTART_TONEX | |||
endif | |||
RESTART_TONEX: | |||
aL tonex aL, kCF,i(gkFiltLayers) | |||
aR tonex aR, kCF,i(gkFiltLayers) | |||
rireturn | |||
aL = aL*aenv*gkamp*p5 | |||
aR = aR*aenv*gkamp*p5 | |||
outs aL, aR ;SEND AUDIO TO THE OUTPUTS. RESCALE EACH CHANNEL WITH NOTE VELOCITY, AMPLITUDE ENVELOPE AND AMP CONTROL WIDGET. | |||
gasendL = gasendL+(aL*gkRvbMix) | |||
gasendR = gasendR+(aR*gkRvbMix) | |||
endin | |||
instr 4 ;reverb | |||
gkRvbSize chnget "RvbSize" | |||
if gkRvbMix==0 goto SKIP_REVERB | |||
aL,aR reverbsc gasendL,gasendR,gkRvbSize,12000 | |||
outs aL,aR | |||
SKIP_REVERB: | |||
clear gasendL,gasendR | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i "ReadWidgets" 0 [3600*24*7] | |||
i 4 0 [3600*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> |
@@ -0,0 +1,127 @@ | |||
<Cabbage> | |||
form caption("Sonic Lava Lamp") size(510, 450), pluginID("sonl") | |||
image bounds( 5, 0,250, 210), colour(255,255, 50,100),shape("rounded"), outline("white"), line(0) | |||
image bounds(255, 0,250, 210), colour( 0, 0,255,100),shape("rounded"), outline("white"), line(0) | |||
image bounds( 5,210,250, 210), colour( 5,255, 0,100),shape("rounded"), outline("white"), line(0) | |||
image bounds(255,210,250, 210), colour(255, 0,200,100),shape("rounded"), outline("white"), line(0) | |||
xypad bounds(5, 0, 250, 210), channel("LFOspeed", "LFO_OS"), rangex(0, 1.00, 0.01), rangey(5, 11, 8), text("Speed/OS") | |||
xypad bounds(255, 0, 250, 210), channel("LFOshape", "LFOdepth"), rangex(0, 1, 0.7), rangey(0.1, 4, 2), text("Shape/Depth") | |||
xypad bounds(5, 210, 250, 210), channel("pan", "amp"), rangex(0, 1, 0.5), rangey(0, 1, 0.8), text("pan/amp") | |||
xypad bounds(255, 210, 250, 210), channel("DelTim", "DelSnd"), rangex(0, 1.00, 0.5), rangey(0, 1.00, 0.5), text("Delay Time/Send") | |||
infobutton bounds(5,425, 100, 20), text("Help"), file("SonicLavaLampHelp.html") | |||
image bounds(105, 425, 315, 20), colour(75, 85, 90, 100), plant("credit"), line(0){ | |||
label bounds(0.03, 0.1, .6, .7), text("Author: Iain McCurdy |2012|"), colour("white") | |||
} | |||
</Cabbage> | |||
<CsoundSynthesizer> | |||
<CsOptions> | |||
-dm0 -n -+rtmidi=null -M0 | |||
</CsOptions> | |||
<CsInstruments> | |||
sr = 44100 | |||
ksmps = 32 | |||
nchnls = 2 | |||
0dbfs = 1 | |||
;Author: Iain McCurdy (2012) | |||
gisine ftgen 0, 0, 4096, 10, 1 ;SINE WAVE | |||
giSawUp ftgen 0, 0, 4096, -7, -1, 4096, 1 | |||
giTri ftgen 0, 0, 4096, -7, -1, 2048, 1, 2048, -1 | |||
giSawDn ftgen 0, 0, 4096, -7, 1, 4096, -1 | |||
giSq ftgen 0, 0, 4096, -7, 1, 2048, 1, 0, -1, 2048, -1 | |||
giMorfTab ftgen 0, 0, 4096, -7, 1, 2048, 1, 0, -1, 2048, -1 | |||
giTabs4Morf ftgen 0, 0, 8, -2, giSq, giSawUp, giTri, giSawDn, giSq, giSq, giSq, giSq | |||
giAmpCurve ftgen 0, 0, 16, -16, 1, 6, 0, 1, 5, -4, 0.2, 5, 0, 0.2 | |||
giEnv ftgen 0, 0, 4096, 20,3,1 ;9, 0.5, 1, 0 | |||
opcode PingPongDelay, aa,aakk | |||
ainL,ainR,ktime,kfeedback xin | |||
atime interp ktime ;INTERPOLATED A-RATE VERSION OF DELAY TIME | |||
aL_OS vdelay ainL,(atime*1000)/2,(10*1000)/2 ;DELAYED OFFSET OF LEFT CHANNEL (FIRST 'PING') | |||
;LEFT CHANNEL | |||
abuf delayr 10 ;ESTABLISH DELAY BUFFER | |||
aDelL deltapi atime ;TAP BUFFER | |||
delayw aL_OS+(aDelL*kfeedback) ;WRITE INPUT AUDIO INTO BUFFER | |||
;RIGHT CHANNEL | |||
abuf delayr 10 ;ESTABLISH DELAY BUFFER | |||
aDelR deltapi atime ;TAP BUFFER | |||
delayw ainR+(aDelR*kfeedback) ;WRITE INPUT AUDIO INTO BUFFER | |||
xout aDelL+aL_OS,aDelR | |||
endop | |||
instr InitialiseXYpads | |||
; xypads output zeroes until they are moved (regardless of any initialisation done within the widget) | |||
; a workaround is to initialise the xypad using chnset within an instrument | |||
; here I have used a macro so cut down on code repetition | |||
#define SET_XYPAD_INIT(NAME'VAL)# | |||
kval = $VAL | |||
chnset kval,"$NAME"# | |||
$SET_XYPAD_INIT(LFOspeed'0.01) | |||
$SET_XYPAD_INIT(LFO_OS'8) | |||
$SET_XYPAD_INIT(LFOshape'0.7) | |||
$SET_XYPAD_INIT(LFOdepth'2) | |||
$SET_XYPAD_INIT(pan'0.5) | |||
$SET_XYPAD_INIT(amp'0.8) | |||
$SET_XYPAD_INIT(DelTim'0.5) | |||
$SET_XYPAD_INIT(DelSnd'0.5) | |||
endin | |||
instr 1 | |||
kLFOspeed chnget "LFOspeed" | |||
kLFO_OS chnget "LFO_OS" | |||
kLFOshape chnget "LFOshape" | |||
kLFOdepth chnget "LFOdepth" | |||
kamp chnget "amp" | |||
kpan chnget "pan" | |||
kDelTim chnget "DelTim" | |||
kDelSnd chnget "DelSnd" | |||
kLFOspeed expcurve kLFOspeed,6 | |||
kLFOspeed scale kLFOspeed, 40,0.01 | |||
kDelTim expcurve kDelTim,6 | |||
kDelTim scale kDelTim, 0.5,0.01 | |||
kporttime linseg 0,0.01,0.03 | |||
kDelSnd portk kDelSnd,kporttime*3 | |||
kLFOdepth portk kLFOdepth,kporttime | |||
kLFO_OS portk kLFO_OS,kporttime | |||
kLFOshape portk kLFOshape,kporttime | |||
kamp portk kamp,kporttime | |||
kamp expcurve kamp,2 | |||
kpan portk kpan,kporttime | |||
ftmorf kLFOshape*5, giTabs4Morf, giMorfTab | |||
aoctLFO oscili kLFOdepth,kLFOspeed,giMorfTab | |||
aoct = aoctLFO+kLFO_OS | |||
koct downsamp aoct | |||
kAmpCurve tablei koct,giAmpCurve | |||
kcps = cpsoct(koct) | |||
aamp interp kAmpCurve/3 | |||
asig oscili aamp,kcps,gisine ;AUDIO OSCILLATOR | |||
aenv oscili 1,kLFOspeed,giEnv | |||
kEnvXFade jspline 1,0.2,0.6 | |||
kEnvXFade limit kEnvXFade,0,1 | |||
asig ntrpol asig*aenv,asig,kEnvXFade | |||
aL,aR pan2 asig,kpan | |||
aRvbL,aRvbR reverbsc aL,aR,0.8,4000 | |||
aL sum (aL*kamp),(aRvbL*0.1) | |||
aR sum (aR*kamp),(aRvbR*0.1) | |||
kDelTim portk kDelTim,kporttime*10 | |||
aDlyL,aDlyR PingPongDelay aL*kDelSnd,aR*kDelSnd,2*kDelTim,0.6 | |||
aL sum aL,(aDlyL*0.5) | |||
aR sum aR,(aDlyR*0.5) | |||
outs aL, aR | |||
endin | |||
</CsInstruments> | |||
<CsScore> | |||
i "InitialiseXYpads" 0 0.01 | |||
i 1 0 [3600*24*7] | |||
</CsScore> | |||
</CsoundSynthesizer> |