This is I Can't Go For That by aryl Hall & John Oates in javascript. Enjoy.
The melody is left for you. Lyrics at the bottom. 👇
You can listen to the song and play with the code here on Strudel.cc
//////////////////////////////////////////////////////////////////////////////////////////
//
// Daryl Hall & John Oates — I can't go for that
// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// @by Bitcoin Graffiti
// @date Sep 21, 2025
//
//////////////////////////////////////////////////////////////////////////////////////////
setcpm(110.7/4)
const sd = s("sd").beat("1,1.5, 3", 4).gain(.4).color("orange").room(.5).bank("RolandTR909")
const bd = s("bd").beat("2, 4", 4).gain(.3).color("gold").room(.5).bank("RolandTR909")
const hh = s("sh").gain(.3).color("yellow").room(.5).fast(8)
const drums = stack(hh, sd, bd)
//bass
const bass = note("[f ~ f] [~ c] [d# c][d# e]").s("gm_electric_bass_finger:3").lpf(150).legato(.8).gain(1)
const bass_v = note("[f4 ~ f4] [~ c4] [d#4 c4][d#4 e4]").s("gm_electric_bass_finger:3").lpf(150).legato(.8).gain(1)
const bass_p = note("[f ~ f] [~ c] [d# c][d# e]").s("gm_electric_bass_finger:3").lpf(150).legato(.8).gain(1)
//misc
const arp = note("g6 f6 d#6 c6 <g5 f5> ~!12").s("gm_pad_new_age:5").room(.5).gain(.3).release(1.5).color('purple')
const arp2 = note("d6 [bb5 g5 bb5 d#5]!3").s("gm_pad_new_age:5").room(.5).gain(.2).release(1.5).color('purple')
const guitar = note("[f [f!2] ~ f]<g f4>").s("gm_electric_guitar_muted:10").gain(1).color('brown').room(1)
const amb = note("g4").s("gm_fx_soundtrack:5").slow(4).color('blue').gain(.6).decay(10)
const string = note("g5").s("gm_strings") // to do
//synth
const chorus = note("[f2, bb, eb4, g4] [[f2, bb, eb4, g4] ~ [eb2, bb, d4, f4]!2]").s("gm_epiano2:1").slow(2).color("teal").release(.5).legato("[1][[.2]!2]")
const verse = note("[c, bb, eb4, g4] [[c, bb, eb4, g4] <[[f2, c4, f4, a4]!2] [[ab2, ab, c4, eb4][bb, bb, d4, f4]]> ]").s("gm_epiano2:1").slow(2).color("teal").release(.5).legato("[1][[.2]!2]")
const pre = note("[c2, c4, e4, g4][c2, b, e4, g4][bb2, bb, e4, g4][f2, a, e4, g4]").s("gm_epiano2:1").slow(4).color("teal")
arrange(
[2, drums],
[4, stack(drums, bass)],
[4, stack(drums, bass, amb)],
[8, stack(drums, bass, arp , guitar)],
[7, stack(drums, bass, guitar, chorus, arp)],
[1, stack(drums, bass, guitar, chorus, arp2)],
[8, stack(drums, bass_v, verse)],
//prechorus
[8, stack(drums, arp, pre)],
//chorus
[8, stack(drums, bass, chorus, guitar)],
//verse 2
[8, stack(drums, bass_v, verse)],
//prechorus
[8, stack(drums, arp, pre)],
//chorus
[8, stack(drums, bass, chorus, guitar)],
//bridge saxophone
//prechors
//chorus
//sax outro
).pianoroll({labels: 1})
Lyrics
[Verse 1]
Easy, ready, willin', overtime
Where does it stop?
Where do you dare me
To draw the line?
You've got the body
Now you want my soul
Don't even think about it
Say "no go"
[Pre-Chorus]
Yeah, I, I'll do anything
That you want me to
Yeah, I'll do almost anything
That you want me to, ooh
Yeah
[Chorus]
But I can't go for that, no (No)
No can do
I can't go for that, no (No)
No can do
I can't go for that, no (No)
No can do
I can't go for that
Can't go for that
Can't go for that
Can't go for that
[Verse 2]
I can go for being twice as nice
I can go for just repeatin'
The same old lines
Use the body
Now you want my soul
Ooh, forget about it
Now say "no go"
[Pre-Chorus]
Yeah, I, I'll do anything
That you want me to
Yeah, I'll do almost anything
That you want me to, ooh
Yeah
[Chorus]
But I can't go for that, no (No)
No can do
I can't go for that, no (No)
No can do
I can't go for that, no (No)
No can do
I can't go for that
Can't go for that
Can't go for that
Can't go for that, yeah