0:00/0:00
// How Will I Know — Whitney Houston
// 120 bpm, 4/4, key A# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 132 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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
const piano = note(`<
~@40 A ~ A B@2 ~ C B@2 ~ C B@2 ~ C ~@17 A ~ A B@2 ~ C B@2 ~ C B@2 ~ C D@8 E@4 ~@9 F ~ F G@2 ~ H ~ H ~ H I@2 ~ H ~@9
>`.pickRestart({
A: "~@2 [gb4,bb4]@2 [f4,ab4]@4 [eb4,gb4]@3 ~@5", B: "[~@8 [ab4,db5]@4 [gb4,bb4]@8 [f4,ab4]@4 [gb4,b4]@3 ~@5]/2",
C: "~@2 [gb4,bb4]@2 [f4,ab4]@4 [gb4,b4]@3 ~@5", D: "[~@5 [bb4,db5]@2 [b4,eb5]@3 [bb4,db5]@2 ~@4]/2",
E: "[~@5 [gb4,bb4,db5]@2 [gb4,b4,eb5]@3 [gb4,bb4,db5]@2 ~@4]/2", F: "~@2 [eb4,g4]@2 [d4,f4]@4 [c4,eb4]@3 ~@5",
G: "[~@8 [f4,bb4]@4 [eb4,g4]@8 [d4,f4]@4 [eb4,ab4]@3 ~@5]/2", H: "~@2 [g4,bb4,eb5]@6 [ab4,c5,eb5]@3 ~@5",
I: "[~@8 [g4,bb4]@4 [eb4,g4]@6 [g4,bb4,eb5]@6 [ab4,c5,eb5]@3 ~@5]/2", // Gm Eb Ab
})).s("gm_piano").gain(0.05)
// bass · synth bass 1
const bass = note(`<
~@7 A B C D@2 E C D@2 F@2 G H I J K H I J I H I J L H M N O P M N Q R B C S@2 E C T@2 E C S@2 E C T@2 I J I H I J L H
M N O P M N Q R U C V@2 W C X@2 W C V@2 W C Y@3 Z@2 AA@2 AB@2 AC AD AE AF AG AH AI AJ@2 AK AI AL@2 AH AI AJ@2 AK AI
AM@2 AH AI AJ@2 AK AI AM@2 AH AI AJ@2 AK AI AN@2
>`.pickRestart({
A: "~@5 gb1 db3 db2", B: "gb1 ~ gb1@2 bb1@2 bb1@2 b1 ~@3 b1 ~ db2@2", C: "~@2 db2 ~@3 db2 ~ eb2@2 db2@2 eb2@2 gb1@2",
D: "[~@2 gb1 ~ bb1 ~ bb1 ~ b1 ~@3 bb1 ~ db2@4 db1 ~@3 db1 ~@7 gb1@2]/2", E: "~@2 gb1@2 bb1@2 bb1@2 b1 ~@3 b1 ~ db2@2",
F: "[~@2 gb1@2 bb1 ~ bb1 ~ b1 ~@3 b1 ~ db2@5 ~ bb1 ~ db2 ~@9]/2", G: "~@2 gb1!2 bb1 ~ bb1@2 b1 ~@5 b1 ~",
H: "db2 bb1 db2 ~@5", I: "~@2 gb1@2 bb1@2 bb1@2 b1 ~@5 b1 ~", J: "db2@4 bb1@2 db2 ~@9",
K: "~@2 gb1@2 bb1 ~ bb1 ~ b1@2 ~@4 b1 ~", L: "~@2 gb1@2 bb1 ~ bb1 ~ b1 ~@5 b1 ~", M: "gb1@5 ~ gb1@6 ~@2 ab1 ~",
N: "bb1@5 ~ bb1@7 ~ gb1 ~", O: "ab1@5 ~ ab1@7 ~ bb1 ~", P: "b1@5 ~ b1@5 ~ b1 ~ db2 ~", Q: "ab1@5 ~ ab1@7 ~ bb1@2",
R: "b1@2 bb1@2 b1 ~@5 db1@2 db3@2 db1 ~", S: "[~@2 gb1 ~ bb1 ~ bb1 ~ b1 ~@3 bb1 ~ db2@4 db1 ~@3 db1@2 ~@6 gb1@2]/2",
T: "[~@2 gb1 ~ bb1 ~ bb1 ~ b1 ~@3 bb1 ~ db2@4 db1 ~@3 db1@2 ~@2 db1@2 ~@2 gb1@2]/2",
U: "gb1 ~ gb1!2 bb1 ~ bb1 ~ b1 ~@3 b1 ~ db2@2",
V: "[~@2 gb1!2 bb1 ~ bb1 ~ b1 ~@3 bb1 ~ db2@4 db1 ~@3 db1@2 ~@6 gb1@2]/2",
W: "~@2 gb1!2 bb1 ~ bb1 ~ b1 ~@3 b1 ~ db2@2",
X: "[~@2 gb1!2 bb1 ~ bb1 ~ b1 ~@3 bb1 ~ db2@4 db1 ~@3 db1@2 ~@2 db1@2 ~@2 gb1@2]/2",
Y: "[~@2 gb1!2 bb1 ~ bb1 ~ b1 ~@3 bb1 ~ db2@4 db1 ~@3 db1@2 ~@2 bb1 ~ bb1@2 db2@4 db1@2 db2 ~@11]/3",
Z: "[~@10 bb1 ~ bb1@2 db2@4 db1@2 db2@2 ~@10]/2", AA: "[~@10 bb1 ~ bb1 ~ db2@4 db1@2 db2 ~@11]/2",
AB: "[~@10 bb1 ~ bb1@2 db2@4 db1@2 db2 ~@11]/2", AC: "~@10 gb1 ~ gb1@2 ab1@2",
AD: "~@2 ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~", AE: "ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ b1@2",
AF: "~@2 b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~", AG: "db2@2 db1@2 db2 ~ db1@2 db2@2 db1@2 b3@2 db1 ~",
AH: "eb1 ~ eb1!2 g1 ~ g1 ~ ab1@2 ~@2 ab1 ~ bb1@2", AI: "~@2 bb1 ~@3 bb1 ~ c2@2 bb1@2 c2@2 eb1@2",
AJ: "[~@2 eb1!2 g1 ~ g1 ~ ab1@2 ~@2 g1 ~ bb1@4 bb1 ~ bb1 ~ bb1@3 ~ bb1 ~ bb1 ~ eb1@2]/2",
AK: "~@2 eb1!2 g1 ~ g1 ~ ab1 ~@3 ab1 ~ bb1@2",
AL: "[~@2 eb1!2 g1 ~ g1 ~ ab1 ~@3 ab1 ~ bb1@4 bb1@2 bb2@2 bb1@4 bb1@2 bb2@2 eb1@2]/2",
AM: "[~@2 eb1!2 g1 ~ g1 ~ ab1 ~@3 g1 ~ bb1@4 bb1@2 bb2@2 bb1@4 bb1@2 bb2@2 eb1@2]/2",
AN: "[~@2 eb1!2 g1 ~ g1 ~ ab1 ~@3 g1 ~ bb1@4 bb1@2 bb2@2 bb1@4 bb1@2 bb2@2 ~@2]/2",
})).s("gm_synth_bass_1").gain(0.46)
// chords · piano
const piano_2 = note(`<
~@16 A B C D A B C D A B C D A B C D ~@8 E@2 F@2 E@2 G H E@2 F@2 E@2 G H A B C D A B C D ~@8 E@2 F@2 E@2 G H E@2 F@2
E@2 G I ~@12 J K L M J K N O J K L M J K N O J K L M J K N O J K L M J K N P
>`.pickRestart({
A: "~@4 [bb3,db4] ~ [bb3,db4,gb4] ~ [b3,eb4,gb4] ~@7, ~@2 gb4 ~@5", B: "[ab3,db4,f4]@4 ~@2 [ab3,db4,f4] ~@9",
C: "~@2 [bb3,db4,gb4]@2 ~@2 [bb3,db4,gb4] ~ [b3,eb4,gb4] ~@7", D: "[ab3,db4,f4]@3 ~ [ab3,db4,f4]@2 ~@10",
E: "[~@2 [db4,gb4,bb4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~ [b3,eb4,gb4] ~@5 [ab3,db4]@4 [ab3,db4] ~@3 [bb3,eb4]@3 ~ [bb3,eb4] ~@5]/2", // Gb Db B Db5 Eb5
F: "[~@2 [db4,gb4,bb4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~ [b3,eb4,gb4] ~@3 [db4,gb4,bb4] ~ [db4,f4,ab4]@5 ~ [bb3,db4,gb4] ~@3 [ab3,db4,f4]@3 ~ [gb3,bb3,db4] ~ [gb3,bb3,db4] ~]/2", // Gb Db B Gb Db Gb Db Gb
G: "~@2 [db4,gb4,bb4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~ [b3,eb4,gb4] ~@3 [b3,eb4,gb4] ~@3", // Gb Db B
H: "[ab3,db4,f4]@2 ~@2 [bb3,db4] ~@3 [ab3,db4,f4]@2 ~@2 [bb3,db4,gb4] ~ [bb3,db4,gb4] ~, ~@2 gb4 ~@5", // Db Bbm Db Gb
I: "[ab3,db4,f4]@2 ~@2 [bb3,db4] ~@3 [ab3,db4,f4]@2 ~@6, ~@2 gb4 ~@5", // Db Bbm Db
J: "~@2 [bb3,g4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~ [bb3,d4,f4]@2, ~ eb4 ~@6", // Eb Bb Ab Bb
K: "~@2 [bb3,d4,f4] ~@3 [bb3,eb4,g4]@3 ~ [bb3,eb4,g4] ~@5", // Bb Eb
L: "~@2 [bb3,eb4,g4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3", // Eb Bb Ab
M: "[bb3,d4] ~@3 [bb3,eb4,g4]@2 ~@2 [bb3,f4]@2 ~@2 [eb4,g4]@2 [bb3,eb4,g4] ~, f4@2 ~@6 d4 ~@3 bb3 ~@3", // Bb Eb Bb5 Eb
N: "~@2 [bb3,eb4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [ab3,c4,eb4] ~@3 [eb4,g4] ~@3, ~ g4 ~@4 bb3 ~", // Eb5 Bb Ab Eb
O: "[bb3,f4]@2 ~@2 [eb4,g4] ~@3 [bb3,d4,f4] ~@3 [eb4,g4]@2 [bb3,eb4,g4] ~, d4 ~@3 bb3@2 ~@6 bb3 ~@3", // Bb5 Eb Bb Eb
P: "[bb3,f4]@2 ~@2 [eb4,g4] ~@3 [bb3,d4,f4] ~@7, d4 ~@3 bb3@2 ~@10", // Bb5 Eb Bb
})).s("gm_piano").gain(0.26).pan(0.4)
// chords · epiano2
const epiano2 = note(`<
A B C D E B C D E B F G E B F H ~@16 I J K L I J K M ~ N ~@22 I J K L I J K M ~ N ~@13 O@2 P Q R@2 P S ~@37
>`.pickRestart({
A: "~@2 [gb4,bb4,db5]@2 [f4,ab4,db5]@2 [f4,ab4,db5]@2 [gb4,bb4,eb5] ~@3 [bb4,eb5] ~ [f4,ab4,db5]@2, ~@6 gb4 ~", // Gb Db Ebm Eb5 Db
B: "~@2 [f4,ab4,db5] ~@3 [gb4,bb4,eb5]@3 ~ [gb4,bb4,eb5] ~@5", // Db Ebm
C: "~@2 [gb4,bb4,db5] ~ [f4,ab4,db5]@2 [f4,ab4,db5] ~ [gb4,bb4] ~@3 [gb4,bb4,eb5] ~@3, ~@4 eb5 ~@3", // Gb Db Gb Ebm
D: "[f4,ab4,db5] ~@3 [gb4,bb4,db5] ~@3 [f4,ab4,db5]@2 ~@2 [gb4,bb4,db5]@2 [gb4,bb4,db5] ~", // Db Gb Db Gb
E: "~@2 [gb4,bb4,db5]@2 [f4,ab4,db5] ~ [f4,ab4,db5]@2 [gb4,bb4,eb5] ~@3 [bb4,eb5] ~ [f4,ab4,db5]@2, ~@6 gb4 ~", // Gb Db Ebm Eb5 Db
F: "~@2 [gb4,bb4,db5] ~ [f4,ab4,db5]@2 [f4,ab4,db5] ~ [gb4,bb4] ~@3 [db4,gb4,bb4] ~@3, ~@4 eb5 ~@3", // Gb Db Gb
G: "[db4,f4,ab4]@3 ~ [db4,gb4,bb4] ~@3 [f4,ab4,db5]@3 ~ [db4,gb4,bb4] ~@3", // Db Gb Db Gb
H: "[db4,ab4]@2 ~@2 [db4,bb4]@2 ~@2 [db4,f4,ab4]@2 ~@2 [db4,gb4,bb4]@2 [db4,gb4,bb4] ~, f4 ~@3 gb4 ~@11", // Db5 Gb Db Gb
I: "[gb2,gb3,bb3,db4]", J: "[bb2,ab3,bb3,db4,f4]", K: "[ab2,ab3,b3,eb4,gb4]", L: "[b2,gb3,b3,eb4]",
M: "[b2,b3,eb4,gb4]@2 [b2,b3,eb4,gb4] ~@5", N: "~@8 [db4,eb4] ~ eb4 ~@5",
O: "[~@14 [eb4,gb4,b4]@4 [eb4,gb4,b4] ~ [gb4,bb4]@2 ~@10, ~@20 db4 ~@11]/2", P: "~@7 [eb4,gb4,b4]",
Q: "~@2 [eb4,gb4,b4] ~ [db4,gb4,bb4]@2 ~@10", R: "[~@14 [eb4,gb4,b4]@5 ~ [db4,gb4,bb4] ~@11]/2",
S: "~@2 [eb4,gb4,b4] ~ [db4,gb4,bb4] ~@11", // B Gb
})).s("gm_epiano2").gain(0.29).pan(0.3)
// chords · lead 2 sawtooth
const lead_2_sawtooth = note(`<
A B C D E B C D E B F G E B F H I J K L I J K L I J K L I J K L ~@8 M N M O M P Q R M N M O M P Q R I J K L I J K S
~@8 M N M O M P Q R M N M O M P Q T@2 U V W V U X Y Z AA AB AC AD AE AF AG AH AI AF AJ AD AE AF AG AH AI AF AJ AD AE
AF AG AH AI AF AJ AD AE AF AG AH AI AF AK
>`.pickRestart({
A: "~@2 [gb4,bb4,db5]@2 [f4,ab4,db5]@2 [f4,ab4,db5]@2 [gb4,bb4,eb5] ~@3 [bb4,eb5] ~ [f4,ab4,db5]@2, ~@6 gb4 ~", // Gb Db Ebm Eb5 Db
B: "~@2 [f4,ab4,db5] ~@3 [gb4,bb4,eb5]@3 ~ [gb4,bb4,eb5] ~@5", // Db Ebm
C: "~@2 [gb4,bb4,db5] ~ [f4,ab4,db5]@2 [f4,ab4,db5] ~ [gb4,bb4] ~@3 [gb4,bb4,eb5] ~@3, ~@4 eb5 ~@3", // Gb Db Gb Ebm
D: "[f4,ab4,db5] ~@3 [gb4,bb4,db5] ~@3 [f4,ab4,db5]@2 ~@2 [gb4,bb4,db5]@2 [gb4,bb4,db5] ~", // Db Gb Db Gb
E: "~@2 [gb4,bb4,db5]@2 [f4,ab4,db5] ~ [f4,ab4,db5]@2 [gb4,bb4,eb5] ~@3 [bb4,eb5] ~ [f4,ab4,db5]@2, ~@6 gb4 ~", // Gb Db Ebm Eb5 Db
F: "~@2 [gb4,bb4,db5] ~ [f4,ab4,db5]@2 [f4,ab4,db5] ~ [gb4,bb4] ~@3 [db4,gb4,bb4] ~@3, ~@4 eb5 ~@3", // Gb Db Gb
G: "[db4,f4,ab4]@3 ~ [db4,gb4,bb4] ~@3 [f4,ab4,db5]@3 ~ [db4,gb4,bb4] ~@3", // Db Gb Db Gb
H: "[db4,f4] ~@3 [db4,gb4,bb4] ~@3 [db4,f4,ab4] ~ db4 ~ [gb4,bb4]@2 [db4,gb4,bb4] ~, ab4@2 ~@10 db4 ~@3", // Db Gb Db Gb
I: "~@2 [bb3,db4,gb4] ~ [bb3,db4] ~ [bb3,db4,gb4] ~ [b3,eb4,gb4] ~@7, ~@2 gb4 ~@5", // Gb Bbm Gb B
J: "[ab3,db4,f4]@4 ~@2 [ab3,db4,f4] ~@9", K: "~@2 [bb3,db4,gb4]@2 ~@2 [bb3,db4,gb4] ~ [b3,eb4,gb4] ~@7",
L: "[ab3,db4,f4]@3 ~ [ab3,db4,f4]@2 ~@10", // Db
M: "~@2 [bb3,db4,gb4] ~ [ab3,db4,f4] ~ [ab3,db4,f4] ~ [b3,eb4,gb4] ~@3 [b3,eb4,gb4] ~ [f3,ab3,db4]@2", // Gb Db B Db
N: "~@2 [f3,ab3,db4] ~@3 [gb3,bb3,eb4]@3 ~ [gb3,bb3,eb4] ~@5", // Db Ebm
O: "~@4 [db4,gb4,bb4] ~@3 [db4,f4,ab4]@2 ~@2 [db4,gb4,bb4] ~ [db4,gb4,bb4] ~", // Gb Db Gb
P: "~@2 [ab3,db4,f4] ~@3 [bb3,db4,gb4]@3 ~ [bb3,db4,gb4] ~@5", // Db Gb
Q: "~@2 [bb3,db4,gb4] ~ [ab3,db4,f4] ~ [ab3,db4,f4] ~ [b3,eb4,gb4] ~@3 [b3,eb4,gb4] ~@3", // Gb Db B
R: "[db4,f4] ~@3 [db4,gb4,bb4] ~@3 [db4,f4,ab4] ~@3 [db4,gb4,bb4] ~ [db4,gb4,bb4] ~, ab4 ~@7", // Db Gb Db Gb
S: "[ab3,db4,f4] ~ [ab3,db4,f4] ~@5", // Db
T: "[[db4,f4] ~@3 [db4,gb4,bb4] ~@3 [db4,f4,ab4] ~ [db4,gb4,bb4] ~ [db4,gb4,bb4] ~ [eb4,gb4,b4]@4 db3@2 [db3,db4,gb4] ~@11, ab4@2 ~@12 db3@3 ~@3 bb4@2 ~@10]/2", // Db Gb Db Gb B Gb5
U: "~@10 [db4,gb4,bb4] ~ [db4,gb4,bb4] ~ [db3,eb4,gb4,b4]@2", // Gb B
V: "~@2 [db3,eb4,gb4,b4] ~ [db3,db4,gb4] ~@11, ~@2 bb4 ~@5", // B Gb5
W: "~@10 [db3,db4,gb4,bb4] ~ [db3,db4,gb4,bb4] ~ [db3,eb4,gb4,b4]@2", // Gb B
X: "~@2 [db3,eb4,gb4,b4] ~ [db3,db4,gb4,bb4] ~@11", Y: "~@10 [db3,gb4,bb4,db5] ~ [db3,gb4,bb4,db5] ~ [gb4,b4,eb5]@2",
Z: "~@2 [gb4,b4,eb5] ~ [gb4,bb4,db5] ~@11", AA: "~@10 [gb4,bb4,db5] ~ [gb4,bb4,db5] ~ [gb4,b4,eb5]@2",
AB: "~@2 [gb4,b4,eb5] ~ [gb4,bb4,db5] ~@3 [b4,eb5,gb5]@2 ~@2 [b4,eb5,gb5] ~@3", // B Gb B
AC: "[b4,eb5,gb5] ~@3 [b4,eb5,gb5] ~@3 [db5,f5,ab5] ~@3 [db5,f5,ab5] ~@3", // B Db
AD: "~@2 [eb5,g5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [c5,eb5,g5] ~@3 [c5,eb5,g5] ~ [bb4,d5,f5]@2, ~ bb4 ~@6", // Eb Bb Cm Bb
AE: "~@2 [bb4,d5,f5] ~@3 [bb4,eb5,g5]@3 ~ [g4,bb4,eb5] ~@5", // Bb Eb
AF: "~@2 [bb4,eb5,g5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [c5,eb5,g5] ~@3 [c5,eb5,g5] ~@3", // Eb Bb Cm
AG: "[bb4,d5,f5] ~ bb4 ~ [c5,eb5,g5] ~@3 [bb4,d5,f5] ~ bb4 ~ [bb4,eb5,g5] ~ [bb4,eb5,g5] ~", // Bb Cm Bb Eb
AH: "~@2 [bb4,eb5,g5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [c5,eb5,g5] ~@3 [c5,eb5,g5] ~ [bb4,d5,f5]@2", // Eb Bb Cm Bb
AI: "~@2 [f4,bb4,d5] ~@3 [bb4,eb5,g5]@3 ~ [g4,bb4,eb5] ~@5", // Bb Eb
AJ: "[bb4,d5,f5] ~@3 [bb4,eb5,g5] ~@3 [bb4,d5,f5] ~ bb4 ~ [bb4,eb5,g5] ~ [bb4,eb5,g5] ~", // Bb Eb Bb Eb
AK: "[bb4,d5,f5] ~@3 [bb4,eb5,g5] ~@3 [bb4,d5,f5] ~ bb4 ~@5", // Bb Eb Bb
})).s("gm_lead_2_sawtooth").gain(0.19).pan(0.7)
// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
~@8 A B C D A B C E ~@79 F@2 G H I J K L M N O L P Q R S T U V W X Q R S T U V W X Q R S T U V W Y
>`.pickRestart({
A: "~@2 [db4,gb4,bb4] ~ [db4,f4,ab4]@2 [db4,f4,ab4] ~ [eb4,gb4,bb4] ~@3 [eb4,gb4,bb4] ~ [db4,f4,ab4]@2", // Gb Db Ebm Db
B: "~@2 [db4,f4,ab4] ~@3 [eb4,gb4,bb4]@3 ~ [eb4,gb4,bb4] ~@5", // Db Ebm
C: "~@2 [db4,gb4,bb4]@2 [db4,f4,ab4] ~ [db4,f4,ab4]@2 [eb4,gb4,bb4] ~@3 [db4,gb4,bb4] ~@3", // Gb Db Ebm Gb
D: "[db4,f4,ab4]@3 ~ [db4,gb4,bb4] ~@3 [db4,f4,ab4]@3 ~ [db4,gb4,bb4] ~@3", // Db Gb Db Gb
E: "[db4,f4,ab4] ~@3 [db4,gb4,bb4] ~@3 [db4,f4,ab4] ~@3 [db4,gb4,bb4] ~ [db4,gb4,bb4] ~", // Db Gb Db Gb
F: "[~@7 ab2@2 eb3 ~ eb3 ~ eb3 ~ eb3, ~@5 ab3 ab2 ab3]/2", G: "~ eb3 ~ eb3 ab2 eb3 ab3 eb3, ab2 ab3 ~@2",
H: "b2 gb3 b3 gb3 b2 gb3 b3 gb3", I: "~@2 ab3@2 ~@2 ab3@2 db3@7 ~, db3@7 ~@9, ~ db4 ~@2",
J: "~@2 [g3,bb3,eb4] ~ [f3,bb3,d4] ~@3 [eb3,ab3,c4]@2 ~@4 [f3,bb3,d4]@2", // Eb Bb Ab Bb
K: "~@2 [f3,bb3,d4] ~@3 [g3,bb3,eb4]@3 ~ [g3,bb3,eb4] ~@5", L: "~@2 [g3,bb3,eb4] ~ [f3,bb3,d4] ~@3 [eb3,ab3,c4] ~@7",
M: "[f3,bb3,d4]@2 ~@2 [g3,bb3,eb4]@2 ~@2 [f3,bb3,d4]@3 ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~", // Bb Eb Bb Eb
N: "~@2 [g3,bb3,eb4] ~ [f3,bb3,d4] ~@3 [eb3,ab3,c4] ~@5 [f3,bb3,d4]@2", // Eb Bb Ab Bb
O: "~@2 [f3,bb3,d4] ~@3 [g3,bb3,eb4]@3 ~ [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~", // Bb Eb
P: "[f3,bb3,d4]@2 ~@2 [g3,bb3,eb4] ~@3 [f3,bb3,d4] ~ [f3,bb3,d4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~", // Bb Eb Bb Eb
Q: "~@2 [g3,bb3] ~ [f3,bb3]@2 ~@2 [eb3,ab3]@2 ~@4 [f3,bb3]@2", R: "~@2 [f3,bb3] ~@3 [g3,bb3]@3 ~ [g3,bb3] ~@5",
S: "~@2 [g3,bb3] ~ [f3,bb3] ~@3 [eb3,ab3] ~@7", T: "[f3,bb3]@2 ~@2 [g3,bb3]@2 ~@2 [f3,bb3]@3 ~ [g3,bb3] ~ [g3,bb3] ~",
U: "~@2 [g3,bb3] ~ [f3,bb3]@2 ~@2 [eb3,ab3] ~@5 [f3,bb3]@2", V: "~@2 [f3,bb3] ~@3 [g3,bb3]@3 ~ g3 ~@5",
W: "~@2 [g3,bb3] ~ [f3,bb3]@2 ~@2 [eb3,ab3] ~@7", // Gm Bb5 Ab5
X: "[f3,bb3]@2 ~@2 [g3,bb3]@2 ~@2 [f3,bb3] ~ [f3,bb3] ~ [g3,bb3] ~ [g3,bb3] ~", // Bb5 Gm Bb5 Gm
Y: "[f3,bb3]@2 ~@2 [g3,bb3]@2 ~@2 [f3,bb3] ~ [f3,bb3] ~@5", // Bb5 Gm Bb5
})).s("gm_electric_guitar_jazz").gain(0.11).pan(0.7)
// other · electric guitar muted
const electric_guitar_muted = note(`<
~@3 A@2 B@2 ~ C D E F C D E G H I J K L I J K L I J K L I J K M N O P Q R S T ~ D U V ~ D W X ~ Y U V ~ D W Z L I J K
L I J K M N O P Q R S T ~ D U V ~ D W X ~ Y U V ~ D W Z AA AB AC AD AE AF AG AH AI AJ@2 AK AL AM AN AO AP AQ AR AM AS
AT AU AV AW AM AL AX AY AZ BA BB BC BD AL BE AN BF AN BD BG ~@3
>`.pickRestart({
A: "[~@4 bb3@2 db4 gb4@6 ~@3]/2", B: "[~@12 db4@11 ~@9, ~@10 gb4@13 ~@9]/2", C: "~@2 gb4 ~ gb4 ~ gb4 ~ gb4@3 ~@5",
D: "~@8 db4!2 eb4 gb4 ~ gb4 eb4 db4", E: "~@2 gb4 ~ gb4 ~ gb4 ~ gb4@2 ~@6",
F: "~@5 db4 ~@2 db4!2 ~ db4 ~ db4 eb4 db4", G: "~@5 db4 ~@2 bb3 db4 ~ gb4 ~ gb4 eb4 db4",
H: "gb4 ~ gb3 ~@3 gb3 ~ gb3 ~ gb3 ~@3 gb3 ~", I: "ab3 ~ ab3 ~ f3 ~ ab3 ~@3 db4!2 ~@2 db4!2",
J: "~@2 gb3@2 gb3 ~@3 gb3 ~ gb3 ~@3 gb3 ~", K: "ab3 ~ ab3 ~@3 ab3 ~ db4 ~ db4 ~ b3 ~ b3 ~",
L: "bb3 ~ gb3 ~@3 gb3 ~ gb3 ~ gb3 ~@3 gb3 ~", M: "[bb3,db4,gb4]@5 ~ [bb3,db4,gb4]@9 ~",
N: "[bb3,db4,ab4]@5 ~ [bb3,db4,ab4]@9 ~", O: "[ab3,eb4,gb4]@5 ~ [ab3,eb4,gb4]@9 ~",
P: "[gb3,b3,eb4]@5 ~ [gb3,b3,eb4]@9 ~", Q: "[db4,gb4,bb4]@6 [db4,gb4,bb4]@9 ~", R: "[f4,ab4,db5]@3 [f4,ab4,db5]@5",
S: "[b3,eb4,gb4]@3 [b3,eb4,gb4]@5", T: "[gb3,b3,eb4]@4 [gb3,b3,eb4] ~@7 b3@2 ~@2", U: "~@2 gb4 ~@6 gb4 ~@2 gb4 ~@3",
V: "~@2 db4 ~@2 db4 ~@2 db4 ~@2 db4 ~@2 db4 ~", W: "db4!2 gb4 ~@13",
X: "db4!2 ~ db4 ~ db4!2 ~ ab3!2 ~ ab3 ~ ab3 bb3 ~", Y: "~@8 eb4!2 db4 gb4 ~ gb4 eb4 db4",
Z: "db4!2 ~ db4 ~ db4!2 ~@2 db4 ~ db4 ~ db4!2 ~",
AA: "~@3 [ab3,db4] ~ [ab3,db4] ~@2 [ab3,db4]!2 ~ [ab3,db4] ~ [ab3,db4] db3 db4", // Db5
AB: "[ab3,db4]!2 ab3 [ab3,db4] ~ ab3 db3 [ab3,db4]!5 ~@2 db3 ~", // Db5
AC: "[ab3,db4] db4 db3 [ab3,db4] ~ [db3,db4] ~@2 [db3,ab3,db4] [ab3,db4] ab3 [ab3,db4] ~ [ab3,db4] [db3,ab3] ~", // Db5 Db Db5
AD: "[ab3,db4]!2 ~ [ab3,db4] ~ [ab3,db4] db3 db4 [ab3,db4] db4 ~ [ab3,db4] ~ db3 ~@2", // Db5
AE: "~@2 db3 ~@2 db3 ab3 ~ [ab3,db4]!2 ~ [ab3,db4] ~ [ab3,db4] [db3,ab3] ~", // Db5
AF: "[ab3,db4]!2 ~ [ab3,db4] ~ [ab3,db4] db3 ~ [ab3,db4]!2 ab3 [ab3,db4] ~ [ab3,db4] db3 ~", // Db5
AG: "~ db3 ~ db3!2 ~@3 [ab3,db4]!2 ab3 [ab3,db4] ~ [ab3,db4] [db3,ab3] [ab3,db4]", // Db5
AH: "[ab3,db4] ab3 ~ [ab3,db4] ~ [ab3,db4] [db3,ab3] ~ [ab3,db4]!2 ~ [ab3,db4] ~@2 ab2@2", // Db5
AI: "eb3@2 ab3 ~ bb3@2 eb3@2 b3@2 bb3@2 ab3@2 eb3 ~",
AJ: "[bb3@2 b3@2 bb3@2 gb3 ~ eb3@2 ab3 ~ bb3 ~ b2@4 gb3@2 b3@2 gb3 ~ db4@2 b3 ~ gb3@2 eb3 ~]/2",
AK: "db3@3 ~ db3 ~@3 db3 ~@3 db3 ~@3", AL: "~@2 eb4 ~@2 eb4 ~@2 eb4 ~@2 eb4 ~@2 eb4 ~",
AM: "~@2 eb4 ~@2 eb4 ~@2 bb3!2 ~ eb4 ~ eb4 c4 bb3", AN: "~@2 eb4 ~@2 eb4 ~@2 eb4 ~ bb3 eb4 ~@2 eb4 ~",
AO: "~ eb4 ~@2 eb4 ~@3 bb3!2 ~ eb4 ~ eb4 c4 bb3", AP: "~@2 eb4 ~@2 eb4 ~@2 eb4 ~ bb3 ~@3 eb4 ~",
AQ: "~@4 eb4 ~@4 bb3 ~ eb4 ~ eb4 c4 bb3", AR: "~@2 eb4 ~@2 eb4 ~@2 eb4 ~@2 bb3 ~@3 bb3",
AS: "~@2 eb4 ~@2 eb4 ~@2 eb4 ~@5 bb3 ~", AT: "~ bb3 ~@2 bb3!2 ~ bb3!3 ~ eb4 ~ eb4 c4 bb3",
AU: "~@2 eb4 ~ bb3!2 ~@2 bb3 ~@2 bb3 ~@2 bb3 ~", AV: "~ bb3 ~@2 bb3 ~@4 c4 ~ eb4 ~ eb4 c4 bb3",
AW: "~@2 eb4 ~ bb3 eb4 ~ bb3 eb4 ~ bb3 eb4 ~@2 eb4 ~", AX: "~@2 eb4 ~@13", AY: "bb3!2 ~@5 bb3 eb4 ~@2 eb4 ~@2 eb4 ~",
AZ: "~@2 bb3 ~@2 bb3 ~@2 bb3 ~@7", BA: "~@2 bb3 ~@2 bb3 ~@2 eb4 ~@2 eb4 ~ bb3 eb4 ~",
BB: "~@2 bb3 ~@2 bb3 ~@2 bb3!2 ~ bb3 ~ bb3!2 ~", BC: "~@2 bb3 ~@2 bb3 ~@2 eb4 ~ bb3 eb4 ~ bb3 eb4 ~",
BD: "~@2 bb3 ~@2 bb3 ~@2 bb3!2 ~ eb4 ~ eb4 c4 bb3", BE: "~@2 bb3 ~@2 bb3 ~@2 bb3!2 ~ eb4 ~ eb4 ~@2",
BF: "~ bb3 ~@2 bb3 ~@3 bb3!2 ~ eb4 ~ eb4 c4 bb3", BG: "~@2 eb4 ~@2 eb4 ~@2 eb4 ~@7",
})).s("gm_electric_guitar_muted").gain(0.26).pan(0.3)
// … 128 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.