0:00/0:00
// Where Do Broken Hearts Go — Whitney Houston
// 64 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 69 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(64/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 · acoustic bass · "ACOU BASS"
const bass = note(`<
A B C D E F G H I J K L M N O P Q R O P Q R O P S T U V W X Y Z AA Y AB A B AC AD A B AC AD AE AF AG AH AI AJ AK AL AM
AN AO AL AM AN AO AL AM AN AO AL AM AN AP ~@3
>`.pickRestart({
A: "d2@6 ~ d2 c#2@5 ~ c#2 a1", B: "b1@6 ~ b1 a1@5 ~ e1 f#1", C: "g1@6 ~ g1 a1@3 ~ a1@3 ~", D: "d1@6 ~ a1 d2@6 d2 c#2",
E: "b1@7 b1 b1@5 ~ d1 d#1", F: "e1@7 e1 e1@6 f#1 g1", G: "a1@7 a1 a1@6 c#2 a1", H: "d1@7 a1 d2@5 ~ d2 c#2",
I: "b1@6 ~ b1 b1@5 ~ d1 d#1", J: "e1@6 ~ e1 e1@5 ~ f#1 g1", K: "a1@6 ~ a1 a1@5 ~ c#2 a1",
L: "f#1@6 ~ f#1 b1@5 ~ d1 d#1", M: "e1@6 ~ e1 a1@7 ~", N: "a2@5 ~ a2@2 d2@6 ~ d2", O: "c#2@5 ~ c#2 a1 b1@6 ~ b1",
P: "a1@5 ~ e1 f#1 g1@6 ~ g1", Q: "f#1@5 ~ f#1 d1 e1@7 ~", R: "e1 f#1 g1@2 a1 b1 c#2 a1 d2@6 ~ d2",
S: "a1@3 ~ a1@3 ~ d1@6 ~ a1", T: "d2@6 d2 c#2 b1@7 b1", U: "b1@5 ~ d1 d#1 e1@7 e1", V: "e1@6 f#1 g1 a1@7 a1",
W: "a1@6 d2 a1 d1@6 ~ a1", X: "d2@5 ~ d2 c#2 b1@6 ~ b1", Y: "b1@5 ~ d1 d#1 e1@6 ~ e1", Z: "e1@5 ~ f#1 g1 a1@6 ~ a1",
AA: "a1@5 ~ c#2 a1 f#1@6 ~ a1", AB: "a1@6 ~ a1 a1@3 ~ a1!3 c#2", AC: "g1@6 ~ g1 f#1@5 ~ f#1 d1",
AD: "e1@7 ~ e1 f#1 g1@2 a1 b1 c#2 a1", AE: "d2@6 ~ d2 e1@3 ~ f#1@2 ~ e1", AF: "g1@6 ~ g1 f#1@6 f#1 d1",
AG: "e1@3 ~ a1@3 ~ d2@5 ~ d2 c2", AH: "a#1@6 ~ a#1 a1 d2 c2 a1 f1 g1 a1 f1", AI: "a1@6 ~ a1 a1@6 ~ a1",
AJ: "a#1@2 a#1@2 a#1@2 a#1!2 a#1@2 a#1@2 a#1 c2 d2 a#1", AK: "d#2@8 ~ d2@3 d2@2 ~ a#1", AL: "c2@6 ~ c2 a#1@5 ~ f1 g1",
AM: "g#1@6 ~ g#1 g1@5 ~ g1 d#1", AN: "f1@7 ~ f1 g1 g#1@2 a#1 c2 d2 a#1", AO: "d#2@6 ~ d#2 d2@5 ~ d2 a#1",
AP: "d#2@5 ~@11",
})).s("gm_acoustic_bass").gain(0.35)
// chords · string ensemble 2 · "STRINGS"
const string_ensemble_2 = note(`<
A B C D ~@7 E@3 F@3 G H@3 I J K L@2 ~@6 M@3 N O P@2 Q O R S T U V W X Y Z AA AB AC AD AE AF@2 AG AH AI AJ AG AH AI AK
AL AM AN AO
>`.pickRestart({
A: "[d4,f#4,a4] [c#4,e4,a4]", B: "a4@4 g4@4 [a3,c#4,f#4]@7 a4, [b3,d4] ~", C: "[g4,b4,d5]@2 [g4,b4,d5] [e4,a4,c#5]",
D: "[a5,a6]@3 ~", E: "[[c#4,e4]@2 ~@4 e4 ~@2 a4 [a5,d6,f#6]@2, a3 b3 ~, ~ d4@3 e4 ~, ~@2 f#4@4 ~ a4@2 ~@3]/3",
F: "[[e5,a5,c#6]@4 [a5,c#6,e6]@4 [g4,b4]@8 ~@4 f#5@2 f#5 a5 d5@16 [g4,b4,e5]@8, ~@2 d5@3 ~ d6@6, ~@2 [f#4,a4] ~@3]/3", // A G Em F#m
G: "[e4,g4] [f#4,a4] [g4,b4]@2 [g4,b4]@2 [f#4,a4]@2 f#6@4 f#6@2 b6@2, ~ [a5,d6]", // Em F#m G F#m D5
H: "[[e5,a5,c#6,a6]@4 [a5,c#6,e6]@4 [g4,b4]@8 ~@4 f#5@2 f#5 a5 d6@8 a5@8 [g4,b4,d5]@8, ~@2 d5@3 ~ d5@4 ~@2, ~@2 [f#4,a4] ~@3]/3", // A G F#m
I: "[e4,g4] [f#4,a4] [g4,b4]@2 [g4,b4]@2 [f#4,a4]@2 [d4,f#4,a4,d5,a5,d6]@8", // Em F#m G F#m D
J: "[c#4,e4,a4,c#5]@2 a4 g4, ~ [b3,d4,b4]", K: "[c#4,f#4,a4] [d4,g4,b4]",
L: "[[d4,g4,b4] [c#4,e4,a4] [a5,a6]@3 ~@3]/2", // G A
M: "[~@2 [c#4,e4]@2 ~@4 e4 a4 ~ a4, ~ a3@2 b3@2 ~, ~@2 d4@3 e4, ~ f#4 ~]/3", // C#m
N: "[a5,d6,f#6]@2 [e5,a5,c#6] [a5,c#6,e6]", O: "[g4,b4]@8 ~@4 f#5@2 f#5 a5, d5@3 ~, ~ [f#4,a4]",
P: "[d5@16 [g4,b4,e5]@8 [e4,g4] [f#4,a4] [g4,b4]@2 [g4,b4]@2 [f#4,a4]@2, d6@3 ~]/2", // Em F#m G F#m
Q: "f#6@2 f#6 b6 [e5,a5,c#6,a6]@2 [a5,c#6,e6]@2, [a5,d6] ~", R: "d6 a5, d5",
S: "[g4,b4,d5]@8 [e4,g4] [f#4,a4] [g4,b4]@2 [g4,b4]@2 [f#4,a4]@2", // G Em F#m G F#m
T: "[d4,f#4,a4,d5]@8 c6 b5 a5@2 d6@2 a5@2, ~@2 [g4,c5,e5] [a4,d5,f#5]", // D C D
U: "b3@2 g3@2 a3@3 f#3, [g4,b4,d5] [a4,c#5,e5]", V: "[g4,b4,d5]@4 [g4,b4]@2 [b4,d5]@2 [f#4,a4,c#5,e5]@7 f5, g3 ~",
W: "[f5,f6]@10 [e5,e6] [d5,d6] [c5,c6] [a4,a5] [f4,f5] [g4,g5]", X: "a4@6 a4 g4 a4@8, a5",
Y: "a#3 c4 a#3 c4 a#3 c4 a#3 c4 a#3 c4 a#3 c4 [d3,d4,d#4] [d#3,f3,g3,g#3,a#3,f4,g4,g#4,a#4] [c4,d4,d#4,f4,c5,d5,d#5,f5] [g4,g#4,a#4,c5,g5,g#5,a#5,c6], a#5@15 ~", // D#maj7 D# Dm7 C7
Z: "[a#4,d#5,g5,d#6]@6 ~@3 [a#4,d5,f5,d6]@3 [a#4,a#5]@2 [g4,g5] [a#4,a#5], [d5,d6] ~@15", // D# A# G A# D
AA: "g#5@6 c6 d6 d#6@6 g5 f5, g#4 [a#3,d#4,g4]", AB: "[g#4,c5,d#5]@4 g4 ~ f4 d#4, ~ a#4, ~@4 d#4@3 ~, ~@5 g4@3",
AC: "[g#3,c4,d#4,f4]@8 [g#3,f4,g#4] [a#3,g4,a#4] [c4,g#4,c5]@2 [c3,d3,c4,d4,g#4,c5] [d#3,f3,g3,g#3,d#4,f4,g4,g#4] [a#3,c4,d4,d#4,f4,a#4,c5,d5,d#5,f5] [g4,g#4,a#4,g5,g#5,a#5]", // Fm7 C# D# Fm Dm7b5 Fm7 A# Gm
AD: "[c5,d5,c6,d6] ~@7 d6@4 c6@4, [d#5,d#6] [f4,a#4], ~@4 d5@3 ~", // Csus2 D# A#5
AE: "a#5@6 g#5@2 [g4,a#4,g5]@4 ~ f5 g5 f5, d#5@6 [g4,a#4,d#5] ~, [g#4,c5]@2 ~ d#4", // Gm D# G#
AF: "[[g#4,c5]@8 [g4,a#4]@8 [f4,g#4,c5]@8 [g#3,f4,g#4] [a#3,g4,a#4] [c4,g#4,c5]@2 [c3,d3,c4,d4,g#4] [d#3,f3,g3,g#3,d#4,f4,g4,g#4] [a#3,c4,d4,d#4,f4,a#4,c5,d5,d#5,f5] [g4,g#4,a#4,c5,g5,g#5,a#5,c6], d#5@14 c5 ~]/2", // G# Gm Fm C# D# Fm Dm7b5 Fm7 …
AG: "[g4,a#4,d#5,d#6]@2 [a#4,d5,f5,d6] [d5,f5,a#5,f6], [d5,d6] ~@15", AH: "[d#5,g#5,c6]@2 [d#4,g4,a#4] [a#3,d#4,g4]",
AI: "[c4,g#4] [a#3,g4], d#4", // Fm D#
AJ: "[g#3,c4,d#4,f4]@8 [g#3,f4,g#4] [a#3,g4,a#4] [c4,g#4,c5]@2 [c3,d3,d#3,c4,d4,d#4,g#4] [f3,g3,g#3,a#3,f4,g4,g#4,a#4] [c4,d4,d#4,f4,c5,d5,d#5,f5] [g4,g#4,a#4,c5,g5,g#5,a#5,c6], ~@6 c5 ~", // Fm7 C# D# Fm G# Gm7 Dm7 C7
AK: "[g#3,c4,d#4,f4]@8 [g#3,f4,g#4] [a#3,g4,a#4] [c4,g#4,c5]@2 [c3,d3,d#3,c4,d4,d#4,g#4] [f3,g3,g#3,a#3,f4,g4,g#4] [c4,d4,d#4,f4,c5,d5,d#5,f5] [g4,g#4,a#4,c5,g5,g#5,a#5,c6], ~@6 c5 ~, ~@13 a#4@2 ~", // Fm7 C# D# Fm G# Gm7 Dm7 C7
AL: "[d#4,g4,a#4,d#5,d#6] [d4,f4,a#4,d5], [d5,d6] ~@15", AM: "a#4@2 g#4@2 g4@3 a#4, [c4,d#4] [a#3,d4]",
AN: "[d#4,g#4,c5,d#5]@7 f5 [g#4,c5,d#5]@4 [g#4,a#4,d5]@4", AO: "[d#1,d#4,g4,a#4,d#5,a#5]",
})).s("gm_string_ensemble_2").gain(0.12).pan(0.6)
// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
A B C D E F G H I J K L M N O P Q R O P Q R S T U V W X Y Z AA AB AC AD AE A AF AG AH A AF AG AH AI AJ AK AL AM AN AO
AP AQ AR AS AP AQ AR AS AP AQ AR AS AP AQ AR AT AU AV AW
>`.pickRestart({
A: "[d4,f#4,a4] [c#4,e4,a4]", B: "[b3,d4,a4] [b3,d4,g4] [a3,c#4,f#4]@2", C: "[g3,b3,d4]@2 [g3,b3,d4] [g3,c#4,e4]",
D: "[a3,d4,f#4]@3 [d4,f#4,a4] [a3,d4,f#4]@3 [d4,f#4,a4]", E: "[a3,c#4,e4] [d4,f#4,a4]",
F: "[d4,g4,b4]@8 [b3,d4,g4]@6 b3 a4", G: "[d4,g4,b4]@2 [d4,g4,b4] [c#4,e4,a4]", H: "[d4,f#4,a4]!2",
I: "[a3,c#4,e4]@4 [a3,d4,f#4]@3 [a3,c#4,e4]", J: "[g3,b3,d4]@4 [b3,d4,g4]@2 g3 b3",
K: "[g3,b3,d4,g4]@2 [d4,g4,b4] [e4,a4,c#5]", L: "[a3,c#4,e4]@4 [a3,d4,f#4]@3 [a3,d4,f#4]",
M: "[b3,d4,f#4] [g3,b3,e4]", N: "[d4,e4,a4] [d4,f#4,a4]", O: "[c#4,e4,a4] [b3,d4,g4]",
P: "[a3,d4,f#4]@2 a4 g4, ~ [b3,d4]", Q: "a4 f#4 [b3,d4,g4]@2, [a3,d4] ~", R: "g3 a3 b3@2 b3@2 a3@2 [d4,f#4,a4]@8",
S: "[c#4,e4,a4]@2 [b3,d4,a4] [b3,d4,g4]", // A Bm7 G
T: "[a3,c#4,f#4]@2 [a3,c#4,f#4]@2 [a3,c#4,f#4]@2 [a3,c#4,f#4]@2 ~@2 b3@2 d4@2 g4 ~", // F#m
U: "[g3,b3,d4]@2 [a3,c#4]@2 [e4,f#4,a4]@3 [e4,f#4,a4]", V: "[d4,f#4,a4]@3 f#4 [a3,c#4,e4]@3 [c#4,e4,a4]",
W: "[a3,d4,f#4]@3 [a3,d4,f#4] [d4,g4,b4]@4", X: "[b3,d4,g4]@6 b3 a4 [d4,g4,b4]@8",
Y: "[d4,g4,b4] [c#4,e4,a4] [d4,f#4,a4]@2", Z: "[d4,f#4,a4] [a3,c#4,e4]", AA: "[a3,d4,f#4]@3 [a3,c#4,e4] [g3,b3,d4]@4",
AB: "[b3,d4,g4]@2 g3 b3 [g3,b3,d4,g4]@4", AC: "[d4,g4,b4] [e4,a4,c#5] [a3,c#4,e4]@2",
AD: "[a3,d4,f#4]@3 [a3,d4,f#4] [b3,d4,f#4]@4", AE: "[g3,b3,e4] [d4,e4,a4]", AF: "[b3,d4,g4] [a3,d4,f#4]",
AG: "a4 g4 a4 f#4, [b3,d4] [a3,d4]", AH: "[b3,d4,g4]@8 g3 a3 b3@2 b3@2 a3@2",
AI: "[d4,f#4,a4]@7 ~ [e4,g4,c5]@4 [f#4,a4,d5]@4", AJ: "a4 g4 [c#4,e4,a4]@2, [b3,d4]@7 ~@9",
AK: "[b3,d4,g4]!2 [a3,c#4,e4] [c#4,e4,a4]", AL: "[a#3,d4,f4]@4 f4@2 f4 g4, ~ [a3,c4]",
AM: "[b3,d4,a4]@7 d4 a4 g4 e4 d4 a4 g4 e4 d4", AN: "a#4 g#4 f4 d#4 a#4 f4 a#4 g#4 [g#4,c5]@8",
AO: "[d#4,g4,a#4]@7 ~@2 [d4,f4,a#4]@7", AP: "[c4,d#4,g#4] [a#3,d#4,g4]", AQ: "a#4 g#4 a#4 g4, [c4,d#4] [a#3,d#4]",
AR: "[c4,d#4,g#4]@8 g#3 a#3 c4@2 c4@2 a#3@2", AS: "[d#4,g4,a#4] [d4,f4,a#4]", AT: "[d#4,g4,a#4]@2 c5 a#4, ~ [d4,f4]",
AU: "[c4,d#4,a#4] [c4,d#4,g#4] [a#3,d4,g4]@2", AV: "a#4 g#4 [g#3,c4,d#4] [a#3,d4,f4], [c4,d#4] ~",
AW: "[d#4,g4,a#4] ~", // D#
})).s("gm_epiano2").gain(0.24).pan(0.7)
// other · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
~@13 A B C ~@7 D@2 ~@10 E ~ F ~@11 G ~ H ~ I ~ H ~ I ~ H ~ I ~ H ~@5
>`.pickRestart({
A: "~@8 a3!2 b3 d4 a3 b3 d4 e4", B: "e4 ~@7", C: "~@8 d4 a3 b3 d4 ~ b3 e4 a3",
D: "[~@4 d4 c#4 ~@2, ~@5 b3@2 g4@2 ~@7, ~@3 d4 ~@4]/2", E: "a3!2 b3 d4 a3 b3 d4 e4 e4@2 ~@6",
F: "d4 a3 b3 d4 ~ b3 e4 a3 ~@8", G: "a#3!2 c4 d#4 a#3 c4 d#4 f4 ~@8", H: "d#4 a#3 c4 d#4 ~ c4 f4 a#3 ~@8",
I: "a#3!2 c4 d#4 a#3 c4 d#4 f4 d#4@2 ~@6",
})).s("gm_acoustic_guitar_steel").gain(0.2).pan(0.4)
// chords · french horn · "FR.HORN"
const french_horn = note(`<
~@2 A B ~@7 C D E ~ F G H ~ F G I ~ J K ~@3 L M N O P N Q ~@2 R S ~@2 R T ~@3 U V W ~@2 X ~@3 Y Z ~@2 Y Z ~@2 Y Z ~@4
>`.pickRestart({
A: "~@14 d4 [e4,f#4,g4,a4,b4,c#5]", B: "[d5,e5,f#5,g5] ~@15, a5",
C: "[f#4,a4,c#5] ~ [f#4,a4,c#5] ~ [f#4,a4,c#5] ~ [f#4,a4,c#5] ~ [f#4,a4,d5] ~ [f#4,a4,d5] ~ [f#4,a4,d5] ~ [f#4,a4,d5] ~", // F#m D
D: "[g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~", // G
E: "[d5,e5,a5] ~ [d5,e5,g5] ~ [d5,e5,a5] ~ [d5,e5,a5] ~@9", F: "~@2 a4 g4", G: "a4@4 f#4@4 g4@7 ~",
H: "g3 a3 b3@2 b3@2 a3@2 ~@8", I: "g3 a3 b3@2 b3@2 a3 ~@9", J: "~@10 b3 ~ d4 ~ g4 ~", K: "d4 ~@3 c#4 ~@11",
L: "~@8 [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~", // D
M: "[a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~", // D A
N: "[a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~", // D G
O: "[b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~", // G
P: "[b4,d5,f#5] ~ [b4,d5,f#5] ~ [a4,c#5,e5] ~ [c#5,e5,a5] ~ [c#5,e5,a5] ~ [c#5,e5,a5] ~ [c#5,e5,a5] ~ [c#5,e5,a5] ~", // Bm A
Q: "[g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [d5,e5,a5] ~ [d5,e5,g5] ~ [d5,e5,a5] ~ [d5,e5,a5] ~", // G Dsus2 Em7 Dsus2
R: "a4 g4 a4 f#4", S: "g4@7 ~ g3 a3 b3@2 b3@2 a3@2", T: "g4@7 ~ g3 a3 b3@2 b3@2 a3 ~", U: "f4@4 f4@2 f4 g4",
V: "a4@15 ~", W: "a#4@15 ~", X: "a#4 g#4 g4@2", Y: "a#4 g#4 a#4 g4", Z: "f4 ~",
})).s("gm_french_horn").gain(0.04)
// other · tubular bells · "TUBULARBEL"
const tubular_bells = note(`<
A B C D ~@3 E F ~@5 G@2 ~ H I J@2 K L M N@2 ~@3 O P ~@4 Q R S ~ T U V ~ W P ~@5 X Y ~@2 X Y ~@2 X Y ~@2 X Y ~ Z AA AB
AC
>`.pickRestart({
A: "~@4 f#5 g5 a5@2 b5@4 a5@4", B: "~@4 f#5 e5 d5 c#5", C: "d5@7 e5 d5@4 c#5@4", D: "a5 ~@7", E: "~@4 a5 f#5 e5 d5",
F: "c#5@7 d5 a5@8", G: "~@6 f#5 e5 d5@7 ~", H: "~@4 f#5@2 f#5 b5", I: "a5@4 e5@4 d5@7 ~",
J: "[~@6 f#5 a5 d6@16 ~@8]/2", K: "~@12 f#5 g5 a5@2", L: "b5 a5 ~@2", M: "f#5@2 e5@2 d5@2 c#5@2 d5@7 e5",
N: "[d5@4 c#5@4 a5@15 ~@9]/2", O: "a5@2 f#5@2 e5@2 d5@2 c#5@7 d5", P: "a5 ~", Q: "~@14 f#5 e5", R: "d5@7 ~@7 f#5 e5",
S: "d5@7 ~@9", T: "f#5@2 f#5 b5 a5@2 e5@2", U: "d5@7 ~@7 f#5 a5", V: "d6",
W: "~@5 a5 d6 a5, ~@4 c6 ~@3, ~@9 b5@4 ~@3", X: "~@14 g5 f5", Y: "d#5@7 ~@9", Z: "~@4 g5 g#5 a#5@2 c6@4 a#5@4",
AA: "~@4 g5 f5 d#5 d5", AB: "d#5@7 f5 d#5@4 d5@4", AC: "a#5@13 ~@3",
})).s("gm_tubular_bells").gain(0.25)
// drums · kick
const kick = s("bd").struct(`<
~@3 A@8 B@2 C B D@2 E B D@2 E C@2 F C@7 B@3 A G@2 H A G@2 H A G@2 I B@2 J K B H A K B G B G B G B G B G ~@4
>`.pickRestart({
A: "x ~@6 x!2 ~@7", B: "x!2", C: "x ~@7 x ~@6 x", D: "x ~@2 x!2 ~@3", E: "x ~@3 x ~ x ~ x ~@6 x",
F: "x ~@3 x ~@3 x ~@6 x", G: "x ~@3 x ~@2 x", H: "x ~@3 x ~ x!2", I: "x ~@6 x!2 ~@3 x ~ x ~",
J: "x ~@8 x ~@2 x ~@2 x", K: "x ~@6 x!2 ~@5 x ~",
})).gain(0.25)
// drums · rim
const rim = s("rim").struct("<~@11 [~ x ~ x]!2 ~@11 [~@3 x] [~ x ~ x]!9 [~ x ~@2] ~@34>").gain(0.22)
// drums · snare
const snare = s("sd").struct("<~@13 A B@7 C ~@13 B@13 D B@7 D B@7 E ~@4>".pickRestart({
A: "~@3 x", B: "~ x ~ x", C: "~ x ~@2", D: "~@4 x ~@6 x ~@4", E: "~@4 x ~@6 x!2 ~@3",
})).gain(0.29)
// drums · hihat
const hihat = s("hh").struct("<~@11 A@2 B A@5 C A D ~@2 E A@22 F G H G A@5 I G@5 F G@2 J K@2 L>".pickRestart({
A: "x!8", B: "x!3 ~ x!4", C: "x!2 ~ x!5", D: "x!4 ~@4", E: "~@4 x!4", F: "x ~ x ~ x ~ x!3 ~ x ~ x ~ x!2",
G: "x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~", H: "x!4 ~@2 x!2", I: "x!2 ~ x!2 ~ x ~ x!2 ~ x!2 ~ x ~", J: "~@3 x", K: "~ x ~ x",
L: "x",
})).gain(0.25)
// drums · low tom
const low_tom = s("lt").struct("<~@13 A ~@20 B ~@13 B ~@15 C ~@4>".pickRestart({
A: "~@7 x ~@8", B: "~@15 x", C: "~@7 x",
})).gain(0.32)
// drums · mid tom
const mid_tom = s("mt").struct("<~@13 A ~@20 B ~@13 B ~@7 B ~@12>".pickRestart({
A: "~@3 x ~@4", B: "~@7 x",
})).gain(0.32)
// drums · open hat
const open_hat = s("oh").struct(`<
~@15 A ~ A ~ A ~ A ~@2 A ~ A ~ A ~ A ~ A ~@3 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B@2 A ~ B ~ B ~ B ~@6
>`.pickRestart({
A: "~@7 x ~@8", B: "~@15 x",
})).gain(0.25)
// drums · high tom
const high_tom = s("ht").struct("<~@13 A ~@20 B ~@13 C ~@7 C ~@12>".pickRestart({
A: "~@3 x!3 ~@10", B: "~@11 x ~ x ~@2", C: "~@12 x!2 ~@2",
})).gain(0.32)
// drums · crash
const crash = s("cr").struct("<~@13 A ~@3 A ~@17 B ~@3 B ~@9 C ~@3 B ~@3 B ~@7 B ~@3>".pickRestart({
A: "~ x", B: "x", C: "x ~@8 x ~@6",
})).gain(0.29)
// drums · tambourine
const tambourine = s("tb").struct("<[~ x ~ x]!13 [~@3 x] [~ x ~ x]!29 ~@10 [~ x ~ x]!2 ~@14>").gain(0.32)
stack(
bass, string_ensemble_2, epiano2, acoustic_guitar_steel, french_horn, tubular_bells, kick, rim, snare, hihat, low_tom,
mid_tom, open_hat, high_tom, crash, tambourine
)
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.