<Cabbage> bounds(0, 0, 0, 0)
form caption("Sampler") size(600, 400), guiMode("queue"), pluginId("smp1")
keyboard bounds(0, 304, 600, 95)
soundfiler bounds(6, 8, 270, 175), channel("soundfiler1", "soundfiler2") colour(188, 188, 188), tableBackgroundColour(62, 71, 86), showScrubber(1), displayType("mono")

vslider bounds(222, 220, 50, 81) channel("fa") range(0.01, 5, 0.01, 0.5, 0.001) text("a")
vslider bounds(268, 220, 50, 81) channel("fd") range(0.01, 5, 0.01, 1, 0.001) text("d")
vslider bounds(316, 220, 50, 81) channel("fs") range(0.01, 1, 1, 1, 0.001) text("s")
vslider bounds(366, 220, 50, 81) channel("fr") range(0.01, 5, 0.01, 1, 0.001) text("r")

vslider bounds(2, 220, 50, 81) channel("a") range(0.01, 5, 0.01, 0.5, 0.001) text("a")
vslider bounds(48, 220, 50, 81) channel("d") range(0.01, 5, 0.01, 1, 0.001) text("d")
vslider bounds(96, 220, 50, 81) channel("s") range(0.01, 1, 1, 1, 0.001) text("s")
vslider bounds(146, 220, 50, 81) channel("r") range(0.01, 5, 0.01, 1, 0.001) text("r")

vmeter bounds(538, 12, 25, 280) channel("L") value(0) outlineColour(0, 0, 0), overlayColour(0, 0, 0) meterColour:0(255, 0, 0) meterColour:1(255, 255, 0) meterColour:2(0, 255, 0) outlineThickness(1) 
vmeter bounds(570, 12, 25,280) channel("R") value(0) outlineColour(0, 0, 0), overlayColour(0, 0, 0) meterColour:0(255, 0, 0) meterColour:1(255, 255, 0) meterColour:2(0, 255, 0) outlineThickness(1)
rslider bounds(366, 140, 60, 60) channel("Cutoff") range(0, 20000, 15000, .5, 0.001) text("Cutoff")
rslider bounds(296, 140, 60, 60) channel("Resonance") range(0, .9, 0, 1, 0.001) text("Resonance")
rslider bounds(432, 140, 60, 60) channel("EnvAmount") range(0, 1, 0, 1, 0.001) text ("EnvAmount")
rslider bounds(454, 238, 60, 60) channel("Gain") range(0, 2, 1, 1, 0.001) text("Gain")
rslider bounds(398, 68, 60, 60) channel("Crossfade") range(0, 1, 0, 1, 0.001) text("Crossfade")
</Cabbage>
<CsoundSynthesizer>
<CsOptions>
-n -d -+rtmidi=NULL -M0 --midi-key-cps=4 --midi-velocity-amp=5
</CsOptions>
<CsInstruments>
ksmps = 32
nchnls = 2
0dbfs = 1
gifftsize = 1024
gioverlap = gifftsize / 4
giwinsize = gifftsize
giwinshape = 1

gaMetersL init 0
gaMetersR init 0

SFile, kFileChanged cabbageGet "LAST_FILE_DROPPED"
giFile    ftgen     0,  0,    0,    1,  Sfile , 0,    0,      0

instr GUI
    gSFile, kFileChanged cabbageGet "LAST_FILE_DROPPED"
    printf SFile, kFileChanged
    cabbageSet kFileChanged, "soundfiler1", "file", SFile

endin

instr 1
    ia chnget "a"
    id chnget "d"
    is chnget "s"
    ir chnget "r"

    ifa chnget "fa"
    ifd chnget "fd"
    ifs chnget "fs"
    ifr chnget "fr"

    kFiltEnv madsr ifa, ifd, ifs, ifr
    kAmpEnv madsr ia, id, is, ir
    iFreq = p4
    iBasePitch = 261.63
    iRatio = iFreq / iBasePitch
    kStartinsamps chnget "soundfiler1"
    kLengthinsamps chnget "soundfiler2"
    kStart = kStartinsamps/sr
    kLengthselected =    kLengthinsamps/sr
    kEnd = (kStart + kLengthselected)
    kCrossfade chnget "Crossfade"

    aSigL, aSigR flooper2 1, 1, kStart, kEnd, kCrossfade, giFile
      fInL pvsanal aSigL, gifftsize, gioverlap, giwinsize, giwinshape
      fInR pvsanal aSigR, gifftsize, gioverlap, giwinsize, giwinshape
      fScalL pvscale fInL, iRatio
      fScalR pvscale fInR, iRatio
      aSigshiftedL pvsynth fScalL
      aSigshiftedR pvsynth fScalR
    aL = aSigshiftedL * kAmpEnv
    aR = aSigshiftedR * kAmpEnv
kResonance chnget "Resonance"
kCutoff chnget "Cutoff"
kEnvAmt chnget "EnvAmount"
kCutoff = limit(kCutoff + ((20000 - kCutoff) * kEnvAmt * kFiltEnv), 20, 20000)
    aL moogladder aL, kCutoff, kResonance
    aR moogladder aR, kCutoff, kResonance
kGain chnget "Gain"
    aL = aL*kGain
    aR = aR*kGain
    gaMetersL = aL
    gaMetersR = aR
outs aL, aR
endin

instr Meters
    k1 rms gaMetersL, 20
    k2 rms gaMetersR, 20
    cabbageSetValue "L", portk(k1, .25), metro(10)
    cabbageSetValue "R", portk(k2, .25), metro(10)
endin

</CsInstruments>
<CsScore>
i"GUI" 0 z
i "Meters" 0 z
f0 z
</CsScore>
</CsoundSynthesizer>
