Solo stops sending midi clock

I'm syncing external gear with Tidal but unfortunately when I solo a stream the midi clock stops. It starts ticking again when I unsolo. Any ideas how I can solo a stream without silencing the midi clock?

Also on a separate not, when I try unmuteAll I get error: Variable not in scope: unmuteAll. Muting and unmuting single streams does work. I'm on Tidal 1.9.2 at the moment.

A quick and dirty method is to edit your BootTidal.hs file to replace the default solo functions with these alternates (you can also append them with a different name if you'd prefer that):

solo i = streamSolo tidal "midiclock" >> streamSolo tidal i
unsolo i = streamUnsolo tidal "midiclock" >> streamUnsolo tidal i

Here "midiclock" is whatever id you've used to create your clock pattern.

Note: This will only work if you solo/unsolo one stream at a time, or solo several things and then unsoloAll. If you want, I can come up with a better version next week when I've got a bit more time.

2 Likes

This is what I was looking for! :heart: I'll try it shortly and am planning to report back here.

Is it possible to solo multiple streams at a time too? Didn't know, could you ellaborate a bit or point me to some documentation or example? I found a fairly recent post of you here: https://club.tidalcycles.org/t/mute-unmute-via-osc-midi. But unfortunately the mentioned page has been moved .

Thanks a lot! Your help is much appreciated.

Btw, (un)muting and (un)soloing is big fun when playing live.

As with all things Haskell there are surely many ways to do this, but here are a couple example functions for you:

soloF = foldMap $ streamSolo tidal
unsoloF = foldMap $ streamUnsolo tidal

(Or soloFold or foldMapSolo or whatever naming you like.)

You can pass any Foldable of ID, but most often that'll be a list ala:

soloF ["1", "clap", "whatever"]

And can write mute/unmute variations if you like, just by copying and editing the definitions above.

If you find you're always or often (un)soloing/(un)muting/etc. similar quantities of things you could easily add a few helpers ala:

solo3 x y z = soloF [x, y, z]

so you can call it just like:

solo3 "1" "clap" "whatever"

(I'd probably just use the list version, personally, but figured I should mention the possibility.)

1 Like

Oh, and, of course, if there are IDs you always want included or excluded from soloing/muting/etc. then you can just include those directly in your helper functions, patterning off of mindofmatthew's earlier reply.

@mindofmatthew and @mvdirty it works as expected , thanks a lot!