Why "keep" Events which don't fire?

I'm messing around with Tidal internals a bit and I'm wondering why Events are kept which don't occur. E.g. given a pattern:

 n "1 2/2" # s "bd" 

if I look at the events which occur between cycles 0 and 2, I see 4 events (but I only hear 3).

Is that because, e.g., it preserves some property if we then scale again? Like "1 2/2*2"?

edit retag close merge delete

Sort by » oldest newest most voted

Hi Tom,

Yes this is a bit magic, but after some thought it makes sense that there are four events to me

Over two cycles it would be

• 1
• the first half of 2
• 1 (again)
• then the second half of 2

Basically there are three events, but one of them has been cut in two.

Taking that first half of 2 as an example, its first arc is (1%2, 3%2) i.e. from 0.5 to 1.5, representing where the event would be if it were whole. The second arc is (1%2, 1%1), showing what part of that arc is actually present.

When it comes to scheduling patterns, i.e. sending them out over OSC, events which don't have onsets (i.e. where the second arc doesn't start at the same time as the first one) are ignored, so you don't hear the fourth event in those two cycles.

However if you were to do something like this:

s "bd sn" # speed "1 2/2"


.. then you'd still expect the snare to be sped up by 2 the second time around, even though you're getting the back half of the 2..

In short, in your final pattern only onsets matter, but when constructing that pattern the way you will often want to combine fragments of events with other events, so those fragments need to be represented.

more