Browse Source

Add cabbage

master
falkTX 10 years ago
parent
commit
d45623e876
100 changed files with 21286 additions and 1 deletions
  1. +33
    -0
      .gitignore
  2. +30
    -1
      Makefile
  3. +101
    -0
      bin/cabbage-extra/Effects/AutopanTremolo.csd
  4. +134
    -0
      bin/cabbage-extra/Effects/BandFilter.csd
  5. +284
    -0
      bin/cabbage-extra/Effects/BreakBeatCutter.csd
  6. +166
    -0
      bin/cabbage-extra/Effects/ConvolutionReverb.csd
  7. +223
    -0
      bin/cabbage-extra/Effects/DelayGrain.csd
  8. +142
    -0
      bin/cabbage-extra/Effects/Doppler.csd
  9. +165
    -0
      bin/cabbage-extra/Effects/DopplerSpin.csd
  10. +351
    -0
      bin/cabbage-extra/Effects/FilterLFO.csd
  11. +89
    -0
      bin/cabbage-extra/Effects/Flanger.csd
  12. +286
    -0
      bin/cabbage-extra/Effects/FormantFilter.csd
  13. +74
    -0
      bin/cabbage-extra/Effects/HRTF3D.csd
  14. +73
    -0
      bin/cabbage-extra/Effects/HighpassFilter.csd
  15. +338
    -0
      bin/cabbage-extra/Effects/LiveSndwarp.csd
  16. +71
    -0
      bin/cabbage-extra/Effects/LowpassFilter.csd
  17. +233
    -0
      bin/cabbage-extra/Effects/ModulatingDelays.csd
  18. +76
    -0
      bin/cabbage-extra/Effects/MultiReverb.csd
  19. +87
    -0
      bin/cabbage-extra/Effects/Phaser1.csd
  20. +95
    -0
      bin/cabbage-extra/Effects/Phaser2.csd
  21. +154
    -0
      bin/cabbage-extra/Effects/Reverse.csd
  22. +481
    -0
      bin/cabbage-extra/Effects/StutterFilter.csd
  23. +108
    -0
      bin/cabbage-extra/Effects/TempoDelay.csd
  24. +83
    -0
      bin/cabbage-extra/Effects/clfilt.csd
  25. +96
    -0
      bin/cabbage-extra/Effects/clip.csd
  26. +98
    -0
      bin/cabbage-extra/Effects/pdclip.csd
  27. +94
    -0
      bin/cabbage-extra/Effects/pvShift.csd
  28. +94
    -0
      bin/cabbage-extra/Effects/pvsAdsyn.csd
  29. +93
    -0
      bin/cabbage-extra/Effects/pvsBandp.csd
  30. +95
    -0
      bin/cabbage-extra/Effects/pvsBandr.csd
  31. +171
    -0
      bin/cabbage-extra/Effects/pvsEffects.csd
  32. +131
    -0
      bin/cabbage-extra/Effects/pvsFreeze.csd
  33. +90
    -0
      bin/cabbage-extra/Effects/pvsWarp.csd
  34. +134
    -0
      bin/cabbage-extra/Effects/resony.csd
  35. +103
    -0
      bin/cabbage-extra/Effects/waveset.csd
  36. +173
    -0
      bin/cabbage-extra/Effects/wguide1.csd
  37. +90
    -0
      bin/cabbage-extra/Effects/wguide2.csd
  38. +177
    -0
      bin/cabbage-extra/Synths/BassGuitar.csd
  39. +198
    -0
      bin/cabbage-extra/Synths/Bell.csd
  40. +269
    -0
      bin/cabbage-extra/Synths/BreakBeatCutter.csd
  41. +95
    -0
      bin/cabbage-extra/Synths/Buzz.csd
  42. +374
    -0
      bin/cabbage-extra/Synths/Choir.csd
  43. +528
    -0
      bin/cabbage-extra/Synths/Chowning.csd
  44. +60
    -0
      bin/cabbage-extra/Synths/GaussianDust.csd
  45. +124
    -0
      bin/cabbage-extra/Synths/Granular.csd
  46. +488
    -0
      bin/cabbage-extra/Synths/GuitarChords.csd
  47. +300
    -0
      bin/cabbage-extra/Synths/InharmonicAdditiveSynth.csd
  48. +91
    -0
      bin/cabbage-extra/Synths/Metalizer.csd
  49. +140
    -0
      bin/cabbage-extra/Synths/Metronome.csd
  50. +198
    -0
      bin/cabbage-extra/Synths/PercFlute.csd
  51. +59
    -0
      bin/cabbage-extra/Synths/PinkNoise.csd
  52. +203
    -0
      bin/cabbage-extra/Synths/Rhythmicon.csd
  53. +379
    -0
      bin/cabbage-extra/Synths/Risset.csd
  54. +339
    -0
      bin/cabbage-extra/Synths/RubbedResonators.csd
  55. +128
    -0
      bin/cabbage-extra/Synths/Scantable.csd
  56. +189
    -0
      bin/cabbage-extra/Synths/StringFeedback.csd
  57. +250
    -0
      bin/cabbage-extra/Synths/Vectorial.csd
  58. +708
    -0
      bin/cabbage-extra/Synths/WavetableSynth.csd
  59. +65
    -0
      bin/cabbage-extra/Synths/Wgclar.csd
  60. +62
    -0
      bin/cabbage-extra/Synths/Wgflute.csd
  61. +64
    -0
      bin/cabbage-extra/Synths/Wgpluck.csd
  62. +97
    -0
      bin/cabbage-extra/Synths/Wguide1.csd
  63. +97
    -0
      bin/cabbage-extra/Synths/Wguide2.csd
  64. +204
    -0
      bin/cabbage-extra/Synths/Wterrain.csd
  65. +486
    -0
      bin/cabbage-extra/Synths/gbuzz_synth.csd
  66. +363
    -0
      bin/cabbage-extra/Synths/hsboscil_synth.csd
  67. +808
    -0
      bin/cabbage-extra/Synths/oscbnk_synth.csd
  68. +100
    -0
      bin/cabbage/Effects/EnvelopeFollower.csd
  69. +263
    -0
      bin/cabbage/Effects/FrequencyShifter.csd
  70. +57
    -0
      bin/cabbage/Effects/LoFi.csd
  71. +121
    -0
      bin/cabbage/Effects/Phaser.csd
  72. +59
    -0
      bin/cabbage/Effects/PingPongDelay.csd
  73. +94
    -0
      bin/cabbage/Effects/Powershape.csd
  74. +71
    -0
      bin/cabbage/Effects/RingModulator.csd
  75. +57
    -0
      bin/cabbage/Effects/StereoChorus.csd
  76. +104
    -0
      bin/cabbage/Effects/pvScale.csd
  77. +90
    -0
      bin/cabbage/Effects/pvSmooth.csd
  78. +76
    -0
      bin/cabbage/Effects/pvsBlur.csd
  79. +114
    -0
      bin/cabbage/Effects/pvsBuffer.csd
  80. +432
    -0
      bin/cabbage/MIDI/MIDI_OUT_MATRIX.csd
  81. +160
    -0
      bin/cabbage/Synths/Additive.csd
  82. +80
    -0
      bin/cabbage/Synths/CrazyPluck.csd
  83. +54
    -0
      bin/cabbage/Synths/Dust.csd
  84. +135
    -0
      bin/cabbage/Synths/HiperSaw.csd
  85. +41
    -0
      bin/cabbage/Synths/WhiteNoise.csd
  86. +612
    -0
      bin/cabbage/Synths/bassline.csd
  87. +77
    -0
      bin/cabbage/Synths/bassline.snaps
  88. +27
    -0
      ports/cabbage/LV2-fx/premake.lua
  89. +27
    -0
      ports/cabbage/LV2-ins/premake.lua
  90. +27
    -0
      ports/cabbage/LV2-midi/premake.lua
  91. +27
    -0
      ports/cabbage/VST-fx/premake.lua
  92. +27
    -0
      ports/cabbage/VST-ins/premake.lua
  93. +27
    -0
      ports/cabbage/VST-midi/premake.lua
  94. +711
    -0
      ports/cabbage/source/BinaryData.cpp
  95. +26
    -0
      ports/cabbage/source/BinaryData.h
  96. +197
    -0
      ports/cabbage/source/CabbageCallOutBox.cpp
  97. +66
    -0
      ports/cabbage/source/CabbageCallOutBox.h
  98. +2255
    -0
      ports/cabbage/source/CabbageCustomWidgets.h
  99. +1886
    -0
      ports/cabbage/source/CabbageGUIClass.cpp
  100. +304
    -0
      ports/cabbage/source/CabbageGUIClass.h

+ 33
- 0
.gitignore View File

@@ -0,0 +1,33 @@
*~
*.a
*.cdbs-orig
*.dll
*.dylib
*.exe
*.la
*.o
*.so
*.so.*

*.lv2
*.make
Makefile
object_script.*.Debug
object_script.*.Release

.directory
.fuse*
.svn
.*.kate-swp
.DS_Store
.kdev_include_paths
.kdev4

bin/lv2
bin/vst
debian
intermediate
lv2_ttl_generator

sdks/ASIOSDK2/*
sdks/vstsdk2.4/*

+ 30
- 1
Makefile View File

@@ -8,8 +8,20 @@ PREFIX = /usr

all:
$(MAKE) -C ports
$(MAKE) gen

# -----------------------------------------
# gen

gen: gen_lv2 gen_vst

gen_lv2:
@./scripts/generate-cabbage-lv2.sh
@./scripts/generate-ttl.sh

gen_vst:
@./scripts/generate-cabbage-vst.sh

# -----------------------------------------
# install

@@ -18,9 +30,13 @@ install:
install -d $(DESTDIR)$(PREFIX)/lib/lv2/
install -d $(DESTDIR)$(PREFIX)/lib/vst/

# install ports
# install plugins
ifneq (,$(wildcard bin/lv2/TheFunction.lv2))
cp -r bin/lv2/*.lv2/ $(DESTDIR)$(PREFIX)/lib/lv2/
endif
ifneq (,$(wildcard bin/vst/TheFunction.so))
cp -r bin/vst/* $(DESTDIR)$(PREFIX)/lib/vst/
endif

# -----------------------------------------
# clean
@@ -28,6 +44,19 @@ install:
clean:
$(MAKE) clean -C ports
rm -rf bin/lv2/*.lv2/
rm -rf bin/lv2-extra/
rm -rf bin/vst-extra/

distclean: clean
$(MAKE) distclean -C ports

# -----------------------------------------
# Custom build types

lv2:
$(MAKE) -C ports lv2
$(MAKE) gen_lv2

vst:
$(MAKE) -C ports vst
$(MAKE) gen_vst

+ 101
- 0
bin/cabbage-extra/Effects/AutopanTremolo.csd View File

@@ -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>

+ 134
- 0
bin/cabbage-extra/Effects/BandFilter.csd View File

@@ -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>

+ 284
- 0
bin/cabbage-extra/Effects/BreakBeatCutter.csd View File

@@ -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>

+ 166
- 0
bin/cabbage-extra/Effects/ConvolutionReverb.csd View File

@@ -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>

+ 223
- 0
bin/cabbage-extra/Effects/DelayGrain.csd View File

@@ -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>

+ 142
- 0
bin/cabbage-extra/Effects/Doppler.csd View File

@@ -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>

+ 165
- 0
bin/cabbage-extra/Effects/DopplerSpin.csd View File

@@ -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>

+ 351
- 0
bin/cabbage-extra/Effects/FilterLFO.csd View File

@@ -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>

+ 89
- 0
bin/cabbage-extra/Effects/Flanger.csd View File

@@ -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>

+ 286
- 0
bin/cabbage-extra/Effects/FormantFilter.csd View File

@@ -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>

+ 74
- 0
bin/cabbage-extra/Effects/HRTF3D.csd View File

@@ -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>

+ 73
- 0
bin/cabbage-extra/Effects/HighpassFilter.csd View File

@@ -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>

+ 338
- 0
bin/cabbage-extra/Effects/LiveSndwarp.csd View File

@@ -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>




























+ 71
- 0
bin/cabbage-extra/Effects/LowpassFilter.csd View File

@@ -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>

+ 233
- 0
bin/cabbage-extra/Effects/ModulatingDelays.csd View File

@@ -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>

+ 76
- 0
bin/cabbage-extra/Effects/MultiReverb.csd View File

@@ -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>

+ 87
- 0
bin/cabbage-extra/Effects/Phaser1.csd View File

@@ -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>




























+ 95
- 0
bin/cabbage-extra/Effects/Phaser2.csd View File

@@ -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>




























+ 154
- 0
bin/cabbage-extra/Effects/Reverse.csd View File

@@ -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>

+ 481
- 0
bin/cabbage-extra/Effects/StutterFilter.csd View File

@@ -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>

+ 108
- 0
bin/cabbage-extra/Effects/TempoDelay.csd View File

@@ -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>

+ 83
- 0
bin/cabbage-extra/Effects/clfilt.csd View File

@@ -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>

+ 96
- 0
bin/cabbage-extra/Effects/clip.csd View File

@@ -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>




























+ 98
- 0
bin/cabbage-extra/Effects/pdclip.csd View File

@@ -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>




























+ 94
- 0
bin/cabbage-extra/Effects/pvShift.csd View File

@@ -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>

+ 94
- 0
bin/cabbage-extra/Effects/pvsAdsyn.csd View File

@@ -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>

+ 93
- 0
bin/cabbage-extra/Effects/pvsBandp.csd View File

@@ -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>

+ 95
- 0
bin/cabbage-extra/Effects/pvsBandr.csd View File

@@ -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>

+ 171
- 0
bin/cabbage-extra/Effects/pvsEffects.csd View File

@@ -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>

+ 131
- 0
bin/cabbage-extra/Effects/pvsFreeze.csd View File

@@ -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>

+ 90
- 0
bin/cabbage-extra/Effects/pvsWarp.csd View File

@@ -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>

+ 134
- 0
bin/cabbage-extra/Effects/resony.csd View File

@@ -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>

+ 103
- 0
bin/cabbage-extra/Effects/waveset.csd View File

@@ -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>




























+ 173
- 0
bin/cabbage-extra/Effects/wguide1.csd View File

@@ -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>




























+ 90
- 0
bin/cabbage-extra/Effects/wguide2.csd View File

@@ -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>




























+ 177
- 0
bin/cabbage-extra/Synths/BassGuitar.csd View File

@@ -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>

+ 198
- 0
bin/cabbage-extra/Synths/Bell.csd View File

@@ -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>

+ 269
- 0
bin/cabbage-extra/Synths/BreakBeatCutter.csd View File

@@ -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>

+ 95
- 0
bin/cabbage-extra/Synths/Buzz.csd View File

@@ -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>

+ 374
- 0
bin/cabbage-extra/Synths/Choir.csd View File

@@ -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>

+ 528
- 0
bin/cabbage-extra/Synths/Chowning.csd View File

@@ -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>

+ 60
- 0
bin/cabbage-extra/Synths/GaussianDust.csd View File

@@ -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>

+ 124
- 0
bin/cabbage-extra/Synths/Granular.csd View File

@@ -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>

+ 488
- 0
bin/cabbage-extra/Synths/GuitarChords.csd View File

@@ -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>

+ 300
- 0
bin/cabbage-extra/Synths/InharmonicAdditiveSynth.csd View File

@@ -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>

+ 91
- 0
bin/cabbage-extra/Synths/Metalizer.csd View File

@@ -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>

+ 140
- 0
bin/cabbage-extra/Synths/Metronome.csd View File

@@ -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>

+ 198
- 0
bin/cabbage-extra/Synths/PercFlute.csd View File

@@ -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>

+ 59
- 0
bin/cabbage-extra/Synths/PinkNoise.csd View File

@@ -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>

+ 203
- 0
bin/cabbage-extra/Synths/Rhythmicon.csd View File

@@ -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>

+ 379
- 0
bin/cabbage-extra/Synths/Risset.csd View File

@@ -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>

+ 339
- 0
bin/cabbage-extra/Synths/RubbedResonators.csd View File

@@ -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>

+ 128
- 0
bin/cabbage-extra/Synths/Scantable.csd View File

@@ -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>

+ 189
- 0
bin/cabbage-extra/Synths/StringFeedback.csd View File

@@ -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>

+ 250
- 0
bin/cabbage-extra/Synths/Vectorial.csd View File

@@ -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>

+ 708
- 0
bin/cabbage-extra/Synths/WavetableSynth.csd View File

@@ -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>

+ 65
- 0
bin/cabbage-extra/Synths/Wgclar.csd View File

@@ -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>

+ 62
- 0
bin/cabbage-extra/Synths/Wgflute.csd View File

@@ -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>

+ 64
- 0
bin/cabbage-extra/Synths/Wgpluck.csd View File

@@ -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>

+ 97
- 0
bin/cabbage-extra/Synths/Wguide1.csd View File

@@ -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>

+ 97
- 0
bin/cabbage-extra/Synths/Wguide2.csd View File

@@ -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>

+ 204
- 0
bin/cabbage-extra/Synths/Wterrain.csd View File

@@ -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>

+ 486
- 0
bin/cabbage-extra/Synths/gbuzz_synth.csd View File

@@ -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>

+ 363
- 0
bin/cabbage-extra/Synths/hsboscil_synth.csd View File

@@ -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>

+ 808
- 0
bin/cabbage-extra/Synths/oscbnk_synth.csd View File

@@ -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>

+ 100
- 0
bin/cabbage/Effects/EnvelopeFollower.csd View File

@@ -0,0 +1,100 @@
<Cabbage>
form caption("Envelope Follower") size(440, 100), pluginID("envf")
image pos(0, 0), size(440, 100), colour("brown"), shape("rounded"), outline("white"), line(4)
checkbox bounds(15, 70, 15, 15), channel("lev1"), value(0), colour(200,220,0,255),shape("ellipse")
checkbox bounds(15, 55, 15, 15), channel("lev2"), value(0), colour(250,190,0,255),shape("ellipse")
checkbox bounds(15, 40, 15, 15), channel("lev3"), value(0), colour(255,120,0,255),shape("ellipse")
checkbox bounds(15, 25, 15, 15), channel("lev4"), value(0), colour(255, 60,0,255),shape("ellipse")
checkbox bounds(15, 10, 15, 15), channel("lev5"), value(0), colour(255, 0,0,255),shape("ellipse")
rslider bounds( 40, 11, 75, 75), text("Sensitivity"), channel("sens"), range(0, 1, 0.65), colour(255,100,100), fontcolour(255,255,200), trackercolour(255,255,150)
rslider bounds(110, 6, 45, 45), text("Att."), channel("att"), range(0.001, 0.5, 0.01, 0.5, 0.001), colour(255,200,100), fontcolour(255,255,200), trackercolour(255,255,150)
rslider bounds(110, 51, 45, 45), text("Dec."), channel("rel"), range(0.001, 0.5, 0.2, 0.5, 0.001), colour(255,200,100), fontcolour(255,255,200), trackercolour(255,255,150)
rslider bounds(150, 11, 75, 75), text("Frequency"), channel("freq"), range(10, 10000, 1000, 0.5), colour(255,100,100), fontcolour(255,255,200), trackercolour(255,255,150)
rslider bounds(220, 11, 75, 75), text("Resonance"), channel("res"), range(0, 1, 0.75), colour(255,100,100), fontcolour(255,255,200), trackercolour(255,255,150)
rslider bounds(290, 11, 75, 75), text("Distortion"), channel("dist"), range(0, 1.00, 0), colour(255,100,100), fontcolour(255,255,200), trackercolour(255,255,150)
rslider bounds(360, 11, 75, 75), text("Level"), channel("level"), range(0, 1.00, 1), colour(255,200,100), fontcolour(255,255,200), trackercolour(255,255,150)
}
</Cabbage>
<CsoundSynthesizer>
<CsOptions>
-d -n
</CsOptions>
<CsInstruments>
sr = 44100
ksmps = 64
nchnls = 2
0dbfs = 1

;Author: Iain McCurdy (2012)

opcode EnvelopeFollower,a,akkkkkk
ain,ksens,katt,krel,kfreq,kres,kdist xin ;READ IN INPUT ARGUMENTS
setksmps 4
; ATTCK.REL. - ADJUST THE RESPONSE OF THE ENVELOPE FOLLOWER HERE
aFollow follow2 ain, katt, krel ;AMPLITUDE FOLLOWING AUDIO SIGNAL
kFollow downsamp aFollow ;DOWNSAMPLE TO K-RATE
kFollow expcurve kFollow/0dbfs,0.5 ;ADJUSTMENT OF THE RESPONSE OF DYNAMICS TO FILTER FREQUENCY MODULATION
kFrq = kfreq + (kFollow*ksens*10000) ;CREATE A LEFT CHANNEL MODULATING FREQUENCY BASE ON THE STATIC VALUE CREATED BY kfreq AND THE AMOUNT OF DYNAMIC ENVELOPE FOLLOWING GOVERNED BY ksens
kFrq limit kFrq, 20,sr/2 ;LIMIT FREQUENCY RANGE TO PREVENT OUT OF RANGE FREQUENCIES
aout lpf18 ain, kFrq, kres, kdist ;REDEFINE AUDIO SIGNAL AS FILTERED VERSION OF ITSELF
xout aout ;SEND AUDIO BACK TO CALLER INSTRUMENT
endop

opcode SwitchPort, k, kii
kin,iupport,idnport xin
kold init 0
kporttime = (kin<kold?idnport:iupport)
kout portk kin, kporttime
kold = kout
xout kout
endop

instr 1
ksens chnget "sens"
katt chnget "att"
krel chnget "rel"
kfreq chnget "freq"
kres chnget "res"
kdist chnget "dist"
klevel chnget "level"
a1,a2 ins
;a1,a2 diskin2 "808loop.wav",1,0,1
;a1 = a1*0.4
;a2 = a2*0.4


/*level meter*/
amix sum a1,a2
krms rms amix*0.5
krms pow krms,0.75
krms SwitchPort krms,0.01,0.2
kon = 1
koff = 0
#define INDICATOR(LEV'N)
#
kOnTrig trigger krms,$LEV^1.5,0
kOffTrig trigger krms,$LEV^1.5,1
if kOnTrig==1 then
chnset kon,"lev$N"
elseif kOffTrig==1 then
chnset koff,"lev$N"
endif
#
$INDICATOR(1/6'1)
$INDICATOR(2/6'2)
$INDICATOR(3/6'3)
$INDICATOR(4/6'4)
$INDICATOR(5/6'5)

a1 EnvelopeFollower a1,ksens,katt,krel,kfreq,kres*0.95,kdist*100
a2 EnvelopeFollower a2,ksens,katt,krel,kfreq,kres*0.95,kdist*100
a1 = a1 * klevel * (1 - ((kdist*0.3)^0.02)) ;scale amplitude according to distortion level (to compensate for gain increases it applies)
a2 = a2 * klevel * (1 - ((kdist*0.3)^0.02))
outs a1,a2
endin

</CsInstruments>
<CsScore>
i 1 0 [60*60*24*7]
</CsScore>
</CsoundSynthesizer>

+ 263
- 0
bin/cabbage/Effects/FrequencyShifter.csd View File

@@ -0,0 +1,263 @@
; FrequencyShifter.csd
; Iain McCurdy, 2013.
;
; Frequency shifting using the hilbert filter
;
; CONTROLS
; --------
; Input -- Choose audio input: Live, sine tone or pink noise
; Polarity -- 3 options: 'Positive' = multiply 'Freq.' by 1, 'Negative' = multiply 'Freq.' by -1, 'Dual' = sum of 'Positive' and 'Negative' outputs
; Mix -- Dry/Wet mix control
; Freq. -- Principle frequency of the shifting frequency (before modulation by other controls)
; Mult. -- multipler of shifting frequency. Can be useful for finer control of shifting frequency around zero.
; Feedback -- Amount of frequency shifter that is fed back into its input
; Level -- Output level
; Dual Mono / Stereo -- 'Dual Mono' = both channels treated in the same way. 'Stereo' = right channel 180 degrees out of phase with respect to the left
; Stereo mode most apparent if shifting frequency is close to zero
; zero freq -- set 'Freq.' to zero
; [LFO~]
; Modulate Frequency -- Switch to activate LFO modulation of shifting frequency
; Shape -- Shape of the LFO: sine / triangle / square / random sample and hold / random splines
; Rate -- Rate of LFO (in hertz)
; Min -- Minimum frequency of the LFO modulation
; Max -- Maximum frequency of the LFO modulation
; Pan Mod -- Amount of panning modulation (strictly speaking, stereo balance modulation). Rate of modulation governed also by 'Rate'
; Sync LFO -- Restart LFO. Can be useful if 'random spline' modulation becomes 'stuck' at a low frequency


<Cabbage>
form caption("Frequency Shifter (time domain)") size(500,180), pluginID("fshi")
image bounds( 0, 0, 500,180), colour("darkslategrey"), outline("silver"), line(6), shape("rounded")
label bounds(22, 7, 60, 11), text("INPUT"), fontcolour("white")
combobox bounds(10, 18, 65, 20), channel("input"), value(1), text("Live","Tone","Noise")
label bounds(14, 42, 60, 11), text("POLARITY"), fontcolour("white")
combobox bounds(10, 53, 65, 20), channel("polarity"), value(1), text("Positive","Negative","Dual")
rslider bounds( 75, 10, 70, 70), text("Mix"), channel("mix"), range(0, 1.00, 0.5), colour("darkslategrey"), fontcolour("white), trackercolour("yellow")
rslider bounds(145, 10, 70, 70), text("Freq."), channel("freq"), range(-4000, 4000, -50), colour("darkslategrey"), fontcolour("white), trackercolour("yellow")
rslider bounds(215, 10, 70, 70), text("Mult."), channel("mult"), range(-1, 1.00, 0.1), colour("darkslategrey"), fontcolour("white), trackercolour("yellow")
rslider bounds(285, 10, 70, 70), text("Feedback"), channel("fback"), range(0, 0.75, 0.6), colour("darkslategrey"), fontcolour("white), trackercolour("yellow")
rslider bounds(355, 10, 70, 70), text("Level"), channel("level"), range(0, 1.00, 1), colour("darkslategrey"), fontcolour("white), trackercolour("yellow")

checkbox bounds(425, 20, 12, 12), channel("r1") fontcolour("white") colour(yellow) value(1)
checkbox bounds(425, 32, 12, 12), channel("r2") fontcolour("white") colour(yellow)
label bounds(438, 21, 60, 9), text("DUAL MONO"), fontcolour("white")
label bounds(438, 33, 60, 9), text("STEREO"), fontcolour("white")

button bounds(425, 50, 65, 20), colour("Green"), text("Zero Freq", "Zero Freq"), channel("Zerofreq"), value(0)

line bounds( 10, 90, 480, 2), colour("Grey")
checkbox bounds( 10,100,150, 20), channel("ModOnOff") text("LFO Modulate Freq."), fontcolour("white") colour(lime) value(0)
label bounds( 30,127, 75, 11), text("SHAPE"), fontcolour("white")
combobox bounds( 10,138, 85, 20), channel("LFOShape"), value(7), text("Sine","Triangle","Square","Saw Up","Saw Down","Rand.S&H","Rand.Spline")
rslider bounds( 145,100, 70, 70), text("Rate"), channel("LFORate"), range(0, 30, 1.5, 0.5, 0.001), colour("lightslategrey"), fontcolour("white), trackercolour("yellow")
rslider bounds( 215,100, 70, 70), text("Min"), channel("LFOMin"), range(-2000, 2000, -600), colour("lightslategrey"), fontcolour("white), trackercolour("yellow")
rslider bounds( 285,100, 70, 70), text("Max"), channel("LFOMax"), range(-2000, 2000, 600), colour("lightslategrey"), fontcolour("white), trackercolour("yellow")
rslider bounds( 355,100, 70, 70), text("Pan Mod."), channel("PanSpread"),range(0, 1.00, 1), colour("lightslategrey"), fontcolour("white), trackercolour("yellow")
button bounds(425,100, 65, 20), colour("Green"), text("Sync LFO", "Sync LFO"), channel("SyncLFO"), value(0)

</Cabbage>
<CsoundSynthesizer>

<CsOptions>
-d -n
</CsOptions>

<CsInstruments>
sr = 44100
ksmps = 32
nchnls = 2
0dbfs = 1

;Iain McCurdy, 2012
;http://iainmccurdy.org/csound.html
;Frequency shifter effect based around the hilbert filter.

gisine ftgen 0,0,4096,10,1 ;A SINE WAVE SHAPE
gicos ftgen 0,0,4096,11,1 ;A COSINE WAVE SHAPE
gishapes ftgen 0,0,8,-2,0,1,2,4,5

opcode FreqShifter,a,akkkki
adry,kmix,kfreq,kmult,kfback,ifn xin ;READ IN INPUT ARGUMENTS
iWet ftgenonce 0,0,1024,-7,0,512,1,512,1 ;RESCALING FUNCTION FOR WET LEVEL CONTROL
iDry ftgenonce 0,0,1024,-7,1,512,1,512,0 ;RESCALING FUNCTION FOR DRY LEVEL CONTROL
kWet table kmix, iWet, 1 ;RESCALE WET LEVEL CONTROL ACCORDING TO FUNCTION TABLE giWet
kDry table kmix, iDry, 1 ;RESCALE DRY LEVEL CONTROL ACCORDING TO FUNCTION TABLE giWet
aFS init 0 ;INITILISE FEEDBACK SIGNAL (FOR FIRST K-PASS)
ain = adry + (aFS * kfback) ;ADD FEEDBACK SIGNAL TO INPUT (AMOUNT OF FEEDBACK CONTROLLED BY 'Feedback Gain' SLIDER)
areal, aimag hilbert ain ;HILBERT OPCODE OUTPUTS TWO PHASE SHIFTED SIGNALS, EACH 90 OUT OF PHASE WITH EACH OTHER
kfshift = kfreq*kmult
;QUADRATURE OSCILLATORS. I.E. 90 OUT OF PHASE WITH RESPECT TO EACH OTHER
;OUTUTS OPCODE AMPLITUDE | FREQ. | FUNCTION_TABLE | INITIAL_PHASE (OPTIONAL;DEFAULTS TO ZERO)
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)
aout sum aFS*kWet, adry*kDry ;CREATE WET/DRY MIX
xout aout ;SEND AUDIO BACK TO CALLER INSTRUMENT
endop


opcode CabbageRadio2,k,SS ; change opcode name and number is string variable inputs
S1,S2 xin ; add string inputs for the required number of inputs
kon = 0
koff = 0
ksum = 0
ktrigsum = 0
#define READ_CHANGES(NAME) #
k$NAME chnget $NAME
ksum = ksum + k$NAME
kon$NAME trigger k$NAME,0.5,0
ktrigsum = ktrigsum + kon$NAME#

#define WRITE_CHANGES(NAME'COUNT) #
if kon$NAME!=1 then
chnset koff,$NAME
else
kval = $COUNT
endif#

$READ_CHANGES(S1)
$READ_CHANGES(S2) ; add macro expansions for the required number of radio buttons

if ktrigsum>0 then

$WRITE_CHANGES(S1'1)
$WRITE_CHANGES(S2'2) ; add macro expansions for the required number of radio buttons

endif

kval = (ksum=0?0:kval)
xout kval
endop


instr 1
kporttime linseg 0,0.001,0.05
koff = 0
kmix chnget "mix" ; read input widgets
kfreq chnget "freq"
kfreq portk kfreq,kporttime
kmult chnget "mult"
kmult portk kmult,kporttime
kfback chnget "fback"
klevel chnget "level"
kpolarity chnget "polarity"
kStereoMode CabbageRadio2 "r1","r2" ; call UDO
kZeroFreq chnget "Zerofreq"
ktrig changed kZeroFreq
if ktrig=1 then
chnset koff,"freq"
endif
kModOnOff chnget "ModOnOff"
kLFOShape chnget "LFOShape"
kLFORate chnget "LFORate"
kLFOMin chnget "LFOMin"
kLFOMax chnget "LFOMax"
kPanSpread chnget "PanSpread"
kSyncLFO chnget "SyncLFO"


/* INPUT */
kinput chnget "input"
if kinput=1 then
a1,a2 ins
elseif kinput=2 then
a1 oscils 0.2, 300, 0
a2 = a1
else
a1 pinkish 0.2
a2 pinkish 0.2
endif



/* LFO */
if kModOnOff=1 then
ktrig changed kLFOShape,kSyncLFO
if ktrig=1 then
reinit RESTART_LFO
endif
RESTART_LFO:
if i(kLFOShape)=6 then
kLFOFreq randomh kLFOMin,kLFOMax,kLFORate
elseif i(kLFOShape)=7 then ; random spline
;kLFOFreq randomi kLFOMin,kLFOMax,kLFORate,1
;kLFOFreq portk kLFOFreq,1/kLFORate
kLFOFreq rspline kLFOMin,kLFOMax,kLFORate,kLFORate*2
else
ishape table i(kLFOShape)-1,gishapes
kLFOFreq lfo 1,kLFORate,ishape
kLFOFreq scale (kLFOFreq*0.5)+0.5,kLFOMin,kLFOMax
endif
rireturn
endif

kfreq = kfreq+kLFOFreq

/* FREQUENCY SHIFTERS */
ktrig changed kStereoMode
if ktrig=1 then
reinit RESTART_FREQUENCY_SHIFTERS
endif
RESTART_FREQUENCY_SHIFTERS:
if kpolarity=1 then ; polarity is positive...
a1 FreqShifter a1,kmix,kfreq,kmult,kfback,gisine
if i(kStereoMode)=2 then
a2 FreqShifter a2,kmix,kfreq,kmult,kfback,gicos ; cosine version
else
a2 FreqShifter a2,kmix,kfreq,kmult,kfback,gisine
endif
elseif kpolarity=2 then ; polarity is negative...
a1 FreqShifter a1,kmix,-kfreq,kmult,kfback,gisine
if i(kStereoMode)=2 then
a2 FreqShifter a2,kmix,-kfreq,kmult,kfback,gicos ; cosine version
else
a2 FreqShifter a2,kmix,-kfreq,kmult,kfback,gisine
endif
else ; polarity is dual...
aa FreqShifter a1,kmix,kfreq,kmult,kfback,gisine ; positive
if i(kStereoMode)=2 then
ab FreqShifter a2,kmix,kfreq,kmult,kfback,gicos ; cosine version
else
ab FreqShifter a2,kmix,kfreq,kmult,kfback,gisine
endif
ac FreqShifter a1,kmix,-kfreq,kmult,kfback,gisine ; negative
if i(kStereoMode)=2 then
ad FreqShifter a2,kmix,-kfreq,kmult,kfback,gicos ; cosine version
else
ad FreqShifter a2,kmix,-kfreq,kmult,kfback,gisine
endif
rireturn

a1 = (aa+ac)*0.5 ; sum positive and negative and attenuate
a2 = (ab+ad)*0.5
endif


/* PANNING */
if kModOnOff=1 then
kpan randomi 0.5-(kPanSpread*0.5),0.5+(kPanSpread*0.5),kLFORate,1
kpan portk kpan,1/kLFORate
a1 = a1 * sin(kpan*$M_PI_2)
a2 = a2 * cos(kpan*$M_PI_2)
;a1 = a1*kpan
;a2 = a2*(1-kpan)
endif



a1 = a1 * klevel ; scale using level control
a2 = a2 * klevel
outs a1,a2
endin

</CsInstruments>
<CsScore>
i 1 0 [60*60*24*7]
</CsScore>
</CsoundSynthesizer>

+ 57
- 0
bin/cabbage/Effects/LoFi.csd View File

@@ -0,0 +1,57 @@
<Cabbage>
form size(230, 120), caption("Lo Fi"), pluginID("lofi")
image pos(-40,-10), size(300,300), colour(0, 130,230,0), shape("ellipse"), outline(200, 30,100, 80), line(70)
image pos( 0, 0), size(300,300), colour(200, 30, 30,0), shape("ellipse"), outline( 0,130, 30, 80), line(70)
image pos( 40, 10), size(300,300), colour(250, 0, 30,0), shape("ellipse"), outline( 0, 0, 30, 50), line(70)
image pos( 80, 20), size(300,300), colour( 0, 0,255,0), shape("ellipse"), outline( 0, 0,255, 50), line(70)
image pos(120, 30), size(300,300), colour( 0,255,255,0), shape("ellipse"), outline( 0,255,255, 50), line(70)
image pos(160, 40), size(300,300), colour(255,255, 0,0), shape("ellipse"), outline(255,255, 0, 50), line(70)
image pos(0, 0), size(230, 120), colour("Chocolate"), shape("rounded"), outline("white"), line(5)
rslider bounds( 5, 31, 80, 80), text("Bits"), channel("bits"), range(1, 16, 16), fontcolour("White"),colour("orange"), trackercolour("brown")
rslider bounds( 75, 7, 80, 80), text("Foldover"), channel("fold"), range(1, 1024, 0, 0.25), fontcolour("White"),colour("orange"), trackercolour("brown")
rslider bounds(145, 31, 80, 80), text("Level"), channel("level"), range(0, 1.00, 1), fontcolour("White"),colour("orange"), trackercolour("brown")
}
</Cabbage>
<CsoundSynthesizer>
<CsOptions>
-d -n
</CsOptions>
<CsInstruments>
sr = 44100
ksmps = 32
nchnls = 2
0dbfs = 1

;Iain McCurdy, 2012
;http://iainmccurdy.org/csound.html


opcode LoFi,a,akk
ain,kbits,kfold xin ;READ IN INPUT ARGUMENTS
kvalues pow 2, kbits ;RAISES 2 TO THE POWER OF kbitdepth. THE OUTPUT VALUE REPRESENTS THE NUMBER OF POSSIBLE VALUES AT THAT PARTICULAR BIT DEPTH
aout = (int((ain/0dbfs)*kvalues))/kvalues ;BIT DEPTH REDUCE AUDIO SIGNAL
aout fold aout, kfold ;APPLY SAMPLING RATE FOLDOVER
xout aout ;SEND AUDIO BACK TO CALLER INSTRUMENT
endop

instr 1
kbits chnget "bits"
kfold chnget "fold"
klevel chnget "level"
a1,a2 ins
kporttime linseg 0,0.001,0.01
kfold portk kfold,kporttime
a1 LoFi a1,kbits*0.6,kfold
a2 LoFi a2,kbits*0.6,kfold
a1 = a1 * klevel
a2 = a2 * klevel
outs a1,a2
endin

</CsInstruments>

<CsScore>
i 1 0 [60*60*24*7]
</CsScore>

</CsoundSynthesizer>

+ 121
- 0
bin/cabbage/Effects/Phaser.csd View File

@@ -0,0 +1,121 @@
<Cabbage>
form caption("Phaser") size(580, 90), pluginID("phsr")
image bounds(0, 0, 580, 90), colour( 100, 110, 130), shape("rounded"), outline(black), line(4)
label bounds(29, 8, 60, 10), text("INPUT"), fontcolour(0,10,30)
combobox bounds(10, 18, 70, 20), channel("input"), value(1), text("Live","Tone","Noise")
label bounds(19, 43, 60, 10), text("LFO SHAPE"), fontcolour(0,10,30)
combobox bounds(10, 53, 70, 20), channel("shape"), value(1), text("Triangle","Sine","Square","Saw","Saw","Rand.Int","Rand.S&H")
rslider bounds( 85, 10, 70, 70), text("Rate"), channel("rate"), range(0,14.00,0.5,0.5, 0.0001), colour(100,100,110), fontcolour(0,10,30), trackercolour(255,255,200), midiCtrl(1,1)
rslider bounds(155, 10, 70, 70), text("Depth"), channel("depth"), range(0, 1.00, 0.5, 1, .01), colour(100,100,110), fontcolour(0,10,30), trackercolour(255,255,200)
rslider bounds(225, 10, 70, 70), text("Freq."), channel("freq"), range(0, 1.00, 0.4, 1, .01), colour(100,100,110), fontcolour(0,10,30), trackercolour(255,255,200)
rslider bounds(295, 10, 70, 70), text("Feedback"), channel("fback"), range(0, 1.00, 0.4, 1, .01), colour(100,100,110), fontcolour(0,10,30), trackercolour(255,255,200)
rslider bounds(365, 10, 70, 70), text("Stages"), channel("stages"), range(1, 64,8, 1, 1), colour(100,100,110), fontcolour(0,10,30), trackercolour(255,255,200)
rslider bounds(435, 10, 70, 70), text("Mix"), channel("mix"), range(0, 1.00,0.5, 1, .01), colour(100,100,110), fontcolour(0,10,30), trackercolour(255,255,200)
rslider bounds(505, 10, 70, 70), text("Level"), channel("level"), range(0, 1.00, 1, 1, .01), colour(100,100,110), fontcolour(0,10,30), trackercolour(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 Phaser,a,akkkKki
ain,krate,kdepth,kfreq,kstages,kfback,ishape xin ;READ IN INPUT ARGUMENTS
if ishape=1 then
klfo lfo kdepth*0.5, krate, 1 ;LFO FOR THE PHASER (TRIANGULAR SHAPE)
elseif ishape=2 then
klfo lfo kdepth*0.5, krate, 0 ;LFO FOR THE PHASER (SINE SHAPE)
elseif ishape=3 then
klfo lfo kdepth*0.5, krate, 2 ;LFO FOR THE PHASER (SQUARE SHAPE)
elseif ishape=4 then
klfo lfo kdepth*0.5, krate, 4 ;LFO FOR THE PHASER (SAWTOOTH)
elseif ishape=5 then
klfo lfo kdepth*0.5, krate, 5 ;LFO FOR THE PHASER (SAWTOOTH)
elseif ishape=6 then
klfo randomi -kdepth*0.5, kdepth*0.5, krate*8 ;LFO FOR THE PHASER (RANDOMI SHAPE)
klfo portk klfo, 1/(krate*8) ;SMOOTH CHANGES OF DIRECTION
elseif ishape=7 then
klfo randomh -kdepth*0.5, kdepth*0.5, krate ;LFO FOR THE PHASER (RANDOMH SHAPE)
endif
aout phaser1 ain, cpsoct((klfo+(kdepth*0.5)+kfreq)), kstages, kfback ;PHASER1 IS APPLIED TO THE INPUT AUDIO
xout aout ;SEND AUDIO BACK TO CALLER INSTRUMENT
endop

opcode PhaserSt,aa,aakkkKki
ainL,ainR,krate,kdepth,kfreq,kstages,kfback,ishape xin ;READ IN INPUT ARGUMENTS
if ishape=1 then
klfo lfo kdepth*0.5, krate, 1 ;LFO FOR THE PHASER (TRIANGULAR SHAPE)
elseif ishape=2 then
klfo lfo kdepth*0.5, krate, 0 ;LFO FOR THE PHASER (SINE SHAPE)
elseif ishape=3 then
klfo lfo kdepth*0.5, krate, 2 ;LFO FOR THE PHASER (SQUARE SHAPE)
elseif ishape=4 then
klfo lfo kdepth*0.5, krate, 4 ;LFO FOR THE PHASER (SAWTOOTH)
elseif ishape=5 then
klfo lfo kdepth*0.5, krate, 5 ;LFO FOR THE PHASER (SAWTOOTH)
elseif ishape=6 then
klfo randomi -kdepth*0.5, kdepth*0.5, krate*8 ;LFO FOR THE PHASER (RANDOMI SHAPE)
klfo portk klfo, 1/(krate*8) ;SMOOTH CHANGES OF DIRECTION
elseif ishape=7 then
klfo randomh -kdepth*0.5, kdepth*0.5, krate ;LFO FOR THE PHASER (RANDOMH SHAPE)
endif
aoutL phaser1 ainL, cpsoct((klfo+(kdepth*0.5)+kfreq)), kstages, kfback ;PHASER1 IS APPLIED TO THE INPUT AUDIO
aoutR phaser1 ainR, cpsoct((klfo+(kdepth*0.5)+kfreq)), kstages, kfback ;PHASER1 IS APPLIED TO THE INPUT AUDIO
xout aoutL,aoutR ;SEND AUDIO BACK TO CALLER INSTRUMENT
endop

instr 1
kporttime linseg 0,0.001,0.05
krate chnget "rate"
kdepth chnget "depth"
kfreq chnget "freq"
kfback chnget "fback"
kstages chnget "stages"
klevel chnget "level"
kmix chnget "mix"
kshape chnget "shape"
kshape init 1

/* INPUT */
kinput chnget "input"
if kinput=1 then
a1,a2 ins
elseif kinput=2 then
a1 vco2 0.1,200
a2 = a1
else
a1 pinkish 0.1
a2 pinkish 0.1
endif

ktrig changed kshape,kstages ; reinitialise for i-rate parms
if ktrig=1 then
reinit RESTART_PHASER
endif
RESTART_PHASER:
;aPhs1 Phaser a1,krate,kdepth*8,(kfreq*5)+6,kstages,kfback*0.9,i(kshape) ; call UDO
;aPhs2 Phaser a2,krate,kdepth*8,(kfreq*5)+6,kstages,kfback*0.9,i(kshape)
aPhs1,aPhs2 PhaserSt a1,a2,krate,kdepth*8,(kfreq*5)+6,kstages,kfback*0.9,i(kshape) ; use stereo version to ensure lfo sync for random lfos

rireturn
a1 ntrpol a1,aPhs1,kmix ; wet/dry mix
a2 ntrpol a2,aPhs2,kmix
outs a1* klevel, a2* klevel
endin

</CsInstruments>

<CsScore>
i 1 0 [60*60*24*7]
</CsScore>

</CsoundSynthesizer>

+ 59
- 0
bin/cabbage/Effects/PingPongDelay.csd View File

@@ -0,0 +1,59 @@
<Cabbage>
form caption("Ping Pong Delay") size(350, 90), pluginID("ppdl")
image bounds(0, 0,350, 90), colour("Maroon"), shape("rounded"), outline("white"), line(4)
rslider bounds(10, 11, 70, 70), text("Time"), channel("time"), range(0.001, 10, 0.4, 0.5), colour(135, 30, 30) trackercolour(255,255,150) fontcolour(silver)
rslider bounds(75, 11, 70, 70), text("Cutoff"), channel("cutoff"), range(20,20000,20000,0.5), colour(135, 30, 30) trackercolour(255,255,150) fontcolour(silver)
rslider bounds(140, 11, 70, 70), text("Feedback"), channel("feedback"), range(0, 1.00, 0.5), colour(135, 30, 30) trackercolour(255,255,150) fontcolour(silver)
rslider bounds(205, 11, 70, 70), text("Mix"), channel("mix"), range(0, 1.00, 0.5), colour(135, 30, 30) trackercolour(255,255,150) fontcolour(silver)
rslider bounds(270, 11, 70, 70), text("Level"), channel("level"), range(0, 1.00, 0.7), colour(135, 30, 30) trackercolour(255,255,150) fontcolour(silver)

</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
ktime chnget "time" ;READ WIDGETS...
kcutoff chnget "cutoff" ;
kfeedback chnget "feedback" ;
kmix chnget "mix" ;
klevel chnget "level" ;
asigL, asigR ins
kporttime linseg 0,0.01,0.03 ;CREATE A VARIABLE THAT WILL BE USED FOR PORTAMENTO TIME
ktime portk ktime,kporttime ;PORTAMENTO SMOOTHING OF DELAT TIME
atime interp ktime ;INTERPOLATED A-RATE VERSION OF DELAY TIME
aL_OS vdelay asigL,(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
aDelL tone aDelL,kcutoff ;LOWPASS FILTER DELAY TAP
delayw aL_OS+(aDelL*kfeedback) ;WRITE INPUT AUDIO INTO BUFFER
;RIGHT CHANNEL
abuf delayr 10 ;ESTABLISH DELAY BUFFER
aDelR deltapi atime ;TAP BUFFER
aDelR tone aDelR,kcutoff ;LOWPASS FILTER DELAY TAP
delayw asigR+(aDelR*kfeedback) ;WRITE INPUT AUDIO INTO BUFFER
amixL ntrpol asigL,aDelL+aL_OS,kmix ;MIX DRY AND WET SIGNALS (LEFT CHANNEL)
amixR ntrpol asigR,aDelR,kmix ;MIX DRY AND WET SIGNALS (RIGHT CHANNEL)
outs amixL*klevel, amixR*klevel ;PING PONG DELAY OUTPUTS ARE SENT OUT
endin
</CsInstruments>

<CsScore>
i 1 0 [3600*24*7]
</CsScore>

</CsoundSynthesizer>

+ 94
- 0
bin/cabbage/Effects/Powershape.csd View File

@@ -0,0 +1,94 @@
; Powershape.csd
; Iain McCurdy 2012
;
; Encapsulation of the powershape opcode used for wave distortion
;
; CONTROLS
; --------
; Test Tone -- a glissandoing test tone
; Amount -- amount of distortion
; Level -- output level

<Cabbage>
form caption("Powershape") size(300,107), pluginID("pshp")
image bounds(0, 0,300,107), colour("Brown"), shape("rounded"), outline("white"), line(4)
checkbox bounds(10, 8,130, 12), channel("TestTone"), FontColour("white"), value(0), text("Sine Tone"), colour(yellow)
hslider bounds( 5, 15,290, 40), colour("white"), trackercolour("white"), channel("amount"), range(1, 500, 1, 0.5,0.001)
label bounds(130, 47, 60, 11), text("Amount"), fontcolour("white")
hslider bounds( 5, 55,290, 40), colour("white"), trackercolour("white"), channel("level"), range(0, 50, 0.5, 0.25,0.000001)
label bounds(135, 87, 60, 11), text("Level"), 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

gisine ftgen 0,0,4096,10,1 ;,0,1/2,0,1/4,0,1/8,0,1/16,0,1/32,0,1/64

instr 1
kporttime linseg 0,0.001,0.05 ; portamento time ramps up from zero
gkshape chnget "amount" ; READ WIDGETS...
gkshape portk gkshape,kporttime
gklevel chnget "level" ;
gklevel portk gklevel,kporttime
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
aL powershape asigL, gkshape, ifullscale ;CREATE POWERSHAPED SIGNAL
aR powershape asigR, gkshape, ifullscale ;CREATE POWERSHAPED SIGNAL
alevel interp gklevel
outs aL * alevel, aR * alevel ;WAVESET OUTPUT ARE SENT TO THE SPEAKERS
endin
</CsInstruments>

<CsScore>
i 1 0 [3600*24*7]
</CsScore>


</CsoundSynthesizer>




























+ 71
- 0
bin/cabbage/Effects/RingModulator.csd View File

@@ -0,0 +1,71 @@
<Cabbage>
form caption("Ring Modulator") size(435, 90), pluginID("rmod")
;label bounds(7, 3, 200, 11), text("Iain McCurdy [2013]"), FontColour("grey")
image pos(0, 0), size(435, 90), colour("black"), shape("rounded"), outline("lime"), line(5)
rslider bounds( 5, 12, 70, 70), text("Freq."), channel("freq"), range(0, 15000, 800, 0.25), colour("yellow")
rslider bounds( 75, 12, 70, 70), text("Sine/Sq."), channel("wave"), range(0, 1.00, 0), colour("yellow")
line bounds(150, 2, 3, 86), colour("lime")
rslider bounds(160, 12, 70, 70), text("Env."), channel("env"), range(0, 1.00, 0.5, 0.5), colour("orange")
rslider bounds(230, 6, 40, 40), text("Att."), channel("att"), range(0.001, 0.5, 0.01, 0.5), colour("orange")
rslider bounds(230, 46, 40, 40), text("Dec."), channel("dec"), range(0.001, 0.5, 0.1, 0.5), colour("orange")
line bounds(275, 2, 3, 86), colour("lime")
rslider bounds(290, 12, 70, 70), text("Mix"), channel("mix"), range(0, 1.00, 1), colour("chocolate")
rslider bounds(360, 12, 70, 70), text("Level"), channel("level"), range(0, 1.00, 1), colour("chocolate")
</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 RingModulator,a,akkkkkk
ain,kmix,kfreq,kwave,kenv,katt,kdec xin ;READ IN INPUT ARGUMENTS
iWet ftgentmp 0,0,1024,-7,0,512,1,512,1 ;RESCALING FUNCTION FOR WET LEVEL CONTROL
iDry ftgentmp 0,0,1024,-7,1,512,1,512,0 ;RESCALING FUNCTION FOR DRY LEVEL CONTROL
isine ftgentmp 0,0,4096,10,1 ;SINE WAVE
kWet table kmix, iWet, 1 ;RESCALE WET LEVEL CONTROL ACCORDING TO FUNCTION TABLE iWet
kDry table kmix, iDry, 1 ;RESCALE DRY LEVEL CONTROL ACCORDING TO FUNCTION TABLE iDry
kporttime linseg 0,0.001,0.02 ;PORTAMENTO VARIABLE
kModFrq portk kfreq, kporttime ;SMOOTH VARIABLE CHANGES
aFollow follow2 ain, katt, kdec ;AMPLITUDE FOLLOWING kModFrq + (cpsoct(kFollow*kenv*30)) ;CREATE A LEFT CHANNEL MODULATING FREQUENCY BASE ON THE STATIC VALUE CREATED BY kfreq AND THE AMOUNT OF DYNAMIC ENVELOPE FOLLOWING GOVERNED BY kenv
kFollow downsamp aFollow
kFollow logcurve kFollow/0dbfs,2
kModFrq = kModFrq + (kFollow*kenv*8000) ;CREATE A LEFT CHANNEL MODULATING FREQUENCY BASE ON THE STATIC VALUE CREATED BY kfreq AND THE AMOUNT OF DYNAMIC ENVELOPE FOLLOWING GOVERNED BY kenv
aModSi poscil 1, kModFrq, isine ;CREATE RING MODULATING SIGNAL
aModSq vco2 1, kModFrq, 10 ;CREATE RING MODULATING SIGNAL
aMod ntrpol aModSi,aModSq,kwave
aout sum ain*kDry, ain*aMod*kWet ;MIX DRY AND WET SIGNALS
xout aout ;SEND AUDIO BACK TO CALLER INSTRUMENT
endop

instr 1
kmix chnget "mix"
kfreq chnget "freq"
kwave chnget "wave"
kenv chnget "env"
katt chnget "att"
kdec chnget "dec"
klevel chnget "level"
a1,a2 ins
;;a1,a2 diskin2 "808loop.wav",1,0,1
a1 RingModulator a1,kmix,kfreq,kwave,kenv,katt,kdec
a2 RingModulator a2,kmix,kfreq,kwave,kenv,katt,kdec
a1 = a1 * klevel
a2 = a2 * klevel
outs a1,a2
endin

</CsInstruments>

<CsScore>
i 1 0 [60*60*24*7]
</CsScore>

</CsoundSynthesizer>

+ 57
- 0
bin/cabbage/Effects/StereoChorus.csd View File

@@ -0,0 +1,57 @@
<Cabbage>
form caption("Stereo Chorus") size(305, 100), pluginID("scho")
image bounds(0, 0, 305, 100), colour("DarkSlateGrey"), shape("rounded"), outline("white"), line(6)
rslider bounds( 10, 13, 75, 75), text("Rate"), channel("rate"), range(0.001, 7, 0.5,0.5), fontcolour("white"), colour("DarkSlateGrey"), trackercolour("Silver")
rslider bounds( 80, 13, 75, 75), text("Depth"), channel("depth"), range(0, 1.00, 0.2), fontcolour("white"), colour("DarkSlateGrey"), trackercolour("Silver")
rslider bounds(150, 13, 75, 75), text("Width"), channel("width"), range(0, 1.00, 0.75), fontcolour("white"), colour("DarkSlateGrey"), trackercolour("Silver")
rslider bounds(220, 13, 75, 75), text("Level"), channel("level"), range(0, 1.00, .1), fontcolour("white"), colour("DarkSlateGrey"), trackercolour("Silver")
</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 StChorus,aa,aakkk
ainL,ainR,krate,kdepth,kwidth xin ;READ IN INPUT ARGUMENTS
ilfoshape ftgentmp 0, 0, 131072, 19, 1, 0.5, 0, 0.5 ;POSITIVE DOMAIN ONLY SINE WAVE
kporttime linseg 0,0.001,0.02 ;RAMPING UP PORTAMENTO VARIABLE
kChoDepth portk kdepth*0.01, kporttime ;SMOOTH VARIABLE CHANGES WITH PORTK
aChoDepth interp kChoDepth ;INTERPOLATE TO CREATE A-RATE VERSION OF K-RATE VARIABLE
amodL osciliktp krate, ilfoshape, 0 ;LEFT CHANNEL LFO
amodR osciliktp krate, ilfoshape, kwidth*0.5 ;THE PHASE OF THE RIGHT CHANNEL LFO IS ADJUSTABLE
amodL = (amodL*aChoDepth)+.01 ;RESCALE AND OFFSET LFO (LEFT CHANNEL)
amodR = (amodR*aChoDepth)+.01 ;RESCALE AND OFFSET LFO (RIGHT CHANNEL)
aChoL vdelay ainL, amodL*1000, 1.2*1000 ;CREATE VARYING DELAYED / CHORUSED SIGNAL (LEFT CHANNEL)
aChoR vdelay ainR, amodR*1000, 1.2*1000 ;CREATE VARYING DELAYED / CHORUSED SIGNAL (RIGHT CHANNEL)
aoutL sum aChoL*0.6, ainL*0.6 ;MIX DRY AND WET SIGNAL (LEFT CHANNEL)
aoutR sum aChoR*0.6, ainR*0.6 ;MIX DRY AND WET SIGNAL (RIGHT CHANNEL)
xout aoutL,aoutR ;SEND AUDIO BACK TO CALLER INSTRUMENT
endop

instr 1
krate chnget "rate"
kdepth chnget "depth"
kwidth chnget "width"
klevel chnget "level"
a1,a2 ins
a1,a2 StChorus a1,a2,krate,kdepth,kwidth
a1 = a1 * klevel
a2 = a2 * klevel
outs a1,a2
endin

</CsInstruments>

<CsScore>
i 1 0 [60*60*24*7]
</CsScore>

</CsoundSynthesizer>

+ 104
- 0
bin/cabbage/Effects/pvScale.csd View File

@@ -0,0 +1,104 @@
<Cabbage>
form caption("pvscale Pitch Shifter") size(510, 90), pluginID("scal")
image bounds(0, 0, 510, 90), colour("SlateGrey"), outline("silver"), line(4)
image bounds( 6, 23,498, 30), colour("silver"), shape("ellipse"), line(3)
image bounds( 15, 9, 60, 60), colour(30,30,30), shape("ellipse"), line(0) ; circles around rsliders
image bounds( 85, 9, 60, 60), colour(30,30,30), shape("ellipse"), line(0)
image bounds(155, 9, 60, 60), colour(30,30,30), shape("ellipse"), line(0)
image bounds(295, 9, 60, 60), colour(30,30,30), shape("ellipse"), line(0)
image bounds(365, 9, 60, 60), colour(30,30,30), shape("ellipse"), line(0)
image bounds(435, 9, 60, 60), colour(30,30,30), shape("ellipse"), line(0)
rslider bounds(10, 10, 70, 70), text("Semitones"), channel("semis"), range(-24, 24, 7, 1, 1), fontcolour("black"),colour("DarkSlateGrey"), trackercolour("LightBlue")
rslider bounds(80, 10, 70, 70), text("Cents"), channel("cents"), range(-100, 100, 0, 1, 1), fontcolour("black"),colour("DarkSlateGrey"), trackercolour("LightBlue")
rslider bounds(150, 10, 70, 70), text("Feedback"), channel("FB"), range(0.00, 0.99, 0), fontcolour("black"),colour("DarkSlateGrey"), trackercolour("LightBlue")
combobox bounds(220, 28, 70,20), channel("FB_mode"), value(0), text("F Sig.", "Audio")
label bounds(220, 54, 70, 12), text("F.back Mode"), FontColour("black")
rslider bounds(290, 10, 70, 70), text("FFT Size"), channel("att_table"), range(1, 8, 5, 1,1), fontcolour("black"),colour("DarkSlateGrey"), trackercolour("LightBlue")
rslider bounds(360, 10, 70, 70), text("Mix"), channel("mix"), range(0, 1.00, 0.5), fontcolour("black"),colour("DarkSlateGrey"), trackercolour("LightBlue")
rslider bounds(430, 10, 70, 70), text("Level"), channel("lev"), range(0, 1.00, 0.5, 0.5), fontcolour("black"),colour("DarkSlateGrey"), trackercolour("LightBlue")
</Cabbage>
<CsoundSynthesizer>
<CsOptions>
-d -n
</CsOptions>
<CsInstruments>

sr = 44100
ksmps = 32
nchnls = 2
0dbfs = 1 ;MAXIMUM AMPLITUDE

;Iain McCurdy
;http://iainmccurdy.org/csound.html
;Pitch shifting effect using pvs scale 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 pvscale_module,a,akkkkkiiii
ain,kscale,kfeedback,kFB_mode,kmix,klev,iFFTsize,ioverlap,iwinsize,iwintype xin
if(kFB_mode==0) then
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_scale pvscale f_mix, kscale ;RESCALE FREQUENCIES
f_FB pvsgain f_scale, kfeedback ;CREATE FEEDBACK F-SIGNAL FOR NEXT PASS
aout pvsynth f_scale ;RESYNTHESIZE THE f-SIGNAL AS AN AUDIO SIGNAL
else
aFB init 0
f_anal pvsanal ain+aFB, iFFTsize, ioverlap, iwinsize, iwintype ;ANALYSE AUDIO INPUT SIGNAL AND OUTPUT AN FSIG
f_scale pvscale f_anal, kscale ;RESCALE FREQUENCIES
aout pvsynth f_scale ;RESYNTHESIZE THE f-SIGNAL AS AN AUDIO SIGNAL
aFB = aout*kfeedback
endif
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
kmix chnget "mix"
kFB chnget "FB"
kFB_mode chnget "FB_mode"

/* 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
/*-------------------*/
kfeedback chnget "FB"
ksemis chnget "semis"
kcents chnget "cents"
kmix chnget "mix"
klev chnget "lev"
kporttime linseg 0,0.001,0.02
kscale = semitone(ksemis)*cent(kcents)
aoutL pvscale_module ainL,kscale,kfeedback,kFB_mode,kmix,klev,iFFTsize,ioverlap,iwinsize,iwintype
aoutR pvscale_module ainR,kscale,kfeedback,kFB_mode,kmix,klev,iFFTsize,ioverlap,iwinsize,iwintype
outs aoutR,aoutR
endin

</CsInstruments>

<CsScore>
i 1 0 [60*60*24*7]
</CsScore>

</CsoundSynthesizer>

+ 90
- 0
bin/cabbage/Effects/pvSmooth.csd View File

@@ -0,0 +1,90 @@
pvsmooth
FFT feedback is disabled if amplitude smoothing is increased beyond zero. If this is not done the instrument will fail.

<Cabbage>
form caption("pvSmooth") size(505, 90), pluginID("smoo")
image bounds(0, 0, 505, 90), colour("Cream"), outline("silver"), line(5)
label pos(-5, -30), size(815, 150), fontcolour(210,105, 30, 80), text("smooth"), shape("rounded"), outline("white"), line(4)
rslider bounds( 10, 8, 75, 75), text("Amp.Smooth"), channel("acf"), range(0, 1.00, 0, 0.75, 0.001),fontcolour(138, 54, 15), colour("chocolate"), trackercolour(138, 54, 15)
rslider bounds( 90, 8, 75, 75), text("Frq.Smooth"), channel("fcf"), range(0, 1.00, 0, 0.5, 0.0001),fontcolour(138, 54, 15), colour("chocolate"), trackercolour(138, 54, 15)
rslider bounds(170, 8, 75, 75), text("Feedback"), channel("FB"), range(0, 0.999, 0, 1,0.001), fontcolour(138, 54, 15), colour("chocolate"), trackercolour(138, 54, 15)
rslider bounds(250, 8, 75, 75), text("FFT Size"), channel("att_table"), range(1,10, 5, 1,1), fontcolour(138, 54, 15), colour("chocolate"), trackercolour(138, 54, 15)
rslider bounds(330, 8, 75, 75), text("Mix"), channel("mix"), range(0, 1.00, 1), fontcolour(138, 54, 15), colour("chocolate"), trackercolour(138, 54, 15)
rslider bounds(410, 8, 75, 75), text("Level"), channel("lev"), range(0, 1.00, 0.5), fontcolour(138, 54, 15), colour("chocolate"), trackercolour(138, 54, 15)
</Cabbage>
<CsoundSynthesizer>
<CsOptions>
-d -n
</CsOptions>
<CsInstruments>
sr = 44100
ksmps = 32
nchnls = 2
0dbfs = 1 ;MAXIMUM AMPLITUDE

;Iain McCurdy
;http://iainmccurdy.org/csound.html
;Spectral smoothing effect.

/* 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 pvsmooth_module,a,akkkkkiiii
ain,kacf,kfcf,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_smooth pvsmooth f_mix, kacf, kfcf ;BLUR AMPLITUDE AND FREQUENCY VALUES OF AN F-SIGNAL
f_FB pvsgain f_smooth, kfeedback ;CREATE FEEDBACK F-SIGNAL FOR NEXT PASS
aout pvsynth f_smooth ;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 diskin "808loop.wav",1,0,1 ;USE FOR TESTING
;ainL,ainR diskin "SynthPad.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
kfeedback chnget "FB"
kacf chnget "acf"
kfcf chnget "fcf"
kfeedback = (kacf>0?0:kfeedback) ; feedback + amplitude smoothing can cause failure so we must protect against this
kacf = 1-kacf
kfcf = 1-kfcf
kporttime linseg 0,0.001,0.02
kmix chnget "mix"
klev chnget "lev"
aoutL pvsmooth_module ainL,kacf,kfcf,kfeedback,kmix,klev,iFFTsize,ioverlap,iwinsize,iwintype
aoutR pvsmooth_module ainR,kacf,kfcf,kfeedback,kmix,klev,iFFTsize,ioverlap,iwinsize,iwintype
outs aoutR,aoutR
endin

</CsInstruments>

<CsScore>
i 1 0 [60*60*24*7]
</CsScore>

</CsoundSynthesizer>

+ 76
- 0
bin/cabbage/Effects/pvsBlur.csd View File

@@ -0,0 +1,76 @@
<Cabbage>
form caption("pvsBlur"), size(235,125) colour( 70, 90,100), pluginID("blur")
image bounds(0, 0,235,125), colour( 70, 90,100), shape("rounded"), outline("white"), line(5)
rslider bounds( 10, 10, 70, 70), text("FFT Size"), channel("att_table"), range(1, 7, 4, 1,1), fontcolour("white"),colour( 70, 90,100),trackercolour("white")
rslider bounds( 80, 10, 70, 70), text("Mix"), channel("mix"), range(0, 1.00, 1), fontcolour("white"),colour( 70, 90,100),trackercolour("white")
rslider bounds(150, 10, 70, 70), text("Level"), channel("lev"), range(0, 1.00, 0.5, 0.5), fontcolour("white"),colour( 70, 90,100),trackercolour("white")
hslider bounds( 10, 70,210, 40), channel("blurtime"), range(0, 2.00, 0.0, 0.5, 0.0001), fontcolour("white"),colour( 70, 90,100),trackercolour("white")
label bounds( 92,103, 60, 11), text("Blur Time"), fontcolour("white")
</Cabbage>
<CsoundSynthesizer>
<CsOptions>
-d -n
</CsOptions>
<CsInstruments>
sr = 44100
ksmps = 64
nchnls = 2
0dbfs = 1 ;MAXIMUM AMPLITUDE

; Author: Iain McCurdy (2012)
; http://iainmccurdy.org/csound.html

/* FFT attribute tables */
giFFTattributes1 ftgen 0, 0, 4, -2, 128, 64, 128, 1
giFFTattributes2 ftgen 0, 0, 4, -2, 256, 128, 256, 1
giFFTattributes3 ftgen 0, 0, 4, -2, 512, 128, 512, 1
giFFTattributes4 ftgen 0, 0, 4, -2, 1024, 256, 1024, 1
giFFTattributes5 ftgen 0, 0, 4, -2, 2048, 512, 2048, 1
giFFTattributes6 ftgen 0, 0, 4, -2, 4096,1024, 4096, 1
giFFTattributes7 ftgen 0, 0, 4, -2, 8192,2048, 8192, 1

opcode pvsblur_module,a,akkkiiii
ain,kblurtime,kmix,klev,iFFTsize,ioverlap,iwinsize,iwintype xin
f_anal pvsanal ain, iFFTsize, ioverlap, iwinsize, iwintype ;ANALYSE AUDIO INPUT SIGNAL AND OUTPUT AN FSIG
f_blur pvsblur f_anal, kblurtime, 2 ;BLUR AMPLITUDE AND FREQUENCY VALUES OF AN F-SIGNAL
aout pvsynth f_blur ;RESYNTHESIZE THE f-SIGNAL AS AN AUDIO SIGNAL
amix ntrpol ain, aout, kmix ;CREATE DRY/WET MIX
xout amix*klev
endop

instr 1
kblurtime chnget "blurtime"
kmix chnget "mix"
klev chnget "lev"

ainL,ainR ins
;ainL,ainR diskin "808loop.wav",1,0,1 ;USE FOR TESTING

/* 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
/*-------------------*/
kporttime linseg 0,0.001,0.02
kblurtime portk kblurtime,kporttime
aoutL pvsblur_module ainL,kblurtime,kmix,klev,iFFTsize,ioverlap,iwinsize,iwintype
aoutR pvsblur_module ainR,kblurtime,kmix,klev,iFFTsize,ioverlap,iwinsize,iwintype
outs aoutR,aoutR
endin

</CsInstruments>

<CsScore>
i 1 0 [60*60*24*7]
</CsScore>

</CsoundSynthesizer>

+ 114
- 0
bin/cabbage/Effects/pvsBuffer.csd View File

@@ -0,0 +1,114 @@
; pvsBuffer.csd (for Cabbage)
; Writes audio into a circular FFT buffer.
; Read speed can be modified as can the frequencies.
; Take Care! Feedback values above 1 are intended to be used only when transposition if not unison.

<Cabbage>
form caption("pvsBuffer") size(580,90), pluginID("buff")
image bounds(0, 0, 580, 90), colour(100, 80, 80,125), shape("rounded"), outline("white"), line(4)
rslider bounds(10, 11, 70, 70), text("Speed"), channel("speed"), range(0, 4, 1, 0.5, 0.0001), fontcolour("white"), colour(100, 80, 80, 5) trackercolour(silver)
rslider bounds(80, 11, 70, 70), text("Buf. Size"), channel("buflen"), range(0.10, 8.00, 1, 0.5), fontcolour("white"), colour(100, 80, 80, 5) trackercolour(silver)
rslider bounds(150, 11, 70, 70), text("Semitones"), channel("semis"), range(-24, 24, 0, 1, 1), fontcolour("white"), colour(100, 80, 80, 5) trackercolour(silver)
rslider bounds(220, 11, 70, 70), text("Cents"), channel("cents"), range(-100, 100, 0, 1, 1), fontcolour("white"), colour(100, 80, 80, 5) trackercolour(silver)
rslider bounds(290, 11, 70, 70), text("Feedback"), channel("FB"), range(0, 1.50, 0), fontcolour("white"), colour(100, 80, 80, 5) trackercolour(silver)
rslider bounds(360, 11, 70, 70), text("FFT Size"), channel("att_table"), range(1, 8, 5, 1,1), fontcolour("white"), colour(100, 80, 80, 5) trackercolour(silver)
rslider bounds(430, 11, 70, 70), text("Mix"), channel("mix"), range(0, 1.00, 1), fontcolour("white"), colour(100, 80, 80, 5) trackercolour(silver)
rslider bounds(500, 11, 70, 70), text("Level"), channel("lev"), range(0, 1.00, 0.5), fontcolour("white"), colour(100, 80, 80, 5) trackercolour(silver)
</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 pvsbuffer_module,a,akkkkkkiiii
ain,kspeed,kbuflen,kscale,kfeedback,kmix,klev,iFFTsize,ioverlap,iwinsize,iwintype xin
kPhOffset = 0
ktrig changed kbuflen
ibuflen init 1
kspeed init 1
kscale init 1
if ktrig==1 then
reinit UPDATE
endif
UPDATE:
ibuflen = i(kbuflen)
iphasor ftgen 0, 0, 65536, 7, 0, 65536, 1 ;WAVE SHAPE FOR A MOVING PHASE POINTER
aread osciliktp kspeed/ibuflen, iphasor, kPhOffset ;CREATE MOVING POINTER TO READ FROM BUFFER
kread downsamp aread
kread = kread * ibuflen ;RESCALE READ POINTER WITH PHASOR RANGE SLIDER
aFB init 0
f_anal pvsanal ain+aFB, iFFTsize, ioverlap, iwinsize, iwintype ;ANALYSE THE AUDIO SIGNAL THAT WAS CREATED IN INSTRUMENT 1. OUTPUT AN F-SIGNAL.
ibuffer,ktime pvsbuffer f_anal, ibuflen ;BUFFER FSIG
rireturn
khandle init ibuffer ;INITIALISE HANDLE TO BUFFER
f_buf pvsbufread kread , khandle ;READ BUFFER
f_scale pvscale f_buf, kscale ;RESCALE FREQUENCIES
aresyn pvsynth f_scale ;RESYNTHESIZE THE f-SIGNAL AS AN AUDIO SIGNAL
aFB dcblock2 aresyn * kfeedback ;CREATE FEEDBACK SIGNAL FOR NEXT PASS AND BLOCK DC OFFSET ACCUMULATION
amix ntrpol ain, aresyn, kmix ;CREATE DRY/WET MIX
xout amix*klev
endop

instr 1
ainL,ainR ins
;ainL,ainR diskin "SynthPad.wav",1,0,1 ;USE FOR TESTING
kspeed chnget "speed"
kbuflen chnget "buflen"
ksemis chnget "semis"
kcents chnget "cents"
ksemis init 0
kcents init 0
kscale = semitone(ksemis)*cent(kcents)
kscale init 1
kbuflen init 1
kspeed init 1
kmix chnget "mix"
kfeedback chnget "FB"
klev chnget "lev"
kmix init 1
kfeedback init 0
klev init 0.5

/* 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 pvsbuffer_module ainL,kspeed,kbuflen,kscale,kfeedback,kmix,klev,iFFTsize,ioverlap,iwinsize,iwintype
aoutR pvsbuffer_module ainR,kspeed,kbuflen,kscale,kfeedback,kmix,klev,iFFTsize,ioverlap,iwinsize,iwintype
outs aoutL,aoutR
endin

</CsInstruments>
<CsScore>
i 1 0.1 [60*60*24*7]
</CsScore>
</CsoundSynthesizer>

+ 432
- 0
bin/cabbage/MIDI/MIDI_OUT_MATRIX.csd View File

@@ -0,0 +1,432 @@
<Cabbage>
form size(835, 445), caption("MIDI outbox"), pluginID("plu1")
groupbox bounds(4, 4, 820, 400), colour(2, 2, 2), fontcolour("cornflowerblue"), text("Step Sequencer"), plant("8x16"){
checkbox bounds(11, 25, 49, 30), channel("AA")
checkbox bounds(11, 60, 49, 30), channel("BA")
checkbox bounds(11, 95, 49, 30), channel("CA")
checkbox bounds(11, 130, 49, 30), channel("DA")
checkbox bounds(11, 165, 49, 30), channel("EA")
checkbox bounds(11, 200, 49, 30), channel("FA")
checkbox bounds(11, 235, 49, 30), channel("GA")
checkbox bounds(11, 270, 49, 30), channel("HA")
checkbox bounds(60, 25, 49, 30), channel("AB")
checkbox bounds(60, 60, 49, 30), channel("BB")
checkbox bounds(60, 95, 49, 30), channel("CB")
checkbox bounds(60, 130, 49, 30), channel("DB")
checkbox bounds(60, 165, 49, 30), channel("EB")
checkbox bounds(60, 200, 49, 30), channel("FB")
checkbox bounds(60, 235, 49, 30), channel("GB")
checkbox bounds(60, 270, 49, 30), channel("HB")
checkbox bounds(109, 25, 49, 30), channel("AC")
checkbox bounds(109, 60, 49, 30), channel("BC")
checkbox bounds(109, 95, 49, 30), channel("CC")
checkbox bounds(109, 130, 49, 30), channel("DC")
checkbox bounds(109, 165, 49, 30), channel("EC")
checkbox bounds(109, 200, 49, 30), channel("FC")
checkbox bounds(109, 235, 49, 30), channel("GC")
checkbox bounds(109, 270, 49, 30), channel("HC")
checkbox bounds(160, 25, 49, 30), channel("AD")
checkbox bounds(160, 60, 49, 30), channel("BD")
checkbox bounds(160, 95, 49, 30), channel("CD")
checkbox bounds(160, 130, 49, 30), channel("DD")
checkbox bounds(160, 165, 49, 30), channel("ED")
checkbox bounds(160, 200, 49, 30), channel("FD")
checkbox bounds(160, 235, 49, 30), channel("GD")
checkbox bounds(160, 270, 49, 30), channel("HD")
checkbox bounds(209, 25, 49, 30), channel("AE")
checkbox bounds(209, 60, 49, 30), channel("BE")
checkbox bounds(209, 95, 49, 30), channel("CE")
checkbox bounds(209, 130, 49, 30), channel("DE")
checkbox bounds(209, 165, 49, 30), channel("EE")
checkbox bounds(209, 200, 49, 30), channel("FE")
checkbox bounds(209, 235, 49, 30), channel("GE")
checkbox bounds(209, 270, 49, 30), channel("HE")
checkbox bounds(259, 25, 49, 30), channel("AF")
checkbox bounds(259, 60, 49, 30), channel("BF")
checkbox bounds(259, 95, 49, 30), channel("CF")
checkbox bounds(259, 130, 49, 30), channel("DF")
checkbox bounds(259, 165, 49, 30), channel("EF")
checkbox bounds(259, 200, 49, 30), channel("FF")
checkbox bounds(259, 235, 49, 30), channel("GF")
checkbox bounds(259, 270, 49, 30), channel("HF")
checkbox bounds(308, 25, 49, 30), channel("AG")
checkbox bounds(308, 60, 49, 30), channel("BG")
checkbox bounds(308, 95, 49, 30), channel("CG")
checkbox bounds(308, 130, 49, 30), channel("DG")
checkbox bounds(308, 165, 49, 30), channel("EG")
checkbox bounds(308, 200, 49, 30), channel("FG")
checkbox bounds(308, 235, 49, 30), channel("GG")
checkbox bounds(308, 270, 49, 30), channel("HG")
checkbox bounds(357, 25, 49, 30), channel("AH")
checkbox bounds(357, 60, 49, 30), channel("BH")
checkbox bounds(357, 95, 49, 30), channel("CH")
checkbox bounds(357, 130, 49, 30), channel("DH")
checkbox bounds(357, 165, 49, 30), channel("EH")
checkbox bounds(357, 200, 49, 30), channel("FH")
checkbox bounds(357, 235, 49, 30), channel("GH")
checkbox bounds(357, 270, 49, 30), channel("HH")
checkbox bounds(406, 25, 49, 30), channel("AI")
checkbox bounds(406, 60, 49, 30), channel("BI")
checkbox bounds(406, 95, 49, 30), channel("CI")
checkbox bounds(406, 130, 49, 30), channel("DI")
checkbox bounds(406, 165, 49, 30), channel("EI")
checkbox bounds(406, 200, 49, 30), channel("FI")
checkbox bounds(406, 235, 49, 30), channel("GI")
checkbox bounds(406, 270, 49, 30), channel("HI")
checkbox bounds(455, 25, 49, 30), channel("AJ")
checkbox bounds(455, 60, 49, 30), channel("BJ")
checkbox bounds(455, 95, 49, 30), channel("CJ")
checkbox bounds(455, 130, 49, 30), channel("DJ")
checkbox bounds(455, 165, 49, 30), channel("EJ")
checkbox bounds(455, 200, 49, 30), channel("FJ")
checkbox bounds(455, 235, 49, 30), channel("GJ")
checkbox bounds(455, 270, 49, 30), channel("HJ")
checkbox bounds(506, 25, 49, 30), channel("AK")
checkbox bounds(506, 60, 49, 30), channel("BK")
checkbox bounds(506, 95, 49, 30), channel("CK")
checkbox bounds(506, 130, 49, 30), channel("DK")
checkbox bounds(506, 165, 49, 30), channel("EK")
checkbox bounds(506, 200, 49, 30), channel("FK")
checkbox bounds(506, 235, 49, 30), channel("GK")
checkbox bounds(506, 270, 49, 30), channel("HK")
checkbox bounds(555, 25, 49, 30), channel("AL")
checkbox bounds(555, 60, 49, 30), channel("BL")
checkbox bounds(555, 95, 49, 30), channel("CL")
checkbox bounds(555, 130, 49, 30), channel("DL")
checkbox bounds(555, 165, 49, 30), channel("EL")
checkbox bounds(555, 200, 49, 30), channel("FL")
checkbox bounds(555, 235, 49, 30), channel("GL")
checkbox bounds(555, 270, 49, 30), channel("HL")
checkbox bounds(605, 25, 49, 30), channel("AM")
checkbox bounds(605, 60, 49, 30), channel("BM")
checkbox bounds(605, 95, 49, 30), channel("CM")
checkbox bounds(605, 130, 49, 30), channel("DM")
checkbox bounds(605, 165, 49, 30), channel("EM")
checkbox bounds(605, 200, 49, 30), channel("FM")
checkbox bounds(605, 235, 49, 30), channel("GM")
checkbox bounds(605, 270, 49, 30), channel("HM")
checkbox bounds(654, 25, 49, 30), channel("AN")
checkbox bounds(654, 60, 49, 30), channel("BN")
checkbox bounds(654, 95, 49, 30), channel("CN")
checkbox bounds(654, 130, 49, 30), channel("DN")
checkbox bounds(654, 165, 49, 30), channel("EN")
checkbox bounds(654, 200, 49, 30), channel("FN")
checkbox bounds(654, 235, 49, 30), channel("GN")
checkbox bounds(654, 270, 49, 30), channel("HN")
checkbox bounds(703, 25, 49, 30), channel("AO")
checkbox bounds(703, 60, 49, 30), channel("BO")
checkbox bounds(703, 95, 49, 30), channel("CO")
checkbox bounds(703, 130, 49, 30), channel("DO")
checkbox bounds(703, 165, 49, 30), channel("EO")
checkbox bounds(703, 200, 49, 30), channel("FO")
checkbox bounds(703, 235, 49, 30), channel("GO")
checkbox bounds(703, 270, 49, 30), channel("HO")
checkbox bounds(752, 25, 49, 30), channel("AP")
checkbox bounds(752, 60, 49, 30), channel("BP")
checkbox bounds(752, 95, 49, 30), channel("CP")
checkbox bounds(752, 130, 49, 30), channel("DP")
checkbox bounds(752, 165, 49, 30), channel("EP")
checkbox bounds(752, 200, 49, 30), channel("FP")
checkbox bounds(752, 235, 49, 30), channel("GP")
checkbox bounds(752, 270, 49, 30), channel("HP")
line bounds(4, 302, 800, 2) colour("lime")
checkbox bounds(11, 310, 49, 30), channel("step1"), colour("yellow")
checkbox bounds(60, 310, 49, 30), channel("step2"), colour("yellow")
checkbox bounds(109, 310, 49, 30), channel("step3"), colour("yellow")
checkbox bounds(160, 310, 49, 30), channel("step4"), colour("yellow")
checkbox bounds(209, 310, 49, 30), channel("step5"), colour("yellow")
checkbox bounds(259, 310, 49, 30), channel("step6"), colour("yellow")
checkbox bounds(308, 310, 49, 30), channel("step7"), colour("yellow")
checkbox bounds(357, 310, 49, 30), channel("step8"), colour("yellow")
checkbox bounds(406, 310, 49, 30), channel("step9"), colour("yellow")
checkbox bounds(455, 310, 49, 30), channel("step10"), colour("yellow")
checkbox bounds(506, 310, 49, 30), channel("step11"), colour("yellow")
checkbox bounds(555, 310, 49, 30), channel("step12"), colour("yellow")
checkbox bounds(605, 310, 49, 30), channel("step13"), colour("yellow")
checkbox bounds(654, 310, 49, 30), channel("step14"), colour("yellow")
checkbox bounds(703, 310, 49, 30), channel("step15"), colour("yellow")
checkbox bounds(752, 310, 49, 30), channel("step16"), colour("yellow")
checkbox bounds(688, 355, 164, 30), colour("green"), fontcolour("white"), text("Enable"), channel("enable")
hslider bounds(360, 350, 311, 40), text("BPM"), textbox(1), range(10, 260, 180, 1, 1), channel("bpm")
hslider bounds(16, 350, 328, 40), text("Duration"), textbox(1), range(0.1, 10, 2), channel("duration")
}
</Cabbage>
<CsoundSynthesizer>
<CsOptions>
-n -d -+rtmidi=NULL -m0d -M0 -Q0
</CsOptions>
<CsInstruments>
sr = 44100
ksmps = 64
nchnls = 2
0dbfs=1
;freq 2 midi udo
opcode F2M, i, i
ifq xin
inotenum = round(12 * (log(ifq/220)/log(2)) + 57)
xout inotenum
endop
;simple UDO to toggle the 16 check boxes
opcode toggleCheckBoxes, k, kSSSSSSSSSSSSSSSS
kindex, S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15, S16 xin
kOn = 1
kOff = 0
;turn off all check boxes first..
chnset kOff, S1
chnset kOff, S2
chnset kOff, S3
chnset kOff, S4
chnset kOff, S5
chnset kOff, S6
chnset kOff, S7
chnset kOff, S8
chnset kOff, S9
chnset kOff, S10
chnset kOff, S11
chnset kOff, S12
chnset kOff, S13
chnset kOff, S14
chnset kOff, S15
chnset kOff, S16
if(kindex==0) then
chnset kOn, S1
elseif(kindex==1) then
chnset kOn, S2
elseif(kindex==2) then
chnset kOn, S3
elseif(kindex==3) then
chnset kOn, S4
elseif(kindex==4) then
chnset kOn, S5
elseif(kindex==5) then
chnset kOn, S6
elseif(kindex==6) then
chnset kOn, S7
elseif(kindex==7) then
chnset kOn, S8
elseif(kindex==8) then
chnset kOn, S9
elseif(kindex==9) then
chnset kOn, S10
elseif(kindex==10) then
chnset kOn, S11
elseif(kindex==11) then
chnset kOn, S12
elseif(kindex==12) then
chnset kOn, S13
elseif(kindex==13) then
chnset kOn, S14
elseif(kindex==14) then
chnset kOn, S15
elseif(kindex==15) then
chnset kOn, S16
endif
xout kindex
endop
;init tables to hold hits, for sampler tables see the score
gif1 ftgen 100, 0, 16, 2, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1 , 0, 0, 0, 0
gif2 ftgen 101, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
gif3 ftgen 102, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
gif4 ftgen 103, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
gif5 ftgen 104, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
gif6 ftgen 105, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
gif7 ftgen 106, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
gif8 ftgen 107, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
gif9 ftgen 108, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
gif10 ftgen 109, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
gif11 ftgen 110, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
gif12 ftgen 111, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
gif13 ftgen 112, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
gif14 ftgen 113, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
gif15 ftgen 114, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
gif16 ftgen 115, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
instr 1000
kAA chnget "AA"
kBA chnget "BA"
kCA chnget "CA"
kDA chnget "DA"
kEA chnget "EA"
kFA chnget "FA"
kGA chnget "GA"
kHA chnget "HA"
kAB chnget "AB"
kBB chnget "BB"
kCB chnget "CB"
kDB chnget "DB"
kEB chnget "EB"
kFB chnget "FB"
kGB chnget "GB"
kHB chnget "HB"
kAC chnget "AC"
kBC chnget "BC"
kCC chnget "CC"
kDC chnget "DC"
kEC chnget "EC"
kFC chnget "FC"
kGC chnget "GC"
kHC chnget "HC"
kAD chnget "AD"
kBD chnget "BD"
kCD chnget "CD"
kDD chnget "DD"
kED chnget "ED"
kFD chnget "FD"
kGD chnget "GD"
kHD chnget "HD"
kAE chnget "AE"
kBE chnget "BE"
kCE chnget "CE"
kDE chnget "DE"
kEE chnget "EE"
kFE chnget "FE"
kGE chnget "GE"
kHE chnget "HE"
kAF chnget "AF"
kBF chnget "BF"
kCF chnget "CF"
kDF chnget "DF"
kEF chnget "EF"
kFF chnget "FF"
kGF chnget "GF"
kHF chnget "HF"
kAG chnget "AG"
kBG chnget "BG"
kCG chnget "CG"
kDG chnget "DG"
kEG chnget "EG"
kFG chnget "FG"
kGG chnget "GG"
kHG chnget "HG"
kAH chnget "AH"
kBH chnget "BH"
kCH chnget "CH"
kDH chnget "DH"
kEH chnget "EH"
kFH chnget "FH"
kGH chnget "GH"
kHH chnget "HH"
kAI chnget "AI"
kBI chnget "BI"
kCI chnget "CI"
kDI chnget "DI"
kEI chnget "EI"
kFI chnget "FI"
kGI chnget "GI"
kHI chnget "HI"
kAJ chnget "AJ"
kBJ chnget "BJ"
kCJ chnget "CJ"
kDJ chnget "DJ"
kEJ chnget "EJ"
kFJ chnget "FJ"
kGJ chnget "GJ"
kHJ chnget "HJ"
kAK chnget "AK"
kBK chnget "BK"
kCK chnget "CK"
kDK chnget "DK"
kEK chnget "EK"
kFK chnget "FK"
kGK chnget "GK"
kHK chnget "HK"
kAL chnget "AL"
kBL chnget "BL"
kCL chnget "CL"
kDL chnget "DL"
kEL chnget "EL"
kFL chnget "FL"
kGL chnget "GL"
kHL chnget "HL"
kAM chnget "AM"
kBM chnget "BM"
kCM chnget "CM"
kDM chnget "DM"
kEM chnget "EM"
kFM chnget "FM"
kGM chnget "GM"
kHM chnget "HM"
kAN chnget "AN"
kBN chnget "BN"
kCN chnget "CN"
kDN chnget "DN"
kEN chnget "EN"
kFN chnget "FN"
kGN chnget "GN"
kHN chnget "HN"
kAO chnget "AO"
kBO chnget "BO"
kCO chnget "CO"
kDO chnget "DO"
kEO chnget "EO"
kFO chnget "FO"
kGO chnget "GO"
kHO chnget "HO"
kAP chnget "AP"
kBP chnget "BP"
kCP chnget "CP"
kDP chnget "DP"
kEP chnget "EP"
kFP chnget "FP"
kGP chnget "GP"
kHP chnget "HP"
event "f", 100, 0, 16, 2, kAA, kAB, kAC, kAD, kAE, kAF, kAG, kAH, kAI, kAJ, kAK, kAL, kAM, kAN, kAO, kAP
event "f", 101, 0, 16, 2, kBA, kBB, kBC, kBD, kBE, kBF, kBG, kBH, kBI, kBJ, kBK, kBL, kBM, kBN, kBO, kBP
event "f", 102, 0, 16, 2, kCA, kCB, kCC, kCD, kCE, kCF, kCG, kCH, kCI, kCJ, kCK, kCL, kCM, kCN, kCO, kCP
event "f", 103, 0, 16, 2, kDA, kDB, kDC, kDD, kDE, kDF, kDG, kDH, kDI, kDJ, kDK, kDL, kDM, kDN, kDO, kDP
event "f", 104, 0, 16, 2, kEA, kEB, kEC, kED, kEE, kEF, kEG, kEH, kEI, kEJ, kEK, kEL, kEM, kEN, kEO, kEP
event "f", 105, 0, 16, 2, kFA, kFB, kFC, kFD, kFE, kFF, kFG, kFH, kFI, kFJ, kFK, kFL, kFM, kFN, kFO, kFP
event "f", 106, 0, 16, 2, kGA, kGB, kGC, kGD, kGE, kGF, kGG, kGH, kGI, kGJ, kGK, kGL, kGM, kGN, kGO, kGP
event "f", 107, 0, 16, 2, kHA, kHB, kHC, kHD, kHE, kHF, kHG, kHH, kHI, kHJ, kHK, kHL, kHM, kHN, kHO, kHP
endin
instr 2000
kGO chnget "enable"
if(kGO==1) then
iNumTables = 8
kIndex, kIncr, kNoteTable init 0
ktempo chnget "bpm"
kDuration chnget "duration"
kTrig metro ktempo/60 ;trig notes every 1/5 of a second
if(kTrig==1) then
Main_Loop:
k1 tablekt kIncr, kIndex+100
event "i", 1, 0, kDuration, k1, kIndex
loop_lt kIndex, 1, iNumTables, Main_Loop
kDummy toggleCheckBoxes, kIncr, "step1", "step2", "step3", "step4", "step5", "step6", "step7", "step8", "step9", "step10", "step11", "step12", "step13", "step14", "step15", "step16"
kIncr = (kIncr>14 ? 0 : kIncr+1)
kIndex=0
endif
endif
endin
instr 1
if(p4!=0)then
iNote tab_i p5, 1
iMIDINote F2M cpspch(iNote+8)
noteondur 1, iMIDINote, 20, p3
;midiout 176, 1, 1, 1
endif
endin
</CsInstruments>
<CsScore>
f1 0 8 -2 1 .11 .09 .07 .05 .04 .02 .00
i1000 1 1000
i2000 1 1000
</CsScore>
</CsoundSynthesizer>

+ 160
- 0
bin/cabbage/Synths/Additive.csd View File

@@ -0,0 +1,160 @@
<Cabbage>
form caption("Additive synthesizer") size(562, 340), colour("black"),pluginID("add1")
rslider bounds(15, 10, 100, 100) channel("speed"), range(1,10,2), caption("Speed"), colour("lime ")
rslider bounds(120, 10, 100, 100) channel("semi"), range(-12,12,0), caption("Coarse"), colour("lime ")
rslider bounds(225, 10, 100, 100) channel("partials"), range(3,8,4), caption("Partials"), colour("lime ")
rslider bounds(330, 10, 100, 100) caption("Vib Amp"), colour("lime "), channel("lfoamp"), range(0,20, 0)
rslider bounds(435, 10, 100, 100) caption("Vib Rate"), colour("lime "), channel("lforate"), range(0,20, 0)

groupbox bounds(15, 120, 240, 100), text("ADSR amplitude"), plant("ADSR"){
rslider bounds(0, .3, .6, .6), text("A"), colour("lime"), channel("att"), range(0.01,3, .5)
rslider bounds(.25, .3, .6, .6), text("D"), colour("lime "), channel("dec"), range(0,1, .5)
rslider bounds(.5, .3, .6, .6), text("S"), colour("lime "), channel("sus"), range(0,1,.8)
rslider bounds(.75, .3, .6, .6), text("R"), colour("lime "), channel("rel"), range(0.01,3, .2)
}
groupbox bounds(285, 120, 250, 100), text("Filter/Reverb"), plant("filtrev"){
rslider bounds(0, .3, .6, .6), text("cutoff"), colour("lime "), channel("cutoff"), range(200,8000,1000)
rslider bounds(.25, .3, .6, .6),text("level"), colour("lime "), channel("level"), range(0,1,.7)
rslider bounds(.5, .3, .6, .6), text("size"), colour("lime "), channel("size"), range(.1,.99,.8)
checkbox bounds(.75, .40, .60, .30),channel("onoff"), text("ON"), value(0)
}

keyboard pos(10, 240), size(540, 60)
</Cabbage>
<CsoundSynthesizer>
<CsOptions>
-d -n -+rtmidi=null -M0 -b1024 -m0d
</CsOptions>
<CsInstruments>
sr = 44100
ksmps = 32
nchnls = 2
0dbfs = 1

;Author: Giorgio Zucco (2012)
garev init 0


instr 1

;channel
kspeed chnget "speed"
ksemi1 chnget "semi"
ktable chnget "partials"
iatt chnget "att"
idec chnget "dec"
isus chnget "sus"
irel chnget "rel"
klfoamp chnget "lfoamp"
klforate chnget "lforate"
kcutoff chnget "cutoff"

;midi
imidinn notnum
iamp ampmidi 1
kbend pchbend 0,2 ;pitch bend
kbasefreq = cpsmidinn(imidinn+kbend+int(ksemi1)) ;controllo midi

;vibrato
klfo vibr klfoamp,klforate,1

;additive
kpartial init 3
iamptab = 2 ;tabella ampiezze
kpartial = int(ktable) ;tabella parziali

ktrig changed kpartial
if ktrig = 1 then
reinit play
endif
play:

k1 randomh 1,7,kspeed ;indice della tabella letto in modo casuale
k2 randomh 1,7,kspeed-.9 ;simile ad un arpeggio di armonici con rate indipendente
k3 randomh 1,7,kspeed-.8
k4 randomh 1,7,kspeed-.7
k5 randomh 1,7,kspeed-.6
k6 randomh 1,7,kspeed-.5
k7 randomh 1,7,kspeed-.4

;tabella delle parziali
kfreqtable1 table k1,i(kpartial)
kfreqtable2 table k2,i(kpartial)
kfreqtable3 table k3,i(kpartial)
kfreqtable4 table k4,i(kpartial)
kfreqtable5 table k5,i(kpartial)
kfreqtable6 table k6,i(kpartial)
kfreqtable7 table k7,i(kpartial)

;tabella ampiezze
iamptable1 table 1,iamptab
iamptable2 table 2,iamptab
iamptable3 table 3,iamptab
iamptable4 table 4,iamptab
iamptable5 table 5,iamptab
iamptable6 table 6,iamptab
iamptable7 table 7,iamptab

;otto oscillatori
a1 poscil iamp*2,(kbasefreq+klfo),1 ;frequenza fondamentale
a2 poscil iamp*iamptable1,((kbasefreq+klfo)+klfo)*kfreqtable1,1
a3 poscil iamp*iamptable2,(kbasefreq+klfo)*kfreqtable2,1
a4 poscil iamp*iamptable3,(kbasefreq+klfo)*kfreqtable3,1
a5 poscil iamp*iamptable4,(kbasefreq+klfo)*kfreqtable4,1
a6 poscil iamp*iamptable5,(kbasefreq+klfo)*kfreqtable5,1
a7 poscil iamp*iamptable6,(kbasefreq+klfo)*kfreqtable6,1
a8 poscil iamp*iamptable7,(kbasefreq+klfo)*kfreqtable7,1


asum sum a1,a2,a3,a4,a5,a6,a7,a8 ;somma degli oscillatori

afilt clfilt asum/8,kcutoff,0,4
aout clip afilt,0,0dbfs
kenv mxadsr iatt,idec,isus,irel

outs aout*kenv,aout*kenv ;uscita con inviluppo
vincr garev,aout*kenv

endin

instr 3 ;reverb
ktrig chnget "onoff"
klevel chnget "level"
ksize chnget "size"
if ktrig = 1 then
al,ar reverbsc garev,garev,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 garev
endin


</CsInstruments>
<CsScore>
f1 0 16384 10 1
f2 0 -7 -2 .9 .8 .7 .6 .5 .4 .3 .2 ;ampiezze parziali

f3 0 -7 -2 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 ;parziali
f4 0 -7 -2 1 2 3 4 5 6 7 8
f5 0 -7 -2 1 1.2 1.4 1.6 1.8 2 2.4 2.6
f6 0 -7 -2 1 2 4 5 7 8 10 11
f7 0 -7 -2 1 1.3 1.5 1.7 1.9 2.11 3.13 4.15
f8 0 -7 -2 1 1 3 5 7 9 11 13

i1 0 36000
i3 0 36000
</CsScore>
</CsoundSynthesizer>

+ 80
- 0
bin/cabbage/Synths/CrazyPluck.csd View File

@@ -0,0 +1,80 @@
<Cabbage>
form caption("CrazyPluck"), size(300, 220), pluginID("cra1")
groupbox bounds(0, 0, 300, 100), text("Parameters"), plant("control1"){
rslider bounds(.05, .3, .6, .6), text("ratio"), colour("white"), channel("ratio"), range(1, 1.2,1)
rslider bounds(.28, .3, .6, .6), text("time"), colour("white"), channel("time"), range(.001,.1,.1)
rslider bounds(.52, .3, .6, .6), text("random"), colour("white"), channel("random"), range(.001,.1,0)
rslider bounds(.75, .3, .6, .6), text("Event number"), colour("white"), channel("number"), range(1,50,10)
}
keyboard bounds(0, 110, 300, 70)
</Cabbage>
<CsoundSynthesizer>
<CsOptions>
-n -d -m0d -+rtmidi=NULL -M0
</CsOptions>
<CsInstruments>

;Author: Giorgio Zucco (2012)


sr = 44100
ksmps = 32
nchnls = 2
0dbfs = 1


instr 1

giamp ampmidi 1 ;controllo midi
gifreq cpsmidi

instrument = 10 ;strumento da controllare
inum=1 ;per attivare la sezione loop
idelay = 0
inumber chnget "number" ;numero di eventi da generare
idur = 2 ;durata evento
iratio chnget "ratio" ;1,1,1,1.2 ;slider che controlla il pitch transpose
itime chnget "time" ;1,2,.001,.1 ;slider che controlla il delay tra un evento e il successivo
irndtime chnget "random" ;1,3,.001,.1 ;slider che controlla la variazione random del ritardo

loop: ;inizia la sezione da reiterare

gifreq = gifreq*iratio ;pitch controllato da slider 1
idelay = idelay+itime+rnd(irndtime) ;delay controllato da slider 2 e 3

event_i "i",instrument,idelay,idur,giamp,gifreq,abs(inumber)

loop_le inum,1,abs(inumber),loop ;ripete il processo per 20 istanze (inumber)

endin


instr 10

;a1 pluck (p4*1-p6)/p6,p5,p5,0,1
ival = (p4*1-p6)
a1 pluck ival/p6,p5,p5,0,1

; Or using the new csound 6 function syntax
;a1 = pluck((p4*1-p6)/p6,p5,p5,0,1)


aout clip a1,0,0dbfs
kenv adsr 0.01,.5,.2,.1 ;inviluppo

outs aout*kenv,aout*kenv

endin

</CsInstruments>
<CsScore>

;i1 0 36000
f0 36000



</CsScore>
</CsoundSynthesizer>

+ 54
- 0
bin/cabbage/Synths/Dust.csd View File

@@ -0,0 +1,54 @@
<Cabbage>
form caption("Dust"), size(300, 80), pluginID("dust")
image bounds( 0, 0,300, 80), colour("brown"), shape("rounded"), outline("white"), line(4)
checkbox bounds( 10, 10, 80, 15), text("On/Off"), channel("onoff"), value(1), fontcolour("white")
rslider bounds( 70, 10, 60, 60), text("Amplitude"), channel("amp"), range(0, 1.00, 0.5, 0.5, 0.001), fontcolour("white")
rslider bounds(125, 10, 60, 60), text("Freq."), channel("freq"), range(0.1, 10000, 500, 0.5, 0.01), fontcolour("white")
rslider bounds(180, 10, 60, 60), text("Spread"), channel("spread"), range(0, 1.00, 1), fontcolour("white")
rslider bounds(235, 10, 60, 60), text("Tone Var."), channel("ToneVar"), range(0, 1.00, 0), fontcolour("white")
</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
kamp chnget "amp"
kfreq chnget "freq"
kspread chnget "spread"
asig dust2 kamp, kfreq ;GENERATE 'dust2' IMPULSES

; tone variation
kToneVar chnget "ToneVar"
if(kToneVar>0) then
kcfoct random 14-(kToneVar*10),14
asig tonex asig,cpsoct(kcfoct),1
endif


kpan random 0.5-(kspread*0.5), 0.5+(kspread*0.5)
asigL,asigR pan2 asig,kpan
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>

+ 135
- 0
bin/cabbage/Synths/HiperSaw.csd View File

@@ -0,0 +1,135 @@
<Cabbage>
form caption("HiperSaw synthesizer") size(552, 330), colour("black"),pluginID("hip1")
rslider bounds(15, 10, 100, 100) channel("detune"), range(0,1,.5), caption("Depth"), 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(0.05, .30, .60, .60), text("Lfo Amp"), colour("orange"), channel("lfoamp"), range(0,100, 0)
rslider bounds(.5, .30, .60, .60), text("Lfo Rate"), colour("orange"), channel("lforate"), range(0,20, 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(0.05, .30, .60, .60), text("Lfo Amp"), colour("orange"), channel("lfoamp2"), range(0,1000, 0)
rslider bounds(.5, .30, .60, .60), 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(1, 240), size(550, 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)

;UDO Hipersaw
opcode Hipersaw2,a,kkki

kamp,kcps,kdetune,ifunc xin

krnd1 poscil kdetune,.1,ifunc
krnd2 poscil kdetune,.2,ifunc
krnd3 poscil kdetune,.3,ifunc
krnd4 poscil kdetune,.4,ifunc
krnd5 poscil kdetune,.5,ifunc
krnd6 poscil kdetune,.6,ifunc
krnd7 poscil kdetune,.7,ifunc
krnd8 poscil kdetune,.8,ifunc

a1 vco2 kamp,kcps,0
a2 vco2 kamp,kcps+kdetune,0
a3 vco2 kamp,kcps+(kdetune+krnd1)*.1,0
a4 vco2 kamp,kcps+(kdetune+krnd2)*.1,0
a5 vco2 kamp,kcps+(kdetune+krnd3)*.1,0
a6 vco2 kamp,kcps+(kdetune+krnd4)*.1,0
a7 vco2 kamp,kcps+(kdetune+krnd5)*.1,0
a8 vco2 kamp,kcps+(kdetune+krnd6)*.1,0
a9 vco2 kamp,kcps+(kdetune+krnd7)*.1,0
a10 vco2 kamp,kcps+(kdetune+krnd8)*.1,0


asum sum a1,a2,a3,a4,a5,a6,a7,a8,a9,a10


xout asum*.3 ; write output

endop


instr 1

;channel
kdrive chnget "detune"
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
kfreq1 = cpsmidinn(imidinn+kbend+int(ksemi1)) ;controllo midi
kfreq2 = cpsmidinn(imidinn+kbend+int(ksemi1)) ;controllo midi + detune

;lfo
klfo poscil klfoamp,klforate,1
;hipersaw waveform
asig1 Hipersaw2 iamp,(kfreq1+klfo),kdrive*8,1
asig2 Hipersaw2 iamp,(kfreq2+klfo),(1-kdrive*8),1

;filter
klfofilter lfo klfoamp2,klforate2,3
aout1 moogladder asig1,kcut+klfofilter,kreso
aout2 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 mxadsr iatt,idec,isus,irel

outs aoutL*kadsr,aoutR*kadsr

endin



</CsInstruments>
<CsScore>
f1 0 4096 10 1
i1 0 36000
</CsScore>
</CsoundSynthesizer>

+ 41
- 0
bin/cabbage/Synths/WhiteNoise.csd View File

@@ -0,0 +1,41 @@
<Cabbage>
form caption("White Noise"), size(210, 80), pluginID("wnse")
image bounds( 0, 0,210, 80), colour("white"), shape("rounded"), outline("black"), line(4)
checkbox bounds( 20, 10, 80, 15), text("On/Off"), channel("onoff"), value(1), fontcolour("black")
rslider bounds( 80, 10, 60, 60), text("Amplitude"), channel("amp"), range(0, 1, 0.1, 0.5, 0.001), fontcolour("black"), trackercolour("grey")
rslider bounds(140, 10, 60, 60), text("Beta"), channel("beta"), range(-0.999, 0.999,0,1,0.001), fontcolour("black") , trackercolour("grey")
</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
kamp chnget "amp" ;read in widgets...
kbeta chnget "beta" ;
asigL noise kamp, kbeta ;GENERATE WHITE NOISE
asigR noise kamp, kbeta ;GENERATE WHITE NOISE
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>

+ 612
- 0
bin/cabbage/Synths/bassline.csd View File

@@ -0,0 +1,612 @@
<Cabbage>
form caption("Bassline") size(615, 250), pluginID("basl")

snapshot bounds( 80,185,200, 20), preset("bassline"), items("Preset 1", "Preset 2", "Preset 3", "Preset 4", "Preset 5", "Preset 6", "Preset 7", "Preset 8", "Preset 9", "Preset 10")

image bounds( 0, 0,615,220), colour("grey"), shape("rounded"), outline("white"), line(4)
checkbox bounds( 64, 8, 4, 4), channel("Act1"), value(0), colour("yellow"), shape("ellipse")
checkbox bounds( 99, 8, 4, 4), channel("Act2"), value(0), colour("yellow"), shape("ellipse")
checkbox bounds(134, 8, 4, 4), channel("Act3"), value(0), colour("yellow"), shape("ellipse")
checkbox bounds(169, 8, 4, 4), channel("Act4"), value(0), colour("yellow"), shape("ellipse")
checkbox bounds(204, 8, 4, 4), channel("Act5"), value(0), colour("yellow"), shape("ellipse")
checkbox bounds(239, 8, 4, 4), channel("Act6"), value(0), colour("yellow"), shape("ellipse")
checkbox bounds(274, 8, 4, 4), channel("Act7"), value(0), colour("yellow"), shape("ellipse")
checkbox bounds(309, 8, 4, 4), channel("Act8"), value(0), colour("yellow"), shape("ellipse")
checkbox bounds(344, 8, 4, 4), channel("Act9"), value(0), colour("yellow"), shape("ellipse")
checkbox bounds(379, 8, 4, 4), channel("Act10"), value(0), colour("yellow"), shape("ellipse")
checkbox bounds(414, 8, 4, 4), channel("Act11"), value(0), colour("yellow"), shape("ellipse")
checkbox bounds(449, 8, 4, 4), channel("Act12"), value(0), colour("yellow"), shape("ellipse")
checkbox bounds(484, 8, 4, 4), channel("Act13"), value(0), colour("yellow"), shape("ellipse")
checkbox bounds(519, 8, 4, 4), channel("Act14"), value(0), colour("yellow"), shape("ellipse")
checkbox bounds(554, 8, 4, 4), channel("Act15"), value(0), colour("yellow"), shape("ellipse")
checkbox bounds(589, 8, 4, 4), channel("Act16"), value(0), colour("yellow"), shape("ellipse")

label bounds( 10, 23, 40, 12), text("Note"), FontColour("black"), colour("black")
rslider bounds( 45, 15, 45, 45), text("1"), FontColour("black"), channel("Note1"), range(24, 96, 60, 1, 1), preset("bassline")
rslider bounds( 80, 15, 45, 45), text("2"), channel("Note2"), FontColour("black"), range(24, 96, 60, 1, 1), preset("bassline")
rslider bounds(115, 15, 45, 45), text("3"), channel("Note3"), FontColour("black"), range(24, 96, 60, 1, 1), preset("bassline")
rslider bounds(150, 15, 45, 45), text("4"), channel("Note4"), FontColour("black"), range(24, 96, 60, 1, 1), preset("bassline")
rslider bounds(185, 15, 45, 45), text("5"), channel("Note5"), FontColour("black"), range(24, 96, 60, 1, 1), preset("bassline")
rslider bounds(220, 15, 45, 45), text("6"), channel("Note6"), FontColour("black"), range(24, 96, 60, 1, 1), preset("bassline")
rslider bounds(255, 15, 45, 45), text("7"), channel("Note7"), FontColour("black"), range(24, 96, 60, 1, 1), preset("bassline")
rslider bounds(290, 15, 45, 45), text("8"), channel("Note8"), FontColour("black"), range(24, 96, 60, 1, 1), preset("bassline")
rslider bounds(325, 15, 45, 45), text("9"), channel("Note9"), FontColour("black"), range(24, 96, 60, 1, 1), preset("bassline")
rslider bounds(360, 15, 45, 45), text("10"), channel("Note10"), FontColour("black"), range(24, 96, 60, 1, 1), preset("bassline")
rslider bounds(395, 15, 45, 45), text("11"), channel("Note11"), FontColour("black"), range(24, 96, 60, 1, 1), preset("bassline")
rslider bounds(430, 15, 45, 45), text("12"), channel("Note12"), FontColour("black"), range(24, 96, 60, 1, 1), preset("bassline")
rslider bounds(465, 15, 45, 45), text("13"), channel("Note13"), FontColour("black"), range(24, 96, 60, 1, 1), preset("bassline")
rslider bounds(500, 15, 45, 45), text("14"), channel("Note14"), FontColour("black"), range(24, 96, 60, 1, 1), preset("bassline")
rslider bounds(535, 15, 45, 45), text("15"), channel("Note15"), FontColour("black"), range(24, 96, 60, 1, 1), preset("bassline")
rslider bounds(570, 15, 45, 45), text("16"), channel("Note16"), FontColour("black"), range(24, 96, 60, 1, 1), preset("bassline")

label bounds( 10, 62, 40, 12), text("On/Off"), colour("black"), FontColour("black")
checkbox bounds( 61, 62, 12, 12), channel("On1"), value(0), preset("bassline")
checkbox bounds( 96, 62, 12, 12), channel("On2"), value(0), preset("bassline")
checkbox bounds(131, 62, 12, 12), channel("On3"), value(0), preset("bassline")
checkbox bounds(166, 62, 12, 12), channel("On4"), value(0), preset("bassline")
checkbox bounds(201, 62, 12, 12), channel("On5"), value(0), preset("bassline")
checkbox bounds(236, 62, 12, 12), channel("On6"), value(0), preset("bassline")
checkbox bounds(271, 62, 12, 12), channel("On7"), value(0), preset("bassline")
checkbox bounds(306, 62, 12, 12), channel("On8"), value(0), preset("bassline")
checkbox bounds(341, 62, 12, 12), channel("On9"), value(0), preset("bassline")
checkbox bounds(376, 62, 12, 12), channel("On10"), value(0), preset("bassline")
checkbox bounds(411, 62, 12, 12), channel("On11"), value(0), preset("bassline")
checkbox bounds(446, 62, 12, 12), channel("On12"), value(0), preset("bassline")
checkbox bounds(481, 62, 12, 12), channel("On13"), value(0), preset("bassline")
checkbox bounds(516, 62, 12, 12), channel("On14"), value(0), preset("bassline")
checkbox bounds(551, 62, 12, 12), channel("On15"), value(0), preset("bassline")
checkbox bounds(586, 62, 12, 12), channel("On16"), value(0), preset("bassline")

label bounds( 11, 80, 40, 12), text("Hold"), colour("black"), FontColour("black")
checkbox bounds( 61, 80, 12, 12), channel("Hold1"), value(0), preset("bassline")
checkbox bounds( 96, 80, 12, 12), channel("Hold2"), value(0), preset("bassline")
checkbox bounds(131, 80, 12, 12), channel("Hold3"), value(0), preset("bassline")
checkbox bounds(166, 80, 12, 12), channel("Hold4"), value(0), preset("bassline")
checkbox bounds(201, 80, 12, 12), channel("Hold5"), value(0), preset("bassline")
checkbox bounds(236, 80, 12, 12), channel("Hold6"), value(0), preset("bassline")
checkbox bounds(271, 80, 12, 12), channel("Hold7"), value(0), preset("bassline")
checkbox bounds(306, 80, 12, 12), channel("Hold8"), value(0), preset("bassline")
checkbox bounds(341, 80, 12, 12), channel("Hold9"), value(0), preset("bassline")
checkbox bounds(376, 80, 12, 12), channel("Hold10"), value(0), preset("bassline")
checkbox bounds(411, 80, 12, 12), channel("Hold11"), value(0), preset("bassline")
checkbox bounds(446, 80, 12, 12), channel("Hold12"), value(0), preset("bassline")
checkbox bounds(481, 80, 12, 12), channel("Hold13"), value(0), preset("bassline")
checkbox bounds(516, 80, 12, 12), channel("Hold14"), value(0), preset("bassline")
checkbox bounds(551, 80, 12, 12), channel("Hold15"), value(0), preset("bassline")
checkbox bounds(586, 80, 12, 12), channel("Hold16"), value(0), preset("bassline")

label bounds( 11, 98, 40, 12), text("Accent"), colour("black"), FontColour("black")
checkbox bounds( 61, 98, 12, 12), channel("Acc1"), value(0), preset("bassline")
checkbox bounds( 96, 98, 12, 12), channel("Acc2"), value(0), preset("bassline")
checkbox bounds(131, 98, 12, 12), channel("Acc3"), value(0), preset("bassline")
checkbox bounds(166, 98, 12, 12), channel("Acc4"), value(0), preset("bassline")
checkbox bounds(201, 98, 12, 12), channel("Acc5"), value(0), preset("bassline")
checkbox bounds(236, 98, 12, 12), channel("Acc6"), value(0), preset("bassline")
checkbox bounds(271, 98, 12, 12), channel("Acc7"), value(0), preset("bassline")
checkbox bounds(306, 98, 12, 12), channel("Acc8"), value(0), preset("bassline")
checkbox bounds(341, 98, 12, 12), channel("Acc9"), value(0), preset("bassline")
checkbox bounds(376, 98, 12, 12), channel("Acc10"), value(0), preset("bassline")
checkbox bounds(411, 98, 12, 12), channel("Acc11"), value(0), preset("bassline")
checkbox bounds(446, 98, 12, 12), channel("Acc12"), value(0), preset("bassline")
checkbox bounds(481, 98, 12, 12), channel("Acc13"), value(0), preset("bassline")
checkbox bounds(516, 98, 12, 12), channel("Acc14"), value(0), preset("bassline")
checkbox bounds(551, 98, 12, 12), channel("Acc15"), value(0), preset("bassline")
checkbox bounds(586, 98, 12, 12), channel("Acc16"), value(0), preset("bassline")

button bounds( 10,120, 60, 25), colour("Green"), text("Run","Stop"), channel("OnOff"), value(1)
combobox bounds( 10,150, 60, 15), channel("Waveform"), value(1), text("saw","square","triangle","PWM","noise"), preset("bassline")
rslider bounds( 20,170, 40, 40), text("P.W."), channel("pw"), range(0.01,0.99, 0.25), preset("bassline"), FontColour("black")
rslider bounds( 70,120, 60, 60), text("Vol."), channel("Vol"), range(0, 5.00, 1), preset("bassline"), FontColour("black")
rslider bounds(120,120, 60, 60), text("Cutoff"), channel("CfBase"), range(4.00, 14, 8), preset("bassline"), FontColour("black")
rslider bounds(170,120, 60, 60), text("Env.Mod"), channel("CfEnv"), range(0, 10.00, 4), preset("bassline"), FontColour("black")
rslider bounds(220,120, 60, 60), text("Res."), channel("Res"), range(0,0.98, .4), preset("bassline"), FontColour("black")
rslider bounds(270,120, 60, 60), text("Dist."), channel("Dist"), range(0,1.00, 0), preset("bassline"), FontColour("black")
rslider bounds(320,120, 60, 60), text("Decay"), channel("Decay"), range(0.10, 5, .3, 0.25), preset("bassline"), FontColour("black")
rslider bounds(370,120, 60, 60), text("Accent"), channel("Accent"), range(0, 1.00, .5), preset("bassline"), FontColour("black")
rslider bounds(420,120, 60, 60), text("Tempo"), channel("Tempo"), range(1, 500, 110, 1, 1), FontColour("black"), FontColour("black")
button bounds(480,120, 60, 15), text("Reset"), channel("Reset"), value(0)
button bounds(540,120, 60, 15), text("Random"), channel("Rnd"), value(0)
button bounds(480,140, 60, 15), text("-semi"), channel("SemiDn"), value(0)
button bounds(540,140, 60, 15), text("+semi"), channel("SemiUp"), value(0)
button bounds(480,160, 60, 15), text("-oct"), channel("OctDn"), value(0)
button bounds(540,160, 60, 15), text("+oct"), channel("OctUp"), value(0)

button bounds(280, 185, 80, 20), text("Internal","External"), channel("ClockSource"), value(0)
label bounds(285, 205, 80, 12), text("Clock Source"), FontColour("black")

image bounds(5, 225, 330, 20), colour(75, 85, 90, 100), plant("credit"){
label bounds(0.03, 0.1, .6, .7), text("Author: Iain McCurdy |2012|"), colour("white")
}

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
seed 0
;Author: Iain McCurdy (2012)

opcode moogladdersr,a,akk
asig,kcf,kres xin
setksmps 1
acf interp kcf
kcf downsamp acf
asig moogladder asig, kcf, kres
xout asig
endop

opcode resonsr,a,akki
asig,kcf,kbw,iscal xin
setksmps 1
acf interp kcf
kcf downsamp acf
abw interp kbw
kbw downsamp abw
asig reson asig, kcf, kbw,iscal
xout asig
endop

instr 1 ;BASSLINE INSTRUMENT
kporttime linseg 0,0.001,0.01 ;PORTAMENTO TIME RAMPS UP QUICKLY FROM ZERO TO A HELD VALUE
;READ IN WIDGETS...
gkOnOff chnget "OnOff"
gkNote1 chnget "Note1"
gkNote2 chnget "Note2"
gkNote3 chnget "Note3"
gkNote4 chnget "Note4"
gkNote5 chnget "Note5"
gkNote6 chnget "Note6"
gkNote7 chnget "Note7"
gkNote8 chnget "Note8"
gkNote9 chnget "Note9"
gkNote10 chnget "Note10"
gkNote11 chnget "Note11"
gkNote12 chnget "Note12"
gkNote13 chnget "Note13"
gkNote14 chnget "Note14"
gkNote15 chnget "Note15"
gkNote16 chnget "Note16"
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"
gkHold1 chnget "Hold1"
gkHold2 chnget "Hold2"
gkHold3 chnget "Hold3"
gkHold4 chnget "Hold4"
gkHold5 chnget "Hold5"
gkHold6 chnget "Hold6"
gkHold7 chnget "Hold7"
gkHold8 chnget "Hold8"
gkHold9 chnget "Hold9"
gkHold10 chnget "Hold10"
gkHold11 chnget "Hold11"
gkHold12 chnget "Hold12"
gkHold13 chnget "Hold13"
gkHold14 chnget "Hold14"
gkHold15 chnget "Hold15"
gkHold16 chnget "Hold16"
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"
gkVol chnget "Vol"
gkCfBase chnget "CfBase"
gkCfBase portk gkCfBase,kporttime*5
gkCfEnv chnget "CfEnv"
gkCfEnv portk gkCfEnv,kporttime*5
gkRes chnget "Res"
gkDist chnget "Dist"
gkDecay chnget "Decay"
gkAccent chnget "Accent"
gkWaveform chnget "Waveform"
kpw chnget "pw"
gkReset chnget "Reset"
gkRnd chnget "Rnd"
kSemiDn chnget "SemiDn"
kSemiUp chnget "SemiUp"
kOctDn chnget "OctDn"
kOctUp chnget "OctUp"
kClockSource chnget "ClockSource"
if kClockSource==0 then
gkTempo chnget "Tempo"
else
gkTempo chnget "bpm"
gkTempo limit gkTempo,1,2000
endif
kNonActive init 0
kStop trigger gkOnOff,0.5,1 ; IS LOOP PLAYING TURNED OFF...
if kStop==1 then
chnset kNonActive,"Act1"
chnset kNonActive,"Act2"
chnset kNonActive,"Act3"
chnset kNonActive,"Act4"
chnset kNonActive,"Act5"
chnset kNonActive,"Act6"
chnset kNonActive,"Act7"
chnset kNonActive,"Act8"
chnset kNonActive,"Act9"
chnset kNonActive,"Act10"
chnset kNonActive,"Act11"
chnset kNonActive,"Act12"
chnset kNonActive,"Act13"
chnset kNonActive,"Act14"
chnset kNonActive,"Act15"
chnset kNonActive,"Act16"
reinit RESET_LOOP
endif
RESET_LOOP:

if gkOnOff==0 kgoto SKIP
kPhFreq = gkTempo/240 ;FREQUENCY WITH WHICH TO REPEAT THE ENTIRE PHRASE
kBtFreq = gkTempo/15 ;FREQUENCY OF EACH 1/16TH NOTE
kNewNote metro kBtFreq ;GENERATES A TRIGGER FOR EACH BEAT
;ENVELOPES WITH HELD SEGMENTS
; freq trig ph NOTE:1 (dur) 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 DUMMY
kNoteLoop lpshold kPhFreq, 0, 0, gkNote1, 1, gkNote2, 1, gkNote3, 1, gkNote4, 1, gkNote5, 1, gkNote6, 1, gkNote7, 1, gkNote8, 1, gkNote9, 1, gkNote10, 1, gkNote11, 1, gkNote12, 1, gkNote13, 1, gkNote4, 1, gkNote15, 1, gkNote16, 1 ;,gkNote1 ;NEED AN EXTRA 'DUMMY' VALUE
kOn lpshold kPhFreq, 0, 0, gkOn1, 1, gkOn2, 1, gkOn3, 1, gkOn4, 1, gkOn5, 1, gkOn6, 1, gkOn7, 1, gkOn8, 1, gkOn9, 1, gkOn10, 1, gkOn11, 1, gkOn12, 1, gkOn13, 1, gkOn14, 1, gkOn15, 1, gkOn16, 1 ;,1 ;NEED AN EXTRA 'DUMMY' VALUE
kAcc lpshold kPhFreq, 0, 0, gkAcc1, 1, gkAcc2, 1, gkAcc3, 1, gkAcc4, 1, gkAcc5, 1, gkAcc6, 1, gkAcc7, 1, gkAcc8, 1, gkAcc9, 1, gkAcc10, 1, gkAcc11, 1, gkAcc12, 1, gkAcc13, 1, gkAcc14, 1, gkAcc15, 1, gkAcc16, 1 ;,1 ;NEED AN EXTRA 'DUMMY' VALUE
kHoldLoop lpshold kPhFreq, 0, 0, gkHold1, 1, gkHold2, 1, gkHold3, 1, gkHold4, 1, gkHold5, 1, gkHold6, 1, gkHold7, 1, gkHold8, 1, gkHold9, 1, gkHold10, 1, gkHold11, 1, gkHold12, 1, gkHold13, 1, gkHold14, 1, gkHold15, 1, gkHold16, 1 ;,0 ;NEED AN EXTRA 'DUMMY' VALUE
kStep lpshold kPhFreq, 0, 0, 1, 1, 2, 1, 3, 1, 4, 1, 5, 1, 6, 1, 7, 1, 8, 1, 9, 1, 10, 1, 11, 1, 12, 1, 13, 1, 14, 1, 15, 1, 16, 1 ;,0 ;NEED AN EXTRA 'DUMMY' VALUE
kNewOn trigger kOn,0.5,0 ;SENSE A NOTE ON FOLLOWING A NOTE OFF
kAcc portk kAcc*gkAccent,kporttime ;SCALE ACCENT USING ON-SCREEN KNOB AND SMOOTH CHANGES IN ACCENT VALUE TO PREVENT CLICKS
;IGNORE PITCH VALUES AND HOLD VALUES FOR 'OFF' NOTES
kNote init i(gkNote1)
if kOn==1 then ;IF THIS IS AN 'ON' NOTE...
kNote = kNoteLoop ;USE NOTE LOOP VALUE FOR PCH
kHold = kHoldLoop ;USE HOLD LOOP VALUE FOR HOLD
endif
kHoldDel vdel_k kHold, 1/(kBtFreq*2), 1 ;OFFSET HOLD SO THAT ITS VALUE WILL OVERLAP THE NEXT NOTE
kNote portk kNote, 0.01*kHoldDel*kOn ;APPLY PORTAMENTO TO PITCH CHANGES - IF NOTE IS NOT HELD, NO PORTAMENTO WILL BE APPLIED
;FILTER ENVELOPE
kFiltRetrig = (1-kHoldDel) * kNewNote * kOn ; + kOnTrig
;CREATE A FILTER CUTOFF FREQUENCY ENVELOPE. FILTER ATTACK LEVEL IS A SUM OF BASE FREQUENCY, ENVELOPE DEPTH AND ACCENT
; freq trig ph v t v t v t(?)
kCfOct loopseg 1/3600, kFiltRetrig+kNewOn, 0, gkCfBase+gkCfEnv+(kAcc*2), gkDecay, gkCfBase, 3600-gkDecay, gkCfBase, 0
kCfOct limit kCfOct, 4, 14 ;LIMIT THE CUTOFF FREQUENCY TO BE WITHIN SENSIBLE LIMITS
;AMPLITUDE ENVELOPE - SEPARATES NOTES THAT ARE NOT HELD
katt = 0.02 * (60/gkTempo)
kdec = 0.02 * (60/gkTempo)
; freq trig ph v tim v t v t v t(?)
kAmpEnv loopseg kBtFreq, 0, 0, 0, katt, 1, (1/kBtFreq)-katt-kdec, 1, kdec,0, 0 ;SUSTAIN SEGMENT DURATION (AND THEREFORE ATTACK AND DECAY SEGMENT DURATIONS) ARE DEPENDENT UPON TEMPO
kAmp = (kHoldDel==1?1:kAmpEnv)
;AUDIO OSCILLATOR
kWavTrig changed gkWaveform ;GENERATE A 'BANG' IF WAVEFORM SELECTOR CHANGES
if kWavTrig=1 then ;IF A 'BANG' HAS BEEN GENERATED...
reinit REINIT_VCO ;BEGIN A REINITIALIZATION PASS FROM THE LABEL 'REINIT_VCO'
endif
REINIT_VCO: ;A LABEL
if i(gkWaveform)==1 then ;SAWTOOTH
imode = 0
elseif i(gkWaveform)==2 then ;SQUARE
imode = 10
elseif i(gkWaveform)==3 then ;TRIANGLE
imode = 12
elseif i(gkWaveform)==4 then ;PWM
imode = 2
elseif i(gkWaveform)==5 then ;NOISE
anoise pinkish 1
aSig resonsr anoise,cpsmidinn(kNote),cpsmidinn(kNote)*0.005,1
aSig = aSig*20
goto SKIP_VCO2
endif
kpw portk kpw,kporttime
aSig vco2 0.2, cpsmidinn(kNote), imode, kpw ;GENERATE AUDIO USING VCO OSCILLATOR
SKIP_VCO2:
rireturn ;RETURN FROM INITIALIZATION PASS TO PERFORMANCE PASSES

;FILTER (CALLS UDO: A VERSION OF moogladder IN WHICH CUTOFF FREQUENCY IS MODULATED AT kr=sr) IN ORDER TO PREVENT QUANTISATION NOISE)
kres limit gkRes+(kAcc*0.4),0,0.98 ;PREVENT EXCESSIVE RESONANCE THAT COULD RESULT FROM THE COMBINATION OF RESONANCE SETTING AND ACCENTING
/*
aFilt moogladdersr aSig, cpsoct(kCfOct), kres ;FILTER AUDIO
aSig balance aFilt,aSig
;DISTORTION
if gkDist==0 kgoto SKIP_DISTORTION
iSclLimit ftgentmp 0, 0, 1024, -16, 1, 1024, -8, 0.01 ;RESCALING CURVE FOR CLIP 'LIMIT' PARAMETER
iSclGain ftgentmp 0, 0, 1024, -16, 1, 1024, 4, 10 ;RESCALING CURVE FOR GAIN COMPENSATION
kLimit table gkDist, iSclLimit, 1 ;READ LIMIT VALUE FROM RESCALING CURVE
kGain table gkDist, iSclGain, 1 ;READ GAIN VALUE FROM RESCALING CURVE
kTrigDist changed kLimit ;IF LIMIT VALUE CHANGES GENERATE A 'BANG'
if kTrigDist=1 then ;IF A 'BANG' HAS BEEN GENERATED...
reinit REINIT_CLIP ;BEGIN A REINITIALIZATION PASS FROM LABEL 'REINIT_CLIP'
endif
REINIT_CLIP:
aSig clip aSig, 0, i(kLimit) ;CLIP DISTORT AUDIO SIGNAL
rireturn ;
aSig = aSig * kGain ;COMPENSATE FOR GAIN LOSS FROM 'CLIP' PROCESSING
*/
iSclGain ftgentmp 0, 0, 1024, -16, 1, 1024, -6, 0.1 ;RESCALING CURVE FOR GAIN COMPENSATION
kGain table gkDist, iSclGain, 1 ;READ GAIN VALUE FROM RESCALING CURVE
aSig lpf18 aSig,cpsoct(kCfOct),kres, (gkDist^2)*20 ;LOWPASS
;aSig tone aSig,cpsoct(kCfOct)
af1 resonz aSig,150,150,1
aSig = aSig+af1
aSig butlp aSig,4000
aSig = aSig * kGain ;COMPENSATE FOR GAIN LOSS FROM 'CLIP' PROCESSING
SKIP_DISTORTION:
kOn port kOn, 0.006 ;SMOOTH CHANGES IN ON OFF SWITCHING
aAmp interp ((kAmp*kOn)*((kAcc*0.7)+1)*gkVol) ;COMBINE ALL FACTORS THAT CONTRIBUTE TO AMPLITUDE AND INTERPOLATE AND CREATE AN A-RATE VERSION OF THIS RESULT (TO PREVENT QUANTISATION NOISE)
aSig = aSig * aAmp ;SCALE AUDIO USING AMPLITUDE CONTROL FUNCTION
outs aSig, aSig ;AUDIO SENT TO OUTPUT, APPLY AMP. ENVELOPE, VOLUME CONTROL AND NOTE ON/OFF STATUS

rireturn
SKIP:
;RESET SEQUENCE TO BLANK
ktrig changed gkReset
if ktrig==1 then
kval = 60
chnset kval,"Note1"
chnset kval,"Note2"
chnset kval,"Note3"
chnset kval,"Note4"
chnset kval,"Note5"
chnset kval,"Note6"
chnset kval,"Note7"
chnset kval,"Note8"
chnset kval,"Note9"
chnset kval,"Note10"
chnset kval,"Note11"
chnset kval,"Note12"
chnset kval,"Note13"
chnset kval,"Note14"
chnset kval,"Note15"
chnset kval,"Note16"
kval = 0
chnset kval,"On1"
chnset kval,"On2"
chnset kval,"On3"
chnset kval,"On4"
chnset kval,"On5"
chnset kval,"On6"
chnset kval,"On7"
chnset kval,"On8"
chnset kval,"On9"
chnset kval,"On10"
chnset kval,"On11"
chnset kval,"On12"
chnset kval,"On13"
chnset kval,"On14"
chnset kval,"On15"
chnset kval,"On16"
chnset kval,"Hold1"
chnset kval,"Hold2"
chnset kval,"Hold3"
chnset kval,"Hold4"
chnset kval,"Hold5"
chnset kval,"Hold6"
chnset kval,"Hold7"
chnset kval,"Hold8"
chnset kval,"Hold9"
chnset kval,"Hold10"
chnset kval,"Hold11"
chnset kval,"Hold12"
chnset kval,"Hold13"
chnset kval,"Hold14"
chnset kval,"Hold15"
chnset kval,"Hold16"
chnset kval,"Acc1"
chnset kval,"Acc2"
chnset kval,"Acc3"
chnset kval,"Acc4"
chnset kval,"Acc5"
chnset kval,"Acc6"
chnset kval,"Acc7"
chnset kval,"Acc8"
chnset kval,"Acc9"
chnset kval,"Acc10"
chnset kval,"Acc11"
chnset kval,"Acc12"
chnset kval,"Acc13"
chnset kval,"Acc14"
chnset kval,"Acc15"
chnset kval,"Acc16"
endif

;RANDOMISE SEQUENCE
ktrig changed gkRnd
if ktrig==1 then
#define RANDOM_STEP(N)
#
kval random 48,72.999
chnset int(kval),"Note$N"
kval random 0,1.999
chnset int(kval),"On$N"
kval random 0,1.999
chnset int(kval),"Hold$N"
kval random 0,1.999
chnset int(kval),"Acc$N"
#
$RANDOM_STEP(1)
$RANDOM_STEP(2)
$RANDOM_STEP(3)
$RANDOM_STEP(4)
$RANDOM_STEP(5)
$RANDOM_STEP(6)
$RANDOM_STEP(7)
$RANDOM_STEP(8)
$RANDOM_STEP(9)
$RANDOM_STEP(10)
$RANDOM_STEP(11)
$RANDOM_STEP(12)
$RANDOM_STEP(13)
$RANDOM_STEP(14)
$RANDOM_STEP(15)
$RANDOM_STEP(16)
endif
;PROGRESS INDICATORS
kStepChange changed kStep
kActive = 1
kNonActive = 0
if kStepChange==1 then
if kStep==1 then
chnset kActive,"Act1"
chnset kNonActive,"Act16"
elseif kStep==2 then
chnset kActive,"Act2"
chnset kNonActive,"Act1"
elseif kStep==3 then
chnset kActive,"Act3"
chnset kNonActive,"Act2"
elseif kStep==4 then
chnset kActive,"Act4"
chnset kNonActive,"Act3"
elseif kStep==5 then
chnset kActive,"Act5"
chnset kNonActive,"Act4"
elseif kStep==6 then
chnset kActive,"Act6"
chnset kNonActive,"Act5"
elseif kStep==7 then
chnset kActive,"Act7"
chnset kNonActive,"Act6"
elseif kStep==8 then
chnset kActive,"Act8"
chnset kNonActive,"Act7"
elseif kStep==9 then
chnset kActive,"Act9"
chnset kNonActive,"Act8"
elseif kStep==10 then
chnset kActive,"Act10"
chnset kNonActive,"Act9"
elseif kStep==11 then
chnset kActive,"Act11"
chnset kNonActive,"Act10"
elseif kStep==12 then
chnset kActive,"Act12"
chnset kNonActive,"Act11"
elseif kStep==13 then
chnset kActive,"Act13"
chnset kNonActive,"Act12"
elseif kStep==14 then
chnset kActive,"Act14"
chnset kNonActive,"Act13"
elseif kStep==15 then
chnset kActive,"Act15"
chnset kNonActive,"Act14"
elseif kStep==16 then
chnset kActive,"Act16"
chnset kNonActive,"Act15"
endif
endif

;TRANSPOSE
ktrig1 changed kSemiDn
ktrig2 changed kSemiUp
ktrig3 changed kOctDn
ktrig4 changed kOctUp
if ktrig1+ktrig2+ktrig3+ktrig4==1 then
#define TRANSPOSE(N)
#
kval limit gkNote$N+kInt,24,96
chnset kval,"Note$N"
#
if ktrig1==1 then
kInt = -1
elseif ktrig2==1 then
kInt = 1
elseif ktrig3==1 then
kInt = -12
elseif ktrig4==1 then
kInt = 12
endif
$TRANSPOSE(1)
$TRANSPOSE(2)
$TRANSPOSE(3)
$TRANSPOSE(4)
$TRANSPOSE(5)
$TRANSPOSE(6)
$TRANSPOSE(7)
$TRANSPOSE(8)
$TRANSPOSE(9)
$TRANSPOSE(10)
$TRANSPOSE(11)
$TRANSPOSE(12)
$TRANSPOSE(13)
$TRANSPOSE(14)
$TRANSPOSE(15)
$TRANSPOSE(16)
endif
endin
</CsInstruments>

<CsScore>
i 1 0 [3600*24*7]
</CsScore>

</CsoundSynthesizer>




























+ 77
- 0
bin/cabbage/Synths/bassline.snaps View File

@@ -0,0 +1,77 @@
------------------------ Instrument ID: bassline
-------- Start of Preset: Preset 1
Note1: 48
Note2: 60
Note3: 60
Note4: 60
Note5: 60
Note6: 60
Note7: 60
Note8: 60
Note9: 60
Note10: 60
Note11: 60
Note12: 60
Note13: 60
Note14: 60
Note15: 60
Note16: 60
On1: 1
On2: 0
On3: 0
On4: 0
On5: 0
On6: 0
On7: 0
On8: 0
On9: 0
On10: 0
On11: 0
On12: 0
On13: 0
On14: 0
On15: 0
On16: 0
Hold1: 0
Hold2: 0
Hold3: 0
Hold4: 0
Hold5: 0
Hold6: 0
Hold7: 0
Hold8: 0
Hold9: 0
Hold10: 0
Hold11: 0
Hold12: 0
Hold13: 0
Hold14: 0
Hold15: 0
Hold16: 0
Acc1: 0
Acc2: 0
Acc3: 0
Acc4: 0
Acc5: 0
Acc6: 0
Acc7: 0
Acc8: 0
Acc9: 0
Acc10: 0
Acc11: 0
Acc12: 0
Acc13: 0
Acc14: 0
Acc15: 0
Acc16: 0
Waveform: 1
pw: 0.25
Vol: 1
CfBase: 8
CfEnv: 4
Res: 0.400000006
Dist: 0
Decay: 0.300000012
Accent: 0.5
-------- End of Preset: Preset 1
------------------------ End of Instrument ID: bassline

+ 27
- 0
ports/cabbage/LV2-fx/premake.lua View File

@@ -0,0 +1,27 @@
dofile("../../../scripts/make-project.lua")
package = make_juce_lv2_project("CabbagePluginEffectLv2")
project.bindir = "../../../bin/cabbage"
package.links = { package.links, "csound64", "sndfile", "FLAC", "vorbisenc", "vorbis", "ogg", "m" }
package.defines = { package.defines, "Cabbage_Plugin_LV2=1", "USE_DOUBLE=1", "CSOUND6=1" }
package.includepaths = {
package.includepaths,
"/opt/kxstudio/include/csound",
"/usr/include/csound"
}
package.libpaths = {
package.libpaths,
"/opt/kxstudio/lib"
}
package.files = {
matchfiles (
"../source/*.cpp",
"../source/Plugin/*.cpp",
"../../../libs/juce-plugin/JucePluginMain.cpp"
)
}

+ 27
- 0
ports/cabbage/LV2-ins/premake.lua View File

@@ -0,0 +1,27 @@
dofile("../../../scripts/make-project.lua")
package = make_juce_lv2_project("CabbagePluginSynthLv2")
project.bindir = "../../../bin/cabbage"
package.links = { package.links, "csound64", "sndfile", "FLAC", "vorbisenc", "vorbis", "ogg", "m" }
package.defines = { package.defines, "Cabbage_Plugin_Synth=1", "Cabbage_Plugin_LV2=1", "USE_DOUBLE=1", "CSOUND6=1" }
package.includepaths = {
package.includepaths,
"/opt/kxstudio/include/csound",
"/usr/include/csound"
}
package.libpaths = {
package.libpaths,
"/opt/kxstudio/lib"
}
package.files = {
matchfiles (
"../source/*.cpp",
"../source/Plugin/*.cpp",
"../../../libs/juce-plugin/JucePluginMain.cpp"
)
}

+ 27
- 0
ports/cabbage/LV2-midi/premake.lua View File

@@ -0,0 +1,27 @@
dofile("../../../scripts/make-project.lua")
package = make_juce_lv2_project("CabbagePluginMidiLv2")
project.bindir = "../../../bin/cabbage"
package.links = { package.links, "csound64", "sndfile", "FLAC", "vorbisenc", "vorbis", "ogg", "m" }
package.defines = { package.defines, "Cabbage_Plugin_Midi=1", "Cabbage_Plugin_LV2=1", "USE_DOUBLE=1", "CSOUND6=1" }
package.includepaths = {
package.includepaths,
"/opt/kxstudio/include/csound",
"/usr/include/csound"
}
package.libpaths = {
package.libpaths,
"/opt/kxstudio/lib"
}
package.files = {
matchfiles (
"../source/*.cpp",
"../source/Plugin/*.cpp",
"../../../libs/juce-plugin/JucePluginMain.cpp"
)
}

+ 27
- 0
ports/cabbage/VST-fx/premake.lua View File

@@ -0,0 +1,27 @@
dofile("../../../scripts/make-project.lua")
package = make_juce_vst_project("CabbagePluginEffect")
project.bindir = "../../../bin/cabbage"
package.links = { package.links, "csound64", "sndfile", "FLAC", "vorbisenc", "vorbis", "ogg", "m" }
package.defines = { package.defines, "USE_DOUBLE=1", "CSOUND6=1" }
package.includepaths = {
package.includepaths,
"/opt/kxstudio/include/csound",
"/usr/include/csound"
}
package.libpaths = {
package.libpaths,
"/opt/kxstudio/lib"
}
package.files = {
matchfiles (
"../source/*.cpp",
"../source/Plugin/*.cpp",
"../../../libs/juce-plugin/JucePluginMain.cpp"
)
}

+ 27
- 0
ports/cabbage/VST-ins/premake.lua View File

@@ -0,0 +1,27 @@
dofile("../../../scripts/make-project.lua")
package = make_juce_vst_project("CabbagePluginSynth")
project.bindir = "../../../bin/cabbage"
package.links = { package.links, "csound64", "sndfile", "FLAC", "vorbisenc", "vorbis", "ogg", "m" }
package.defines = { package.defines, "Cabbage_Plugin_Synth=1", "USE_DOUBLE=1", "CSOUND6=1" }
package.includepaths = {
package.includepaths,
"/opt/kxstudio/include/csound",
"/usr/include/csound"
}
package.libpaths = {
package.libpaths,
"/opt/kxstudio/lib"
}
package.files = {
matchfiles (
"../source/*.cpp",
"../source/Plugin/*.cpp",
"../../../libs/juce-plugin/JucePluginMain.cpp"
)
}

+ 27
- 0
ports/cabbage/VST-midi/premake.lua View File

@@ -0,0 +1,27 @@
dofile("../../../scripts/make-project.lua")
package = make_juce_vst_project("CabbagePluginMidi")
project.bindir = "../../../bin/cabbage"
package.links = { package.links, "csound64", "sndfile", "FLAC", "vorbisenc", "vorbis", "ogg", "m" }
package.defines = { package.defines, "Cabbage_Plugin_Midi=1", "USE_DOUBLE=1", "CSOUND6=1" }
package.includepaths = {
package.includepaths,
"/opt/kxstudio/include/csound",
"/usr/include/csound"
}
package.libpaths = {
package.libpaths,
"/opt/kxstudio/lib"
}
package.files = {
matchfiles (
"../source/*.cpp",
"../source/Plugin/*.cpp",
"../../../libs/juce-plugin/JucePluginMain.cpp"
)
}

+ 711
- 0
ports/cabbage/source/BinaryData.cpp View File

@@ -0,0 +1,711 @@
/* ==================================== JUCER_BINARY_RESOURCE ====================================
This is an auto-generated file: Any edits you make may be overwritten!
*/
namespace BinaryData
{
//================== cabbageLogoHBlueText.png ==================
static const unsigned char temp_5e47874a[] =
{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,162,0,0,0,50,8,6,0,0,0,223,148,0,88,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,6,98,75,71,68,0,255,0,255,0,255,160,189,167,147,0,0,0,9,112,72,89,115,0,0,23,18,0,0,23,18,1,103,159,210,82,0,0,0,7,116,
73,77,69,7,221,2,2,20,36,27,210,31,29,92,0,0,29,180,73,68,65,84,120,218,237,125,121,124,27,213,189,253,57,35,121,137,29,156,125,39,9,73,112,201,194,18,32,96,67,28,104,109,1,65,74,75,67,23,74,91,74,121,60,74,99,91,238,190,209,246,117,161,125,45,180,60,
64,138,77,91,246,182,180,101,121,45,75,36,10,145,194,98,39,177,11,165,64,32,97,203,70,18,178,39,118,98,199,171,230,188,63,102,70,26,201,178,73,154,184,191,95,193,243,249,200,139,60,186,115,231,222,115,207,247,251,61,223,239,29,19,71,113,212,54,150,161,
170,180,1,181,77,101,35,170,74,26,246,215,61,87,6,36,56,163,178,180,126,125,119,79,231,136,253,29,155,142,47,200,25,117,138,65,207,217,45,237,91,166,27,70,206,36,130,69,32,33,153,137,132,186,91,32,115,219,240,33,39,108,232,74,180,54,181,116,110,91,55,
182,112,214,142,33,57,69,123,48,120,188,175,14,30,109,3,117,77,11,70,74,88,75,154,55,64,198,1,16,183,73,230,117,149,37,13,245,173,93,187,175,56,212,181,47,214,99,118,236,156,88,116,218,78,0,251,1,180,3,232,6,144,7,96,40,128,145,27,247,215,143,207,247,
14,155,52,36,103,228,162,67,93,123,206,108,239,110,217,62,118,232,73,183,23,229,79,248,61,0,72,2,201,193,217,26,4,98,191,172,248,44,201,5,16,0,10,16,5,10,9,179,251,115,141,91,155,30,152,63,229,188,227,0,237,3,96,0,240,74,72,24,6,122,150,156,93,159,108,
195,52,77,24,134,145,252,93,210,194,245,251,158,9,153,234,41,158,54,188,236,170,230,142,45,127,24,51,180,184,43,219,185,131,199,32,16,81,215,84,246,105,128,247,73,18,93,148,37,1,36,0,233,77,129,197,162,62,75,241,37,64,119,146,104,145,240,14,132,109,36,
150,85,150,54,172,118,183,233,102,63,73,11,94,217,249,72,165,65,99,65,65,238,152,165,211,70,156,243,243,65,48,14,2,209,109,142,97,154,42,32,17,7,89,154,165,17,57,109,203,249,81,137,17,128,231,102,80,51,36,108,49,160,173,162,97,82,56,3,52,227,74,120,254,
167,234,220,103,123,28,191,51,3,156,179,214,237,138,62,159,80,231,174,147,199,45,158,75,178,101,208,92,191,183,142,35,162,21,73,0,128,202,146,122,208,224,92,102,7,97,26,192,9,130,16,8,35,94,85,90,127,21,132,111,26,192,90,209,232,132,4,81,113,137,69,52,
204,191,215,54,46,248,47,8,147,28,176,187,24,114,221,236,113,129,66,0,241,151,182,63,208,252,198,158,216,213,36,209,214,181,111,112,6,223,111,140,152,201,64,181,77,11,94,33,48,231,176,63,14,17,194,15,64,222,73,105,35,200,28,200,33,78,37,89,84,64,23,136,
154,170,146,134,95,103,187,246,222,182,13,23,174,219,189,236,137,153,163,47,190,127,244,208,226,79,13,6,51,239,67,211,252,143,55,247,92,52,231,132,81,95,187,239,229,15,255,186,189,167,249,33,11,55,135,219,134,4,145,130,230,144,252,52,160,239,66,200,134,
32,203,229,4,158,20,248,153,170,210,250,61,181,77,11,80,85,82,159,4,92,123,87,243,249,79,174,255,209,83,39,142,44,95,215,209,211,242,231,89,163,3,143,22,228,141,120,110,112,58,223,195,64,116,38,191,254,197,237,53,173,237,221,183,126,96,214,223,167,253,
245,181,95,70,9,206,194,145,176,144,32,81,36,176,17,74,156,44,120,119,145,40,236,243,84,144,146,182,147,92,84,89,82,255,66,102,132,157,232,233,158,247,244,230,95,60,183,110,215,99,24,85,112,98,226,130,19,127,88,61,186,112,198,175,6,217,241,61,233,35,
126,11,36,177,97,91,203,194,77,219,15,222,186,240,236,201,103,70,214,254,236,51,164,113,100,32,180,157,69,130,0,56,13,240,84,17,154,15,57,86,57,203,169,22,89,142,23,180,178,182,177,172,212,242,27,231,195,48,12,72,130,199,155,243,252,233,19,62,83,49,118,
232,108,236,107,223,224,105,218,122,251,109,237,93,45,83,72,38,125,217,193,227,61,3,196,27,32,201,247,68,211,214,199,207,153,89,124,97,221,115,231,94,226,245,228,253,36,43,122,142,36,232,1,126,14,96,191,160,31,169,207,182,104,127,97,62,200,229,181,141,
243,207,173,44,89,137,186,198,5,32,9,211,52,49,178,96,234,138,138,233,215,253,212,99,228,98,253,190,21,216,176,255,153,149,0,6,25,241,189,102,154,37,141,184,55,250,230,139,87,250,139,127,250,203,134,89,237,133,185,163,239,77,1,4,71,11,198,125,70,103,
215,4,229,230,108,22,56,30,132,216,103,187,18,192,46,65,115,170,74,26,214,215,54,46,64,85,105,61,18,137,110,120,60,57,216,218,252,143,53,127,89,183,228,100,210,64,85,201,202,74,146,183,13,78,237,123,136,17,223,218,218,242,165,217,39,140,126,246,251,177,
162,167,10,114,199,220,9,145,199,8,132,34,48,210,204,205,249,170,192,47,216,226,119,127,235,133,146,242,40,60,108,253,102,2,0,60,158,28,0,192,164,97,115,23,124,96,212,133,251,9,226,233,13,55,92,41,41,111,112,106,255,141,129,104,154,102,50,64,145,204,
69,111,239,108,251,234,89,179,71,124,125,194,113,167,189,74,33,71,196,49,113,190,8,208,206,198,44,161,193,39,37,173,102,255,246,84,4,19,2,110,170,109,42,251,117,101,201,74,212,54,149,37,251,76,178,121,206,248,75,127,70,120,181,183,125,253,25,91,154,159,
159,152,72,36,6,103,247,223,13,136,142,115,79,114,196,235,155,247,255,120,251,222,67,111,109,124,231,224,163,229,103,78,188,241,127,86,158,86,77,34,167,127,211,249,79,128,209,2,222,20,153,230,34,146,63,238,39,192,176,19,216,88,69,98,31,133,47,212,54,
149,249,171,74,172,236,139,147,234,155,116,220,105,161,185,19,47,219,179,247,208,250,28,193,252,176,199,227,25,156,221,127,39,32,74,194,198,119,14,64,18,119,238,107,127,201,99,24,241,183,119,181,222,186,117,87,91,243,173,107,121,75,190,183,232,154,35,
211,11,143,192,68,75,0,241,83,8,171,72,238,236,11,179,2,14,146,184,0,226,205,86,64,205,159,212,54,46,24,90,103,179,162,45,217,116,158,51,121,73,48,63,103,56,14,116,108,187,210,205,240,255,191,28,190,96,164,207,191,85,4,163,239,107,32,122,109,185,131,
187,155,219,95,105,235,72,84,205,56,190,104,231,35,127,220,28,42,157,51,229,63,216,50,239,211,244,112,220,128,69,74,164,0,156,36,168,128,192,86,128,99,147,128,119,100,109,169,27,192,124,16,127,4,49,29,128,72,157,14,225,131,149,37,13,203,234,26,231,195,
145,108,72,222,191,114,115,221,141,187,15,189,126,134,155,45,143,26,64,53,209,161,128,78,77,58,38,86,15,15,66,124,37,22,246,31,182,187,18,11,7,80,17,140,156,79,171,12,206,105,43,33,240,185,120,200,111,190,175,129,8,0,91,118,28,188,167,176,32,231,247,
211,39,14,125,236,206,199,94,223,190,102,195,190,3,95,189,252,148,7,94,250,91,254,238,1,143,218,45,174,61,3,224,142,52,214,181,64,72,144,139,9,125,1,192,98,36,139,41,8,17,15,1,200,175,44,93,9,183,100,83,148,55,241,198,87,90,86,47,149,228,35,25,59,70,
212,61,71,228,74,183,212,32,161,17,212,135,0,116,28,217,13,243,105,165,251,203,93,144,70,0,56,244,190,54,205,7,219,58,39,121,188,198,180,81,195,134,252,108,211,142,131,255,241,167,229,235,199,158,54,99,236,75,15,174,251,196,121,2,134,0,24,96,117,88,160,
56,13,208,214,100,206,89,142,111,136,50,2,83,0,86,35,237,143,2,164,188,186,166,178,96,102,176,117,242,184,75,158,105,239,222,223,222,222,221,50,255,159,53,147,89,168,219,36,208,69,34,169,227,147,232,178,93,150,35,85,12,224,180,99,183,213,145,222,175,
104,54,70,62,172,182,203,143,228,158,6,248,40,175,94,118,68,247,97,116,39,52,223,52,117,191,36,227,137,213,91,3,9,83,198,121,167,77,105,216,117,224,237,79,240,24,105,134,239,50,201,0,148,3,176,205,137,153,64,116,1,56,11,210,229,0,110,75,49,161,221,33,
207,193,235,71,141,217,186,120,244,232,221,47,166,221,140,97,128,228,43,31,24,117,193,182,205,205,43,79,239,229,135,213,68,210,204,100,255,230,56,210,27,65,217,205,54,142,10,240,202,52,223,254,222,38,61,228,71,69,63,215,241,93,107,93,99,197,187,220,83,
95,109,188,91,31,125,53,81,84,28,166,127,235,171,137,192,23,92,142,21,75,23,101,189,15,0,168,168,238,221,150,183,179,43,177,176,39,161,186,215,55,55,123,119,53,119,148,230,120,13,156,49,171,240,185,213,77,222,159,184,74,92,7,148,17,65,182,195,52,135,
195,48,32,96,19,19,152,38,143,30,167,97,44,180,187,64,89,190,226,87,182,199,235,127,227,25,247,194,221,127,121,101,231,247,123,122,76,84,4,83,210,38,169,239,198,66,129,255,62,105,116,224,207,235,247,197,23,187,7,50,22,242,195,76,16,21,193,136,135,228,
98,72,191,1,57,34,243,22,5,53,80,184,18,38,55,166,193,132,89,148,80,187,226,210,87,19,157,2,97,133,160,25,73,55,65,90,37,224,194,88,56,208,230,76,86,60,11,200,156,181,238,171,94,6,144,227,65,46,147,112,38,9,192,4,64,172,19,116,62,118,123,118,59,19,29,
11,5,146,223,1,0,121,164,175,58,58,89,212,189,148,62,40,195,0,211,145,126,0,66,13,164,223,249,106,162,166,3,108,218,224,136,133,3,240,125,41,154,11,83,247,2,250,148,229,253,216,85,81,194,103,99,33,255,125,246,56,78,21,48,156,73,143,5,166,132,55,226,97,
127,167,47,24,181,22,81,66,128,209,198,138,154,232,127,81,250,161,173,189,57,51,180,87,194,66,18,127,207,92,130,124,237,237,230,149,39,77,30,118,233,125,79,188,217,242,210,91,251,218,189,134,129,239,44,121,109,222,239,154,126,243,24,201,9,3,141,65,219,
225,90,8,242,27,146,10,64,84,81,252,157,168,57,180,163,245,174,68,235,163,151,204,186,249,246,155,239,42,186,122,237,230,29,31,77,36,76,24,6,221,169,60,171,132,76,86,4,61,115,202,184,229,159,248,200,250,226,15,158,244,201,233,23,212,68,21,11,7,224,171,
137,122,36,132,1,44,233,103,105,41,233,183,2,155,68,93,17,15,5,26,124,53,145,179,0,54,0,200,117,157,187,2,64,165,160,91,41,94,36,10,78,127,173,170,34,171,63,36,126,19,11,249,175,117,177,135,50,174,223,2,224,12,72,63,6,249,25,59,232,114,106,55,236,251,
18,8,254,25,212,167,4,118,67,72,130,218,87,19,189,10,194,117,0,78,116,194,60,219,183,206,24,155,164,68,247,61,201,184,33,30,94,216,227,114,7,174,7,240,61,27,48,105,181,121,246,103,215,1,184,144,228,205,0,62,158,49,102,39,199,66,254,87,237,190,20,64,250,
57,128,160,195,12,105,110,181,156,53,138,183,65,93,30,15,5,86,57,11,138,27,183,29,120,235,132,137,199,205,94,183,169,121,228,210,135,94,221,62,111,230,24,180,78,59,105,186,167,181,108,13,201,194,1,102,67,187,115,156,9,225,75,0,190,12,232,77,17,83,104,
207,108,194,236,122,186,186,180,241,207,139,190,254,228,77,29,93,61,57,14,227,88,147,147,12,106,210,89,77,66,142,23,123,37,227,172,132,169,141,0,242,36,109,36,49,33,109,168,83,31,112,62,111,67,200,5,72,226,120,73,19,8,174,4,109,32,90,231,191,8,97,50,
136,81,112,183,232,20,164,203,233,154,64,242,229,88,200,127,154,61,233,202,96,215,14,0,207,3,44,75,219,114,145,90,164,246,132,138,16,223,138,133,253,197,14,195,251,170,35,223,16,113,131,93,80,146,44,90,114,128,152,217,149,36,168,169,95,3,158,37,177,208,
197,242,85,71,30,133,193,15,163,15,129,206,213,167,54,0,255,43,232,115,76,157,216,38,224,44,0,235,40,76,4,176,10,196,84,119,83,110,84,211,94,37,86,61,11,33,233,130,120,56,16,243,5,35,48,18,130,9,192,232,238,49,123,104,16,163,134,229,189,209,217,90,56,
146,224,144,129,118,104,237,21,146,168,44,169,127,29,166,190,45,96,35,200,41,132,3,194,158,181,213,243,26,191,127,205,207,235,111,233,232,234,241,146,116,150,148,232,120,251,142,204,147,113,116,39,56,170,199,212,239,98,33,63,4,221,66,112,66,114,120,82,
181,184,207,64,250,139,200,135,1,53,88,254,169,50,25,225,9,144,45,105,147,100,1,99,46,168,81,176,104,216,154,245,148,40,47,27,7,54,30,116,138,175,38,250,165,172,174,166,152,47,161,12,201,217,201,128,181,197,42,148,213,250,137,190,96,228,238,88,200,15,
95,48,58,13,6,111,36,73,166,221,151,222,6,249,8,128,135,9,253,69,192,1,186,157,11,18,144,113,173,100,142,175,8,70,63,34,131,139,236,229,151,238,121,36,3,171,228,224,22,66,248,28,179,4,104,220,177,3,32,254,12,98,42,28,240,75,72,153,7,219,92,57,33,128,
189,232,9,44,247,213,68,103,197,194,1,120,19,102,98,55,128,225,155,182,31,108,30,146,235,65,209,208,220,45,232,40,58,14,6,6,124,119,146,221,157,135,173,72,131,143,2,152,152,50,37,230,190,75,206,188,226,170,155,31,90,179,122,253,182,131,134,199,112,49,
158,181,156,126,73,226,118,57,193,142,112,5,192,111,129,201,21,44,0,243,125,193,232,53,16,62,110,19,172,211,66,55,192,47,10,188,55,30,246,39,44,166,250,43,193,196,247,32,254,216,153,50,219,160,205,33,56,209,42,235,77,245,192,38,76,17,218,35,224,35,128,
246,219,202,210,36,8,241,100,28,230,80,173,116,29,128,91,251,16,176,44,116,11,165,36,154,109,36,76,4,185,194,46,40,150,141,55,65,184,180,162,102,217,247,33,213,166,186,1,218,188,249,178,136,249,241,144,191,213,101,118,79,19,244,87,146,227,236,37,228,
12,196,217,20,110,17,210,204,56,4,36,8,149,83,216,109,165,248,53,4,228,111,41,157,44,50,27,105,182,98,220,184,16,128,18,57,4,145,106,237,60,137,123,8,36,64,38,36,252,138,144,15,46,210,7,116,155,47,24,89,104,20,228,121,95,125,103,79,219,228,211,63,48,
202,204,207,245,110,41,42,200,221,75,13,25,142,127,65,37,149,172,137,251,83,93,99,89,64,212,249,118,255,40,8,134,167,231,15,91,214,125,236,230,7,226,27,221,32,180,108,185,240,187,120,56,240,13,136,111,196,67,254,55,40,190,26,11,7,190,45,154,119,164,108,
181,213,14,136,90,16,163,221,67,40,97,107,44,236,191,43,30,242,39,82,209,234,66,197,66,129,235,197,222,146,187,164,113,233,164,107,179,130,212,17,155,60,121,108,60,28,104,140,135,3,175,147,120,61,30,242,175,0,229,3,213,147,34,64,137,228,216,138,96,244,
163,89,200,155,16,187,98,33,63,227,97,127,147,164,215,1,190,30,11,7,158,146,204,145,74,95,65,20,89,4,241,66,16,23,39,23,140,253,197,4,62,29,15,5,90,51,162,240,151,64,172,78,49,162,237,187,130,149,130,78,112,24,78,150,19,41,72,23,196,194,129,103,65,174,
139,133,252,175,197,195,129,127,196,67,254,83,4,238,177,87,84,58,119,10,179,5,6,237,123,164,181,72,209,25,15,7,24,15,5,234,1,115,93,44,236,127,67,192,122,131,88,36,224,101,119,150,151,226,121,34,102,24,5,249,222,199,77,83,231,78,30,55,180,123,204,240,
188,149,94,175,135,132,103,232,191,68,108,34,122,4,196,68,94,227,178,89,34,136,249,147,190,181,250,87,15,175,155,91,56,196,43,164,113,33,33,232,26,183,212,225,124,239,150,249,197,164,97,180,117,32,8,57,146,174,144,180,216,126,93,74,242,115,189,37,136,
136,203,46,185,59,67,244,42,182,77,25,178,114,124,243,212,228,103,173,104,52,130,120,40,16,183,89,145,206,233,182,163,246,149,94,41,117,193,4,241,237,84,100,29,176,252,191,96,4,241,240,162,253,128,110,148,219,162,91,254,204,53,146,46,145,176,216,117,
95,159,92,17,14,188,218,135,136,222,220,219,43,210,133,22,38,69,7,21,146,30,138,135,3,79,57,62,168,91,158,34,229,83,210,95,117,231,104,113,185,45,125,184,237,220,149,142,44,20,15,91,50,78,60,228,199,242,144,191,147,150,28,151,214,57,10,151,113,243,246,
3,19,115,188,158,123,39,142,41,188,96,237,250,125,159,242,230,120,46,121,100,203,220,63,20,122,143,127,116,192,3,102,105,141,58,116,26,135,48,225,142,54,36,173,157,216,182,124,233,93,127,125,182,174,189,51,145,233,60,223,19,15,7,174,170,168,94,134,120,
22,173,170,34,24,185,88,212,112,183,206,109,192,120,60,22,242,31,232,71,235,35,128,92,145,223,166,240,195,100,152,146,58,46,131,240,91,16,174,242,50,189,5,240,12,64,7,147,50,74,186,246,86,14,32,238,14,95,156,160,49,163,237,67,0,230,197,66,254,117,125,
104,120,231,64,120,6,68,142,107,12,58,227,225,64,254,187,141,113,69,48,154,15,234,68,2,177,180,244,105,246,180,63,73,115,110,44,180,232,165,108,154,106,44,20,128,47,24,221,6,106,98,42,11,139,14,2,27,64,204,118,181,116,0,66,57,12,172,205,50,231,2,48,140,
226,142,140,96,241,21,239,212,9,69,239,108,223,211,246,206,150,157,173,215,77,30,55,244,191,37,141,212,166,220,110,120,6,86,66,180,18,120,124,149,67,120,134,91,236,16,4,193,188,107,79,235,246,75,14,117,244,164,87,91,91,163,245,8,128,172,32,180,181,172,
199,223,117,130,106,162,11,8,148,3,24,34,203,206,78,32,116,9,133,162,148,248,146,57,136,153,111,242,45,65,29,241,80,118,17,57,22,242,175,176,217,132,112,5,191,25,173,8,66,143,160,117,253,172,216,53,32,18,128,13,68,65,36,243,42,106,30,203,139,135,62,220,
153,202,170,68,39,26,196,165,146,142,183,131,232,60,1,31,34,120,106,255,146,124,202,210,196,66,139,94,170,8,214,33,30,174,204,184,151,128,51,105,175,74,152,232,202,46,229,8,152,146,86,18,67,22,0,184,31,66,79,214,152,0,232,206,162,88,204,246,2,192,132,
209,133,87,190,177,165,185,69,50,155,72,214,213,54,150,149,3,52,129,129,12,88,68,136,207,3,10,88,128,39,83,1,109,87,253,254,131,135,190,209,75,101,33,65,105,109,223,69,5,126,244,181,154,207,9,70,80,64,174,19,80,76,152,180,216,201,190,164,35,112,56,76,
200,195,146,63,247,16,236,201,206,68,17,196,195,1,200,122,206,207,16,186,162,79,119,41,157,36,130,104,233,11,204,246,61,181,250,130,17,51,149,91,180,175,111,26,99,1,108,169,168,137,132,40,86,138,34,156,123,162,232,10,253,29,61,153,253,79,133,172,66,12,
158,208,223,173,239,206,8,70,12,8,133,214,5,146,129,160,23,224,140,254,69,90,23,116,73,9,50,12,199,247,41,62,126,216,148,205,59,218,110,222,189,255,208,229,173,221,91,119,130,26,224,36,60,65,154,47,8,244,165,47,86,66,198,193,205,93,221,221,189,170,126,
236,238,183,30,238,21,42,130,81,196,66,1,84,212,68,191,84,104,209,209,76,3,242,0,134,65,199,53,74,42,199,2,164,71,148,202,117,103,246,54,115,101,247,201,48,241,84,170,173,141,239,146,221,164,181,224,81,145,37,55,235,142,209,123,37,69,137,226,138,96,228,
77,138,65,16,30,138,134,101,77,64,231,177,6,182,191,187,17,208,107,253,79,133,64,49,199,21,134,245,181,2,189,25,115,101,169,71,174,79,9,174,100,108,198,43,131,111,92,247,67,24,174,18,170,150,230,214,174,179,143,43,200,253,65,160,248,166,9,146,14,12,180,
136,8,24,91,1,77,67,122,68,11,192,240,244,179,128,39,244,237,235,69,51,0,225,71,69,48,122,50,165,91,108,210,147,28,141,140,162,164,63,138,156,39,105,6,133,241,177,112,96,113,42,185,208,219,52,167,251,232,40,236,203,98,56,185,87,74,163,251,219,1,97,135,
171,69,125,185,26,118,126,188,15,54,227,3,4,79,20,83,130,157,37,242,104,155,164,75,37,20,75,154,76,154,179,37,196,251,221,137,33,74,20,42,130,209,105,217,172,138,107,65,76,79,15,154,33,1,61,110,150,167,216,44,233,106,73,139,142,228,229,117,50,21,166,
105,162,245,80,119,71,126,158,119,230,138,13,191,48,64,163,217,214,245,6,174,216,65,58,196,244,180,25,72,129,230,208,201,121,185,222,29,0,198,247,2,131,88,6,224,239,125,153,102,95,48,178,16,192,52,219,36,117,130,168,116,91,52,203,125,82,163,225,245,158,
251,228,205,23,37,167,231,252,234,71,220,94,123,191,140,104,35,122,50,165,220,242,224,178,246,21,225,69,89,22,64,100,170,173,187,185,147,10,116,4,106,167,77,17,57,21,53,209,177,241,144,127,87,118,178,226,116,0,70,6,20,69,98,148,83,39,103,39,85,186,40,
93,28,11,7,158,202,178,64,13,165,215,54,59,22,219,113,69,28,147,126,13,128,235,236,200,63,89,40,17,15,249,225,171,142,14,7,52,79,233,30,110,15,137,61,110,114,176,229,214,85,177,112,224,181,35,129,131,225,174,92,25,90,96,249,195,229,211,191,97,18,88,133,
1,220,31,44,107,40,76,48,157,85,172,21,231,253,208,168,227,134,254,131,189,176,75,16,168,73,151,91,122,85,203,252,86,64,157,45,19,220,5,96,94,154,79,98,93,247,210,39,111,190,72,238,54,158,89,122,9,82,233,67,244,203,136,54,69,157,37,50,223,96,159,110,
244,18,246,214,53,54,246,98,55,33,31,192,57,253,12,213,135,4,229,100,247,251,29,101,152,32,117,125,108,105,224,169,138,234,108,21,54,154,154,225,248,82,194,129,244,190,8,18,191,92,17,124,108,140,219,103,53,28,217,153,120,50,149,41,74,50,100,23,164,183,
50,6,108,152,132,201,239,226,50,229,148,87,71,70,151,87,71,71,89,175,101,163,210,70,49,173,162,89,186,35,153,44,29,16,66,20,32,154,89,253,21,120,174,28,93,52,250,177,130,124,111,54,13,124,122,69,48,186,48,30,14,160,220,101,138,109,95,240,82,144,99,72,
59,161,148,122,188,29,221,68,28,15,5,182,103,248,114,142,84,114,145,197,136,253,251,136,41,37,145,33,71,111,115,107,110,21,193,200,88,18,215,218,180,3,217,9,86,1,247,100,58,160,4,188,132,174,173,168,142,208,89,96,142,139,225,11,70,242,64,92,77,246,66,
187,178,132,1,27,44,19,239,119,203,82,240,213,68,10,64,22,43,3,45,36,239,200,120,7,36,134,144,158,191,84,4,35,39,148,87,71,115,42,106,162,94,19,28,231,171,137,254,26,192,89,201,250,139,212,84,9,224,114,89,46,182,146,149,71,6,190,154,233,46,165,149,160,
17,93,134,129,221,134,129,61,52,180,135,228,245,253,198,135,117,141,101,219,68,78,28,48,17,199,52,143,135,97,60,15,96,156,43,6,16,64,206,159,242,133,43,110,186,125,242,109,219,118,183,21,166,167,60,37,129,187,33,93,28,15,7,146,143,34,169,168,94,182,16,
228,195,32,243,156,51,187,123,76,25,6,232,49,140,244,0,92,250,104,44,28,120,196,87,19,5,76,32,182,212,15,95,48,154,7,226,5,192,165,137,165,186,115,153,164,223,146,204,235,245,23,153,181,177,240,162,106,87,196,92,64,226,25,137,243,232,14,17,45,231,116,
24,12,180,100,18,145,93,102,241,167,67,61,250,204,170,219,2,38,0,248,150,68,135,200,171,7,73,6,210,171,50,112,136,192,219,0,102,102,116,36,18,11,5,22,185,149,2,251,231,47,67,184,9,110,48,91,163,81,41,233,28,0,87,184,198,214,22,17,212,9,112,37,128,30,
18,37,16,134,89,111,91,78,168,107,44,219,0,205,147,240,12,201,177,201,132,150,229,174,254,1,192,146,184,75,191,173,8,70,103,0,122,20,192,108,59,103,69,1,61,144,78,237,23,99,181,141,243,63,79,240,238,62,114,140,71,109,155,69,206,132,20,1,49,35,93,93,19,
122,208,118,219,121,163,226,39,86,255,178,225,130,188,92,79,250,131,64,147,207,165,53,247,89,15,254,52,70,145,40,74,195,184,132,51,62,48,218,220,178,171,117,223,238,253,29,163,13,195,165,104,88,217,140,175,1,248,21,104,38,96,242,34,144,247,219,1,72,182,
190,94,14,242,110,0,249,233,10,142,195,51,234,33,185,13,64,30,192,241,174,188,52,83,218,61,238,140,135,253,255,153,81,6,230,144,166,69,177,38,0,106,11,65,195,206,89,195,37,174,91,62,38,184,70,80,136,228,237,105,98,185,149,128,111,146,240,49,26,220,11,
153,35,65,254,9,224,2,100,136,232,178,170,226,127,4,226,14,8,47,138,26,197,190,54,200,165,210,41,38,137,77,146,166,187,166,162,13,210,233,32,11,37,253,131,174,138,31,39,21,40,112,23,97,182,129,28,1,96,184,75,115,176,61,102,51,42,120,63,220,167,131,179,
180,113,62,8,62,44,96,27,7,98,187,128,5,238,51,64,44,239,5,115,82,30,20,92,217,54,236,59,223,185,122,209,204,45,142,57,72,214,212,9,20,37,210,24,41,25,211,72,21,201,101,243,4,41,215,107,96,241,249,83,190,179,121,251,193,143,27,6,225,50,41,4,229,1,116,
11,128,14,152,236,6,177,76,82,161,203,23,84,198,130,25,155,105,217,32,237,4,104,146,20,105,120,5,78,181,64,40,59,30,114,138,184,68,73,173,160,85,36,154,89,125,4,235,233,185,135,40,128,134,64,114,50,168,73,22,205,185,106,67,172,105,235,22,245,9,116,240,
110,59,35,67,165,10,181,36,160,4,196,86,64,237,160,177,77,226,2,100,212,27,217,1,16,68,140,139,133,252,91,37,93,78,112,143,237,190,40,153,255,72,46,20,218,21,121,186,22,64,60,51,144,19,233,141,133,252,47,18,248,158,85,7,32,39,40,148,149,30,213,88,209,
152,6,113,184,69,128,178,11,6,64,74,187,69,227,154,120,120,161,217,39,16,171,75,87,162,178,180,161,25,192,239,51,18,221,199,48,205,167,243,1,252,193,149,116,119,185,48,70,193,139,27,94,89,249,249,69,197,31,156,127,234,184,150,158,132,169,100,206,151,
206,131,154,82,178,20,237,90,25,73,74,36,192,123,190,183,224,209,249,167,78,184,113,232,144,220,103,33,221,153,86,240,145,20,183,82,22,207,214,18,31,36,120,119,186,114,71,16,40,78,87,216,4,144,247,193,52,35,142,45,163,43,160,74,138,2,41,253,122,82,60,
20,216,154,41,160,217,191,188,1,224,231,182,207,153,234,95,38,109,146,157,146,230,197,67,129,215,227,183,251,19,146,230,218,86,221,169,53,162,93,38,231,244,70,246,112,29,16,244,85,119,161,151,245,57,205,182,124,202,192,114,8,83,65,222,11,137,114,228,
111,203,149,160,128,173,0,166,198,194,129,59,0,20,246,245,172,162,88,56,240,83,72,85,174,104,143,105,249,1,151,133,96,50,112,99,113,60,228,127,199,87,19,61,140,204,9,119,124,7,228,142,119,79,19,253,51,169,21,156,91,85,210,80,15,160,165,247,147,30,36,
194,200,91,218,120,206,227,63,190,198,252,244,226,243,138,235,199,141,200,71,103,119,2,9,51,157,158,36,169,171,59,33,73,40,153,51,182,243,193,159,148,255,112,252,168,161,151,252,239,211,111,34,22,246,43,22,14,252,167,132,159,0,248,155,195,108,74,141,
203,30,136,203,37,243,107,241,80,224,147,146,30,149,240,172,132,152,132,152,128,184,132,66,65,241,228,123,98,76,210,166,216,210,69,31,129,84,13,178,30,74,37,0,236,75,108,164,116,15,18,137,97,241,112,224,128,19,161,11,248,155,211,14,164,167,64,190,16,
11,7,174,151,112,173,160,167,37,29,80,122,67,59,40,61,42,104,86,60,28,120,185,34,24,65,185,85,28,241,38,197,51,5,61,2,96,175,83,94,129,228,78,5,188,96,154,120,144,196,100,130,181,130,86,37,175,11,198,220,69,156,177,176,255,80,60,228,255,124,44,28,32,
137,25,166,105,158,111,146,103,155,52,11,227,97,255,228,120,40,240,182,221,31,79,102,208,230,108,141,245,5,151,33,190,116,81,29,164,41,32,239,3,244,114,150,136,239,144,132,122,144,55,197,66,254,233,177,176,191,197,41,176,232,223,71,108,42,67,85,73,3,
106,155,202,166,18,220,132,99,190,205,94,0,48,11,224,69,146,110,73,207,43,59,92,35,10,106,46,204,45,250,129,127,76,116,229,27,123,119,172,190,63,190,33,231,111,175,238,6,8,152,2,142,43,200,193,85,129,98,204,158,54,226,134,169,227,135,222,58,102,248,144,
237,27,182,182,224,132,137,199,225,130,47,255,21,113,167,146,36,24,205,23,52,150,100,62,172,255,112,208,78,170,13,38,246,198,150,6,18,0,80,94,21,133,93,96,160,100,71,12,88,89,193,244,206,153,51,91,159,51,235,238,249,1,124,193,72,46,128,209,34,10,8,230,
11,106,167,184,47,22,246,239,79,85,213,88,125,40,175,142,166,181,109,24,84,204,46,71,43,175,89,230,165,137,209,52,140,66,64,249,86,96,194,214,88,200,191,59,179,29,231,248,96,77,148,94,96,140,160,66,2,133,16,59,64,117,74,216,27,15,7,146,139,35,253,186,
64,194,148,249,76,93,224,93,247,82,151,215,44,131,97,18,177,165,1,248,106,34,47,75,60,197,101,93,90,36,77,142,135,173,210,51,95,48,146,220,148,86,81,19,29,10,105,36,192,33,36,188,146,58,72,182,75,218,19,15,7,186,92,181,1,192,225,192,202,121,184,122,93,
99,89,37,200,90,244,222,19,113,180,65,75,28,228,39,32,189,9,98,100,239,74,11,217,238,145,152,48,19,107,223,105,95,253,177,47,158,119,253,176,227,61,151,207,109,57,148,127,252,136,130,73,91,1,172,36,249,10,0,96,78,45,204,53,75,250,220,92,159,89,226,228,
150,95,142,230,200,108,171,207,205,82,71,209,230,177,58,215,62,255,227,18,30,76,211,233,133,158,88,216,159,147,165,144,4,190,234,72,177,200,55,232,202,111,82,122,43,22,14,20,31,139,62,29,17,154,106,27,203,190,73,224,6,145,199,234,57,56,182,187,98,46,
128,97,124,22,192,181,217,81,158,254,174,100,182,153,74,116,246,168,237,243,95,57,119,205,99,238,0,111,240,217,136,135,153,135,255,114,132,76,208,68,250,86,31,2,248,69,60,236,255,102,122,154,49,58,5,50,27,73,99,66,170,128,17,148,116,117,60,28,184,203,
41,242,56,186,202,131,195,60,234,26,203,80,89,218,128,218,166,5,223,162,228,118,174,121,244,80,212,26,169,232,116,242,64,143,93,108,174,236,53,48,118,76,106,1,174,166,178,164,62,236,184,15,131,199,17,48,109,117,20,177,165,126,84,212,68,151,18,168,2,210,
133,34,9,205,36,30,18,176,145,192,121,128,46,114,43,81,182,28,181,54,30,246,207,113,82,128,71,45,162,28,201,201,75,27,203,80,93,218,128,218,198,178,79,18,188,255,200,91,200,106,154,237,141,124,184,76,210,59,36,235,209,183,162,69,107,147,26,46,171,42,
109,120,96,16,132,71,99,246,35,144,80,4,160,145,228,44,151,176,158,220,199,152,97,246,82,187,159,132,125,0,78,143,133,253,111,31,51,53,239,72,63,80,215,84,134,202,146,6,212,53,205,31,10,112,21,128,147,113,12,20,111,73,48,104,228,75,10,129,248,130,251,
255,87,165,228,20,110,150,116,106,85,105,195,129,65,16,30,67,80,6,163,113,80,229,189,96,231,174,119,147,99,164,244,188,136,179,250,171,161,252,151,0,49,75,246,165,138,52,174,21,112,10,29,205,254,8,219,117,253,23,129,87,73,150,1,88,109,167,176,156,173,
234,59,0,253,70,202,249,81,85,233,211,230,210,198,249,168,46,93,57,136,160,99,16,96,161,7,136,213,249,225,11,46,59,31,48,62,14,224,100,16,39,2,40,176,245,248,253,34,222,134,105,174,131,97,60,22,15,249,159,176,252,198,84,133,206,255,83,32,186,25,169,174,
105,129,23,210,124,129,119,144,56,49,229,106,28,62,85,166,192,136,95,146,248,46,128,221,0,138,4,125,29,226,175,170,74,235,219,220,81,252,224,49,80,236,24,201,1,153,35,39,58,148,76,2,61,177,112,160,123,32,175,123,76,66,76,199,92,91,64,89,48,135,80,165,
160,185,164,49,93,210,120,119,198,33,61,233,153,246,31,32,109,216,10,18,190,40,211,252,99,245,185,171,14,12,66,227,253,113,12,152,214,81,215,180,32,71,208,104,8,195,0,156,76,242,108,88,149,45,83,32,141,5,112,156,189,209,166,7,208,65,129,123,41,109,22,
176,6,196,211,85,37,13,143,12,78,207,251,231,248,63,7,93,252,0,5,39,158,172,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
const char* cabbageLogoHBlueText_png = (const char*) temp_5e47874a;
//================== logo_cabbage_Black.png ==================
static const unsigned char temp_195998d4[] =
{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,3,67,0,0,2,136,8,6,0,0,0,178,152,33,44,0,0,0,9,112,72,89,115,0,0,23,18,0,0,23,18,1,103,159,210,82,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,
100,121,113,201,101,60,0,0,125,114,73,68,65,84,120,218,236,221,13,116,212,245,189,239,251,223,86,158,73,0,19,132,0,209,4,33,17,81,19,196,86,241,161,13,184,206,86,92,184,15,224,210,91,142,221,128,158,218,85,233,233,62,64,143,246,182,158,163,128,118,219,
238,218,189,129,181,187,171,174,218,139,64,235,209,91,151,192,190,114,43,118,93,33,214,7,112,87,32,161,69,77,160,36,18,30,66,9,2,9,207,88,111,62,191,240,27,39,147,255,127,50,147,76,102,254,51,243,126,173,21,39,201,36,113,242,159,153,240,255,204,247,251,
251,254,254,198,24,243,185,1,0,0,0,128,236,178,233,34,142,1,0,0,0,128,108,68,24,2,0,0,0,64,24,2,0,0,0,0,194,16,0,0,0,0,16,134,0,0,0,0,128,48,4,0,0,0,0,132,33,0,0,0,0,32,12,1,0,0,0,0,97,8,0,0,0,0,8,67,0,0,0,0,64,24,2,0,0,0,0,194,16,0,0,0,0,16,134,0,0,
0,0,128,48,4,0,0,0,0,132,33,0,0,0,0,32,12,1,0,0,0,0,97,8,0,0,0,0,8,67,0,0,0,0,64,24,2,0,0,0,0,194,16,0,0,0,0,16,134,0,0,0,0,16,134,0,0,0,0,128,48,4,0,0,0,0,132,33,0,0,0,0,32,12,1,0,0,0,0,97,8,0,0,0,0,8,67,0,0,0,0,64,24,2,0,0,0,0,194,16,0,0,0,0,16,134,
0,0,0,0,128,48,4,0,0,0,0,132,33,0,0,0,0,32,12,1,0,0,0,0,97,8,0,0,0,0,8,67,0,0,0,0,64,24,2,0,0,0,0,194,16,0,0,0,0,16,134,0,0,0,0,128,48,4,0,0,0,0,132,33,0,0,0,0,32,12,1,0,0,0,32,12,1,0,0,0,0,97,8,0,0,0,0,8,67,0,0,0,0,64,24,2,0,0,0,0,194,16,0,0,0,0,16,
134,0,0,0,0,128,48,4,0,0,0,0,132,33,0,0,0,0,32,12,1,0,0,0,0,97,8,0,0,0,0,8,67,0,0,0,0,64,24,2,0,0,0,0,194,16,0,0,0,0,16,134,0,0,0,0,128,48,4,0,0,0,0,132,33,0,0,0,0,32,12,1,0,0,0,0,97,8,0,0,0,0,8,67,0,0,0,0,64,24,2,0,0,0,64,24,2,0,0,0,0,194,16,0,0,0,0,
16,134,0,0,0,0,128,48,4,0,0,0,0,132,33,0,0,0,0,32,12,1,0,0,0,0,97,8,0,0,0,0,8,67,0,0,0,0,64,24,2,0,0,0,0,194,16,0,0,0,0,16,134,0,0,0,0,128,48,4,0,0,0,0,132,33,0,0,0,0,32,12,1,0,0,0,0,97,8,0,0,0,0,8,67,0,0,0,0,64,24,2,0,0,0,0,194,16,0,0,0,0,16,134,0,0,
0,0,128,48,4,0,0,0,128,48,4,0,0,0,0,132,33,0,0,0,0,32,12,1,0,0,0,0,97,8,0,0,0,0,8,67,0,0,0,0,64,24,2,0,0,0,0,194,16,0,0,0,0,16,134,0,0,0,0,128,48,4,0,0,0,0,132,33,0,0,0,0,32,12,1,0,0,0,0,97,8,0,0,0,0,8,67,0,0,0,0,64,24,2,0,0,0,0,194,16,0,0,0,0,16,134,
0,0,0,0,128,48,4,0,0,0,0,132,33,0,0,0,0,32,12,1,0,0,0,0,97,8,0,0,0,0,97,8,0,0,0,0,8,67,0,0,0,0,64,24,2,0,0,0,0,194,16,0,0,0,0,16,134,0,0,0,0,128,48,4,0,0,0,0,132,33,0,0,0,0,32,12,1,0,0,0,0,97,8,0,0,0,0,8,67,0,0,0,0,64,24,2,0,0,0,0,194,16,0,0,0,0,16,134,
0,0,0,0,128,48,4,0,0,0,0,132,33,0,0,0,0,32,12,1,0,0,0,64,172,122,113,8,0,0,61,161,188,188,220,12,25,50,36,234,215,108,223,190,221,28,59,118,140,131,5,0,32,12,1,0,130,105,240,224,193,102,194,132,9,54,220,232,82,220,199,145,239,119,215,166,77,155,218,133,
165,163,71,143,218,55,247,126,85,85,21,119,8,0,32,33,254,166,245,237,115,14,3,0,64,84,205,41,46,46,182,225,70,111,238,253,174,56,126,230,128,105,62,115,48,234,215,140,26,116,93,151,126,182,11,71,117,117,117,246,77,1,138,160,4,0,136,211,38,194,16,0,100,
113,240,153,60,121,114,40,248,116,22,122,246,29,223,102,47,247,55,111,183,151,205,97,97,39,183,111,65,135,224,147,63,96,172,233,219,43,215,247,231,29,62,81,107,206,126,214,210,238,115,103,90,63,238,123,113,78,232,227,145,23,194,210,208,214,159,213,167,
245,243,250,255,12,234,59,34,250,191,108,173,193,72,1,73,97,73,111,149,149,149,220,217,0,0,194,16,0,164,147,254,57,23,155,5,207,148,153,245,191,248,196,84,191,213,212,237,159,87,81,81,97,195,143,123,243,226,170,57,10,60,10,59,103,206,127,17,86,134,14,
44,177,65,69,33,199,5,148,104,97,167,187,194,43,75,46,128,185,0,165,207,43,24,233,182,40,28,233,50,218,237,81,64,82,48,114,151,245,245,245,60,192,0,0,132,33,0,232,9,37,19,7,155,242,138,124,243,202,210,63,119,249,103,220,179,240,10,115,219,172,81,246,
253,85,79,124,108,54,175,63,20,215,247,187,202,143,222,102,204,152,209,225,250,51,231,155,109,200,56,124,114,151,217,127,124,91,187,202,75,103,225,34,146,107,87,11,231,90,217,252,120,5,50,191,144,230,69,183,95,183,189,169,245,77,193,73,151,46,36,169,
162,164,219,239,194,146,215,237,85,48,210,219,218,181,107,25,226,0,0,132,33,0,64,34,168,162,243,228,218,27,204,128,220,94,102,111,77,139,89,54,175,218,156,106,249,44,174,159,81,88,50,208,60,250,171,137,237,62,23,75,32,154,62,125,122,40,252,104,189,79,
56,5,134,253,199,183,183,6,160,109,182,226,163,208,48,116,64,137,13,13,170,250,248,113,131,11,220,96,3,119,169,64,209,147,21,22,55,141,206,13,109,136,188,244,227,130,145,218,250,116,169,192,52,50,119,130,253,29,117,233,181,78,201,85,141,20,140,104,171,
3,0,194,16,0,160,139,190,245,147,171,76,121,197,208,208,199,39,155,207,219,64,212,80,123,34,230,159,177,224,231,215,154,210,235,59,78,103,139,22,136,150,46,93,106,22,44,88,16,250,216,85,126,246,124,250,251,80,248,81,16,80,32,240,170,248,184,129,4,46,
24,244,116,216,73,84,88,114,235,158,162,13,123,112,193,72,151,58,38,10,128,170,30,141,30,114,107,135,32,168,224,167,80,164,55,29,7,170,70,0,64,24,2,0,196,160,236,171,249,230,161,167,199,119,248,188,2,209,43,75,119,199,212,234,54,229,107,35,205,189,223,
29,227,123,253,210,214,96,85,187,213,251,4,125,197,138,21,230,254,251,239,183,239,87,31,252,141,109,125,27,125,201,173,29,194,143,171,244,184,224,147,73,213,16,173,141,114,3,33,20,148,34,43,100,46,28,185,160,168,214,58,5,196,209,151,124,165,53,32,77,
232,208,86,231,130,17,237,116,0,64,24,2,0,68,241,228,154,47,155,252,145,253,124,175,127,239,181,70,27,138,252,218,230,38,77,27,102,230,60,126,101,212,255,71,103,149,166,240,64,20,25,126,220,91,54,141,160,46,42,42,10,5,35,87,69,10,167,10,218,158,79,223,
182,193,72,1,73,21,180,113,67,239,12,181,214,69,6,163,23,94,120,193,172,91,183,142,7,59,0,16,134,0,0,206,180,7,47,55,211,190,89,212,233,215,41,204,108,124,105,159,121,111,125,163,57,114,224,140,253,156,214,8,77,153,53,202,220,116,215,240,152,254,95,177,
4,34,157,244,187,138,6,251,239,180,15,71,225,131,37,34,55,139,85,40,106,123,123,219,78,207,43,190,228,86,27,142,194,131,145,107,165,91,182,108,25,199,22,0,8,67,0,144,221,194,135,38,36,75,87,214,34,161,35,173,61,82,37,205,107,232,196,71,127,249,173,13,
70,117,71,223,54,185,125,10,76,89,193,189,54,28,133,183,210,169,213,80,213,34,189,209,70,7,0,132,33,0,200,58,177,86,133,8,68,193,166,170,145,66,145,194,81,120,59,157,90,233,62,62,252,186,249,232,240,111,237,32,6,181,208,93,57,244,206,118,235,177,168,
22,1,0,97,8,0,178,78,222,136,190,230,135,107,111,72,217,255,159,64,212,51,252,42,70,218,248,181,186,241,55,182,141,78,20,136,202,134,223,219,174,141,78,235,178,84,41,90,185,114,37,7,18,0,8,67,0,144,185,34,71,105,19,136,50,143,38,212,41,24,133,15,166,
112,131,23,254,176,111,133,105,62,123,48,84,45,26,119,233,157,161,175,209,120,114,85,138,104,161,3,0,194,16,0,100,156,146,137,131,205,194,103,202,2,113,91,8,68,61,111,240,224,193,54,16,105,63,167,240,106,145,70,117,43,20,105,26,157,198,153,107,109,81,
217,240,123,218,181,208,41,20,233,141,80,4,0,193,9,67,23,183,254,103,49,199,1,0,226,167,161,9,223,89,118,77,82,135,38,68,211,187,239,69,230,43,119,143,176,161,168,238,79,205,157,222,246,25,255,109,180,249,206,242,107,76,222,136,126,166,250,173,38,238,
208,24,156,57,115,198,108,217,178,197,44,95,190,220,182,194,105,18,221,184,113,227,236,64,5,85,132,180,137,235,217,207,90,204,142,198,87,204,182,3,47,154,230,51,7,76,254,128,177,102,112,206,165,118,122,221,67,15,61,100,250,245,235,103,135,46,232,103,
1,0,82,170,142,48,4,0,93,116,199,156,203,76,249,228,161,129,187,93,87,223,148,103,43,86,77,7,206,132,70,119,59,90,223,164,65,15,218,203,168,244,250,182,145,210,151,149,230,152,254,173,129,110,231,230,79,185,83,227,80,95,95,111,94,126,249,101,219,2,39,
10,69,121,131,70,217,205,91,175,28,58,213,134,34,13,93,80,48,82,40,82,197,104,216,224,209,132,34,0,8,80,24,162,77,14,0,186,32,213,67,19,98,213,180,255,116,107,40,58,109,223,207,31,209,47,234,134,176,171,158,248,216,108,94,127,200,247,247,157,243,88,105,
232,99,181,226,157,106,62,111,223,87,37,202,181,230,53,212,180,248,110,40,155,233,212,66,167,246,57,189,185,189,139,142,183,134,32,181,207,41,20,137,214,21,125,105,212,3,102,212,160,235,236,199,180,207,1,64,74,177,102,8,0,186,98,193,207,175,13,85,86,
50,133,66,205,83,179,183,118,168,38,57,247,44,188,194,220,54,107,84,76,63,107,175,66,209,133,144,164,64,166,203,108,9,74,46,20,105,109,145,91,87,20,75,40,90,188,120,177,109,191,3,0,16,134,0,32,176,38,77,27,102,219,204,50,145,66,204,143,102,111,243,188,
78,235,140,30,93,61,49,106,117,169,51,174,82,85,187,245,152,169,105,125,203,228,128,228,85,41,210,88,238,119,62,249,87,59,104,65,212,78,167,80,228,54,113,213,244,57,125,253,186,117,235,120,162,1,0,97,8,0,130,231,201,53,95,238,86,32,8,186,245,191,168,
55,235,159,255,196,243,186,158,152,158,167,0,214,80,115,162,53,32,29,181,1,201,175,50,149,73,161,72,211,231,54,254,249,71,118,36,183,11,69,183,92,254,15,161,233,115,26,206,160,175,103,243,86,0,232,217,48,196,0,5,0,136,195,180,7,47,15,228,208,132,68,82,
251,95,85,101,147,57,126,228,92,135,235,20,84,52,108,97,244,53,131,18,23,22,242,251,216,33,14,218,171,73,109,120,101,21,249,166,160,120,128,233,213,231,34,211,88,127,42,237,143,167,6,36,84,86,86,154,103,159,125,214,14,77,152,52,105,146,173,4,105,252,
118,223,139,115,76,99,203,78,115,232,196,78,243,167,67,255,110,62,251,252,172,25,58,96,172,25,123,197,149,118,200,130,194,211,230,205,155,25,178,0,0,61,131,1,10,0,16,43,181,137,61,185,246,134,192,140,210,238,73,61,221,46,23,43,173,99,82,197,72,225,76,
111,153,208,82,87,84,84,100,7,38,204,152,49,163,45,44,157,111,182,173,115,110,61,81,110,159,2,115,75,209,63,216,169,116,162,245,68,170,18,173,92,185,146,39,33,0,36,22,109,114,0,16,43,85,133,52,150,58,91,68,107,151,43,44,25,104,30,253,213,196,164,223,
166,170,202,195,25,19,140,42,42,42,236,88,110,55,100,33,178,117,78,67,22,166,92,241,131,208,122,34,181,206,105,40,131,70,122,3,0,18,19,134,104,147,3,128,24,168,26,242,95,127,120,149,221,216,52,91,168,93,238,189,245,141,158,161,195,181,208,37,123,162,
158,218,231,212,78,119,199,220,203,76,97,233,64,115,238,204,231,105,219,74,167,80,227,166,199,77,152,48,193,238,65,164,214,57,209,128,5,133,34,237,81,36,174,117,78,97,72,173,118,106,187,3,0,116,27,109,114,0,16,139,108,171,10,57,53,31,28,53,203,190,189,
195,247,250,31,172,190,206,174,247,137,149,27,185,237,156,106,57,111,135,39,196,34,111,68,63,27,128,34,255,127,106,165,219,220,26,218,222,124,105,95,218,14,95,80,235,156,170,68,218,144,85,52,117,238,205,61,63,50,77,39,119,217,143,213,58,167,42,145,27,
197,173,205,90,21,140,24,176,0,0,221,66,155,28,0,116,38,155,214,10,121,249,205,191,236,54,27,95,222,239,19,80,250,218,245,67,210,54,38,187,45,220,244,228,70,172,106,209,155,116,215,112,83,254,213,252,14,235,150,20,222,20,140,252,54,143,13,186,233,211,
167,219,80,228,166,206,253,199,190,21,118,127,34,39,114,234,156,246,38,90,178,100,9,79,82,0,32,12,1,64,207,200,214,170,144,163,96,179,108,94,117,40,220,4,73,89,107,32,42,175,200,55,55,181,134,163,112,218,207,200,85,139,210,109,109,145,70,113,43,16,185,
1,11,170,18,189,94,251,63,67,107,137,250,92,156,99,110,187,226,7,161,1,11,172,37,2,128,174,135,33,214,12,1,64,20,217,184,86,40,146,126,247,226,107,114,205,219,107,14,6,238,182,105,189,80,245,91,77,54,244,28,111,58,107,10,138,6,216,10,158,222,180,158,
233,43,119,143,48,131,242,251,152,131,245,39,211,38,20,105,140,246,203,47,191,108,91,225,166,78,157,106,242,6,141,178,21,161,147,231,142,216,182,57,141,223,222,117,228,77,59,133,110,120,206,248,208,90,162,131,7,15,210,54,7,0,241,169,35,12,1,64,20,119,
204,185,204,92,125,83,94,214,31,7,237,5,164,253,133,118,110,254,52,144,183,239,252,217,207,77,221,159,154,109,59,223,222,154,19,173,1,168,183,109,161,83,144,211,158,72,218,191,72,107,142,26,106,91,210,38,20,125,252,241,199,230,165,151,94,178,195,21,20,
120,84,9,210,32,133,79,142,189,111,3,145,246,38,218,213,244,166,201,111,253,156,134,47,168,146,164,201,116,170,20,177,47,17,0,196,22,134,104,147,3,128,40,158,92,243,229,164,236,167,147,46,158,125,100,167,173,196,196,75,235,124,250,95,88,115,149,63,162,
111,235,91,199,99,170,235,245,117,142,223,112,133,240,245,72,82,187,245,152,231,255,83,235,153,166,61,88,100,219,232,194,215,123,189,247,90,163,89,255,124,125,90,13,91,88,180,104,145,93,31,36,199,207,28,176,109,115,110,184,130,124,105,212,3,230,203,173,
111,246,95,246,186,58,27,140,168,18,1,64,167,88,51,4,0,126,38,77,27,102,230,60,126,37,7,34,34,136,116,182,126,232,158,133,87,132,194,79,60,147,230,186,203,77,170,211,109,211,101,77,107,72,210,101,211,129,211,182,50,52,165,245,45,157,67,81,121,121,185,
89,187,118,173,173,254,68,110,212,42,145,251,18,169,117,142,141,90,1,128,48,4,0,93,66,85,200,63,116,40,16,249,181,155,77,249,218,72,115,239,119,199,4,238,54,43,24,169,34,21,121,159,106,115,217,116,25,180,16,57,92,225,163,191,252,214,108,220,243,163,208,
245,145,195,21,244,181,11,22,44,48,199,142,29,227,129,11,0,30,97,136,53,67,0,224,65,85,161,155,238,42,224,64,120,157,144,231,247,49,5,197,253,205,7,191,59,236,121,189,214,238,148,76,28,28,168,32,169,219,172,219,227,53,30,221,13,90,56,119,230,175,246,
182,7,153,27,174,32,218,147,104,232,192,18,51,122,200,173,118,160,130,214,17,185,225,10,162,61,137,180,222,72,67,24,94,127,253,117,2,17,0,120,252,147,69,24,2,0,15,179,31,47,181,39,208,240,86,80,60,192,182,204,249,133,7,181,168,77,154,54,60,109,166,240,
233,118,106,80,134,110,179,218,236,130,222,58,87,89,89,217,110,218,220,213,195,254,179,29,172,112,234,220,17,123,253,254,230,237,102,255,241,109,102,244,37,183,154,194,145,69,182,101,78,129,168,177,177,145,7,47,0,16,134,0,192,159,170,26,119,204,189,140,
3,209,9,133,135,170,202,38,115,252,200,185,14,215,169,229,236,96,221,41,243,165,219,47,77,171,223,73,149,35,237,89,84,88,58,208,236,249,99,115,160,91,231,52,109,78,1,103,210,164,73,54,240,140,205,187,45,52,126,91,180,47,145,166,205,105,45,145,2,211,67,
15,61,100,135,43,48,88,1,0,8,67,0,224,107,206,99,165,172,21,138,209,248,73,151,216,205,77,53,218,58,146,246,0,82,168,80,21,41,221,232,54,219,202,86,159,139,124,167,213,5,129,42,61,26,191,61,110,220,56,115,205,248,114,187,86,72,195,21,52,118,91,206,126,
214,98,219,230,6,244,206,179,45,117,90,107,52,100,200,16,179,97,195,6,30,188,0,64,24,2,128,246,52,5,109,198,119,70,115,32,98,164,74,138,90,204,252,246,31,82,117,37,157,218,229,194,233,54,107,61,81,89,69,190,169,107,253,61,188,42,96,65,224,214,17,105,
202,156,214,8,93,62,228,70,147,219,167,192,212,29,125,219,94,175,117,68,238,125,173,35,82,37,137,253,136,0,128,48,4,32,203,104,18,215,143,127,252,99,179,121,243,102,223,147,192,233,255,109,116,82,199,65,103,2,109,106,170,141,78,85,9,138,164,54,51,13,
38,72,231,141,107,181,118,76,3,22,36,200,85,162,117,235,214,133,246,24,82,21,40,124,131,86,209,58,162,230,51,7,108,245,200,13,86,80,85,137,64,4,32,155,195,208,69,28,3,0,217,160,162,162,194,158,40,106,204,176,246,106,241,162,77,58,181,94,4,241,155,243,
120,169,233,159,115,177,231,117,27,95,222,111,106,62,56,154,246,191,227,180,111,22,153,31,172,190,174,221,198,176,65,163,125,133,52,44,225,232,209,163,54,244,76,31,183,220,142,219,118,180,47,209,186,15,255,187,109,165,83,32,82,117,72,47,18,0,64,182,34,
12,1,200,120,75,151,46,181,39,125,90,43,33,122,223,243,100,247,193,34,14,86,23,169,93,78,97,193,207,170,39,107,50,226,247,84,213,240,209,95,77,108,125,172,92,30,232,64,164,177,219,10,68,170,16,69,6,34,85,136,214,125,52,63,20,136,244,34,129,54,116,5,128,
108,196,166,171,0,50,150,94,241,86,21,72,39,134,142,78,16,181,94,34,114,207,21,85,133,126,184,246,6,14,90,119,131,231,188,106,223,86,50,5,136,104,129,41,221,168,218,165,144,23,212,49,220,10,56,238,69,128,195,39,106,109,0,210,64,5,71,235,138,166,150,252,
163,13,76,122,94,44,91,182,204,134,35,125,189,62,214,232,110,125,191,198,120,3,64,134,218,68,24,2,144,145,194,79,4,195,45,94,188,216,44,89,178,164,195,215,207,126,172,148,22,185,4,104,218,127,218,60,53,123,171,239,72,234,39,215,124,57,163,38,245,105,
175,165,85,79,212,152,234,183,154,2,251,60,208,11,2,122,1,64,149,32,5,34,55,122,91,84,49,82,229,72,129,200,143,130,145,126,198,11,47,188,64,48,2,144,113,97,136,1,10,0,50,206,220,185,115,237,194,112,5,161,93,13,199,205,135,117,71,205,229,195,115,108,59,
208,204,153,51,59,124,189,246,21,186,247,187,99,56,112,9,160,118,185,243,103,255,234,91,29,210,134,166,153,20,58,53,113,78,123,41,245,111,253,189,253,38,234,165,146,70,111,43,196,104,88,130,219,139,40,124,115,86,13,87,208,232,237,225,57,227,77,243,153,
131,166,250,224,111,204,182,3,191,54,251,155,183,217,143,251,247,206,51,131,115,46,181,21,35,173,69,210,112,134,131,7,15,218,61,142,0,32,3,212,81,25,2,144,81,22,45,90,100,171,63,242,78,117,163,121,181,178,206,252,243,63,220,104,63,86,187,156,215,43,219,
11,126,126,173,29,161,140,196,121,234,239,183,218,224,227,229,91,63,185,202,148,87,12,205,184,223,121,111,77,139,89,54,175,58,144,27,181,170,101,84,149,82,133,26,175,10,81,52,249,3,198,154,178,225,247,154,209,151,220,106,250,246,202,181,159,211,207,210,
48,18,54,112,5,144,230,54,49,64,1,64,198,88,177,98,69,40,8,109,216,210,96,22,255,114,171,153,51,117,172,253,88,109,62,94,65,168,236,171,249,4,161,30,112,207,194,43,124,175,83,91,153,218,203,50,141,134,43,60,185,246,134,64,78,155,211,26,57,189,24,160,
117,64,10,52,106,141,83,200,137,133,66,211,198,61,63,50,191,170,250,154,249,143,125,43,108,152,210,207,82,32,82,21,22,0,210,25,109,114,0,210,158,94,245,126,246,217,103,109,27,143,60,253,235,106,179,250,245,93,102,102,69,145,249,187,91,139,236,154,7,181,
247,68,14,77,208,40,232,135,126,50,222,182,118,33,177,180,46,72,129,167,238,79,205,29,174,59,127,246,243,180,223,123,200,143,218,230,180,39,81,211,129,211,190,149,177,84,209,126,66,106,31,117,45,115,195,7,142,183,45,114,110,31,162,206,232,235,52,137,
110,87,211,155,54,72,13,27,60,218,62,175,180,30,73,123,28,1,64,26,98,211,85,0,233,31,132,244,10,181,78,240,92,16,122,227,253,125,102,204,168,92,179,228,193,235,237,231,190,255,253,239,155,13,27,54,116,248,222,59,230,92,102,202,39,15,229,32,246,16,109,
198,250,135,223,253,197,179,109,76,33,73,107,181,50,105,152,66,56,181,1,230,141,232,23,184,193,10,225,129,232,138,203,175,54,151,15,190,33,174,64,36,154,72,167,253,138,100,212,160,235,108,235,29,129,8,0,97,8,0,82,20,132,116,50,214,114,242,156,249,239,
75,223,51,127,248,232,176,25,216,191,151,89,252,141,235,77,222,160,190,246,250,121,243,230,117,248,94,181,50,125,227,31,175,226,32,246,32,85,73,242,71,244,53,31,252,238,176,231,245,13,53,39,108,21,37,83,169,109,78,129,175,170,178,201,86,195,130,20,136,
94,127,253,117,91,73,205,27,52,170,75,129,72,84,37,106,62,115,192,110,238,74,32,2,64,24,2,128,20,6,161,135,127,182,197,236,222,215,214,146,53,255,255,184,218,220,48,254,82,219,30,55,105,210,36,123,242,23,233,191,45,191,198,12,206,239,195,129,236,97,5,
197,3,204,222,214,208,211,88,127,170,195,117,199,143,156,179,151,153,188,102,75,149,175,241,55,93,98,39,205,5,105,176,130,90,70,21,136,102,205,154,21,10,68,59,255,242,239,113,255,28,173,39,34,16,1,72,231,48,196,0,5,0,25,21,132,110,191,97,148,185,227,
198,66,251,190,215,58,33,209,230,159,122,213,30,201,49,231,241,82,187,62,203,203,155,47,237,179,123,19,101,50,61,214,30,93,61,49,112,131,21,52,9,78,131,16,244,162,129,246,25,154,50,250,7,93,250,57,106,153,123,243,207,79,217,247,85,109,98,168,2,128,116,
66,24,2,144,49,65,168,108,108,158,121,228,235,101,246,125,141,253,245,154,30,167,19,210,105,223,44,226,64,38,145,6,84,220,179,208,123,31,39,85,75,86,61,89,147,21,199,96,193,51,101,129,12,68,122,209,64,198,93,122,103,183,2,145,38,205,137,246,53,210,102,
175,0,64,24,2,128,4,211,136,108,175,32,100,7,38,124,99,98,232,100,108,249,242,229,29,190,87,213,137,111,253,100,60,7,49,5,180,209,170,214,207,120,209,6,173,170,16,101,75,32,154,52,109,88,160,110,151,94,52,112,147,24,21,136,174,28,58,181,75,63,231,15,
173,97,104,207,167,191,183,239,235,5,11,189,112,1,0,65,199,154,33,0,105,67,251,8,233,85,108,175,32,244,211,239,220,104,114,6,244,182,251,168,220,121,231,157,158,223,255,95,254,207,18,246,20,74,161,210,214,48,180,121,125,163,231,48,129,61,127,60,110,135,
41,104,232,66,38,211,239,167,73,115,65,27,189,237,54,79,85,219,156,214,255,28,62,81,107,142,158,254,36,238,159,243,201,177,247,205,216,252,219,204,224,156,75,205,184,113,227,204,203,47,191,204,3,31,64,144,49,64,1,64,122,88,186,116,169,121,232,161,135,
236,251,255,184,114,187,169,222,245,169,103,16,210,201,156,215,192,132,41,95,27,105,238,152,123,25,7,50,133,84,25,81,24,208,48,129,72,10,72,123,254,216,108,43,72,217,32,136,129,72,21,34,13,64,80,229,85,3,21,20,108,78,157,59,18,215,207,112,123,17,93,61,
108,186,13,67,122,78,126,252,241,199,60,248,1,4,54,12,209,38,7,32,240,180,32,91,107,128,68,251,8,189,187,227,144,125,191,109,132,246,196,118,65,200,107,96,130,214,105,220,251,221,49,28,200,0,184,109,214,168,172,111,151,115,230,60,126,101,224,90,230,30,
120,224,1,251,92,234,219,43,215,76,45,249,71,211,231,226,248,7,141,104,194,92,248,250,33,218,229,0,4,25,97,8,64,160,85,84,84,216,19,42,89,245,219,90,187,161,170,11,66,170,8,21,228,15,232,52,8,105,157,6,2,20,2,30,243,159,46,183,254,23,245,25,63,93,46,
232,129,72,207,165,186,186,58,51,168,239,8,27,136,186,66,235,135,212,106,55,100,200,144,208,243,23,0,130,136,54,57,0,129,85,84,84,100,23,98,247,235,215,207,108,216,210,96,158,93,243,81,187,32,52,182,112,144,29,11,172,147,183,198,198,198,14,223,111,7,
38,60,61,222,12,29,217,143,131,25,32,157,181,203,169,66,148,201,155,177,70,10,90,203,156,218,76,245,188,211,30,68,195,6,143,54,125,47,206,49,123,143,189,31,247,207,105,60,177,51,212,46,167,159,87,95,95,207,131,31,64,208,176,102,8,64,48,169,181,70,155,
66,106,13,195,174,134,227,230,169,85,219,205,185,243,127,245,12,66,94,107,18,20,132,84,17,98,63,161,96,26,125,205,32,83,211,26,122,142,28,232,184,190,43,27,54,99,13,122,32,210,139,11,7,15,30,180,3,75,134,231,92,109,55,86,85,251,91,60,180,222,72,65,74,
223,175,231,169,215,132,71,0,32,12,1,128,135,103,159,125,214,76,157,58,213,78,142,123,232,233,119,204,137,83,231,61,131,144,155,130,69,16,74,63,209,166,203,169,58,84,86,145,111,6,231,247,33,16,165,136,158,91,106,115,155,52,105,146,25,153,59,161,75,3,
21,26,91,84,29,250,207,102,104,94,219,96,12,175,189,191,0,32,149,97,136,53,67,0,2,103,254,252,249,161,125,79,22,253,114,171,13,66,242,200,125,101,4,161,12,146,63,178,95,212,13,112,87,63,81,147,117,199,68,107,136,130,180,49,235,194,133,11,109,139,155,
6,42,220,54,250,7,113,15,84,56,251,89,139,121,231,147,127,181,239,107,8,10,195,20,0,4,13,149,33,0,129,162,157,235,181,177,170,252,252,213,157,166,114,219,65,251,254,195,247,93,107,166,92,63,50,106,16,178,129,233,151,19,8,66,105,132,118,185,142,174,255,
219,75,205,206,247,62,13,253,254,169,166,231,163,198,218,231,13,26,101,6,244,206,51,117,71,223,142,235,251,213,94,55,122,200,173,246,251,237,250,191,13,27,120,224,3,8,10,42,67,0,130,67,175,26,187,201,83,239,84,55,154,53,149,109,11,174,103,79,29,107,238,
184,177,208,190,175,87,151,253,130,208,236,199,74,9,66,105,40,234,116,185,231,63,49,123,107,90,178,234,120,104,192,132,170,155,121,35,250,6,226,246,104,74,163,214,14,201,184,75,239,52,87,14,157,26,247,207,8,175,14,105,48,10,0,4,5,149,33,0,129,241,227,
31,255,216,158,116,105,157,208,195,63,219,98,7,38,220,126,195,40,243,237,187,199,219,235,213,58,183,114,229,74,223,32,148,45,27,118,102,226,201,191,223,116,57,169,251,99,115,86,77,151,19,29,15,237,199,244,193,239,254,226,185,166,42,217,220,36,56,85,101,
181,126,104,87,211,155,182,5,46,86,205,103,15,218,239,211,184,110,173,67,90,183,110,29,15,124,0,65,64,101,8,64,48,104,63,33,183,177,170,91,39,52,102,84,174,121,228,235,109,123,4,45,91,182,140,32,148,193,162,109,198,170,129,2,217,180,25,171,163,42,103,
144,246,200,90,178,100,73,187,13,89,227,245,135,11,27,177,234,69,13,170,67,0,130,130,48,4,32,229,212,30,231,214,9,189,186,169,206,84,239,58,18,154,28,39,186,78,11,185,189,104,195,74,130,80,102,96,51,86,239,64,164,176,31,20,170,220,106,221,222,208,129,
37,230,75,163,30,136,235,123,247,55,111,55,251,142,111,179,239,47,94,188,152,7,60,0,194,16,0,184,19,35,181,206,28,108,58,105,86,189,94,107,63,183,228,27,19,77,206,128,222,246,149,104,55,89,206,43,8,105,250,22,50,67,180,233,114,167,90,62,51,191,89,250,
231,172,60,46,10,251,83,190,54,50,16,183,69,237,114,174,130,251,229,214,48,148,63,96,108,92,223,79,117,8,64,208,176,102,8,64,74,169,61,78,123,10,137,218,227,26,14,157,8,13,76,208,43,208,122,37,218,107,231,122,141,31,254,175,63,188,202,174,173,64,230,
136,54,93,174,177,254,148,41,44,29,104,10,138,7,100,221,113,185,250,166,60,179,183,230,132,61,6,169,166,1,38,19,38,76,48,227,198,141,51,195,7,142,55,59,255,242,239,49,127,111,248,218,33,97,178,28,128,20,99,205,16,128,212,114,211,227,92,123,92,217,216,
60,51,231,206,18,251,57,191,201,113,106,165,250,214,79,198,219,133,247,200,60,115,162,180,133,101,107,117,200,30,151,199,75,3,179,7,145,42,59,93,109,151,11,175,14,177,239,16,128,84,35,12,1,72,153,69,139,22,153,226,226,98,59,61,78,237,113,90,39,244,200,
125,215,134,66,146,223,192,4,5,33,181,84,33,51,217,118,185,7,47,247,188,78,21,35,173,31,202,70,10,255,179,31,247,95,87,149,76,26,183,237,218,87,227,109,151,211,218,161,227,103,14,216,214,88,191,22,88,0,32,12,1,200,104,90,47,224,214,30,60,253,98,181,157,
30,247,200,125,101,166,32,127,128,169,171,171,11,93,23,233,158,133,87,100,221,38,156,217,104,202,172,81,190,251,236,104,178,220,201,230,243,89,121,92,52,80,225,158,133,99,2,113,91,52,30,219,13,62,185,109,244,15,226,250,94,87,29,242,123,158,3,0,97,8,64,
70,211,168,108,189,50,92,85,219,100,222,221,113,200,220,124,237,48,115,75,89,219,84,56,173,19,210,43,207,145,202,190,154,111,71,48,35,243,169,10,50,237,65,255,97,10,175,44,221,157,181,199,38,72,3,21,186,218,46,247,241,225,215,205,153,243,205,182,50,60,
125,250,116,30,240,0,8,67,0,178,135,134,38,184,29,237,159,89,243,225,133,246,184,182,253,84,52,89,206,107,157,144,170,4,90,51,129,236,58,233,247,219,123,104,243,250,67,89,57,106,219,185,247,187,99,2,177,126,72,47,90,184,234,78,217,240,123,76,110,159,
130,184,2,145,11,84,0,64,24,2,144,53,220,30,35,27,182,52,152,221,251,154,109,16,114,99,180,181,177,163,23,45,170,103,96,66,246,241,91,59,36,235,159,207,206,181,67,46,4,106,237,92,16,214,15,105,109,223,166,77,155,236,102,172,83,174,136,189,93,174,250,
224,111,236,165,94,24,97,204,54,0,194,16,128,172,48,119,238,92,51,121,242,100,59,52,65,85,33,77,143,115,237,113,126,175,16,171,37,136,117,66,217,73,247,59,213,161,47,104,189,212,170,39,107,236,251,26,52,17,148,106,169,123,238,142,26,116,157,41,30,114,
107,76,223,163,49,219,110,19,86,87,41,6,0,194,16,128,140,230,170,66,175,86,214,217,75,55,61,78,107,136,188,218,227,212,10,164,150,32,100,47,170,67,109,52,52,66,147,244,106,183,30,11,77,212,43,175,24,106,55,31,78,53,237,5,230,158,219,183,20,253,131,233,
115,113,78,76,223,247,241,225,223,218,75,6,41,0,32,12,1,200,120,170,10,185,81,218,10,67,119,87,20,135,166,199,185,19,169,72,179,89,39,148,245,168,14,93,8,126,173,1,72,195,35,218,66,224,39,166,230,131,163,246,125,77,151,243,155,188,151,76,122,65,67,207,
101,109,168,90,86,112,111,76,223,179,231,211,183,67,131,20,202,203,203,121,176,3,32,12,1,200,28,58,185,81,0,90,186,116,169,217,182,109,219,23,27,172,182,6,161,156,254,189,219,109,174,234,53,61,78,21,1,141,18,6,178,189,58,164,192,183,241,229,253,237,62,
247,220,247,118,218,106,145,214,210,69,219,168,54,89,186,50,76,225,236,103,45,54,16,9,131,20,0,16,134,0,164,61,45,132,86,248,217,179,103,143,29,136,160,0,164,19,164,9,19,38,216,235,223,169,110,180,97,104,222,204,171,236,199,90,120,173,253,74,34,233,149,
238,41,140,209,198,5,217,94,29,114,235,132,194,21,150,230,132,134,138,232,248,4,97,220,182,158,203,110,152,66,172,163,182,247,124,250,123,123,201,186,33,0,132,33,0,105,75,21,160,141,27,55,134,54,76,117,237,112,10,63,171,126,91,107,126,254,234,78,251,
214,120,228,148,249,233,119,110,236,116,104,2,211,227,16,41,90,117,104,243,250,198,140,253,189,223,123,173,209,174,19,234,236,120,76,251,102,81,32,218,229,92,117,104,220,165,119,154,145,185,19,58,253,250,186,163,180,202,1,72,29,205,228,92,204,97,0,208,
157,16,164,93,232,21,106,116,50,35,26,153,189,250,245,90,243,238,142,70,219,14,55,121,226,8,51,229,250,145,230,203,87,93,106,174,42,30,98,242,6,181,157,176,169,106,164,177,188,145,180,185,234,29,115,47,227,224,162,29,77,79,123,175,53,244,184,117,51,225,
154,14,156,206,200,13,121,213,6,247,111,11,254,104,206,159,253,188,221,231,53,52,225,182,255,82,216,238,115,189,251,94,100,7,142,168,82,150,74,141,141,141,246,111,129,170,193,185,125,11,66,251,9,69,51,164,95,145,221,184,245,244,233,211,102,195,134,13,
60,216,1,36,75,29,149,33,0,93,162,93,227,213,10,167,64,227,170,64,170,0,253,143,127,221,98,175,215,222,65,75,30,188,222,220,61,185,109,72,66,36,237,90,239,55,65,234,222,133,87,112,128,225,105,218,131,222,251,209,28,57,112,198,84,85,30,206,184,223,247,
149,165,187,59,132,63,237,45,164,161,9,94,130,210,46,167,129,40,122,142,107,212,118,44,213,33,90,229,0,164,10,97,8,64,92,180,38,72,237,112,170,6,185,16,244,244,175,171,237,158,65,55,95,59,220,252,243,63,220,104,238,184,177,208,110,162,170,150,57,77,152,
114,39,70,225,244,121,191,161,9,170,0,0,94,202,43,242,125,55,26,125,239,181,67,25,245,187,106,90,156,87,149,71,237,112,209,90,72,131,208,46,167,81,219,122,142,75,44,27,177,210,42,7,128,48,4,32,240,230,207,159,111,3,142,219,52,85,149,160,85,175,215,154,
217,83,199,154,71,190,94,102,198,22,14,178,161,71,213,34,181,200,140,30,61,218,14,81,80,24,26,50,228,139,77,83,245,53,238,68,41,156,78,114,25,154,128,104,20,2,20,136,188,84,191,213,100,219,202,50,129,126,15,207,161,9,37,3,59,109,7,212,49,10,66,117,85,
207,113,61,215,53,106,251,202,161,83,59,253,122,55,85,142,234,16,0,194,16,128,64,25,60,120,176,173,6,185,0,83,85,219,100,158,126,177,218,148,143,205,51,223,190,123,188,109,131,211,73,143,66,143,94,217,125,224,129,7,236,6,170,90,79,228,198,105,107,29,
145,2,148,59,73,242,170,10,169,245,135,161,9,232,76,180,192,156,41,131,20,180,167,144,90,255,34,197,186,239,150,54,99,213,218,187,84,210,115,220,253,205,136,101,178,220,254,230,109,132,33,0,132,33,0,193,162,150,149,200,106,208,238,125,205,118,61,80,121,
73,126,187,16,180,100,201,146,80,200,137,12,66,213,187,142,216,214,57,191,170,144,218,122,110,186,107,56,7,28,157,210,222,83,126,109,96,155,95,75,255,48,164,181,79,145,123,10,73,188,251,110,169,58,228,215,82,152,44,241,84,135,92,101,72,85,101,189,0,3,
0,132,33,0,41,165,64,163,54,55,181,184,237,106,56,30,90,23,164,161,8,162,117,67,58,113,9,15,65,94,65,232,167,47,238,176,173,116,238,228,200,123,173,80,17,7,28,49,187,105,154,119,112,110,168,61,145,214,123,14,217,246,184,39,188,219,227,180,22,40,30,90,
123,151,234,9,123,241,84,135,180,1,235,225,19,181,246,125,170,67,0,8,67,0,82,106,209,162,69,237,2,205,27,239,55,180,91,23,164,147,149,153,51,103,218,133,210,145,1,202,125,159,246,21,82,16,186,253,134,81,161,86,58,170,66,72,132,73,211,252,31,47,53,30,
123,242,164,139,231,190,183,211,115,116,120,172,237,113,29,94,100,8,192,48,133,184,170,67,71,219,170,67,170,68,3,0,97,8,64,74,172,88,177,194,182,190,201,171,155,234,236,165,214,6,137,155,34,167,157,230,35,133,7,33,125,223,154,202,182,160,52,179,162,56,
116,82,68,85,8,137,160,170,135,223,73,126,85,101,83,90,254,78,111,190,180,207,119,115,213,120,218,227,34,165,122,152,66,60,213,33,55,98,155,48,4,128,48,4,32,101,65,72,27,168,138,42,59,99,70,229,218,81,217,162,128,164,106,144,87,160,209,190,67,225,149,
36,181,212,73,217,216,188,80,53,137,170,16,18,169,220,103,64,64,237,214,163,105,247,187,236,173,105,49,175,44,253,115,135,207,151,76,28,28,119,123,92,135,227,84,49,212,254,156,84,10,175,14,21,15,185,213,247,235,154,78,238,98,196,54,0,194,16,128,96,4,
161,219,111,40,12,13,73,80,91,156,214,6,121,158,108,181,158,180,68,174,17,114,238,190,80,21,82,69,137,170,16,18,105,146,79,136,86,155,153,246,232,73,23,90,39,180,108,94,117,135,207,107,248,193,156,199,74,19,242,255,184,39,64,213,161,178,130,123,163,126,
237,254,230,237,246,146,234,16,0,194,16,128,164,209,30,66,145,65,200,85,116,116,82,226,213,22,39,154,250,164,160,227,134,44,132,7,161,225,121,253,205,45,101,109,39,172,174,237,46,28,85,33,116,135,90,199,252,166,165,213,166,209,186,33,191,117,66,115,30,
47,77,216,6,196,58,86,147,166,13,75,233,239,233,194,208,168,65,215,153,145,185,19,124,191,110,223,241,109,132,33,0,132,33,0,201,163,181,62,238,68,197,43,8,105,207,32,63,170,8,169,165,229,96,211,73,243,240,207,182,180,187,46,188,42,20,57,104,65,110,154,
70,16,66,247,148,76,28,226,249,249,116,25,162,240,155,127,217,237,25,220,166,124,109,164,109,111,75,164,84,87,97,85,29,114,21,228,43,135,222,233,251,117,84,134,0,16,134,0,36,141,90,220,92,16,82,139,219,152,81,131,98,14,66,170,38,185,17,184,139,127,185,
213,156,56,117,190,221,245,154,34,231,2,147,151,41,41,30,251,139,244,87,122,189,247,90,152,134,154,150,192,223,246,247,94,107,244,220,79,72,99,180,239,253,238,152,132,255,255,84,101,210,48,134,84,114,21,226,113,151,222,105,114,251,20,120,126,141,91,55,
164,106,115,81,17,109,180,0,8,67,0,122,72,120,139,219,59,213,141,54,204,184,97,9,157,5,161,240,16,165,106,146,54,98,141,12,66,218,100,85,27,182,122,181,216,169,101,103,64,110,47,238,4,116,139,223,96,0,181,157,5,121,191,33,13,76,88,253,100,199,253,132,
212,246,183,224,153,178,30,251,255,234,5,136,84,110,196,170,10,241,166,77,155,236,251,209,214,14,29,110,13,68,238,239,16,0,16,134,0,244,136,240,22,183,170,93,77,161,205,84,181,118,40,90,16,114,223,43,10,81,110,132,118,100,24,10,255,58,175,147,50,160,
187,162,141,156,110,168,13,102,117,72,65,200,107,96,130,40,8,245,228,139,4,250,217,169,222,136,213,85,135,180,231,80,159,139,189,239,63,90,229,0,16,134,0,244,168,240,22,183,213,175,239,50,115,166,150,216,247,85,237,89,185,114,101,212,239,213,134,172,
19,38,76,48,45,39,207,153,167,95,236,120,82,167,193,9,154,66,231,23,134,212,6,212,157,125,83,128,112,126,213,161,134,154,19,129,187,173,154,28,183,250,137,26,239,141,85,31,43,77,202,243,34,213,213,161,202,202,74,91,49,238,219,43,215,140,190,196,123,204,
246,254,11,67,20,244,119,6,0,8,67,0,18,74,125,248,238,213,89,181,184,105,83,84,181,180,169,125,101,225,194,133,49,127,175,130,80,228,58,33,113,85,33,191,193,9,84,133,144,72,10,215,94,130,54,68,193,141,208,110,168,237,24,210,52,48,33,89,147,21,131,80,
29,10,141,217,30,238,221,42,231,218,228,8,67,0,8,67,0,18,78,213,26,173,19,170,170,109,50,5,121,3,66,3,19,92,165,168,179,239,21,125,239,187,59,14,121,126,77,120,24,138,164,87,164,203,43,242,185,19,144,184,48,228,83,77,57,213,124,62,80,183,83,35,180,189,
130,144,214,207,245,196,192,132,104,82,93,29,210,223,17,253,205,25,58,176,196,228,15,24,219,225,250,179,159,181,152,195,39,106,237,251,21,21,21,60,200,1,16,134,0,36,134,198,104,171,15,95,45,110,111,188,191,175,221,58,33,175,77,81,195,233,164,196,245,
240,63,29,182,159,80,184,49,163,114,77,65,254,0,123,162,227,213,110,167,32,196,224,4,36,82,254,136,190,158,159,247,10,30,169,178,234,137,143,61,71,104,171,170,53,231,241,43,147,126,123,82,93,29,210,223,26,247,98,73,103,213,33,214,13,1,32,12,1,72,8,77,
143,115,237,41,175,86,214,217,246,56,209,73,137,223,166,170,225,92,85,104,213,111,107,77,227,145,83,158,95,163,61,138,220,207,244,50,137,189,133,144,96,133,81,214,217,4,97,162,156,130,208,230,245,135,60,131,80,79,78,142,235,76,170,171,67,238,111,145,
214,13,121,13,82,56,124,178,173,50,164,33,47,0,64,24,2,208,109,11,22,44,176,237,113,154,30,215,114,234,92,168,61,78,85,161,206,168,162,164,147,18,85,148,20,164,252,220,124,237,48,223,48,148,55,162,175,41,189,126,8,119,4,18,42,90,165,177,233,64,106,195,
80,103,65,40,149,85,82,253,191,83,217,178,170,137,149,209,6,41,52,177,110,8,0,97,8,64,162,104,240,129,194,144,60,179,230,195,208,244,56,13,67,232,172,61,206,125,157,40,8,121,13,77,144,240,22,57,175,74,83,249,87,89,43,132,158,225,191,223,80,234,214,13,
249,5,33,189,40,144,234,32,228,76,123,48,181,155,154,70,27,164,224,198,107,19,134,0,16,134,0,116,155,194,140,27,154,48,102,212,160,208,134,168,203,151,47,239,244,123,167,79,159,30,83,85,168,211,22,185,187,104,145,67,114,165,106,188,182,95,16,82,91,218,
183,126,50,62,48,235,230,242,71,246,179,3,28,82,197,181,222,106,144,66,110,159,130,14,215,31,63,115,192,94,50,68,1,0,97,8,64,151,169,42,228,90,225,20,102,238,190,176,86,40,150,246,56,113,21,165,104,85,33,233,172,69,142,189,133,208,99,39,245,62,67,20,
130,22,132,84,17,10,218,243,32,149,235,248,218,13,82,40,232,88,29,106,62,115,208,94,178,110,8,0,97,8,64,151,185,208,19,94,21,210,158,66,218,252,176,51,229,229,229,161,105,78,209,170,66,174,69,78,104,145,67,242,195,80,191,148,223,6,237,35,244,212,223,
111,141,186,70,40,136,47,8,104,29,159,95,155,97,50,184,234,80,177,199,186,33,215,42,71,24,2,64,24,2,208,37,154,32,231,42,59,118,148,246,133,170,144,91,3,212,25,247,189,27,182,52,68,173,10,149,141,205,179,151,180,200,33,72,146,181,241,106,180,13,85,131,
28,132,66,207,207,20,86,135,244,226,137,214,25,14,234,59,162,195,158,67,205,23,218,228,24,175,13,128,48,4,160,75,180,145,170,155,32,55,176,127,47,91,21,218,190,125,123,76,85,33,5,41,183,17,235,154,40,85,33,185,229,218,225,190,97,72,237,65,180,200,33,
83,237,173,105,49,79,205,222,26,53,8,5,125,111,173,155,238,26,158,210,49,219,238,239,198,184,161,119,70,132,33,218,228,0,16,134,0,116,67,248,122,31,87,21,114,19,156,226,9,82,187,247,53,71,253,218,242,146,182,54,56,181,223,117,184,174,130,22,57,100,110,
16,82,69,232,200,129,51,105,27,132,156,84,110,194,234,194,80,100,171,28,109,114,0,8,67,0,186,76,235,125,220,88,90,181,184,185,177,215,43,87,174,140,57,12,185,32,21,141,27,156,160,138,83,125,125,61,97,8,73,215,63,5,129,227,189,215,26,205,143,102,111,51,
167,90,62,235,112,157,38,180,165,83,16,106,187,205,193,108,149,59,115,190,57,244,247,12,0,18,173,23,135,0,200,92,110,112,130,214,251,184,53,61,110,177,114,103,194,91,228,222,221,113,40,122,232,26,235,95,21,146,146,137,108,180,138,158,165,42,76,50,253,
230,95,118,155,141,47,239,247,9,21,195,204,156,199,175,12,244,241,170,249,224,168,189,84,107,223,169,230,243,118,115,218,38,143,234,86,50,169,58,164,191,89,106,149,123,231,147,127,13,125,254,240,201,93,102,212,160,235,108,149,26,0,8,67,0,98,246,69,152,
105,52,143,220,87,22,87,24,114,223,187,171,225,184,105,60,114,42,234,215,186,160,229,21,134,116,146,154,78,175,142,35,61,37,107,115,85,13,74,120,101,233,110,207,137,113,114,207,194,43,82,218,110,230,23,124,106,183,30,51,123,107,78,180,134,159,22,207,
150,190,32,112,97,72,173,114,225,97,200,173,27,210,16,133,88,214,58,2,0,97,8,128,109,41,113,27,165,138,219,100,181,170,170,42,174,48,244,198,251,13,81,191,78,67,25,198,22,14,242,13,67,180,200,33,25,146,177,185,106,180,137,113,50,251,177,82,59,136,32,
213,154,246,159,54,85,111,53,181,134,160,99,166,186,245,50,93,184,86,185,33,67,218,90,229,154,78,238,106,11,67,103,15,242,0,7,64,24,2,16,31,55,138,182,106,215,17,115,115,148,73,111,157,125,127,231,45,114,109,85,33,173,23,210,6,138,145,82,185,127,9,144,
40,110,80,130,215,250,160,32,108,166,234,2,208,230,215,26,125,195,90,58,208,11,42,122,33,102,100,238,132,47,194,80,216,120,237,37,75,150,240,96,4,64,24,2,208,185,240,22,185,121,51,175,178,239,199,218,34,87,81,81,17,154,34,215,89,139,156,54,113,117,39,
49,94,180,161,35,144,206,52,40,65,173,113,94,65,72,109,160,179,31,47,77,89,16,170,170,60,220,122,251,14,117,169,2,164,234,177,158,231,225,123,248,184,231,177,170,200,94,195,80,122,154,94,176,209,223,174,209,151,124,197,236,104,124,229,66,24,162,50,4,
128,48,4,32,78,238,4,167,229,212,57,219,34,167,246,147,88,91,228,194,171,74,157,158,80,69,89,47,68,85,8,233,110,253,47,234,205,250,231,63,241,188,78,143,239,111,253,100,124,210,215,196,169,93,111,243,250,70,243,230,75,251,98,94,255,163,23,56,52,89,82,
207,109,93,198,50,170,90,95,147,236,64,228,170,215,26,152,208,231,226,28,115,246,179,150,80,24,114,147,49,1,128,48,4,160,211,19,31,209,240,131,225,121,253,125,195,74,103,97,168,58,150,48,116,97,127,33,181,201,69,42,37,12,33,197,186,243,24,92,245,196,
199,190,131,18,82,49,49,78,33,104,99,107,0,82,8,242,170,82,133,43,42,42,178,21,22,189,133,87,126,194,185,202,175,246,16,179,47,154,244,239,109,198,140,202,181,127,51,52,134,95,195,12,146,221,150,166,86,91,253,45,81,240,81,171,92,221,209,183,67,107,134,
152,38,7,128,48,4,32,174,48,179,123,223,241,78,199,94,123,113,175,192,118,86,25,210,137,147,248,181,212,20,150,14,228,206,64,82,236,77,224,0,133,32,14,74,136,214,170,23,25,128,20,98,34,171,40,10,62,122,62,235,111,130,194,79,180,23,58,110,191,97,148,121,
228,235,101,41,9,67,238,111,149,110,191,90,229,20,134,68,123,13,245,237,149,107,127,199,84,180,239,1,32,12,1,72,195,48,164,19,30,183,94,40,214,48,164,147,13,189,2,171,41,116,177,174,23,242,170,10,9,251,11,33,89,18,53,90,91,131,8,158,251,222,78,207,32,
164,65,9,115,30,47,53,229,21,67,147,246,123,105,44,246,170,39,107,162,182,195,205,157,59,215,6,151,200,10,208,59,213,141,118,205,160,66,80,103,207,229,118,223,167,117,134,173,207,127,181,201,105,93,81,172,237,181,137,162,86,185,5,11,22,152,145,131,190,
8,116,110,175,161,84,180,238,1,32,12,1,72,51,110,61,128,91,47,36,177,158,208,184,87,148,245,10,114,103,162,133,161,188,17,125,217,95,8,41,151,55,162,95,204,95,27,109,98,156,30,207,90,31,148,172,65,9,157,237,103,164,77,145,21,24,244,22,222,62,230,2,144,
2,205,137,83,93,11,136,250,62,125,255,29,55,22,218,144,181,112,225,194,164,222,103,110,47,161,65,125,71,152,220,62,5,140,214,6,208,163,46,226,16,0,153,69,39,73,95,132,161,182,147,161,174,180,200,169,149,166,243,48,148,235,251,243,11,75,114,184,51,144,
52,218,84,212,75,126,107,136,233,110,16,210,196,184,71,87,79,76,90,16,210,132,184,199,102,188,239,25,132,244,252,94,180,104,145,109,77,93,188,120,113,104,234,227,170,223,214,154,191,95,178,201,44,254,229,86,243,198,251,251,186,28,132,28,5,42,113,83,41,
147,205,253,77,113,213,33,134,40,0,232,41,188,108,11,100,24,119,178,160,225,9,225,123,0,197,202,5,169,131,71,78,118,250,181,110,120,130,78,204,34,93,198,122,33,4,64,255,24,170,147,10,31,171,158,168,241,12,66,201,156,24,23,173,26,228,85,9,170,170,109,
178,193,71,111,137,166,253,197,90,82,216,42,167,48,164,182,191,145,185,215,153,143,15,191,206,16,5,0,132,33,0,241,133,153,19,23,166,67,137,198,106,199,251,253,157,85,134,92,85,72,63,219,171,135,159,177,218,72,22,173,171,241,211,89,53,71,131,9,86,63,89,
227,121,93,50,39,198,169,50,181,186,53,144,121,173,85,154,62,125,186,89,182,108,89,232,185,169,16,180,234,245,93,49,77,123,236,10,55,81,206,181,217,166,162,85,206,85,134,134,14,24,203,3,28,0,97,8,64,252,97,72,139,166,163,237,1,228,199,85,150,20,166,162,
113,35,187,253,170,78,133,165,180,201,33,181,52,240,32,29,130,144,95,101,74,195,76,20,130,92,171,154,218,225,86,183,134,160,68,86,130,6,246,239,101,110,185,118,184,93,255,87,214,250,247,98,108,225,160,14,95,227,55,154,187,39,185,117,67,67,7,150,216,253,
134,52,77,46,252,239,19,0,16,134,0,120,10,111,35,25,120,161,50,212,149,239,239,188,50,228,63,60,65,39,161,12,79,64,178,248,173,23,138,22,200,163,5,161,100,142,206,246,219,212,85,19,226,20,132,220,243,81,107,130,94,173,172,235,246,90,160,182,231,110,174,
185,185,53,0,233,205,43,252,168,237,85,111,122,110,171,242,27,79,155,109,34,133,239,55,212,116,114,87,135,191,111,0,64,24,2,208,65,248,30,65,115,238,44,177,239,187,87,89,19,201,85,134,188,214,11,81,21,66,50,53,29,56,237,249,121,191,225,9,65,9,66,94,155,
186,106,109,208,11,47,188,16,170,6,105,237,223,79,95,172,142,105,160,73,52,170,0,105,255,160,219,111,40,236,16,128,20,58,52,206,90,21,100,189,175,141,79,131,192,237,55,164,145,218,123,62,253,61,15,116,0,132,33,0,61,75,11,165,69,237,56,157,41,136,210,
38,167,233,91,64,242,194,208,25,159,48,212,47,144,65,200,111,80,130,158,127,10,66,238,5,13,85,131,212,22,215,29,170,2,205,172,40,182,99,178,195,41,252,184,183,160,132,31,175,48,164,129,17,249,3,198,18,134,0,16,134,0,244,60,215,130,18,203,6,141,209,38,
201,229,143,236,199,193,68,210,52,212,180,120,126,190,48,98,162,97,80,130,144,70,120,71,14,74,208,144,4,5,33,183,225,241,162,95,110,237,214,128,4,173,255,153,51,117,108,232,121,234,94,184,80,235,93,144,3,80,56,247,66,139,42,67,127,216,183,130,7,58,0,
194,16,128,206,185,87,149,11,58,25,112,144,40,94,147,228,168,12,33,89,154,246,159,246,28,137,221,246,56,252,162,93,83,211,218,84,141,9,98,16,210,250,32,5,33,81,91,220,195,63,219,210,229,181,65,106,95,125,228,190,107,219,133,32,253,108,133,160,100,143,
199,78,196,223,22,189,216,162,161,48,35,91,3,17,0,16,134,0,116,202,85,119,14,94,168,238,196,51,86,59,86,101,157,236,95,228,213,158,4,244,72,24,242,89,47,100,31,135,23,42,148,209,54,84,77,230,26,33,175,32,180,116,233,82,219,10,38,27,182,52,152,159,190,
184,163,75,63,91,107,130,230,76,45,49,119,79,46,110,23,130,180,49,171,215,11,22,233,66,127,99,20,134,220,136,109,6,40,0,72,180,139,56,4,0,226,149,211,191,87,212,160,69,155,28,146,197,111,146,156,219,231,74,149,163,32,4,33,13,75,136,12,66,43,86,172,8,
5,33,173,15,234,106,16,186,249,218,97,230,217,71,110,9,5,33,181,193,41,64,60,240,192,3,105,29,132,92,24,146,51,231,219,90,33,85,249,118,107,27,1,32,17,168,12,1,136,91,180,177,218,180,200,33,153,246,214,156,240,252,188,30,135,106,75,123,238,123,59,3,17,
132,34,135,37,40,8,105,51,83,121,250,215,213,93,218,59,72,213,160,121,51,175,10,13,71,80,75,153,126,102,79,76,143,76,21,183,71,218,232,75,110,181,123,13,245,237,149,107,63,167,189,143,210,173,237,15,64,48,81,25,2,208,101,94,149,161,254,236,47,132,36,
106,168,245,27,158,144,99,131,80,100,53,38,217,65,72,67,27,34,131,208,252,249,243,187,29,132,52,37,78,213,32,23,132,180,38,72,85,147,76,10,66,162,223,71,47,186,40,4,233,77,212,42,167,64,164,49,228,0,64,24,2,224,201,181,178,245,132,242,11,107,134,60,247,
24,162,50,132,36,81,11,220,17,159,177,218,27,95,218,231,217,66,55,105,218,176,164,5,161,154,15,142,118,152,94,231,54,83,237,78,16,210,126,65,63,253,206,141,166,32,127,128,125,14,170,74,178,112,225,194,180,152,16,215,21,250,253,212,250,23,142,64,4,128,
48,4,192,147,107,43,201,233,223,59,116,34,209,83,188,194,208,0,42,67,72,18,191,170,80,219,117,39,60,131,208,156,199,175,76,90,80,83,101,42,92,69,69,69,104,106,156,134,37,116,37,8,169,45,238,145,175,151,153,156,1,189,67,155,146,102,90,53,40,146,66,222,
204,153,51,67,235,171,28,253,238,238,120,2,0,97,8,64,59,7,99,216,43,40,146,91,3,20,62,150,215,203,192,11,65,203,11,109,114,72,90,24,242,89,47,228,69,21,203,123,22,142,73,218,109,139,92,171,84,84,84,20,170,110,116,117,106,220,195,247,93,27,26,146,160,
234,210,148,41,83,50,182,26,228,101,249,242,229,246,197,157,240,246,220,25,51,102,152,69,139,22,241,100,0,64,24,2,208,125,177,158,88,141,45,108,27,160,224,245,138,52,109,114,72,150,154,173,177,61,94,251,231,92,108,22,60,83,150,180,170,229,111,254,101,
119,135,202,148,130,144,90,187,180,143,208,51,107,62,236,82,16,114,235,131,180,222,72,109,113,217,72,127,115,20,136,194,135,183,104,124,184,54,173,5,0,194,16,128,80,235,154,22,88,107,39,123,233,202,40,218,129,253,169,240,32,216,106,99,8,67,201,14,66,
90,39,180,241,229,253,237,62,167,189,132,212,210,165,231,227,226,95,110,141,123,67,85,23,132,84,17,81,16,90,185,114,101,86,223,239,154,34,23,25,136,212,46,199,250,33,0,132,33,0,161,48,164,53,67,187,247,29,183,239,199,179,81,161,91,115,228,198,103,199,
27,146,52,197,11,72,70,232,136,133,90,227,46,75,210,99,82,163,188,87,69,12,76,80,197,194,173,117,121,250,197,106,211,24,103,251,106,120,16,82,0,200,246,32,228,168,138,29,30,136,244,55,142,245,67,0,8,67,0,66,253,244,195,243,250,155,150,11,175,64,107,3,
198,120,249,77,163,115,33,201,133,166,72,12,80,64,50,196,82,21,74,230,228,56,89,255,139,250,118,211,237,84,169,112,39,232,175,110,170,51,239,238,56,212,165,32,36,90,27,195,190,58,209,3,145,142,145,166,245,1,0,97,8,200,98,238,196,160,160,53,12,185,202,
80,60,97,168,179,202,16,16,4,157,173,23,74,246,192,4,175,246,56,5,161,174,174,19,154,89,81,212,110,141,80,166,79,140,235,78,32,82,8,114,47,2,105,176,4,237,114,0,8,67,64,22,115,109,114,154,8,231,90,114,226,25,175,237,78,42,8,67,8,178,104,149,33,173,19,
154,253,120,105,82,171,148,175,44,253,115,187,143,213,30,167,147,116,249,233,139,213,113,253,172,155,175,29,102,190,125,247,248,80,16,162,53,46,186,250,250,250,208,148,57,133,79,183,143,19,0,16,134,128,44,61,49,112,90,78,181,13,80,136,167,50,228,42,75,
106,179,139,87,201,68,94,145,69,207,235,108,189,208,180,111,22,37,109,157,144,188,247,90,99,187,233,113,225,237,113,171,126,91,107,118,239,107,142,249,103,233,121,247,200,125,101,246,125,253,12,130,80,108,212,66,168,224,168,191,95,154,46,7,0,132,33,32,
139,69,174,231,81,24,138,181,117,196,181,227,184,241,217,145,202,199,230,217,75,175,13,87,129,100,136,86,21,82,32,191,109,214,168,164,221,22,13,77,120,101,233,238,118,159,211,201,184,42,20,7,155,78,154,213,175,239,138,235,231,45,254,198,68,187,161,170,
78,234,31,120,224,1,238,236,56,172,91,183,206,92,119,221,117,237,94,16,2,0,194,16,144,133,92,117,71,173,110,85,181,77,246,253,120,90,229,220,247,151,93,8,62,94,8,67,72,149,104,235,133,230,60,86,154,212,219,178,241,165,125,29,54,87,253,98,122,92,124,27,
171,206,158,58,214,190,8,161,118,47,215,98,7,0,32,12,1,232,98,24,82,21,199,181,232,116,37,12,149,71,9,67,64,170,248,85,134,166,61,120,185,201,31,217,47,105,183,67,85,161,55,91,195,80,56,183,94,69,47,66,84,239,58,18,243,207,210,190,96,115,238,44,177,239,
43,76,81,221,0,0,194,16,128,46,114,109,114,26,162,80,181,43,254,202,80,232,251,9,67,8,152,104,235,133,38,77,27,158,212,219,18,89,21,170,168,168,8,85,116,226,173,10,205,155,121,149,189,92,187,118,45,235,132,0,128,48,4,160,59,244,170,114,100,27,219,132,
9,19,98,94,55,20,30,166,128,32,241,171,10,105,148,118,170,171,66,110,225,254,134,45,13,113,109,174,122,251,13,163,236,115,77,237,113,174,197,14,0,64,24,2,208,13,95,84,119,242,237,62,39,18,235,58,132,240,48,165,49,191,177,210,9,41,208,147,252,214,11,37,
123,146,161,87,85,200,85,95,227,25,154,48,176,127,47,187,86,72,212,98,71,123,28,0,16,134,0,36,128,218,109,68,67,16,222,120,191,33,174,48,20,254,253,10,83,177,74,230,190,46,200,62,170,198,248,85,134,74,175,79,110,24,122,111,125,99,187,143,93,69,39,222,
170,208,221,21,197,166,32,127,128,125,241,97,201,146,37,220,201,0,64,24,2,144,8,174,50,164,233,84,238,228,76,97,40,222,86,185,120,42,67,64,79,170,221,234,191,94,168,100,226,144,228,5,161,215,26,205,145,3,103,66,31,107,130,156,123,161,33,222,170,144,194,
144,176,55,14,0,16,134,0,36,208,177,99,199,66,213,29,109,228,168,61,79,92,32,138,133,246,236,208,26,6,189,106,173,73,87,64,170,213,124,224,223,34,151,204,170,228,102,159,170,208,59,213,141,113,175,21,210,158,66,170,10,49,52,1,0,8,67,0,18,204,133,33,189,
250,252,106,101,157,125,95,187,180,199,251,253,51,47,188,122,13,164,146,111,139,92,18,215,11,53,237,63,221,238,118,168,210,234,158,83,238,57,22,43,170,66,0,64,24,2,208,195,97,200,85,119,220,43,214,90,228,173,182,158,88,188,240,194,11,246,242,150,107,
135,115,48,145,82,90,47,212,80,123,194,243,186,100,14,79,136,172,10,169,210,58,100,200,16,91,121,141,103,95,33,181,159,234,121,169,231,39,85,33,0,32,12,1,232,1,225,173,114,55,183,6,26,181,241,72,172,227,123,43,43,43,109,11,143,90,121,212,210,211,153,
189,53,39,56,232,232,17,85,149,77,190,215,149,94,159,196,245,66,17,97,168,171,85,161,219,111,40,180,151,110,147,86,0,0,97,8,64,15,8,175,238,188,187,163,49,116,2,23,235,32,5,119,178,22,75,24,58,213,114,158,3,142,30,225,55,60,33,153,85,161,189,53,45,29,
6,39,184,113,218,239,238,56,20,243,207,209,26,190,91,202,134,183,123,126,2,0,8,67,0,122,128,170,59,219,183,111,183,213,29,55,72,65,109,61,177,86,135,220,201,154,54,133,212,152,110,32,21,106,2,176,94,104,243,107,29,91,228,164,170,182,41,174,193,9,110,
66,163,38,54,178,175,16,0,16,134,0,244,176,240,234,142,27,253,27,107,117,72,173,118,46,16,197,82,29,2,18,77,67,11,194,43,50,225,202,42,242,147,118,59,34,7,56,184,48,244,198,251,251,226,250,57,110,13,30,85,33,0,32,12,1,72,2,45,208,214,218,31,45,216,22,
85,135,138,139,139,99,174,14,185,105,87,119,220,88,24,250,220,132,9,19,56,176,72,10,191,170,80,255,156,139,205,101,165,57,73,11,100,225,3,28,244,66,130,107,145,171,138,99,112,130,246,22,82,149,85,220,94,94,0,0,194,16,128,30,230,2,205,236,169,99,67,213,
33,133,161,88,170,67,106,229,137,172,14,169,213,14,72,6,255,245,66,201,123,12,214,248,84,133,118,53,28,143,171,69,206,85,133,212,186,74,139,28,0,16,134,0,36,73,120,117,72,175,78,187,181,67,177,238,113,226,190,206,85,151,188,52,29,56,205,129,70,143,7,
17,167,244,250,228,173,23,138,12,100,95,12,78,104,140,235,231,184,117,119,110,202,35,0,128,48,4,32,73,92,160,153,51,181,196,60,179,230,67,251,190,170,67,229,229,229,157,126,111,120,117,200,143,223,186,14,160,171,162,173,23,42,44,25,152,178,64,214,149,
22,57,25,51,106,144,189,164,69,14,0,8,67,0,146,76,213,33,55,89,174,124,108,126,104,223,161,88,247,58,9,175,34,105,205,17,208,211,26,106,91,124,175,75,214,254,66,145,129,76,35,181,221,227,191,58,206,245,66,99,11,219,194,144,166,60,2,0,8,67,0,146,204,13,
77,184,123,114,177,121,227,253,6,211,114,242,156,125,149,123,254,252,249,157,126,175,170,67,46,16,17,134,144,12,53,31,120,183,200,37,115,127,161,200,64,230,134,135,104,164,118,60,92,85,72,47,72,0,0,8,67,0,82,64,175,72,187,245,10,179,167,150,152,85,175,
215,218,247,21,114,98,105,151,83,21,73,129,202,111,154,92,205,7,71,57,200,72,152,218,0,236,47,212,80,115,194,51,12,237,222,215,28,103,24,202,181,151,90,187,7,0,32,12,1,72,17,237,49,116,244,232,81,219,178,147,211,191,183,125,133,91,195,20,180,38,168,179,
233,114,218,119,104,249,242,229,166,170,170,138,3,137,158,15,34,181,39,60,63,159,204,202,208,222,136,48,228,214,11,237,222,119,60,174,159,83,144,215,54,124,132,202,16,0,16,134,0,164,144,2,141,2,145,204,185,179,196,188,90,89,103,219,229,244,138,119,172,
235,135,252,156,106,57,207,1,70,66,68,171,50,22,38,105,127,161,182,64,214,190,77,206,181,136,30,140,99,164,182,184,202,16,97,8,0,8,67,0,82,108,221,186,117,161,118,185,121,51,175,50,79,191,88,109,223,87,72,154,59,119,110,215,79,28,107,78,112,112,145,16,
126,45,114,154,34,55,32,183,87,210,110,71,228,52,187,174,12,79,8,167,170,44,0,128,48,4,32,197,20,124,220,222,67,119,87,20,155,159,191,186,211,126,94,237,114,211,167,79,231,0,33,165,246,250,4,235,194,210,228,141,212,214,36,185,112,110,93,157,246,233,138,
87,121,73,190,189,100,205,16,0,16,134,0,4,128,218,229,102,204,152,97,95,169,214,137,154,214,52,108,216,210,16,10,68,177,12,84,136,228,183,65,38,16,47,191,177,218,201,108,145,139,220,72,88,107,235,164,49,206,22,185,112,154,202,8,0,32,12,1,8,0,13,66,8,
31,183,173,214,31,55,80,65,27,67,118,37,16,1,221,117,178,249,124,32,54,91,141,92,3,231,38,201,29,236,70,24,2,0,16,134,0,4,136,54,99,117,251,7,61,242,245,50,243,206,142,70,179,171,225,120,151,2,81,45,149,33,36,64,67,77,234,55,91,109,187,29,237,91,245,
18,81,25,2,0,16,134,0,4,204,146,37,75,108,107,156,124,251,238,241,118,67,214,174,6,34,160,187,162,13,79,0,0,128,48,4,32,225,30,120,224,1,223,64,164,113,192,177,78,153,99,227,85,116,87,228,90,29,39,111,68,191,148,222,46,215,38,215,114,234,28,119,18,0,
16,134,0,100,67,32,122,167,186,209,126,172,207,47,90,180,40,134,19,217,51,28,72,116,51,12,121,63,134,46,43,29,152,228,219,225,61,64,97,247,190,102,238,36,0,32,12,1,200,134,64,84,181,171,41,52,101,78,107,139,54,110,220,104,6,15,30,236,251,253,71,124,94,
213,7,98,229,219,38,151,244,48,68,176,7,0,194,16,128,172,15,68,242,244,175,171,77,203,201,115,102,242,228,201,118,175,148,138,138,10,207,239,221,203,198,171,232,78,0,217,239,31,166,83,221,38,7,0,32,12,1,200,162,64,228,198,110,223,113,99,161,153,89,81,
108,158,126,177,186,221,96,5,175,182,57,42,67,232,86,24,138,242,248,185,44,137,123,12,37,154,94,72,144,162,162,34,238,100,0,32,12,1,72,7,203,151,47,183,149,32,109,204,58,182,112,144,121,228,190,50,179,166,178,46,212,54,167,77,91,35,53,212,82,25,66,215,
249,61,126,242,70,244,77,235,223,107,247,190,227,246,178,184,184,152,59,25,0,8,67,0,210,69,101,101,165,157,162,165,137,114,57,3,122,219,189,136,10,242,250,219,235,220,116,173,72,76,148,67,87,157,106,62,239,249,249,252,20,180,200,229,247,64,0,35,12,1,
0,97,8,64,154,169,175,175,55,215,93,119,93,104,115,214,242,146,252,208,117,94,107,135,168,14,161,171,106,2,180,199,80,100,0,211,90,57,25,51,42,55,238,159,85,181,235,8,97,8,0,8,67,0,210,153,54,103,117,85,34,199,171,58,212,80,211,194,193,66,66,13,200,237,
149,242,219,224,194,80,78,255,222,113,127,111,227,145,83,190,207,23,0,0,97,8,64,154,168,170,170,178,85,34,13,87,208,90,34,239,48,68,101,8,93,227,23,164,211,125,146,220,65,194,16,0,16,134,0,100,14,13,87,80,203,207,218,181,107,59,158,208,210,38,135,46,
58,213,242,153,231,231,243,83,48,64,33,114,95,35,133,127,25,51,106,80,220,63,171,58,172,77,46,218,62,93,0,0,194,16,128,52,113,236,216,49,179,110,221,58,207,235,24,162,128,120,157,244,25,158,144,42,253,115,218,183,230,185,246,208,156,254,93,107,217,211,
88,122,209,132,70,0,0,97,8,64,6,171,245,89,8,15,248,137,182,214,172,48,5,123,12,69,14,80,112,149,161,225,23,166,41,198,203,85,135,8,67,0,64,24,2,144,225,106,8,67,72,160,84,12,80,200,31,217,62,12,105,189,156,20,228,15,232,210,207,171,218,213,100,47,189,
246,231,2,0,16,134,0,100,16,38,202,33,19,68,142,244,118,19,229,202,198,230,197,253,179,222,221,113,200,94,106,221,80,81,81,17,7,23,0,8,67,0,50,149,22,194,239,37,16,33,158,0,29,192,193,27,145,83,236,220,186,161,130,46,182,202,189,83,221,104,47,169,14,
1,0,97,8,64,134,171,174,108,226,32,32,246,0,237,51,64,161,127,206,197,41,187,77,151,69,76,148,115,97,168,43,19,229,228,221,29,109,97,232,254,251,239,231,14,7,0,194,16,128,76,198,186,33,36,66,42,134,39,56,37,19,219,143,193,222,180,105,147,189,236,74,155,
156,188,115,33,12,105,191,161,242,242,114,238,92,0,32,12,1,200,84,154,40,23,180,113,201,64,119,130,152,171,12,141,45,28,100,6,118,97,196,246,137,83,231,205,134,45,13,246,125,109,92,12,0,32,12,1,200,232,64,196,126,67,72,95,154,98,151,23,182,225,171,246,
214,114,129,168,188,139,213,161,55,222,223,103,47,181,110,136,13,88,1,128,48,4,32,131,85,177,110,8,105,174,212,167,85,174,124,108,126,151,126,158,246,27,58,216,116,210,12,25,50,132,234,16,0,16,134,0,100,50,214,13,33,221,149,76,28,226,25,134,110,190,118,
88,151,127,230,234,215,119,217,75,6,41,0,0,97,8,64,6,59,114,224,12,35,182,145,214,202,43,218,87,128,214,173,91,103,47,181,249,234,240,46,142,216,86,171,156,170,67,218,115,104,209,162,69,28,100,0,32,12,1,200,84,155,95,107,228,32,160,203,82,189,129,175,
214,13,69,110,190,186,118,237,90,123,153,136,234,144,90,229,88,59,148,120,43,86,172,176,65,147,99,11,128,48,4,32,165,170,222,98,221,16,186,78,27,248,166,218,164,187,134,123,134,161,219,111,40,236,242,207,116,213,33,214,14,37,222,244,233,211,109,11,226,
226,197,139,237,241,5,0,194,16,128,148,161,85,14,233,174,252,171,249,158,97,72,35,182,199,140,202,237,242,207,125,250,197,29,246,82,39,237,236,59,148,24,170,4,45,91,182,204,190,175,245,93,245,245,245,28,20,0,132,33,0,169,69,171,28,58,19,185,193,105,144,
228,143,236,215,174,85,78,35,182,95,120,225,5,251,126,119,170,67,154,44,247,78,117,219,115,195,157,192,163,123,20,44,181,22,75,220,125,4,0,132,33,0,41,69,171,28,186,35,8,155,247,250,183,202,141,234,214,207,125,102,205,135,166,229,228,57,51,121,242,100,
51,127,254,124,238,236,110,168,168,168,8,181,28,30,61,122,212,172,92,185,146,131,2,128,48,4,32,245,104,149,67,119,52,4,224,177,51,105,90,251,48,164,169,114,117,117,117,38,103,64,239,110,5,162,198,35,167,204,170,215,107,237,251,170,14,209,46,215,53,106,
143,11,175,4,81,105,3,64,24,2,16,40,27,95,218,199,65,128,175,252,17,253,2,125,251,52,85,110,210,180,246,211,227,220,9,247,236,169,99,187,245,179,215,84,214,135,218,229,116,66,207,4,180,248,233,184,185,246,56,85,133,8,67,0,8,67,0,2,165,170,146,86,57,68,
9,67,35,253,195,80,211,129,51,129,184,141,145,213,33,157,128,235,196,91,123,14,149,141,205,235,214,207,126,250,197,106,59,93,110,194,132,9,172,117,137,147,70,104,207,152,49,163,93,72,213,186,46,0,136,230,226,214,183,197,28,6,0,201,114,254,236,231,38,
111,68,63,115,89,105,14,7,3,158,222,124,105,159,125,156,68,186,172,116,160,41,189,62,245,35,146,21,216,20,234,143,31,57,103,63,62,115,230,140,233,215,175,159,93,239,83,144,215,223,142,203,238,170,115,231,255,106,7,42,220,117,203,229,102,220,184,113,118,
36,244,134,13,27,120,80,116,98,238,220,185,237,170,64,10,167,179,102,205,178,247,13,0,68,81,71,101,8,64,210,109,94,207,84,57,248,43,244,9,202,77,7,78,7,230,54,78,153,213,126,125,144,78,196,117,2,94,94,146,223,237,234,208,238,125,205,230,233,95,87,219,
247,53,8,64,39,250,240,167,245,85,145,237,112,84,133,0,196,138,48,4,32,233,106,183,30,51,77,251,79,115,32,224,169,127,78,47,159,48,20,156,87,249,111,186,107,184,201,27,209,55,244,177,78,188,221,9,249,35,247,93,219,237,159,175,234,210,171,155,234,236,
251,106,151,35,16,249,7,33,237,35,20,190,169,170,6,90,176,86,8,0,97,8,64,160,173,127,158,77,16,225,77,237,112,94,26,2,54,137,112,218,131,69,237,62,118,213,33,173,29,234,238,168,109,209,184,237,13,91,26,8,68,49,4,33,141,37,119,84,77,163,42,4,128,48,4,
32,208,180,230,34,8,251,198,32,120,242,124,38,202,157,106,249,44,80,143,25,175,234,144,54,251,148,121,51,175,50,3,251,247,234,246,255,227,167,47,238,32,16,117,18,132,118,53,28,55,7,143,156,178,159,215,231,52,238,28,0,98,197,0,5,0,41,161,5,242,131,242,
251,152,209,215,12,226,96,160,125,232,105,13,60,155,215,31,242,188,110,252,164,75,162,78,156,75,182,252,214,48,244,193,239,14,135,62,222,178,101,139,157,104,118,249,101,163,204,37,185,125,205,187,59,14,117,251,255,161,159,49,60,175,191,25,91,56,200,254,
108,85,159,244,255,201,86,211,167,79,183,155,221,186,32,244,238,142,70,51,229,250,145,246,184,76,157,58,149,170,16,128,120,48,64,1,64,234,188,201,158,67,240,16,109,98,92,67,237,137,64,221,214,242,138,161,166,100,98,251,253,128,212,166,37,119,220,88,216,
237,97,10,78,120,133,72,237,120,43,86,172,200,202,199,198,252,249,243,67,65,168,170,182,201,182,18,222,93,81,108,175,83,85,174,190,158,246,91,0,241,33,12,1,72,153,35,7,206,152,247,94,99,178,28,58,42,44,73,143,117,67,114,207,194,43,218,125,92,89,89,217,
110,152,66,34,218,229,92,32,114,83,230,238,191,255,126,179,109,219,54,83,84,84,148,21,143,7,109,64,171,0,232,142,171,130,225,195,63,123,223,182,35,230,12,232,109,219,227,150,47,95,206,19,7,0,97,8,64,122,217,72,117,8,94,97,200,119,136,194,137,192,221,
86,237,153,53,229,107,35,219,125,78,85,10,77,53,211,48,5,157,176,39,138,166,204,253,143,127,221,98,7,6,104,99,214,237,219,183,219,182,177,76,230,214,7,41,0,202,207,95,221,105,131,225,195,173,65,83,173,131,106,143,11,223,108,21,0,8,67,0,210,134,218,158,
106,62,56,202,129,64,68,24,202,241,125,188,4,113,240,198,180,111,22,117,24,166,224,78,222,213,46,151,136,233,114,142,54,101,125,232,233,119,236,122,25,181,139,169,109,108,205,154,53,182,122,146,105,22,45,90,100,3,159,130,159,2,160,130,224,154,202,122,
123,60,117,92,69,65,136,117,66,0,186,138,1,10,0,82,78,251,199,104,50,23,224,156,59,243,215,180,25,162,32,189,251,94,100,91,251,194,111,179,91,191,50,121,242,100,83,62,54,207,252,225,163,191,152,79,155,207,38,228,255,119,226,212,121,179,254,221,189,246,
125,109,244,58,110,220,56,243,208,67,15,153,131,7,15,154,170,170,170,180,191,255,43,42,42,108,200,155,53,107,150,253,248,157,234,70,243,240,207,182,152,134,67,39,204,152,81,185,230,71,243,190,108,63,175,10,220,202,149,43,121,194,0,232,170,58,194,16,128,
148,211,218,33,45,66,15,218,9,46,82,71,143,133,245,207,127,226,125,221,136,126,81,135,44,164,242,54,171,106,85,247,167,230,208,231,180,126,72,97,168,180,100,140,249,210,184,161,182,205,237,220,249,191,38,236,255,169,42,81,85,235,219,152,81,131,204,200,
97,131,109,149,68,255,63,181,232,165,227,48,1,173,129,210,186,32,189,21,20,20,216,106,208,243,255,207,199,230,217,53,31,217,227,166,32,244,211,239,220,104,250,244,190,216,134,165,121,243,230,241,100,1,64,24,2,144,254,168,14,33,82,205,214,99,54,40,71,
210,232,237,175,220,61,34,144,183,249,234,155,242,236,30,90,199,143,124,177,9,168,171,112,20,142,188,180,53,16,93,106,54,109,59,144,208,64,212,120,228,84,168,74,164,80,164,224,165,22,189,116,10,69,106,241,251,254,247,191,111,247,82,154,52,105,146,253,
156,134,36,60,250,220,31,90,3,223,167,246,99,13,162,80,16,202,27,220,207,182,206,41,248,157,57,115,134,39,10,128,110,133,33,214,12,1,8,132,218,214,19,95,214,14,33,92,233,68,239,53,48,65,93,55,228,204,126,188,212,244,207,185,56,244,177,214,179,184,253,
129,180,224,63,145,3,21,194,173,126,125,151,93,75,228,70,112,43,12,105,240,192,198,141,27,109,219,89,16,169,18,164,41,113,58,54,106,121,115,35,179,181,54,72,67,18,212,14,24,30,132,52,144,66,65,72,191,27,235,132,0,36,194,223,180,190,125,206,97,0,16,4,
90,115,241,232,175,38,114,32,96,41,28,47,251,246,14,207,235,190,245,147,171,236,30,63,65,85,85,121,216,60,247,189,15,219,125,78,83,209,116,34,47,10,44,58,217,239,41,218,164,117,246,212,177,161,33,3,162,42,145,218,207,84,169,74,117,181,104,238,220,185,
161,234,85,232,152,181,134,160,85,173,129,78,173,127,225,92,16,114,147,227,244,61,153,176,46,10,64,32,108,162,77,14,64,96,168,181,40,111,68,63,59,170,24,208,26,28,109,204,123,254,108,199,215,236,122,247,185,40,208,97,168,160,120,128,189,84,197,211,105,
108,108,180,129,68,85,34,157,216,43,176,188,187,227,80,143,252,255,85,81,209,207,214,26,37,185,108,216,64,51,236,210,124,51,117,234,84,187,41,172,110,67,191,126,253,236,192,133,100,84,88,212,6,167,255,183,107,133,83,219,96,113,113,177,189,78,195,17,150,
255,223,127,178,149,45,181,252,17,132,0,36,81,29,149,33,0,129,162,241,196,143,174,158,104,6,228,246,226,96,192,60,251,200,78,83,253,86,147,231,227,228,135,107,111,8,252,237,95,245,196,199,29,166,226,169,42,162,64,32,61,93,33,10,167,113,212,55,95,59,220,
220,82,214,126,109,158,2,154,218,233,244,166,202,85,34,194,134,218,223,52,14,91,111,10,48,225,21,32,57,216,116,210,6,53,189,69,6,32,71,195,18,22,127,99,162,109,141,35,8,1,232,33,155,8,67,0,2,103,218,131,151,219,125,91,128,247,94,107,52,171,159,172,241,
188,238,7,171,175,75,139,42,226,210,121,213,237,42,68,145,129,72,149,145,167,95,172,14,173,143,233,105,170,182,220,210,26,138,188,130,145,163,80,164,0,162,128,36,122,223,181,248,133,211,26,31,5,30,209,165,251,88,151,145,180,47,146,90,224,222,120,191,
193,236,222,215,28,245,54,186,169,113,57,3,122,135,170,105,4,33,0,132,33,0,89,65,139,207,85,29,98,212,54,52,40,225,225,255,244,158,231,117,83,190,54,210,220,251,221,49,105,241,59,44,107,13,68,26,252,16,25,136,180,134,71,193,65,65,65,251,232,36,43,16,
133,43,27,155,103,247,65,210,36,58,133,16,85,98,18,65,107,128,20,122,170,118,53,217,241,223,177,254,110,170,96,61,242,245,178,80,40,99,88,2,0,194,16,128,172,83,246,213,124,243,208,211,227,57,16,240,172,172,72,186,180,202,69,11,68,26,170,160,234,139,2,
145,246,212,89,244,203,173,29,6,8,36,155,42,71,10,70,57,23,46,69,235,155,10,90,223,60,67,207,133,219,219,114,234,156,13,63,106,123,243,107,125,235,204,195,247,93,27,26,250,160,65,15,26,178,64,16,2,64,24,2,144,149,22,252,252,218,64,110,174,137,228,210,
16,133,87,150,254,217,243,186,116,105,149,139,22,136,180,190,70,39,254,174,221,108,213,111,107,237,48,129,108,162,138,212,195,247,149,217,65,9,162,49,219,75,150,44,225,193,15,160,199,195,16,211,228,0,4,150,54,221,156,52,109,184,233,221,151,45,209,178,
217,160,188,62,102,227,203,251,61,175,211,84,57,109,116,154,14,244,56,190,254,111,47,53,199,155,206,182,11,68,170,124,188,244,210,75,166,160,160,192,6,162,242,146,124,219,182,22,79,107,89,58,155,89,81,100,30,105,13,66,110,80,130,38,205,61,247,220,115,
60,240,1,36,67,29,97,8,64,96,157,106,249,204,158,236,82,29,202,110,154,44,184,183,230,132,105,172,239,216,122,213,88,127,210,220,49,247,178,180,249,93,20,136,52,18,188,233,192,233,118,129,232,204,153,51,102,221,186,117,118,88,128,214,200,20,143,202,179,
107,103,206,158,255,204,124,84,159,153,109,98,170,6,253,207,185,19,204,223,221,90,100,250,244,190,216,182,11,78,154,52,137,65,9,0,8,67,0,224,104,173,72,89,69,190,25,156,223,135,131,145,197,206,157,253,171,231,136,109,237,65,84,88,58,48,180,175,79,186,
80,32,210,158,90,145,191,147,130,128,170,68,170,16,149,150,140,49,95,190,234,82,59,245,109,239,161,19,93,94,135,19,52,90,147,244,224,223,93,105,135,36,184,106,144,246,31,154,55,111,158,13,133,0,64,24,2,128,240,191,84,127,108,54,95,185,123,4,7,34,139,
229,183,6,135,223,191,122,192,115,3,214,115,103,62,55,95,186,253,210,180,251,157,180,214,73,65,255,131,223,253,165,221,239,165,182,185,149,43,87,218,144,160,74,201,200,97,131,237,80,1,13,51,248,176,254,104,218,182,206,41,4,205,250,79,87,216,106,144,90,
1,69,107,165,52,54,123,195,134,13,60,200,1,16,134,0,192,203,241,35,231,236,37,237,114,217,75,237,101,106,137,139,28,62,32,106,159,211,218,178,116,220,168,87,21,79,5,253,61,173,129,255,200,129,246,85,145,45,91,182,152,103,159,125,54,180,150,232,242,225,
57,230,238,201,197,118,178,155,166,182,165,75,40,10,15,65,95,30,127,169,109,137,115,123,7,253,211,63,253,19,211,226,0,16,134,0,160,51,106,151,43,153,56,152,189,135,178,152,218,202,222,94,115,208,243,58,5,161,116,13,203,10,122,55,221,53,220,244,111,253,
29,246,252,241,120,187,42,145,91,75,164,13,90,221,134,166,154,184,166,80,164,33,11,26,103,173,22,186,32,82,104,155,51,181,196,14,71,8,15,65,11,22,44,48,15,60,240,128,169,175,175,231,65,13,32,229,97,136,209,218,0,210,232,100,184,175,221,140,53,29,43,0,
72,140,167,254,126,171,103,117,72,27,245,254,243,255,119,115,218,255,126,77,251,79,155,85,79,214,120,238,171,36,26,195,173,177,211,218,127,199,57,216,116,210,188,187,227,144,121,227,253,6,91,49,74,37,85,129,110,185,118,184,29,254,224,90,225,236,217,70,
107,8,210,237,86,251,31,0,4,8,251,12,1,72,47,108,198,154,221,222,123,173,209,172,110,13,11,94,102,63,86,106,43,44,153,242,123,190,178,116,183,157,168,232,23,138,20,136,84,101,81,197,40,50,24,189,179,163,49,105,155,183,170,2,164,42,149,6,61,220,82,214,
254,248,107,77,208,178,101,203,76,101,101,37,15,94,0,132,33,0,72,132,123,22,94,97,110,155,53,138,3,145,133,180,113,233,99,51,222,247,12,9,170,28,254,112,237,13,25,245,187,110,124,105,159,221,116,214,47,20,201,244,233,211,237,250,155,240,106,145,83,85,
219,100,247,43,218,189,239,184,173,26,37,98,34,93,89,107,240,209,88,108,13,116,80,8,210,68,184,112,219,183,111,183,109,125,10,66,180,194,1,32,12,1,64,15,248,193,234,235,236,52,46,100,159,245,191,168,55,235,159,255,196,243,186,5,63,191,54,227,6,109,168,
117,110,253,243,245,102,243,250,67,157,126,173,11,70,118,175,162,226,98,207,175,81,64,18,133,35,173,57,10,125,254,66,37,169,32,175,191,173,246,56,122,223,125,46,50,248,132,206,38,54,109,178,225,135,0,4,128,48,4,0,73,160,53,34,79,174,189,129,245,67,89,
72,225,224,177,153,255,225,121,157,134,108,44,124,166,44,99,127,111,85,137,54,175,111,140,90,41,114,212,74,167,80,164,161,11,122,211,251,137,160,245,63,170,254,232,77,33,136,22,56,0,132,33,0,72,129,194,146,129,230,209,95,77,228,64,100,161,85,79,124,236,
91,41,201,196,234,80,56,181,207,41,16,41,24,69,142,227,238,204,224,193,131,109,48,114,147,233,156,240,143,181,191,145,130,142,227,62,214,165,54,133,5,0,194,16,0,4,196,164,105,195,204,156,199,175,228,64,100,153,108,173,14,69,218,91,211,98,54,191,214,24,
115,181,8,0,208,62,12,177,207,16,128,180,166,49,203,218,159,101,244,53,131,56,24,89,68,237,145,77,7,78,123,142,217,86,181,36,91,246,164,210,166,173,87,223,148,103,238,152,123,153,41,171,200,55,189,251,92,100,206,159,253,107,104,163,98,0,64,84,108,186,
10,32,253,237,220,252,169,221,144,147,129,10,217,165,127,78,47,223,86,185,166,214,64,148,41,99,182,227,13,70,95,185,123,132,153,50,107,148,25,125,77,174,41,40,106,27,120,112,170,249,124,187,205,92,1,0,109,97,136,54,57,0,25,131,9,115,217,103,233,188,106,
223,13,74,51,125,237,80,188,180,214,168,161,166,197,156,106,209,229,137,176,224,120,218,134,71,23,48,171,223,106,226,96,1,200,22,172,25,2,144,57,52,97,110,193,51,101,4,162,44,162,53,51,63,154,189,205,243,186,108,90,59,148,168,176,180,172,53,92,122,181,
30,2,64,166,134,33,218,228,0,100,12,181,1,125,240,187,191,152,241,55,93,98,91,134,144,249,116,63,71,91,59,68,251,36,65,8,0,162,168,187,136,99,0,32,147,104,162,150,78,234,84,49,64,118,152,246,96,145,239,117,218,172,20,4,33,0,240,67,101,8,64,198,161,66,
148,93,162,77,150,115,227,166,89,59,228,239,151,255,235,35,83,187,237,24,7,2,64,54,162,50,4,32,51,81,33,202,46,247,44,28,99,215,140,121,209,230,164,170,126,160,35,109,94,203,192,4,0,217,140,202,16,128,140,69,133,40,123,244,238,219,182,191,142,215,100,
57,61,14,142,55,157,53,229,21,67,57,80,17,65,200,111,52,57,0,100,9,42,67,0,50,27,21,162,236,49,237,155,69,38,111,68,95,207,235,116,210,95,243,193,81,14,146,105,91,35,244,212,223,111,37,8,1,64,43,194,16,0,2,17,50,198,189,11,175,240,189,238,149,165,127,
38,8,49,44,1,0,218,161,77,14,64,86,80,171,212,219,107,14,50,106,57,195,21,20,15,48,53,91,143,217,177,218,145,142,31,57,103,47,179,117,152,2,65,8,0,58,160,77,14,64,118,89,253,100,141,93,80,143,204,53,231,177,82,223,235,116,223,55,237,63,157,117,199,68,
85,81,130,16,0,116,68,101,8,64,214,217,185,249,83,59,138,153,5,245,153,73,163,182,197,111,152,130,2,193,77,119,13,207,186,32,116,228,224,25,30,28,0,208,94,29,97,8,64,86,210,9,177,218,169,202,43,242,237,36,50,100,150,194,210,28,243,135,223,253,37,180,
207,80,56,181,208,101,75,187,228,123,175,53,154,255,235,127,125,228,121,28,0,0,180,201,1,200,98,170,28,60,53,123,43,131,21,50,144,170,67,209,218,229,94,89,186,59,227,247,30,82,75,160,218,66,9,66,0,224,143,202,16,128,172,166,19,69,237,69,52,40,191,15,
131,21,50,76,254,200,126,54,240,212,253,169,185,195,117,106,151,59,88,119,202,124,233,246,75,51,238,247,214,239,252,191,255,169,214,188,177,170,129,7,1,0,68,71,155,28,0,232,196,184,250,173,38,187,142,168,100,226,16,218,230,50,200,232,107,6,153,223,191,
122,192,222,199,145,26,235,79,153,254,185,189,236,215,100,10,13,135,248,183,5,127,52,59,55,179,167,18,0,16,134,0,32,14,90,71,180,243,189,79,77,241,53,185,102,112,126,31,14,72,6,80,176,45,40,238,111,62,248,221,97,207,235,247,252,241,184,249,210,223,94,
26,26,186,144,206,180,169,236,178,111,51,40,1,0,8,67,0,208,69,218,139,70,109,115,58,137,206,164,138,65,54,211,222,67,123,107,78,216,74,80,164,76,153,46,183,254,23,245,102,245,147,181,158,21,48,0,0,97,8,0,98,166,19,74,141,223,214,9,244,248,155,46,161,
109,46,3,232,126,140,54,93,78,210,113,51,86,173,15,250,217,130,63,154,205,235,15,113,39,3,0,97,8,0,18,71,149,4,173,55,81,155,149,170,11,72,95,10,180,133,37,3,125,67,131,38,11,150,76,28,108,135,46,164,139,170,202,195,118,255,32,175,138,23,0,128,48,4,0,
221,166,42,145,214,155,80,37,74,127,209,166,203,137,246,157,154,52,109,120,224,239,99,253,14,107,255,109,143,121,101,217,30,218,226,0,128,48,4,0,61,207,85,137,24,193,157,222,180,14,76,67,50,180,54,44,146,90,232,130,62,110,91,67,18,212,22,247,33,211,226,
0,128,48,4,0,201,228,70,112,171,130,80,88,58,144,137,115,105,72,85,31,77,11,212,144,140,116,26,183,237,170,65,47,253,100,55,155,168,2,0,97,8,0,82,71,11,238,223,94,115,208,158,160,234,164,153,214,185,244,162,16,171,251,76,67,50,188,232,243,101,21,249,
129,9,187,90,27,244,220,247,118,82,13,2,0,194,16,0,4,232,47,232,159,154,105,157,75,83,10,177,126,227,182,93,32,74,245,250,33,109,160,186,234,137,26,243,255,62,255,9,213,32,0,232,161,127,202,255,166,245,63,172,190,4,128,110,210,164,178,123,22,94,145,150,
227,153,179,149,42,123,79,205,222,26,26,173,29,73,211,229,22,62,83,150,146,219,166,125,131,222,124,105,31,33,8,0,122,214,38,42,67,0,144,0,90,144,175,177,205,90,79,148,63,162,111,90,141,104,206,86,170,250,40,240,168,229,209,139,66,146,2,211,213,55,229,
37,237,54,169,37,78,3,18,170,223,58,194,164,56,0,232,121,180,201,1,64,34,233,4,90,161,168,233,192,105,83,88,146,99,6,228,246,226,160,4,152,214,5,105,96,130,223,250,33,181,66,230,141,232,215,227,109,144,154,18,183,234,201,26,243,198,170,6,170,65,0,64,
24,2,128,244,214,80,123,194,108,124,121,63,161,40,13,104,253,144,238,39,221,103,94,106,183,30,181,123,76,245,196,64,5,173,11,122,101,233,110,187,103,144,95,187,30,0,160,231,194,16,107,134,0,32,9,212,142,53,237,193,203,89,83,20,80,106,135,91,54,175,218,
55,16,229,141,232,107,30,93,61,49,97,161,86,33,104,253,243,245,182,138,8,0,72,153,77,132,33,0,72,114,40,186,109,214,72,83,94,49,148,131,17,48,10,40,26,168,224,215,166,166,33,25,143,254,106,34,33,8,0,8,67,0,128,238,80,165,225,182,89,163,236,248,102,90,
232,130,67,107,119,150,125,123,135,239,245,147,166,13,51,115,30,191,50,238,159,187,183,166,197,108,124,105,31,33,8,0,2,22,134,88,51,4,0,41,160,234,131,22,237,107,159,162,198,250,147,118,145,126,80,54,249,204,102,154,2,24,109,160,130,218,232,116,189,214,
25,197,66,211,225,254,247,63,237,50,235,126,94,231,219,130,7,0,72,25,214,12,1,64,80,168,13,107,202,172,81,166,188,34,159,106,81,138,173,122,226,227,168,85,156,217,143,149,154,155,238,26,238,121,157,214,31,109,94,223,104,247,9,98,40,2,0,4,26,109,114,0,
16,52,253,115,46,182,129,168,237,141,181,69,169,208,217,64,5,221,71,11,158,41,107,55,114,91,45,118,10,65,180,194,1,0,97,8,0,144,0,90,91,84,254,213,124,51,233,174,225,61,190,215,13,58,6,162,199,102,188,239,59,80,65,129,104,206,227,165,166,161,230,132,
121,175,53,4,81,5,2,0,194,16,0,128,96,148,49,52,248,64,21,34,54,66,5,0,194,16,0,32,64,193,168,116,226,96,90,233,146,64,67,16,158,251,222,135,28,8,0,32,12,1,0,130,168,236,171,249,166,244,250,193,182,114,164,137,104,72,172,247,94,107,52,171,159,172,225,
64,0,0,97,8,0,16,100,225,85,163,146,137,67,152,76,151,32,157,77,152,3,0,16,134,0,0,1,163,145,221,133,165,3,109,48,82,72,162,114,68,32,2,0,16,134,0,32,43,105,10,154,130,209,101,54,32,13,110,13,74,57,84,143,98,196,64,5,0,32,12,1,0,50,140,90,235,10,75,114,
108,64,82,21,73,239,83,65,106,27,175,221,208,26,128,106,183,30,51,85,149,77,190,251,14,1,0,8,67,0,128,12,163,202,81,126,107,80,202,31,209,207,134,164,254,57,189,76,233,245,67,50,242,119,85,213,231,200,129,211,118,223,160,189,173,111,13,181,45,236,29,
4,0,132,33,0,0,188,131,146,148,94,184,116,97,169,127,110,175,64,238,131,212,180,255,180,105,106,13,59,167,90,206,219,192,99,171,62,181,39,236,231,8,61,0,64,24,2,0,32,161,180,62,169,48,44,24,185,42,147,95,176,138,43,220,180,6,24,85,114,34,169,170,163,
192,35,167,46,4,30,0,0,8,67,0,0,0,0,112,33,12,93,196,49,0,0,0,0,144,141,8,67,0,0,0,0,8,67,0,0,0,0,64,24,2,0,0,0,0,194,16,0,0,0,0,16,134,0,0,0,0,128,48,4,0,0,0,0,132,33,0,0,0,0,32,12,1,0,0,0,0,97,8,0,0,0,0,8,67,0,0,0,0,64,24,2,0,0,0,0,194,16,0,0,0,0,16,
134,0,0,0,0,128,48,4,0,0,0,0,132,33,0,0,0,0,32,12,1,0,0,0,0,97,8,0,0,0,0,8,67,0,0,0,0,64,24,2,0,0,0,0,194,16,0,0,0,0,194,16,0,0,0,0,16,134,0,0,0,0,128,48,4,0,0,0,0,132,33,0,0,0,0,32,12,1,0,0,0,0,97,8,0,0,0,0,8,67,0,0,0,0,144,22,122,113,8,128,236,83,94,
94,110,150,45,91,150,212,255,231,130,5,11,76,85,85,21,7,63,6,27,55,110,76,234,255,111,251,246,237,102,225,194,133,28,120,0,0,97,8,64,230,27,50,100,136,153,60,121,114,210,255,159,136,77,178,239,27,0,0,178,21,109,114,0,0,0,0,8,67,0,0,0,0,64,24,2,0,0,0,
0,194,16,0,0,0,0,16,134,0,0,0,0,128,48,4,0,0,0,0,132,33,0,0,0,0,32,12,1,0,0,0,0,97,8,0,0,0,0,8,67,0,0,0,0,64,24,2,0,0,0,0,194,16,0,0,0,0,16,134,0,0,0,0,128,48,4,0,0,0,0,132,33,0,0,0,0,32,12,1,0,0,0,64,252,122,113,8,130,173,162,162,162,221,199,19,38,76,
48,67,134,12,105,247,185,77,155,54,181,251,184,178,178,146,3,215,77,229,229,229,237,142,179,222,215,177,143,20,121,236,101,251,246,237,230,216,177,99,28,196,0,61,119,34,159,55,225,247,27,207,151,212,62,191,34,159,91,122,254,28,61,122,148,231,82,55,12,
30,60,184,195,223,171,226,226,98,251,22,78,199,89,199,56,242,115,85,85,85,28,196,56,143,113,228,223,152,240,199,49,199,52,216,255,190,79,158,60,185,221,245,117,117,117,246,45,252,227,250,250,122,14,28,97,8,61,169,168,168,200,254,33,213,155,158,148,126,
39,222,241,114,127,140,117,226,167,39,179,62,230,15,242,23,127,12,117,98,160,227,236,78,18,188,78,22,18,117,31,184,63,174,238,228,131,63,174,137,189,47,245,188,113,247,101,228,63,108,177,112,247,139,158,43,238,146,147,240,196,252,109,115,247,141,123,
139,124,49,39,22,238,126,113,247,13,207,157,182,176,239,254,102,185,227,218,213,227,219,217,243,34,252,111,153,187,204,166,23,17,116,172,195,255,198,116,245,223,103,119,252,120,44,39,47,172,234,126,115,207,147,174,252,219,224,21,146,194,239,67,206,169,
50,195,223,180,190,125,206,97,72,254,9,194,140,25,51,236,19,211,133,159,100,210,31,96,247,150,13,255,160,69,158,144,117,247,15,98,162,79,52,82,113,2,174,127,220,189,170,90,61,73,199,61,17,143,183,100,61,127,116,124,214,174,93,107,223,146,125,194,242,
249,231,159,39,253,111,194,148,41,83,18,242,179,166,79,159,30,186,127,18,253,226,66,248,73,137,238,151,23,94,120,33,43,78,70,92,224,15,63,33,15,2,119,98,232,254,61,201,148,251,66,39,210,122,12,187,183,158,62,134,217,244,88,238,73,250,219,19,254,60,73,
22,221,127,238,223,11,194,109,90,218,68,24,74,226,63,102,247,223,127,191,253,195,26,148,127,200,220,9,121,248,19,57,83,94,13,119,127,20,131,118,188,131,114,2,158,110,97,200,157,156,44,88,176,32,169,255,200,133,255,99,167,147,149,117,235,214,17,134,162,
4,32,253,141,75,197,9,249,178,101,203,236,253,147,41,127,191,194,79,198,83,241,130,89,182,254,123,162,199,177,251,119,58,85,225,178,59,143,101,87,193,74,214,109,93,185,114,101,96,238,179,160,60,79,244,226,128,238,63,130,81,122,133,33,115,33,12,241,214,
3,111,173,255,160,125,62,119,238,220,207,183,109,219,246,121,58,248,244,211,79,63,95,177,98,197,231,173,127,80,211,242,120,235,118,235,246,235,247,200,4,122,220,204,159,63,223,62,142,122,226,88,37,91,87,30,87,229,229,229,246,62,13,138,61,123,246,216,
231,116,79,63,150,147,109,227,198,141,93,250,251,182,104,209,34,123,76,130,244,247,171,168,168,40,173,255,189,88,179,102,205,231,153,66,247,71,235,201,106,224,143,189,142,123,80,30,199,238,177,172,231,86,188,127,251,245,61,65,254,155,145,168,55,61,199,
151,46,93,26,248,127,235,245,92,78,215,243,169,44,123,219,72,24,234,161,127,212,244,71,41,157,79,202,147,117,210,151,168,19,136,32,253,67,150,14,39,121,65,15,67,10,65,255,63,123,103,143,30,213,209,180,225,145,63,7,206,120,119,128,181,2,65,246,102,152,
204,153,204,10,132,87,32,88,129,196,10,36,86,32,148,189,153,32,116,36,17,58,2,86,0,132,142,176,86,48,223,60,99,55,62,140,103,70,103,102,206,233,170,234,186,239,235,58,151,248,149,230,244,79,117,61,85,213,221,90,108,179,206,15,207,98,40,130,125,147,163,
52,70,16,97,44,199,174,165,32,206,186,249,226,173,79,188,175,29,26,19,10,136,33,134,254,89,183,34,6,11,212,86,136,34,196,16,34,40,184,35,174,119,162,173,253,68,90,135,16,69,94,197,144,250,213,83,38,168,79,246,78,194,45,139,24,146,99,22,101,206,233,115,
122,14,232,20,17,148,9,47,235,137,247,96,203,178,249,217,199,238,183,42,134,180,118,68,234,175,117,109,54,198,122,193,131,24,114,243,68,114,18,162,103,138,90,111,235,62,108,83,66,225,93,12,169,156,38,106,191,14,237,224,121,19,67,90,192,163,148,251,46,
123,55,79,25,137,140,34,104,217,122,98,85,62,87,83,48,12,45,36,239,178,161,173,137,161,86,231,74,164,204,53,98,136,167,183,83,25,213,73,24,51,66,69,91,215,113,40,182,141,50,121,19,67,45,44,120,26,155,67,205,13,79,98,72,65,144,232,193,7,125,126,15,123,
87,50,102,179,215,161,146,167,90,78,161,230,102,11,235,199,186,160,100,75,98,40,67,128,153,210,57,196,80,19,143,212,125,86,54,169,99,166,173,253,245,133,23,49,36,71,168,37,129,171,197,123,136,50,8,47,98,168,181,121,103,85,162,21,57,179,230,57,168,211,
247,137,156,117,222,68,16,181,32,134,178,205,21,178,68,136,161,176,15,11,219,63,198,112,236,73,220,74,52,111,108,148,89,137,38,134,90,19,66,125,163,183,81,196,80,171,165,92,155,206,149,33,54,233,147,13,186,59,136,48,86,230,78,193,162,44,54,38,186,24,
202,90,2,63,100,85,1,15,98,136,133,45,112,36,124,149,232,164,173,199,113,242,172,197,80,203,66,104,8,65,100,45,134,90,223,211,82,171,60,139,140,118,221,32,66,22,65,95,88,20,144,81,197,144,230,98,75,71,202,123,243,165,120,16,67,108,188,12,186,136,233,
251,193,120,130,200,82,12,101,16,66,187,206,11,75,49,148,197,129,215,24,28,83,16,101,63,36,193,122,45,201,208,254,139,14,116,68,49,68,165,205,184,190,20,15,98,136,133,45,232,36,70,8,237,134,156,89,207,98,40,91,4,112,155,121,97,37,134,178,205,61,141,69,
214,139,246,34,228,153,218,191,43,234,163,137,33,170,63,16,68,94,196,208,119,19,184,147,153,97,157,60,125,250,148,134,184,131,87,175,94,77,102,147,120,167,239,113,120,120,56,255,62,176,61,207,158,61,155,183,163,71,142,143,143,39,191,252,242,11,243,194,
33,51,199,100,114,126,126,158,170,111,52,22,101,223,89,47,252,240,159,255,252,103,242,250,245,235,201,204,193,223,234,255,207,4,65,170,246,127,240,224,193,228,244,244,52,220,231,214,26,117,115,115,51,239,111,136,185,102,180,6,170,144,8,147,139,168,6,
81,162,97,163,171,235,54,100,90,100,134,90,221,200,60,70,180,219,34,51,148,185,84,101,168,83,230,216,35,100,155,181,203,92,85,32,155,30,37,51,68,245,7,25,34,202,228,16,66,41,216,244,100,32,165,249,117,196,42,212,89,172,44,196,80,118,52,190,251,238,81,
1,27,103,114,151,245,66,54,15,236,214,145,236,193,52,217,151,8,98,136,181,167,174,93,226,161,76,110,39,178,165,218,199,72,243,170,236,166,47,42,139,248,241,199,31,105,184,1,249,233,167,159,38,51,67,74,67,56,65,227,155,18,80,191,236,82,154,117,255,254,
125,250,118,4,250,150,109,170,223,212,127,153,75,174,100,95,84,34,237,25,249,4,234,39,216,204,46,109,226,75,193,118,32,134,150,160,90,205,136,53,184,158,208,162,36,231,160,143,115,161,125,36,114,220,97,120,24,199,190,208,30,21,141,119,240,105,179,182,
117,212,178,59,226,99,58,248,125,246,78,72,52,17,76,155,184,30,131,10,24,176,71,104,92,95,10,16,67,131,145,113,19,241,88,244,217,216,41,3,137,195,62,30,18,153,106,99,240,37,80,233,19,191,243,101,211,141,203,18,183,178,117,48,14,119,101,59,180,17,159,
42,14,223,144,185,219,221,151,194,47,29,151,189,201,95,245,114,240,247,132,85,228,130,133,109,120,7,227,237,219,183,75,255,206,219,201,75,239,223,191,159,143,1,61,127,254,249,231,202,207,221,29,51,26,47,50,242,250,170,71,239,235,201,232,203,136,62,127,
254,252,155,63,83,249,156,222,17,108,144,99,240,228,201,147,149,127,63,157,98,150,173,208,188,87,150,225,246,246,182,215,154,241,233,211,39,55,243,93,159,93,243,186,216,49,253,254,195,135,15,107,255,143,2,128,250,252,122,231,98,191,188,173,129,250,108,
159,63,127,94,218,254,122,87,178,66,245,209,248,122,252,248,113,175,127,123,117,117,149,238,20,209,49,80,27,190,121,243,134,134,24,97,56,79,38,108,156,226,36,32,163,141,227,58,237,204,203,231,211,73,103,235,78,95,155,108,177,153,90,27,76,61,160,83,194,
38,108,98,13,181,49,22,108,233,115,87,215,196,209,69,220,178,53,155,30,90,179,238,145,45,212,187,121,57,212,70,246,217,115,251,115,64,207,234,39,243,41,162,67,163,3,66,198,188,40,58,241,115,77,102,40,64,164,188,68,250,20,229,43,95,11,37,35,81,50,48,37,
75,225,13,149,6,189,120,241,226,155,63,155,57,28,166,27,62,213,142,250,249,151,151,151,163,142,43,213,251,90,71,46,53,38,186,145,238,200,153,33,205,1,61,138,200,47,206,7,181,115,247,241,188,23,77,159,253,225,195,135,77,101,134,74,159,116,237,85,151,210,
31,158,109,213,93,217,8,79,89,33,205,97,217,214,187,50,216,187,160,195,132,172,75,153,151,101,82,85,106,170,246,247,156,57,137,190,110,239,154,25,82,31,233,221,61,189,91,119,237,40,239,177,72,177,83,165,218,195,83,230,241,174,170,2,32,51,180,245,227,
237,88,103,169,127,29,235,189,109,164,79,81,61,69,99,60,221,27,178,236,222,27,203,99,80,117,135,69,173,8,139,126,142,117,95,44,102,33,162,101,134,212,95,154,15,155,246,153,254,189,254,159,215,99,242,87,221,35,17,9,141,237,109,51,171,58,14,89,89,24,143,
71,34,107,204,120,142,120,175,202,150,140,241,88,31,91,173,159,61,113,126,245,69,89,183,183,61,10,89,109,236,109,221,222,53,51,228,165,58,162,248,83,219,174,249,250,127,178,213,90,135,188,87,21,240,112,207,208,214,143,151,84,187,140,169,62,203,144,78,
186,12,172,151,9,220,45,61,177,188,147,227,46,39,167,69,65,180,120,169,100,20,49,164,190,26,170,124,81,223,199,155,3,165,32,76,84,49,36,71,103,200,69,89,206,134,55,81,180,110,236,89,206,231,33,75,226,162,8,162,110,95,120,41,177,30,107,221,214,188,242,
34,36,182,21,67,214,193,130,49,250,197,203,58,178,106,221,224,65,12,237,52,176,61,44,192,50,44,67,238,89,89,102,92,173,179,95,221,122,87,171,253,89,219,220,106,62,164,32,178,26,107,139,2,208,187,24,26,115,62,200,169,243,20,125,93,150,29,242,140,198,240,
88,206,184,230,136,167,189,155,171,2,39,150,206,184,229,173,244,150,65,172,174,240,246,18,212,24,187,194,64,237,237,245,50,242,117,98,200,114,173,43,129,215,177,43,63,100,3,44,5,107,205,204,48,98,40,193,227,193,168,46,70,237,199,116,198,173,223,183,76,
96,11,3,239,97,243,161,28,25,15,11,151,103,49,84,107,62,120,113,186,151,29,112,225,89,164,214,152,67,114,2,189,100,137,150,137,114,171,168,119,223,131,29,198,124,172,28,192,34,192,189,100,133,106,57,163,154,111,94,170,59,250,138,33,43,63,67,126,69,237,
18,50,171,119,229,48,5,196,208,160,202,222,99,84,184,101,1,40,199,207,170,221,45,35,170,221,199,66,8,70,16,67,50,238,181,251,200,74,156,174,139,122,123,21,67,181,203,75,173,203,178,214,9,16,11,231,212,139,243,99,101,59,74,144,196,186,172,93,253,160,177,
153,181,156,255,46,49,100,181,190,203,183,176,154,31,86,193,145,90,129,67,196,16,89,161,102,157,115,203,119,183,48,28,158,106,108,45,50,18,222,197,144,149,131,225,69,16,45,10,141,236,66,200,211,225,54,203,54,239,91,136,52,79,142,143,69,159,148,247,183,
62,200,193,202,78,121,10,222,172,19,67,22,190,133,149,125,178,126,111,178,67,136,161,65,22,217,172,66,200,122,3,112,118,71,194,66,136,44,58,116,222,196,144,197,134,112,111,78,70,119,81,67,8,249,202,16,117,237,181,62,143,5,99,238,41,141,224,248,201,134,
91,238,89,90,150,193,205,90,218,191,74,12,89,100,133,150,149,25,103,242,169,188,84,188,68,23,67,223,101,61,84,220,242,126,27,221,217,48,230,221,54,125,121,250,244,169,201,207,181,184,115,64,119,253,120,97,204,59,65,60,181,249,38,115,209,250,86,109,205,
199,243,243,243,148,243,113,237,229,11,55,55,147,95,127,253,213,244,51,124,248,240,193,252,246,250,110,223,88,220,57,162,59,81,214,221,121,100,241,121,178,205,17,217,41,11,219,189,136,230,163,215,59,226,106,223,71,165,251,130,60,221,37,39,59,213,189,
79,170,197,54,111,153,148,74,208,170,244,162,239,173,205,147,164,117,200,173,151,200,89,70,254,61,102,134,44,79,247,243,148,45,93,140,112,122,41,93,244,84,130,97,109,171,74,102,198,226,115,120,219,27,96,97,63,44,15,60,241,102,167,172,79,107,91,230,203,
88,84,219,120,188,111,199,194,62,112,239,16,153,161,173,56,60,60,52,137,238,41,98,224,45,250,171,104,120,237,72,134,69,116,155,207,228,15,143,243,193,242,243,232,166,115,221,216,238,169,45,110,111,111,221,124,158,23,47,94,152,101,36,74,212,215,42,51,
132,189,152,152,101,7,101,167,44,43,73,150,161,121,233,45,35,80,219,118,202,119,241,144,169,91,102,167,148,177,202,178,110,181,66,74,49,100,101,84,53,121,61,149,58,20,163,250,250,245,235,166,251,187,182,97,130,126,200,193,240,228,108,11,149,100,89,58,
25,214,229,96,93,231,219,186,116,113,213,152,201,40,134,44,69,160,23,44,218,221,235,186,45,94,190,124,233,106,92,212,156,155,18,168,158,203,195,106,127,54,217,166,123,247,238,225,84,32,134,250,163,1,99,161,162,229,144,43,98,224,17,235,189,18,53,28,59,
240,39,80,61,236,155,91,53,31,172,178,165,94,234,223,189,70,26,21,9,182,218,255,167,190,177,114,56,188,5,13,178,32,59,224,121,125,244,146,177,58,56,56,168,42,86,213,39,158,231,132,214,182,154,65,88,237,9,246,18,72,139,202,247,217,94,216,106,192,120,142,
98,40,26,174,8,147,202,116,106,58,195,181,156,26,143,153,33,171,40,167,23,60,207,7,45,178,90,108,45,62,163,135,5,77,243,210,99,36,188,59,118,172,196,154,4,145,218,167,102,128,133,204,182,29,222,157,110,5,7,52,62,172,215,147,154,243,209,187,64,237,218,
209,154,107,136,214,14,175,1,198,40,112,183,80,194,13,252,19,227,187,111,60,29,135,57,73,114,172,251,196,201,1,10,17,230,131,229,6,101,235,195,45,60,29,225,60,113,118,188,240,178,11,88,51,62,86,151,76,90,30,119,239,245,177,186,22,160,123,128,66,205,3,
169,60,220,41,212,231,169,125,204,248,178,251,208,120,56,64,193,85,228,213,211,177,206,171,168,189,111,168,102,22,138,49,232,47,218,234,29,69,131,45,203,177,172,80,198,195,115,86,200,218,166,122,58,198,215,146,12,237,160,49,22,161,60,209,122,207,111,
237,18,185,40,123,156,101,71,107,126,86,149,202,61,122,244,8,227,180,37,169,196,144,38,109,246,59,110,86,97,177,17,51,235,196,205,126,47,64,132,249,96,41,218,44,3,5,81,250,166,148,7,101,234,27,79,235,104,134,128,78,20,167,219,250,16,164,218,194,216,227,
193,46,171,168,189,95,153,125,67,136,33,151,147,182,24,212,8,145,86,25,84,106,211,199,231,226,226,34,245,126,33,205,135,40,155,193,53,111,45,130,4,150,14,119,164,147,37,173,132,91,230,232,171,14,144,136,34,152,163,57,178,81,231,109,77,7,60,218,97,72,
181,251,133,204,53,98,200,181,24,138,194,254,254,254,100,111,111,175,218,227,241,142,128,177,133,80,246,251,0,162,29,227,110,241,121,173,196,114,36,161,106,57,150,178,102,135,116,7,150,156,209,12,239,175,247,140,52,23,44,69,66,77,191,42,154,24,170,29,
80,35,115,141,24,114,43,134,56,214,25,20,73,126,247,238,29,23,163,77,136,236,209,55,195,161,83,48,45,178,217,25,51,187,199,199,199,213,79,28,101,46,108,230,116,91,204,5,149,76,214,36,226,125,91,181,199,18,251,134,16,67,107,81,84,171,246,126,33,77,220,
8,37,114,48,158,81,186,190,190,78,19,77,109,113,62,200,225,182,186,115,8,225,231,211,105,205,50,151,85,18,119,116,116,52,249,248,241,227,124,255,156,197,126,91,196,144,111,161,80,123,46,68,44,229,175,221,47,148,202,33,134,220,45,96,100,133,114,33,231,
225,240,240,112,114,118,118,54,119,32,212,255,24,38,219,197,58,243,231,222,4,9,190,136,129,27,11,27,219,114,102,72,65,67,9,160,171,171,171,249,152,208,254,160,140,153,48,156,110,159,126,149,130,83,244,139,63,95,183,5,210,92,186,106,49,64,50,56,81,153,
81,230,71,142,130,198,150,68,15,70,168,205,224,64,6,81,139,80,205,39,134,20,188,145,205,42,143,198,120,246,203,160,11,4,6,124,250,85,127,93,151,7,25,236,19,98,8,49,4,142,196,78,49,46,122,84,38,162,113,84,126,15,155,17,245,180,194,12,243,56,170,80,181,
138,20,75,72,120,223,96,95,196,78,89,255,100,191,138,237,42,191,135,118,230,130,69,57,47,235,32,190,46,98,40,24,22,134,63,98,74,55,155,216,41,2,103,241,43,12,79,212,211,3,51,136,161,200,239,104,177,177,95,63,207,122,60,171,164,173,43,108,22,191,66,46,
44,252,13,196,144,79,116,176,5,254,39,98,104,41,181,203,92,200,10,249,160,91,10,82,28,7,156,133,250,68,190,195,42,195,33,40,145,15,137,104,253,128,11,137,158,110,57,155,108,23,123,17,89,187,87,205,133,90,107,27,66,200,47,248,55,136,33,22,232,228,40,219,
211,221,195,131,193,70,12,13,229,32,181,156,49,140,124,231,151,197,158,46,217,149,49,218,76,193,155,98,187,202,87,28,27,214,238,77,236,84,173,185,192,218,234,23,15,153,107,196,144,67,106,159,133,95,140,18,212,17,63,50,254,229,1,28,12,62,63,68,113,4,37,
126,126,249,229,151,175,194,135,18,93,0,216,21,2,40,136,33,55,3,3,231,105,28,138,243,80,30,136,65,244,224,64,203,243,57,122,223,68,251,252,10,206,21,251,133,248,1,0,196,16,98,168,89,16,67,195,162,12,208,211,167,79,231,15,128,133,195,221,170,248,38,107,
55,62,37,136,243,236,217,51,4,16,140,106,167,168,144,0,108,12,98,200,141,74,166,76,110,24,116,1,224,233,233,41,245,201,0,16,14,137,32,9,32,61,68,107,129,192,0,0,98,8,149,12,189,81,38,40,235,237,231,45,66,112,0,178,113,114,114,130,8,2,0,64,12,1,108,134,
34,169,18,65,236,7,106,11,34,150,144,5,2,57,0,0,177,248,142,38,0,79,78,132,142,96,70,8,1,64,68,206,206,206,230,71,125,35,132,0,0,16,67,0,27,113,124,124,60,119,34,178,148,148,144,41,1,104,7,101,180,175,175,175,231,101,113,16,155,200,101,245,108,9,0,64,
12,65,80,46,46,46,38,231,231,231,41,222,181,100,190,178,237,161,33,82,14,45,11,33,139,139,95,173,208,187,182,124,170,103,228,128,28,251,211,0,16,67,16,84,8,101,56,46,91,34,72,239,169,200,221,155,55,111,210,245,51,98,8,90,22,66,25,34,242,175,95,191,158,
11,190,199,143,31,207,237,25,98,8,0,90,129,3,20,48,168,102,232,216,236,150,133,144,156,36,61,114,34,62,124,248,64,135,3,52,66,17,3,202,104,183,42,132,84,202,91,236,151,158,219,219,219,20,125,27,185,63,185,99,8,0,49,116,231,194,85,219,160,102,204,0,244,
69,183,176,235,196,165,86,80,217,155,198,153,190,202,129,120,251,246,45,157,220,16,45,59,25,209,179,118,22,159,95,115,93,251,28,91,10,230,200,110,201,126,149,39,115,0,71,235,83,180,247,191,127,255,62,134,26,0,49,228,75,12,193,106,84,90,162,72,99,68,103,
65,209,210,178,223,167,252,158,172,79,63,49,241,226,197,11,26,2,49,209,196,231,87,176,43,218,62,199,98,187,180,30,118,31,253,89,150,172,207,38,99,42,154,93,167,20,25,0,49,228,14,78,117,89,205,233,233,169,107,195,93,34,163,114,20,36,120,244,245,243,231,
207,116,28,243,185,89,20,160,136,234,16,91,148,36,123,63,53,174,148,232,22,193,67,166,122,243,249,30,173,178,35,67,137,28,101,128,253,224,180,90,196,144,155,129,193,158,161,229,232,46,33,111,142,132,156,5,101,170,138,3,65,148,148,69,44,219,124,150,243,
23,213,97,182,16,170,222,130,57,101,111,143,190,146,169,30,198,94,69,203,100,215,182,177,242,171,106,219,69,68,61,32,134,118,192,98,113,32,130,177,28,101,133,188,8,32,237,89,210,67,214,167,14,81,179,15,18,240,173,19,89,12,101,45,15,146,240,145,253,202,
116,184,65,203,2,123,87,219,90,219,231,80,245,68,237,159,169,125,81,172,215,48,6,105,142,214,182,200,14,177,161,241,223,237,97,45,18,203,17,215,251,251,251,243,200,31,134,21,7,3,103,59,246,59,102,19,67,229,78,35,29,113,125,121,121,137,16,26,1,101,60,
34,5,65,172,214,213,218,126,21,251,162,0,49,180,35,22,151,92,178,111,232,91,116,217,168,37,229,24,92,57,16,144,103,193,102,30,183,251,142,25,178,118,93,199,83,54,84,34,136,114,161,246,215,171,77,176,58,213,176,182,95,197,246,3,24,139,52,7,40,112,188,
118,63,206,206,206,70,115,140,44,29,46,45,22,136,32,28,110,196,80,91,66,53,75,57,114,41,73,34,11,84,87,12,61,127,254,220,253,231,84,137,156,149,112,171,237,87,113,101,9,32,134,6,88,76,44,22,234,104,155,48,189,159,146,180,237,162,134,1,197,113,221,214,
209,200,226,112,43,203,18,45,227,144,65,168,34,132,108,80,73,214,225,225,161,251,181,195,114,205,174,45,134,40,147,131,177,160,76,14,231,239,43,45,238,113,210,66,225,113,49,203,120,192,134,74,28,116,153,33,2,142,119,165,127,250,81,74,227,16,66,249,132,
70,31,20,172,177,252,140,218,191,86,19,182,30,0,98,104,71,172,34,158,138,44,225,88,216,25,234,151,47,95,50,203,29,17,169,14,63,226,231,205,244,174,178,173,173,239,33,208,233,155,30,15,121,201,18,161,215,154,232,121,95,154,132,144,229,28,168,29,100,70,
12,1,98,40,224,196,141,230,96,180,38,134,188,28,227,189,136,162,121,136,33,62,239,58,17,111,129,28,141,72,217,225,214,133,170,74,144,188,6,115,50,149,43,121,93,71,52,87,173,51,87,202,88,214,246,171,50,29,154,2,136,161,102,156,12,196,144,157,240,245,186,
255,33,115,116,75,239,30,165,84,206,42,243,96,17,180,41,88,157,74,181,77,64,161,117,49,228,213,9,207,134,214,69,143,21,30,58,29,213,67,102,180,182,95,149,41,91,15,136,161,102,196,144,140,213,209,209,145,251,182,145,131,218,82,180,79,23,17,130,79,162,
28,210,97,37,12,172,50,67,145,196,144,28,162,214,75,228,44,199,65,31,129,80,27,139,187,2,11,186,220,214,83,70,255,248,248,216,141,40,64,12,1,98,40,24,218,72,111,97,80,35,56,24,81,156,32,28,137,248,104,49,243,94,42,168,18,20,171,69,215,114,236,42,32,18,
33,120,211,122,214,68,37,114,158,47,132,182,8,156,89,6,184,36,188,37,136,60,160,192,165,167,241,95,219,94,105,236,69,59,136,7,16,67,56,201,19,255,155,48,229,152,182,38,134,44,75,141,238,34,251,38,80,57,22,222,179,67,86,206,134,198,173,245,201,97,222,
133,134,196,90,235,123,86,44,238,197,219,100,189,176,104,127,181,137,165,93,87,112,228,228,228,196,92,8,201,135,241,148,21,149,189,170,45,84,35,94,1,162,59,28,167,211,233,168,207,187,119,239,80,53,136,161,126,88,69,119,60,59,24,45,150,156,120,62,138,
54,123,102,168,44,102,94,179,67,202,10,101,44,145,43,120,207,14,101,216,75,99,89,18,214,103,189,200,182,126,119,199,158,213,220,240,40,132,10,181,197,80,132,234,130,197,0,66,141,53,197,75,246,18,49,20,0,171,82,57,175,217,33,77,82,54,234,214,35,195,113,
192,125,80,27,104,3,176,71,44,23,20,47,123,221,100,19,60,58,27,218,43,145,225,36,51,207,153,109,75,49,228,97,126,200,62,104,28,214,68,190,131,87,33,100,209,47,17,170,11,186,212,58,2,157,189,210,136,161,16,3,198,163,243,167,73,202,173,206,245,104,173,
28,113,215,182,240,22,32,144,88,181,202,220,41,72,227,229,4,68,217,4,111,65,146,76,129,27,175,54,217,250,20,63,237,163,242,224,240,105,45,191,184,184,168,18,48,80,105,158,103,33,36,84,137,81,59,136,36,91,16,225,42,0,101,244,106,8,55,141,17,207,251,12,
17,67,14,177,18,37,218,43,98,93,115,188,56,73,201,10,213,195,114,83,190,87,60,157,210,164,254,33,43,244,15,90,192,61,137,85,181,79,150,172,170,87,49,228,33,26,239,165,20,72,193,28,57,160,99,205,17,125,95,237,1,137,178,70,91,244,139,247,178,48,173,109,
250,140,53,236,22,37,114,187,51,205,248,92,95,95,79,173,56,60,60,52,127,255,217,36,157,206,12,237,180,85,102,11,137,187,49,119,113,113,97,218,38,221,207,162,246,241,130,230,34,243,97,58,61,56,56,248,250,121,188,240,229,203,151,233,76,36,154,247,207,217,
217,217,52,19,26,139,222,236,151,230,136,198,131,21,39,39,39,95,63,203,199,143,31,93,245,151,108,251,80,243,68,182,217,210,63,217,197,110,91,244,75,119,92,120,155,47,181,214,20,205,203,172,190,252,64,207,117,90,49,100,233,12,106,224,118,29,159,140,142,
249,216,28,31,31,187,26,111,234,111,107,188,138,161,226,76,100,158,15,114,34,186,159,199,155,99,174,133,221,170,111,142,142,142,92,136,194,218,88,182,249,178,71,78,167,37,93,167,215,195,152,88,37,16,244,217,54,21,70,178,199,18,252,222,68,222,166,98,200,
170,95,244,115,179,10,33,161,177,131,160,65,12,109,253,88,26,30,75,65,212,186,16,242,146,109,232,62,30,178,112,158,197,144,165,32,242,48,31,22,23,115,143,153,10,11,231,220,131,211,171,241,97,17,169,247,228,224,121,8,230,44,102,0,188,11,7,173,241,26,55,
26,63,250,236,139,207,213,213,85,136,12,208,166,107,172,85,191,120,153,47,18,194,181,215,123,15,217,123,196,16,217,161,157,140,101,237,114,174,12,66,200,155,129,240,210,230,222,197,80,113,60,107,57,221,250,57,30,156,17,217,129,197,119,246,136,156,156,
154,1,28,101,119,61,96,85,182,228,37,160,163,177,233,65,120,44,138,33,175,217,161,44,172,26,159,150,253,98,157,33,209,22,136,218,89,100,235,170,10,196,16,123,135,6,163,70,73,151,22,52,69,162,50,161,247,181,30,95,158,22,236,8,98,168,100,33,198,118,186,
245,253,189,236,153,91,86,243,238,57,218,61,118,4,214,147,173,42,14,159,85,64,195,122,127,169,167,189,165,203,230,73,228,204,74,171,98,200,58,107,87,99,253,88,54,79,172,108,4,89,33,196,80,19,217,161,174,97,25,107,80,203,121,177,220,248,106,137,101,234,
220,186,198,62,170,24,234,58,63,67,103,137,244,253,188,245,203,178,121,31,33,208,48,134,189,146,243,239,169,252,169,136,17,171,49,179,44,107,152,245,144,157,101,98,200,67,249,30,98,200,111,121,235,216,66,161,172,39,86,254,21,89,33,196,80,179,165,99,67,
77,96,77,82,25,36,15,142,133,181,16,171,29,93,181,140,18,181,36,134,202,216,25,66,20,149,69,203,227,41,84,203,62,111,20,134,178,87,154,163,222,162,252,221,67,45,244,249,44,35,221,181,5,145,68,134,183,185,178,234,212,176,108,39,13,70,16,67,158,178,118,
10,220,12,237,3,200,230,105,220,89,251,54,100,133,16,67,77,29,25,186,106,1,84,249,220,38,123,138,244,111,245,127,188,149,195,105,17,179,142,48,214,58,93,78,125,224,117,99,111,68,49,180,184,168,73,224,247,45,129,208,191,211,191,247,90,30,186,238,216,234,
104,104,126,107,158,247,181,87,178,185,114,80,36,166,188,102,173,187,14,148,250,201,186,125,107,149,254,120,203,156,222,37,134,90,191,38,34,170,24,242,150,181,147,157,209,90,80,236,212,38,1,6,205,127,217,3,9,32,47,99,141,19,228,134,21,67,123,127,255,
34,61,186,121,222,219,165,135,93,62,125,250,52,127,150,161,11,250,188,94,210,167,207,172,203,102,117,113,156,245,133,125,186,32,79,159,227,237,219,183,131,127,111,93,216,169,239,173,139,248,188,178,183,183,247,245,215,186,208,79,237,17,153,247,239,223,
79,254,252,243,207,127,253,185,46,184,211,152,243,142,198,203,139,23,47,150,95,254,54,141,109,150,215,217,171,159,126,250,201,253,231,215,220,120,252,248,241,55,127,246,241,227,71,115,59,171,49,163,75,195,111,111,111,7,255,222,71,71,71,243,239,239,117,
45,89,55,95,116,129,184,236,65,118,228,195,212,186,216,123,217,28,89,68,151,204,123,191,52,246,174,117,208,163,189,210,186,167,121,58,134,29,72,202,13,153,161,164,39,173,213,142,174,90,150,153,172,202,186,237,154,98,86,228,75,223,39,74,84,50,122,102,
168,37,148,61,92,23,153,4,91,150,101,184,188,149,83,203,166,238,90,62,23,233,126,155,187,50,17,217,79,151,43,71,118,123,233,143,137,163,107,37,90,195,219,189,74,100,134,26,99,182,176,204,163,4,17,162,202,81,162,84,79,158,60,249,250,251,47,95,190,204,
163,246,222,34,44,138,40,150,44,195,170,136,182,198,132,62,123,201,58,148,223,71,162,181,204,80,100,20,189,125,243,230,205,202,191,143,158,25,138,140,50,47,207,159,63,255,215,159,123,173,30,40,54,171,204,231,85,25,211,18,225,150,237,82,84,57,218,58,215,
39,19,49,19,137,174,179,243,99,161,62,127,248,240,97,213,76,76,159,254,16,170,154,208,231,139,182,94,70,158,7,176,121,179,126,79,27,252,131,82,142,50,164,26,108,76,220,221,69,198,226,162,244,234,213,43,243,82,185,69,212,207,114,18,34,148,238,236,138,
22,165,207,159,63,51,56,29,4,9,214,9,33,176,181,91,171,156,73,245,153,254,222,219,218,80,202,164,51,216,176,187,248,245,215,95,231,95,51,9,162,101,107,173,39,180,230,104,221,215,250,15,187,247,117,173,50,200,108,124,71,19,124,203,135,15,31,220,57,236,
17,209,132,93,172,103,85,196,21,108,157,38,192,113,129,213,168,111,214,213,225,99,195,98,8,162,76,142,183,252,21,249,45,158,185,188,188,100,238,84,176,79,128,24,26,124,226,226,176,236,54,97,151,29,82,160,8,17,209,33,32,72,192,98,230,17,57,107,119,101,
236,244,111,150,149,160,193,248,108,146,249,202,34,136,148,197,148,191,18,1,149,158,178,254,143,107,159,0,49,52,138,32,34,146,177,57,50,118,235,140,179,247,147,101,90,198,50,51,196,34,56,25,237,36,195,33,22,217,236,104,79,195,178,125,66,139,72,200,210,
94,49,104,93,16,233,221,86,157,174,231,185,79,56,245,111,115,84,90,221,199,62,1,98,104,20,136,100,108,110,156,75,205,246,42,148,29,194,153,200,39,134,36,4,50,71,212,61,59,46,90,104,51,31,166,161,113,185,73,214,129,236,144,29,58,228,104,83,231,187,197,
178,119,217,211,187,214,90,175,104,174,33,136,250,163,182,162,82,9,49,100,142,12,14,217,140,97,132,80,215,144,175,186,131,4,218,68,34,56,235,60,210,98,230,221,33,211,98,155,209,193,47,66,104,147,210,197,114,208,14,212,103,155,19,240,94,190,124,57,255,
127,45,172,57,101,207,97,180,140,208,226,252,65,16,245,95,59,54,181,79,128,24,26,13,25,30,22,191,97,132,16,206,196,183,134,174,38,214,167,77,201,41,241,124,177,113,230,197,172,156,248,148,81,8,109,179,249,92,181,251,217,171,6,44,196,243,182,39,249,169,
143,37,136,34,87,37,20,91,18,101,143,80,31,65,68,229,13,66,8,49,20,12,25,32,13,76,202,35,190,69,139,203,54,233,122,237,157,200,156,113,147,24,172,45,12,60,28,9,172,247,206,18,17,140,182,152,201,198,101,113,78,118,17,66,5,137,199,172,209,109,189,183,196,
69,237,247,223,229,110,36,205,67,149,190,71,203,74,148,227,222,117,143,144,247,83,227,54,237,15,249,14,148,205,35,132,16,67,193,144,3,111,177,0,120,53,208,114,108,119,217,212,167,140,91,182,200,80,185,39,64,142,103,237,178,13,15,151,44,150,172,96,235,
65,133,168,139,89,134,13,206,67,8,161,50,150,51,6,200,202,216,86,54,177,246,187,15,177,239,81,235,184,132,133,236,144,247,210,57,173,143,178,219,145,203,226,238,66,62,68,214,50,221,85,125,174,241,137,16,66,12,185,70,11,128,6,106,230,104,198,144,233,250,
76,119,66,104,225,85,187,149,227,49,45,22,226,131,131,3,243,118,144,19,218,178,19,169,241,28,57,170,215,114,61,127,177,93,67,69,216,179,9,162,197,177,29,41,51,180,136,214,175,253,253,125,119,162,72,99,73,237,44,225,167,245,49,195,69,217,234,139,236,129,
230,18,96,142,122,48,70,11,76,121,182,123,30,61,122,52,253,248,241,227,52,19,103,103,103,163,180,229,197,197,69,211,237,118,117,117,53,189,119,239,222,55,239,172,223,215,230,248,248,248,235,216,173,201,178,62,159,9,179,230,230,207,201,201,201,32,243,
161,38,26,11,139,63,95,99,83,99,182,37,174,175,175,255,53,7,135,122,238,223,191,63,125,247,238,93,179,246,235,203,151,47,211,163,163,163,127,189,183,236,73,109,198,92,207,181,14,233,93,45,208,248,81,27,239,50,70,101,127,106,206,167,49,250,65,239,96,213,
7,86,168,239,181,30,226,87,155,61,215,136,33,38,175,155,201,170,133,160,69,39,226,240,240,112,229,59,215,22,3,114,112,189,136,161,226,116,107,81,141,142,250,113,153,168,136,42,134,44,156,171,8,34,117,221,211,162,128,44,78,175,196,222,42,1,81,155,117,
246,116,168,71,63,67,129,191,177,5,174,218,86,130,114,85,251,102,20,67,37,184,208,194,186,208,199,63,40,1,74,30,196,80,19,143,38,111,139,217,13,57,121,203,34,130,99,61,18,92,173,68,88,53,30,238,138,242,213,118,158,100,124,61,137,161,22,156,238,62,253,
28,85,12,69,207,128,91,68,92,229,220,180,16,28,91,149,13,178,28,171,98,172,234,132,117,34,87,115,64,54,74,115,93,78,250,166,243,65,109,169,255,167,255,175,241,49,100,224,164,69,49,212,181,61,173,138,162,49,214,13,30,196,16,162,104,4,17,36,195,106,53,
89,35,103,219,212,255,125,35,125,22,101,38,138,122,122,19,67,17,163,129,114,180,199,114,106,60,137,161,226,16,70,154,147,214,17,215,200,145,109,181,221,38,182,191,246,123,106,109,242,180,230,75,108,107,14,45,123,106,175,159,18,138,45,101,91,91,20,69,
155,248,7,60,136,161,240,79,113,30,162,69,84,75,221,50,194,178,142,145,211,191,175,141,22,21,143,98,168,187,240,121,46,55,170,145,45,245,38,134,186,227,85,14,151,87,81,180,169,35,143,19,247,237,184,150,128,220,180,237,44,178,186,94,214,40,111,79,205,
177,86,83,12,45,238,235,138,26,96,64,4,33,134,82,63,138,196,123,118,238,52,81,229,224,120,221,192,231,217,1,83,191,238,186,233,213,66,48,215,118,96,118,233,119,47,1,5,57,26,181,156,48,175,98,168,27,236,81,91,120,41,105,221,214,145,175,233,196,121,92,
3,100,83,229,92,238,178,15,71,235,134,69,127,227,91,216,138,33,203,204,171,230,185,126,190,247,146,122,205,249,26,123,220,120,118,23,67,123,127,255,2,42,48,155,192,243,59,102,116,52,169,190,90,94,130,169,35,44,111,110,110,230,71,120,70,186,200,109,102,
88,230,109,103,213,126,58,130,85,237,166,71,151,166,14,113,124,178,142,187,174,253,46,58,198,179,230,207,212,221,30,187,182,145,142,29,213,220,169,121,95,146,250,91,253,172,163,244,107,30,113,59,115,158,171,218,130,93,198,241,76,180,126,157,147,234,159,
154,99,88,125,163,167,28,87,239,157,210,86,26,203,86,247,126,21,219,175,118,219,117,94,90,140,215,161,108,74,139,204,196,109,53,187,174,185,238,161,15,202,156,42,126,149,37,99,248,7,80,133,27,196,144,33,114,240,138,115,87,158,177,156,134,178,0,150,175,
45,76,82,45,192,106,191,210,134,99,44,2,165,205,74,187,101,184,243,33,130,67,169,254,46,253,62,180,3,94,22,50,125,109,233,198,247,22,230,101,153,135,122,162,8,160,85,40,56,86,218,105,44,145,47,231,172,235,160,237,42,124,193,247,120,170,121,223,149,198,
171,71,251,40,251,83,214,5,221,213,52,102,208,65,115,170,204,47,205,45,214,11,196,16,12,40,144,228,60,20,7,79,147,185,239,173,219,69,244,20,167,161,252,62,203,226,39,39,185,24,63,181,225,38,109,87,218,171,56,15,122,16,62,113,251,94,79,159,69,176,244,
181,250,95,95,89,204,198,113,210,212,23,221,249,216,71,192,22,251,85,190,102,200,4,200,254,119,29,184,190,66,127,153,237,39,115,146,47,8,33,167,188,22,123,123,123,41,252,170,238,156,42,243,12,255,0,49,4,0,0,0,0,142,56,57,57,153,156,158,158,86,249,89,
18,3,251,251,251,52,58,52,35,134,190,163,13,0,0,0,0,226,82,115,191,94,201,66,2,180,194,247,52,1,0,0,0,120,167,246,97,51,42,139,138,80,58,91,246,159,33,134,0,16,67,0,0,0,208,40,58,213,177,182,211,255,240,225,67,247,237,82,251,20,53,196,16,180,6,101,114,
0,0,0,0,11,232,32,11,29,206,226,157,103,207,158,33,134,0,16,67,0,0,0,208,50,218,184,95,27,235,187,107,238,162,28,37,93,179,15,56,73,13,16,67,0,0,0,0,9,196,80,237,172,203,166,212,58,65,174,80,243,248,110,0,196,16,0,0,0,128,161,35,174,251,104,142,142,142,
92,182,199,225,225,97,213,61,84,136,33,104,21,238,25,2,0,0,0,247,232,212,52,157,240,86,27,143,247,234,168,45,180,119,103,147,203,67,135,64,167,249,101,185,200,29,210,192,61,67,0,0,0,224,31,57,225,22,155,247,37,56,116,169,169,39,94,189,122,85,93,8,189,
126,253,26,33,4,77,130,24,2,0,0,128,16,88,149,105,105,111,142,202,210,60,112,124,124,108,114,176,131,4,24,64,139,80,38,7,0,0,0,33,208,197,171,86,71,59,171,68,79,123,116,44,47,98,213,254,37,11,81,226,177,84,16,96,32,40,147,3,0,0,128,24,72,136,88,156,42,
39,180,95,70,66,204,234,64,5,101,132,172,178,51,181,79,173,3,168,9,98,8,0,0,0,194,96,93,174,165,159,127,117,117,85,237,66,86,253,28,253,188,243,243,115,147,247,149,248,188,188,188,100,224,1,98,8,0,0,0,192,26,137,2,139,83,229,186,104,207,142,68,194,197,
197,197,104,162,72,39,198,233,224,6,101,163,44,47,127,37,43,4,25,152,242,240,240,240,240,240,240,240,68,121,102,34,97,234,137,235,235,235,233,209,209,209,116,38,96,118,126,183,131,131,131,233,76,100,77,191,124,249,226,226,189,24,111,60,141,63,215,28,
160,0,0,0,0,161,80,214,68,153,25,237,227,241,134,50,57,58,245,78,159,79,191,214,215,207,159,63,47,253,183,143,30,61,154,127,213,193,12,15,30,60,152,127,245,242,78,202,190,233,51,173,250,236,0,141,112,131,24,2,0,0,128,112,88,157,172,150,133,103,207,158,
77,94,190,124,73,67,0,98,8,0,0,0,192,35,215,215,215,243,108,10,12,139,46,88,125,242,228,9,13,1,136,33,0,0,0,0,175,120,46,151,139,138,218,83,229,113,183,183,183,52,6,164,16,67,156,38,7,0,0,0,33,145,195,78,102,104,56,180,79,72,39,215,33,132,32,19,136,33,
0,0,0,8,139,46,98,125,250,244,41,13,49,128,16,146,176,84,123,2,100,226,255,102,207,41,205,0,0,0,0,145,5,145,156,249,159,127,254,153,198,64,8,1,108,194,39,196,16,0,0,0,132,231,247,223,127,159,239,29,250,239,127,255,75,99,32,132,0,122,139,33,202,228,0,
0,0,160,9,158,63,127,78,201,220,6,232,30,36,132,16,100,135,204,16,0,0,0,52,131,28,123,157,136,38,39,255,135,31,126,160,65,86,160,227,179,117,88,2,151,170,66,114,200,12,1,0,0,64,91,92,94,94,206,197,144,50,31,240,45,42,139,211,133,170,186,71,136,83,227,
0,200,12,1,0,0,64,131,252,241,199,31,147,255,253,239,127,243,236,16,251,136,254,226,230,230,102,126,200,196,111,191,253,70,99,0,252,5,153,33,0,0,0,104,19,101,62,180,143,72,89,34,149,206,165,245,246,102,239,174,189,84,143,31,63,166,44,14,96,1,196,16,0,
0,0,52,205,219,183,111,39,251,251,251,243,242,48,149,137,101,65,239,122,122,122,58,121,240,224,193,188,116,16,0,254,205,222,236,153,210,12,0,0,0,144,129,123,247,238,205,69,145,30,29,197,221,170,8,58,63,63,159,63,236,11,2,88,203,13,98,8,0,0,0,82,138,34,
149,142,73,20,253,248,227,143,77,188,147,202,225,94,189,122,133,8,2,64,12,1,0,0,0,244,227,209,163,71,115,97,164,163,166,35,102,139,116,76,182,68,208,155,55,111,232,76,0,196,16,0,0,0,192,230,40,91,164,195,22,36,138,60,11,35,149,193,73,0,233,116,56,125,
37,11,4,128,24,2,0,0,0,24,148,131,131,131,185,56,210,163,67,8,172,202,233,116,95,82,121,36,128,116,177,44,0,32,134,0,0,0,0,170,161,204,145,68,145,196,145,132,81,247,217,217,35,155,137,156,34,124,148,249,209,87,237,1,66,248,0,32,134,0,0,0,0,220,163,76,
82,223,210,58,9,29,238,252,1,64,12,1,0,0,0,0,0,152,136,33,46,93,5,0,0,0,0,128,148,32,134,0,0,0,0,0,0,49,4,0,0,0,0,0,128,24,2,0,0,0,0,0,64,12,1,0,0,0,0,0,32,134,0,0,0,0,0,0,16,67,0,0,0,0,0,0,136,33,0,0,0,0,0,0,196,16,0,0,0,0,0,0,98,8,0,0,0,0,0,0,49,4,
0,0,0,0,0,128,24,2,0,0,0,0,0,64,12,1,0,0,0,0,0,32,134,0,0,0,0,0,0,16,67,0,0,0,0,0,0,136,33,0,0,0,0,0,0,196,16,0,0,0,0,0,0,98,8,0,0,0,0,0,0,49,4,0,0,0,0,0,128,24,2,0,0,0,0,0,64,12,1,0,0,0,0,0,98,8,0,0,0,0,0,0,49,4,0,0,0,0,0,128,24,2,0,0,0,0,0,64,12,1,
0,0,0,0,0,32,134,0,0,0,0,0,0,16,67,0,0,0,0,0,0,136,33,0,0,0,0,0,0,196,16,0,0,0,0,0,0,98,8,0,0,0,0,0,0,49,4,0,0,0,0,0,128,24,2,0,0,0,0,0,64,12,1,0,0,0,0,0,32,134,0,0,0,0,0,0,16,67,0,0,0,0,0,0,136,33,0,0,0,0,0,0,196,16,0,0,0,0,0,0,98,8,0,0,0,0,0,0,49,4,
0,0,0,0,0,128,24,2,0,0,0,0,0,64,12,1,0,0,0,0,0,98,8,0,0,0,0,0,0,49,4,0,0,0,0,0,128,24,2,0,0,0,0,0,64,12,1,0,0,0,0,0,32,134,0,0,0,0,0,0,16,67,0,0,0,0,0,0,209,248,126,246,220,208,12,0,0,0,0,0,144,140,247,255,47,192,0,85,164,109,9,9,221,131,21,0,0,0,0,73,
69,78,68,174,66,96,130,0,0 };
const char* logo_cabbage_Black_png = (const char*) temp_195998d4;
//================== logo_cabbage_black_no_text.png ==================
static const unsigned char temp_95a301a0[] =
{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,120,0,0,0,105,8,6,0,0,0,241,238,231,236,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,
97,100,121,113,201,101,60,0,0,29,171,73,68,65,84,120,218,236,93,9,120,147,85,214,190,217,151,102,239,94,74,232,198,86,40,84,150,178,8,136,12,40,130,131,136,140,11,163,254,232,184,0,226,62,42,227,194,175,14,226,50,14,163,200,239,194,168,48,140,242,160,
226,128,128,138,192,176,43,88,182,66,177,182,208,125,13,77,154,180,217,247,252,231,180,55,52,148,165,73,155,180,73,240,62,207,121,190,36,95,242,125,95,238,123,207,122,207,61,151,65,162,172,121,60,30,9,28,68,64,82,60,186,61,46,153,197,161,83,58,92,22,
145,155,184,148,12,194,84,112,89,194,214,239,194,57,98,115,25,8,147,193,214,50,9,171,154,195,18,24,5,28,121,53,147,193,106,134,211,70,74,90,6,131,97,138,212,254,96,135,219,3,189,255,243,68,30,28,248,139,198,28,104,185,196,185,155,224,80,14,231,74,58,
128,154,14,135,97,64,131,90,172,245,3,28,110,75,18,139,193,81,122,136,27,143,113,110,143,19,65,36,30,183,157,184,60,54,35,131,193,212,194,143,220,112,158,15,192,199,1,224,108,194,100,19,171,83,79,236,46,19,0,239,212,184,61,110,21,156,83,137,121,9,165,
112,253,82,184,54,82,17,80,37,0,238,136,20,128,25,97,8,240,29,112,184,23,232,121,0,242,164,207,231,41,112,200,7,58,2,244,24,156,171,129,142,31,13,175,23,55,91,106,134,219,92,198,68,224,188,56,62,91,198,230,178,4,22,224,206,66,167,219,86,10,96,21,178,
153,60,53,229,76,59,124,31,201,130,227,130,14,112,100,103,166,211,109,23,0,167,167,187,220,246,36,38,147,61,144,197,224,230,0,144,89,6,171,138,107,117,182,216,93,30,167,86,202,239,163,142,21,102,52,208,231,216,2,231,143,252,6,112,96,224,198,193,1,185,
83,129,162,17,232,105,160,99,20,132,255,5,186,137,126,21,59,248,214,133,121,251,17,168,215,77,118,109,110,12,87,81,8,175,15,34,65,199,151,5,81,228,95,11,135,60,36,141,233,108,142,206,82,21,199,98,114,99,97,192,176,129,74,88,12,246,166,24,110,220,78,144,
16,120,127,13,220,219,243,27,192,151,6,151,5,135,87,145,115,125,62,70,110,171,70,145,13,132,28,204,244,57,183,14,232,89,0,25,191,195,133,142,61,215,3,250,125,48,170,1,167,203,54,172,201,82,54,10,196,249,100,144,244,168,231,141,98,94,226,246,88,97,230,
94,56,191,3,158,229,236,111,0,95,12,240,24,56,252,11,104,160,159,63,49,163,152,68,144,81,92,251,92,39,19,222,151,133,24,104,28,140,9,32,214,135,154,236,234,89,0,242,188,70,83,177,194,226,208,26,149,178,177,21,114,65,191,207,225,252,218,158,24,116,17,
1,48,128,130,28,250,2,208,51,64,188,0,126,106,164,32,191,7,132,157,62,23,40,11,104,21,128,252,131,23,112,20,247,240,94,23,34,160,147,112,80,182,88,107,159,50,217,155,166,53,24,78,114,133,220,56,85,186,124,194,97,62,91,242,33,128,252,195,111,0,255,60,
113,58,28,62,167,186,55,24,237,12,208,221,212,32,67,145,255,18,21,243,70,106,9,87,208,35,26,113,200,253,104,177,215,193,32,176,118,19,112,28,76,139,203,181,251,231,54,24,78,165,36,137,115,152,10,65,122,129,152,155,184,130,205,226,237,128,115,141,61,173,
163,195,5,224,239,225,48,61,136,151,116,2,125,6,244,103,10,236,135,64,51,58,232,112,239,247,26,169,158,63,12,116,26,232,56,0,125,162,155,64,223,100,178,107,110,175,213,31,159,173,183,213,201,248,44,41,136,238,188,237,82,126,42,138,237,111,175,42,128,
1,220,209,212,250,229,6,249,210,122,160,71,168,100,152,65,65,78,189,18,46,64,6,32,116,131,142,2,125,1,180,179,43,92,13,0,227,65,14,52,86,103,169,94,94,111,40,200,109,52,22,185,51,21,215,215,43,101,99,86,163,10,1,160,117,81,15,48,128,27,3,135,13,64,55,
135,232,22,232,106,141,3,144,206,192,189,102,211,232,150,138,82,245,165,244,50,124,79,78,117,249,44,170,50,54,1,161,30,45,131,239,155,187,200,209,143,170,77,37,11,10,26,190,28,32,23,40,217,153,138,201,5,34,110,226,139,28,22,127,71,168,131,38,189,13,240,
45,148,179,146,66,120,27,28,64,79,0,56,231,224,126,2,120,157,77,129,75,185,194,111,220,212,69,203,166,17,50,25,138,110,42,246,79,195,181,28,1,2,140,198,216,40,139,163,101,81,145,122,203,189,58,75,37,233,39,27,167,234,31,59,245,13,188,38,128,220,20,117,
0,83,78,89,65,163,86,204,16,222,10,185,14,59,242,111,64,24,167,126,29,104,26,144,184,19,113,109,161,32,219,128,146,105,176,5,141,183,159,241,90,0,242,175,93,224,228,56,171,211,240,116,77,75,254,83,69,141,91,184,25,242,73,250,65,241,51,54,112,88,130,165,
161,114,169,122,19,224,41,112,248,42,136,150,115,103,238,20,114,241,39,112,223,223,193,235,127,2,165,119,83,244,127,130,186,20,173,112,184,174,39,0,144,113,48,223,170,183,214,191,178,187,226,245,33,114,126,63,50,36,225,150,194,184,152,254,56,208,79,6,
219,202,102,246,20,160,240,199,134,0,221,8,36,160,31,221,211,67,224,98,195,217,165,165,0,110,95,56,238,165,1,149,238,52,5,245,217,17,228,57,84,244,251,199,81,12,134,27,232,107,9,63,229,225,241,202,71,242,109,46,35,249,185,118,117,78,147,185,12,175,53,
3,250,39,38,226,56,152,78,10,124,0,116,0,3,26,31,228,79,234,79,45,103,81,15,11,142,143,128,30,165,247,205,167,65,145,110,253,53,32,20,173,159,2,253,53,80,139,219,233,114,228,53,91,171,254,126,180,110,237,4,171,83,239,25,221,231,190,138,20,73,46,6,110,
10,208,47,7,58,212,221,169,74,70,136,129,21,153,44,142,123,212,205,214,87,18,21,2,149,128,199,254,31,0,183,18,78,237,6,202,237,5,205,128,162,245,89,160,181,64,183,80,14,148,5,233,218,255,165,1,149,35,0,180,51,192,224,200,59,251,43,87,220,220,96,56,69,
226,133,3,8,147,201,33,18,94,50,73,17,231,170,164,252,62,107,5,28,249,123,0,116,125,87,30,138,29,66,112,57,22,155,243,133,99,197,154,249,118,167,59,62,45,89,252,230,145,186,53,24,61,122,170,151,192,245,138,214,7,128,126,2,218,3,180,17,104,126,144,250,
225,122,52,45,128,150,1,125,29,128,200,46,131,190,122,34,55,249,46,153,221,101,154,80,166,219,71,156,110,75,43,239,73,120,41,73,96,136,45,201,73,156,155,1,223,65,67,172,36,44,116,48,117,11,102,159,46,215,61,116,166,166,37,41,35,69,140,192,126,121,180,
110,77,26,245,47,123,179,229,210,168,25,102,109,108,166,62,113,176,236,25,188,246,179,160,147,175,13,72,140,2,200,49,156,216,183,7,196,222,80,172,148,230,181,38,39,160,244,215,219,234,200,233,198,205,228,76,211,15,51,44,14,221,2,232,215,216,94,7,152,
90,137,115,170,84,134,55,55,236,42,87,100,167,203,181,41,241,49,47,130,104,198,120,239,2,160,107,122,25,96,62,21,211,232,250,236,2,218,74,218,98,209,193,106,56,119,252,30,128,124,35,144,223,253,203,98,114,191,235,35,25,177,116,84,159,251,242,227,64,76,
159,215,211,192,205,5,13,27,68,37,154,29,15,216,93,230,7,123,29,96,171,205,121,195,201,179,77,203,87,127,83,146,62,127,70,255,134,241,57,137,139,11,213,235,182,193,169,135,129,22,145,192,102,139,66,213,48,176,178,146,130,253,20,13,134,4,179,225,32,94,
143,234,128,206,115,251,195,197,14,54,139,251,85,172,48,227,169,105,153,75,79,201,192,125,242,54,155,75,79,142,215,175,19,213,233,143,191,14,12,116,125,175,1,140,6,67,173,218,252,247,173,63,86,103,77,190,38,201,158,147,169,192,224,194,22,16,205,232,243,
46,33,193,143,55,119,167,161,63,140,51,78,46,160,215,72,219,236,82,176,245,61,6,85,22,3,200,156,0,196,245,143,224,66,189,152,151,250,39,173,152,155,228,3,178,129,28,169,251,148,152,236,77,47,66,63,247,235,113,128,225,166,24,153,90,186,229,64,85,246,144,
116,185,61,111,72,2,130,251,1,136,230,92,250,71,21,36,188,154,140,170,140,44,154,48,240,6,13,136,4,27,100,52,186,22,6,248,187,111,83,37,35,223,29,28,127,179,157,205,108,119,177,155,204,165,164,88,253,45,38,70,204,166,170,176,103,220,36,184,89,162,209,
226,120,108,219,143,213,79,242,185,44,199,236,73,105,248,167,222,3,112,145,75,222,9,130,191,25,202,182,29,232,47,64,152,102,179,20,232,241,16,168,17,116,207,94,198,8,154,191,190,50,50,140,195,101,89,254,99,245,170,251,127,85,111,61,47,249,144,171,39,
246,123,178,180,159,124,220,157,192,237,199,66,206,193,240,32,60,155,221,117,119,193,153,166,123,93,46,183,96,250,152,84,204,149,250,20,192,77,143,0,112,9,181,168,31,135,142,55,209,128,197,47,33,114,207,208,176,251,125,0,162,90,199,97,9,86,141,76,185,
167,192,87,31,27,237,106,82,163,63,146,101,118,104,231,246,148,136,30,94,84,169,91,112,78,103,73,157,48,60,169,144,207,99,191,2,224,98,96,254,173,8,0,215,219,238,64,171,151,180,77,38,188,31,162,123,224,92,244,219,52,253,215,223,86,36,230,37,189,54,34,
249,143,196,43,170,61,96,50,84,234,14,18,131,237,220,61,254,132,53,153,221,228,94,142,170,201,188,180,74,101,204,82,38,136,74,251,37,137,31,0,112,113,170,13,179,35,111,34,145,211,176,247,48,45,87,137,19,18,84,108,135,162,41,129,214,209,152,184,63,92,
236,1,218,162,148,141,89,153,29,127,179,179,205,63,38,196,96,87,145,10,221,129,62,84,236,135,148,131,167,212,170,77,211,146,20,66,213,176,44,197,199,164,45,199,9,19,215,81,124,176,72,100,181,28,52,94,168,91,243,33,13,132,132,106,48,45,130,251,136,253,
254,1,71,190,58,43,118,74,129,156,159,118,254,179,179,77,59,112,37,198,3,104,255,4,29,96,184,40,159,78,32,44,169,172,55,178,134,100,200,55,242,184,172,117,192,189,177,212,80,17,145,200,107,248,204,179,169,40,197,252,172,189,33,184,71,41,213,197,152,68,
48,53,128,223,149,196,9,7,174,29,16,119,67,75,187,46,110,36,213,205,135,209,19,152,21,52,128,1,84,41,208,211,96,84,85,84,171,140,249,251,78,52,76,158,116,77,210,89,177,144,243,49,136,18,204,101,122,133,132,54,59,35,212,109,50,208,88,204,254,160,98,58,
216,110,211,27,20,100,59,181,81,252,53,184,156,44,38,251,179,220,228,59,127,21,176,219,189,205,252,90,20,154,87,6,152,225,39,176,137,0,234,157,54,135,107,113,179,193,150,110,115,184,213,9,114,129,80,42,226,162,152,121,21,56,247,21,106,141,174,38,87,78,
108,139,132,118,8,104,2,105,75,8,248,138,4,39,180,138,118,9,198,189,31,161,253,244,17,13,250,96,74,239,91,48,160,92,126,226,48,227,244,185,77,91,126,170,254,63,150,203,99,111,253,236,214,193,239,151,36,137,135,222,5,131,224,68,192,28,12,23,100,0,141,
209,155,236,43,117,6,219,10,56,146,88,41,255,189,140,20,241,70,54,139,161,119,186,220,200,181,56,207,155,1,116,59,185,114,158,83,164,180,145,64,3,233,234,136,67,65,186,102,61,117,193,144,161,158,241,137,232,221,15,52,42,128,235,236,236,35,25,113,44,81,
148,125,254,131,154,150,252,68,42,242,187,36,162,111,4,96,63,53,90,28,183,197,240,217,91,83,19,68,247,198,8,56,223,156,169,110,153,117,240,148,42,213,106,119,161,222,85,147,182,172,200,25,164,7,51,68,66,216,176,243,103,122,35,74,65,186,38,26,109,251,
73,219,98,186,108,159,207,209,106,186,23,12,46,137,159,162,218,33,226,38,172,234,39,27,127,62,194,213,96,44,148,56,92,150,97,104,23,249,13,48,53,162,102,0,184,95,187,92,30,69,188,148,255,156,56,134,59,7,191,95,175,49,173,254,232,155,98,165,84,196,59,
35,18,112,48,231,24,215,18,97,62,81,2,137,158,118,27,116,58,166,216,238,238,166,30,70,209,139,121,91,111,2,205,161,253,228,219,216,244,51,191,211,134,57,44,193,206,190,210,188,239,20,130,126,173,185,91,6,155,138,89,167,47,24,1,47,19,253,2,152,206,229,
222,165,214,89,254,225,114,185,181,113,50,254,159,57,28,22,58,255,125,43,26,12,47,255,243,155,146,76,208,189,206,156,12,249,119,164,109,9,200,212,43,137,136,8,109,184,140,117,16,13,43,30,236,198,117,48,167,26,87,87,12,7,122,2,40,254,50,214,251,227,1,
76,72,156,139,21,102,108,87,74,199,97,146,62,184,74,45,96,81,171,6,209,103,246,139,131,39,171,154,204,207,185,221,158,204,56,153,0,103,89,190,4,209,96,1,227,234,177,157,63,215,78,250,185,72,205,28,147,29,223,8,162,122,23,205,23,122,144,132,97,165,128,
96,0,76,95,31,235,226,53,14,210,224,9,246,205,242,78,152,0,245,254,52,127,131,31,104,225,15,136,187,177,28,197,52,86,36,48,59,154,18,156,46,219,128,78,1,6,238,77,3,206,93,194,100,16,165,68,196,125,23,46,134,171,227,28,240,249,164,194,114,221,83,91,127,
172,225,74,98,56,100,242,136,20,204,9,222,11,163,110,6,13,16,68,91,67,255,114,0,157,176,239,202,52,34,250,208,243,73,219,82,24,116,183,110,232,196,62,65,169,249,28,220,47,222,79,144,171,164,252,148,175,70,245,193,91,120,136,214,82,201,52,216,85,99,58,
5,216,108,117,222,229,116,121,38,11,249,156,47,4,60,246,74,175,239,11,46,210,147,95,236,42,39,96,84,17,224,94,34,228,179,119,130,113,133,226,235,54,18,189,13,109,10,140,245,86,161,36,12,48,152,241,34,229,220,149,212,229,242,167,13,69,67,213,223,4,1,104,
255,30,28,63,179,153,199,18,19,189,173,30,56,217,156,115,69,128,113,122,202,229,246,60,233,114,187,43,249,60,22,186,62,222,69,213,147,243,139,26,199,158,173,105,33,224,26,145,113,67,19,189,186,5,93,163,209,87,1,192,184,50,66,19,0,184,79,248,128,60,35,
128,251,201,233,247,7,249,201,197,53,124,182,100,91,186,124,34,49,217,212,128,159,43,175,51,14,94,12,186,87,10,174,208,103,108,22,243,4,38,104,35,232,32,178,231,110,62,80,149,228,6,201,159,150,44,34,113,50,222,49,56,135,179,46,227,209,240,138,98,128,
209,117,225,209,32,133,63,105,176,223,211,168,210,41,210,182,40,253,110,18,88,6,11,131,2,140,137,244,254,218,52,47,103,42,166,88,156,30,43,198,165,69,128,87,223,75,2,140,145,42,173,222,54,29,124,221,74,120,187,205,103,197,155,242,151,10,221,132,218,198,
182,69,117,233,41,18,2,174,209,183,52,147,63,151,118,194,213,222,156,52,74,245,40,29,12,40,150,243,186,112,29,43,149,20,74,202,205,254,112,113,153,144,35,223,135,73,122,26,115,107,89,144,139,166,103,189,35,101,168,86,111,77,237,155,32,194,209,87,220,
174,147,29,105,53,141,166,84,140,96,49,193,242,74,144,243,157,96,100,225,42,59,5,21,37,204,171,28,92,59,13,96,44,167,64,47,33,129,77,34,168,104,127,35,85,146,246,165,173,126,47,83,229,177,37,7,101,124,229,116,179,3,147,70,46,158,7,56,15,176,199,67,18,
120,92,214,78,223,165,18,154,102,219,245,101,117,6,54,24,94,4,173,231,4,153,160,22,12,176,202,14,110,196,213,220,80,20,63,79,185,239,3,234,234,248,35,150,81,71,175,167,191,71,174,213,44,204,219,143,243,187,233,148,121,114,22,17,198,97,127,30,32,134,27,
123,8,252,98,227,57,99,145,136,92,98,65,29,27,173,228,58,181,41,87,26,195,229,119,12,205,153,172,206,153,101,117,250,214,215,112,158,36,197,10,138,233,3,229,210,48,91,180,139,94,247,101,206,33,187,252,155,180,197,149,39,1,253,195,15,119,17,35,98,5,12,
194,124,227,166,1,175,31,238,39,27,151,172,211,219,198,235,12,182,153,118,167,123,202,190,19,13,162,138,122,3,177,128,167,50,110,104,2,170,205,41,192,108,123,58,123,72,38,131,93,6,28,124,180,94,95,48,25,222,246,185,20,7,43,172,54,87,150,72,198,81,249,
22,16,195,116,144,19,103,154,178,154,90,108,173,239,197,66,14,201,72,17,151,210,63,55,225,42,224,78,13,21,149,104,77,243,59,124,142,211,126,171,169,33,245,172,31,210,12,251,237,99,133,32,115,195,29,57,107,114,53,205,150,101,63,158,82,77,41,56,163,29,
80,222,96,32,53,231,140,68,103,176,159,255,114,181,202,72,114,251,199,98,210,196,30,127,158,51,62,102,96,49,152,104,147,169,254,190,8,96,17,143,203,76,2,64,59,58,244,74,224,108,226,112,182,13,226,120,57,223,46,19,243,176,88,137,133,70,94,162,189,161,
232,194,209,45,244,9,3,226,255,199,121,220,181,212,98,126,243,50,225,199,142,17,173,167,231,100,127,164,75,20,13,126,2,128,189,227,135,159,235,18,75,107,245,76,117,243,133,238,53,159,203,66,59,135,200,37,173,82,126,36,26,191,126,44,12,55,9,56,178,98,
46,75,100,33,151,72,180,104,5,216,225,244,36,153,109,174,125,29,206,101,53,234,44,231,223,164,196,9,241,15,87,195,13,113,241,118,118,148,131,139,163,26,107,120,24,225,191,166,209,126,66,112,255,64,218,179,50,48,189,86,218,137,4,88,9,186,117,133,217,234,
252,99,121,189,254,133,127,110,60,161,220,119,162,125,41,20,26,174,241,50,62,73,75,18,185,166,143,77,173,207,78,151,55,40,36,188,114,58,40,74,136,31,19,29,136,7,12,132,130,20,113,238,37,7,2,62,56,151,197,98,136,156,46,119,93,135,115,10,13,21,207,62,0,
215,210,210,11,125,162,28,96,35,105,95,148,150,77,173,92,180,144,113,106,20,11,182,61,68,174,156,150,132,224,46,155,53,232,93,12,89,46,219,87,208,176,104,243,254,42,46,234,216,243,81,13,49,151,76,202,77,114,142,24,24,119,122,120,150,98,87,140,128,131,
117,180,142,119,177,94,71,105,31,201,8,173,205,105,224,162,106,245,53,148,91,173,104,46,155,73,92,46,143,246,74,87,72,84,8,240,71,141,87,1,184,216,90,40,199,18,42,130,151,80,125,136,150,47,46,195,233,108,69,255,203,0,238,193,62,146,107,150,173,223,81,
58,253,63,123,43,217,45,38,7,53,138,8,25,156,38,35,119,78,205,180,12,84,74,255,33,151,240,48,143,188,10,64,233,78,17,54,149,152,151,168,182,58,244,131,168,15,190,231,2,128,177,172,147,167,19,243,30,196,136,141,234,165,235,174,2,128,113,32,159,166,175,
49,189,6,197,38,206,172,205,244,195,47,254,4,196,242,118,181,206,178,114,249,191,10,102,236,57,222,112,254,36,151,195,36,183,77,78,179,222,50,177,223,222,88,41,127,105,176,202,17,195,117,92,192,185,47,241,57,18,28,44,111,195,235,133,240,89,190,55,146,
229,4,51,221,10,250,160,163,5,166,85,136,219,49,151,75,248,70,170,240,227,175,2,128,207,81,144,177,161,241,185,152,180,205,14,117,166,183,119,131,203,242,119,77,139,245,249,77,251,171,110,56,116,186,241,2,3,234,247,215,42,201,188,105,153,31,3,184,11,
130,93,107,154,94,239,110,250,220,47,120,147,226,17,96,51,136,13,13,143,195,236,8,92,29,40,252,214,23,34,97,235,92,180,215,226,82,94,5,0,31,247,73,132,155,70,1,238,44,21,24,243,174,86,221,62,116,205,136,227,197,154,187,190,59,84,195,198,217,55,47,231,
206,28,223,151,204,185,46,109,61,159,199,70,206,173,10,213,115,211,103,37,212,78,104,5,216,104,115,184,85,192,193,29,203,42,20,101,245,149,186,112,6,9,77,119,106,213,17,18,94,75,64,67,213,90,87,54,208,74,181,159,144,203,100,75,116,104,239,130,104,86,
213,156,179,46,251,96,115,177,192,100,105,159,159,152,58,42,197,62,127,70,255,15,19,20,130,197,161,44,97,72,87,66,96,44,3,87,51,230,224,114,222,86,14,230,176,24,26,22,136,104,223,196,45,84,250,96,124,169,229,226,139,22,218,69,59,192,168,71,139,104,10,
205,124,226,223,178,87,109,172,32,115,35,184,67,55,239,58,90,151,102,52,183,23,194,139,147,242,200,173,215,165,149,2,231,174,239,177,250,148,109,5,91,158,70,176,17,96,141,68,196,45,54,152,28,130,142,1,12,54,139,121,48,57,78,216,241,247,209,46,162,139,
104,13,75,116,143,230,250,249,155,213,183,231,172,225,21,150,105,103,131,159,203,109,239,63,6,89,60,55,155,164,37,139,113,134,233,167,158,252,19,222,193,196,132,23,54,224,210,83,38,171,163,165,99,8,18,70,223,193,140,228,139,150,208,136,162,28,224,157,
244,136,42,203,159,85,26,232,78,109,210,52,91,111,62,242,171,122,104,163,174,221,219,185,238,154,100,146,151,157,128,226,30,235,81,186,122,227,207,120,167,251,242,185,28,86,157,201,226,184,29,196,244,121,63,87,38,230,237,207,206,144,213,122,141,173,171,
160,161,120,222,73,183,246,65,128,59,171,161,133,150,243,246,129,113,211,171,26,155,45,207,31,249,85,195,118,187,219,42,17,74,69,92,50,107,130,82,203,97,51,231,247,230,190,75,94,128,139,65,140,28,174,109,52,41,59,112,113,117,255,190,210,131,73,10,65,
199,78,136,214,86,78,173,97,127,167,67,113,5,226,254,41,25,207,231,21,150,234,20,245,154,246,105,220,107,250,43,8,72,198,141,189,189,111,3,211,235,40,163,24,145,137,185,138,70,157,101,58,173,183,209,106,60,164,198,199,108,31,59,36,193,55,202,85,17,197,
0,123,167,67,253,5,216,27,16,153,117,224,164,234,130,128,6,48,134,61,86,202,219,210,219,127,136,233,163,148,247,8,120,236,29,46,151,103,158,221,225,186,133,198,52,91,115,112,199,12,73,56,234,19,158,179,68,41,184,56,200,177,70,164,154,130,155,230,199,
111,74,193,53,106,110,208,152,71,149,84,183,151,218,194,56,51,24,167,199,65,237,21,135,13,192,52,218,178,138,193,32,90,147,213,249,12,128,60,137,2,143,34,102,69,20,3,235,109,104,117,22,131,5,237,38,254,207,119,227,172,79,214,177,18,205,5,174,148,88,200,
37,32,249,188,115,231,225,3,48,140,184,125,50,17,119,99,139,209,62,208,238,112,191,233,227,23,227,26,157,191,121,71,109,20,3,92,78,95,251,59,223,141,97,76,101,245,57,227,5,211,134,2,30,139,244,137,23,162,117,221,18,86,0,3,183,26,193,33,95,150,32,227,
127,223,108,180,245,183,217,93,95,162,85,141,89,150,62,213,78,213,81,10,176,138,6,56,112,80,143,243,243,55,56,216,149,53,141,166,11,0,142,149,242,109,192,44,184,205,157,59,172,0,246,138,100,161,128,243,162,36,134,187,173,197,104,251,157,217,234,88,214,
161,178,90,180,26,89,21,180,148,146,223,75,113,178,227,103,53,234,12,54,153,217,114,97,218,180,144,199,178,132,131,120,110,13,182,92,38,10,114,18,64,197,26,142,74,117,179,117,158,66,226,137,135,247,15,81,46,46,138,82,128,11,233,209,111,128,175,75,255,
179,179,180,182,69,102,115,184,194,246,79,93,54,175,185,117,105,4,151,245,170,52,134,91,93,215,104,198,73,110,44,132,153,73,71,121,52,26,92,222,140,150,128,106,123,121,3,27,190,205,233,242,96,184,82,20,214,0,99,227,113,217,223,202,196,188,233,131,210,
100,219,192,63,198,10,233,115,232,166,79,199,162,16,224,2,122,28,216,221,11,169,154,204,66,151,203,141,137,140,140,176,6,152,114,50,78,63,61,156,32,23,160,21,141,161,26,12,227,229,71,33,192,213,116,101,95,156,191,63,40,209,252,128,209,42,35,135,125,97,
55,218,28,110,210,168,179,38,133,3,23,251,87,177,180,109,102,2,1,198,186,202,14,31,125,21,53,141,170,30,239,138,66,191,218,222,138,55,147,226,229,2,45,88,204,23,124,110,48,59,8,184,78,40,234,21,17,1,48,5,217,142,25,127,212,244,47,36,193,43,133,31,14,
205,55,153,193,239,10,125,110,143,19,87,213,87,167,167,136,245,190,159,107,245,54,82,167,54,143,2,49,157,25,49,0,119,104,24,175,45,142,34,128,187,106,52,226,156,113,109,106,188,240,2,128,49,85,167,162,193,32,210,25,236,211,34,21,96,12,95,158,34,191,53,
12,105,22,15,203,82,92,180,64,252,196,153,38,162,105,177,206,11,246,70,87,61,2,176,79,245,25,245,85,14,112,58,150,78,206,72,145,252,50,80,121,225,34,135,115,90,11,57,120,82,133,211,175,239,96,85,222,222,120,56,111,78,86,87,27,102,240,53,68,9,80,93,205,
51,195,157,91,176,70,213,166,137,195,47,78,254,216,145,95,71,126,41,215,97,42,235,244,94,0,23,83,113,22,116,7,224,74,210,182,85,93,84,112,34,61,98,50,67,32,97,41,204,248,24,123,164,110,205,193,156,44,185,54,165,67,254,26,174,24,92,185,241,23,190,182,
197,250,12,221,225,172,39,219,88,160,169,93,6,152,230,13,255,43,192,14,9,215,38,192,73,6,248,79,40,145,2,169,19,141,253,55,253,104,221,154,212,4,153,96,249,232,193,113,78,92,80,230,219,202,235,12,228,253,77,191,142,7,145,189,28,203,84,245,16,247,98,197,
30,92,222,186,187,91,37,24,160,67,48,155,190,46,74,184,216,155,45,26,232,36,1,250,187,19,226,100,252,93,67,51,228,181,50,209,197,210,254,120,73,19,235,208,233,115,179,205,86,231,3,151,171,41,25,36,96,145,112,1,195,95,232,71,219,131,81,99,99,109,148,137,
233,174,4,113,22,239,171,120,91,59,122,112,252,198,241,67,19,46,202,89,195,192,199,166,125,85,220,3,39,85,88,17,224,17,172,170,16,170,255,96,182,58,222,50,152,237,184,118,249,63,64,251,131,1,48,230,29,69,67,18,128,119,205,115,87,254,75,86,145,122,203,
29,49,2,206,218,187,110,200,44,141,149,94,156,133,138,9,121,159,108,45,225,126,127,168,230,37,171,205,249,70,103,165,248,187,98,49,107,245,182,207,11,206,106,231,129,164,192,32,212,91,152,18,29,12,128,113,27,26,220,197,211,28,225,0,79,4,61,140,10,116,
95,23,237,138,199,193,101,202,144,75,200,226,167,238,28,170,197,133,221,29,27,26,93,171,190,46,146,174,220,88,180,160,168,66,119,16,128,158,139,64,119,117,82,2,11,199,2,13,214,155,108,127,41,44,211,30,90,247,253,153,113,60,14,171,62,81,33,188,199,155,
205,217,109,128,169,79,140,0,239,142,112,128,49,169,33,5,254,15,206,121,119,37,169,1,139,161,63,246,241,177,27,107,7,167,201,87,252,97,74,186,17,43,19,117,108,118,135,155,236,4,247,233,221,175,126,201,218,126,184,118,77,189,218,132,181,164,31,184,84,
17,179,43,0,27,3,132,59,156,190,120,186,76,251,217,215,123,43,95,253,104,115,113,124,94,118,130,102,228,160,56,220,148,236,252,108,95,176,170,196,22,80,144,177,250,157,34,66,1,198,137,134,161,212,104,220,73,2,223,243,9,153,5,19,21,151,139,133,156,135,
39,143,72,86,184,61,158,133,31,110,42,190,228,98,113,180,174,215,124,119,70,180,251,88,253,236,97,89,138,235,111,26,215,119,33,128,86,72,251,18,103,235,42,188,105,82,116,27,59,92,144,128,201,8,227,108,118,87,94,81,165,46,235,191,71,235,149,69,21,205,
108,22,88,238,119,79,207,34,163,6,197,189,12,231,55,248,20,178,11,222,14,224,116,177,22,46,150,190,47,66,1,70,177,140,123,44,226,254,19,215,81,219,66,216,197,107,173,74,140,201,94,62,103,200,135,247,85,171,140,143,190,245,249,169,164,242,122,195,249,
130,54,151,106,184,142,73,153,36,34,253,18,69,36,61,89,76,50,83,197,132,231,51,75,133,19,24,170,38,11,57,85,214,68,48,69,215,96,118,182,214,248,24,57,48,214,117,247,141,89,101,217,233,242,191,2,176,159,117,188,110,80,39,164,1,228,193,164,45,132,25,169,
92,140,251,9,223,79,37,27,174,150,239,106,185,40,172,241,177,65,202,239,251,214,188,97,159,103,151,213,233,151,236,200,175,27,181,231,88,61,219,183,92,82,183,124,186,196,152,214,181,79,83,71,167,108,73,137,139,193,197,109,251,125,57,55,36,0,83,144,145,
3,150,70,40,192,232,3,99,233,125,92,9,136,226,238,57,210,245,13,190,236,116,176,63,180,48,111,63,183,169,197,122,127,205,57,211,131,95,237,169,144,30,47,209,96,90,79,151,46,138,245,202,102,140,75,37,19,135,39,105,211,146,197,175,242,184,44,84,141,245,
116,145,2,233,9,128,49,35,2,147,3,254,8,196,137,64,144,63,1,67,11,55,118,198,212,89,172,102,23,140,16,35,214,178,252,244,222,220,255,176,121,76,197,115,103,106,90,174,221,119,162,161,111,97,153,78,160,51,216,176,78,55,49,219,46,54,220,25,140,182,210,
15,184,70,59,41,86,64,6,245,147,181,220,50,81,89,172,144,240,177,156,243,106,127,214,27,135,36,103,8,58,7,247,40,192,93,155,70,69,40,23,163,79,140,33,75,180,112,231,7,225,154,152,87,139,203,127,54,200,249,105,219,238,28,182,14,99,216,227,65,63,143,7,
241,61,200,96,118,100,52,233,109,146,22,163,253,188,158,22,242,217,4,163,98,124,30,75,213,55,65,84,60,64,41,45,134,247,120,141,29,152,16,233,239,141,67,5,48,94,23,171,174,126,67,58,47,57,20,142,109,9,112,241,155,240,63,48,96,127,40,136,215,53,210,184,
1,90,233,235,65,116,227,226,53,148,120,114,187,195,37,107,54,218,211,29,14,119,107,172,83,192,103,27,21,18,94,41,253,141,134,146,9,11,159,5,210,66,154,245,7,29,132,69,195,150,69,32,192,88,233,117,58,128,220,2,255,225,0,9,93,109,206,163,212,189,44,128,
123,253,16,138,27,132,26,96,57,53,184,30,234,134,203,209,27,13,185,6,75,242,227,158,71,56,151,139,201,134,61,145,33,105,167,62,240,125,0,120,80,194,191,33,45,232,77,107,93,120,43,179,70,82,243,221,137,20,59,124,27,185,124,105,225,96,130,139,190,55,86,
213,43,11,214,69,67,94,177,157,238,228,137,27,70,175,143,48,144,81,255,226,38,215,106,234,19,215,135,248,126,168,151,177,200,233,79,208,103,158,96,93,180,199,50,239,169,184,94,66,197,181,44,66,64,70,139,122,36,116,120,37,60,255,75,116,160,134,66,29,124,
1,180,152,198,245,35,71,7,95,2,228,24,234,118,160,126,139,148,125,134,223,167,156,133,214,45,78,168,228,6,121,0,225,245,223,1,112,155,66,241,240,61,186,169,6,93,61,128,250,24,55,99,220,23,33,0,207,165,22,53,218,19,184,85,93,176,50,88,44,116,224,188,21,
42,112,123,156,131,59,112,51,110,201,131,27,38,227,222,135,233,97,14,50,206,240,224,36,74,49,213,203,24,196,233,106,188,29,197,48,134,66,95,0,96,15,135,250,193,89,189,213,99,223,126,92,109,155,249,96,63,12,34,20,82,113,141,211,97,225,186,201,37,62,31,
14,72,12,17,86,83,151,15,211,101,3,13,197,162,190,197,137,129,151,0,220,95,122,226,193,25,225,208,123,192,205,56,217,62,135,138,172,112,213,205,232,198,252,9,128,249,12,158,23,7,227,90,18,216,30,73,5,212,72,219,65,85,21,185,106,0,238,96,105,63,79,117,
116,6,9,191,194,167,88,6,248,53,10,110,60,53,186,6,118,194,177,24,176,192,121,242,127,247,36,176,97,9,48,5,25,213,198,80,26,104,152,71,129,14,23,209,141,193,14,172,196,131,53,153,119,80,3,108,5,13,136,116,212,179,168,95,113,203,187,205,0,108,85,111,61,
112,216,1,220,193,165,66,144,39,211,160,195,160,48,1,218,187,87,225,99,20,72,148,56,11,72,123,40,19,57,118,27,253,206,97,0,215,214,155,15,27,182,0,83,144,241,128,57,196,41,20,100,180,184,71,134,129,232,70,96,63,5,240,30,129,103,196,245,73,56,173,136,
57,92,24,173,195,234,178,197,189,33,142,35,14,224,203,128,142,217,135,184,57,198,173,84,52,98,7,203,123,233,113,22,81,160,109,225,218,95,17,7,176,15,208,232,162,12,160,238,74,46,213,213,131,122,216,56,171,167,162,122,179,207,30,15,191,1,28,2,176,185,
148,139,113,242,28,87,12,224,58,163,28,74,233,36,240,20,216,206,90,107,85,60,160,255,2,109,5,58,29,204,9,130,96,182,255,23,96,0,39,6,154,199,185,141,173,49,0,0,0,0,73,69,78,68,174,66,96,130,0,0 };
const char* logo_cabbage_black_no_text_png = (const char*) temp_95a301a0;
const char* getNamedResource (const char*, int&) throw();
const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) throw()
{
unsigned int hash = 0;
if (resourceNameUTF8 != 0)
while (*resourceNameUTF8 != 0)
hash = 31 * hash + (unsigned int) *resourceNameUTF8++;
switch (hash)
{
case 0x9971560d: numBytes = 7732; return cabbageLogoHBlueText_png;
case 0xb3347c97: numBytes = 32229; return logo_cabbage_Black_png;
case 0xdb211163: numBytes = 7710; return logo_cabbage_black_no_text_png;
default: break;
}
numBytes = 0;
return 0;
}
}

+ 26
- 0
ports/cabbage/source/BinaryData.h View File

@@ -0,0 +1,26 @@
/* =========================================================================================
This is an auto-generated file: Any edits you make may be overwritten!
*/
#ifndef BINARYDATA_INCLUDED
#define BINARYDATA_INCLUDED
namespace BinaryData
{
extern const char* cabbageLogoHBlueText_png;
const int cabbageLogoHBlueText_pngSize = 7732;
extern const char* logo_cabbage_Black_png;
const int logo_cabbage_Black_pngSize = 32229;
extern const char* logo_cabbage_black_no_text_png;
const int logo_cabbage_black_no_text_pngSize = 7710;
// If you provide the name of one of the binary resource variables above, this function will
// return the corresponding data and its size (or a null pointer if the name isn't found).
const char* getNamedResource (const char* resourceNameUTF8, int& dataSizeInBytes) throw();
}
#endif

+ 197
- 0
ports/cabbage/source/CabbageCallOutBox.cpp View File

@@ -0,0 +1,197 @@
/*
modified version of juceCalloutbox
*/
#include "CabbageCallOutBox.h"
CabbageCallOutBox::CabbageCallOutBox (Component& c, const Rectangle<int>& area, Component* const parent)
: borderSpace (2), arrowSize (1.0f), content (c)
{
addAndMakeVisible (&content);
if (parent != nullptr)
{
parent->addChildComponent (this);
updatePosition (area, parent->getLocalBounds());
setVisible (true);
}
else
{
setAlwaysOnTop (true);
updatePosition (area, Desktop::getInstance().getDisplays()
.getDisplayContaining (area.getCentre()).userArea);
addToDesktop (ComponentPeer::windowIsTemporary);
}
}
CabbageCallOutBox::~CabbageCallOutBox()
{
}
//==============================================================================
class CallOutBoxCallback : public ModalComponentManager::Callback
{
public:
CallOutBoxCallback (Component* c, const Rectangle<int>& area, Component* parent)
: content (c), callout (*c, area, parent)
{
callout.setVisible (true);
callout.enterModalState (true, this);
}
void modalStateFinished (int) {}
ScopedPointer<Component> content;
CabbageCallOutBox callout;
JUCE_DECLARE_NON_COPYABLE (CallOutBoxCallback)
};
CabbageCallOutBox& CabbageCallOutBox::launchAsynchronously (Component* content,
const Rectangle<int>& area,
Component* parent)
{
jassert (content != nullptr); // must be a valid content component!
return (new CallOutBoxCallback (content, area, parent))->callout;
}
//==============================================================================
void CabbageCallOutBox::paint (Graphics& g)
{
g.fillAll(Colours::black);
// getLookAndFeel().drawCallOutBoxBackground (*this, g, outline, background);
}
void CabbageCallOutBox::resized()
{
content.setTopLeftPosition (0, 0);
refreshPath();
}
void CabbageCallOutBox::moved()
{
refreshPath();
}
void CabbageCallOutBox::childBoundsChanged (Component*)
{
updatePosition (targetArea, availableArea);
}
bool CabbageCallOutBox::hitTest (int x, int y)
{
return outline.contains ((float) x, (float) y);
}
enum { callOutBoxDismissCommandId = 0x4f83a04b };
void CabbageCallOutBox::inputAttemptWhenModal()
{
const Point<int> mousePos (getMouseXYRelative() + getBounds().getPosition());
if (targetArea.contains (mousePos))
{
// if you click on the area that originally popped-up the callout, you expect it
// to get rid of the box, but deleting the box here allows the click to pass through and
// probably re-trigger it, so we need to dismiss the box asynchronously to consume the click..
postCommandMessage (callOutBoxDismissCommandId);
}
else
{
exitModalState (0);
setVisible (false);
}
}
void CabbageCallOutBox::handleCommandMessage (int commandId)
{
Component::handleCommandMessage (commandId);
if (commandId == callOutBoxDismissCommandId)
{
exitModalState (0);
setVisible (false);
}
}
bool CabbageCallOutBox::keyPressed (const KeyPress& key)
{
if (key.isKeyCode (KeyPress::escapeKey))
{
inputAttemptWhenModal();
return true;
}
return false;
}
void CabbageCallOutBox::updatePosition (const Rectangle<int>& newAreaToPointTo, const Rectangle<int>& newAreaToFitIn)
{
targetArea = newAreaToPointTo;
availableArea = newAreaToFitIn;
Rectangle<int> newBounds (content.getWidth(),
content.getHeight());
const int hw = newBounds.getWidth() / 2;
const int hh = newBounds.getHeight() / 2;
const float hwReduced = 0;//(float) (hw - borderSpace);
const float hhReduced = 0;//(float) (hh - borderSpace);
const float arrowIndent = 0;//borderSpace - arrowSize;
Point<float> targets[4] = { Point<float> ((float) targetArea.getCentreX(), (float) targetArea.getBottom()),
Point<float> ((float) targetArea.getRight(), (float) targetArea.getCentreY()),
Point<float> ((float) targetArea.getX(), (float) targetArea.getCentreY()),
Point<float> ((float) targetArea.getCentreX(), (float) targetArea.getY()) };
Line<float> lines[4] = { Line<float> (targets[0].translated (-hwReduced, hh - arrowIndent), targets[0].translated (hwReduced, hh - arrowIndent)),
Line<float> (targets[1].translated (hw - arrowIndent, -hhReduced), targets[1].translated (hw - arrowIndent, hhReduced)),
Line<float> (targets[2].translated (-(hw - arrowIndent), -hhReduced), targets[2].translated (-(hw - arrowIndent), hhReduced)),
Line<float> (targets[3].translated (-hwReduced, -(hh - arrowIndent)), targets[3].translated (hwReduced, -(hh - arrowIndent))) };
const Rectangle<float> centrePointArea (newAreaToFitIn.reduced (hw, hh).toFloat());
const Point<float> targetCentre (targetArea.getCentre().toFloat());
float nearest = 1.0e9f;
for (int i = 0; i < 4; ++i)
{
Line<float> constrainedLine (centrePointArea.getConstrainedPoint (lines[i].getStart()),
centrePointArea.getConstrainedPoint (lines[i].getEnd()));
const Point<float> centre (constrainedLine.findNearestPointTo (targetCentre));
float distanceFromCentre = centre.getDistanceFrom (targets[i]);
if (! (centrePointArea.contains (lines[i].getStart()) || centrePointArea.contains (lines[i].getEnd())))
distanceFromCentre += 1000.0f;
if (distanceFromCentre < nearest)
{
nearest = distanceFromCentre;
targetPoint = targets[i];
newBounds.setPosition ((int) (centre.x - hw),
(int) (centre.y - hh));
}
}
setBounds (newBounds);
}
void CabbageCallOutBox::refreshPath()
{
repaint();
background = Image::null;
outline.clear();
outline.addRectangle(1, 1, getWidth()-2, getHeight()-2);
/*
const float gap = 4.5f;
outline.addBubble (content.getBounds().toFloat().expanded (gap, gap),
getLocalBounds().toFloat(),
targetPoint - getPosition().toFloat(),
9.0*/
}

+ 66
- 0
ports/cabbage/source/CabbageCallOutBox.h View File

@@ -0,0 +1,66 @@
#ifndef __CABBAGE_CALLOUTBOX
#define __CABBAGE_CALLOUTBOX

#include "JuceHeader.h"

/*
Copyright (C) 2031 Rory Walsh

Cabbage is free software; you can redistribute it
and/or modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

Cabbage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with Csound; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA
*/

class CabbageCallOutBox : public Component
{
public:
//==============================================================================
CabbageCallOutBox (Component& contentComponent,
const Rectangle<int>& areaToPointTo,
Component* parentComponent);
~CabbageCallOutBox();

void updatePosition (const Rectangle<int>& newAreaToPointTo,
const Rectangle<int>& newAreaToFitIn);
static CabbageCallOutBox& launchAsynchronously (Component* contentComponent,
const Rectangle<int>& areaToPointTo,
Component* parentComponent);

//==============================================================================
void paint (Graphics& g);
void resized();
void moved();
void childBoundsChanged (Component*);
bool hitTest (int x, int y);
void inputAttemptWhenModal();
bool keyPressed (const KeyPress& key);
void handleCommandMessage (int commandId);

private:
//==============================================================================
int borderSpace;
float arrowSize;
Component& content;
Path outline;
Point<float> targetPoint;
Rectangle<int> availableArea, targetArea;
Image background;

void refreshPath();

JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CabbageCallOutBox)
};


#endif // __JUCE_CALLOUTBOX_JUCEHEADER__

+ 2255
- 0
ports/cabbage/source/CabbageCustomWidgets.h
File diff suppressed because it is too large
View File


+ 1886
- 0
ports/cabbage/source/CabbageGUIClass.cpp
File diff suppressed because it is too large
View File


+ 304
- 0
ports/cabbage/source/CabbageGUIClass.h View File

@@ -0,0 +1,304 @@
/*
Copyright (C) 2007 Rory Walsh
Cabbage is free software; you can redistribute it
and/or modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
Cabbage is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
// You should have received a copy of the GNU Lesser General Public
License along with Csound; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA
*/
#ifndef CABBPARSE_H
#define CABBPARSE_H
#include <stdio.h>
#include <string>
#include <iostream>
#include <vector>
#include <string>
#include <cctype>
#include <algorithm>
#include <fstream>
#include <sstream>
#include "CabbageUtils.h"
namespace CabbageIDs
{
static const Identifier top = "top";
static const Identifier left = "left";
static const Identifier width = "width";
static const Identifier height = "height";
static const Identifier min = "min";
static const Identifier max = "max";
static const Identifier value = "value";
static const Identifier channel = "channel";
static const Identifier colour = "colour";
static const Identifier tablecolour = "tablecolour";
static const Identifier fontcolour= "fontcolour";
static const Identifier items = "items";
static const Identifier text = "text";
static const Identifier range = "range";
static const Identifier sliderrange = "sliderrange";
static const Identifier amprange = "amprange";
static const Identifier caption = "caption";
static const Identifier basetype = "basetype";
static const Identifier textbox = "textbox";
static const Identifier name = "name";
static const Identifier type = "type";
static const Identifier trackercolour = "trackercolour";
static const Identifier sliderskew = "sliderskew";
static const Identifier sliderincr = "sliderince";
static const Identifier midichan = "midichan";
static const Identifier midictrl = "midictrl";
static const Identifier kind = "kind";
static const Identifier decimalplaces = "decimalplaces";
static const Identifier mode = "mode";
static const Identifier shape = "shape";
static const Identifier channeltype = "channeltype";
static const Identifier comborange = "comborange";
static const Identifier populate = "populate";
static const Identifier outline = "outline";
static const Identifier popup = "popup";
static const Identifier plant = "plant";
static const Identifier line = "line";
static const Identifier tablenumber = "tablenumber";
static const Identifier resizemode = "resizemode";
static const Identifier drawmode = "drawmode";
static const Identifier readonly = "readonly";
static const Identifier xyautoindex = "xyautoindex";
static const Identifier file = "file";
static const Identifier latched = "latched";
static const Identifier xchannel = "xchannel";
static const Identifier ychannel = "ychannel";
static const Identifier minx = "minx";
static const Identifier miny = "miny";
static const Identifier maxx = "maxx";
static const Identifier maxy = "maxy";
static const Identifier valuex = "valuex";
static const Identifier fill = "fill";
static const Identifier valuey = "valuey";
static const Identifier textcolour = "textcolour";
static const Identifier pluginid = "pluginid";
static const Identifier tabs = "tabs";
static const Identifier tabbed = "tabbed";
static const Identifier rangey = "rangey";
static const Identifier rangex = "rangex";
static const Identifier tabpage = "tabpage";
static const Identifier filetype = "filetype";
static const Identifier workingdir = "workingdir";
static const Identifier author = "author";
static const Identifier xychannel = "xychannel";
static const Identifier guirefresh = "guirefresh";
//type of widgets/controls/messages
static const String combobox = "combobox";
static const String rslider = "rslider";
static const String hslider = "hslider";
static const String vslider = "vslider";
static const String checkbox = "checkbox";
static const String button = "button";
static const String filebutton = "filebutton";
static const String table = "table";
static const String groupbox = "groupbox";
static const String image = "image";
static const String form = "form";
static const String xypad = "xypad";
static const String stringchannel = "string";
static const String hostbpm = "HOST_BPM";
static const String timeinseconds = "TIME_IN_SECONDS";
static const String isplaying = "IS_PLAYING";
static const String isrecording = "IS_RECORDING";
static const String hostppqpos = "HOST_PPQ_POS";
static const String csoundoutput = "csoundoutput";
};
class CabbageGUIClass : public CabbageUtils
{
double width, height, top, left, isRect, min, max, minX, minY, maxX, tabbed, maxY, comboRange, fftSize, overlapSize, frameSize,
noOfMenus, onoff, midiChan, midiCtrl, sliderRange, xypadRangeY, xypadRangeX, noSteps, noPatterns, pvsChannel, alpha,
line, anchor, linkTo, scaleX, scaleY, value, valueX, valueY, maxItems, sliderIncr, sliderSkew, decimalPlaces, rCtrls, lineIsVertical;
StringArray items, onoffcaptions, key, channels, snapshotData, colours;
String channel, name, sizeText, posText, boundsText, text, type, plant, reltoplant, bounds, range, fileType, workingDir,
shape, beveltype, caption, kind, topitem, yChannel, xChannel, author, native, basetype,
exit, csstdout, cssetup, file, debugMessage, xyChannel, pluginID, tabpage, preset;
Colour outline, fill, fontcolour, textcolour, colour, trackerFill;
int tableNum, textBox, numPresets, masterSnap, plantButton, xyAutoIndex, paramIndex, numTables, soundfilerIndex;
Array<int> vuConfig;
Array<int> tableNumbers;
Array<float> tableChannelValues;
//JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CabbageGUIClass);
public:
//constructor
NamedValueSet cabbageIdentifiers;
CabbageGUIClass(String str, int ID);
CabbageGUIClass(){};
~CabbageGUIClass();
int parse(String str);
float getNumProp(Identifier prop);
float getNumProp(Identifier prop, int index);
void setNumProp(Identifier prop, float val);
void setTableChannelValues(int index, float val);
float getTableChannelValues(int index);
void addTableChannelValues();
void setStringProp(Identifier prop, String val);
void setStringProp(Identifier prop, int index, String value);
String getStringProp(Identifier prop);
String getStringProp(Identifier prop, int index);
String getPropsString();
String getColourProp(Identifier prop);
float getNumPropVal(Identifier prop);
void setNumPropVal(Identifier prop, float val);
static String getCabbageCodeFromIdentifiers(NamedValueSet props);
static String getStringForIdentifier(var props, String identifier, String type);
Rectangle<int> getBounds(){
Rectangle<int> bounds(left, top, width, height);
return bounds;
}
void setBounds(Rectangle<int> bounds){
left = bounds.getX();
top = bounds.getY();
width = bounds.getWidth();
height = bounds.getHeight();
}
static StringArray getIdentifiers(){
StringArray test;
return test;
}
Rectangle<int> getComponentBounds();
StringArray getStringArrayProp(Identifier prop);
String getStringArrayPropValue(Identifier prop, int index);
int getIntArrayPropValue(Identifier prop, int index);
Array<int> getIntArrayProp(Identifier prop);
float getFloatArrayPropValue(Identifier prop, int index);
Array<float> getFloatArrayProp(Identifier prop);
StringArray getChannels(){
return channels;
}
inline int getNumPresets(){
return snapshotData.size();
}
inline void clearPresets(){
snapshotData.clear();
}
inline String setOnOffcaptions(int index, String str){
if(index<=onoffcaptions.size())
onoffcaptions.getReference(index)=str;
}
inline String getOnOffcaptions(int index){
if(index<=onoffcaptions.size())
return onoffcaptions.getReference(index);
else return "";
}
inline String setItems(int index, String str){
if(index<=items.size())
items.getReference(index)=str;
else
return "";
}
inline String getItems(int index){
if(isPositiveAndBelow (index, items.size()))
return items.getReference(index);
else return "";
}
inline String getColours(int index){
if(colours.size())
return colours.getReference(index);
else return "";
}
inline int getNumberOfColours(){
return colours.size();
}
inline StringArray getItemArray(){
if(items.size())
return items;
else return StringArray();
}
inline int getItemsSize(){
return items.size();
}
inline Array<int> getVUConfig(){
return vuConfig;
}
// inline String getChannel(int index){
// return channels[index];
// }
inline void addDummyChannel(String dummyChan){
return channels.add(dummyChan);
}
// inline String getTableChannel(int index){
// return channels[index];
// }
// inline int getNumberOfTableChannels(){
// return channels.size();
// }
inline int getKeySize(){
return key.size();
}
inline String getkey(int index){
return key.getReference(index);
}
// inline int getNumberOfTables(){
// return numTables;
// }
// int getTableNumbers(int index)
// {
// if(index<tableNumbers.size())
// return tableNumbers[index];
// }
// inline Array<int> getTableNumbersArray()
// {
// return tableNumbers;
// }
};
#endif

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save