0:00/0:00
// Only Yesterday — Carpenters
// 123 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 104 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(123/4)
// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/2 spreads a riff over 2 bars.
// A part's distinct bars are riffs (A, B, C...) played in order, A@4 for four bars: edit a riff to change every repeat.
// bass · fretless bass · "FRETLESS"
const bass = note(`<
A@2 B C D E D F G H D I J K L M N O P Q R S T U V W D X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS
AT AQ AU AV AW AX AY AZ BA BB BC BD BE D E D BF G BG BH BI BJ BK BL BM BN BK BO BP BQ BR BS BT AK BU AE BV BW BX AQ BY
BZ CA AQ AU CB CC CD CE CF BA CG CH CI CJ
>`.pickRestart({
A: "[d2@10 f2@2 d3 ~ d3@12 f2@2 a2@2 f2@2]/2", B: "d#2@6 b2 d#2", C: "f2@5 ~ f2@2 g2@4 g1@4", D: "c2@13 ~ g1@2",
E: "c2@15 ~", F: "c2@6 a2 c2", G: "d2@11 ~ a1@4", H: "g1@6 d2 g1", I: "c2@5 g2 c2@2", J: "a1@6 a2 g2", K: "f#2@3 d2",
L: "g2@11 ~ g2@2 f2@2", M: "e2@7 e1", N: "f1", O: "d2", P: "g1@7 ~ g1@7 ~", Q: "g1 ~ g1@2 ~@2 g1 ~ g1@7 ~",
R: "c2@5 ~ c2 ~ c2@5 ~ g1@2", S: "c2@5 ~ c2@2 g2@3 ~ c2@4", T: "d2@5 ~ d2@8 a1@2", U: "d2 ~ d2@2 ~@2 d2 ~ d2@8",
V: "d2@4 ~@2 d2 ~ d2@5 ~ a1@2", W: "d2@3 d1", X: "c2@6 c3 ~ c3@2 a2@2 g2@2 e2@2", Y: "a1@5 ~ a1@2 a2@4 g2@4",
Z: "f#2@3 f#2@3 d2@2", AA: "g2@7 ~ g2@4 f2@4", AB: "e2@5 ~ e2@8 c2@2", AC: "f2@5 ~ f2 ~ f2@4 e2@4",
AD: "d2@5 ~ d2@6 ~@2 d2@2", AE: "g1@5 ~ g1 ~ g1@5 ~ g1 ~", AF: "g1 ~ g1@3 ~ g1 ~ g1@3 ~ g1@4",
AG: "a#1@5 ~ a#1@2 a#1@6 f1@2", AH: "a#1@5 ~ a#1@2 f2@4 a#1@2 c2@2", AI: "d2@5 ~ d2@2 a1@7 ~",
AJ: "d2@5 ~ d2 ~ d2@6 c2@2", AK: "a#1@5 ~ a#1@2 f1@5 ~ f1@2", AL: "a#1@5 ~ a#1@2 f1@4 a#1@4",
AM: "g1@5 ~ g1 ~ g1@4 d2@4", AN: "g2@4 g1 ~ g1@2 a1 ~ a1@2 b1 ~ b1@2", AO: "c2@3 ~ c2@4 c2@2 a1@2 g1@4",
AP: "c2@5 ~ c2@2 g1@4 c2@4", AQ: "d2@5 ~ d2@2 a1@4 d2@4", AR: "g1@3 g2@3 e2 d2", AS: "c2@5 ~ c2@2 g1@5 ~ g1@2",
AT: "c2@5 ~ c2@2 g2@2 g1@2 c2@4", AU: "g1@4 g2 ~ g2@2 a2@2 g2@2 e2@2 d2@2", AV: "e2@5 ~ e2@2 b1@4 ~@2 b1@2",
AW: "e1@5 ~ e1@2 f#1@4 g#1@4", AX: "a1@3 b1@3 a1@2", AY: "a1@5 ~ a1@2 e2@4 a1@4", AZ: "d2@5 ~ d2@4 a2@2 f2@2 d2@2",
BA: "g1@5 ~ g1@2 d2@4 g1@4", BB: "d2@5 ~ d2@4 d3 ~ d3@2 c3@2", BC: "g2@15 ~", BD: "c2@5 ~ c2@8 g1@2",
BE: "c2@5 g2@2 e2", BF: "c2 ~ c2 ~@3 c2 ~ c2@8", BG: "g1@2 g2 g1", BH: "c2@14 g2 ~", BI: "c3 d3 e3@3 d3 c3 g2",
BJ: "a1@10 a1@2 g1@3 ~", BK: "f#1@6 d2 f#1", BL: "g1@6 g2 f2", BM: "e2@11 ~ e2@4", BN: "f2@5 c2 f1@2",
BO: "g1@5 ~ g1 ~ g1 ~ g1@3 ~ g1 ~", BP: "g1 ~ g1@3 ~ g1@3 ~ g1 ~ g1@2 a1@2", BQ: "a#1@5 ~ a#1 ~ a#1@5 ~ f1@2",
BR: "a#1@2 ~ a#1@2 f2 a#1 c2", BS: "d2@5 ~ d2@2 a1@5 ~ a1@2", BT: "d2@6 d3 ~ d3@2 c3@2 a2@2 f2@2",
BU: "a#1@6 f2@3 ~ f1@2 a#1@4", BV: "g1 ~ g1@3 ~ g1@3 ~ g1@2 a1@2 b1@2", BW: "c2@5 ~ c2 ~ c2@2 g1@2 a1@2 g1@2",
BX: "c2@5 ~ c2@2 g2@4 c2@2 g1@2", BY: "g1@5 ~ g1@2 d2@2 g1@2 g2@2 g1@2", BZ: "c2@5 ~ c2@2 g2@4 g1@4",
CA: "c2@5 ~ c2@2 g2@2 g1@2 c2@2 c#2@2", CB: "e2@5 ~ e2@2 b1@4 e2@3 ~", CC: "e1@5 ~ e1@2 b1@2 e1@2 e2@2 e1@2",
CD: "a1@5 ~ a1@2 e2@5 ~ e2@2", CE: "a1@5 ~ a1@2 a2@2 e2@4 a1@2", CF: "d2@6 a2 ~ a2@2 g2@2 d2@2 b1@2",
CG: "d2@4 ~@2 d2@4 a1@2 d2@3 ~", CH: "g1@6 g2@6 g1@3 ~", CI: "c2@5 ~ g2 ~ g2@4 e2@2 d2@2", CJ: "c2@3 ~",
})).s("gm_fretless_bass").gain(0.23)
// chords · piano · "A.PIANO 1"
const piano = note(`<
A B C D E@2 F G H I J K L M N O P Q R S E@2 T U V W X Y L Z N O P AA AB AC AD AE AF AG AD AH AI@2 AJ AK AF AL AJ AK AF
AM AN AO AP AQ AR AS AT AU AV AW E@2 F G H I J K L M N O P AX AY I AD AE AF AG AD AH AI@2 AJ AK AF AL AJ AK AF AM AN
AO AP AQ AR AS AT AU AV AW
>`.pickRestart({
A: "e4@6 d4@2 d4@6 c4 ~", B: "c4@6 b3 ~ b3@7 ~", C: "c4@6 b3 ~ b3@6 a3 ~", D: "a3@6 g3@2 g3@7 ~",
E: "[c3,e3,g3]@15 ~", F: "c3@3 g3 f3@3 e3", G: "d3@3 e3 f3@4", H: "[d3,f3,a3]@15 ~", I: "g3@15 ~", J: "[c3,g3]",
K: "c3@3 a3 g3@4", L: "[a2,e3]", M: "~@8 c4@7 ~, d3 ~, ~ f#3@3", N: "g3@6 d3@2 g3@7 ~", O: "[e3,g3]",
P: "f3@6 c3@2 f3@7 ~", Q: "[d3,f3]", R: "~ g3@2 a3", S: "g3@2 f3@4 e3@2 d3@7 ~", T: "f#3@3 e3 d3@3 e3",
U: "f#3@6 e3@2 d3@7 ~", V: "[f3,g#3]@15 ~", W: "b3 d4", X: "c4", Y: "a3@3 g3 e3@2 c3@2", Z: "d3 ~ c4@2, ~ f#3@3",
AA: "[d3,a3]@15 ~", AB: "[g3,b3]@3 a3", AC: "[g3,d4]@15 ~", AD: "[a#3,f4]@15 ~", AE: "[a#3,f4]", AF: "[d4,f4]@15 ~",
AG: "d4@5 ~ d4@2 a3@7 ~", AH: "[a#3,f4]@3 g#3", AI: "[[g3,d4,f4]@12 ~@4 f4@15 ~, ~@12 g3@19 ~]/2", AJ: "[c4,g4]",
AK: "[c4,g4]@15 ~", AL: "[d4,f4]@2 b3 g3", AM: "[g3,d4]", AN: "[e3,g#3,b3]@15 ~", AO: "e3 d4", AP: "[a3,c4]",
AQ: "~@4 g3@4 a3@7 ~", AR: "d4@15 ~", AS: "[g3,f4]", AT: "~@2 d4@2 c4 a3@2 g3", AU: "f3@2 f3 e3@2 d3 e3@2",
AV: "c3@2 g3@2 a3 g3@2 a3", AW: "g3 a3@2 g3 c3@2 ~@2", AX: "[d3,c4]", AY: "[g3,b3]@3 d3",
})).s("gm_piano").gain(0.36)
// chords · piano · "A.PIANO 1"
const piano_2 = note(`<
A B C D E F G@2 H I J@2 K L M N O P Q@2 E R S@2 T U V@2 K W X N Y Z AA AB AC AD AE AF AD@2 AG AH AI AJ@2 AK AI AJ@2 AL
AM AN AO AP AQ AR AS AT@3 E R S@2 H AU J@2 K L AV N O Z AA AW AD@2 AX AF AD@2 AY AH AI AJ@2 AK AI AJ@2 AL AM AN AZ AP
BA AR BB BC BD@2
>`.pickRestart({
A: "~@6 d5 ~@5 [f4,a4]@2 c5 ~, e5@3 ~ d5@3 ~, ~@2 [f4,a4]@3 ~@3", // F
B: "~@6 b4 ~@5 [d4,f4]@3 ~, c5@6 ~@2 b4@7 ~, ~@4 [d4,f4]@7 ~@5", // Dm
C: "~@6 b4 ~@5 [d#4,f#4]@2 a4 ~, c5@3 ~ b4@3 ~, ~@4 [d#4,f#4]@7 ~@5", // D#m
D: "~@6 g4 ~@5 [d4,f4]@3 ~, a4@6 ~@2 g4@7 ~, ~@2 [d4,f4]@3 ~@3", E: "c4@3 ~ c4 ~ c4@6 e4@4",
F: "g4@3 ~ g4 ~ g4@4 f4@2 e4@4", G: "[~@4 [a3,c4]@6 ~@2 [a3,c4] ~@7 [a3,c4]@7 ~ [a3,c4]@2 ~@2, d4@15 ~]/2",
H: "d4@3 ~ d4 ~ d4@6 f4@4", I: "~@8 b4@3 a4@3 g4@2, b4@7 ~@9, ~ [d4,f4]@3",
J: "[~@6 g4@2 ~@4 c4@4 ~@4 c4@7 ~ c4@4, f4@3 ~ e4@12, ~@4 c4@7 ~@21]/2", K: "~@2 c4@2 e4 g4@3",
L: "a4@4 c5 b4 a4@2, c5@3 ~@5", M: "~@4 [d4,g4]@9 ~ d4@2, b4@7 ~", N: "b4 ~ b4 ~ b4@2 c5@6 g4@4, e4@15 ~",
O: "~@2 [c4,f4]@5 c4, a4@7 ~", P: "a4 ~ a4 ~ a4@2 g4@6 f4@4, c4@7 ~", Q: "[e4@3 f4 d4@11 ~, c4@2 b3@5 ~]/2",
R: "g4@5 ~ g4@2 f4@4 e4@4", S: "[~@4 [a3,c4]@7 ~ [a3,c4]@3 ~@5 [a3,c4]@6 ~@2 [a3,c4]@4, d4@31 ~]/2",
T: "d4@3 ~ d4 ~ d4@6 f4@4, b3@7 ~", U: "~@6 d5@2 c5@4 b4@3 ~, b4@3 ~@5, ~@4 [f4,g#4]@11 ~",
V: "[~@3 c5 ~@2 e4@2 ~@2 [c4,e4]@6, b4@3 ~ g4@12, ~@4 [e4,g4]@5 ~@23]/2", W: "a4@4 c5 b4 a4@2, c5@7 ~@9",
X: "~@2 [d4,g4]@5 d4, b4@7 ~", Y: "~@4 [c4,f4]@6 ~@2 [c4,f4]@3 ~, a4@7 ~",
Z: "a4 ~ a4 ~ a4 ~ b4@5 ~ c5@3 ~, f#4@13 ~@3", AA: "d5@4 g4 ~ g4@9 ~, f4@15 ~",
AB: "[g4,b4] ~ [g4,b4]@6 [f4,a4,c5]@4 [g4,b4,d5]@4", AC: "[d5,f5]@3 ~ [d5,f5]@2 [c5,e5]@4 [a#4,d5]@6",
AD: "[d5,f5]@3 ~ [d5,f5]@2 [c5,e5]@4 [a#4,d5]@5 ~", AE: "d5@3 ~ d5@4 e5 ~ f5@6, a4",
AF: "~@4 [f4,a4]@6 ~@2 [f4,a4]@3 ~, d5@15 ~", AG: "[c5,d5] ~ [c5,d5] ~ [c5,d5] ~ [c5,d5]@9 ~",
AH: "[g4,b4] ~ [g4,b4] ~ [g4,b4]@2 [a4,c5]@4 [b4,d5]@6", AI: "[c5,e5]@3 ~ [c5,e5]@3 ~ [c5,e5] ~ [c5,e5]@5 ~",
AJ: "[[d5,f5]@2 [c5,e5]@2 d5 c5@2 a4@3 [c5,e5]@2 [b4,d5] [a4,c5]@3]/2", AK: "[g4,b4]@4 g4@11 ~",
AL: "[g4,b4]@3 ~ [g4,b4]@2 [a4,c5]@4 [b4,d5]@6", AM: "~@2 e4@2 g#4 b4@3",
AN: "[c5,e5]@4 [b4,d5]@4 [a4,c5]@2 [g#4,b4]@5 ~", AO: "[a4,c5]@3 ~ [a4,c5]@2 [b4,d5]@6 [a4,c5]@4",
AP: "[b4,d5]@2 [a4,c#5] a4, e5@3 ~", AQ: "[e5,g5]@3 [d5,f5]@3 [c5,e5]@2", AR: "[b4,d5]@3 [a4,c5]@3 [g4,b4]@2",
AS: "[f4,a4,d5]@7 ~", AT: "[[a4,d5]@3 ~ [a4,d5] ~ [g4,c5]@4 [f4,b4]@2 g4@4 [e4,g4]@27 ~@5, ~@3 c5@8 ~]/3",
AU: "~@8 b4@2 ~ a4@3 g4@2, b4@7 ~@9, ~@4 [d4,f4]@11 ~", AV: "~@2 [d4,g4]@4 ~ d4, b4@7 ~",
AW: "[g4,b4] ~ [g4,b4]@4 [a4,c5]@4 [b4,d5]@6", AX: "d5@3 ~ d5@4 e5@2 f5@6, a4",
AY: "[c5,d5] ~ [c5,d5] ~ [c5,d5] ~ [c5,d5]@10", AZ: "[a4,c5]@3 ~ a4@2 [b4,d5]@6 [a4,c5]@4, ~@4 c5 ~@11",
BA: "[e5,g5]@6 [d5,f5]@5 ~ [c5,e5]@3 ~", BB: "[f4,a4,d5]@15 ~",
BC: "[a4,d5]@3 ~ [a4,d5] ~ [g4,c5]@4 [f4,b4]@2 g4@3 ~", BD: "[[e4,g4]@27 ~@5]/2",
})).s("gm_piano").gain(0.46).pan(0.6)
// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
~@20 A@2 B@2 C@2 A@2 D E F@2 G E H@2 I@2 J@2 I@2 K L M@2 N O M@2 K P Q@2 D R N O N S@3 A@2 T@2 N O A@2 D E F@2 K E O P
I@2 J@2 I@2 K L M@2 N O M@2 K P U@2 D R N O N S@3
>`.pickRestart({
A: "[g3,c4,e4]/2", B: "[a3,c4,f#4]/2", C: "[g#3,b3,d4]/2", D: "[a3,c4,e4]@15 ~", E: "[a3,c4,f#4]",
F: "[[b3,d4] [b3,e4], g4]/2", G: "[a3,c4,f4]", H: "[f4@15 ~ g4@16, [b3,d4]]/2", I: "[[a#3,d4,f4]@31 ~]/2",
J: "[a3,d4,f4]/2", K: "[a3,c4,f4]@15 ~", L: "f4@7 ~ g4@7 ~, [b3,d4]@15 ~",
M: "[e4@15 ~ f4@4 e4@11 ~, [g3,c4]@31 ~]/2", N: "[a3,d4,f4]@15 ~", O: "[b3,d4,f4]", P: "[b3,d4,g4]",
Q: "[e4@16 d4@15 ~, [g#3,b3]]/2", R: "d4@8 c#4@7 ~, [a3,e4]@15 ~",
S: "[[a3,d4,f4]@3 [c4,e4]@2 [b3,d4] [c4,e4]@16 ~@2, ~@3 g3@19 ~@2]/3", T: "[[a3,c4,f4]@31 ~]/2",
U: "[e4@3 d4, [g#3,b3]]/2", // G#m
})).s("gm_string_ensemble_2").gain(0.19).pan(0.3)
// other · oboe
const oboe = note("<A B@2 C@3 ~@6 D E F G H I J@2 ~@3 K L@2 M@2 ~@11 N O@2 ~@39 P Q@2 ~@20>".pickRestart({
A: "~@3 a4", B: "[e5@3 f5 d5@6 ~@4 f#4@2]/2", C: "[a4@6 b4@2 g4@25 ~@15]/3", D: "~@2 c4@2 e4 g4@3",
E: "c5@7 ~ c5@2 b4@2 a4@4", F: "b4@7 d4", G: "b4 ~ b4 ~ b4@2 c5@6 g4@4", H: "a4@13 ~ c4@2",
I: "a4 ~ a4 ~ a4@2 g4@6 f4@4", J: "[e4@3 f4 d4@10 ~@2]/2", K: "~@2 d5 a4", L: "[g#4@7 b4]/2", M: "c5/2",
N: "~ d4 e4 f4 e4 d4 a3 f3", O: "[d3@21 ~@11]/2", P: "~ d5 e5 f5 e5 d5 a4 f4", Q: "[d4@3 ~]/2",
})).s("gm_oboe").gain(0.16).pan(0.2)
// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
~@4 A@2 B@2 C D E A F G D H I J K L A M N@2 O P E Q R S T H U G D V W@2 X@2 W Y Z AA AB AC AD AE AB AC AF AE AG AH AI
AJ AK AL AM AN@2 ~ A@2 B@2 C D A Q AO G D AP I G AQ AR AS AT X AF W AU AV AW AX AY AZ AE AX BA AZ AE BB BC BD BE@2 BF
BG BH@2 ~
>`.pickRestart({
A: "~@3 e4@5, c3@15 ~, ~ g3@7, ~ c4@3", B: "~@3 f4@5, c3@15 ~, ~ a3@7, ~ c4@3",
C: "~@3 f4@5, d3@15 ~, ~@2 a3@13 ~, ~@4 d4@11 ~", D: "~@6 b3@9 ~, g2@15 ~, ~@2 d3@13 ~, ~@4 g3@11 ~",
E: "~@3 e4@5, c3@7 ~, ~ g3@7, ~ c4@3", F: "~@6 c4@9 ~, a2@15 ~, ~ e3@7, ~@4 a3@11 ~",
G: "~@3 c4@4 ~, d3@15 ~, ~ f#3@6 ~, ~@2 a3@5 ~", H: "~@3 e4@5, e3@7 ~, ~ g3@7, ~ b3@3",
I: "~@3 a3@5, f2@7 ~, ~@2 c3@13 ~, ~ f3@3", J: "~@6 c4@9 ~, d3@7 ~, ~@2 f3@13 ~, ~@4 a3@11 ~",
K: "~ [c4,e4] [g2,b3,d4]@2, c3@5 ~@11, ~ g3@7", L: "~@6 d4@9 ~, g2@13 ~@3, ~@2 g3@13 ~, ~@4 b3@11 ~",
M: "~@3 e4@4 ~, c3, ~@2 g3@13 ~, ~@4 c4@11 ~", N: "~@3 f#4@5, d3@15 ~, ~ a3@7, ~ c4@3",
O: "~@3 d4@5, d3@7 ~, ~ f3@7, ~ g#3@3", P: "~@6 d4@9 ~, d3@15 ~, ~ f3@7, ~ g#3@3",
Q: "~@2 c3 b2, c3@3 e4@5, ~ g3@7, ~ c4@3", R: "~@3 c4@5, a2@15 ~, ~@2 e3@13 ~, ~@4 g3@11 ~",
S: "~@6 c4@9 ~, d3@7 ~, ~ f#3@6 ~, ~@4 a3@11 ~", T: "~@3 b3@5, g2@3 ~, ~@2 d3@13 ~, ~ g3@3",
U: "~@6 a3@9 ~, f2@15 ~, ~@2 c3@13 ~, ~@4 f3@11 ~", V: "~@3 b3@4 ~, ~ d3@6 ~, ~@2 g3@5 ~",
W: "a#2@4 [f3,a#3,d4] ~ a#2 ~@3 [f3,a#3,d4]@6, ~@4 a#2@3 ~", X: "d3@4 [f3,a3,d4] ~ d3 ~@3 [f3,a3,d4]@6, ~@4 d3@3 ~",
Y: "a#2@4 [f3,a#3,d4] ~ a#2 ~@3 [f3,a#3,d4]@6, ~@8 a#2@7 ~", // A#
Z: "g2@4 [f3,a3,d4] ~ g2 ~@3 f3@3 ~ f3@2, ~@8 g2@7 ~, ~@5 [a3,d4]@3", // Dm D5
AA: "g2@4 [g3,b3]@2 g3@2 ~ b3 ~@4 g2 ~, ~@2 d4@3 g3@3, ~@6 g2 ~ g2@4 [b3,d4]@4", // G Bm
AB: "c3@4 [g3,c4,e4] ~ c3 ~ c3@2 ~@2 c3@2 g3 ~, ~@5 [g3,c4,e4]@2 ~", // C
AC: "[a3,c4,f4]@3 ~ [g3,c4,e4]@2 c3 ~ c3@2 g3@2 c3@2 g3@2, c3@2 ~@3 [c4,e4]@3", // F C
AD: "d3@4 [f3,a3,d4] ~ d3 ~ d3@2 f3@2 d3@3 ~, ~@5 [a3,d4]@3", // Dm D5
AE: "g2@4 [g3,b3,d4] ~ g2 ~ g2@2 g3@2 g2@2 g3@2, ~@5 [b3,d4]@3", // G Bm
AF: "d3@4 [f3,a3,d4] ~ d3 ~ d3@2 f3@2 d3@2 f3@2, ~@5 [a3,d4]@3", // Dm D5
AG: "e3@4 [g#3,b3,e4] ~ e3 ~ e3@2 g#3@2 e3@2 g#3@2, ~@5 [b3,e4]@3", // E E5
AH: "e3@4 [g#3,b3,e4] ~ e3 ~ e3@2 g#3@2 ~@2 g#3@2, ~@5 [b3,e4]@3, ~@3 e3", // E E5
AI: "a2@4 [a3,c4,e4] ~ a2 ~ a2@2 a3@2 a2@2 a3 ~, ~@5 [c4,e4]@3", // Am C
AJ: "~ d4 ~ d4 c#4 ~ e4 a2, a3@9 ~ a3@6, a2@4 e4@7 ~@5, ~@6 a2 ~ a2@5 ~@3",
AK: "d3@4 [a3,d4,f4] ~ d3 ~ d3@2 a3@2 ~@2 a3@2, d4 ~@9 [d4,f4]@6, ~@3 d3", // Dm
AL: "g2@4 [g3,b3,d4] ~ g2 ~ g2@2 g3@2 g2@3 ~, ~@5 [b3,d4]@3", // G Bm
AM: "~@12 d4@2 d3 ~, d3@6 f4@9 ~, ~@2 a3@6 d3@5 ~@3, ~@4 d4@6 a3@5 ~",
AN: "[[a3,d4,f4]@3 ~ [a3,d4,f4] ~ [g3,c4,e4]@2 ~@2 [g3,b3,d4]@2 [g3,c4,e4]@12 ~@8]/2", // Dm C G C
AO: "~@3 c4@4 ~, a2, ~@2 e3@13 ~, ~@2 a3@5 ~", AP: "~@3 e4@4 ~, e3@3 ~, ~@2 g3@13 ~, ~@4 b3@11 ~",
AQ: "~@3 b3@5, g2@7 ~, ~@2 d3@13 ~, ~ g3@3", AR: "~@10 g3@2 g3@2 d3 ~, g2@15 ~, ~@2 d3@4 b3@5 ~@5, ~@4 g3@4 d3@5 ~@3",
AS: "[f3,a#3,d4]@2 ~@2 [f3,a#3,d4] ~ a#2 ~ a#2@2 f3@2 a#2@2 f3@2, a#2@2 ~@3 [a#3,d4]@3", // A#
AT: "a#2@4 [f3,a#3,d4] ~ a#2 ~ a#2@2 f3@2 a#2@2 f3@2, ~@5 [a#3,d4]@3", // A#
AU: "a#2@4 [f3,a#3,d4] ~ a#2 ~ a#2@4 [f3,a#3,d4]@2 a#2 ~", // A#
AV: "~@6 d3 ~@7 [d3,f4]@2, d3@2 d4@3 a3@3, ~@2 a3@6 d3@5 ~@3, ~@3 f4@3 c4@2", // Dm
AW: "~@12 b3@2 g2 ~, g2@6 d4@9 ~, ~@2 g3@6 g2@5 ~@3, ~@4 b3@6 g3@5 ~",
AX: "c3@4 [g3,c4,e4] ~ c3 ~ c3@2 g3@2 c3@2 g3 ~, ~@10 [c4,e4]@5 ~", // C
AY: "[c3,a3,c4,f4]@3 ~ [g3,c4,e4]@2 c3 ~ c3@2 g3@2 ~@2 g3@2, ~@5 [c4,e4]@3, ~@3 c3", // F C
AZ: "d3@4 [a3,d4,f4] ~ d3 ~ d3@2 a3@2 d3@2 a3@2, ~@5 [d4,f4]@3", // Dm
BA: "[c3,a3,c4,f4]@3 ~ [g3,c4,e4] ~ c3 ~ c3@2 g3@2 c3@2 g3@2, ~@5 [c4,e4]@3", // F C
BB: "e3@4 [g#3,b3,e4] ~ e3 ~@3 g#3@3 ~ g#3@2, ~@8 e3@5 ~@3, ~@5 [b3,e4]@3", // E E5
BC: "e3@4 [g#3,b3,e4] ~ e3 ~ e3@2 g#3@2 e3@2 g#3 ~, ~@10 [b3,d4]@5 ~", // E Bm
BD: "a2@4 [a3,c4,e4] ~ a2 ~@3 [c4,e4]@5 ~, ~@4 a2@3 ~, ~@10 a3@3 ~@3", // Am C
BE: "[~@2 d4@2 ~@2 [a2,d4]@2 ~@6 a2@2 [d4,f4] ~ a3 ~ [a3,d4,f4] ~ d3 ~ d3@2 a3@2 ~@2 a3 ~, a3@8 [a2,a3]@4 e4@4 ~@10 [d4,f4]@5 ~, a2@4 e4@5 ~ c#4@6 d3@4 ~@8 d3@4, ~@7 a3@2 ~@7]/2", // D5 Dm A Dm
BF: "~@6 g2 ~@5 [b3,d4]@2 g2 ~, g2@4 b3@6 g3@5 ~, ~@2 g3@6 g2@5 ~@3, ~@6 d4@5 ~@5", // Bm
BG: "~@6 d3 ~@5 d4@2 d3 ~, d3@2 d4@3 a3@2 ~, ~@2 a3@6 d3@5 ~@3, ~@3 f4@4 ~",
BH: "[[a3,d4,f4]@3 ~ [a3,d4,f4] ~ [g3,c4,e4] ~@3 [g3,b3,d4]@2 [g3,c4,e4]@12 ~@8]/2", // Dm C G C
})).s("gm_electric_guitar_clean").gain(0.14).pan(0.9)
// drums · kick
const kick = s("bd").struct("<A@35 B A@7 B A@7 C A C A C A@2 C A@24 D A@13 C A@5 E>".pickRestart({
A: "x ~@2 x!2 ~@3", B: "x", C: "x ~@2 x!2 ~@2 x", D: "x ~@3 x!2 ~@2", E: "x!2",
})).gain(0.28)
// drums · rim
const rim = s("rim").struct("<[~@3 x]!34 ~@70>").gain(0.28)
// drums · snare
const snare = s("sd").struct("<~@35 A B@7 C B@16 D@17 E B@7 F B@17 G>".pickRestart({
A: "~ x ~@6", B: "~ x ~ x", C: "~@3 x!2 ~@3", D: "~@3 x", E: "~@5 x ~@2", F: "~@2 x ~@2 x ~@2", G: "~ x ~@2",
})).gain(0.25)
// drums · hihat
const hihat = s("hh").struct(`<
A B C A@2 B C A D E D A D F B F A G C@2 A H I A F G J G D A F G F G J K ~@26 F G D C H F G H@2 A F G F G H L ~@26
>`.pickRestart({
A: "x ~ x!5 ~", B: "x ~@2 x!4 ~", C: "x ~ x!3 ~ x ~", D: "x ~ x!3 ~ x!2", E: "x ~@2 x!2 ~ x ~", F: "x ~ x!6",
G: "x!7 ~", H: "x!8", I: "x!2 ~ x!5", J: "x!5 ~ x!2", K: "x!3 ~ x ~@3", L: "~ x!4 ~@3",
})).gain(0.22)
// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
A B C D A B C D E F E D E D B D A ~ C E A ~ G D@2 ~ H ~ E D@2 ~ D ~@29 D ~ E@2 ~ D ~@3 D@2 ~ D ~@29
>`.pickRestart({
A: "~ x ~@5 x", B: "~ x!2 ~@5", C: "~ x ~@3 x ~ x", D: "~ x ~@6", E: "~ x ~@3 x ~@2", F: "~ x!2 ~@2 x ~@2",
G: "~ x ~@2", H: "~@5 x ~@2",
})).gain(0.12)
// … 65 more lines
More by Carpenters
Not in the database
That song isn't here.
Nothing in the database matches this link. It may have been renamed, or the address was mistyped. The closest songs to :
Real transcriptions · Editable patterns · Instrumental
Type a song.
Get Strudel code.
Chords, structure, melody, bass and drums compiled from open transcriptions into Strudel live-coding patterns. Play it here, scrub through the bars, then open it in strudel.cc and start hacking.
Smells Like Teen SpiritNirvana
The JokerSteve Miller Band · 1973
Love Me DoThe Beatles · 1964
I Don't MindJames Brown · 1961
- Real transcriptionsMcGill chord charts, Lakh MIDI and quality-filtered PDMX scores. The library includes alternate transcriptions of some songs.
- One bar, one cycleEvery layer follows the same bar timeline, keeping the code, playback and song structure aligned.
- Instrumental by designDetected vocal parts are removed. Guitar riffs, harmonica and other instrumental leads stay.