> ckgoto (ktr == 1), wait > > wait: > > reinit reset I have a fix, not tested with your csd but I think that the follow change works: ... if (ktr == 1) then reinit reset kgoto reset endif ... instead of `ckgoto ... wait'. The solution with `ckgoto' is ... ckgoto (ktr != 1), cont reinit reset kgoto reset cont: ... It is the same but if-then seems clearest. `kgoto reset' avoids the pass after `rireturn', when `ktime' is zero. A proof of concept is sr = 44100 kr = 10 instr 1 reset: prints "=== start ===\n" ktime timeinsts if (ktime < 1) kgoto end rireturn if (ktime >= 2) then reinit reset kgoto reset endif printk2 ktime end: endin i1 0 5.9 csound -n test.csd ... new alloc for instr 1: === start === i1 1.00000 i1 1.10000 i1 1.20000 i1 1.30000 i1 1.40000 i1 1.50000 i1 1.60000 i1 1.70000 i1 1.80000 i1 1.90000 === start === i1 1.00000 i1 1.10000 i1 1.20000 i1 1.30000 i1 1.40000 i1 1.50000 i1 1.60000 i1 1.70000 i1 1.80000 i1 1.90000 === start === i1 1.00000 i1 1.10000 i1 1.20000 i1 1.30000 i1 1.40000 i1 1.50000 i1 1.60000 i1 1.70000 i1 1.80000 i1 1.90000 ... tito