Tidal ≥1.0.11 `trigger` function

There’s a super interesting new function trigger, which aims to replace retrig:

https://tidalcycles.org/index.php/trigger

Although it’s not mentioned in the above docs, this also works with named patterns!

It’s in early development so it would be good to discuss how it could be refined. I think @yaxu is already planning an additional quantise parameter.

One suggestion I had:

When using the ID parameter, it will trigger when silencing the other pattern, which I think is undesirable, e.g.:

d1 $ sound "bd*2 cp:4(5,8,<0 2>)" 
  # djf (trigger 2 $ range 0.1 0.9 $ slow 2 envL) 

d2 $ silence -- will trigger above

[Meta: not sure how to format the above code block to Haskell, anyone?]
[Admin: I just enabled this - write ‘haskell’ immediately after the first three backticks. You might need to refresh your browser for it to work.]

As far as Tidal is concerned, silence is a pattern the same as any other. If you run p "foo" silence then list, it’ll list it as running.
For your above use case I think we need a separate function called stop or similar (e.g. stop "foo") that really stops a pattern.

As for trigger UI, howabout

  • trigger - on its own, triggers on evaluation (i.e. as now but without having to give a pattern id)
  • triggerFrom - the current trigger
  • triggerWith - retrigger using a pattern of bools, e.g. d1 $ s "bd*8" # gain (triggerWith $ slow 8 "t" envL) to retrigger every 8 cycles

That would be an evolution from the current trigger function, but actually I think I’d prefer the last one in the list being called trigger as the starting point. Then we could have:

Trigger from pattern:

d1 $ s "bd*8" # gain (trigger $ slow 8 envL)

Trigger from last eval of current pattern id:

d1 $ s "bd*8" # gain (trigger onEval)

Trigger from last eval of another pattern id:

d1 $ s "bd*8" # gain (trigger $ onEvalId 2)
2 Likes

Agreed this would be useful, probably for other reasons too. Perhaps stopIn n cycles too?

I like all your suggestions for trigger :+1: