Hi Olivier,
As usual, I want to thank you for the excellent and expressive DSP software!
I am wondering a couple of things:
* In the Beat() trigger object, .setPresets() as a method seems hamstrung by few oddities:
1. I have to define a preset list as a list of voices, each with presets, rather than a list of presets, each with voices. I.e. shouldn't the most natural way to index the list of presets be `presets[preset_num][voice_num]` rather than `presets[voice_num][preset_num]`? When composing 1 or 0 list patterns over a set of voices, I wish to grok them together as layers near each other, not spread apart.
2. There is no way to manually edit a "current pattern" and then store it. It appears that `
beat.new()` is the only way to create a new beat then store it with `beat.store(x)` where x is a memory slot number. But this means that we are beholden to the random weight algorithm...the only way to have a deterministic beat is to define it in a preset list as a giant blob ahead-of-time. The preset list itself doesn't also appear update-able individually in terms of slots...it is "all or nothing". This makes on-the-fly updating a beat manually awkward, and pyo is otherwise great for quick interactive updates.
3. There is no assignment syntax in getter/setter style; assignment to the preset list must go through `.setPresets()`
* Semi-related, re: documentation. It occurs to me the triggers documentation page could benefit from the methods being split by type between ones that produce triggers "from nothing" (Metro, Beat, Seq, Cloud), and ones that consume triggers and create a new signal from there (TrigEnv, Iter, TrigLinseg, Count,...) I am happy to contribute such a change to the docs via a PR!
Cheers,