yoo author here! I haven't played with Tidal, though I have done livecoding audio with Vivid[1], a Haskell-to-supercollider DSL.
Never heard of shadertone; thanks for the link! Always cool to see another point in the livecode space.
You could definitely do livecoding of visuals and audio in the same haskell file! One interesting idea is to define a light higher level DSL/collection of functions that would allow one to actually program both simultaneously, as in write a line of code that affected both audio and visuals.