Hi all,
I'm really enjoying the course, even spending a little of my non-available free time doing some composing
I'm sure I'm jumping ahead here, but a limitation I'm finding is the ability to perform non-destructive operations to multiple channels.
Example: I want to build up a series of cycles (d1-d4), then create a "drop" by:
muting all channels
starting d5 bass kick while all channels still muted
unmute all channels with extra bass oomph
I'm not a dance music artist, I'm sure all my terminology is wrong, but I hope the description makes sense -
Is there options for me to do this? I've seen the 'mute' command, but it's a per channel thing, 'hush' doesn't let me bring everything back easily, the workaround I've tried is creating a d6 $ silence which I can solo and unsolo but I've got to be very nimble fingered on the keyboard to line everything up
Maybe try something like #gain (range 0 1$ slow 4 square) which would alternate the volume between 0 and 1 every 2 cycles. And if you wanted to bring back the elements gradually you could probably do something like: #gain (range 0 1$ stack[square,saw])
I haven't actually tried any of this myself so take my answer with a grain of salt. https://tidalcycles.org/index.php/Oscillators. Maybe looking through this page would give you more ideas.
If you want to carry out multiple actions at once, you can use do notation. To apply a function to everything you can use all:
do d5 $ sound "bd*4"
solo 5
Then
do unsolo 5
all $ (# shape 0.8)
To take off that effect on all you'd then need to do
all id
It'd be good to have a good session or two on different ways of shaping a performance. The problem with solo and all etc is that you have to remember the state they're in. It really needs some UI so you can visually see what is solo'd, etc.
I went a little bit further, and found I can save my nimbleness plus build that wait by throwing in a setcps to half speed when I mute/solo the silent channel:
do solo 6 -- my silence channel
setcps 0.35
and bringing it back to 0.7 in my next do:
do d1 $ slow 2 $ n "[0 0] [~@0.4 0] [0 0] ~ " # s "bd"
setcps 0.7
unsolo 6
Just got to be coscious of my own ability to keep time then
Thanks! Needs some work on timing sections for sure, but the bones are there
The jux rev at the end was improvised, thought it'd get a laugh after Alex talked about it in the live stream the other night, but then it actually sounded awesome
cool thread
thanks
so in theory this would work as an all fadeout workaround?
xfade [1,2,3,4,5,6,7] $ silence
doesn't complain, but also doesn't execute
it'd be cool to be able to say xfade all $ silence
and it'd be cool to say xfade all over the next 12 cycles to silence
it's a mixing tool, like panning, level, reverb, etc...
Ok here's a more relaxed version of hush that works on d1 .. d16
quieten = mapM_ (\i -> xfade i silence) [1 .. 16]
Or if you want over a given number of cycles:
quietenIn t = mapM_ (\i -> xfadeIn i t silence) [1 .. 16]
The mapM_ function takes each number in the list [1 .. 16] and gives it to (\i -> xfadeIn i t silence). The \ is called 'lambda' and puts the number in the i variable. Then that gets used in the xfadeIn.
thinking about how to best put this in my BootTidal.hs file so it runs everytime
(until the next Tidal version )
think I found BootTidal.hs with this info
is there anything else that needs to be included?
some of the other code that looks like this in the BootTidal.hs file (under let)
has tidal or i at the end
included as is, Tidal doesn't seem to re-load knowing this function
(BootTidal.hs from here ...
~/.cabal/share/x86_64-linux-ghc-8.0.2/tidal-1.5.2)
thanks for your help with this, sounds very musical
so cool
Hey I've been thinking the same, I watched this excellent video of @kindohm 's on the topic - he makes some interesting points about where to keep this stuff, and how - you can add it to your boottidal.hs, or you can just have it in a separate file.
My preference, at least initially, is to use the separate function file (for reference, here) for the main reason that these functions are all new to me and I'm still getting used to exactly how they work - so I like to keep that open for reference and occasional modification/addition as I'm going
Putting it in the bootstrap file makes it a bit more permanent, and a bit more obfuscated (imo of course) - and any modifications require a reboot of tidal I believe, so I'll probably leave that for down the track a bit
PPS I found there's a vscode github gist extension that will let you create, open and save your gists directly to github... "Gist" by Ken Howard