This problem is primarily noticeable with MIDI notes, but it can be observed with samples too:
d1 $ note "c5(3,8)" # s "midi"
Alternate sample version:
d1 $ s "bev(3,8)" # legato 1
In the above patterns, each note's duration is only 1/8 of a cycle:
|x x x |
Where there is white space in the text, there is no sound.
Intead, with Euclid patterns, is it possible to have the note's event time fully occupy the time until the next note? For lack of a better string representation, something like this instead:
|x__x__x_|
Where the "_" character means that the sound still continues to play.
I've tried working around this by specifying larger values for legato (e.g. legato 2 or legato 3), but the Euclid patterns can vary and shift, and sometimes the legato value still isn't long enough, or it's too long and overlaps with the following note.
I think we'd need to find a way to express the spaces between the events as an euclidean pattern or a combination of euclidean patterns, and then reinject this formula into the code above.
Well the events of the gaps are described by euclidInv and euclidFull gives you an easy way to operate on both on and off events of a euclidean rhythm. But I don't know if that gets you closer to what you want.
Yes this works for me just fine with samples, but most of my Tidal coding is with MIDI these days, so it would be great to find a mathematical solution!
Note that my Haskell is not very good, but I had a go a making a function that will turn binary strings like 1 0 0 1 0 1 0 into legato ready strings...