; Select audio/midi flags here according to platform
-odac ;;;realtime audio out
;-iadc ;;;uncomment -iadc if realtime audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o gen34.wav -W ;;; for file output any platform
sr = 44100
ksmps = 32
nchnls = 2
0dbfs = 1
instr 1 ; partials 1, 4, 7, 10, 13, 16, etc. with base frequency of 400 Hz
ibsfrq = 400
inumh = int(1.5 + sr * 0.5 / (3 * ibsfrq)) ; estimate number of partials
isrcln = int(0.5 + exp(log(2) * int(1.01 + log(inumh * 3) / log(2)))) ; source table length
itmp ftgen 1, 0, isrcln, -2, 0 ; create empty source table
ifpos = 0
ifrq = ibsfrq
inumh = 0
l1:
tableiw ibsfrq / ifrq, ifpos, 1 ; amplitude
tableiw ifrq, ifpos + 1, 1 ; frequency
tableiw 0, ifpos + 2, 1 ; phase
ifpos = ifpos + 3
ifrq = ifrq + ibsfrq * 3
inumh = inumh + 1
if (ifrq < (sr * 0.5)) igoto l1
itmp ftgen 2, 0, 262144, -34, 1, inumh, 1, -1 ; store output in ftable 2 (size = 262144)
asig poscil .5, ibsfrq, itmp
outs asig, asig
endin
i 1 0 2
e