0:00/0:00
// Love Will Save The Day — Whitney Houston
// 122 bpm, 4/4, key D# minor. 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 160 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(122/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 · synth bass 2 · "SYN BASS 2"
const synth_bass_2 = note(`<
~@9 A B C A@2 B C A@2 B C A@2 B C A D E F G D E F H I J ~@22 A B C A@2 B C A@2 B C A@2 B C A D E F G D E F H I J ~@23
A B C A@2 B C A D E F G D E F H I K ~@36
>`.pickRestart({
A: "[eb4,gb4]!3 [bb3,eb4] [eb4,gb4]!2 ~ [eb4,gb4] ~@8", B: "~ [eb4,gb4]!2 [b3,eb4] [eb4,gb4]!2 ~ [eb4,gb4] ~@8",
C: "~ [e4,ab4]!2 [b3,e4] [e4,ab4]!2 ~ [e4,ab4] ~@8", D: "~@2 [b3,eb4,gb4]!4 ~ [b3,eb4,gb4] ~@8",
E: "~@2 [bb3,db4,gb4]!4 ~ [bb3,db4,gb4] ~@8", F: "~@2 [a3,db4,gb4]!4 ~ [a3,db4,gb4] ~@8",
G: "~@2 [ab3,c4,eb4]!4 ~ [c4,eb4,ab4] ~@8", H: "~@2 [c4,eb4,ab4]!4 ~ [c4,eb4,ab4] ~@8",
I: "~@2 [ab3,db4] ~ [ab3,db4]!2 ~ [ab3,db4] ~ [ab3,db4] ~ [ab3,db4]!2 ~ [ab3,db4] ~", // Db5
J: "[ab3,db4] ~ [ab3,db4] ~ [ab3,db4]!2 ~ [ab3,db4] ~ [ab3,db4] ~ [ab3,db4]!2 ~ [ab3,db4] ~", // Db5
K: "[bb3,eb4] ~ [bb3,eb4] ~ [bb3,eb4]!2 ~ [bb3,eb4] ~ [bb3,eb4] ~ [bb3,eb4]!2 ~ [bb3,eb4] ~", // Eb5
})).s("gm_synth_bass_2").gain(0.48)
// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
~ A@7 B A C D A@2 C D A@2 C D A@2 C D A E F G H I J G H K@2 L H M L@2 H M L@2 H M L@2 H M L N L N A@4 C D A@2 C D A@2
C D A@2 C D A E F G H I J G H K@2 L H M L@2 H M L@2 H M L@2 H M L N L N L@4 A C D A@2 C D A E F G H I J G H K O P J Q
R P J Q R P J Q R P J Q R P J Q R P J Q R P J Q R P J Q R L R L S
>`.pickRestart({
A: "eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3!2 ~ eb3!2 ~ eb3 ~", B: "eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3!2 ~ eb3!2 ~ eb3@2",
C: "ab3 ~ ab3 ~ ab3 ~ ab3 ~ ab3!2 ~ ab3!2 ~ ab3 ~", D: "e3 ~ e3 ~ e3 ~ e3 ~ e3!2 ~ e3!2 ~ e3 ~",
E: "b3 ~ b3 ~ b3 ~ b3 ~ b3!2 ~ b3 ~ b3 ~ b3", F: "bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3!2 ~ bb3 ~ bb3 ~ bb3",
G: "a3 ~ a3 ~ a3!2 ~ a3 ~ a3 ~ a3!2 ~ a3 ~", H: "ab3 ~ ab3 ~ ab3!2 ~ ab3 ~ ab3 ~ ab3!2 ~ ab3 ~",
I: "b3 ~ b3 ~ b3!2 ~ b3 ~ b3 ~ b3!2 ~ b3 ~", J: "bb3 ~ bb3 ~ bb3!2 ~ bb3 ~ bb3 ~ bb3!2 ~ bb3 ~",
K: "db4 ~ db4 ~ db4!2 ~ db4 ~ db4 ~ db4!2 ~ db4 ~", L: "eb3 ~ eb3 ~ eb3!2 ~ eb3 ~ eb3 ~ eb3!2 ~ eb3 ~",
M: "e3 ~ e3 ~ e3!2 ~ e3 ~ e3 ~ e3!2 ~ e3 ~", N: "db3 ~ db3 ~ db3!2 ~ db3 ~ db3 ~ db3!2 ~ db3 ~",
O: "eb4 ~ eb4 ~ eb4!2 ~ eb4 ~ eb4 ~ eb4!2 ~ eb4 ~", P: "f4 ~ f4 ~ f4!2 ~ f4 ~ f4 ~ f4!2 ~ f4 ~",
Q: "gb3 ~ gb3 ~ gb3!2 ~ gb3 ~ gb3 ~ gb3!2 ~ gb3 ~", R: "f3 ~ f3 ~ f3!2 ~ f3 ~ f3 ~ f3!2 ~ f3 ~", S: "f3@3 ~@13",
})).s("gm_acoustic_bass").gain(0.72)
// chords · synth brass 1 · "SYNBRASS 1"
const synth_brass_1 = note(`<
~@35 A B C@2 A B C@2 A B C@2 A B D@2 E@2 F ~@29 A B C@2 G B C@2 A B C@2 A B D@2 H@2 I@2 ~@21 J K L@2 J K L@2 J K L@2 J
K L@2 J K L@2 J K L@2 J K L@2 J K L@2 M@2 N ~
>`.pickRestart({
A: "[bb4,eb5,gb5]@7 [bb4,eb5,gb5] ~ bb4 db5 ~ bb4 ~ ab4@2", // Ebm
B: "[b4,eb5,gb5]@7 [bb4,b4,eb5,gb5] ~ bb4 db5 ~ bb4 ~ ab4@2", // B Bmaj7
C: "[[e4,ab4,b4,gb5]@6 ~ [e4,ab4,b4,gb5] ~ ab4 b4 ~ ab4 ~@3 eb5@4 eb5@2 ~ [bb4,eb5,gb5] ~ bb4 db5 ~ bb4 ~ ab4 ~, ~@14 gb4@5 ~@13, ~@8 [bb4,gb5]@3 ~@5]/2", // E Ebm
D: "[[e4,ab4,b4,gb5]@6 ~ [e4,ab4,b4,gb5] ~ ab4 b4 ~ ab4 ~@3 eb5@4 eb5@2 ~ [bb4,eb5,gb5] ~ bb4 db5 ~ bb4 ~ ab4@2, ~@14 gb4@5 ~@13, ~@8 [bb4,gb5]@3 ~@5]/2", // E Ebm
E: "[[ab4,b4,eb5,gb5]@5 ~ [ab4,b4,eb5,gb5] ab4 ~ ab4 b4 ~ ab4 ~@3 [bb4,eb5,gb5]@6 ~ [bb4,eb5,gb5] ~ bb4 db5 ~ bb4 ~ ab4@2, ~@14 gb4@7 ~@11]/2", // Abm7 Ebm
F: "[ab4,b4,eb5,gb5]@6 ~ [ab4,b4,eb5,gb5] ~ ab4 b4 ~ ab4 ~@3", G: "[bb4,eb5]@7 [bb4,eb5,gb5] ~ bb4 db5 ~ bb4 ~ ab4@2",
H: "[[ab4,b4,eb5,gb5]@6 [ab4,b4,eb5,gb5] ab4 ~ ab4 b4 ~ ab4 ~@3 [bb4,eb5,gb5]@6 ~ [bb4,eb5,gb5] ~ bb4 db5 ~ bb4 ~ ab4@2, ~@14 gb4@7 ~@11]/2", // Abm7 Ebm
I: "[[ab4,b4,eb5,gb5]@6 ~ [ab4,b4,eb5,gb5] ~ ab4 b4 ~ ab4 ~ gb4@6 ~@12]/2", // Abm7
J: "[c5,f5,ab5]@7 [c5,f5,ab5] ~ c5 eb5 ~ c5 ~ bb4@2", K: "[db5,f5,ab5]@7 [c5,db5,f5,ab5] ~ c5 eb5 ~ c5 ~ bb4@2",
L: "[[gb4,bb4,db5,ab5]@6 ~ [gb4,bb4,db5,ab5] ~ bb4 db5 ~ bb4 ~@3 f5@4 f5@2 ~ [c5,f5,ab5] ~ c5 eb5 ~ c5 ~ bb4 ~, ~@14 ab4@5 ~@13, ~@8 [c5,ab5]@3 ~@5]/2", // Gb Fm
M: "[[bb4,db5,f5,ab5]@6 [bb4,db5,f5,ab5] bb4 ~ bb4 db5 ~ bb4 ~@3 [c5,f5,ab5]@6 ~ [c5,f5,ab5] ~ c5 eb5 ~ c5 ~ bb4@2, ~@14 ab4@7 ~@11]/2", // Bbm7 Fm
N: "[bb4,db5,f5,ab5]@6 ~ [bb4,db5,f5,ab5] ~ bb4 db5 ~ bb4 ~ ab4@2", // Bbm7
})).s("gm_synth_brass_1").gain(0.34)
// chords · synth brass 1 · "SYNBRASS 1" · soft notes
const synth_brass_1_soft = note(`<
~ A B A@5 B C ~@27 D ~@3 D ~@3 D ~@3 D ~@4 E A B C ~@27 D ~@3 D ~@3 D ~@3 D ~@4 E A@2 B C ~@19 F ~@3 F ~@3 F ~@3 F ~@3
F ~@3 F ~@3 F ~@3 F ~@5
>`.pickRestart({
A: "[bb4,eb5,gb5]@7 [bb4,eb5,gb5] ~@8", B: "[bb4,eb5,gb5]@6 ~ [bb4,eb5,gb5] ~@8", C: "[eb4,gb4,bb4] ~@3",
D: "eb5@6 ~ eb5 ~@8", E: "[bb4,eb5,gb5] ~@6 [bb4,eb5,gb5] ~@8", F: "f5@6 ~ f5 ~@8",
})).s("gm_synth_brass_1").gain(0.17)
// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
~ A B ~ C A B A ~@10 D ~ E ~ F ~ G H@8 I@2 J@2 K J@3 K J@3 K J@3 K J ~@3 B A ~@2 L ~ M ~ N ~ O ~ P Q R ~ S Q T H@8 I@2
J@2 K J@3 K J@3 K J@3 K J ~@3 A B A ~@9 H@8 I U V@2 W V@3 W V@3 W V@3 W V@3 W V@3 W V@3 W V@3 W V ~@4
>`.pickRestart({
A: "~@9 bb3 ~ bb3 db4 ~ eb4 ~", B: "~@9 bb3 ~ bb3 db4!2 eb4 ~", C: "~@8 a4 ab4 gb4 ~ eb4 gb4 ~@2",
D: "~@7 gb3 ~ gb3 ab3 gb3 eb3 ~@3", E: "~@7 bb3 ~ bb3 ab3 gb3 eb3 ~ gb3 ~", F: "~@7 gb4 ~ gb4 ~ gb4 ab4 gb4 eb4 ~",
G: "~ gb4 ~ gb4 ~ gb4 ~@2 bb4 ab4 ~ eb4@3 gb4 ~", H: "~@6 eb4 ~ db4@3 eb4 ~@4",
I: "~@2 [db3,db4] ~@2 [db3,db4] ~@2 [db3,db4] ~@2 [db3,db4] ~@2 [db3,db4] ~", // Db
J: "[eb5,gb5]!3 [bb4,eb5] [eb5,gb5]!2 ~ [bb4,eb5] ~@8", K: "[e5,ab5]!3 [b4,e5] [e5,ab5]!2 ~ [b4,e5] ~@8",
L: "~@9 gb4 ~ gb4 ab4 ~@3", M: "~@7 bb4 ~ bb4 ab4 gb4 eb4@2 gb4 ~", N: "~@7 gb4 ~ gb4 eb4 ~ gb4 ~ ab4 ~",
O: "~@7 [ab5,b5] ~ [gb5,bb5] ~ [ab5,b5] [gb5,bb5]@2 ~@2", // Abm Gb Abm Gb
P: "~@7 [gb3,gb4] ~ [gb3,gb4] [ab3,ab4] [gb3,ab4] [eb3,eb4] ~@3", Q: "~ db4 eb4 e4 ~@12",
R: "~@7 [bb3,bb4] ~ [bb3,bb4] [ab3,ab4] [gb3,gb4] [eb3,ab4] gb4 gb3 ~", // Bb Ab Gb Ab5
S: "~@7 gb4 ~ gb4 ab4 [gb4,ab4] [eb4,ab4] gb4 eb4 ~", // Gbsus2 Ab5
T: "~ gb4 [db5,gb5] [gb4,db5,gb5] ~ gb4 [bb4,eb5]!2 bb4 ab4 [ab4,db5] ~ [ab4,db5] [bb4,eb5] gb4 ~, ~@11 eb4@3 ~@2", // Gb5 Eb5 Db5 Eb5
U: "~@2 [eb3,eb4] ~@2 [eb3,eb4] ~@2 [eb3,eb4] ~@2 [eb3,eb4] ~@2 [eb3,eb4] ~", // Eb
V: "[f5,ab5]!3 [c5,f5] [f5,ab5]!2 ~ [c5,f5] ~@8", W: "[gb5,bb5]!3 [db5,gb5] [gb5,bb5]!2 ~ [db5,gb5] ~@8",
})).s("gm_electric_guitar_muted").gain(0.8)
// chords · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
~ A B A@5 B C D E C@2 D E C@2 D E C@2 D E F G H I J G H I J K L A M N B A M N B A M N B A M N B O B P Q A B C D E C@2
D E C@2 D E C@2 D E F G H I J G H I J K L A M N B A M N B A M N B A M N B O B P Q A@2 B C D E C@2 D E C@2 H I J G H I
J K R S T U V S T U V S T U V S T U V S T U V S T U V S T U V S T U V W V X ~
>`.pickRestart({
A: "[bb4,eb5,gb5]@7 [bb4,eb5,gb5] ~@8", B: "[bb4,eb5,gb5]@6 ~ [bb4,eb5,gb5] ~@8", C: "[eb4,gb4,bb4]",
D: "[eb4,ab4,b4]", E: "[e4,ab4,b4]", F: "[eb4,gb4,bb4]@15 ~", G: "[b4,eb5,gb5]", H: "[bb4,db5,gb5]",
I: "[a4,db5,gb5]", J: "[ab4,c5,eb5,gb5]",
K: "[eb4,gb4,ab4,db5] ~ [eb4,gb4,ab4,db5] ~ [eb4,gb4,ab4,db5]!2 ~ [eb4,gb4,ab4,db5]@2 ~@7", // Ebm7
L: "[eb4,gb4,ab4,db5] ~ [eb4,gb4,ab4,db5] ~ [eb4,gb4,ab4,db5]!2 ~ [eb4,gb4,ab4,eb5]@4 ~@5", // Ebm7 Ab7
M: "[b4,eb5,gb5]@7 [b4,eb5,gb5] ~@8", N: "[e4,ab4,b4,eb5,gb5]@6 ~ [e4,ab4,b4,eb5,gb5] ~@8",
O: "[ab4,b4,eb5,gb5]@5 ~ [ab4,b4,eb5,gb5] ~@9", P: "[ab4,b4,eb5,gb5]@6 ~ [ab4,b4,eb5,gb5] ~@8",
Q: "[bb4,eb5,gb5] ~@6 [bb4,eb5,gb5] ~@8", // Ebm
R: "[eb4,ab4,bb4,eb5] ~ [f4,ab4,bb4,eb5] ~ [f4,ab4,bb4,eb5]!2 ~ [f4,ab4,bb4,f5]@4 ~@5", // Ebsus4 Fm7 Bb7
S: "[c5,f5,ab5]@7 [c5,f5,ab5] ~@8", T: "[db5,f5,ab5]@7 [db5,f5,ab5] ~@8",
U: "[gb4,bb4,db5,f5,ab5]@6 ~ [gb4,bb4,db5,f5,ab5] ~@8", V: "[c5,f5,ab5]@6 ~ [c5,f5,ab5] ~@8",
W: "[bb4,db5,f5,ab5]@5 ~ [bb4,db5,f5,ab5] ~@9", X: "[bb4,db5,f5,ab5]@6 ~ [bb4,db5,f5,ab5] ~@8",
})).s("gm_epiano1").gain(0.48)
// chords · pad warm · "WARM PAD"
const pad_warm = note(`<
~@25 A B C D A B C E F@2 ~@16 G H I ~@19 A B C D A B C E F@2 ~@16 G H I ~@12 A B C D A B C E ~@34 J K L ~
>`.pickRestart({
A: "[b3,eb4,gb4]", B: "[bb3,db4,gb4]", C: "[a3,db4,gb4]", D: "[ab3,c4,eb4,gb4]", E: "[ab3,c4,eb4,gb4]@15 ~",
F: "[[gb3,ab3,db4]@31 ~]/2", G: "[ab4,b4,eb5,gb5]@15 ~", H: "[bb4,eb5,gb5]@15 ~", I: "[ab4,b4,eb5,gb5]",
J: "[bb4,db5,f5,ab5]@15 ~", K: "[c5,f5,ab5]@15 ~", L: "[bb4,db5,f5,ab5]",
})).s("gm_pad_warm").gain(0.5)
// other · vibraphone
const vibraphone = note(`<
~ A@5 B C D E F G E@2 F G E@2 F G E@2 F G H ~@29 B C D E F G E@2 F G E@2 F G E@2 F G H ~@29 A B C D E F G E@2 F G E
I@2 ~@44
>`.pickRestart({
A: "[eb4,eb5]!2 ~ [eb4,eb5] ~ [eb4,eb5] ~ [eb4,eb5]!9", B: "[eb4,eb5] ~ [eb4,eb5]!2 ~ [eb4,eb5] ~ [eb4,eb5]!9",
C: "[eb4,eb5] ~@2 [eb4,eb5] ~ [eb4,eb5] ~ [eb4,eb5]!9", // Eb
D: "[eb4,eb5] [eb4,eb5]@2 [eb4,eb5]@2 [eb4,eb5] ~ [eb4,eb5]!8 ~", E: "[eb4,gb4,bb4]", F: "[eb4,ab4,b4]",
G: "[e4,ab4,b4]", H: "[eb4,gb4,bb4]@15 ~", I: "[eb4,gb4,bb4]/2",
})).s("gm_vibraphone").gain(0.35)
// other · xylophone
const xylophone = note(`<
~@2 A ~ B ~ A ~ B ~@3 C ~@3 C ~@3 C ~@17 D ~@3 D ~@3 D ~@3 D ~@3 A ~ B ~@3 C ~@3 C ~@3 C ~@17 D ~@3 D ~@3 D ~@3 D ~@4
A ~ B ~@3 C ~@17 E ~@3 E ~@3 E ~@3 E ~@3 E ~@3 E ~@3 E ~@3 E ~@4
>`.pickRestart({
A: "~@11 gb5 bb4 ~ gb5 ~", B: "~@10 gb5!2 bb4!2 gb5 ~", C: "~@10 bb5 gb5 eb5 ~ gb5 ~", D: "~@10 ab5 gb5 eb5 ~ gb5 ~",
E: "~@10 bb5 ab5 f5 ~ ab5 ~",
})).s("gm_xylophone").gain(0.39)
// other · tubular bells · "TUBULARBEL"
const tubular_bells = note("<~@26 A B ~@2 A B ~@42 A B ~@2 C@2 ~@35 A B ~@2 A B ~@39>".pickRestart({
A: "~@8 ab5@3 ~ a5@3 ~", B: "gb5 ~@3", C: "[~@8 ab5@3 ~ a5@3 gb5@4 ~@13]/2",
})).s("gm_tubular_bells").gain(0.69)
// other · vibraphone
const vibraphone_2 = note("<~@106 A B C ~ D E F@4 ~@44>".pickRestart({
A: "~@15 gb5, ~@9 eb5@7, ~@5 gb5@2 ab5, ~@11 ab5@2 bb5@3, ~@3 eb6",
B: "eb5 ab5 db5 gb5 bb4 f5 ab4 ~@7 gb4 eb4, ~@7 db5@3 bb4@2 bb4@3 ~, ~@9 ab4@4 ab4@2 ~, ~@11 db5@4 ~",
C: "bb4 ab4 eb4 gb4 eb4 ab4 ~@2 eb4 db4 ab3 a3 ab3 db4 gb3 ~, ~@6 f4@3 ~@7, ~@7 db4@2 ~@7",
D: "~@3 eb5 ~@9 b5 ~ ab5, ~@5 f5@10 ~, ~@7 gb5@8 ~, ~@9 ab5@6 ~, ~@11 bb5@4 ~",
E: "~@9 db6 bb5 ab5 ~ eb5@2 ab5, ~@3 gb5",
F: "[~@8 ab5 eb5 ~ [f5,gb5] ~@3 eb5@2 ~@2 eb6 db6 bb5 ab5 gb5 eb5 db5 bb4 ~ gb4@32 ~@4, ~@13 f5@4 ~@10 ab4@32 ~@5, ~@7 gb5@2 ~@23]/4", // Gbmaj7
})).s("gm_vibraphone").gain(0.46)
// drums · kick
const kick = s("bd").struct("<[~@12 x!2 ~ x] [x!2]!158 ~>").gain(0.64)
// drums · snare
const snare = s("sd").struct("<A B@7 C B@15 C B@9 D B@21 C B@15 C B@9 D B@22 D B@7 C B@9 C B@35 ~>".pickRestart({
A: "~@12 x!2 ~@2", B: "~@4 x ~@7 x ~@2 x", C: "~@4 x ~@7 x ~ x!2", D: "~@4 x ~@7 x!4",
})).gain(0.72)
// drums · clap
const clap = s("cp").struct("<~@34 A ~@15 B ~@3 A ~@27 A ~@15 B ~@3 A ~@2 A ~@54>".pickRestart({
A: "~@3 x", B: "~ x ~@2",
})).gain(0.8)
// drums · low tom
const low_tom = s("lt").struct("<A ~@7 A ~@7 B ~@7 A ~@9 C ~@21 A ~@7 B ~@7 A ~@9 C ~@22 C ~@17 A ~@36>".pickRestart({
A: "~@14 x!2", B: "~@11 x!2 ~@3", C: "~@15 x",
})).gain(0.72)
// drums · hihat
const hihat = s("hh").struct("<~ [x!16]!158 ~>").gain(0.64)
// drums · mid tom
const mid_tom = s("mt").struct("<A ~@7 B ~@15 B ~@9 C ~@21 B ~@15 B ~@9 C ~@22 C ~@17 B ~@36>".pickRestart({
A: "~@10 x!4 ~@2", B: "~@12 x!2 ~@2", C: "~@7 x",
})).gain(0.72)
// drums · open hat
const open_hat = s("oh").struct(`<
~@10 A ~ A ~ A ~ A ~ A ~ A ~ A ~@13 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A@2 ~@6 A ~ A ~ A ~ A ~ A ~ A ~ A ~@13 A ~ A ~ A ~ A@3
~ A ~ A ~ A@2 ~@7 A ~ A ~ A ~ A ~@11 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@2 A ~ A ~
>`.pickRestart({
A: "~@3 x",
})).gain(0.72)
// drums · high tom
const high_tom = s("ht").struct(`<
A ~@7 B ~@15 B ~@9 C ~@18 D ~@2 B ~@15 B ~@9 C ~@18 D ~@3 C ~@17 B ~@36
>`.pickRestart({
A: "~@8 x!2 ~@6", B: "~@9 x!3 ~@4", C: "~@8 x ~ x ~ x!2 ~@2", D: "~@14 x!2",
})).gain(0.72)
// drums · crash
const crash = s("cr").struct(`<
~ A ~@7 A ~@15 A ~@8 B A ~@7 A ~@7 C@3 A ~@2 A ~@15 A ~@8 B A ~@15 C@3 A ~@2 B A ~@7 A ~@9 A ~@35
>`.pickRestart({
A: "x", B: "~@3 x", C: "~ x ~@2",
// … 22 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.