I think that
spike function is a bit simpler if rearranged so the
. isn't needed:
let spike pat = pat # delaytime (range 0.001 0.3 $ slow 7.1 sine) # delayfeedback (range 0.7 0.99 $ slow 6.71 sine)
But yep, as you imply in your question, the
. in the mini notation (for grouping or marking out metrical 'feet') is unrelated to its use outside the mini notation.
The above links are great for in-depth understanding of its general use in Haskell.
In Tidal though, it's almost always used for one thing. Lets take
jux for example, it takes a function and a pattern as inputs, like
jux (hurry 2) (sound "bd sn"). What if you wanted to chop it up as well? Then you can use
. to combine functions together, e.g.
jux (hurry 2 . chop 64) (sound "bd sn"), and add a reverse as well like
jux (rev . hurry 2 . chop 64) (sound "bd sn").
. is used to join together two functions together. It only works if the output of the second function can be fed into the input of the first function. In Tidal it's mainly used for joining together Tidal functions which simply take a pattern as input and return a pattern as output, like
(# squiz 1.1), etc.