UGen Sieve1 undestanding

Is there any chance to know more about the parameters of the Ugen Sieve1 and the formula(s) under the hood?
I know the idea about Xenakis’s sieves, but the article which supposes to be the source is quite a bit difficult to read when you are not familiar with Python and Csound. Also, I tried to read the C++ source code, but still not clear to me. For instance about the parameter alternate, only this line if(unit->alternate_==1) { sign = unit->swap_==1?1.0f:-1.0f; unit->swap_ = 1 - unit->swap_; }, and what about the others value of alternate.
Which is/are the relation between the data values of the buffer, the gap, and alternate for the resynthesis?
Thanks in advance for any clarification.

I haven’t read Chris’s article, but I imagine it is more of a reference to Athena CL. I found The Sieves of Iannis Xenakis by Dimitris Exarchos to be an excellent resource for understanding this technique.


Thanks for the reference, but the point is more about this UGen Sieve1. There are as many as you want possibilities about sieves, and I am curious about this one specifically. Unfortunately, my understanding of C++ is limited, so that was the purpose of this topic. It will be nice to have more documentation about the implementation and the parameters or to improve it when there is a lack of it.

I did not find this reference.
For those who are interested in sieves, here are some other references to learn more about them:

1 Like

You could also check out sieves in miSCellaneous_lib. There’s a bunch of classes and analysis tools, but in contrast to Sieve1 it’s language-side. Take the tutorial “Sieves and Psieve patterns” as a starting point.
Currently the audio examples all use sieves as controllers, however, you could also fill buffers with waveforms generated by Sieves / Psieve patterns. Also, arrays filled with sieves could be fed into Duty or other demand rate UGens.