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.


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.

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
:slight_smile: 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



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. :slight_smile:


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:

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!


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. :face_with_monocle:

Edit2: when I run dom7 in tidal, I get


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:

I don't know very much about chords but happy to receive pull requests with additions!


edit: nvm I read the rest of your post :wink:

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

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