Shifting with `<~` before a cycle starts doesn't trigger audio

Hi folks,
I'm trying to shift a bass kick slightly before the 1 downbeat on every second cycle.
Starting with a simple pattern sound "bd sd", then:

every 2 ("[0.125 0!3]" <~ ) $ s "bd sd"

should shift just the kick early by 0.125 of a cycle

I'm debugging my logic with feedforward, and both the 0.125 and bd are highlighting at the expected time, but there is no bd audio output

If I reverse the logic, ie

every 2 ("[-0.125 0!3]" ~> ) $ s "bd sd"

... same problem - feedforward visual triggers on time, but no bd output

I've tried other variations like patterning the <~ ala

( "<0 [0.125 0!3]>" <~ ) $ s "bd sd"

but that creates further anomolies, with missing bd audio and adding unexpected sd audio

Is this a bug?

i don't think it's a bug. i think you are expecting to always hear the kick on the 1 and then every other bar hear the stutter but tidal is shifting time back every two cycles and is missing that always-on downbeat. effectively, you need to add a second instance of the kick to make it work.

you are looking for something like this?

d1 $ stack [ every 2 (superimpose (0.125 <~)) $ s "bd" , s "hh*8" , "~ sn" ]

ha yeah sorry I should have actually put an example of what I expected to hear -

I was after a simpler way to do this:

d1 $ s "<bd ~> ~ sd <[~!3 bd] ~>

I'm not looking for a stutter - I want the second bd moved (rather than copied) forward in time

I had a bit of a discussion on the new discord chat about it, nudge "-0.1" was suggested which is in units of seconds, and has limitations of being bound to a maximum shift equal to the latency between sc and tidal (in practice I want to use this at slower cps so it's less effective)

@ritchse did a bunch of digging for me, and his explanation was that the shift backward in time actually moves the trigger hit to the end of the current cycle (ie later in time), rather than moving it to the end of the preceding cycle

Anyway, the reason I was wondering if it was buggy was because @yaxu's feedforward was actually behaving the way I expected, while superdirt/collider was not - if you watch the vid, the visual triggers land in the same place as my example above

1 Like

oh, ok, got a little swing to it, i see now what you mean.

yeah i kinda suspected this is what was happening with that. good to know :wink:

1 Like