Thanks SCC! This comma thing is awesome. I think I'm starting to understand it. Correct me if I've got this wrong but I think a Sound parameter can only have one CapyTalk expression in it. But that expression can effectively be multiple sub-expressions separated by a comma.

Running with that idea I made a rotating sequencer in the frequency field of a SampleCloud:

The whole sequencer is in the Frequency parameter without any STGCs, just for fun. It cycles through eight note values set by eight faders. When you hit the "rotate" button it moves the starting point of the sequence along one step (you can't see any change in the faders but you can hear it).

What's puzzling me now is how I can replace those eight repetitive lines with some SmallTalk to generate that... but that is a related question.

Here's the code as text in case you want to copy-and-paste it:

| seqFaders eva rotation |

rotation := EventVariable new initialValue: 0.

eva := EventVariable new size: 8.

seqFaders := (1 to: 8) collect: [:i| !SeqNote suffix: i].

(

(!Rotate switchedOn

true: (rotation <+ ((rotation + 1) mod: 8))

false: (nil)),

((eva @< 0) <+ (((0 + rotation) mod: 8) of: seqFaders)),

((eva @< 1) <+ (((1 + rotation) mod: 8) of: seqFaders)),

((eva @< 2) <+ (((2 + rotation) mod: 8) of: seqFaders)),

((eva @< 3) <+ (((3 + rotation) mod: 8) of: seqFaders)),

((eva @< 4) <+ (((4 + rotation) mod: 8) of: seqFaders)),

((eva @< 5) <+ (((5 + rotation) mod: 8) of: seqFaders)),

((eva @< 6) <+ (((6 + rotation) mod: 8) of: seqFaders)),

((eva @< 7) <+ (((7 + rotation) mod: 8) of: seqFaders)),

(eva @< ((1 bpm: !BPM) countTriggersMod: 8))

) nn