0:00/0:00
// That's What Friends Are For — Dionne Warwick
// 60 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 10, 4/4 at bar 11, 2/4 at bar 24, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// 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(60/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: edit a riff to change every repeat.
// chords · epiano2
const epiano2 = note(`<
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB K AC AD AE AF AG AH AI S T AJ V AK AL AM AN@2 AO AP AQ V AF
AR AS AT AU AV U AW AX AY AZ BA BB BC@2 BD ~
>`.pickRestart({
A: "~@2 [f4,g4,bb4] [f4,bb4]", B: "[g4,bb4] [f4,bb4] [eb4,ab4,bb4]!2",
C: "[eb4,ab4,bb4] [ab4,bb4,eb5] ~ d4, ~ [g3,bb3,f4]", D: "eb4!2 [bb3,eb4,ab4]@2, [g3,bb3] ~",
E: "[bb3,eb4,ab4]@2 [c4,eb4,g4]@2 f4@3 f4, ~ [g4,bb4]", F: "[d4,bb4] [eb4,g4,bb4] [c4,eb4,ab4] [c4,eb4,f4,ab4]",
G: "[c4,eb4,f4,ab4]!2 [c4,f4]!2", H: "[c4,d4,f4]@4 [g3,b3,d4]@4 [bb3,eb4]@6 bb3 eb4, ~ g3",
I: "[g3,c4,eb4]@6 ab4 bb4 [ab4,c5]@5 bb5 [bb4,f5,g5] eb5, ~ bb3", // Cm Ab Gm7
J: "[bb4,g5]@4 [f4,g4,bb4]@3 [bb3,g4] [g3,bb3,d4,f4]@4 [g3,bb3,eb4]@4", K: "[c4,eb4,ab4]!4",
L: "[c4,d4,f4]!3 [b3,d4,f4]", M: "[g3,bb3,eb4]@6 [g4,eb5] [f4,d5] [eb4,c5]@4 [c4,eb4,g4]@4",
N: "c5@6 ~@2 [eb4,ab4,c5,bb5]@4 eb4 ~ ab4 c5, [eb4,ab4]@7 eb5@3 ~@3 eb4@3, ~@3 c5 ~@2 c4@2", // Ab Ab5
O: "[f4,g4,bb4]!2 [d4,f4,bb4] [d4,f4,bb4,eb5]", P: "[eb4,g4,ab4,bb4,c5] [g4,ab4,bb4,eb5]!2 [d4,f4,bb4]",
Q: "bb3@3 bb3@5 ~@7 eb4, [d4,f4] [g3,bb3,eb4], ~@13 bb4@3, ~@7 g4", // Dm Eb
R: "[bb3,eb4,g4]@3 [bb3,eb4,g4]@2 [bb3,f4,ab4]@2 [c4,eb4,ab4]@5 ~ [g4,d5,bb5] [f4,c5,ab5]@2", // Eb Bb7 Ab Gm Fm
S: "[eb4,bb4,g5]@4 [f4,g4,bb4]@3 d5 [g4,bb4,eb5]@4 [eb4,g4,bb4]@4", // Eb Gm7 Eb
T: "[db4,f4,bb4] [bb3,db4,f4] [c4,f4,g4] [c4,e4,g4]", // Bbm Csus4 C
U: "[b3,eb4,f4,ab4]@3 [b3,eb4,f4,ab4] [bb3,b3,f4,bb4,eb5]@2 [ab3,b3,f4,ab4,eb5]@2", V: "[bb3,eb4,ab4]!4",
W: "[bb3,eb4,ab4]!2 [bb3,eb4,g4]!2", X: "[g3,bb3,d4,f4] [g3,bb3,c4,eb4] [c4,eb4,ab4] [bb3,eb4,ab4]",
Y: "[c4,eb4,ab4] [bb3,c4,eb4,f4] [f4,c5]!2", Z: "[d4,f4,c5]@4 [g3,b4]@4 [g3,bb3,eb4]@6 bb3 eb4",
AA: "[g3,c4,eb4]@6 ab4 bb4 [eb4,ab4,c5]@4 [c4,f4] c5 eb5 bb5", // Cm Ab F5
AB: "[g4,bb4,g5] [g4,eb5] [bb4,f5] [g4,eb5], f4 [d4,f4]", AC: "[c4,d4,f4]!2 [c4,d4,f4,c5] [b3,d4,f4,b4], c5 ~",
AD: "[g3,bb3,eb4,bb4]@6 [g4,eb5] [f4,d5] [eb4,c5]@2 [f4,d5] [g4,eb5]@5", // Eb Cm Dm Cm Dm Cm
AE: "[ab4,c5]@4 [bb4,bb5]@2 ~@2 [eb5,eb6]@2 [f5,f6]@3 eb5 f5 ab5, eb4@3 eb4@2 ~@3, ~@3 [c5,c6] ~@4, ~@7 [bb3,f4]@3 [bb3,eb4,f4]@6", // Ab Bb Eb F C Bb5 Bbsus4
AF: "[f4,g4,bb4,g5]@4 [f4,g4,bb4]@3 [g4,bb4,eb5] [g4,bb4,f5]@4 [g4,bb4,eb5]@4", // Gm7 Eb Gm7 Eb
AG: "[eb4,ab4,bb4,c5]!3 [d4,f4,ab4,bb4]", AH: "[d4,f4,bb4]@5 d5 [g4,eb5] f5 [g4,bb4,eb5]@4 [g4,bb4,eb5]@2 eb4 g4",
AI: "[bb3,eb4,g4]@3 [bb3,eb4,g4]@2 [bb3,f4,ab4]@2 [c4,eb4,ab4]@5 ~ [bb4,bb5] [ab4,ab5]@2", // Eb Bb7 Ab Bb Ab
AJ: "[b3,eb4,f4,ab4]@6 [g3,g4] [ab3,ab4] [bb3,b3,eb4,bb4]@4 [ab3,b3,eb4,ab4]@4", // Fm7b5 G Ab Bmaj7 Abm
AK: "[bb3,eb4,ab4]@4 [bb3,eb4,ab4]@4 [f4,g4,bb4,g5]@4 [f4,g4,bb4]@3 [g4,bb4,eb5]", // Ebsus4 Gm7 Eb
AL: "[g4,bb4,f5] [g4,bb4,eb5] [eb4,f4,ab4,c5]!2", // Gm7 Eb Fm7
AM: "[eb4,f4,ab4,c5]@4 [ab3,d4,f4,bb4]@4 [d4,f4,g4,bb4]@5 [f4,d5] [g4,eb5] [bb4,f5]", // Fm7 Bb7 Gm7 Dm Cm Bb5
AN: "[[g4,eb5]@4 [bb3,eb4,g4]@4 [bb3,eb4,g4]@3 [bb3,eb4,g4]@2 [bb3,f4,ab4]@2 [c4,eb4,ab4]@5 ~ [g4,d5,bb5] [f4,c5,ab5]@2 [eb4,bb4,g5]@4 [f4,g4,bb4]@3 d5]/2", // Cm Eb Bb7 Ab Gm Fm Eb Gm7
AO: "[g4,bb4,eb5] [eb4,g4,bb4] [db4,f4,bb4] [bb3,db4,f4]", // Eb Bbm
AP: "[c4,f4,g4]@2 [c4,e4,g4]@2 [b3,eb4,f4,ab4]@3 [b3,eb4,f4,ab4]", // Csus4 C Fm7b5
AQ: "[bb3,b3,f4,bb4,eb5] [ab3,b3,f4,ab4,eb5] [bb3,eb4,ab4]!2", AR: "[eb4,ab4,bb4,c5]!3 [d4,f4,bb4]",
AS: "[d4,f4,bb4] [d4,f4,g4,bb4] [c4,eb4,bb4] [g4,bb4,eb5]", AT: "[eb4,ab4,c5]!4",
AU: "[f4,g4,bb4]!2 [d4,f4,bb4] [f4,bb4,eb5]", AV: "[db4,f4,bb4]!2 [c4,f4,bb4] [c4,e4,g4]", AW: "[ab3,bb3,eb4]!4",
AX: "[ab3,bb3,eb4]@2 [ab3,bb3,eb4]@2 [f4,g4] ~@2 eb4, ~ bb4, ~@4 eb4@3 ~, ~@5 [bb3,f4]@3, ~@11 g4@5", // Absus2 Fsus2 Bb5
AY: "~@7 g4 ~@4 bb4@4, bb3 [bb3,eb4,ab4], [d4,f4]@3 bb4@5 ~@8, ~ g4@2 f4 ~@4, ~@3 f4 d4@4 ~@8", // Ebsus4 Dm
AZ: "[bb3,eb4,ab4]@4 [bb3,eb4,ab4]@4 [bb3,d4,f4,bb4]@4 [bb3,d4,f4,bb4]@3 d5", // Ebsus4 Bb
BA: "[bb3,eb4,g4]@2 ~ c5 [bb3,eb4]@2 [bb3,eb4]@2, eb5 ab4, ~ [bb3,eb4,g4] ~@2", // Eb Eb5 Eb
BB: "[bb3,eb4,ab4]@4 [bb3,eb4,ab4,c5]@4 f4 ~@4 g4@3, ~ [bb3,eb4,bb4], ~@8 g4@5 ~@3, ~@11 f4@5", // Ebsus4 Ab Eb5
BC: "[f4@4 [f4,d5]@4 [bb3,eb4,ab4]@7 ~ [bb3,eb4]@4 ~@2 bb4@2 bb4@4 ~@3 c5, [bb3,d4,bb4]@8 ~@7 [ab4,eb5]@5 [bb3,eb4,ab4]@4 [g3,bb3,f4]@8, ~@12 g4@3 [d4,g4], ~@7 bb4]/2", // Dm Ebsus4 Eb5 Bb Ab5 Ebsus4 Gm7 G5
BD: "~ eb5 [f3,c4,eb4,ab4]@2, [c4,eb4,g4,bb4] ~", // Fm7 Cm7
})).s("gm_epiano2").gain(0.35)
// bass · electric bass finger
const bass = note(`<
A B@2 C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE R O AF AG AH AI AJ U AK AL AM AD AN AO AP AQ AR
AH O AS AT R AU AV AW AX AY@2 AZ BA BB@2 BC ~
>`.pickRestart({
A: "~ eb4", B: "[d4@8 bb2@12 bb3 ~ g3 ab3 bb3@8]/2", C: "c4 f3", D: "bb3 bb2 eb2@2", E: "g1 c2 f1@2", F: "f1 d2",
G: "g1@8 c2@7 bb1", H: "ab1@2 bb1 bb2", I: "eb2@4 eb3@3 gb1 g1@4 c2@4", J: "f1@7 f1 f1@8", K: "d2@8 g1@7 d2",
L: "c2@8 ab1@7 ab1", M: "bb1@7 bb1 bb1@3 f2 bb2@2 bb1@2", N: "eb2 d2", O: "c2@7 c2 c2@4 ab1@4", P: "g1@7 g1 c2@7 c2",
Q: "ab1@7 ab1 bb1@3 f2 bb2@2 f2@2", R: "eb2@8 d2@7 d2", S: "db2@7 db2 c2@4 c3@4", T: "b1@7 b1 b1@7 gb1",
U: "bb1@7 bb1 bb1@7 bb1", V: "bb1@3 f2 bb2@4 eb1@7 eb1", W: "g1@4 c2@4 f1@7 f1", X: "f1@7 db2 d2@7 d2",
Y: "g1@7 g1 c2@7 bb1", Z: "ab1@7 ab1 bb1@3 f2 bb2@4", AA: "eb1@7 eb1 g1@4 c2@4", AB: "f1@7 f1 f1@6 c2 db2",
AC: "d2@7 d2 g1@6 c2@2", AD: "c2@7 c2 ab1@7 ab1", AE: "bb1@7 bb1 ~@3 bb2 bb2@2 f2@2, ~@8 bb1@5 ~@3",
AF: "g1@5 g1 bb1 d2 c2@7 c2", AG: "ab1@7 ab1 bb1@3 f2 bb2 f2 bb1@2", AH: "eb1@8 d2@7 d2",
AI: "db2@7 db2 c2@4 b2@2 c2@2", AJ: "b1@7 b1 b1@8", AK: "b1 f2 bb2@2 bb2 f2 bb1@2 eb2@7 eb2", AL: "d2@7 d2 c2@7 c2",
AM: "c2@4 ab1@4 g1@7 d2", AN: "bb1@3 f2 bb2@2 bb1@2 eb1@7 eb1", AO: "d2@7 d2 db2@7 db2",
AP: "c2@2 bb2 b2 c3 g2 c2@2 b1@7 b1", AQ: "b1@7 b1 bb1@7 bb1", AR: "bb1@3 bb1!3 bb1@2 bb1 f2 bb2@2 bb2 f2 bb1@2",
AS: "g1@5 bb1 b1 d2 c2@4 b2@2 g2 c2", AT: "ab1@7 ab1 bb1 f2 bb2@2 bb2 f2 bb1@2",
AU: "db2@7 db2 c2@2 bb2 b2 c3 g2 c2@2", AV: "b1@7 b1 b1@4 b2@4", AW: "bb1@7 bb1 bb1@7 bb2", AX: "bb1!2 eb4@2",
AY: "[d4@8 bb3@12 bb3!2 g3 ab3 bb3@8]/2", AZ: "bb3 f3", BA: "bb3 bb2 eb3@2", BB: "[d3@8 bb2@12 bb2 ~ g2 ab2 bb2@8]/2",
BC: "c3 f2",
})).s("gm_electric_bass_finger").gain(0.28)
// other · electric guitar muted
const electric_guitar_muted = note(`<
~@4 A B C D E F G H I J K@2 L M N O P@3 B C D E F G H I J Q R L M N O S@3 ~@15 T@2 U V U V U V U ~
>`.pickRestart({
A: "~@8 bb2 eb3!7", B: "~@4 bb2!2 eb3!2 ~@8", C: "~@4 eb4 ~ c4 ab3 [g3,c4,d4]@7 ~",
D: "[g3,c4,d4]@3 ~ [g3,b3,d4]@4 [g3,bb3]@3 ~ bb3 ~ g3 ab3", // Gsus4 G Gm
E: "bb3@4 ~@3 ab3 ~@8, g3 ~ g4@2 ~@4, ~@5 eb4@3 ~@8, ~@3 c4 ~@4", F: "bb2 eb3!3 ~@5 bb2 c3 eb3 ~@4",
G: "bb2 eb3!3 ~@3 eb3 ~@3 bb2 eb3 f3 eb3 ~", H: "[c4,d4,f4]@4 [c4,d4,f4]@3 ~ [c4,d4,f4]@4 [b3,d4,f4]@4",
I: "[bb3,eb4]@7 ~ ab3@2 ~@3 ab3 bb3!2", J: "~@8 [bb3,c4,f4]@7 ~",
K: "[~@4 bb2 eb3!3 ~@5 bb2 d3 d3@3 ~@2 [eb4,ab4,bb4]@4 [eb4,ab4,bb4]@3 ~ [bb3,d4,f4]@4]/2", // Ebsus4 Bb
L: "[g3,bb3,d4]@7 ~ [g3,c4,eb4]@5 ~@2 eb4, ~@13 bb4@3, ~@7 g4", M: "[ab3,c4]@7 ~ [ab3,bb3,eb4]@7 ~",
N: "bb2 ~ eb3!2 ~ eb3!3 ~@5 d3!3", O: "~@12 e3@3 ~",
P: "[b3@8 bb3@4 [ab3,bb3] ab3@10 ~ [c4,f4]@12 ~@4 bb2 eb3!7, ~@24 bb3@7 ~@17]/3", Q: "~@4 bb2 eb3!3 ~@5 bb2 d3!2",
R: "~@4 [eb4,bb4]@4 [eb4,ab4,bb4]@3 ~ [d4,f4,bb4]@4, ~@4 ab4 ~@11", // Eb5 Ebsus4 Bb
S: "[b3@8 bb3@4 [ab3,bb3] ab3@10 ~ [c4,f4]@12 ~@2 ab3 bb3 ~@8, ~@24 bb3@7 ~@17]/3", // Absus2 F5
T: "[~@4 [bb3,eb4,ab4]@15 ~ [bb3,eb4,ab4]@4 bb2!2 bb3!6]/2", U: "~@3 bb2 bb3!4 ~@8", V: "~@8 bb2!2 bb3!6",
})).s("gm_electric_guitar_muted").gain(0.11)
// chords · string ensemble 1
const string_ensemble_1 = note(`<
~@2 A B@3 ~@3 C D E F ~ G H I J K L M N@2 O@3 P Q R S T U K V W X K L M Y@2 Z@4 AA@4 AB AC@2 AD AE@2 AF@3 ~@8
>`.pickRestart({
A: "~ [g2,d4]", B: "[c3@8 ab3@16 bb3@13 ~@11, eb4 ~]/3", C: "eb3@2 d3 eb3, g3", D: "[bb3,c4]", E: "c4@3 b3, d3",
F: "[c3,eb4]@5 ~@3", G: "[eb3,g3] [d3,f3]", H: "[c3,bb3]@3 [ab2,bb3]", I: "[g2,bb3] [c3,bb3]",
J: "[ab2,f3] [bb2,bb3]", K: "[g3,eb4]", L: "[bb3,f4]@2 [c4,f4] [c4,e4]", M: "[bb3,eb4]",
N: "[[bb2,bb3]@3 [eb3,g3]]/2", O: "[[d3,f3] [eb3,g3] [c4,eb4]@4 c4@3 b3 [c3,bb3]@2, ~@3 f4@2 ~]/3",
P: "[ab2,c4] [ab3,c4]", Q: "[eb3,g3]@2 [d3,f3] [eb3,g3]", R: "[c4,eb4]", S: "c4@3 b3, f4", T: "[c3,bb3] [ab2,c4]",
U: "[bb2,bb3]", V: "[c3,bb3]@3 [f3,d4]", W: "[g2,d4] [c3,bb3]", X: "[ab2,eb4] [ab3,eb4]", Y: "[[bb2,bb3]@3 g5]/2",
Z: "[bb5@4 eb5@6 f5@2 [bb3,bb4]@8 c4@4 ~ d5 eb5 f5 bb5@3 g5, ~@20 c5@5 ~@7, ~@6 bb3 eb4]/4", // Bb
AA: "[d4 db4 c4 ~@2 bb3@3, bb5 eb6, ~@3 b3@2 ~@3]/4", AB: "[eb4,g6] [d4,bb6]",
AC: "[[c4,eb6]@3 bb5 [bb3,bb6]@4, ~@3 d4@4 ~]/2", AD: "c4@2 bb3 ab3, c7",
AE: "[bb6@3 g6 bb6@8 f6@2 e6@2, eb4 bb3@3]/2", AF: "[ab6@2 bb6 ab6@7 ~@2, ab4@5 ~]/3",
})).s("gm_string_ensemble_1").gain(0.09).pan(0.2)
// chords · string ensemble 2
const string_ensemble_2 = note(`<
~@2 A@4 ~@3 B C D E ~ F G H I J K L M@6 N C O P C E Q R S J K L T@2 U@4 V@2 W@2 X Y Z@2 AA@2 AB@3 ~@8
>`.pickRestart({
A: "[~@8 d4@8 ~@16 bb3@4 c4@4 [g3,bb3]@13 ~@11, ~ bb3@2 ab4@2 ~@3, ~@2 eb4@3 ~@3]/4", B: "f3@3 g3, bb3",
C: "[ab3,eb4]", D: "[c4,f4]@3 [b3,d4]", E: "[bb3,eb4]", F: "eb3 d3, bb3", G: "[ab3,c4]@3 [f3,d4]",
H: "[f3,d4] [g3,eb4]", I: "[g3,eb4] [ab3,eb4]", J: "[f3,eb4]", K: "[f3,db4] [f3,c4]", L: "[f3,b3]",
M: "[[ab3,eb4]@6 f3@2 g3 [bb3,eb4] [ab3,eb4]@4 c4@3 b3 g3@2 ab3@2 [bb2,eb4]@2, ~@6 bb3@3 ~@5 d4@4 eb4@4 ~@2]/6", // Ab5 Eb5 Ab5 Eb5
N: "f3@2 g3 [bb3,eb4], bb3@3 ~", O: "c4@3 b3, d4", P: "g3 ab3, eb4", Q: "[ab3,eb4]@3 [bb2,bb3]",
R: "[bb3,d4] [g3,eb4]", S: "[ab3,c4] [bb2,bb3]", T: "[[ab3,eb4]@3 [eb4,g5]]/2",
U: "[[bb3,bb5]@4 [c4,eb5]@6 [d4,f5]@2 g3@4 c3@4 ab3@4 ~ d5 eb5 f5 bb5@3 g5, ~@12 bb4@8 c5@5 ~@3 g4@4, ~@6 bb2 ~]/4", // Bb Cm Dm
V: "[bb3@2 f4@3 e4 eb4@2, bb5]/2", W: "[bb4 ab4@7, eb6]/2", X: "[g4,g6] [f4,bb6]", Y: "[eb4,eb6]@3 [f4,bb5]",
Z: "[g3 ~ c7@2, bb6 ~, ~ eb4@3]/2", AA: "[bb6@3 g6 [f4,bb6]@8 [f4,f6]@2 [e4,e6]@2, g4 ~@3]/2",
AB: "[[eb4,ab6]@8 [bb4,bb6]@4 [eb4,ab6]@33 ~@3]/3", // Ab5 Bb Ab5
})).s("gm_string_ensemble_2").gain(0.1).pan(0.8)
// other · harmonica
const harmonica = note("<A B@3 C ~@14 D@2 ~ E F ~@8 G H@2 I ~@16 J ~ K@2 ~ A B@3 L M@3 ~>".pickRestart({
A: "~@8 bb4 ~ d5 eb5@3 ~@2",
B: "[bb4 ~ d5 eb5@3 ~@2 bb4 ~ d5 eb5@3 g5 ab5@3 [gb5,g5] eb5 ~ c5@2 bb4@5 ~@2 d5 eb5@5 ~@2 [a4,bb4] ab4@4 ~@2 bb4 c5 eb5, ~@21 bb4 ~@26]/3", // Gmaj7 Bbmaj7
C: "ab5 ~ [gb5,g5] eb5 ~ [b4,c5] ~ bb4@7 ~@2", D: "[f5@2 f5 f5@2 f5@2 f5@2 ~ f5 e5@2 c5@2 eb5@16 ~]/2",
E: "~ bb5@2 ab5 eb5 bb4 ~ g4 ab4 bb4@2 ~@3 g4 ab4", F: "bb4@2 f5 eb5@2 ~ g5 ab5@3 ~@6",
G: "~@2 eb5 eb5@2 bb4@2 ~@3 eb5 eb5@2 bb4@2 ~",
H: "[c5@2 ab4 c5@2 eb5@2 ab5@2 g5@2 eb5@2 c5@2 bb4@4 ~@3 f5 eb5@3 ~@6, ~@9 gb5 ~@22]/2",
I: "eb5 ~ f5 g5 ~ ab5 ~ f5@4 ~@5", J: "g5 ~ f5 eb5 ~ c5 ~ bb4@4 ~@5",
K: "[f5@2 f5 f5@2 f5 ~ f5@3 f5 e5@2 c5 ~ eb5@14 ~@3]/2",
L: "ab5 ~ [gb5,g5] eb5 ~ c5@3 bb4 ~ d5 eb5@3 ~@2, ~@5 b4 ~@10", // Gmaj7
M: "[bb4 ~ d5 eb5@3 ~@2 bb4 ~ d5 eb5@3 g5 ab5@3 [gb5,g5] eb5 ~ c5@2 bb4@5 ~@2 d5 eb5@5 ~@2 a4 ~@9, ~@21 b4 ~@26]/3", // Gmaj7
})).s("gm_harmonica").gain(0.24)
// other · harmonica · soft notes
const harmonica_soft = note("<~ A B ~@55 A B ~@2 A B C D>".pickRestart({
A: "c4 ~@2 c4 ~@12", B: "~@14 c4 ~", C: "~@6 bb4 ab4@4 ~@2 bb4 c5 eb5", D: "ab5 ~ [gb5,g5] eb5 ~ [b4,c5] ~@10",
})).s("gm_harmonica").gain(0.08)
// other · french horn
const french_horn = note("<~@37 A B@3 C@2 D E F@4 G H I@2 J@2 K@3 ~@8>".pickRestart({
A: "f4@3 e4", B: "[eb4@5 g4]/3", C: "[eb4 d4 eb4@3 f4@3]/2", D: "eb4", E: "f4@4 ~ bb3 eb4@2",
F: "[f4 eb4 f4@3 e4 eb4@10]/4", G: "g4 bb4", H: "eb4@3 d4", I: "[d4 eb4@3]/2", J: "[bb4@3 g4 bb4@12]/2",
K: "[ab4@2 bb4 ab4@7 ~@2]/3",
})).s("gm_french_horn").gain(0.22)
// other · vibraphone
const vibraphone = note(`<
A B C D E ~@9 F G@2 H I J@2 K ~@7 L M ~@6 N@2 O ~ P Q@3 ~ R S@2 T U@2 V W X@2 Y@2 Z@3 AA@4 ~
>`.pickRestart({
A: "~@3 g4", B: "g4 [f4,g4] [ab4,bb4]!2", C: "[ab4,bb4]!2 [g4,d5] g4", D: "bb4!2 ab4!2", E: "ab4 c5 ~@2",
F: "~@2 eb4!2 ~ bb3@3 ~@2 eb4!2 ~ bb3@2 ~",
G: "[c4@2 ab3 c4@2 eb4 ~ ab4@2 g4@2 eb4 ~ c4@2 bb3@6 ~ f4 eb4@5 ~@4, ~@7 g4 ~ gb4 ~@3 b3 ~@9 d4 ~@8]/2",
H: "[d4,eb4] ~ f4 g4 ~ [g4,ab4] ~ f4@7 ~@2", I: "~@2 [d4,eb4] eb4 ~ bb3@3 ~@2 [d4,eb4] f4 ~ g4@2 ~",
J: "[bb4@2 bb4 ~ bb4!2 ~ c5@2 ~ bb4 g4 ~ [g4,ab4] ~@10 bb4@3 ~ ab4@3 ~, a4 ~@6 bb4 ~@7 f4@12 ~@5]/2", // Abmaj7
K: "g4 ~ f4 ~ g4 [g4,ab4] ~ bb3@9", L: "c4@7 ~ c4@4 b3@4", M: "bb3@5 ~ g4 f4 eb4@5 ~@3",
N: "[f5@2 f5 ~ f5!2 ~ f5@2 ~ f5 e5 ~ c5 ~ eb5@12 ~@5, e5 ~@14 d5 ~@16]/2", O: "g5 ~ f5 g5 ~ [g5,ab5] ~ bb4@9",
P: "~@8 [bb4,c5] ~ ab4 c5 ~ eb5 ~ [g5,ab5]", // Bbsus2 Abmaj7
Q: "[~ [f5,g5] ~ eb5 ~ c5@2 bb4@4 ~@2 bb5 f5 eb5@5 ~@4 eb5 ~ f5 g5 ~ [g5,ab5] ~ f5@6 ~@11]/3", // Fsus2 Abmaj7
R: "f4@3 ~ e4@3 ~ eb4@7 ~, e4 ~@15", S: "[bb3@3 ~ ab3@4 ab3@11 ~@13, ab3 ~@31]/2",
T: "~ [gb5,g5] ~ g5@3 eb5 ~@2 [gb5,g5] ~ g5@2 ~ eb5 ~, ~@11 gb5 ~@4", // Gmaj7
U: "[c5@2 ab4 c5@2 eb5 ~ ab5 ~ g5@2 eb5 ~ f5@2 bb4@4 ~@2 bb4 [f4,g4] eb4@5 ~@4, b4 ~@8 gb5 ~@3 e5 ~@18]/2", // Fsus2
V: "[d4,eb4] ~ f4 g4 ~ [g4,ab4] ~ f4@6 ~@3", // Ebmaj7 Abmaj7
W: "~ [d4,eb4] ~ eb4@3 bb3 ~@2 [d4,eb4] ~ f4 ~ g4@2 ~, ~@3 d4 ~@9 gb4 ~@2", // Ebmaj7
X: "[[c4,db4] ~ db4!2 ~ db4 ~ eb4@3 db4 c4@2 c4@2 b3@7 ~@2 bb4@4 ab4@4]/2", // Dbmaj7
Y: "[g4 ~ f4 g4 ~ [g4,ab4] ~ bb4@13 ~@4 g4@7 ~, ~@7 ab4 ~@24]/2", // Abmaj7
Z: "[~@8 bb4@15 ~ d4@8 eb4@7 ~ c4@8, ~@8 ab4@8 ~@8 g4@15 ~@9]/3",
AA: "[~@8 f4@15 ~ eb4@2 bb3@12 ~@4 g4 ab4 bb4 [gb4,g4] eb4@5 ~@13]/4", // Gmaj7
})).s("gm_vibraphone").gain(0.19).pan(0.4)
// other · vibraphone · soft notes
const vibraphone_soft = note("<A B ~ C ~@10 D E ~@41 F G H ~ I ~@4>".pickRestart({
A: "~@2 [f4,g4] f4", B: "f4 ~@3", C: "g4!2 f4!2", D: "~@2 d4 ~@7 d4 ~@5", E: "b3 ~@15", F: "~@8 f4@7 ~",
G: "[f4,g4]@3 ~@5", H: "eb4@7 ~@9", I: "bb3 ~",
})).s("gm_vibraphone").gain(0.1).pan(0.4)
// other · pad new age
const pad_new_age = note("<~@12 A ~@3 B C ~@2 D E ~@4 F G ~ H I ~@3 J ~@3 K E ~@7 L ~@3 M N O ~ P ~@10>".pickRestart({
A: "~@6 g5 f5 eb5 ~ f5 g5 ~ ab5 ~ f5", B: "~@6 bb5 g5 ~@8", C: "g5 ~ ab5 bb5 ~ c6 ~ ab5 ~@8",
D: "~@8 bb5 ~@3 ab5 ~@3", E: "g5 ~@15", F: "~@14 c6 g5", G: "bb5 ~@15", H: "c6 ~@11 b5 ~@3", I: "~@6 g5 f5 eb5 ~@7",
J: "~@5 d6 eb6 f6 eb6 ~@7", K: "~@6 g5 ab5 bb5 ~@3 ab5 ~@3", L: "bb5 ~@3 ab5 ~@3 eb6 ~@7", M: "~@5 bb5 g5 eb5 ~@8",
N: "eb5 ~ f5 g5 ~ ab5 ~ f5 ~@4 bb5 ~ eb6 ~", O: "g6 ~@15", P: "~@8 bb6 ~@3 ab6 ~@3",
})).s("gm_pad_new_age").gain(0.12)
// other · harmonica
const harmonica_2 = note("<A B C D E ~@17 F G ~@33 A B C D H I J K ~>".pickRestart({
A: "~@9 bb4 ~ d5 eb5@3 ~", B: "~ bb4 ~ d5 eb5@3 ~@2 bb4 ~ d5 eb5@3 g5",
C: "~ ab5@2 [gb5,g5] eb5 ~ bb4 ~ bb4@5 ~@2 d5, ~@7 c5@2 ~@7", D: "eb5@5 ~@2 [a4,bb4] ab4@4 ~@3 bb4",
E: "c5 eb5 ab5 [gb5,g5] ~ eb5 b4 c5 bb4@7 ~", F: "~@4 ab5 ~ eb5 bb4 g4 ab4 bb4@2 ~@3 g4, ~@3 bb5@2 ~@11",
// … 111 more lines
More by Dionne Warwick
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.