Just to explain a bit, I have some Eurorack modular background where everything is CV and musical knowledge often replaced by taste. You accidentally find soundscapes, rhythms, moods and depending on your taste you keep it or change it. I love this method.
Strudel is very flexible and I'm trying to recreate a similar work environment. For example instead of defining a specific drum sequence with beat(), euclid(), etc. I prefer this
s("bd").struct(binaryN(slider(1,0,0xFFFF,1))
It lets me change the rhythm quickly on the fly, and almost randomly. Another advantage is that I can also mark the number and redial the same rhythm afterwards.
Similar approach helps me with many things.
stack(
s("bd").struct(binaryN(slider(4520,0,0xFFFF,1))),
s("hh!16").velocity(binaryN(slider(4520,0,0xFFFF,1).range(0.6,1))),
s("saw!16").lpe(3).lpf(binaryN(slider(2540,0,0xFFFF,1).range(55,666)))
)
But I like applying a similar method to many things. Even in case of melodies I prefer tweaking randomly as long as I find something interesting.
const charseq = register('charseq', (pat) => pat.fmap((string) => seq(...String(string).split(''))).innerJoin())
s("piano").n(charseq(slider(1e7,1e7,1e8,1)).scale("Eb:minor")
By now I think you get an idea the way I work. I'm wondering if there's anyone else following the same concept. I'd also love to hear about other ways to do this.
I should also admit that many of attempts are failing. For example
let myint=clicktorandomize(4520)
s("bd").struct(binaryN(myint,16))
// trying to randomize 'myint' with a keyboard shortcut or a click
let pattA=euclid(7,16)
let pattB=struct("1 0 0 1 0 0 1 0")
stack(
s("bd").doXOR(pattA,pattB)
, s("hh").doAND(pattA,pattB)
, s("sine").struct(latch(binaryN(slider(4520,0,0xFFFF,1)))
)
// trying to combine various patterns
// disclamer: nope I could NOT come up with a working latch(), doXOR(), doAND(), clicktorandomize() function
So, how’s with you?