# Week 5, lesson 2 - chords, arpeggios and.. Algoraoke

I worked with the chords and trying to figure this one out. I do hear a gradual swing or change in the speed of the rhythm but I couldn't quite wrap my head around how to get that effect. I also think that I rely too much on setcps, and I think there are probably some limitations caused by how I use it.

Spoiler

setcps 0.2
d1 \$ trigger 1 \$ n "[~ 0 0 0] [1 1 2 2 2 ~]" |+ n "<f4'min bf4'min>" # s "superpiano"

1 Like

A post was merged into an existing topic: Challenge: Algoraoke!

I made a thread for the Algoraoke challenge over here -> Challenge: Algoraoke!

(I moved yours there @hujairi, hope that's ok!)

1 Like

Is there a way to force the arpeggiation to play quarter notes, or sixteenth notes independently from the number of notes in the chord? For example `d1 \$ arpeggiate \$ n "'maj 'maj7" # s "superpiano"` will play 1/7 notes, is there a way to force these to be `n`-th notes?

I know that without arpeggiation, this accomplished with the `%` operator: `d1 \$ n "{0 4 7 0 4 7 11}%8" # s "superpiano"` will solve the above, but without using the arpeggiate function.

So you'd like something like `'maj'4` that didn't add an extra note, but 'rotated' them, so you'd end up with `"0 4 7 0"`?

Then the question is whether the next cycle you should get `"0 4 7 0"` again or whether it should continue where it left off with `"4 7 0 4"`

Right so the idea is to be able to have any pattern of chords and still get an arpeggio that is still eight notes or n-th notes.

spoiler
``````d1 \$ sometimes rev \$ slow 4 \$ note "[~ 0 0 0] [1 1 3 3 3/2 ~]" # sound "jvbass"
|* speed "[0.5,1,2,5]"
|+ hpf (range 100 800 perlin) # hpq 0.4
|+ note "<0 4>" # room 0.4 # sz 0.7

d2 \$ sometimes (degradeBy perlin) \$ iter 2 \$ loopAt 1 \$ chop 4 \$ sound "break:4"
# gain 1.2
``````

maybe not so much a spoiler, as it
is a remix, or a 'flip
with a reworking of code from
@yaxu and @hujairi or,
what do you call it?
[a decoding? | a re-coding? | mis-plagiarization? |
change some numbers add some things and call it something?]
I love that I don't even have to record any audio for you to hear it as a remix
this is fun, thanks

Hi, wonderful news.
Here is my addition to the mystery algoraoke new genre, can anyone guess what this classic is?

``````d1 \$ qtrigger 1 \$ jux ((|- n"16") . rev) \$ struct "t(3,11)"
\$ n "<[-3,9,13,16,21] [1,9,13,16,20] [-6,9,13,16,18] [4,9,13,16] [-3,9,13,16] [6,9,13,18] [4,14,16,20] [4,14,16,20] [11,16,20,23][11,16,20,21][11,14,20][11,14,18] [4,11,14,20][-8,11,14,20][-3,9,13,16,21][1,9,13,16,21][-3,9,13,16,21][4,9,13,16,20][-6,9,13,16,18][-3,9,13,16] [10,16,18,22][6,16,18,22][-1,16,19,23][4,16,19,23][6,14,18,23][2,14,18,21][-3,13,16,21][1,13,18,22][-4,14,16,20][-8,14,16,20][-3,9,13,16,21][-8,9,13,16,21]>"
#sound "supersaw"
``````

While trying to arrange other instruments (melody, drums) i stumbled upon a few issues, notation related i think. Help I'm a rock!

first a basic n pattern issue, i don't understand how

`d1 \$ n "0 2 1 2" #sound "kick:7 snare:6 hc:1"`

..gives "kick kick snare closedhat" ! I'm lost.. I thought I would get "kick hat snare hat".

Then, I wanted several orbits (d1, d2, d3) to start playing together, karaoke style, but i didn't manage this either. Fun thing is i really had trouble getting the drums to coincide with the chords at all... Here is my code (the chords are finished, i only sketched the very start of the melody, and the drums are super basic). All in all, I would like to have a decent drum and a matching melody, I'm not so far from the end result once those issues resolved... Here is the "whole" project :

``````d1 \$ qtrigger 1 \$ jux ((|- n"16") . rev) \$ struct "t(3,11)"
\$ n "<[-3,9,13,16,21] [1,9,13,16,20] [-6,9,13,16,18] [4,9,13,16] [-3,9,13,16] [6,9,13,18] [4,14,16,20] [4,14,16,20] [11,16,20,23][11,16,20,21][11,14,20][11,14,18] [4,11,14,20][-8,11,14,20][-3,9,13,16,21][1,9,13,16,21][-3,9,13,16,21][4,9,13,16,20][-6,9,13,16,18][-3,9,13,16] [10,16,18,22][6,16,18,22][-1,16,19,23][4,16,19,23][6,14,18,23][2,14,18,21][-3,13,16,21][1,13,18,22][-4,14,16,20][-8,14,16,20][-3,9,13,16,21][-8,9,13,16,21]>"
#sound "supersaw"

d2 \$ qtrigger 1 \$ jux rev \$ struct "t(3,11)"
\$ n"<[12 17] [12 16][12 14][12 24][12 0] [12 14] [12 16] [ 12 24] [ 12 24] >"
#sound "supersquare"
#legato 0.5

d3 \$ sound "hc:12*8"
#gain 0.8
``````

spoiler

d1 \$ gain "[0 1 1 1]<[1 1 1 1 1 0]<[1 1 1 1 1 0][1 1 1 1 0 0]>>" # n ("<[[f4 f4][fs4 g4 g4]][bf4 bf4 b4 c c]>" |+ "'min") # s "superpiano"

1 Like

Just replying to the basic pattern bit of things for the moment:

My interpretation of your expectation is that you expect the numbers in the n pattern to index into that list to the right. Is that correct?

What's going to happen instead is that we're getting two pieces of information from the n pattern:

1. Our pattern structure has four events in it (which is what you wanted, so all is well here!)
2. If we're using a synth (which we're not, but for the same of completeness), we'll take notes 0, 1, and 2 in the order that you have them. If we're using a sampler (which we are!), we're going to pick sounds 0, 1, and 2 from whatever sample folder(s) is specified.

So, if all we had in the string to the right was "kick", we'd get, basically, "kick:0 kick:2 kick:1 kick:2" as our result.

If we had "kick snare hc" in our string to the right, we'd get kick:0 snare:2 hc:1 kick:2 because the first three in each string would line up, then the second string would loop back around to match a sample to the last event in the string on the left.

``````| event event event event | event event event event |
| kick  snare hc |  kick  | kick  snare hc |  kick  |
``````

But because you're also specifying which sample to use in the second string, that's going to override the sample index specified in the n pattern, meaning the n pattern is only going to give you event timing, and all sound information is coming from the string on the right, giving us "kick:7 snare:6 hc:1 kick:7". I suspect that the "kick kick" that you're observing at the beginning is actually event four followed by event one.

Thank you so much! It's getting clearer now. I see now that modifying the string on the right modifies the sequence on the left, which I had not understood : i thought i would feed a list of elements on the right and pick from it on the left into an n pattern. But I understand now : not only does right hand side the list have an effect on the n pattern, it can be used as a way of scrolling through lists of instruments. This was not clear for me at all, and it enables many semi-automatic sample swaps, which I'm really happy to discover.

I had never noticed how different these would be !

d1 \$ n "0 0 0 0 0 0 0 0" #sound "kick snare hc kick snare hc hc kick"
d1 \$ n "1 0 0 0 1 0 0 1" #sound "kick snare hc kick snare hc hc kick"
d1 \$ n "0 1 2 3 4 5 6 7" #sound "kick snare hc kick snare hc hc kick"
d1 \$ n "7 6 5 4 3 2 1 0" #sound "kick snare hc kick snare hc hc kick"

Thank you infinitely! This will be of great help on the road to understanding how the syntax works better.

2 Likes

A post was split to a new topic: Working with groups of co-occuring events

Rather late to the party but here's my take on the Rockwell rhythm:

spoiler
``````setcps 0.7

d1 \$ slow 2 \$ n "[~ t!! . t(5,16)]" |> note "[c . cs d d]" |+ note "<0 7>" |> sound "bass:1"
``````

To my ear the euclidean rhythm is a better fit than the triplets in the other attempts here. @tedthetrumpet and @hujairi nailed the chords though. I'd love to have that skill.

1 Like

just started the course, so i'm super late to everything...
anyways, here is a little 1 min thing i did with the rockwell tune.
have fun!

p.s.: lovely stuff going on here! cool, that this all exists!

3 Likes

Heh that's excellent!

1 Like

How do I play a '7' chord? C7?

I can find six, nine, eleven etc. in the chordList, but not seven

c'7 doesn't seems to work, nor c'seven

When not otherwise specified, a "seventh chord" usually means a dominant seventh chord: a major triad together with a minor seventh. However, a variety of sevenths may be added to a variety of triads, resulting in many different types of seventh chords.

Ok, got it, probably it is c'dom7.

Edit: also wonder why c'm7 is not working. c'min7 and c'minor7 works, but if it is the same, c'm7 is shorter.

Edit2: when I run `dom7` in tidal, I get

``````[0,4,7,10]
``````

When I run `maj7`
I get

``````    • Variable not in scope: maj7
• Perhaps you meant ‘maj9’ (imported from Sound.Tidal.Chords)
``````

Here's the list of chords:
https://github.com/tidalcycles/Tidal/blob/main/src/Sound/Tidal/Chords.hs

2 Likes

the chord naming is a little inconsistent, I'd be happy to spend some time working on making it better

Apologies for the very late reply - @yaxu actually answered this, although indirectly:

appending `'N` to the end of the chord will play `N` notes in the chord -

I've only recently added documentation to the wiki for this:

The number of notes in a chord can be modified by appending the `'` to a chord, along with an integer. 6 notes can be played in the above chord inversion like this:

`d1 \$ n "c'major7'ii'6" # s "supermandolin"`

1 Like