Melodic Examples with Tidal?

Yes, this is to come, including scales, chords, canons, arpeggios and rounds!

10 Likes

Thanks great to hear!

I meant more if any examples comes to mind for inspiration, not necessarily instruction at this point. All good if not though.

Thanks, I'm eager to learn those topics !

My first, proper jam with Tidal, about a year ago : https://soundcloud.com/nilhartman/240219-tidalacid2-live
Took me an hour and a half to compose/performed/record. With "traditional" sequencers, I'd would have needed weeks.
The "artwork" is a screenshot of the code, and as you can see it's quite simple to decypher.
Hopefully I'm not off-topic here :slight_smile:

8 Likes

Very simple four-bar chord sequence and bass line in my second-ever tidal algorave performance:

https://youtu.be/jDl_ALEq4Zs?t=1014

4 Likes

I would say for that it can be a little tough to progress with a melody further once you figure out something analogical to

d1 $ stut' 3 (1/12) (|+ note "<5 7>") $ s "superpiano"

which obviously will sound kind of "right" by ear and you might even know what to do with it, but then how do you manage to pattern out the melody that you have in your head, but so it still works inside of the function, tricky, huh?

What I would highly recommend is fiddling around with patterning out note changes with functions such as mentioned above stutWith or plyWith (it isn't in the docs I think but here's a video of Kindohm explaining it out which is worth checking out if you haven't seen it), striate/striate' can be really interesting for coming up with funky harmonic stuff/textures, also what you see in @nilhartman's example is a probably really good way of executing code if you have the melody sort of ready before hand or want a specific pattern/progression and then modify it afterwards.

Also, don't be afraid of longer samples, whole sequences can be very nicely chopped up and then reassembled (here's here's a video by @yaxu on bite/chew, slice/splice functions which will surely come handy), apart from these,
sustain and begin are your best friends.

If you ie. don't really want to striate a 30s sample into 3072 bits each of them 1/12 of the length of the whole sample (worth trying when it's one of those cold early mornings during spring) then apply some function to it, it can be quite an inspiring method to make a recording of yourself hitting a two-three note sequence on your favourite synth (can be with a little pause inbetween).
Load it up, mess around with it (again, if anyone asked me what's fun I'd say striate), and if you don't like what happens with the two other notes at some point you can just cut the sustain off and you're left with only the base note. Tidy.

If you have any hardware or a bunch of favourite VSTs, obviously using midi is a very good idea as well, although after writing a bit of code I usually end up recording stuff that looks like this:

Here's a more or less melodic tidal session I had done the other day.

tl;dr try to make a trance record then change the sample

8 Likes

I just learned about snowball yesterday, which blew my mind:

https://tidalcycles.org/index.php/snowball

Example straight from the documentation:

d1 $ note (scale "minor" $ snowball 4 (+) (slow 2) $ (run 3)) 
      # sound "gtr" # gain 0.9
14 Likes

Oh god that got fun quickly. Thank you for that!

I've spent the morning investigating the builtin sc synths and trying to build something harmonic using a basic ii-V-I chord sequence, humanising it, varying it etc:

Melodic investigations on top of this are next - this thread looks like it has enough to keep me going for a few days at least - thanks!

3 Likes

I made some music with math functions and perlin noise, based in the code of a fellow coder from argentina. I upload it but with hydra visuals so the code is unable, if it interest you i could search it or something.

4 Likes

This sounds amazing! Can I look at the code or a snippet?

Hey thanks!
I did a screen recording as well, there's a link in the soundcloud comment too:

Hope you find something useful there :slight_smile:

...and please excuse the part where I forgot I was recording for 4 extra minutes of silence :stuck_out_tongue:

6 Likes

This is really nice--- thanks for sharing!

1 Like

Hi Dan nice example. I've tryed to copy it in my atom, but I can't understand the sintax you are using and it doesn't run in my Tidal...
for exemple
d1 $ s (e "<3 7 5 2>" 8 "superchip") --number 8 seems not be correct (but it works for you!! so, obviously it's correct!!) What are you doing???
Thanx and congratulations.

Hey thank you!

And hmm good question... to be honest it was a while ago and now that looks quite confusing indeed :joy:

Looks like I was playing with Euclidean rhythms though.
I guess the syntax have changed now (making it easier).

You should be able to rewrite the original code

d1 $ s (e "<3 7 5 2>" 8 "superchip")

with

d1 $ s "superchip(<3 7 5 2>, 8)"

There's a video about Euclidean rhythms here

I hope it helps!

Ahh ok! It's old syntax. Thank you and good luck.

Yes it's still there but e got renamed to euclid in version 1.0.

Shameless plug but my last album Thanks for Watching was sequenced entirely with Tidal and I think it's pretty melodic.

I used MIDI to program hardware synths (Waldorf Rocket, Roland MGS 64, Kawai PHm, Boss DR-202) - everything was recorded in three long jams (probs like 15 hours total) and then edited down.

The code was pretty simple - I just uploaded my file here if you want to take a look. Obviously I was changing stuff as I went so this isn't absolutely everything, but should give you an idea of the kind of structures I was using.

5 Likes

Also I don't know anything about music theory so I got my boyfriend to write me some cheat sheets :grinning:

10 Likes

Have you tried using toScale ? Works wonders, is super intuitive and flexible.

For instance, to have a C Maj scale :

d1 $ n (toScale [0,2,4,5,7,9,10] "0 1 2 3 4 5 6 7") # s "midi" # midichan 1

You can collide the melodic pattern with a rhythmic pattern using struct (and it's so fun !) :

d1 $ struct "t([5 6],16,<0 [0 2]>)"$ n (toScale [0,2,4,5,7,9,10] "0 1 2 3 4 5 6 7") # s "midi" # midichan 1"

If I want to transpose it to D Maj, |+2 will transpose the sequence 2 semitones up :

d1 $ struct "t([5 6],16,<0 [0 2]>)"$ n (toScale [0,2,4,5,7,9,10] "0 1 2 3 4 5 6 7") |+2 # s "midi" # midichan 1

Now what's immensely convinient is that you can swap values in the interval array (the bit after toScale and create your own scales as well, or simply different scales (here, C Phrygian) :

d1 $ struct "t([5 6],16,<0 [0 2]>)"$ n (toScale [0,1,3,5,7,8,10] "0 1 2 3 4 5 6 7") # s "midi" # midichan 1

Say you want to directly play the sequence in E Phrygian, rather than adding 4 st (|+4), you can start from 4 (as you already know, an E) rather than 0 (C) :

d1 $ struct "t([5 6],16,<0 [0 2]>)"$ n (toScale [4,5,7,9,11,12,14] "0 1 2 3 4 5 6 7") # s "midi" # midichan 1

6 Likes