Note also that Osc will interpolate, so the output
will not be limited to the precise MIDI notes you
specify. If you want these to be allowable pitches,
look into Demand.
Turns out that Demand is what I was looking for. I didn't want
interpolation, nor did OscN work for me. (I don't know why.)
p = [0, 2, 4, 5, 7, 9, 11] + base;
pitchSeq = Dseq(p.midicps.mirror1, 10000);
base = Latch.kr(Demand.kr(Impulse.kr(y*2), 0, pitchSeq), gate);
The only documentation I could find about Dseq was in the examples of
Demand. The examples use 1/0 (loop infinitely) as the second argument
to Dseq, which doesn't seem to work for me.