Has the interpolate transition a problem with chords?

I would like to use interpolate to smoothly change filter function values like:

-- This works as expected
d1 $ s "superpiano" <| n "[0 4 8 12]" # cutoff 4000
interpolate 1 $ s "superpiano" <| n "[0 4 8 12]" # cutoff 400

But I got a problem when using a list of notes like:

d1 $ s "superpiano" # n "[0,4,8,12]" # cutoff 4000
interpolate 1 $ s "superpiano" # n "[0,4,8,12]" # cutoff 400

Tidalcycles does not simply interpolate the cutoff values here, because it seems like it interpolates the note values too. I would expect a similar behaviour relate to the first example and that TidalCycles just calculates the cutoff values here.

Can someone please help me? :slight_smile:

interpolate interpolates everything, and unfortunately doesn't figure out how to properly match up simultaneous pairs of overlapping events.

For what you're trying to do, though, you don't really need a transition if you're willing to fudge with getnow and do

do
  t <- toRational <$> getnow
  d1 $ s "superpiano" <| n "[0,4,8,12]*4" # cutoff (4000 - 3600 * (rotR t $ slow 4 envL))
1 Like

Ah nice! Thank you very much. It looks similar to the implementation of interpolate but just applied on one specific function. I think I can adapt it and work with this.