0:00/0:00
// All the Man That I Need — Whitney Houston
// 76 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 2 "A.PIANO 1" named as a piano, played on piano (its fretless bass patch is not one)
// note: duplicate parts dropped: ch 11 "FANTASIA" pad new age (copy of ch 8 "TINKLEBELL" tinkle bell)
// note: Full arrangement: all 73 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(76/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 · piano · "A.PIANO 1"
const bass = note(`<
~@3 A B C D E F G H I J K L M N O P Q R S T U V W E F G H I J K L M N O P Q R S T U V X Y Z AA AB AC AD AE AF AG AH AI
AJ AK AL AM AN AK@2 AO AP AK AQ AR AS AT AU AV AW
>`.pickRestart({
A: "f1@12 ~@2 f1 ~", B: "db2@7 ~ c2@6 ~ c2", C: "bb1@13 ~@2 bb1", D: "eb2@13 ~ eb1 ~", E: "bb1@5 ~ bb1@2 ~@7 bb1",
F: "f1@4 ~@2 f1@5 ~@3 f2@2", G: "eb2@4 ~@2 eb2@6 ~@3 eb2", H: "db2@4 ~@2 db2@6 ~@2 db2 c2",
I: "bb1@4 ~@2 bb1@5 ~@4 bb1", J: "f1@4 ~@2 f1@6 ~@3 f1", K: "eb1@2 ~ eb2@3 ~@2", L: "db2@4 ~@2 db2@6 ~@3 db2",
M: "c2@2 ~ c2@4 ~", N: "c2 ~@3 c2@8 ~@2 c2@2", O: "f1@2 ~@4 f1@5 ~ f2@2 f1 ~", P: "f1@4 ~@2 f1@5 ~ f2@2 f1 ~",
Q: "eb1@5 ~ eb1@3 ~ eb1@2 eb2@2 eb1 ~", R: "ab1@4 ~@2 ab1@3 ~ ab1 ~ g1@3 ~", S: "f1@3 ~@3 f1@3 ~ f1@2 f2@2 f1 ~",
T: "f1@4 ~@2 f1@3 ~ f1 ~ f2@2 f1 ~", U: "eb1@4 ~@2 eb1@3 ~ eb1@2 eb2@2 eb1 ~", V: "f1@4 ~@2 f1@7 ~ f2@2",
W: "db2@4 ~@2 db2@6 c2@3 ~", X: "f1@4 g1@4 ab1@4 c2@3 ~", Y: "bb1@4 ~@2 bb1@5 ~ bb1 ~@3",
Z: "f1@3 ~@3 f1@3 ~@3 f2 ~ f1 ~", AA: "eb2@5 ~ eb1@5 ~ eb2 ~ eb2 eb1", AB: "db2@5 ~ db2@4 db1@2 db2 ~ db2 c2",
AC: "bb1@6 bb2@4 bb1 ~ bb2 ~ bb1 ~", AD: "f1@2 ~ f1 f2@2 f1@2 ~@2 f1 ~ f2@2 f1@2",
AE: "eb1@2 ~ eb1 eb2@2 eb1@3 ~ eb1 ~ eb2@2 eb1 ~", AF: "eb2@6 ~@2 db2@2 ~ a1@2 ~ ab1@2", AG: "gb1@4 ~@2 gb1@7 ~@3",
AH: "gb1@2 ~ gb1 gb2 ~ gb1@4 ~ gb1 gb2 db2 gb1 ~", AI: "e1@2 ~ e1 e2 ~ e1@2 ~ e1 e2 ~ e2 ~ e1 ~",
AJ: "a1@5 ~ a1 ~ ab1@5 ~ ab1 ~", AK: "gb1@2 ~ gb1 gb2 ~ gb1@3 ~ gb1 ~ gb2@2 gb1 ~",
AL: "gb1@2 ~ gb1 gb2 ~ gb1@3 ~ gb1 ~ gb2 gb1 ~ gb1", AM: "e1@2 ~ e1 e2 ~ e1@6 e2@2 e1 ab1",
AN: "a1@5 ~ a1 b1 db2@5 ~ db2 ~", AO: "e1@2 ~ e1 e2 ~ e1@3 ~ e1@2 e2@2 e1@2", AP: "a1@3 ~ a1@3 ~ ab1@3 ~ db2@3 ~",
AQ: "gb1@2 ~ gb1 gb2 ~ gb1@4 gb2 gb1 ~ gb1 gb2 ~", AR: "e1@2 ~ e1 e2 ~ e1@2 ~ e1 e2 ~ e1@2 e2 ~",
AS: "a1@2 ~ a1 a2 ~ ab1@2 ~ ab1 ab2 ab1 db2!4", AT: "gb1@2 ~ gb1 gb2 ~ gb1@2 ~@2 gb1@2 gb2@2 gb1 ~",
AU: "gb1@2 ~ gb1 gb2 ~ gb1@2 ~@2 gb1@2 gb2 b1 gb1 ~", AV: "e1@4 e2@3 ~, ~@8 eb2 ~@7", AW: "a1@13 ~@3",
})).s("gm_piano").gain(0.45)
// chords · piano · "A.PIANO 1"
const piano = note(`<
~@3 A B C D E@5 F G H I J K@2 L@5 M N O@3 P@2 Q R S T U V W X Y@2 Z AA AB AC AD AE AF AG@2 AH AI AJ AK AL AM AN@3 AO
AP AQ@2 AR AS@3 AT AU AV AW AX AY
>`.pickRestart({
A: "[f2,ab3,c4,f4]@15 ~", B: "[db3,ab3,c4,f4] [c3,g3,bb3,eb4]", C: "[bb2,f3,ab3,db4]@7 ~",
D: "[db4,f4,ab4]@4 [eb4,g4,bb4]@4 [f4,ab4,c5]@5 ~ bb4 ab4, eb3@15 ~", // Db Eb Fm
E: "[bb2@5 ~@7 ab3@2 eb4@2 db4@2 c4@4 ab4@4 ~@2 f4@2 ~@15 eb4 g4 ~ [eb4,g4]@4 ab4@2 [ab3,db4,f4]@4 ~@2 eb4 ~ db4 c4 bb2@5 ~@7 db4@2 eb4@2, f4@12 ~@3 ab4@2 g4@5 ~@10 db4@5 ~@3, db4@13 ~@3 ab3@6 ~@4 c4@4 ~@2 [bb3,eb4]@5 ~ [bb3,eb4]@6 bb3@8 ~@9 f3@12 ~ f3@5 ~, ~@6 bb2@10 f3@16 eb3@7 ~@3 eb3@5 ~ db3@8 ~@2 db3@5 ~ ab3@14 ~@2, ~@7 bb2]/5", // Eb Db Eb5
F: "[f3,db4] ~@5 f4 ab4, f2@3 f3@5, ~@2 c4@7 ~ c4@5 ~, ~@3 ab3@4 ~", // Db
G: "[eb3,bb3,eb4,ab4]@4 ~@2 [eb3,bb3,eb4]@8 g4 ~, ~@4 g4@9 ~@3", H: "[db3,bb3,eb4,g4]@4 ab4@2 [db3,db4,f4]@8 f4 ~",
I: "[c3,bb3,d4,f4]@2 g4 [c3,g3,c4,e4]@4 ~", J: "[bb3,d4,f4]@2 ~@2 [c4,e4,g4] ~@11, c2 ~@3, gb4 ~@15",
K: "[[c4,f4,ab4] ~@5 [c4,f4]@4 f3@2 [c4,f4]@2 ~@2 [d4,f4,bb4] ~@5 [d4,f4,bb4]@4 f3@2 [d4,f4,bb4]@3 f3, f3@9 ~@5 f3@11 ~@7, ~@6 ab4@9 ~@17]/2", // Fm F5 Bb
L: "[[db4,f4,bb4]@5 ~ [db4,f4]@4 eb3@2 [db4,f4]@2 eb3@2 [ab3,c4,eb4]@4 [c4,eb4]@2 ab3@2 [c4,eb4]@2 ab3 ~ [g4,bb4] ~@5 c4@2 f4 ~ f2@4 ~@3 f4 ab4@2 [d4,f4,bb4]@5 ~@8 f4 ~@2 [eb3,db4,f4]@5 ~ [eb3,db4,f4,ab4,bb4]@10, eb3@8 ~@20 g3@2 f4@4 ~@4 [c4,f4,ab4]@6 c4@3 ~@7 [d4,f4,bb4]@6 d4@2 ~@18, ~@6 ab4@13 ~ ab4@7 ~@3 [ab4,c5]@6 ~@26 bb4@8 ~@10, ~@32 f3@6 ~@4 f2@14 ~@2 f2@5 ~@17]/5", // Bbm Db Ab Cm Gm Bb Db Bbm7 …
M: "[c4,f4]@5 ~ c4@4 f3@2 c4@2 f3 eb3, ab4@15 ~, f3@9 ~@7, ~@3 f4@4 ~, ~@3 f2@3 ~@2", // F5
N: "[bb3,g4]@6 [ab3,db4]@6 ~ ab3 db4 c4, db3@4 ~@2 eb4 ~, eb4@4 ~@2 f4@9 ~", // Eb Db5
O: "[~@13 ab3 db4 ~ db4@2 ~@11 f4 g4 ~@3 g4@2 ~@9 eb4 f4 g4, db4@12 ~@3 f4@12 ~@11 [eb4,g4]@6 ~@4, ~@4 f3@4 ~@4 f3@3 ~ f3@8 ~@2 f3@6 eb3@8 ~@2 eb3@5 ~, ~@6 bb2@9 ~@3 c4@9 ~ c4@3 ~ [bb3,eb4]@4 bb3@7 ~ bb3@3 ~, ~@22 ab4@6 ~@3 ab4@3 ~@14]/3", // Eb Eb5
P: "[[bb3,eb4,g4]@4 ab4@2 ab3@4 ~@2 eb4 ~ db4 c4 ab3@5 ~ [f3,bb3]@4 bb2@2 [f3,ab3]@2 bb2@2, db3@8 ~@2 db3@5 ~ db4@15 ~, ~@6 [db4,f4]@6 ~ f3@8 ~ ab3 ~@9, ~@16 bb2@9 ~@7]/2", // Eb Bb5 Fm Db
Q: "[ab3,db4]@2 ~@4 f4 ab4, f3@3 ab3@4 ~, ~@2 c4@2 ~ c4@2 ~", R: "[bb3,eb4,ab4]@4 ~@2 [bb3,eb4,g4]@8 g4 ~, eb3 ~",
S: "[bb3,eb4,g4]@3 ab4@3 [ab3,db4,f4]@6 ~ ab3 db4 f4, ~@3 f4 ~@8 db3@3 ~", // Eb Db
T: "[bb3,f4]@3 g4 ~@2 [g3,c4,e4]@4 ~@3 g3 c4 g3, c3@8 ~@2 c3@5 ~, ~@12 e4@3 ~", // Bb5 C
U: "[c3,d4,f4] ~@3 [c3,c4,e4,g4]@7 ~@5", V: "[c4,f4,ab4] ~@5 [c4,f4]@5 ~ [c4,f4]@2 ~ f3, f3@3 ~@3 [f2,ab4]@8 f2@2",
W: "[d4,f4,bb4] ~@5 [f2,d4,f4,bb4]@7 f3 [d4,f4] f3", // Bb Dm
X: "[db4,f4,bb4]@4 ~@2 [db4,f4,ab4]@4 eb3@2 [db4,f4]@2 ~ eb3, eb3@8 ~@4 ab4@3 ~", // Bbm Db
Y: "[[c4,eb4,ab4]@3 ~ [ab2,c4,eb4]@3 ~ [c4,eb4]@2 ab2 ~ [g4,bb4] ~@3 f3 ~@5 [c4,f4]@4 f3 ~ [c4,f4]@2 f3!2, ab2 ~@3 ab4@7 ~@7 f2@10 ~@4, ~@7 ab3@4 ~ g3@2 [c4,f4,ab4]@6 f3@5 ~@7, ~@22 ab4@9 ~]/2", // Ab Cm Gm F5 Fm
Z: "[f3,d4,f4,bb4]@4 ~@2 [d4,f4]@6 ~ d4 f3!2, ~@6 bb4@9 ~, ~@6 f3@4 ~@3 f4@2 ~", // Bb Dm
AA: "[f4,bb4]@6 [eb3,db4,f4]@7 ~ eb3!2, [eb3,db4]@2 ~ ab4@5, ~@13 [db4,f4]@2 ~", // Bb5 Db Eb7 Db
AB: "[f3,c4,f4]@4 [c4,f4]@6 ~ c4 ab4 g4 f4 c4, ab4@5 f3@3", // F5
AC: "[f2,f4]@4 [g2,g4]@4 [ab2,ab4]@4 [eb4,ab4,c5]@3 f3, ~@12 f3 ~@3", // F G Ab
AD: "[bb2,db4,f4,ab4]@5 ~ [f4,ab4]@8 db4 f4, ~@3 db4@3 ~@2", // Bbm7 Fm
AE: "[db4,f4,ab4]@3 c4 ~@2 c4@4 ~@3 f4 g4 ab4, f3@9 ~ f3@6, ~@3 [f4,ab4]@3 c4 ~", // Db Fm
AF: "[bb3,eb4,ab4]@2 g4 ~ bb3@6 ~@2 bb3@2 eb4 g4, eb3@4 [eb4,g4]@9 ~@3, ~@10 eb3@5 ~", // Ebsus4 Eb
AG: "[[bb3,eb4,g4]@4 [f4,ab4] ~ ab3@4 ~@2 eb4 ~ db4 c4 [ab3,db4]@4 ~@2 [f3,ab3,db4]@9 bb2, db3@8 ~@2 db3@5 ~ bb2@9 ~@7, ~@6 [db4,f4]@6 ~ f3@7 ~@12]/2", // Eb Fm Db5 Db
AH: "ab3 ~ [ab3,c4]@2 ~@2 [c4,f4]@4 f3@2 [c4,f4]@2 f3@2, f2@3 ~@5, f3@2 ~ ab4@4 ~", // Ab F5
AI: "[bb3,eb4,ab4]@4 ~@2 [bb3,eb4,g4]@9 ~, eb3@9 ~@7", // Ebsus4 Eb
AJ: "[eb3,bb3,eb4,ab4]@3 ~@5 [db3,a3,db4]@2 ~ [a2,gb4,a4] ~ [ab2,gb4]@2 ~, ~@8 gb4 ~@4 [db4,b4] ~@2", // Ebsus4 Gbm D Ab7 Db7
AK: "[db4,gb4,a4,db5]@2 ~@4 [gb3,db4,gb4]@6 [db4,gb4]@2 gb3!2, gb2@5 ~ a4@9 ~", // Gbm Gb5
AL: "[eb4,gb4,b4]@2 ~@4 [eb4,gb4]@4 ~@2 [eb4,gb4]@2 gb3!2, gb3@2 ~ [gb3,b4]@4 ~, ~@6 bb4 ~@9", // B Ebm B5
AM: "[e3,d4,gb4,b4]@4 d4 ~ [d4,gb4,a4]@4 e3@2 [d4,gb4,a4]@3 e3, ~@3 e3 ~@4", // Bm D
AN: "[[db4,e4,a4]@3 ~ [db4,e4]@3 ~ [db4,e4]@2 ~ a3 [e4,ab4,b4] ~@3 gb3@4 ~@2 [gb4,a4]@4 ~@2 db4 gb4 a4 ~ [eb4,gb4]@4 gb3 ~ [eb4,gb4]@4 gb3@2 [eb4,gb4]@2 ~ gb3, a2@10 ~@2 ab2@2 gb4@5 ~@3 gb3@2 ~@2 gb3@5 ~ gb3 ~@15, ~@4 a4@6 ~@4 [a4,db5]@7 ~ db5@7 ~@2 db5@5 ~@2 b4@8 ~@2]/3", // A Dbm E Gbm Ebm A
AO: "[d4,gb4,b4]@4 ~@2 d4@4 e3@2 d4@2 ~ a3, e3@3 [gb4,a4]@4 e3", // Bm Gbm
AP: "[a3,db4,e4]@3 a3 [db4,e4]@3 a3 gb4 ~ gb4 ~ a4@2 b4@2, a4 ~", // A Dbm
AQ: "[gb3@4 a4@2 gb3@6 [gb4,a4,db5]@3 ~@3 gb3 ~ gb3@2 ~@4 gb2 gb2@3 [eb4,gb4,b4] gb2, ~@4 gb4 ~@10 gb3@2 ~@15, ~@16 [eb4,gb4,b4]@4 ~@2 [eb4,gb4,b4]@7 ~@3]/2", // Gbm B
AR: "[e2,gb4,b4]@4 d4 ~ [d4,gb4,a4]@4 e2@2 [d4,gb4,a4]@2 e2!2, d4@3 ~@13", // Esus2 D
AS: "[[db4,e4,a4]@3 ~ [db4,e4]@2 a2 ~ [db4,e4]@2 a2@2 [ab2,ab4,b4] ~@3 gb2@6 [db4,gb4,a4]@4 ~@2 [a3,db4,gb4]@3 ~ [b3,eb4,gb4]@4 ~@2 [b3,eb4]@5 ~ [b3,eb4]@2 gb2!2, a2@4 a4@6 ~@4 [gb4,a4,db5]@7 ~@17 gb4@9 ~, ~@7 a2@2 ~@17 gb2@4 ~ gb2@13 ~@4]/3", // A Dbm Abm Gbm B Gbm
AT: "[d4,gb4,b4]@4 ~@2 [d4,gb4]@5 ~ [d4,gb4]@2 e2@2, e2@9 ~@7, ~@3 a4@4 ~, ~@6 b4 ~@9", // Bm D
AU: "[db4,e4]@3 ~ [db4,e4]@2 ~ a2 gb4@2 gb4 ~ a4 ~ b4@2, a4@7 ~@9, a2 ~@3", // Dbm
AV: "gb2 ~@3 [db4,gb4,a4] ~ [gb4,a4]@4 [db4,gb4,a4]@3 ~ [db4,gb4,a4] ~, ~@2 gb2@7 ~ gb2@6, ~@3 db5@4 ~", // Gbm
AW: "[eb4,gb4,b4]@2 ~ [eb4,gb4]@3 [eb4,gb4] gb2, ~ gb2@2 ~, ~@3 b4@4 ~", // B Ebm
AX: "[d4,gb4,b4]@5 ~ [d4,gb4,a4]@4 e2@2 [d4,gb4,a4]@2 e2@2, e2@3 ~@7 f2 ~@5", AY: "[a2,db4,e4,a4]@13 ~@3",
})).s("gm_piano").gain(0.45).pan(0.6)
// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
A@3 B@2 C D E@2 ~ F ~ G H I@2 J K@5 L@3 M N@2 O P@6 Q R S@4 T@2 U V W@2 X Y Z@3 AA AB AC AD AE@2 AF AG AH AI AF AJ
AK@2 AF AL AM@2 AF AN@2
>`.pickRestart({
A: "[db4@23 ~]/3", B: "[[c4,f4]@10 g4@2 ~@2 f4@3 ~@7 [eb4,g4]@8, ab3@3 ab4@3 ~@2]/2", C: "db4@15 ~",
D: "f4@4 [g4,bb4]@4 [f4,ab4,c5]@7 ab4", E: "[db4@9 ~@7, f4 ~@3]/2", F: "eb4 f4@3", G: "~ c4@7",
H: "ab3 g3@7, eb4@15 ~", I: "[[bb3,eb4,g4]@6 db4@9 ~ [bb3,d4]@5 ~ [g3,c4,e4]@8 ~@2, ~@3 f4@8 ~@5]/2",
J: "[d4,f4] ~@3 [c4,e4,g4]@9 ~@3", // Dm C
K: "[[ab3,c4]@16 [bb3,d4]@16 [db4,bb4]@6 [db4,f4]@10 [c4,eb4]@7 ~ [c4,eb4,f4]@2 ab4@2 bb4@2 [f4,ab4,c5]@8 [c4,f4,ab4]@10, f4@37 ~ ab4@18 ~@4 g4 ~@19]/5", // Ab Bb Gb Db Cm F7 Fm
L: "[[bb3,d4,f4]@6 d4@9 ~ db4@16 [c4,ab4]@16, ~ f4@7, ~@3 bb4@13 ~@8]/3", M: "[bb3,eb4,g4]@6 ~@9 c4",
N: "[db4@9 ~@7]/2", O: "[bb3,eb4]",
P: "[g4@3 ab4@3 ~@26 db4@2 ~@17 g4@15 ~ ab4@3 db4@10 d4@3 g4@3 [c4,e4]@9 ~, ~@6 f4@42 [bb3,eb4]@19 ~@29, ~@38 ab4@14 ~@15 f4@16 ~@13]/6", // C Eb5
Q: "[bb3,d4,f4] ~ [c4,e4,g4]@3 f4 ab4 bb4", R: "[c4,f4,ab4]@4 ~@2 [c4,f4,ab4]@9 ~",
S: "[[d4,f4,bb4]@2 ~@4 [d4,f4]@9 ~ [db4,f4]@4 ~@2 [db4,f4]@9 ~ [c4,eb4]@11 ~ bb4@2 [c4,f4,ab4]@6 ~@2 [c4,f4,ab4]@10, ~@6 bb4@16 ab4@21 ~ g4 ~@19]/4", // Bb Dm Db Cm Fm
T: "[[bb3,d4,f4]@5 ~ [bb3,d4]@9 ~ [bb3,db4]@16, ~@6 f4@25 ~]/2", U: "[c4,f4,ab4]",
V: "[f3,f4] [g3,g4] [ab3,ab4] [c4,c5]", W: "[[ab4,db5]@15 ~ db5@2 c5@14, f4@31 ~, ~@16 ab4@15 ~]/2",
X: "ab4@3 ~ g4@11 ~, [eb4,bb4]@15 ~", Y: "[eb4,g4]@2 ~ [db4,f4]@4 ~, bb4@3 ab4@5",
Z: "[[ab3,db4]@15 ~ db4@2 c4@3 ~ c4@9 ~@7 g4@9 ~, f4@32 [bb3,eb4]@15 ~, ~@8 ab3@3 ab4@8 ~@5]/3", // Db5 Eb5
AA: "[bb3,eb4,ab4]@6 ~@2 [db4,gb4]@2 ~ [gb4,a4]@2 ~ [gb4,b4] ~", AB: "[db4,gb4,a4]@4 ~@2 [db4,gb4,a4]@9 ~",
AC: "[b3,eb4,gb4]@3 ~@3 [b3,eb4,gb4]@9 ~", AD: "[a3,d4,gb4]@2 ~ [a3,d4,gb4]@5",
AE: "[[a3,db4,e4]@7 ~@3 a4 ~ [ab4,b4] ~ [gb4,a4,db5]@7 ~ [db4,gb4,a4]@10, ~@2 [db4,e4] ~@5]/2", // A Abm Gbm Dbm
AF: "[b3,eb4,gb4]@4 ~@2 [b3,eb4,gb4]@9 ~", AG: "[d4,gb4,b4]@5 ~ [d4,gb4,a4]@9 ~",
AH: "[db4,e4,a4]@9 ~ gb4@2 a4@2 b4@2", AI: "[db4,gb4,a4]@2 ~ [db4,gb4,a4]@5", AJ: "[a3,d4,gb4]@4 ~@2 [a3,d4,gb4]@9 ~",
AK: "[[a3,db4,e4]@9 ~ a4@2 b4@2 [db4,gb4,a4]@5 ~@3 [db4,gb4,a4]@10, ~@12 ab4 ~@19]/2", // A Gbm
AL: "[b3,d4,gb4,a4]@3 [d4,gb4]@5", AM: "[[db4,e4]@7 ~@3 a4@2 b4@2 [a4,db5]@7 ~ [db4,gb4,a4]@10, ~@8 gb4@13 ~@11]/2",
AN: "[[d4,gb4]@16 [a1,a2]@13 ~@3, a3@15 ~]/2", // D A
})).s("gm_string_ensemble_1").gain(0.29).pan(0.3)
// chords · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft = note("<A@3 ~ B C D E F@2 G H@2 I ~@11 J@4 K@3 ~@36 L ~@4>".pickRestart({
A: "[[db3,f3]@23 ~]/3", B: "~@8 bb3@7 ~", C: "[ab3,f4]@15 g4", D: "[db4,ab4]@4 eb4@3 ~@7 bb4@2", E: "~ bb3",
F: "[~ c4@7 ~ g3@6 ~, f3@8 [bb3,eb4]@7 ~, ~ ab3@8 ~@7]/2", G: "[g3,bb3]@4 ~@2 [f3,db4]@9 ~",
H: "[[f3,ab3]@15 ~ [f3,ab3]@15 ~, db4@9 ~@7]/2", I: "bb3@15 ~",
J: "[~@6 db4@6 eb4@2 db4 ~@23 ab3@13 g3@13, ~@3 f4@16 ~@13, ~@6 ab3@10 ~@18 c4@13 ~@17]/4",
K: "[eb4@6 ~@28 c4@13 ~, ~@6 db4@25 ~@17, ~@8 ab3@11 ~@5]/3", L: "~@14 b4 ~",
})).s("gm_string_ensemble_1").gain(0.16).pan(0.3)
// other · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
A@3 B ~@13 C D@3 E@2 F G ~@11 C D@3 E@2 F H I J K L M N O P@2 Q@2 R@2 S T U@3 V W X Y Z AA AB AC AD@3
>`.pickRestart({
A: "[bb4 c5 bb4 c5 bb4 [bb4,c5] c5 bb4 [bb4,c5] c5 [bb4,c5] bb4 [bb4,c5] c5 [bb4,c5]!2 [bb4,c5] bb4 [bb4,c5]!3 c5 [bb4,c5]!2 bb4 [bb4,c5]!2 c5 [bb4,c5]!3 bb4 [bb4,c5]!4 c5 [bb4,c5]!4 bb4 [bb4,c5] c5 [bb4,c5]!4, g4]/3", // Bbsus2
B: "bb4 ~@15", C: "~@13 f4@3, ~@3 f5@5", D: "[bb4@8 [f4,f5]@4 [bb3,bb4]@16 [ab3,ab4]@9 [bb3,bb4] [c4,c5]@9 ~]/3",
E: "[[f3,f5]@3 ~ [c3,c5] [eb3,eb5] f5@16 f4@10, ~@6 f3@23 ~@3]/2", F: "[bb3,bb4]@14 [ab3,ab4] [g3,g4]",
G: "f3, f4@3 ~@5", H: "ab4@3 f5@5, f4 ~@15", I: "f4@9 ~@7", J: "db5", K: "c5@5 ab4 g4 f4", L: "g4@3 eb5@3 g4@2",
M: "f4 g4 ab4@14", N: "ab5@12 ab4@3 ~", O: "[c4,c5]@14 [bb3,bb4] [ab3,ab4]",
P: "[[bb3,bb4]@12 [eb3,eb4]@9 ~@3 [gb3,gb4]@2 ~ [a3,a4]@2 ~ [b3,b4]@2]/2", // Bb Eb Gb A B
Q: "[gb4@21 ~ [db3,db4] [eb3,eb4] [gb3,gb4]@8]/2", // Db Eb Gb
R: "[[b3,b4]@13 [c4,b4,c5] a4@15 b4 db5 b4, ~@7 a3@4 ~@5, ~@14 b3 ~@17]/2", // B Cmaj7
S: "[db4,db5]@5 [e4,e5] [gb4,gb5]@8 [db4,db5]@2", T: "[b3,b4]@6 [gb4,gb5]@8 [gb3,gb4] [a3,a4]",
U: "[[b3,b4]@11 [c4,b4,c5] [a3,a4]@12 [ab3,ab4]@4 [db4,db5]@7 ~ [db4,db5] [e4,e5] [gb4,gb5]@6 [db4,db5] [e4,e5] [gb4,gb5] ~, ~@12 b3 ~@35]/3", // B Cmaj7 A Ab Db E Gb Db …
V: "[b3,b4] ~ [b3,b4] [e4,e5] [gb4,gb5]@8 [b3,b4] [e4,e5] [gb4,gb5]@2", W: "[e4,e5]@10 [db4,db5] [b3,b4]@3 [a3,a4]@2",
X: "~@6 [db4,db5] [b3,b4]", Y: "[db4,db5]@3 ~ [db4,db5] [e4,e5] [gb4,gb5]@7 ~ [db4,db5] [a3,b3,a4,b4]",
Z: "[b3,b4]@5 [a3,a4] [gb3,gb4]@6 [gb3,gb4] [a3,a4] b4@2, ~@14 b3 ~", AA: "[b3,b4]@14 [a3,a4] [b3,b4]",
AB: "[a3,a4] [b3,b4] [a3,a4] [b3,b4] [a3,a4] [b3,b4] [a3,a4] [b3,b4] [ab3,ab4] [b3,b4] [ab3,ab4] [b3,b4] [ab3,ab4] [b3,b4] [db4,db5] [b3,b4]", // A B A B A B A B …
AC: "[db4,db5]@3 ~ [db4,db5] [e4,e5] [gb4,gb5]@7 ~ [c4,db4] ~, ~@7 db5", // Db E Gb Dbmaj7
AD: "[[b3,b4]@3 ~ [b3,b4] [e4,e5] [gb4,gb5]@8 [b3,b4]@14 ~@4 a2@13 ~@3, ~@7 a4@4 ~, ~@28 a3@13 ~@7]/3", // B E Gb B
})).s("gm_string_ensemble_2").gain(0.25).pan(0.6)
// other · tinkle bell · "TINKLEBELL"
const tinkle_bell = note(`<
[~@2 bb4 ab4 f4@2 g4@2 bb4 ab4 eb4@2 f4@2 bb4 ab4]
[f4@2 g4@2 bb4 ab4 eb4@2 f4@2 bb4 ab4 f4@2 g4@2]
[bb4 ab4 eb4@2 f4@2 bb4 ab4 f4@2 g4@2 bb4 ab4 eb4@2]
[f4 ~@3]
~@69
>`).s("gm_tinkle_bell").gain(0.03).pan(0.4)
// other · melodic tom · "MELO TOM 1"
const melodic_tom = note(`<
~@8 A ~ A ~ A ~ A ~@2 A@2 ~ A@3 ~ A@2 ~ A ~ A ~ A ~ A ~@2 A@5 B A@2 C A@2 ~ A@4 ~ A@3 B A@6 B A@8 ~
>`.pickRestart({
A: "~@13 c4 g3 c3", B: "~@13 c4 g3 [c3,e3]", C: "~@12 c4 g3 c3!2",
})).s("gm_melodic_tom").gain(0.45)
// drums · kick
const kick = s("bd").struct(`<
~@7 A@9 B A C@2 D C@3 E@2 A@9 B A C@2 D C@3 E F G H C I C@3 D J K J L K M J N J K@2 O K J K P Q A J D
>`.pickRestart({
A: "x ~@5 x ~@8 x", B: "x ~ x ~@2 x!3", C: "x ~@2 x ~@4", D: "x", E: "x ~@2 x ~@3 x", F: "x ~@10 x ~@4",
G: "x ~@5 x ~ x ~@6 x", H: "x ~@2 x ~@2 x ~ x ~@7", I: "x ~@2 x ~ x ~@2", J: "x ~@2 x ~@2 x ~@9",
K: "x ~@2 x ~@2 x ~@3 x ~@5", L: "x ~@2 x ~@4 x ~@7", M: "x ~@2 x ~@2 x ~@7 x!2", N: "x ~@7 x ~@2 x ~@4",
O: "x ~@2 x ~@3 x ~@3 x ~@4", P: "x ~@5 x ~@2 x ~@6", Q: "x ~@2 x ~@2 x ~@6 x ~ x",
})).gain(0.5)
// drums · snare
const snare = s("sd").struct(`<
~@17 A@3 B A@3 C ~@11 A@3 B A@3 C D A@2 E@2 A@3 F A G A H A@3 I A@3 J A E A K L M A ~
>`.pickRestart({
A: "~ x ~ x", B: "~@4 x ~@2 x!2 ~@2 x ~@2 x ~", C: "~@3 x ~@4", D: "~@2 x ~ x ~@2 x!2 ~@3 x ~ x ~",
E: "~@4 x ~@7 x ~ x!2", F: "~ x ~@2", G: "x!2 ~ x", H: "~@4 x ~ x!2 ~@3 x ~@2 x!2", I: "~@3 x ~@12",
J: "~@4 x ~@3 x!3 ~@5", K: "~@3 x ~@2 x!3 ~ x ~ x ~ x ~", L: "~@2 x ~@2 x ~@2", M: "x ~@3 x ~@5 x ~@2 x ~@2",
})).gain(0.5)
// drums · clap
const clap = s("cp").struct("<~@7 A@8 ~@12 A ~@2 A@3 ~ A ~@38>".pickRestart({
A: "~ x ~@2",
})).gain(0.3)
// drums · clap · soft notes
const clap_soft = s("cp").struct("<~@26 A ~ A@2 ~@3 A ~@34 B ~@4>".pickRestart({
A: "~ x ~@2", B: "~@3 x ~@4",
})).gain(0.15)
// drums · low tom
const low_tom = s("lt").struct(`<
~@16 A B@2 ~ C B@2 ~@12 D B@2 ~ C B@2 ~@2 C ~@7 C B@2 ~ E B@2 ~ E B@2 ~ F B@2 ~ C B@2 ~@2
>`.pickRestart({
A: "~@2 x ~@4 x", B: "~@3 x ~@4", C: "~@7 x", D: "~@3 x!2 ~@9 x ~", E: "~@14 x!2", F: "~@15 x",
})).gain(0.45)
// drums · hihat
// … 66 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 bpmExhale (Shoop Shoop)D♭ major · 69 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.