; Select audio/midi flags here according to platform
-odac ;;;realtime audio out
;-iadc ;;;uncomment -iadc if real audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o partikkel.wav -W ;;; for file output any platform
sr = 44100
ksmps = 20
nchnls = 2
giSine ftgen 0, 0, 65537, 10, 1
giCosine ftgen 0, 0, 8193, 9, 1, 1, 90
instr 1
kgrainfreq = 200 ; 4 grains per second
kdistribution = 0 ; periodic grain distribution
idisttab = -1 ; (default) flat distribution used for grain distribution
async = 0 ; no sync input
kenv2amt = 0 ; no secondary enveloping
ienv2tab = -1 ; default secondary envelope (flat)
ienv_attack = -1 ; ; default attack envelope (flat)
ienv_decay = -1 ; ; default decay envelope (flat)
ksustain_amount = 0.5 ; time (in fraction of grain dur) at sustain level for each grain
ka_d_ratio = 0.5 ; balance between attack and decay time
kduration = (0.5/kgrainfreq)*1000 ; set grain duration relative to grain rate
kamp = 5000 ; amp
igainmasks = -1 ; (default) no gain masking
kwavfreq = 440 ; fundamental frequency of source waveform
ksweepshape = 0 ; shape of frequency sweep (0=no sweep)
iwavfreqstarttab = -1 ; default frequency sweep start (value in table = 1, which give no frequency modification)
iwavfreqendtab = -1 ; default frequency sweep end (value in table = 1, which give no frequency modification)
awavfm = 0 ; no FM input
ifmamptab = -1 ; default FM scaling (=1)
kfmenv = -1 ; default FM envelope (flat)
icosine = giCosine ; cosine ftable
kTrainCps = kgrainfreq ; set trainlet cps equal to grain rate for single-cycle trainlet in each grain
knumpartials = 3 ; number of partials in trainlet
kchroma = 1 ; balance of partials in trainlet
ichannelmasks = -1 ; (default) no channel masking, all grains to output 1
krandommask = 0 ; no random grain masking
kwaveform1 = giSine ; source waveforms
kwaveform2 = giSine ;
kwaveform3 = giSine ;
kwaveform4 = giSine ;
iwaveamptab = -1 ; (default) equal mix of all 4 sourcve waveforms and no amp for trainlets
asamplepos1 = 0 ; phase offset for reading source waveform
asamplepos2 = 0 ;
asamplepos3 = 0 ;
asamplepos4 = 0 ;
kwavekey1 = 1 ; original key for source waveform
kwavekey2 = 1 ;
kwavekey3 = 1 ;
kwavekey4 = 1 ;
imax_grains = 100 ; max grains per k period
asig partikkel kgrainfreq, kdistribution, idisttab, async, kenv2amt, ienv2tab, \
ienv_attack, ienv_decay, ksustain_amount, ka_d_ratio, kduration, kamp, igainmasks, \
kwavfreq, ksweepshape, iwavfreqstarttab, iwavfreqendtab, awavfm, \
ifmamptab, kfmenv, icosine, kTrainCps, knumpartials, \
kchroma, ichannelmasks, krandommask, kwaveform1, kwaveform2, kwaveform3, kwaveform4, \
iwaveamptab, asamplepos1, asamplepos2, asamplepos3, asamplepos4, \
kwavekey1, kwavekey2, kwavekey3, kwavekey4, imax_grains
outs asig, asig
endin
i1 0 5 ; partikkel
e