Challenge: Algoraoke!

We haven't had a new challenge in a while, so, ALGORAOKE time (a portmanteau of Algorithm and Karaoke).

This follows from the week 5 lesson 2 video, but if you're earlier in the course, please feel free to join in!

The idea is to do a cover version of one of your most favourite pop songs.

The main aim of this challenge is to demonstrate total lack of shame while having fun. Some entirely optional ideas for how you could approach this:

  • Share the code and/or a recording, but don't tell us what it is, let us guess
  • If you like to sing, or otherwise feel enthusiastic, feel free to record yourself singing along to it. Or maybe you'd prefer to leave it as an instrumental so someone else can have a go..
  • Try making Blue Monday by New Order (special recognition will go to the least accurate rendition of this one)

Multiple attempts welcome.

6 Likes

As ever, please have a read of the guidelines for giving constructive feedback here:

A quick reminder:

  • Observe the code of conduct, contact @heavy.lifting or me if you have concerns
  • Curse of knowledge - be mindful of the different experience levels and backgrounds of the people here, understand that knowing something can make it hard to see things from the perspective of others
  • Quality vs energy - think about other people’s work less in terms of ‘quality’ (e.g. how well written the code is, how hi-fi a recording is, etc) and more about ‘energy’ (e.g. how something makes you feel or what it reminds you of)

Also when you post your own code or recording, consider asking a question or two about particular aspects you'd like people to feedback on. People might be nervous to comment otherwise. If you're not after feedback and just want to share, that's all good, just let us know.

3 Likes

In another attempt at algoraoke, I tried to do a song by Björk. Here's what I got on my first try (and there is a little too much interpretation on my part here). Any guesses on which song it could be? It’s one of the older hits. The verses and chorus are the same chord pattern.

(I’m now thinking I should have added a melody line because I’m a horrible singer.)

setcps 0.4
d1 $ n "b3 fs3" # sound "supermandolin"
d2 $ "~ [hc hc hc ~ hc hc] ~ [hc hc hc hc hc hc]" # djf 0.25
d3 $ n "<13 16*3 14 15*2>" # sound "foley"  # pan "0.1 0.9" # binshift 0.4
d4 $jux rev $ arp "perlin2 <pinkyup pinkydown>" $ n "[b'min6 fs'aug'4]" # sound "supermandolin" # room 0.9  # rev 0.5
d5 $ "clap" # rev 0.8 # room 0.7
5 Likes

Hi all,

Took a bit of code for this one I made a month or two back (basically brute force).
sound cloud mp3
There's a lot more code, but here's the main riff i transcribed from the song. :

setcps (98/60/4)

d14 $ n ((+"0")  $ (+"0") $ (scale " major " ((+"-16") $ " { <~ 0@3> 0@3 ~ <~ 0@3>  }%2 "))) # s " fourteen "  # legato " 2 "  -- low sub

-- d1 $ repeatCycles 1 $ degradeBy 0 $ fast 1 $ midinote " {36 46/4 ~ ~, 48 48 42 ~ , ~ ~ ~ ~ ~ ~ 36/2}%16 " # s " four"

d1 $ midinote " { <[36,~] ~> <~ [36, <40 43>]>  <[38] [38 <36 [~ 40 43, ~ <41 42> ]>]> ~  ,  <~ 45/2> ~ ~ [ ~ 36/2]    }%8 " # s " four " -- drums

d2 $ n ((+"0")  $ (+"24") $ (scale " major " ((+"0") $ "{[0 0 0 0]@3 _   0 -1 _ -3    _ -2 _ <-4 >    -6 _ < -5> _  }%16"))) # s " eight "  # legato 0.8 -- juno 106 flute setting

d4 $  n ((+"0")  $ (+"-12") $ (scale " major " ((+"{5!8 4!8 8!8  }%8") $ "[0'maj___ , ~ 0 [2 3] 0 1 ] "))) # s " nine "  # legato 2 -- pads

d3 $  n ((+"0")  $ (+"-24") $ (scale " major " ((+"{5!8 4!8 8!8  }%8") $ "0"))) # s " ten "  # legato 2 # nudge "-0.01" -- distorted bass

-- main riff
do
 d2 $ n ((+"0")  $ (+"24") $ (scale " major " ((+"0") $ "{[0 0 0 0]@3 _   0 -1 _ -3    _ -2 _ <-4 >    -6 _ < -5> _  }%16"))) # s " eight "  # legato 0.8
 d1 $ repeatCycles 1 $ degradeBy 0 $ fast 1 $ midinote " { <[36,~] ~> <~ [36, 40]>  <[38] [38 36]> ~  ,  ~ ~ ~ [ ~ 36/2]   }%8 " # s " four "
 d3 $  n ((+"0")  $ (+"-24") $ (scale " major " ((+"{5!8 4!8 8!8  }%8") $ "0"))) # s " ten "  # legato 2 # nudge "-0.01"

1 Like

Ok here goes my first algoraoke, I decided to do a song most people will recognize:

do 
    let prog = "<c'dom7'ii f4'min'7>/2"
    d1 $ every' 4 3 (shuffle "8 16") $ stack[
        s "odx*2" # shape 0.3,
        n "0 _ _ _ _ _ _ _ 0" # s "909" |- note 2 # release 0.2,
        struct "[f t]*2" $ s "[cp,dr:6]" # shape 0.4 |+ note 2,
        s "d(<9 7>,16,2)" |- speed 1.5,
        s "hh27:13*8" # end 0.1 # gain 0.85,
        s "~ wind:1/2" # pan 0.7
        ] |+ shape 0.1
    d2 $ note "<[c@3.5 [g4 bf4 g4]] c f4 <[f4@3 df] [f4 [f ef df]@3]>>" # s "supersaw" 
        # octave 3 # legato 0.32 # voice 0.01 # room 0.05 # size 0.2
    d3 $ jux (|+ note 0.1) 
        $ note prog # s "supersquare" # bpf 1500 # gain 0.47 # room 0.2
    d4 $ (# pan rand) 
        $ struct "f t f t t f t f" $ note prog # s "superfork" 
            # legato 0.7 # octave 5  # room 0.2
    d5 $ note "<c'dom7 ~ ~ <~ [~ [f'min ef'maj df'maj]@3]>>" # s "superhammond" 
        # gain 0.8 # octave 6 # legato "<0.25 1>" # hpf 1200 # pan 0.6
    all $ (swingBy (1/12) 8)

You can listen to it with my singing over it here:

10 Likes

Here is my attempt, quite off but still recognizable.
Made this before watching the videos about chords, so I would do it differently now.

let april =
      [
          ("a", stack[slow 4 $ n (scale "major" "[12 . 5 . 8 . [~ [8 5]] . ~ . ~ [~ 5] . [15 13] . [12 8]]") # s "superpiano" # legato "[2 2 3 0.5 3.5 1 1 1 1 1]" # room 1 # sz 0.3,
                      slow 4 $ n ((|-12) (scale "major" "[-4 5 . 8 12 . 0 8 . 12 15 . 2 8 . 14 15 . -1 8 . 14 12]")) # s "superpiano" # orbit 1 # legato "[2*16]" # gain 0.9]),
          ("b", stack[slow 4 $ n (scale "major" "[12 . 5 . 8 . [~ [8 5]] . ~ . ~ . ~ . ~]") # s "superpiano" # legato "[2 2 3 0.5 8.5]" # room 1 # sz 0.3,
                      slow 4 $ n ((|+12) (scale "major" "[12 . 5 . 8 . [~ [8 5]] . ~ . ~ . ~ . ~]")) # s "superpiano" # legato "[2 2 3 0.5 8.5]" # room 1 # sz 0.3 # orbit 2,  
                      slow 4 $ n ((|-12) (scale "major" "[-4 5 . 8 12 . 0 8 . 12 15 . 2 8 . 14 15 . -1 8 . 14 12]")) # s "superpiano" # orbit 1 # legato "[2*16]" # gain 0.9]),
          ("c", stack[slow 4 $ n (scale "major" "[0 . ~ [0 3] . ~ . [~ 0] . 0 . ~ [0 3] . 5 . ~ 3]") # s "superpiano" # room 1 # sz 0.3 # legato "[3 0.5 3.5 1 3 0.5 0.5 3 1]",
                      slow 4 $ n ((|-12) (scale "major" "[-4 8 . 5 0 . -9 6 . 5 6 . -4 8 . 5 3 . -10 5 . 6 5]" )) # s "superpiano" # orbit 1 # legato "[2*32]" # gain 0.9]),
          ("d", stack[slow 4 $ n (scale "major" "[~ 5 . 6 8 . 12 6 . ~ . ~ 5 . 6 8 . 12 6 . 5 . ~ 5 . 6 8 . 12 6 . ~ . ~ 5 . 6 8 . 12 6 . 5]") # s "superpiano" # room 1 # sz 0.3 # legato "[1 1 1 1 3 1 1 1 1 1 1]",
                      slow 4 $ n ((|-12) (scale "major" "[-1 11 . 12 3 . ~ [6 12 5] . -1 11 . 12 3 . ~ 5 3 5 ]" )) # s "superpiano" # orbit 1 # legato "[1 1 1 1 0.16 0.16 0.16 1 1 1 1 1 1 1]" # gain 0.9])
      ]
in
d1 $ ur 56 "a a b b c c c c d d d d a a" april []

setcps 0.75
5 Likes

Haha! Well done!

OK here's my "secret song cover" (no singing!):

6 Likes

I have no idea what the original song is but I ran your code and it sounds really good!! :slight_smile:

1 Like

absolutely amazing; vocals, code; killed it

1 Like

Here is my attempt. I think this song is reasonably famous? Was a UK hit in the 80's at least. Transcribed by ear (not my strong point) so might be a bit off. Sure there must be a more elegant way of expressing some of this but never mind:

setcps 0.4

d1 $ qtrigger 1 $ n "< [4 0 . 0 . ~! 4!. 0!] [6 2 . 2 . 7 . 6]>" # s "superpwm"
  # voice 0.1 # rate 0.5 # lfo 0.5
  # octave 2

d2 $ qtrigger 1 $ n "<[c'maj!3 [~!3 d'maj]] [[~ d'maj! ~] d'maj*2!2 [d'maj! ~!]]>" # s "superchip"
  # legato 0.3
  # voice 0.5

d3 $ s "[cpu*4,[~ cpu:4]*4,[~ cpu:2]*2]" # gain 1.2

--Chorus melody (ish)
d4 $ qtrigger 1 $ n "< [2 0 . -1 -5 . <-5 -1> . <[-1 -5] [0 2]>] ~ >" # s "supersquare"
  # octave 7
  # gain 0.6
  # delay 0.3 # delayt 0.25 # delayfb 0.3 # lock 1
  # room 0.6 # size 0.6
3 Likes

This is superb! Not sure if we're supposed to guess 'out loud' but this is...

spoiler

Bad Romance

...I'm guessing?

2 Likes

It reminds me of something... but can't think of what song it actually is :persevere:

Nice sounds though, loving that chiptune flavour!

Not sure if there's a "better" way to write that code, but to me it looks quite clean already.

I think your guess is correct :grinning:

Love it. Impressed by the choppy chords.

Summary

Orange Juice, Rip it Up?

2 Likes

This was a lot of fun to have a go at. It's the chorus to another 80s tune. Tried getting the verses etc. as well but I'm struggling with transitions. Also think I'm using "~" too much.

{setcps 0.9
d1 $ qtrigger 1 $ s "[[odx odx ~ ~] [sd odx] [~ odx] sd]/2"
# room 0.1

d2 $ qtrigger 1 $ euclid 3 8 $ n "<12 7 5 9 2 5 7 8>" # s "rash"
# octave 5
# gain 1.2
# cut 5

d3 $ s "hh*8"
# gain 1.7
# djf 1
# cut 6

d4  $ qtrigger 1 $ n "<[24 19 16 [19,23]] [~ ~]  [[14, 17]  [~] [~] [12,16]] [~ ~] [[14, 17] [~] [~] [12,16]] [~ ~]  [[11,14] [~] [~] [16,20]] [~ ~]>" # s "supersquare"
# room 0.4
# speed 4
# djf 1
# sustain ("0.6 0.5 0.3 0.7")
# gain 1.2 } 
1 Like
spoiler

Everything Counts - Depeche Mode

I know what you mean about the rests, I struggled with this too - maybe there's some way you can delay a particular event instead?

Nice work though, certainly brought a smile to my face - and you were right about mine :slight_smile:

(Had to delete my original post as it wasn't showing up as a reply for some weird reason...)

Here's my attempt at the song. The bassline should be fairly recognisable:

do
setcps(114/120/2)
d2 $ n "<[[d3 ~ ] [~ ~ ~ d3]] [[g3@1.5 f3@1.5 d3] [g3@1.5 f3@1.5 c3]]>"
#s "supersquare" #legato 0.5
#vowel "o"
#shape 0.3
#lpf 1000
d4 $stack[
s "[~ clap]*2" #n "[4,0]",
((1/16)<~)$s "clap/4" #n "[2,5]" #speed "-1.5"
]
d1 $ n "<[[[[c6,f6]@1.5 [c6,f6]@0.5] ~]*2] [[[[b6,f6]@1.5 [b6,f6]@0.5] [~ [b6,f6]]] [~@0.25 [b6,f6]@0.75]] >"
#s "superpiano"
#hpf 500
#room 0.3 #sz 0.7
#shape 0.3
#coarse 4

2 Likes

Sounds really cool. No idea what the song is though. It feels like there was a lot of attention do detail in your composition.

1 Like

Michelle Pfeiffer, that white gold!

Perfect version

1 Like