(
play {
    n = Impulse.ar(6);
    o = Demand.ar(n, CoinGate.ar(0.4, n), Dseq([ Dseq(12), Dseq(6,inf) ]));
    x = Impulse.ar(o);
    d = Decay;
    d = d.ar(x, TRand.ar(0, 0.5, x)) * Pulse.ar(50 * d.ar(x, 0.1, 20, 1));
    d = Pan2.ar(d, TRand.ar(-1, 1, x));
    Limiter.ar(
        LeakDC.ar(
            tanh((14*d) + GVerb.ar(FreqShift.ar(d.sum, 1200), 99, 9))
        )
    )
}
)


// alternate versions
// d = Pan2.ar(d, PulseCount.ar(PulseDivider.ar(x, 7)) % 2 * 2 - 1 / 2);
// tanh((9*d) + HPF.ar(GVerb.ar(FreqShift.ar(d.sum, 1200), 99, 10).round(0.3)))