Yep, s_nframes is best.
To Iohannes's point (s_n, s_nframes, and s_channels are redundant) , s_n needs to be kept in the struct, and
then we could either have s_nframes, or s_nchannels,
in which case you'd get the other one by dividing.?? I have a deep horror of integer division (if you ever divide
by zero your program will crash, and anyway when I was a kid it could easily take a millisecond to compute).
Probably I just have to get over it.
(I think nframes is the better one to keep and nchannels should become a macro in the case that we don't just supply both in the structure.)
Still wondering about s_samplerate... it's a long name but perhaps it's the shortest good one :)
Meanwhile, I'm going to propose that we not bother (yet) with automatically vectorizing stuff like filters,
because I think there will be lots of headaches, and anyway one is most likely to want to do more per-channel
than just one object at which point the clone object becomes useful.
cheers
Miller