0:00/0:00
// Heartbreaker — Dionne Warwick
// 102 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 5/4 at bar 3, 4/4 at bar 5, 5/4 at bar 8, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 108 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(102/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.
// bass · fretless bass
const bass = note(`<
~ A B C D E F G H I J K L M N O P Q R J S T U V W X Y@2 Z AA AB Y@2 AC AD AE AF AG AH AI A AJ Y@2 AK AL AM AH AN A AO
AP AQ AR AS AC U AT K AU AV AW M AX U AY AZ BA Y BB BC AK BD AF AG J AA BE BF Y@2 AK BC AL BG BH BI@2 BJ BK BL BM BN
BO BP BQ BR BJ BS BL BM BN BO BT BQ BU@3
>`.pickRestart({
A: "g#1@5 ~ g#1 ~ g#1@5 ~ g#1 ~", B: "c#2@3 g#1@2 ~ f#1@2", C: "~@2 g#1@7 ~ g#1 ~ g#1@4",
D: "~@4 g#1@5 ~ g#1 ~ f#1@4", E: "~@2 f#1@2 g#1@5 ~ g#1 ~ g#1@4", F: "~@2 g#1 ~ c#2@5 ~ g#1@4 ~@2",
G: "f#1@5 ~ e1@7 ~ e1 ~", H: "e1@7 ~ e1@5 ~ e1 ~", I: "e1@7 ~ e1@6 b1@2", J: "e1@5 ~ e1 ~ e1@7 ~",
K: "e1@5 ~ e1 ~ e1@6 b1@2", L: "c#2@4 ~@2 c#2 ~ c#2@5 ~ g#1@2", M: "c#2@5 ~ c#2 ~ c#2@4 g#1@4",
N: "f#1@5 ~ f#1@2 f#1@6 ~@2", O: "f#1@5 ~ f#1 ~ c#2@4 f#2@4", P: "f#1@5 ~ f#1 ~ f#1@7 ~", Q: "b1@5 ~ b1 ~ b1@6 ~@2",
R: "e1@5 ~ e1 ~ e1@6 ~@2", S: "c#2@5 ~ c#2 ~ c#2@6 ~@2", T: "c#2@5 ~ c#2@2 g#1@4 c#2@4",
U: "f#1@5 ~ f#1 ~ f#1@6 c#2@2", V: "f#2@5 ~ f#2 ~ f#2@4 c#2@4", W: "f#1@5 ~ f#1 ~ f#1@8",
X: "b1@5 ~ b1 ~ b1@5 ~ b1@2", Y: "g#1@5 ~ g#1@2 c#2@5 ~ c#2@2", Z: "g#1@5 ~ g#1 ~ g#1@6 g#1@2",
AA: "f#1@5 ~ f#1@2 b1@5 ~ b1@2", AB: "g#1@5 ~ g#1 ~ g#1@6 d#2@2", AC: "g#1@5 ~ g#1 ~ g#1@6 ~@2",
AD: "a1@5 ~ a1 ~ a1@6 ~@2", AE: "a1@5 ~ a1 ~ a1@6 e2@2", AF: "a2@5 ~ a2 ~ a2@6 e2@2", AG: "a1@5 ~ a1 ~ a1@6 b1@2",
AH: "e1@5 ~ e1 ~ e1@5 ~ e1@2", AI: "f#1@5 ~ f#1 ~ b1@5 ~ b1@2", AJ: "a1@5 ~ a1@2 b1@5 ~ b1 ~",
AK: "a1@5 ~ a1 ~ a1@7 ~", AL: "g#1@5 ~ g#1 ~ g#1@5 ~ g#1@2", AM: "b1@5 ~ b1 ~ b1@4 c#2@2 b1@2",
AN: "f#1@5 ~ f#1 ~ b1@8", AO: "a1@5 ~ a1 ~ b1@5 ~ b1@2", AP: "g#1@5 ~ g#1@2 c#2@4 ~@2 c#2@2",
AQ: "g#1@4 ~@2 g#1@2 c#2@5 ~ c#2@2", AR: "a1@5 ~ a1 ~ a1@5 ~ a1 ~", AS: "g#1@5 ~ g#1 ~ g#1@5 ~ d#2@2",
AT: "f#2@5 ~ f#2 ~ f#2@4 f#1@4", AU: "e1@4 ~@2 e1 ~ e1@4 b1@4", AV: "e1@4 ~@2 e1 ~ e1@7 ~",
AW: "e1@5 ~ e1 ~ e1@4 b1@4", AX: "c#2@4 ~@2 c#2 ~ c#2@4 g#1@4", AY: "f#2@4 ~@2 f#2 ~ f#2@4 c#2@4",
AZ: "f#1@5 ~ f#1 ~ f#1@5 ~ f#1@2", BA: "b1@5 ~ b1 ~ b1@8", BB: "g#1@5 ~ g#1 ~ c#2@5 ~ c#2@2",
BC: "g#1@5 ~ g#1 ~ g#1@7 ~", BD: "a1@4 ~@2 a1 ~ a1@4 e2@4", BE: "g#1@4 ~@2 g#1 ~ g#1@5 ~ g#1@2",
BF: "a1@5 ~ a1@2 b1@5 ~ b1@2", BG: "c#2@6 g#1@5 ~ f#1@4", BH: "~@2 e1@7 ~ e1 ~ e1@4",
BI: "[c#2@5 ~ c#2 ~ c#2@3 ~ c#2 ~ c#2@4 c#2@2 c#2@4 ~@2 c#2@2 f#1@4]/2", BJ: "~@2 f#1 ~ f#1@5 ~ f#1@2 g#1@4",
BK: "~@2 g#1@2 c#2@5 ~ c#2@2 a#1@4", BL: "~@2 a#1 ~ a#1@5 ~ a#1@2 b1@4", BM: "~@2 b1@2 c#2@5 ~ c#2@2 a#1@4",
BN: "~@2 a#1@2 d#2@5 ~ d#2@2 a#1@4", BO: "~@2 a#1@2 d#2@5 ~ d#2@2 b1@4", BP: "~@2 b1 ~ b1@7 ~ a#1@4",
BQ: "~@2 a#1 ~ a#1@5 ~ a#1@2 c#2 ~ c#2@2", BR: "~@2 c#2 ~ c#2@4 d#2@2 c#2@2 f#1@4", BS: "~ g#1 c#2@2 b1@2 a#1@2",
BT: "~@2 b1 ~ b1@6 ~@2 a#1@4", BU: "[~@2 c#2 ~ c#2@4 a#1@4 ~ f#1@30 ~@5]/3",
})).s("gm_fretless_bass").gain(0.3)
// chords · piano
const piano = note(`<
~ A B C@2 D E F@3 ~@8 G@2 H@2 I@2 J K L M N O P Q R S T U V W X Y Z AA AB@2 AC AD AE X AF AG AH AI AJ AK AL@2 AM@2 AN
AO AP@2 AQ@2 AR@2 AS AT AU AV AW AX AY V AZ BA BB BC BD Q BE BF BG BH B BI BJ@3 BK@3 BL BM BN BO BP BQ BR BS BT BL BU
BV BW BX@3
>`.pickRestart({
A: "[g#3,b3,d#4]@11 ~ [g#3,b3,d#4]@3 ~", B: "[g#3,c#4,e4]@5 ~ [g#3,b3,d#4]@5 ~ [f#3,a#3,c#4]@4",
C: "[~@2 [g#3,b3,d#4]@7 ~ [g#3,b3,d#4]@9 ~ [g#3,b3,d#4]@6 [f#3,a#3,c#4]@4 f#3@2]/2", // G#m F#
D: "~@2 f#3 ~ [g#3,b3,d#4]@5 ~ [b3,d#4]@4 g#3@2, [a#3,c#4]@4 ~@6 g#3@3 ~@3", // G#m B A#m
E: "[g#3,b3,d#4]@2 ~@2 [g#3,c#4,e4]@5 ~ [g#3,b3,d#4]@5 ~", // G#m C#m G#m
F: "[[f#3,a#3,c#4]@5 ~ [e3,g#3,b3]@7 ~ [e3,g#3,b3]@5 ~ [e3,g#3,b3,e4]@27 ~]/3", G: "[[e3,g#3,b3]@31 ~]/2",
H: "[[g#3,b3,e4]@15 ~]/2", I: "[[a3,c#4,e4]@31 ~]/2", J: "[a3,c#4,e4]@11 ~ [a3,c#4,e4]@3 ~",
K: "[b3,d#4,f#4]@11 ~ [b3,d#4,f#4]@3 ~", // B
L: "[b3,d#4,f#4]@4 [b3,d#4,f#4]@3 ~ [e4,g#4]@3 ~@3 b3@2, ~@4 b3@3 ~, ~@3 [e4,g#4]", // B E
M: "[b3,d#4,f#4]@3 ~ [b3,d#4,f#4]@4 [b3,e4,g#4]@4 [e4,g#4]@2 b3@2, ~@12 b3 ~@3", // B E
N: "[b3,d#4,f#4]@4 [b3,d#4,f#4]@6 b3 ~ [b3,d#4,f#4]@3 ~", // B
O: "a3@4 a3@2 f#2 ~ [b3,d#4]@4 ~@2 d#4@2, [c#4,e4]@7 ~ f#4@7 ~, ~@3 b3", // B C#m
P: "[d#4,f#4]@4 b3 ~ [b3,d#4,f#4]@4 ~@2 [d#4,f#4]@3 b3, b3@3 ~@7 b3@4 ~@2", // D#m B D#m
Q: "[b3,d#4,f#4]@4 [b3,d#4,f#4]@3 ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~", // B E
R: "[b3,d#4,f#4]@3 ~ [b3,d#4,f#4]@3 ~ [e4,g#4]@3 ~ [b3,e4,g#4]@3 ~, ~@7 b3@4 ~@5", // B E
S: "[b3,d#4,f#4]@3 ~ [b3,d#4,f#4]@6 b3 ~ [b3,d#4,f#4]@3 ~", T: "[c#4,e4,g#4]@5 ~ [c#4,e4,g#4]@9 ~",
U: "[c#4,e4,g#4]@5 ~ [c#4,e4,g#4,c#5] ~ [c#4,e4,g#4,c#5]@3 ~ [c#4,e4,g#4]@3 ~", V: "[c4,e4,g#4]@5 ~ [c4,e4,g#4]@9 ~",
W: "[c4,e4,g#4]@5 ~ c4@4 c4 ~ [c4,e4,a4]@3 ~, ~@3 [e4,g#4]@3 ~@2", // Caug Am E
X: "[b3,e4,g#4]@5 ~ [e4,g#4]@4 b3 ~ [b3,e4,g#4]@3 ~, ~@6 b3@3 ~@7", // E
Y: "[a3,c#4,e4]@4 [c#4,e4]@2 a3 ~ [b3,d#4,f#4]@4 [b3,d#4,f#4]@2 b3 ~, ~@4 a3 ~@11", // A C#m B
Z: "[b3,d#4,f#4]@4 [d#4,f#4]@6 b3@2 [b3,d#4,f#4]@3 ~, ~@4 b3@5 ~@7", // B D#m B
AA: "[a3,c#4,e4]@3 ~ [a3,c#4,e4]@3 ~ [b3,d#4,f#4]@3 ~ [b3,d#4,f#4]@3 ~", // A B
AB: "[b3,d#4,f#4]@3 ~ [b3,d#4,f#4]@3 ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~", // B E
AC: "[a3,c#4,e4]@4 a3 ~ [c#4,e4]@4 a3 ~ [a3,c#4,e4]@3 ~, ~@6 a3@3 ~@7", // A C#m A
AD: "[g#3,b3]@4 b3@6 g#3 ~ [g#3,b3,d#4]@3 ~, d#4@5 ~@3, ~ g#3 ~@2", // G#m
AE: "[b3,d#4,f#4]@4 b3 ~ [b3,d#4,f#4]@4 b3 ~ [b3,d#4,f#4]@2 b3 ~", // B
AF: "c#4@4 ~@2 c#4@2 [b3,d#4]@4 d#4@2 b3 ~, e4@7 ~ f#4@7 ~, a3@3 ~ a3@4 ~@4 b3 ~@3", // B
AG: "[b3,d#4,f#4]@5 ~ [b3,d#4,f#4]@4 b3 ~ [b3,d#4,f#4]@3 ~", // B
AH: "[a3,c#4,e4]@3 ~ [a3,c#4,e4]@3 ~ [b3,d#4]@4 [b3,d#4]@3 ~, ~@8 f#4@7 ~", // A B
AI: "[b3,d#4,f#4]@2 b3@2 [b3,d#4,f#4]@3 ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~", // B E
AJ: "[b3,d#4,f#4]@3 ~ [b3,d#4,f#4]@3 ~ [b3,e4,g#4]@4 [b3,e4,g#4]@3 b3", // B E
AK: "[a3,c#4,e4]@4 a3 ~ [c#4,e4]@4 a3 ~ [a3,c#4,e4]@2 ~@2, ~@6 a3@3 ~@7", // A C#m A
AL: "[[b3,d#4]@4 g#3 ~ b3@6 ~@2 b3@4 ~@2 b3 ~ [b3,d#4]@4 g#3 ~ [g#3,d#4]@4, g#3@3 ~@3 d#4@15 ~@11, ~@6 g#3@5 ~ g#3@5 ~ g#3@4 g#3@3 ~@3 b3@2 ~@2]/2", // B G#5
AM: "[[f#3,a3,c#4]@4 f#3 ~ [a3,c#4]@6 f#3 ~ c#4 ~ c#4@4 a3 ~ [f#3,a3,c#4]@5 ~ [f#3,a3,c#4]@3 ~, ~@6 f#3@3 ~@5 f#3@7 ~@11, ~@14 a3@5 ~@13]/2", // F#m A F#m
AN: "[e3,g#3,b3]@5 ~ [e3,g#3,b3]@10", AO: "[e3,g#3,b3]@15 ~", AP: "[[e3,b3]@14 ~ b3, g#3@13 ~ g#3@2]/2",
AQ: "[[g#3,b3,e4]@31 ~]/2", AR: "[[a3,c#4]@13 ~ c#4 e4, e4@7 ~, ~@26 a3@5 ~]/2", AS: "[a3,c#4,e4]@12 [a3,c#4,e4]@3 ~",
AT: "[a3,d#4,f#4]@12 [b3,d#4,f#4]@3 ~", AU: "[d#4,f#4]@4 [d#4,f#4]@3 ~ [b3,e4,g#4]@4 [b3,e4,g#4]@4, b3 ~",
AV: "[b3,d#4,f#4]@3 ~ [b3,d#4,f#4]@3 ~ [b3,e4]@4 [e4,g#4]@2 b3@2, ~@8 g#4@3 ~@5", // B E5 E
AW: "[b3,d#4,f#4]@3 ~ [d#4,f#4]@6 b3@2 [b3,d#4,f#4]@3 ~, ~@4 b3@5 ~@7", // B D#m B
AX: "[c#4,e4,g#4]@5 ~ [c#4,e4]@9 ~, ~@6 g#4@7 ~@3", // C#m
AY: "[c#4,g#4]@6 [g#4,c#5] ~ [e4,g#4,c#5]@4 [c#4,e4,g#4]@3 ~, e4 ~", // C#5 C#m
AZ: "[c4,e4,g#4]@4 e4 ~ [e4,a4]@4 c4@2 ~@2 c4 ~, ~@6 c4@3 ~@3 [e4,a4]@4", // Caug A5
BA: "[b3,e4,g#4]@5 ~ [e4,g#4]@4 b3 ~ [b3,e4,g#4]@2 b3 ~, ~@6 b3@3 ~@7", // E
BB: "[a3,c#4,e4]@4 [c#4,e4]@2 a3@2 [a3,d#4,f#4]@4 [b3,d#4,f#4]@2 b3 ~, ~@4 a3 ~@11", // A C#m D#dim B
BC: "[b3,d#4,f#4]@4 [d#4,f#4]@6 b3 ~ [b3,d#4,f#4]@3 ~, ~@4 b3@5 ~@7", // B D#m B
BD: "[c#4,e4]@3 ~ [c#4,e4]@3 ~ [b3,d#4,f#4]@3 ~ [b3,d#4,f#4]@3 ~, a3@7 ~@9", // C#m B
BE: "[b3,d#4,f#4]@2 b3 ~ [b3,d#4,f#4]@3 ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~", // B E
BF: "[a3,c#4]@4 ~@2 c#4@4 a3 ~ [a3,c#4,e4]@3 ~, e4@11 ~@5, ~@4 a3@5 ~@7", // A
BG: "[g#3,b3,d#4]@4 [b3,d#4]@6 g#3@2 [g#3,b3,d#4]@2 g#3 ~, ~@4 g#3@3 ~@9", // G#m B G#m
BH: "[g#3,b3,d#4]@5 ~ [g#3,b3,d#4]@4 g#3 ~ [g#3,b3,d#4]@3 ~", BI: "~@2 [e3,g#3,b3]@7 ~ [e3,g#3,b3]@4 ~@2",
BJ: "[[b3,d#4,f#4]@6 [b3,d#4,f#4]@5 ~ [b3,d#4,f#4] ~ [b3,d#4,f#4]@4 [d#4,f#4]@4 b3 ~ [d#4,f#4]@2 b3 ~ [a#3,c#4,f#4]@6 [c#4,f#4]@4 a#3 ~ [a#3,c#4,f#4]@3 ~ [b3,d#4,f#4]@4, ~@18 b3@3 ~@3 b3 ~@9 a#3@3 ~@11]/3", // B D#m F# F#5 F# B
BK: "[[b3,d#4,f#4]@2 b3 ~ [c#4,f4,g#4]@3 ~ [c#4,f4,g#4]@4 [f4,g#4]@10 c#4@2 [c#4,f4,g#4]@3 ~ [d#4,f#4]@4 [d#4,f#4]@2 b3 ~ [c#4,f4,g#4]@4 [c#4,f4,g#4]@3 ~ [c#4,f4,g#4]@3 ~, ~@12 c#4@9 ~@7 b3@6 ~@14]/3", // B C# Fm C# D#m C#
BL: "[c#4,f4,g#4]@3 ~ [c#4,f#4,a#4]@3 ~ [c#4,f#4,a#4]@3 ~ [c#4,f4,g#4]@3 ~", // C# F# C#
BM: "[c#4,f4,g#4]@3 ~ [c#4,f#4,a#4]@4 [f#4,a#4]@2 c#4 ~ [b3,d#4,f#4]@4, ~@8 c#4 ~@7", // C# F# B
BN: "b3 ~ [d#4,f#4]@4 b3 ~ [b3,d#4,f#4]@3 ~ [a#3,c#4,f4]@4, ~@2 b3@3 ~@11", // D#m B A#m
BO: "[c#4,f4]@6 a#3 ~ [a#3,c#4,f4]@3 ~ [b3,d#4,f#4] ~ [b3,d#4,f#4]@2, a#3@5 ~@11", // C# A#m B
BP: "~@2 [b3,d#4,f#4]@4 [d#4,f#4]@2 b3@2 [d#4,f#4] ~ [a#3,c#4,f#4]@3 ~, ~@6 b3 ~@9", // B D#m F#
BQ: "[a#3,c#4,f#4]@3 ~ [a#3,c#4,f#4]@3 ~ [a#3,c#4,f#4]@3 ~ [b3,d#4,f#4]@4", // F# B
BR: "[b3,d#4,f#4]@2 b3 ~ [c#4,f4,g#4]@4 [c#4,f4,g#4]@2 c#4 ~ [c#4,f4,g#4]@4", // B C#
BS: "~@2 [f4,g#4]@4 c#4 ~ [c#4,f4,g#4]@3 ~ [b3,d#4,f#4]@2 b3@2, c#4@5 ~@11", // Fm C# B
BT: "[b3,d#4,f#4]@3 ~ [c#4,f4,g#4]@3 ~ [c#4,f4,g#4]@3 ~ [c#4,f4,g#4]@3 ~", // B C#
BU: "[c#4,f4,g#4]@3 ~ [c#4,f#4,a#4]@3 ~ [c#4,f#4,a#4]@3 ~ [b3,d#4,f#4]@4", // C# F# B
BV: "b3 ~ [b3,d#4,f#4]@4 b3 ~ [b3,d#4,f#4]@3 ~ [a#3,c#4,f4]@4", // B A#m
BW: "[c#4,f4]@6 a#3 ~ [a#3,c#4,f4]@3 ~ [b3,d#4,f#4] ~ [b3,d#4,f#4]@2, a#3@3 ~@13", // C# A#m B
BX: "[~@2 [b3,d#4,f#4]@3 ~ [b3,d#4,f#4] ~ [d#4,f#4]@2 b3 ~@2 [a#3,c#4,f#4]@30 ~@5, ~@8 b3 ~@39]/3", // B D#m F#
})).s("gm_piano").gain(0.37).pan(0.8)
// chords · overdriven guitar
const overdriven_guitar = note("<~ A B C D E@2 F@3 ~@73 A B G H@2 ~@20>".pickRestart({
A: "~ [g#4,b4] [f#4,a#4] [d#4,g#4]@2 [b3,d#4]@3", B: "[c#4,e4] [d#4,f#4] [c#4,e4] [b3,d#4]@3 [f#3,a#3] [g#3,b3]",
C: "[f#3,a#3] [d#3,g#3]@4 [g#3,b3]@3", D: "[b3,d#4]@6 ~ [d#4,g#4]",
E: "[[f#4,a#4] [g#4,b4]@2 [f#4,a#4]@2 [d#4,g#4]@2 [b3,d#4]@3 [c#4,e4] [d#4,f#4] [c#4,e4] [b3,d#4]@3]/2", // F# G#m F# G#5 B C#m D#m C#m …
F: "[[f#3,a#3] [g#3,b3] [f#3,a#3] [e3,g#3]@4 [g#3,b3]@3 [b3,d#4]@10 ~@4]/3", G: "[f#3,a#3] [e3,g#3]@4 [g#3,b3]@3",
H: "[[d#4,f#4]@7 ~]/2", // D#m
})).s("gm_overdriven_guitar").gain(0.19).pan(0.1)
// chords · epiano2
const epiano2 = note(`<
~ A B C@2 D E F@3 G@4 H@3 I@5 J@3 K L@2 M N O P@2 M Q@2 R@2 S T U V W X Y Z M AA V AB AC AD@2 Y AE@2 AF@2 AG@2 AH@4
AI@2 AJ AK AD AL AK AM@2 AN@2 S V U AO AP AD Y Z AQ B AR AS@6 AT@4 AU@6 AV@6
>`.pickRestart({
A: "[b3,d#4,g#4]@11 ~ [b3,d#4,g#4]@3 ~", B: "[c#4,e4,g#4]@5 ~ [b3,d#4,g#4]@5 ~ [a#3,c#4,f#4]@4",
C: "[~@2 [b3,d#4,g#4]@7 ~ [d#4,g#4,b4]@9 ~ [b3,d#4,g#4]@5 ~ [c#4,f#4,a#4]@4 c#4@2]/2", // G#m F#
D: "[f#4,a#4]@2 c#4 ~ [d#4,g#4,b4]@11 ~, c#4 ~@15", E: "[b3,d#4,g#4]@3 ~ [c#4,e4,g#4]@5 ~ [b3,d#4,g#4]@5 ~",
F: "[[c#4,f#4,a#4]@5 ~ [b3,e4,g#4]@7 ~ [e4,g#4,b4]@6 [e4,g#4,b4,d#5]@24 ~@4]/3", // F# E Emaj7
G: "[b3@25 ~@5 e4 ~ [e4,g#4]@14 ~@2 g#4@11 ~ [g#4,b4]@4, [e4,g#4]@28 b4@31 ~@5, ~@26 b3@20 b3@17 ~, ~@3 e4]/4", // E G#m E
H: "[[c#4,e4]@15 ~@11 a4@5 ~ [c#4,e4]@12 [c#4,e4]@4, a4@25 ~@7 a4@16, ~@16 [c#4,e4]@15 ~@17, ~@11 c#5@13]/3", // C#m
I: "[~@12 [d#4,f#4]@4 [e4,g#4]@18 ~@8 [e4,f#4]@6 ~@26 e4 ~ [e4,g#4,b4]@4, [d#4,f#4]@11 ~@23 e4@7 ~@7 [e4,g#4]@27 ~@5, b3@9 ~ b3@24 ~@4 b4@31 ~ b4@6 ~@4, ~@6 b4@9 ~@21 g#4@6 ~@24 e5@13 ~]/5", // D#m E Esus2 E D#m E
J: "[a4@21 ~@5 a4@5 ~ [c#4,e4,a4]@15 ~, [c#4,e4]@31 ~@17, ~@22 c#5@25 ~]/3", K: "[b3,d#4,f#4,b4]@7 ~",
L: "[d#4,f#4,b4]@7 ~ [e4,g#4,b4]@7 ~", M: "[b3,d#4,f#4]@7 ~", N: "[c#4,e4,a4]@7 ~ [d#4,f#4,b4]@8",
O: "[d#4,f#4,b4]@7 ~", P: "[[d#4,f#4]@7 ~ [e4,g#4]@7 ~ [d#4,f#4,b4]@8 [e4,g#4]@7 ~, b3@31 ~]/2",
Q: "[~@13 c#4@3, c#4@25 ~@7, e4@21 ~ e4@9 ~, g#4@17 ~ g#4@13 ~, ~@14 c#5@17 ~]/2",
R: "[[e4,g#4]@11 ~ [e4,g#4]@6 ~@10 c4@3 ~, c5@17 ~ c5@13 ~, ~@20 g#4@11 ~, ~@24 e4@7 ~]/2", // E
S: "[b3,e4,g#4]@11 ~ [b3,e4,g#4]@3 ~", T: "[c#4,e4,a4]@8 [d#4,f#4,b4]@7 ~", U: "[d#4,f#4,b4]@11 ~ [d#4,f#4,b4]@4",
V: "[c#4,e4,a4]@7 ~ [d#4,f#4,b4]@7 ~", W: "[d#4,f#4,b4]@8 [b3,e4,g#4]@7 ~", X: "[d#4,f#4,b4]@7 ~ [b3,e4,g#4]@7 ~",
Y: "[c#4,e4,a4]@15 ~", Z: "[b3,d#4,g#4]@15 ~", AA: "~@3 b4, [b3,e4,g#4]@15 ~",
AB: "[d#4,f#4,b4]@11 ~ [d#4,f#4,b4]@3 ~", AC: "[c#4,e4,a4] [b3,d#4,f#4]", AD: "[d#4,f#4]@7 ~ [e4,g#4]@7 ~, b3@15 ~",
AE: "[d#4@11 ~@2 g#4@2 b3, g#4@24 d#4@7 ~, b3@21 ~ b3@7 ~@3]/2", AF: "[[c#4,e4,a4]@13 ~ [c#4,e4,a4]@2]/2",
AG: "[[e4,g#4,b4]@15 ~]/2", AH: "[~@26 e4@5 ~, [b3,g#4]@31 ~, e4@25 ~@7, ~@11 b4@5]/2",
AI: "[[c#4,e4]@9 ~@4 c#5@3, a4@20 e4@11 ~, ~@18 c#4@13 ~, ~@22 a4@9 ~]/2", AJ: "[c#4,e4,a4]", AK: "[b3,d#4,f#4]@15 ~",
AL: "[d#4,f#4]@7 ~ [e4,g#4]@8, b3@15 ~", // D#m E
AM: "[g#4@12 ~@14 c#4@5 ~, c#4@25 ~@7, e4@21 ~ e4@10, ~@7 c#5@7 ~@2, ~@18 g#4@13 ~]/2",
AN: "[~@26 e4@5 ~, c4@5 ~@3, ~@2 g#4@19 ~ g#4@8 ~@2, ~@4 c5@15 ~ c5@10 ~@2, ~@8 e4@17 ~@7]/2",
AO: "[c#4,e4,a4]@7 ~ [b3,d#4,f#4]@7 ~", AP: "[b3,d#4,f#4]@7 ~ [b3,e4,g#4]@7 ~", AQ: "[b3,d#4,g#4]@14 b3 ~",
AR: "~@2 e4@7 ~ [e4,g#4]@6, ~ [g#3,b3]@7", // E G#m
AS: "[[d#4,f#4,b4]@27 ~ [c#4,f#4,a#4]@11 ~ [c#4,f#4,a#4]@3 ~ [d#4,f#4,b4]@7 ~ [c#4,f4,g#4]@7 ~ [c#4,f4,g#4]@11 ~ [c#4,f4,g#4]@3 ~ [b3,d#4,f#4]@7 ~ [c#4,f4,g#4]@7 ~ [c#4,f4,g#4]@4]/6", // B F# B C# B C#
AT: "[~@4 [c#4,f#4,a#4]@7 ~ [c#4,f4,g#4,c#5]@7 ~ [c#4,f#4,a#4]@7 ~ [d#4,f#4,b4]@15 ~ [c#4,f4,a#4]@12 [c#4,f4,a#4]@3 ~ [b3,d#4,f#4]@4]/4", // F# C# F# B A#m B
AU: "[~@2 b3@2 b3@3 ~ b3@3 ~ [c#4,f#4,a#4]@10 ~@2 [c#4,f#4,a#4]@3 ~ [d#4,f#4,b4]@8 [c#4,f4,g#4]@7 ~ [c#4,f4,g#4]@11 ~ [c#4,f4,g#4,c#5]@3 ~ [d#4,f#4,b4]@7 ~ [c#4,f4,g#4]@7 ~ [c#4,f4,g#4]@7 ~ [c#4,f#4,a#4]@7 ~ [c#4,f4,g#4]@4, ~@4 [d#4,f#4]@7 ~@85]/6", // F# B C# B C# F# C# D#m
AV: "[~@4 [c#4,f#4,a#4]@7 ~ [d#4,f#4,b4]@11 ~ [d#4,f#4,b4]@3 ~ [c#4,f4,a#4]@11 ~ [c#4,f4,a#4]@4 [b3,d#4,f#4]@7 ~ [b3,d#4,f#4]@8 ~ [c#4,f#4]@30 ~@5, ~@60 a#3@31 ~@5]/6", // F# B A#m B F#5
})).s("gm_epiano2").gain(0.24).pan(0.1)
// chords · electric guitar clean
const electric_guitar_clean = note("<~@11 A ~ A ~ B ~ C ~ A ~ A ~ B ~ C ~@35 A ~ A ~ B ~ C ~@40>".pickRestart({
A: "~@10 [b3,e4,g#4] ~@5", B: "~@10 [c#4,e4,a4] ~@5", C: "~@10 [d#4,f#4,b4] ~@5",
})).s("gm_electric_guitar_clean").gain(0.32).pan(0.1)
// chords · string ensemble 1
const string_ensemble_1 = note(`<
~ A B@5 C@7 D@3 E@5 F@3 G@2 H@2 I@3 H@2 J@2 K@2 L@3 M@4 N@2 O P@2 M@4 Q@2 R@2 S@8 ~ T@4 J@2 K@2 L@3 U@4 V@4 W@6 X@8
Y@8
>`.pickRestart({
A: "[g#3,b3,d#4]", // G#m
B: "[[c#4,e4]@3 [b3,d#4]@3 [f#3,a#3,c#4]@3 [g#3,b3,d#4]@13 [f#3,a#3,c#4]@4 [g#3,b3,d#4]@8 [c#4,e4]@3 [b3,d#4]@3, g#3@3 ~@14 g#3@3]/5", // C#m B F# G#m F# G#m C#m B
C: "[[f#3,a#3,c#4]@3 [g#3,b3,e4]@53]/7", D: "[a3,c#4]/3", E: "[[d#4,f#4] [g#3,e4]@4, b3@79 ~]/5", F: "[a3,c#4,e4]/3",
G: "[[b3,d#4,f#4]@3 [g#3,b3,e4]]/2", H: "[[d#4,f#4] [g#3,e4] [d#4,f#4]@2, b3]/2",
I: "[[a3,c#4,e4] [b3,d#4,f#4]@4 [g#3,b3,e4]]/3", J: "[g#3,c#4,e4]/2", K: "[f#3,c4,e4]/2",
L: "[[g#3,b3]@2 [a3,c#4] [b3,d#4,f#4]@3, e4 ~]/3", // G#m A B
M: "[[a3,c#4,e4] [b3,d#4,f#4]@2 [g#3,e4] [d#4,f#4] g#3 [a3,c#4]@2, ~@3 b3@3 ~@2, ~@5 e4@3]/4", // A B C#m D#m A
N: "[[g#3,b3] [a3,b3], d#4]/2", O: "[g#3,b3,e4]", P: "[[a3,c#4,e4] [b3,d#4,f#4]@3]/2", Q: "[g#3,b3,d#4]/2",
R: "[f#3,a3,c#4]/2", S: "[[g#3,b3]@3 [a3,c#4], e4]/8",
T: "[[d#4,f#4]@3 [g#3,e4] [d#4,f#4] [g#3,e4] [d#4,f#4]@2, b3]/4", // D#m C#m D#m C#m D#m
U: "[[a3,c#4,e4] [d#4,f#4]@2 [g#3,e4] [d#4,f#4] g#3 [a3,c#4]@2, ~ b3@5 ~@2, ~@5 e4@3]/4", // A D#m C#m D#m A
V: "[[b3,d#4]@16 [c#4,e4]@3 [b3,d#4]@3 [f#3,a#3,c#4]@3 [g#3,b3,e4]@7, g#3@11 ~@5]/4", // B C#m B F# E
W: "[[b3,d#4,f#4]@27 ~ [a#3,c#4,f#4]@16 [b3,d#4,f#4]@8 [c#4,f4]@8 [c#4,f4]@16 [b3,d#4,f#4]@8 [c#4,f4,g#4]@12, ~@13 g#4@6 ~@5]/6", // B F# B C# B C#
X: "[~ [a#3,f#4]@2 [f4,g#4]@2 [a#3,c#4,f#4]@2 [b3,d#4,f#4]@4 [a#3,c#4,f4]@4 [b3,c#4,f#4]@4 [a#3,c#4,f#4]@4 [b3,d#4,f#4]@2 [c#4,f4,g#4]@6 [b3,d#4,f#4], ~ c#4@4 ~@27]/8", // D#m Fm F# B A#m Bsus2 F# B …
Y: "[~@4 [c#4,f4,g#4]@16 [a#3,f#4]@8 [f4,g#4]@8 [a#3,f#4]@8 [b3,d#4,f#4]@16 [a#3,c#4,f4]@16 [b3,d#4,f#4]@16 ~ [a#3,c#4,f#4]@30 ~@5, ~@5 c#4@6 ~@21]/8", // C# D#m Fm D#m B A#m B F#
})).s("gm_string_ensemble_1").gain(0.2).pan(0.2)
// other · string ensemble 1
const string_ensemble_1_2 = note(`<
~@26 A B C ~@2 A B C D@2 E@2 F@3 G@3 H I@2 F@3 J@4 K@2 L@2 M N O@2 ~@5 P Q R S T@4 U V W X Y@2 Z AA@4 AB@7 AC@3 AD@6
AC@3 AE@3
>`.pickRestart({
A: "b3 c#4", B: "d#4 e4", C: "f#4", D: "[e4@3 c#4]/2", E: "c4/2", F: "[[g#3,b3]@2 [a3,c#4] [b3,d#4,f#4]@3, e4 ~]/3",
G: "[[a3,c#4,e4] [d#4,f#4]@2 [e4,g#4] [d#4,f#4] [e4,g#4], ~ b3@5]/3", H: "[a3,c#4,e4]", I: "[g#3 a3, [b3,d#4]]/2",
J: "[[a3,c#4,e4] [d#4,f#4]@2 [e4,g#4] [d#4,f#4] g#4 [a3,c#4]@2, ~ b3@5 ~@2, ~@5 e4@3]/4", K: "[g#3,b3,d#4]/2",
L: "[f#3,a3,c#4]/2", M: "[e3,g#3,b3]", N: "~@2 b3 c#4 e4 ~@3 b3 c#4 e4 ~ c#4 b3 g#3 f#3", O: "[e3@31 ~]/2",
P: "~@2 g#4 a4", Q: "b4 c#5", R: "d#5 e5", S: "f#5", T: "[g#5@5 a5 g#5 f#5]/2", U: "e5", V: "f#5@2 g#5 a5", W: "b5",
X: "e6@2 d#6 c#6", Y: "[b5@6 f#5 g#5]/2", Z: "a5", AA: "[g#5@22 f#5@3 e5@7]/4",
AB: "[f#5@7 f#5@4 g#5@2 a#5 b5 c#6@4 f#6@2 f6 d#6 c#6@2 a#5@2 g#5]/7", AC: "[~ a#5@2 b5@4 a#5@5]/3",
AD: "[g#5 f#5 f5 f#5@4 g#5@2 a#5 b5 c#6@4 f#6@2 f6 d#6 c#6@2 a#5@2 g#5]/6", AE: "[g#5@4 f#5@4 f5@5 f#5@30 ~@5]/3",
})).s("gm_string_ensemble_1").gain(0.25).pan(0.8)
// … 67 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.