0:00/0:00
// Sara Smile — Hall & Oates
// 82 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 11 "Cello" cello (copy of ch 6 "Melody 2" piano); ch 9 "Strings" synth strings 1 (copy of ch 7 "Melody 3" piano)
// note: Full arrangement: all 66 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(82/4)
// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.
// bass · fretless bass · "Bass"
const bass = note(`<
A B C D E F G H I J K L M N O P Q R S T U V I W X Y Z W G AA AB AC AD AE Q R AF T AG AH AI AJ AK AL AM AN G AO AB AP
AQ AR Q AS AT AU AV AW U AX AY AZ BA AU BB BC
>`.pickRestart({
A: "d2@3 d2 ~@2 c2@2 c2@3 g2@3 c3@2", B: "g1@2 ~ a1 ~@2 c2@9 bb1", C: "d2@3 d3@3 a2@2 c2@3 c2@3 c3 c2",
D: "g1@2 ~ a1 ~@2 c2@7 bb2 ~ bb1", E: "d2@3 d2 ~@2 d2@8 c2 d2", F: "c2@2 ~ c2 ~@2 c2@7 e1 g1 c2",
G: "bb1 ~@2 bb1 ~@2 bb1@7 f1 a1 bb1", H: "a1@3 d3@3 a2@2 a1@2 ~ a1 a2!2 a1 ~", I: "d2@3 d3 ~@2 d2@9 c2",
J: "c2@3 c2 ~@2 c2@8 g1 c2", K: "bb1@2 ~ bb1 ~@2 bb1@8 a1 f1", L: "a1@3 d3@3 a2 a1 a1@2 ~ a1 a2!2 a1 ~",
M: "bb1@3 bb1 ~@2 bb1@2 c2@2 ~ c2 c3!2 c2 ~", N: "db2@3 db2 ~@2 db2@2 d2@3 a2@3 d3@2",
O: "bb1@3 bb1@2 ~ bb1@2 c2@2 ~ c2 c3!2 c2 ~", P: "eb2@3 bb2@3 eb3@2 d2@3 d2@2 ~ d2@2",
Q: "g2 ~@2 g2 ~@2 g2@7 d2 f2 g2", R: "g2 ~@2 g2 ~@2 g2@6 f2 g2 f2 d2", S: "d2@3 a2@3 d3 d2 a1@3 a1 ~@2 a1@2",
T: "g2@3 d3@3 g3@2 c2@4 db2@4", U: "d2@3 a2@3 d3@2 a1@3 e2@3 a2 a1", V: "g2@3 d3@3 g3@2 c2@2 ~ c2 c3!2 c2 ~",
W: "c2 ~@2 c2 ~@2 c2@7 e1 g1 c2", X: "bb1@2 ~ bb1 ~@2 bb1@9 a1", Y: "a1@2 ~ a1 a2!2 a1 ~ a1@3 e2@3 a2@2",
Z: "d2@2 ~ d2 ~@2 d2@7 d3 ~ d2", AA: "a1@2 ~ a1 a2!2 a1 ~ a1@6 ~ a1", AB: "bb1@3 f2@3 bb2@2 c2@3 g2@3 c3@2",
AC: "db2@2 ~ db2 db3!2 db2 ~ d2@3 a2@3 d3@2", AD: "bb1@3 f2@3 bb2 bb1 c2@3 c2 ~@2 c2@2",
AE: "eb2@3 eb2 ~@2 eb2@2 d2@3 a2@3 d3@2", AF: "d2@2 ~ d2 d3!2 d2 ~ a1@3 a1 ~@2 a1@2",
AG: "d2@3 a2@3 d3@2 a1@3 a1 ~@2 a1@2", AH: "g2@3 d3@3 g3 g2 c2@6 ~ c2", AI: "d2@2 ~ d2 ~@2 d2@7 a1 c2 d2",
AJ: "c2@2 ~ c2 ~@2 c2@8 g1 e1", AK: "bb1@2 ~ bb1 ~@2 bb1@7 bb2 ~ bb1", AL: "a1@3 d3@3 a2@2 a1@3 a1 ~@2 a1@2",
AM: "d2@2 ~ d2 ~@2 d2@9 c2", AN: "c2@3 c3 ~@2 c2@9 g1", AO: "a1@6 ~ a1 a1@3 a1@2 ~ a1@2",
AP: "db2@3 db2 ~@2 db2@2 d2@6 ~ d2", AQ: "bb1@3 f2@3 bb2@2 c2@2 ~ c2 c3!2 c2 ~",
AR: "eb2@2 ~ eb2 eb3!2 eb2 ~ d2@3 d2@2 ~ d2@2", AS: "g2 ~@2 g2 ~@2 g2@6 f2 g2 ~@2", AT: "d2@3 d2 ~@2 d2@2 a1@6 ~ a1",
AU: "g2@6 ~ g2 c2@4 db2@4", AV: "d2@6 ~ d2 a1@3 e2@3 a2@2", AW: "g2@3 g2 ~@2 g2@2 c2@3 g2@3 c3@2",
AX: "g2@3 g2@2 ~ g2@2 c2@4 db2@4", AY: "d2@3 d2@2 ~ d2@2 a1@6 ~ a1", AZ: "g2@2 ~ g2 g3!2 g2 ~ c2@6 ~ c2",
BA: "d2@2 ~ d2 d3!2 d2 ~ a1@3 e2@3 a2 a1", BB: "d2@3 a2@3 d3 d2 a1@3 e2@3 a2@2", BC: "g2@3 d3@3 g3 g2 c2@3 g2@3 c3@2",
})).s("gm_fretless_bass").gain(0.31)
// chords · piano
const piano = note(`<
A B C D E F G H I J K L M N O P Q R S T S U E V W X Y Z K AA AB AC AD AE AF@2 AG AH AI AJ Y F W AK AL V K AM M AN AO
AP AQ AR AS AH AT AU S AH AV AW AX T AV AY
>`.pickRestart({
A: "[c4,d4,f4,a4]@2 ~ [c4,d4,f4,a4] ~@4 [c2,g3,c4,e4]@2 ~ [g3,c4,e4] ~@2 [g3,c4,e4] ~", // Dm7 C
B: "[bb1,bb2]@3 ~ [f3,bb3,d4,f4] ~ [bb1,bb2] ~@8 d4, ~@7 [f3,bb3,d4,f4]@9, ~@13 [bb1,bb2]@3, ~@7 c4", // Bb
C: "[c4,d4,f4,a4]@8 [g3,c4,e4]@5 c3 [g3,c4,e4] ~", D: "[f3,bb3,d4,f4]@6 [bb3,d4,f4]@7 [f3,bb3,d4,f4] ~ bb1",
E: "[a3,d4,f4,a4]@6 [d4,f4,a4]@7 [a3,d4,f4,a4] ~ d2", F: "[e3,a3,c4,e4]@6 [a3,c4,e4]@7 [e3,a3,c4,e4] ~ c2",
G: "[bb1,bb2]@3 ~ [a3,bb3,d4,f4] ~ [bb1,bb2] ~@8 d4, ~@7 [a3,bb3,d4,f4]@9, ~@13 [bb1,bb2]@3, ~@7 c4", // Bb Bbmaj7 Bb Bbmaj7 Bb
H: "[g3,b3,d4]@3 [g3,b3,d4] ~@4 [a3,db4,e4]@8", // G A
I: "[a3,d4,f4,a4]@2 d3 [a3,d4,f4,a4] ~ [d2,d3] [a3,d4,f4,a4]@6 d2 [a3,d4,f4,a4] ~@2", // Dm D Dm
J: "[c2,c3]@3 [c2,c3] [e3,a3,c4,e4] ~ [c2,c3] ~@8 c2, ~@7 [e3,a3,c4,e4]@9, ~@13 e2@3, ~@7 f2", // C Am C Am
K: "[a3,bb3,d4,f4]@6 [bb3,d4,f4]@7 [a3,bb3,d4,f4] ~ bb1", L: "[g3,b3,d4]@5 a2 [g3,b3,d4] ~ [a3,db4,e4]@8",
M: "[f3,bb3,d4]@5 bb2 [f3,bb3,d4] ~ [g3,c4,e4]@8", // Bb C
N: "[db4,e4,g4,a4]@3 [db4,e4,g4,a4] ~@4 [a3,d4,f4]@3 [a3,d4,f4] ~@4", // A7 Dm
O: "[bb3,d4,f4]@5 bb2 [bb3,d4,f4] ~ [c2,g3,c4,e4]@2 ~ [g3,c4,e4] ~@2 [g3,c4,e4] ~", // Bb C
P: "[bb3,db4,eb4,g4]@5 eb2 [bb3,db4,eb4,g4] ~ [a3,d4,f4]@8", // Eb7 Dm
Q: "[bb3,d4,f4,g4]@5 g2 [bb3,d4,f4,g4]@7 [bb3,d4,f4,g4]@2 g2", // Gm7
R: "[bb3,d4,f4,g4]@5 g2 [c4,e4,g4]@6 g2 [c4,e4,g4]@2 g2", S: "[a3,d4,f4]@5 d3 [a3,d4,f4] ~ [a3,c4,e4]@8",
T: "[bb3,d4,f4,g4]@3 g2 [bb3,d4,f4,g4]!2 g2 ~ [bb3,d4,f4,g4]@4 [b3,eb4,f4,ab4]@4", // Gm7 Fm7b5
U: "[bb3,d4,f4,g4]@3 g2 [bb3,d4,f4,g4]!2 g2 ~ [bb3,d4,f4,g4]@3 [bb3,d4,f4,g4] ~@4", // Gm7
V: "[e3,a3,c4,e4]@2 c3 [e3,a3,c4,e4] ~ [c2,c3] [e3,a3,c4,e4]@6 c2 [e3,a3,c4,e4] ~@2", // Am C Am
W: "[a3,bb3,d4,f4]@2 bb2 [a3,bb3,d4,f4] ~ [bb1,bb2] [a3,bb3,d4,f4]@6 bb1 [a3,bb3,d4,f4] ~@2", // Bbmaj7 Bb Bbmaj7
X: "[g3,b3,d4]@3 [g3,b3,d4] ~@4 [a2,a3,db4,e4]@2 ~ [a3,db4,e4] ~@2 [a3,db4,e4] ~", // G A
Y: "[d2,d3]@3 [d2,d3] [a3,d4,f4,a4] ~ [d2,d3] ~@8 d2, ~@7 [a3,d4,f4,a4]@9, ~@13 a2@3, ~@7 bb2", // D Dm D Dm
Z: "[c2,c3]@3 ~ [e3,a3,c4,e4] ~ [c2,c3] ~@8 c4, ~@7 [e3,a3,c4,e4]@9, ~@13 [c2,c3]@3, ~@7 b3", // C Am C Am C
AA: "[g3,b3,d4]@5 a2 [g3,b3,d4] ~ [a3,db4,e4]@3 a2 [a3,db4,e4]!2 a2 ~", AB: "[bb3,d4,f4] [g3,c4,e4]",
AC: "[db4,e4,g4,a4]@3 db2 [db4,e4,g4,a4]!2 [db2,db3] ~ [a3,d4,f4]@5 d3 [a3,d4,f4] ~", // A7 Db Dm
AD: "[bb3,d4,f4]@3 [bb3,d4,f4] ~@4 [c2,g3,c4,e4]@2 ~ [g3,c4,e4] ~@2 [g3,c4,e4] ~", // Bb C
AE: "[bb3,db4,eb4,g4]@3 [bb3,db4,eb4,g4] ~@4 [a3,d4,f4]@8", AF: "[bb3,d4,f4,g4] ~@5 [bb3,d4,f4,g4]@9 ~",
AG: "[a3,d4,f4]@3 [a3,d4,f4] ~@4 [a3,c4,e4]@5 a2 [a3,c4,e4] ~", // Dm Am
AH: "[bb3,d4,f4,g4]@3 [bb3,d4,f4,g4] ~@4 [bb3,d4,f4,g4]@4 [b3,eb4,f4,ab4]@4", // Gm7 Fm7b5
AI: "[a3,d4,f4]@3 d2 [a3,d4,f4]!2 [d2,d3] ~ [a3,c4,e4]@3 a2 [a3,c4,e4]!2 a2 ~", // Dm D Am
AJ: "[bb3,d4,f4,g4]@5 g2 [bb3,d4,f4,g4] ~ [bb3,d4,f4,g4]@3 c2 [bb3,d4,f4,g4]!2 [c2,c3] ~", // Gm7 C
AK: "[g3,b3,d4]@3 a1 [g3,b3,d4]!2 [a1,a2] ~ [a3,db4,e4]@5 a2 [a3,db4,e4] ~", // G A
AL: "[d2,d3]@3 ~ [a3,d4,f4,a4] ~ [d2,d3] ~@8 f4, ~@7 [a3,d4,f4,a4]@9, ~@13 [d2,d3]@3, ~@7 e4", // D Dm D Dm D
AM: "[g3,b3,d4]@3 [g3,b3,d4] ~@4 [a3,db4,e4]@5 a2 [a3,db4,e4] ~", // G A
AN: "[db4,e4,g4,a4]@5 db3 [db4,e4,g4,a4] ~ [a3,d4,f4]@8", AO: "[bb3,d4,f4]@3 [bb3,d4,f4] ~@4 [g3,c4,e4]@8",
AP: "[db4,eb4,g4,bb4] [a3,d4,f4]", AQ: "[bb3,d4,f4,g4]@5 ~ [bb3,d4,f4,g4]@9 ~",
AR: "[bb3,d4,f4,g4] ~@2 [bb3,d4,f4,g4] ~@2 [bb3,d4,f4,g4]@4 ~ [c4,e4,g4]@2 g2 ~ [c4,e4,g4]", // Gm7 C
AS: "[a3,d4,f4]@3 [a3,d4,f4] ~@4 [a3,c4,e4]@8", AT: "[a3,d4,f4]@5 d3 [a3,d4,f4] ~ [a3,c4,e4]@3 a2 [a3,c4,e4]!2 a2 ~",
AU: "[f4,g4,bb4,d5]@8 [bb3,d4,f4,g4]@3 c2 [bb3,d4,f4,g4]!2 [c2,c3] ~", // Gm7 C
AV: "[a3,d4,f4]@5 d3 [a3,d4,f4] ~ [a3,c4,e4]@2 ~ [a3,c4,e4] ~@4", // Dm Am
AW: "[f4,g4,bb4,d5]@3 g2 [f4,g4,bb4,d5]!2 g2 ~ [bb3,d4,f4,g4]@8", AX: "[a3,d4,f4] [a3,c4,e4]",
AY: "[bb3,d4,f4,g4]@3 [bb3,d4,f4,g4] ~@4 [bb3,d4,f4,g4]@8", // Gm7
})).s("gm_piano").gain(0.17).pan(0.4)
// chords · piano · soft notes
const piano_soft = note(`<
A B C D E F B ~ G ~ H I J ~ K L ~@2 M ~ M ~ E N O P ~ Q H I ~ R A ~@3 S ~@2 T ~ F O S U N H S J V ~@3 W ~@2 M ~ M ~ M
~@3 M ~
>`.pickRestart({
A: "~@8 c3@2 [c2,c3] ~@2 [c2,c3] ~@2", B: "~@3 [bb1,bb2] ~@12", C: "~@13 c2 ~ [c2,c3]",
D: "~@3 f3@3 [bb1,bb2] ~, ~@5 bb1@7 ~@4", E: "~@3 a3@3 [d2,d3] ~, ~@5 d2@7 ~@4",
F: "~@3 e3@3 [c2,c3] ~, ~@5 c2@7 ~@4", G: "~@2 d2 ~@9 d3 ~@3", H: "~@3 a3@3 [bb1,bb2] ~, ~@5 bb1@7 ~@4",
I: "~@5 a1 ~ [a1,a2] ~@8", J: "~@5 bb1 ~ [bb1,bb2] ~@8", K: "~@5 bb1 ~ [bb1,bb2] c3@2 [c2,c3] ~@2 [c2,c3] ~@2",
L: "~@7 eb2 ~@8", M: "~@5 d2 ~ [d2,d3] ~@8", N: "~@2 c2 ~@9 c3 ~@3", O: "~@2 bb1 ~@9 bb2 ~@3",
P: "~@10 a2 ~@2 a2 ~@2", Q: "~@3 [c2,c3] ~@12", R: "~@13 d2 ~ [d2,d3]", S: "~@15 a2", T: "~@7 g2 ~@8",
U: "~@3 [d2,d3] ~@12", V: "~@5 db2 ~ [db2,db3] ~@8", W: "~@9 g2 ~@6",
})).s("gm_piano").gain(0.07).pan(0.4)
// chords · acoustic guitar nylon · "Guitar"
const acoustic_guitar_nylon = note(`<
A B C D E F G H I F J K L M L N O P Q R S T I F G U E V J W X Y Z AA AB AC AD AE AF AG E V AH H AI V AH AJ AK M AL AM
AB AC AD AE AN AO AD AP Q AQ AD AR AD AS
>`.pickRestart({
A: "~@3 d4@3 f4@2 ~@3 c4@5, ~ f2@7 ~@3 g4@3 ~@2, ~@2 f3@6 ~ c3@7, ~@3 a3@5 ~@2 g3@6",
B: "~@2 bb3 d4@2 ~ bb3 d4@2 ~ bb3 d4@2 ~ bb3 ~, ~ d3@3 ~ d3@3 ~ d3@4 bb2@2 ~",
C: "~@3 d4@3 f4@2 [c3,c4,e4]@5 e3 c4 ~, ~ f2@7 ~@8, ~ f3@3 ~@4, ~@3 a3@5 ~@8", // C
D: "~@2 f3 [bb3,d4]@2 ~@2 [bb3,d4]@4 ~ d4 bb3 f3 d3, ~ bb2@2 ~@2 bb2@2 ~@4 bb2@2 ~@3, ~@6 f3@5 ~@5", // Bb
E: "~@3 a4@2 ~@2 a4@2 ~ d4 a4@2 d3 a3 [d4,a4], ~ d3@3 ~ d3@2 ~@2 d3@4 ~@3, ~ d4 ~ d4 ~@4", // D5
F: "~@2 e3 [a3,e4]@2 ~ e3 [a3,e4]@2 ~@2 [a3,e4] ~ e4 a3 e3, ~ c3@2 ~@2 c3@2 ~@2 c3@2 ~@5, ~@5 e3 ~@2", // A5
G: "~@3 d4@2 ~@2 d4@2 ~ a3 d4@2 bb2 f3 [a3,d4], ~ bb2@3 ~ bb2@2 ~@2 bb2@4 ~@3, ~ a3 ~ a3 ~@4", // D5
H: "~@5 g3@3 ~@3 a3@5, [a2,d4,g4]@8 ~ a2@7, ~@5 e3@3, ~@11 e4@3 ~@2", // Dsus4
I: "~@2 d4 f4@2 ~ d4 f4@2 ~ d4 f4@2 ~ d4 ~, ~ f3@3 ~ f3@3 ~ f3@4 d3@2 ~",
J: "~@2 f3 [a3,d4]@2 ~ f3 [a3,d4]@2 ~@2 [a3,d4] f4 d4 a3 f3, ~ bb2@2 ~@2 bb2@2 ~@2 bb2@2 ~@5, ~@5 f3 ~@2", // D5
K: "~@3 [d4,b4]@5 ~@5 db3@3, ~ a2@6 ~ [a2,a3,db4]@8, ~ b3@2 ~@5", // G A
L: "~@3 bb3@5 ~@3 c4@5, ~ bb2@7 ~ c3@7, ~ f3@3 ~ g3@3, ~@3 f4@3 ~@5 g4@3 ~@2",
M: "[db3,g3,db4]@8 [d3,d4,f4]@5 f3 d4 ~", N: "[eb2,g3,db4]@5 db3 g3 ~ [d3,d4,f4]@5 f3 d4 ~",
O: "~@3 f4@2 ~@2 f4@2 ~@2 f4@2 ~ d4@2, ~ g2@3 ~ g2@3 ~ g2@3 ~ g2@2 ~, ~@2 bb3@3 ~ bb3@3 ~ bb3@3 ~@3",
P: "~@2 bb3 f4@2 ~@2 f4@2 ~ bb3 f4@2 ~ d4 bb3, g2@5 g2@3 ~ g2@3 ~ g2@2 ~, ~@6 bb3@3 ~@7",
Q: "~@3 d4@5 ~@5 c3@3, ~ d3@7 [a2,a3,c4]@8, ~ a3@3 ~@4, ~@3 a4@3 ~@10", // Am
R: "~@3 [bb3,f4]@5 [c3,bb3,f4]@4 [db3,b3,f4]@4, ~ g2@6 ~@9, ~ g3@2 ~@5", // Bb5 Fsus4 Db7
S: "[d3,d4,f4]@5 f3 d4 ~@6 c3@3, ~ [a2,a3,c4]", T: "~@3 [bb3,f4]@4 ~ [c3,bb3,f4]@5 f3 bb3 ~, ~ g2@6 ~@9, ~ g3@2 ~@5",
U: "[a2,d4,g4]@5 g3 d4 ~@4 [a3,e4]@5, ~@9 a2@6 ~, ~@5 e3@2 ~", // Dsus4 A5
V: "~@2 a3 c4@2 ~ a3 c4@2 ~ a3 c4@2 ~ a3 ~, ~ c3@3 ~ c3@3 ~ c3@4 ~@3",
W: "~@3 [d4,b4]@4 ~@4 a3@5, ~ a2@6 ~@2 a2@7, ~ b3@2 ~@2 e3@3, ~@11 e4@3 ~@2", // G
X: "~@3 [bb3,f4]@5 ~@3 [c4,g4]@5, ~ bb2@6 ~@2 c3@6 ~, ~ f3@2 ~@2 g3@2 ~", // Bb5 C5
Y: "~@3 db4@3 e4@2 ~@3 d4@5, ~ db3@7 ~ d3@7, ~@2 e3@6 ~@3 a4@3 ~@2, ~@3 g3@5 ~@2 a3@6",
Z: "~@3 bb3@5 ~@5 e3@3, ~ bb2@7 [c3,c4,e4]@8, ~ f3@3 ~@4, ~@3 f4@3 ~@10", // C
AA: "~@3 [g3,db4]@5 [d3,d4,f4]@5 f3 d4 ~, ~ eb2@6 ~@9, ~ eb3@2 ~@5", // Gdim Dm
AB: "~@3 f4@2 ~ bb3 f4@2 ~ bb3 f4@2 ~ bb3 f4, ~ g2@3 ~ g2@3 ~ g2@3 ~@4, ~@2 bb3@3 ~@8 f3@2 ~",
AC: "~@3 f3 bb3@2 f3 bb3@2 ~ f3 bb3@2 g2 f3 bb3, g2@6 ~@3 g2@2 ~@5",
AD: "[d3,d4,f4]@5 f3 d4 ~@4 a3@5, ~@9 a2@7, ~@5 e3@3, ~@11 e4@3 ~@2", // Dm
AE: "~@3 f4@3 g4@2 [c3,bb3,f4]@4 [db3,b3,f4]@4, ~ g2@7 ~@8, ~ g3@3 ~@4, ~@3 bb3@5 ~@8", // Fsus4 Db7
AF: "~@5 f3@3 [a2,a3,c4]@5 c3 a3 ~, [d3,d4,f4] ~", AG: "~@5 f3@3 ~@5 f3@3, [g2,bb3,f4] [c3,bb3,f4]",
AH: "~@2 a3 d4@2 ~ a3 d4@2 ~ a3 d4@2 ~ a3 ~, ~ d3@3 ~ d3@3 ~ d3@4 bb2@2 ~",
AI: "~@2 a3 [d4,a4]@2 ~ a3 [d4,a4]@2 ~@2 [d4,a4] ~ a4 d4 a3, ~ d3@2 ~@2 d3@2 ~@2 d3@2 ~@5, ~@5 a3 ~@2", // D5
AJ: "~@3 d4@5 [a2,a3,db4]@5 db3 a3 ~, ~ a2@7 ~@8, ~ b3@3 ~@4, ~@3 b4@3 ~@10", // A
AK: "~@3 bb3@5 [c3,c4,e4]@5 e3 c4 ~, ~ bb2@7 ~@8, ~ f3@3 ~@4, ~@3 f4@3 ~@10", // C
AL: "~@5 d3@3 [c3,c4,e4]@5 e3 c4 ~, [bb2,bb3,d4] ~", // C Bb
AM: "~@3 db4@3 eb4@2 [d3,d4,f4]@5 f3 d4 ~, ~ eb2@7 ~@8, ~ eb3@3 ~@4, ~@3 g3@5 ~@8", // Dm
AN: "~@3 d4@5 [a2,a3,c4]@5 c3 a3 ~, ~ d3@7 ~@8, ~ a3@3 ~@4, ~@3 a4@3 ~@10", // Am
AO: "~@3 [bb3,f4]@5 [c3,bb3,f4]@5 f3 bb3 ~, ~ g2@6 ~@9, ~ g3@2 ~@5", // Bb5 Fsus4
AP: "~@3 [bb3,f4]@4 ~ [c3,bb3,f4]@4 [db3,b3,f4]@4, ~ g2@6 ~@9, ~ g3@2 ~@5", // Bb5 Fsus4 Db7
AQ: "[g2,bb3,f4]@5 f3 bb3 ~@4 f4@3 g4@2, ~@9 c3@7, ~@5 g3@3, ~@11 bb3@5", // Gm7
AR: "~@5 f3@3 [c3,bb3,f4]@4 [db3,b3,f4]@4, [g2,bb3,f4] ~", // Fsus4 Db7 Gm7
AS: "~@3 f4@3 g4@2 ~@3 f4@3 g4@2, ~ g2@7 ~ c3@7, ~ g3@3 ~ g3@3, ~@3 bb3@5 ~@3 bb3@5",
})).s("gm_acoustic_guitar_nylon").gain(0.17).pan(0.6)
// bass · electric bass finger · "Bass"
const bass_2 = note(`<
A B C B D E F G D E F H I J I K L M N O P B D Q F R D Q F S T J I K L M N O P B D Q F R D Q F S T J I K L M N O P B N
O P B N O P B
>`.pickRestart({
A: "[d2,d3]@2 d3 f2@5", B: "g2 a2 bb2 c3@3 c2@2", C: "[d2,d3]@2 d3 a2@5", D: "d2@3 d3@2 d2 d3 d2",
E: "c2@3 e3@2 c2 c3 c2", F: "bb1@3 bb2@2 bb1 bb2 bb1", G: "a1@3 a2@2 a1 c2 db2", H: "a1@6 a2@4 e2@2 a2 g2 e2@2",
I: "bb1@2 bb1 c2@3 c2@2", J: "db2@2 db2 d2@3 d2@2", K: "eb2 d2", L: "g1@2 g2 ~@5", M: "~@6 c2 db2",
N: "d2@2 d2 a2@3 a2@2", O: "g2 a2 bb2 c3@2 db3@3", P: "d3@2 d2 a2@3 a2@2", Q: "c2@3 c3@2 c2 c3 c2",
R: "a1@6 a2@4 e2@2 e2 g2 a2@2", S: "bb1@3 a2@2 e2 a1@2", T: "bb1@2 bb1 c2 c2@2 c2@2",
})).s("gm_electric_bass_finger").gain(0.31)
// other · electric guitar muted · "Guitar"
const electric_guitar_muted = note(`<
~@4 A B C D E F G H I J K L M N O P O Q A R S T U V G W X Y Z AA AB@2 AC AD AE AF U B S AG AH R G AI I AJ AK AL AM AN
AO AD AP AQ O AD AR AS AT P AR AU
>`.pickRestart({
A: "a3@6 a3@6 ~ a3 ~ d2, ~@6 d3 ~", B: "[e3,a3]@6 [e3,a3]@6 ~ [e3,a3] ~ c2, ~@6 c3 ~",
C: "[bb1,bb2]@3 bb2 [a3,bb3] ~ [bb1,bb2] ~@6 [bb1,bb2]@3, ~@7 [a3,bb3]@9", D: "[g3,b3]@3 [g3,b3] ~@4 a3@8",
E: "a3@2 [d2,d3] a3 ~ [d2,d3] a3@6 [d2,d3] a3 ~@2", // D
F: "[c2,c3]@3 [c2,c3] [e3,a3] ~ [c2,c3] ~@8 c2, ~@7 [e3,a3]@9, ~@13 e2@3, ~@7 f2", // C A5 C A5
G: "[a3,bb3]@6 [a3,bb3]@6 ~ [a3,bb3] ~ bb1, ~@6 bb2 ~", H: "[g3,b3]@5 [a1,a2] [g3,b3] a1 a3@8",
I: "[f3,bb3]@5 [bb1,bb2] [f3,bb3] bb1 g3@8", J: "~@8 a3@3 a3 ~@4",
K: "bb3@5 [bb1,bb2] bb3 bb1 [c2,g3]@2 c2 g3 ~@2 g3 ~", L: "bb3@5 eb2 bb3 eb2 a3@8", M: "bb3@5 g2 bb3@7 bb3@2 g2",
N: "bb3@5 g2 ~@6 g2 ~@2 g2", O: "a3@5 [d2,d3] a3 d2 a3@8", P: "bb3@3 g2 bb3!2 g2 ~ bb3@4 b3@4",
Q: "bb3@3 g2 bb3!2 g2 ~ bb3@3 bb3 ~@4", R: "[e3,a3]@2 [c2,c3] [e3,a3] ~ [c2,c3] [e3,a3]@6 [c2,c3] [e3,a3] ~@2",
S: "[a3,bb3]@2 [bb1,bb2] [a3,bb3] ~ [bb1,bb2] [a3,bb3]@6 [bb1,bb2] [a3,bb3] ~@2", // Bbmaj7 Bb Bbmaj7 Bb Bbmaj7 Bb Bbmaj7
T: "[g3,b3]@3 [g3,b3] ~@4 [a2,a3]@2 ~ a3 ~@2 a3 ~", // G A
U: "[d2,d3]@3 [d2,d3] a3 ~ [d2,d3] ~@8 d2, ~@7 a3@9, ~@13 a2@3, ~@7 bb2", // D
V: "[c2,c3]@3 c3 [e3,a3] ~ [c2,c3] ~@7 b3@2, ~@7 [e3,a3]@9, ~@13 [c2,c3]@3", // C A5 C A5 C
W: "[g3,b3]@5 [a1,a2] [g3,b3] a1 a3@3 a2 a3!2 a2 ~", X: "bb3 g3", Y: "~@3 db2 ~@2 [db2,db3] ~ a3@5 [d2,d3] a3 d2",
Z: "bb3@3 bb3 ~@4 [c2,g3]@2 c2 g3 ~@2 g3 ~", AA: "bb3@3 bb3 ~@4 a3@8", AB: "bb3 ~@5 bb3@9 ~",
AC: "a3@3 a3 ~@4 a3@5 a2 a3 a2", AD: "bb3@3 bb3 ~@4 bb3@4 b3@4", AE: "a3@3 d2 a3!2 [d2,d3] ~ a3@3 a2 a3!2 a2 ~",
AF: "bb3@5 g2 bb3 g2 bb3@3 c2 bb3!2 [c2,c3] ~", AG: "[g3,b3]@3 a1 [g3,b3]!2 [a1,a2] ~ a3@5 a2 a3 a2",
AH: "[d2,d3]@3 d3 a3 ~ [d2,d3] ~@6 [d2,d3]@3, ~@7 a3@9", AI: "[g3,b3]@3 [g3,b3] ~@4 a3@5 a2 a3 a2",
AJ: "~@5 [db2,db3] ~ db2 a3@8", AK: "bb3@3 bb3 ~@4 g3@8", AL: "~ a3", AM: "bb3@5 ~ bb3@9 ~",
AN: "bb3 ~@2 bb3 ~@2 bb3@4 ~@3 g2 ~@2", AO: "a3@3 a3 ~@4 a3@8", AP: "a3@5 [d2,d3] a3 d2 a3@3 a2 a3!2 a2 ~",
AQ: "~@8 bb3@3 c2 bb3!2 [c2,c3] ~", AR: "a3@5 [d2,d3] a3 d2 a3@2 ~ a3 ~@4", AS: "~@3 g2 ~@2 g2 ~ bb3@8", AT: "a3!2",
AU: "bb3@3 bb3 ~@4 bb3@8",
})).s("gm_electric_guitar_muted").gain(0.11).pan(0.6)
// other · electric guitar muted · "Guitar" · soft notes
const electric_guitar_muted_2 = note(`<
~@4 A B C ~@3 D E F ~ G ~@3 H ~ H ~ A ~@2 I ~ J D E ~ K L ~@8 B ~@2 M ~ D ~ F N ~@3 O ~@2 H ~ H ~ H ~@3 H ~
>`.pickRestart({
A: "~@5 d2@7 d2@2 ~@2", B: "~@5 c2@7 c2@2 ~@2", C: "~@3 bb1 ~@12", D: "~@5 bb1@7 bb1@2 ~@2", E: "~@7 a2 ~@8",
F: "~@7 bb2 ~@8", G: "~@7 bb2 c3@2 c3 ~@2 [c2,c3] ~@2", H: "~@7 d3 ~@8", I: "~@10 a2 ~@2 a2 ~@2", J: "~@3 c2 ~@12",
K: "~@15 d3", L: "~@8 c3@2 c3 ~@2 [c2,c3] ~@2", M: "~@3 d2 ~@12", N: "~@7 db3 ~@8", O: "~@9 g2 ~@6",
})).s("gm_electric_guitar_muted").gain(0.05).pan(0.6)
// chords · electric guitar clean · "Guitar"
// … 85 more lines
More by Hall & Oates
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.