0:00/0:00
// Lover for Life — Whitney Houston
// 100 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 118 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/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 · piano · "A.PIANO 1"
const piano = note(`<
A B C D E F G H E I J K L M N O P Q R S R T U V@3 W X@3 Y Z@5 AA AB AC AD AE AB AF AG J K AH AI N O P Q R S R T U V@3
W AJ@3 Y Z@5 AA AB AC AD AE AB AF AG AA AB AC AD AE AB AF AG R S R T U V@3 W AJ@3 Y AK@5 AL AM AN AO AP AQ AR AS AT AU
AV AW@2 ~
>`.pickRestart({
A: "~@6 f#4 g4", B: "f#4 g4 f#4 g4 a4@3 ~", C: "d4@2 c#4@2 d4@2 c#4@2 d4@2 f#4@5 ~", D: "f#4@6 g4@9 ~",
E: "f#4@3 g4@3 a4@2", F: "e4@3 f#4@2 e4@3", G: "d4 c#4 d4 c#4 d4 f#4@2 ~", H: "f#4@3 g4@4 ~", I: "e4@3 d4@4 ~",
J: "~ [a3,c#4,e4]!4 [f#3,a3,d4]@3", K: "[a3,c#4,e4]@2 [c#4,e4] [a3,d4,f#4]@5, ~@4 a3 ~@11",
L: "~@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [f#3,a3,d4]@5 ~", // A D
M: "[a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@3 ~ [c#4,e4]@2 [f#3,b3,d4]@6, ~ a3", // A C#m Bm
N: "~@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [f#3,a3,b3,d4]@5 ~", // A Bm7
O: "[a3,c#4,e4]@3 ~ [a3,c#4,e4]@2 [a3,d4,f#4]@10", // A D
P: "~@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4] ~ [f#3,a3,b3,d4]@6", // A Bm7
Q: "[a3,c#4,e4]@2 [d4,f#4]@2 [a3,c#4,e4]@2 [d4,f#4]@2 [a3,c#4,e4]@2 [d4,f#4] ~ [a3,d4,f#4,a4]@4", // A D A D A D
R: "[a3,b3,d4,f#4]@7 ~", S: "[b3,c#4,e4,g4]@3 ~ a#3 ~ [a#3,e4]@2, ~ [d4,f#4]",
T: "[a3,c4,e4,g4]@3 ~ d4@2 d4@2, ~ [a3,c4,f#4]", U: "[a3,b3,d4,f#4]@15 ~",
V: "[[b3,c#4,e4,g4]@6 [a#3,d4,f#4]@3 ~ [a#3,e4]@4 [a3,d4,f#4]@6 [a3,c#4,e4]@3 ~ [a3,c#4,e4]@2 [a3,d4,f#4]@4 [a3,d4,f#4]@5 ~ [a3,c#4,e4]@3 ~ [c#4,e4]@2 [d4,f#4]@6, ~@5 a3]/3", // C#m7b5 A#aug A#dim D A D A C#m …
W: "~@2 [g#3,d4,f#4]@2 [g#3,d4,f#4]@2 [g#3,d4,f#4]@2 [g#3,d4,f#4]@2 [g#3,d4,f#4]@2 ~@2 [g#3,d4,f#4] ~", // G#m7b5
X: "[[g3,d4,f#4]@2 [g3,d4,f#4]@2 [g3,d4,f#4]@2 [g3,d4,f#4]@4 [g3,d4,e4] ~@3 [f#3,a3,d4]@8 [d4,f#4,a4]@4 [d4,a4,d5,f#5]@4 [d#4,f#4,a4,b4,d#5]@8 [a4,c#5,e5]@4 [a4,b4,d#5,f#5]@4 [b4,d5]@2]/3", // Gmaj7 Em7 D B7 A B7 Bm
Y: "~@2 [g#3,d4,f#4]@2 [g#3,d4,f#4]@2 [g#3,d4,f#4]@2 [g#3,d4,f#4]@2 [g#3,d4,f#4]@2 [g#3,d4,f#4]@2 [g#3,d4,f#4] ~", // G#m7b5
Z: "[[g3,d4,f#4] [g3,d4]!2 [g3,d4,f#4]!2 [g3,b3,d4,e4]@2 [a3,d4,f#4]@4 [a#3,d4,e4,g4]@4 [a3,d4,f#4]@4 [a#3,d4,e4,g4]@4 [a3,d4,f#4]@4 [a#3,d4,e4,g4]@4 [a3,d4,f#4]@4 [c#4,e4,f#4,b4]@5, ~ f#4@2 ~@37]/5", // Gmaj7 G5 Gmaj7 Em7 D Em7b5 D Em7b5 …
AA: "[b3,d4]@10 [c#4,e4]@3 [d4,f#4]@3, f#4 ~", AB: "[b3,d4,f#4]@3 d4@3 d4@2, ~@3 [b3,g4]@5",
AC: "[b3,d4,f#4]@3 [b3,e4,g4]@5", AD: "[a3,c#4,e4]@3 [a3,d4,f#4]@2 [a3,c#4,e4]@3",
AE: "[a3,d4,f#4]@10 [c#4,e4]@3 [d4,f#4]@3, ~@5 a3@3", AF: "[b3,d4,f#4]@3 [b3,d4,g4]@5",
AG: "[a3,c#4,e4]@3 [a3,d4,f#4]@5", AH: "~ [a3,c#4,e4]!4 [f#3,a3,d4]@2 ~",
AI: "[a3,c#4,e4] ~@2 [a3,c#4,e4]@2 ~ [a3,d4,f#4]@10", // A D
AJ: "[[g3,d4,f#4]@2 [g3,d4,f#4]@2 [g3,d4,f#4]@2 [g3,d4,f#4]@4 [g3,d4,e4] ~@3 [f#3,a3,d4]@8 [d4,f#4,a4]@4 [d4,a4,d5,f#5]@4 [d#4,f#4,a4,b4,d#5]@8 [a4,c#5,e5]@4 [a4,b4,d#5,f#5]@4 [b4,d5]@2, ~@5 b3@2 ~]/3", // Gmaj7 Em7 D B7 A B7 Bm
AK: "[[g3,d4,f#4] [g3,d4]!2 [g3,d4,f#4]!2 [g3,b3,d4,e4]@2 [a3,d4,f#4]@4 [a#3,d4,e4,g4]@4 [a3,d4,f#4]@4 [a#3,d4,e4,g4]@4 [a3,d4,f#4]@4 [a#3,d4,e4,g4]@4 [a3,d4,f#4]@4 ~@5, ~ f#4@2 ~@37]/5", // Gmaj7 G5 Gmaj7 Em7 D Em7b5 D Em7b5 …
AL: "~@2 [a3,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4]@2 [f#3,b3,d4]@2 ~@4, ~ c#4 ~@6", // A5 A Bm
AM: "[a3,c#4,e4] ~ [c#4,e4] [b3,d4,f#4]@5, ~ a3@3", // A C#m Bm
AN: "~@2 [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4]@2 [f#3,b3]@2 ~@2 [f#3,b3] ~, ~@5 d4@2 ~", // A B5
AO: "[a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] [f#3,b3,d4]@2 ~", // A Bm
AP: "~@2 [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4]@2 [f#3,b3,d4]@2 ~@2 [f#3,b3] ~", // A Bm B5
AQ: "[a3,c#4,e4] ~ [a3,c#4,e4] [b3,d4,f#4]@4 ~", // A Bm
AR: "~@2 [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4]@2 [f#3,b3,d4] ~@5", // A Bm
AS: "[a3,c#4,e4] ~@3 [a3,e4] ~@3 [a3,c#4,e4]@2 ~@2 [c#4,e4]@2 [a3,b3,d4] ~, ~@4 c#4@2 ~@6 a3 ~@3", // A A5 A C#m Bm7
AT: "~@2 [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4]@2 [f#3,b3,d4] ~@3 f#3 ~", // A Bm
AU: "[a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@2 [b3,d4,f#4]@9 ~", // A Bm
AV: "~@2 [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4]@2 [f#3,b3,d4]@3 ~@3", // A Bm
AW: "[[c#4,e4,a4] ~ [d4,f#4] ~ [c#4,e4,a4] ~ [d4,f#4,a4] [d4,f#4,a4]@9, ~@4 a4 ~@27]/2", // A D A D
})).s("gm_piano").gain(0.38).pan(0.4)
// bass · fretless bass · "FRETLESS"
const bass = note(`<
~@2 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@2 AC AD AE@3 AF AG AH AI AJ AG AK AL I J K L M N O P Q R
S T U V W X Y Z AA AB@2 AC AD AE@3 AF AG AH AI AJ AG AK AL AF AG AH AI AJ AG AK AL Q R S T U V W X Y Z AA AB@2 AC AD
AM@2 AN@2 AO AP AQ AR AS AT AQ AU AS AV AW@3
>`.pickRestart({
A: "b1@2 b1 ~ b1 ~ b1 ~ b1@2 b1 ~@3 d2 f#2", B: "e1@2 e1@2 ~@2 e1 ~ e1@5 ~ e1 f#1",
C: "a1@2 a1@2 a1 ~ a1@2 a1 ~ a1 ~@3 a1 ~", D: "a1 ~ a1 ~ a1@2 d2@4 c#2@2 f#2@4",
E: "b1 ~ b1 ~ b1 ~ b1 ~ b1@2 b1@2 ~@2 d2 f#2", F: "e1 ~ e1@2 ~@2 e1 ~ e1@5 ~ e1 f#1",
G: "a1 ~ a1 ~ a1 ~ a1@2 a1 ~ a1 ~@3 a1 ~", H: "a1 ~ a1 ~ a1@2 d2@6 ~@4", I: "~@2 a1@2 a1 ~ a1 ~ a1@2 d2@2 ~@2 d2@2",
J: "a1@3 ~@3 b1@4 a1@2 b1@2 a1@2", K: "~@2 d2@2 d2 ~ d2 ~ d2@2 d2@2 ~@2 d2@2",
L: "a1@2 ~@2 a1@2 ~ a1 b1@2 a1@2 b1@2 d2@2", M: "~@2 d2@2 d2 ~ d2 ~ d2 ~ d2@2 ~@2 d2@2",
N: "a1@4 ~@2 b1@3 ~ b1 a1 b1@2 d2@2", O: "~@2 d2@2 d2 ~ d2@2 d2@2 d2@2 ~@2 d2@2",
P: "a1@2 ~@2 a1@3 ~ a1@2 b1@2 d2@3 ~", Q: "g1 ~ g1@2 ~@2 g1@2 g1@5 ~ g1 ~", R: "~ f#1 ~ f#1@3 ~ f#1",
S: "b1@2 b1 ~@3 b1@3 ~ b1@2 a1 b1 d2 b1", T: "d2@2 c2@2 d2@2 d1@3 ~ d1 e1 f#1 e1 f#1 d1",
U: "g1 ~ g1@2 ~@2 g1@2 g1 ~ g1@3 ~ g1@2", V: "f#1 ~ f#1@2 ~@2 f#1 ~ f#1@8", W: "b1 ~ b1@2 b2 ~ b1@2 b2 ~ b1@4 b2 ~",
X: "~@2 b1@2 b2 ~ b1@2 b2 ~ b2@2 b1 ~ b1@2", Y: "~@2 e1@2 e1@2 e1@2 e1@2 e1@3 ~ e1@2",
Z: "a1 ~ a1 ~ a1 ~ a1@4 b1@2 d2@2 d1 ~", AA: "d1 ~ d1@3 ~ d1@2 d2@2 c#2@2 c2@2 b1@2",
AB: "[~@2 b1@2 b2@2 b1@2 ~@2 b1 d2 e2 d2 e2@4 e1 ~ e1 ~ e1 ~ e1 ~ e1@3 ~ e1@2]/2",
AC: "a1 ~ a1 ~ a1 ~ a1 ~ a1 b1 d2 b1 d2@2 d1@2", AD: "~@2 d1 ~ d1@4 d2 ~ d2@4 d1@2",
AE: "[~@2 d1 ~ d1@4 d2 ~ d2@2 ~@2 d2@4 d1 ~ d1@4 d2 ~ d2@2 ~@2 d2@4 e2@2 f2@2 f#2@4 f#1@2 f#2@4]/3",
AF: "b1 ~ b1 ~ b1 ~ b1@3 ~ b1@2 f#1@2 b1@2", AG: "e1@5 ~ e1@5 ~ e1 ~ e1@2", AH: "a1 ~ a1 ~ a1 ~ a1@10",
AI: "d2@2 d2@2 ~@2 d2@3 ~ c#2 ~ c#2@4", AJ: "b1@2 b1 ~ b1 ~ b1@4 a1@2 b1 ~ b1@2", AK: "a1 ~ a1 ~ a1 ~ a1@8 a1@2",
AL: "a1 ~ a1 ~@3 d2@9 ~", AM: "[~@2 d1 ~ d1@4 d2 ~ d2@2 ~@2 d2@4 d1 ~ d1@4 d2 ~ d2@2 ~@2 d2@2]/2",
AN: "[~@2 d2@2 d2@2 ~ d2 a1@2 b1@2 d2 a1 d1@4 d2 ~ d2 ~ d2 ~ d2@2 d2@2 ~@2 e1 f#1]/2", AO: "a1 ~ a1 ~ b1 a1 b1 d2",
AP: "~@2 d2@2 d2 ~ d2@2 d2@2 d2@2 ~@2 f#1@2", AQ: "a1 f#1 a1 ~ b1 a1 b1 d2, ~@8 a1 ~@7",
AR: "~@2 d2@2 d2 ~ d2 ~ d2@2 d2@2 ~@2 e1 f#1", AS: "a1@2 ~@2 a1@3 ~ b1@2 a1@2 b1@2 d2@2",
AT: "~@2 d2@2 d2 ~ d2@2 d2 ~ d2@2 ~@2 f#1@2", AU: "~@2 d2@2 d2 ~ d2@2 d2@2 d2 ~@3 e1 f#1",
AV: "~@2 d2@2 d2 ~ d2@2 d2 ~ d2 ~@3 f#1@2", AW: "[a1@2 f#1@2 a1 ~@2 a1 b1@2 a1@2 b1@2 d1@20 ~@14]/3",
})).s("gm_fretless_bass").gain(0.44)
// other · pad halo · "HALO PAD"
const pad_halo = note("<A@2 ~@33 B C@3 D C@3 E ~@25 B C@3 D C@3 E ~@26 F@2 G@2 H@2 I@2 J@2 K@3 ~>".pickRestart({
A: "[~@3 a4, ~@3 f#4 f#4 f#4@3, ~@7 g4@2 g4@2 g4@2 ~@3]/2", B: "~ b3", C: "d4/3", D: "c#4@3 d4@2 e4@3",
E: "c#4@3 d4@5", F: "[a3@11 b3@5]/2", G: "[a3@13 ~@3]/2", H: "[~@2 f#3@2 a3@7 b3@5]/2", I: "[a3@27 ~@5]/2",
J: "[~@3 f#3 a3@7 b3@5]/2", K: "a3/3",
})).s("gm_pad_halo").gain(0.33)
// chords · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
~@10 A B ~@2 C D ~@3 E ~ F ~@4 G@7 ~ H I J@2 ~@2 K@2 ~@2 L M N@2 ~@2 O@2 ~ E ~ P ~@4 G@7 ~ H I Q@2 R S T@2 R U@2 ~@8 E
~ P ~@4 G@7 ~ H V W X@2 Y W X@2 Y ~@6
>`.pickRestart({
A: "~ a3 [a3,c#4]!3 [f#3,a3]@3", B: "[f#3,a3] [a3,c#4]@2 [f#3,b3]@4 ~", C: "~ [a3,c#4]!4 [f#3,a3] [f#3,b3]!2",
D: "[a3,d4]@3 b3@3 ~@2", E: "~@4 [f#4,b4]@2 [e4,a4]!2", F: "[d4,g4] [d4,f#4] [d4,g4] [b3,d4] [d4,f#4]@2 d4 b3",
G: "[~@4 g#3@12 g3@14 [f#3,a3]@7 ~@9 [c4,d#4,f#4]@8 [b3,d4,e4]@4 [b3,d4,f#4]@4 g#3@18 g3@14 [f#3,a3]@7 ~@11, ~@4 d4@33 ~@25 d4@39 ~@11, ~@2 b3@13 ~@16 b3@16 ~@9]/7", // F#m Cdim E7 Bm F#m
H: "~@7 d4", I: "f#4 a4 b4 d5 [b4,d5,e5]@4", J: "[d4 c#4 d4 b3 d4 f#3!2 g3@5 ~@4]/2", K: "[f#4!5 a4 f#4 b4@6 ~@3]/2",
L: "~@2 e4@3 e4 d4@2 e4@5 ~@3", M: "~@7 a3",
N: "[[c#4,e4,a4]@2 [c#4,e4,a4]@2 [c#4,e4,a4]@2 [c#4,e4,a4]@2 [c#4,e4,a4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@7 ~@11]/2", // A D
O: "[[c#4,e4,a4]@2 [c#4,e4,a4]@2 [c#4,e4,a4]@2 [c#4,e4,a4]@2 [c#4,e4,a4]@2 [c#4,e4,a4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@7 ~@11]/2", // A D
P: "~@3 f#4 [g4,b4]@2 [a4,b4,d5] [f#4,b4,d5]", Q: "[~ c#4 d4 b3 d4 e4 f#4 e4@2 d4@4 b3!3, ~@14 d4 ~@17]/2",
R: "b3@3 f#4@3 d4@2", S: "e4@2 f#4 e4@2 d4 c#4 b3", T: "[f#4!5 a4 f#4 b4@6 b3!3]/2",
U: "[e4@4 f#4@2 e4@4 d4@2 c#4@2 b3@5 ~@13]/2", V: "f#4 a4 b4 d5 e5@4",
W: "~@2 [c#4,e4,a4] [d4,f#4,b4] [c#4,e4,a4] [a3,d4,f#4]@3", // A Bm A D
X: "[[c#4,e4,a4] [b3,d4,f#4] [c#4,e4,a4]!3 [d4,f#4,b4] [c#4,e4,a4] [a3,d4,f#4]@2 [c#4,e4,a4]!4 [a3,d4,f#4]!2 [f#3,b3,d4]]/2", // A Bm A Bm A D A D …
Y: "[a3,d4,f#4] [b3,e4,g4] [a3,d4,f#4] [f#3,a3,d4]@4 ~", // D Em D
})).s("gm_epiano1").gain(0.32)
// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
A@2 B@3 C@4 D@2 ~@3 E F E G@2 H I J@2 K@3 L@5 M@3 N@2 O@3 P O@3 Q@2 ~@3 E F E G@2 H I J@2 K@3 R@8 N@2 O@3 P O@3 S ~@3
P O@3 T U H I J@2 K@3 R@8 N@2 ~@14
>`.pickRestart({
A: "[~@3 a4, ~@3 f#4@5, ~@7 g4@9]/2", B: "[[f#3,a3]@8 f#4@3 g4@5 f#4@3 g4@3 a4@2, d4, ~ b3@2]/3",
C: "[[c#4,e4]@3 [d4,f#4]@2 [c#4,e4]@3 f#3@8 f#4@3 g4@5 f#4@3 g4@3 a4@2, a3 b3, ~ d4@3]/4", // C#m D C#m
D: "[[a3,c#4,e4]@3 a3@9 ~@4, ~@3 f#3@5 ~@8, ~@3 d4@3 ~@10]/2", E: "~ [a3,c#4,e4]@4 [b3,d4]@3",
F: "[c#4,e4]@6 [d4,f#4]@9 ~, a3@15 ~", // C#m D
G: "[[c#4,e4] [d4,f#4] [c#4,e4] [d4,f#4] [c#4,e4] d4 a4@2 [d4,b4]@8, ~@5 f#4@11]/2", // C#m D C#m D C#m G
H: "[c#4,e4,g4]@2 [d4,f#4] [c#4,e4]", I: "[b3,d4]", J: "[[c4,e4]@8 ~@8 b3@13 ~@3, ~ [d4,f#4]@3]/2",
K: "[[c#4,e4,g4]@6 [d4,f#4]@4 [c#4,e4]@4 [d4,f#4]@6 [c#4,e4]@6 [d4,f#4]@10 [c#4,e4]@6 [d4,f#4]@5 ~]/3", // C#dim D C#m D C#m D C#m D
L: "[~@2 f#4@19 e4@8 ~ d4@16 d#4@8 e4@4 f#4@22]/5", M: "[f#4@5 e4@2 d4@15 a#3@2]/3", N: "[a3@8 g3@7 f#3@16 ~]/2",
O: "d4/3", P: "c#4@3 d4@2 e4@3", Q: "[c#4@3 a3@9 ~@4, ~@3 d4@4 ~@9]/2",
R: "[~@2 f#4@19 e4@8 ~ d4@16 d#4@8 e4@4 f#4@32 e4@4 d4@30 a#3@4]/8", S: "c#4@3 d4@5", T: "c#4@3 [a3,d4]@5", U: "d4",
})).s("gm_string_ensemble_2").gain(0.33)
// other · vibraphone
const vibraphone = note("<~@78 A@2 B@2 C D E F ~@21 G@2 ~@2 H@3 ~@4>".pickRestart({
A: "[~@4 a4 b4 d5@3 ~@7]/2", B: "[~@9 a5 b5@2 a5 ~ a5@12 ~@6]/2", C: "~@2 a4 e5 f#5 g5 f#5@4 c#5@3 d5 e5@2",
D: "a4@7 ~", E: "~@2 e5@2 d5@2 a4@4 b4@2 a4@2 [a5,a#5] ~, ~@7 b5", F: "a5 ~", G: "[~@8 f#5@2 g5@2 a5 ~ a5@10 ~@8]/2",
H: "[~@3 d6 c#6 a5 f#5 b5@2 a5@8 ~@7]/3",
})).s("gm_vibraphone").gain(0.31).pan(0.3)
// chords · epiano1 · "E.PIANO 1"
const epiano1_2 = note(`<
A@2 B C D E@2 F D G H I J K L M J N O P@2 Q@2 R@3 S T@4 U@3 ~@2 V W X Y Z AA X AB H I J AC L M J N O P@2 Q@2 R@3 S T@4
AD@3 ~@2 V W X Y Z AA X AB V W X Y Z AA X AB O P@2 Q@2 R@3 S T@4 AD@3 ~@2 AE AF AG AH L AI AJ AK@2 M AL AM@2 ~
>`.pickRestart({
A: "[~@3 a4, ~@3 f#4 f#4 f#4@3, ~@7 g4@2 g4@2 g4@5]/2", B: "d4@2 c#4@2 d4@2 c#4@2 ~@2 f#4@5 ~, [f#3,a3], ~@8 d4@7 ~",
C: "f#4@3 g4@5, [b3,d4]@7 ~", D: "f#4@3 g4@3 a4@2, [b3,d4]",
E: "[[c#4,e4]@6 [d4,f#4]@4 [c#4,e4]@6 d4@2 c#4@2 d4@2 c#4@2 ~@2 f#4@5 ~, a3, ~ f#3, ~@24 d4@7 ~]/2", // C#m D C#m
F: "f#4@6 g4@9 ~, [b3,d4]@15 ~", G: "[c#4,e4]@3 [f#3,d4]@4 ~, a3@7 ~",
H: "~@2 [c#4,e4]@2 [c#4,e4]@2 e4 ~ [c#4,e4]@2 [a3,d4]@3 ~@3", I: "[c#4,e4]@2 ~@2 [c#4,e4]@2 [d4,f#4]@9 ~",
J: "~@2 e4@2 [c#4,e4] ~ [c#4,e4] ~ [c#4,e4]@2 [a3,d4]@5 ~, ~@2 c#4 ~@13", // C#m D5
K: "[c#4,e4] ~ [c#4,e4] ~ [c#4,e4] [b3,d4]@3", // C#m Bm
L: "~@2 e4@2 [c#4,e4] ~ [c#4,e4] ~ [c#4,e4]@2 [a3,d4]@3 ~@3, ~@2 c#4 ~@13", M: "[c#4,e4] ~ [c#4,e4] [d4,f#4]@4 ~",
N: "[c#4,e4]@2 [d4,f#4]@2 [c#4,e4]@2 [d4,f#4]@2 [c#4,e4]@2 d4 ~ a4@4, ~@5 f#4@2 ~", O: "[d4,f#4]@5 b4 d5 f#5",
P: "[g5@4 f#5@2 e5 d5@6 b4 d5 f#5]/2", Q: "[g5@8 f#5@4 d5@2 b4@11 ~ b4@2 d5@2 f#5@2]/2",
R: "[e5@6 d5@4 e5@4 [d5,f#5]@6 [c#5,e5]@2 ~@2 [c#5,e5]@2 [d5,f#5]@3 ~ [d5,f#5]@6 [c#5,e5]@2 ~@2 [c#5,e5]@2 [d5,f#5]@6]/3", // D C#m D C#m D
S: "~@2 [d5,f#5]@2 f#5@2 f#5@2 [d5,f#5]@2 [d5,f#5] ~@5, ~@4 d5 ~ d5 ~@9", // D
T: "[f#5@2 [d5,f#5] ~ f#5 ~ [b4,f#5]@2 ~@2 [d5,e5]@2 ~@2 d5@8 a4@4 [d5,f#5]@4 [b4,d#5]@8 [c#5,e5]@4 [d#5,f#5]@4 d5@3 ~ [d5,f#5] ~ [d5,f#5] ~ [d5,f#5] ~ [d5,f#5] ~ f#5@2 d5 ~ [d5,f#5] ~, d5 ~@3 d5@4 ~@2 b4 ~@3 f#4 ~@31 b4@6 ~@6 d5 ~@5]/4", // D B5 Dsus2 D B C#m D#m D
U: "[f#5 ~ [d5,f#5] ~ [d5,f#5] ~ [d5,f#5] ~ f#5@2 [d5,e5]@3 ~ d5@20 ~@14, ~@8 d5 ~@39]/3", // D Dsus2
V: "[d4,f#4]@10 [c#4,e4]@3 [d4,f#4]@2 ~", W: "f#4@3 g4@3 b4@2, d4@13 ~@3", X: "[d4,f#4]@3 [e4,g4]@3 a4@2",
Y: "[c#4,e4]@3 [d4,f#4]@2 [c#4,e4]@3", Z: "f#4@10 e4@3 f#4@2 ~, d4@4 ~ c#4@3", AA: "f#4@3 g4@3 b4@2, d4@3 ~",
AB: "[c#4,e4]@3 [d4,f#4]@5", AC: "[c#4,e4] ~@2 [c#4,e4] ~@2 [d4,f#4]@9 ~",
AD: "[[d5,f#5] ~ [d5,f#5] ~ [d5,f#5] ~ [d5,f#5] ~ f#5@2 [d5,e5]@3 ~ d5@20 ~@14, ~@8 d5 ~@39]/3", // D Dsus2
AE: "~@2 [c#4,e4]@2 c#4@2 e4@2 [c#4,e4]@2 [a3,d4]@3 ~@3, ~@4 e4 ~@11", // C#m D5
AF: "[c#4,e4]@2 ~@2 e4@2 [d4,f#4]@9 ~, ~@4 c#4 ~@11", // C#m D
AG: "~@2 e4@2 [c#4,e4] ~ [c#4,e4] ~ [c#4,e4]@2 [a3,d4]@2 ~@4, ~@2 c#4 ~@13", // C#m D5
AH: "[c#4,e4]@2 ~@2 c#4@2 ~@2 [c#4,e4]@2 [a3,d4]@5 ~, ~@4 e4 ~@11", // C#m D5
AI: "[c#4,e4]@3 ~ e4@2 [d4,f#4]@9 ~, ~@4 c#4 ~@11", AJ: "~@2 [c#4,e4]@2 [c#4,e4] ~ [c#4,e4] ~ [c#4,e4]@2 [a3,d4]@5 ~",
AK: "[[c#4,e4]@2 ~@2 [c#4,e4]@2 ~@2 [c#4,e4]@2 ~@2 [c#4,e4]@2 [a3,d4]@4 [c#4,e4]@2 [c#4,e4] ~ [c#4,e4] ~ [c#4,e4]@2 [a3,d4]@3 ~@3]/2", // C#m D5 C#m D5
AL: "~@2 [c#4,e4]@2 [c#4,e4] ~ e4 ~ [c#4,e4]@2 [a3,d4]@2 ~@2 [a3,d4] ~", // C#m D5
AM: "[[c#4,e4] ~ [d4,a4] ~ [c#4,e4,a4] ~ [d4,f#4] [d4,f#4,a4]@9, a4 ~@3 f#4 ~@7 a4 ~@19]/2", // C#m D5 A D
})).s("gm_epiano1").gain(0.33).pan(0.4)
// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
~@2 A B C D@2 E A ~@2 F G H ~ I J ~ K L M N O P Q R S T@2 ~ U V@2 ~@4 W ~@3 X ~@3 F G Y ~ I J ~ K L M N O P Q R S T@2
~ U Z@2 ~@4 W ~@3 X ~@3 W ~@3 AA AB ~ K L M N O P Q R S T@2 ~ U Z@2 ~@4 F G ~@2 F G AC ~ F G ~@3
>`.pickRestart({
A: "~@12 d7 ~@3", B: "~@2 b4 ~@3 a4@6 f#4 ~@3", C: "f#4@2 f#4 ~@9 d7 ~@3", D: "[~@10 b3 ~@3 b3@7 ~ b3 ~@5 d7 ~@3]/2",
E: "~@2 b3 ~@3 a3@4 f#3 ~@5", F: "~@10 [a3,c#4,e4] ~@5", G: "[a3,c#4,e4] ~@15", H: "~@10 b4@2 a4 ~@3",
I: "[a3,c#4,e4] ~@5 [d4,f#4]@4 ~@6, ~@3 a3 ~@4", // A D
J: "~@2 [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4]@2 [b3,d4] ~@5", // A Bm
K: "~@2 [d4,f#4] ~ [b3,d4,f#4]@2 [b3,d4,f#4] ~@9", L: "~@2 [b3,g4] ~ [b3,g4]@2 [a#3,e4,f#4] ~@9",
M: "~@2 [b3,d4,f#4] ~ [b3,d4,f#4]@2 [b3,d4,f#4] ~@9", N: "~@6 [d4,g4] ~@9",
O: "~@2 [a3,d4,f#4] ~ [a3,d4,f#4]@2 [a3,d4,f#4] ~@9", // D
P: "[b3,e4,g4] ~ [b3,e4,g4] ~ [e4,g4]@2 [a#3,f#4] ~@7 [d4,f#4] ~, ~@4 b3 ~@11", // Em D#m D
Q: "~@4 [c#4,e4] ~@3 [c#4,e4]@2 [d4,f#4] ~@3 [d4,f#4] ~", R: "~@4 [c#4,e4] ~@3 [c#4,e4]@2 [d4,f#4] ~@5",
S: "~@2 [d4,f#4] ~ [d4,f#4] ~ [d4,f#4] ~ [d4,f#4]@2 [d4,f#4] ~@5", // D
T: "[[d4,f#4]@2 [d4,f#4] ~ [d4,f#4] ~ [d4,f#4] ~@3 [b3,e4] ~@3 d4@11 ~@7, ~@14 a3@5 ~@13]/2", // D E5
U: "~@2 f#4 ~ [d4,f#4] ~ [d4,f#4] ~ [d4,f#4] ~ [d4,f#4] ~@5", // D
V: "[[d4,f#4] ~ [d4,f#4] ~ [d4,f#4] ~ [d4,f#4] ~ [d4,f#4]@2 e4 ~@3 d4@8 ~@10, ~@7 a3 ~@8]/2", W: "~@6 b3 ~@9",
X: "~@4 f#4@2 g4 ~ b4@2 a4 ~ f#4 ~ e4 ~", Y: "[a3,c#4,e4] ~@9 b4@2 a4 ~@3",
Z: "[f#4 ~ [d4,f#4] ~ [d4,f#4] ~ [d4,f#4] ~ [d4,f#4]@2 e4 ~@3 d4@8 ~@10, ~@14 a3 ~@17]/2", // D
AA: "~@8 [a4,b4] ~ a4 ~ g4@2 f#4@2", AB: "e4@2 d4 ~@13", AC: "~@12 b4@2 a4 ~",
})).s("gm_electric_guitar_muted").gain(0.38).pan(0.7)
// other · clavinet
const clavinet = note("<~@3 A B C@2 D ~@3 E F G ~ H ~@29 E F G ~ H ~@68>".pickRestart({
A: "~@2 b4 ~@3 a4@6 f#4 ~@3", B: "f#4@2 f#4 ~@13", C: "[~@10 b3 ~@3 b3@7 ~ b3 ~@9]/2", D: "~@2 b3 ~@3 a3@4 f#3 ~@5",
E: "~@10 e4 ~@5", F: "e4 ~@15", G: "~@10 b4@2 a4 ~@3", H: "e4 ~@5 f#4 ~@9",
})).s("gm_clavinet").gain(0.33).pan(0.9)
// other · trombone
const trombone = note("<~@77 A B@2 C D@2 E F G H ~@31>".pickRestart({
// … 62 more lines
More by Whitney Houston
Greatest Love of AllA major · 64 bpmSaving All My Love For YouA major · 100 bpm1 Moment in TimeC major · 78 bpmDidn't We Almost Have It AllC major · 69 bpmI Wanna Dance With Somebody (Who Loves Me)D♭ major · 118 bpmI Will Always Love YouA major · 67 bpmI Have NothingG major · 51 bpmAll the Man That I NeedF minor · 76 bpm
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.