0:00/0:00
// The Power Of Goodbye — Madonna
// 84 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 89 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(84/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.
// other · lead 1 square · "THEPOWER"
const lead_1_square = note(`<
A B C B C B D E F G F G F G H I F G F G F G H I F G F G F G H I F G F G F G F G H I F G F G F G H I ~@10 F G F G F G H
I F G F G F G H I F G F G F G H I ~@5
>`.pickRestart({
A: "f2 c3 f3 c3 f2 c3 f3 c3 db2 db3 f3 ab3 db2 db3 f3 ab3",
B: "ab2 c3 eb3 ab3 ab2 c3 eb3 ab3 eb2 bb2 eb3 g3 eb2 bb2 eb3 g3",
C: "f2 c3 f3 ab3 f2 c3 f3 ab3 db2 db3 f3 ab3 db2 db3 f3 ab3",
D: "db2 db3 f3 ab3 db2 db3 f3 ab3 db2 db3 f3 ab3 db2 db3 f3 ab3",
E: "c2 c3 f3 g3 c2 c3 f3 g3 c2 c3 f3 g3 c2 c3 f3 g3", F: "f2 db2", G: "ab2 eb2", H: "db2", I: "c2",
})).s("gm_lead_1_square").gain(0.41).pan(0.9)
// other · lead 8 bass lead · "THEPOWER"
const lead_8_bass_lead = note(`<
A B C B C B D E C B C B C B D E C B C B C B D E C B C B C B D E ~@2 C B C B C B D E C B C B C B ~@12 F@2 G@2 ~@4 C B C
B C B D E C B C B C B D E ~@5
>`.pickRestart({
A: "f2 c3 f3 c3 f2 c3 f3 c3 db2 db3 f3 ab3 db2 db3 f3 ab3",
B: "ab2 c3 eb3 ab3 ab2 c3 eb3 ab3 eb2 bb2 eb3 g3 eb2 bb2 eb3 g3",
C: "f2 c3 f3 ab3 f2 c3 f3 ab3 db2 db3 f3 ab3 db2 db3 f3 ab3",
D: "db2 db3 f3 ab3 db2 db3 f3 ab3 db2 db3 f3 ab3 db2 db3 f3 ab3",
E: "c2 c3 f3 g3 c2 c3 f3 g3 c2 c3 f3 g3 c2 c3 f3 g3", F: "[f4@2 eb4@5 ~ eb4@4 c4@2 eb4@13 ~ f4@4]/2",
G: "[f4@2 eb4@5 ~ eb4@4 c4@2 eb4@14 ~@4]/2",
})).s("gm_lead_8_bass_lead").gain(0.21)
// chords · pad warm · "THEPOWER"
const pad_warm = note("<A B C D E F G@2 ~@6 H@2 ~@14 I J ~@16 K L ~@2 M@3 ~@5 N@2 O@2 P@2 ~@23>".pickRestart({
A: "[f3,c5] [db3,db5], [f4,ab4]@15 ~", B: "[ab3,ab4,c5]@7 ~ [eb3,g4,bb4]@8, eb4",
C: "f3 db3, [f4,ab4,c5], ~@8 db5 ~@7", D: "[ab3,ab4,c5]@7 ~ [eb3,g4,bb4]@8, eb4@15 ~",
E: "[f3,c5] [db3,db5], [f4,ab4]", F: "[ab3,c5]@7 ~ [eb3,g4]@8, eb4", G: "[[db3,db4,ab4] [c3,c4,g4], f4]/2",
H: "[~@12 c5@2 eb5@11 ~@7]/2", I: "~@3 c5", J: "eb5@15 ~", K: "~@3 c4", L: "eb4@7 ~",
M: "[[f4,ab4]@7 ~ g4@7 ~ ab4@8 g4@8 f3@3 ~@13, f2@17 ~@7, f3@29 ~@19, ~@4 c4@11 ~@9]/3", // Fm
N: "[f4@2 eb4@10 c4@3 eb4@14 f4@3]/2", O: "[f4@2 eb4@9 ~ c4@2 eb4@17 ~]/2",
P: "[[f4,f5]@2 [eb4,eb5]@9 ~ [c4,c5]@2 [eb4,eb5]@12 ~@6]/2", // F Eb C Eb
})).s("gm_pad_warm").gain(0.28).pan(0.1)
// chords · pad warm · "THEPOWER" · soft notes · F5
const pad_warm_soft = note("<~@5 [ab4@7 ~ bb4@8] ~@46 [c4@6 ~@2 f4@7 ~] [f4@7 ~] [[c4,f4] ~@3] ~@34>")
.s("gm_pad_warm").gain(0.21).pan(0.1)
// other · synth drum · "THEPOWER"
const synth_drum = note("<~@4 A@19 ~ A@8 ~@2 A@14 ~@2 A@8 ~@2 A@24 ~@5>".pickRestart({
A: "ab0 ~@2 ab0 ~@2 ab0 ~ ab0!2 ~ ab0 ~@2 ab0 ~",
})).s("gm_synth_drum").gain(0.63)
// bass · synth brass 2 · "THEPOWER"
const bass = note(`<
~@8 A B A B A B C D A B A B A B C D A B A B A B C D A B A B A B A B C D A B A B A B C D ~@4 E F E F ~@2 A B A B A B C
D A B A B A B C D A B A B A B C D ~@5
>`.pickRestart({
A: "f1 db1", B: "ab1 eb1", C: "db1", D: "c1", E: "f2 ~@7 bb2 ~@7", F: "ab2 ~@7 g2 ~@7",
})).s("gm_electric_bass_finger").gain(0.35).pan(0.3)
// other · tinkle bell · "THEPOWER"
const tinkle_bell = note(`<
~@16 A B A B A B C D A B A B A B C E ~@10 A B A B A B F G ~@18 A B A B A B C E A B A B A B C E ~@5
>`.pickRestart({
A: "f6 ab6 c7 ab6 f6 ab6 db7 ab6", B: "eb6 ab6 c7 ab6 eb6 g6 bb6 g6", C: "db6 f6 ab6 f6 db6 f6 ab6 f6",
D: "c6 eb6 g6 eb6 c6 eb6 g6 eb6", E: "c6@2 eb6@2 g6@2 eb6@2 c6@2 eb6@2 g6@2 eb6 ~",
F: "~ ab5 ~ db6 ~ f6 ~ db6 ~ ab5 ~ db6 ~ f6 ~ db6, db6 f6 ab6 f6 db6 f6 ab6 f6",
G: "~ g5 ~ c6 ~ eb6 ~ c6 ~ g5 ~ c6 ~ eb6 ~ c6, c6 eb6 g6 eb6 c6 eb6 g6 eb6",
})).s("gm_tinkle_bell").gain(0.13).pan(1)
// chords · lead 1 square · "THEPOWER"
const lead_1_square_2 = note(`<
~@16 A B A B A B C D A B A B A B C D A B A B A B A B C D A B A B A B C D ~@10 A B A B A B C D A B A B A B C D A B A B
A B C D ~@5
>`.pickRestart({
A: "~ [c5,f5,ab5] ~@3 [db5,f5,ab5] ~@2", B: "~ [c5,eb5,ab5] ~@3 [bb4,eb5,g5] ~@2",
C: "~ [ab4,db5,f5] ~@3 [ab4,db5,f5] ~@2", D: "~ [g4,c5,eb5] ~@3 [g4,c5,eb5] ~@2",
})).s("gm_lead_1_square").gain(0.26).pan(0)
// chords · lead 1 square · "THEPOWER"
const lead_1_square_3 = note(`<
~@16 A B A B A B C D A B A B A B C D A B A B A B A B C D A B A B A B C D ~@10 A B A B A B C D A B A B A B C D A B A B
A B C D ~@5
>`.pickRestart({
A: "~@5 [c5,f5,ab5]@2 ~@6 [db5,f5,ab5]@2 ~", B: "~@5 [c5,eb5,ab5]@2 ~@6 [bb4,eb5,g5]@2 ~",
C: "~@5 [ab4,db5,f5]@2 ~@6 [ab4,db5,f5]@2 ~", D: "~@5 [g4,c5,eb5]@2 ~@6 [g4,c5,eb5]@2 ~",
})).s("gm_lead_1_square").gain(0.16).pan(1)
// chords · acoustic guitar nylon · "THEPOWER"
const acoustic_guitar_nylon = note(`<
~@32 A B C D E@2 F G H I J D K@2 F G L ~@11 M N O@2 P Q R S M N T@2 P Q R S M N T@2 P Q R S U V W X ~
>`.pickRestart({
A: "[ab3,c4,f4] ~@2 [c4,f4] f3 ab3 [c4,f4] [ab2,db3,ab3] [db3,ab3,db4,f4] ~ [db3,ab3] [ab3,db4,f4] ~ db4 [db4,f4] db3, f2@5 ~@3 db2@7 ~, ~ ab3 ~@4 db3 ~", // Fm F5 Db5 Db Db5 Db
B: "[ab2,ab3,c4,eb4,ab4] ~ ab3 [c4,eb4,ab4] ~@2 [c4,ab4] ~ [bb3,eb4,g4] ~ [eb3,bb3] [eb4,g4] [eb3,bb3,eb4] [eb4,g4] [bb3,eb4,g4] eb3, ~@4 ab2@2 ~ eb3@2 ~@7, ~@5 [c4,eb4]@2 ~ eb2@7 ~", // Ab Fm Eb Eb5 Eb Eb5 Eb Cm
C: "[ab3,c4,f4] ~@2 [ab3,c4,f4] [f3,ab3,c4,f4] ~ [db3,ab3,c4,f4] ~ [db4,f4]@2 [db3,ab3] [ab3,db4,f4] ~ ab3 [db4,f4] [db3,ab3], f2@6 ~@2 db2@7 ~, ~@8 ab3 ~@3 db3@2 ~@2", // Fm Dbmaj7 Db Db5 Db Db5
D: "[ab2,ab3,c4,eb4,ab4] ~ ab3 [c4,eb4,ab4] ~ [c4,eb4,ab4]!2 ~ eb4@2 bb3 [bb3,eb4,g4] eb3 eb4 [bb3,eb4,g4] [c3,c4], ~@4 ab2@2 ~ [eb3,bb3]@2 ~@7, ~@4 eb2@3 ~, ~@8 g4 ~@7", // Ab Eb C Eb5
E: "[[c4,f4]@2 [f3,ab3] [ab3,c4,f4] f3 ab3 [c4,f4] [eb3,ab3] [db3,db4,f4] ~@2 [db4,f4] ~ ab3 [db4,f4] ~ [ab2,c4,eb4,ab4] ~@2 [c4,eb4,ab4] ~ c4 [eb4,ab4] bb2 [bb3,eb4,g4] ~ eb3 [eb4,g4] ~@2 [eb2,eb4,g4] [eb3,c4], f2@7 ~ db2@7 ~@5 [ab2,ab3]@3 ~ eb2@4 eb3@2 ~@2, ab3 ~@9 [db3,ab3]@2 db3@2 ~ [db3,ab3]@2 ~ ab3@2 ~@6 bb3@3 [bb3,eb4]@2 ~]/2", // F5 Fm F5 Ab5 Db Ab Ab5 Eb …
F: "[c4,f4]@2 ab3 [c4,f4] f3 ab3 [c4,f4] ~ [ab3,db4] ~ [db3,ab3] [ab3,db4,f4] db3 [ab3,db4,f4]!2 db3, f2@6 ~@2 db2@7 ~, [f3,ab3] ~@6 [db3,ab3]@2 ~@7, ~@4 f4 ~@3", // F5 Db5 Db Fm Db5
G: "[ab3,c4,eb4,ab4] ~ ab3 [c4,eb4,ab4] ~ c4 [c4,eb4,ab4] ~ [bb3,g4] ~ bb3 [bb3,eb4,g4] ~@2 [eb4,g4] eb3, ab2@2 ~@2 ab2@2 ~ eb3@3 ~@2 eb3@2 ~@2, ~@4 eb2@3 ~, ~@8 eb4@2 ~@3 bb3@2 ~", // Ab Eb
H: "[db3,ab3,db4,f4] ~@2 [db4,f4] db3 ~ [db4,f4] db3 [ab3,db4] ~@2 [db4,f4] db3 ab3 [db4,f4] c3, ~@5 ab3@2 ~ db2@6 ~@2, ~@4 f4 ab3 ~@2", // Db Db5 Db
I: "[bb3,eb4,g4] ~ [c3,c4] [c4,eb4,g4] ~@2 [eb4,g4] c3 [c4,eb4,g4] ~@2 [eb4,g4] ~@2 [eb4,g4] c3, c2@7 ~ c2@6 ~@2, ~@2 c3 ~@3 c3 ~, ~@5 c4@2 ~@3 c4@2 ~ c4@2 ~", // Eb C Cm Eb Cm Eb
J: "[f3,ab3,f4] ~@2 [ab3,c4,f4] [f3,ab3,c4,f4] ~ [db3,ab3,c4,f4] ~ [db4,f4]@2 [db3,ab3] [ab3,db4,f4] ~ ab3 [db4,f4] [db3,ab3], f2@6 ~@2 db2@7 ~, ~@8 ab3 ~@3 db3@2 ~@2", // Fm Dbmaj7 Db Db5 Db Db5
K: "[[c4,f4]@2 [f3,ab3] [ab3,c4,f4] f3 ab3 [c4,f4] [eb3,ab3] [db3,db4,f4] ~@2 [db4,f4] ~ ab3 [db4,f4] ~ [ab2,c4,eb4,ab4] ~ ab3 [c4,eb4,ab4] ~ c4 [eb4,ab4] bb2 [bb3,eb4,g4] ~ eb3 [eb4,g4] ~@2 [eb2,eb4,g4] [eb3,c4], f2@7 ~ db2@7 ~@9 eb2@5 [bb3,eb4]@2 ~, ab3 ~@9 [db3,ab3]@2 db3@2 ~ [db3,ab3]@2 ~@3 [ab2,ab3]@3 ~@2 bb3@3 eb3@2 ~@2]/2", // F5 Fm F5 Ab5 Db Ab Ab5 Eb …
L: "[db3,ab3,db4,f4]@9 ~@7", // Db
M: "[f3,ab4]@2 c4 ~ [c4,f4,ab4] ~ [f3,c4]@2 [db3,db4,f4,ab4]@2 ~@2 [db4,f4,ab4]@2 [db3,eb3] ~, ~@3 f3@2 ~@6 db3@2 ~@3", // Fm F5 Db Dbsus2
N: "[ab3,c4,eb4,ab4]@2 c4 ab3 [c4,eb4,ab4] ~ [ab3,c4] ab3 [eb3,bb3,eb4,g4] ~@3 eb3@2 [eb4,g4] ~, ab2@4 ~ bb3 ~@2, ~@11 [eb4,g4]@2 ~@3", // Ab Eb
O: "[[f3,c4,ab4] ~ c4 ~ [c4,f4,ab4] ~ [f3,c4] f3 [db3,f4,ab4]@2 ~@2 [f4,ab4] ~ [f4,ab4] eb3 [c4,eb4,ab4]@2 ~ ab3 [c4,eb4,ab4] ~ c4 ab3 [eb3,bb3,eb4,g4] ~@2 [eb4,g4] ~ [bb3,eb4,g4] eb4 eb3, f4@2 ~ f3@2 ~@2 db4@3 ~ db3@2 ~@3 ab2@8 ~@4 eb3@2 ~@2, ~@12 db4@2 ~ ab3@3 ~@8 bb3@2 ~@4]/2", // Fm F5 Db Fm Ab Eb
P: "[f4,ab4]@3 ~ [c4,ab4] ~ [f3,c4]@2 [db3,db4,f4,ab4]@2 ~@2 [db4,f4,ab4] ~ [eb3,db4] ~, [f3,c4] ~@2 f3@2 ~@11, ~@2 f4 ~@5", // Fm F5 Db Eb7 F5
Q: "[ab3,c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~ c4 ab3 [eb3,bb3,eb4,g4] ~@3 eb3@2 g4 eb3, ab2@4 ~ bb3 ~@2, ~@11 [eb4,g4]@2 ~@3", // Ab Eb
R: "[f4,ab4]@2 ~@2 [db4,f4,ab4]@2 db3 ~ [db3,f4,ab4]@2 ~@4 ab4 ~, db3@4 ~@7 [f4,ab4]@2 ~@3, ~@3 db3", // Fm Db Fm
S: "[c3,g4]@3 ~ [c4,eb4,g4] ~@3 [c3,eb4,g4]@2 ~@2 [eb4,g4] ~ c3 ~", // C5 Cm Eb
T: "[[f3,c4,ab4] ~ c4 ~ [c4,f4,ab4] ~ [f3,c4] f3 [db3,db4,f4,ab4]@2 ~@2 [f4,ab4] ~ [f4,ab4] eb3 [c4,eb4,ab4]@2 ~ ab3 [c4,eb4,ab4] ~ c4 ab3 [eb3,bb3,eb4,g4] ~@2 [eb4,g4] ~ [bb3,eb4,g4] eb4 eb3, f4@2 ~ f3@2 ~@6 db3@2 ~@3 ab2@8 ~@4 eb3@2 ~@2, ~@12 db4@2 ~ ab3@3 ~@8 bb3@2 ~@4]/2", // Fm F5 Db Fm Ab Eb
U: "[f3,c4,f4,ab4]@2 ~ f3 [f4,ab4]@2 c4 [ab2,db4,f4,ab4] ~@4 db4@2 [db3,f4,ab4] ~, f2@4 c4 ~@2 db2@6 ~@3, ~@7 db3@2 ~ db4@2 ~@4, ~@11 [db3,f4]@2 ~@3", // Fm Db
V: "[eb4,ab4] ~@3 [eb4,ab4]@2 c4 ~ [bb3,eb4,g4] ~ bb3@2 [eb3,eb4,g4] ~ bb3 ~, ab2@7 ~ eb2@6 ~@2, ~@4 c4 ~@11", // Ab5 Eb
W: "[ab3,f4] ~@2 [ab3,db4,f4] ~@2 [ab3,db4,f4]@4 ~ bb2 [ab3,db4,f4]@2 ~@2, bb1@5 bb2@5 ~@6, db4@2 ~@4 bb1@7 ~@3", // Db
X: "[c3,eb4,g4] ~@2 [c4,eb4,g4] ~@2 [c2,c4,eb4,g4]@10, c2@5 c3@11", // Cm
})).s("gm_acoustic_guitar_nylon").gain(0.28)
// chords · acoustic guitar nylon · "THEPOWER" · soft notes
const acoustic_guitar_nylon_2 = note(`<
~@32 A B C D E F G ~ H ~ C D E F G ~@13 I J K L M N O P I J K L M N O P I J K L M N O P Q R@2 S ~
>`.pickRestart({
A: "~@14 ab3 ~", B: "~@3 ab3 ab3@2 ~@4 eb4 bb3 ~@4", C: "~@2 [f3,ab3,c4] ~@13", D: "~@3 ab3 ~@6 eb3 ~ bb3 ~@3",
E: "~@8 ab3 ~@7", F: "~@5 eb4 c4 ~ eb3@2 ~@6", G: "~@3 ab3 ~@11 ab3", H: "~@3 ab3 ~@12", I: "~@14 db4 ~",
J: "~@13 bb3 ~@2", K: "~@14 db3 ~", L: "~@2 c4 ~@11 g4 ~", M: "~@10 db4 db3@4 ~", N: "~@2 c4 ~@10 bb3 ~@2",
O: "db4 ~@5 db4 ~@3 db4@4 f4 ~", P: "[c4,eb4]@3 ~@3 c3 ~@4 c3 ~@4, ~@6 c4@7 ~@3", Q: "~@2 c4 ~@8 ab4@2 ~@3",
R: "[c4 ~ c4 ~@4 eb3 ~@7 bb2@2 ~ [bb2,ab3] ~@7 ab3 ~@5]/2", S: "[g2,bb3,c4] ~ c3 ~ c3 ~@11",
})).s("gm_acoustic_guitar_nylon").gain(0.14)
// chords · electric guitar clean · "THEPOWER"
const electric_guitar_clean = note("<~@50 A B A@2 C@3 A C A ~@29>".pickRestart({
A: "~@3 ab4@5 ~@3 g4@5, f3@7 ~ f3@7 ~, ~ c4@7 ~ c4@7, ~ f4@3 ~ f4@3",
B: "~@3 ab4@5 ~@3 g4@5, f3@7 ~ f3@8, ~ c4@7 ~ c4@7, ~ f4@3 ~ f4@3",
C: "~@3 ab4@5 ~@3 g4@5, f3@7 ~ f3@7 ~, ~ c4@7 ~ c4@7, ~@2 f4@7 ~ f4@6",
})).s("gm_electric_guitar_clean").gain(0.35)
// chords · string ensemble 2 · "THEPOWER"
const string_ensemble_2 = note("<~@54 A@2 B@2 C D@2 E F@2 G H I@2 ~@8 J K J K L M N ~@6>".pickRestart({
A: "[f2,f3]/2", B: "[f2,f3,c4,f4]/2", C: "[c4,f4,ab4]@7 ~ [db4,g4]@7 ~, [f2,f3]",
D: "[[c4,f4,ab4]@7 ~@5 [bb3,c4,bb4,c5,db5] [db4,eb4,eb5] [f4,g4,ab4,f5,g5,ab5] [bb4,c5,db5,eb5,bb5,c6,db6,eb6] ~@8 [eb5,eb6]@8, [f2,f3]@9 ~@7, ~@8 g4@6 ~ [f5,f6]@8 ~@9]/2", // Fm Bbm Dbsus2 Fm Cm7 Eb F
E: "[ab4,ab5] [bb4,bb5]", // Ab Bb
F: "[[f4,f5]@8 [ab4,ab5]@16 [eb4,eb5]@3 ~ [bb3,bb4] [c4,db4,eb4,c5,db5,eb5] [f4,g4,ab4,bb4,f5,g5,ab5,bb5,c6] [c5,db5,db6]]/2", // F Ab Eb Bb Cm Fm Dbmaj7
G: "[f5,f6] [g5,g6], [eb5,eb6] ~@15", H: "[ab5,ab6] [eb5,eb6]",
I: "[[c5,db5,c6,db6]@2 ~@2 [bb4,c5,bb5,c6] [bb4,bb5] [ab4,ab5]@2 [ab4,bb4,ab5,bb5] ~@3 [g4,ab4,g5,ab5] g5@2 eb4 [c4,c5]@15 ~, ~@13 g4 ~ eb5@2 ~@15]/2", // Dbmaj7 Bbsus2 Bb Ab Absus2 Abmaj7 C
J: "c5 db5", K: "eb5 bb4", L: "~@8 db5 ~@7, c5", M: "c5 bb4", N: "ab4",
})).s("gm_string_ensemble_2").gain(0.41)
// chords · string ensemble 2 · "THEPOWER" · soft notes
const string_ensemble_2_soft = note("<~@54 A B ~@2 C D ~@23 E ~@5>".pickRestart({
A: "[f4,ab4]@8 [db4,g4,bb4]@7 ~, c4@3 ~@5", B: "[c4,f4,ab4]@7 ~ [c4,f4,g4]@7 ~", C: "~ bb4", D: "~@8 [c4,f4]@5 ~@3",
E: "g4@13 ~@3",
})).s("gm_string_ensemble_2").gain(0.28)
// drums · kick
const kick = s("bd").struct("<~@4 A@19 ~ A@8 B ~ A@14 ~@2 A@8 ~@2 A@24 ~@5>".pickRestart({
A: "x ~@2 x ~@2 x ~ x!2 ~ x ~@2 x ~", B: "x",
})).gain(0.35)
// drums · snare
const snare = s("sd").struct("<~@4 A@11 B A@7 ~ A@8 ~@2 A@14 ~@2 A@8 ~@2 A@24 ~@5>".pickRestart({
A: "~ x ~ x", B: "~@3 x!2 ~@2 x ~ x ~ x!2 ~@3",
})).gain(0.48)
// drums · hihat
const hihat = s("hh").struct(`<
~@4 A@11 B A@7 ~ A@7 C D ~ E A@2 B A@7 B A@2 ~@2 A@3 B A@4 ~@2 A@3 B A@7 B A@7 B A@4 D ~@4
>`.pickRestart({
A: "x!7 ~ x!2 ~ x!5", B: "x!16", C: "x!7 ~ x!8", D: "x", E: "~ x!6 ~ x!2 ~ x!5",
})).gain(0.28)
// drums · open hat
const open_hat = s("oh").struct("<~@4 A@19 ~ A@8 ~@2 A@14 ~@2 A@8 ~@2 A@24 ~@5>".pickRestart({
A: "~@7 x ~@2 x ~@5",
})).gain(0.48)
// drums · tambourine
const tambourine = s("tb").struct("<~@4 A@19 ~ A@8 ~@2 A@14 ~@2 A@8 ~@2 A@24 ~@5>".pickRestart({
A: "~ x ~@2",
})).gain(0.48)
// drums · shaker
const shaker = s("sh").struct(`<
~@5 A@18 ~ B C D@2 E D@3 ~@2 A@9 C D@2 E D ~@2 A@8 ~@2 C@2 D@2 E D@4 C D@2 E D@4 C D@2 E D@3 ~@5
>`.pickRestart({
A: "~@3 x ~@3 x ~@3 x ~@3 x", B: "x ~ x!2 ~@2 x!3 ~ x!2 ~@4", C: "x ~ x!2 ~@2 x!3 ~ x!2 ~@3 x",
D: "x ~ x!2 ~@2 x!3 ~ x!2 ~@2 x!2", E: "x ~ x!2 ~@2 x!3 ~ x!3 ~ x!2",
})).gain(0.35)
// drums · woodblocks
const woodblocks = s("woodblock:5").struct("<~@15 [~@5 x!3 ~ x!3 ~@4] ~@73>").gain(0.5)
stack(
lead_1_square, lead_8_bass_lead, pad_warm, pad_warm_soft, synth_drum, bass, tinkle_bell, lead_1_square_2,
lead_1_square_3, acoustic_guitar_nylon, acoustic_guitar_nylon_2, electric_guitar_clean, string_ensemble_2,
string_ensemble_2_soft, kick, snare, hihat, open_hat, tambourine, shaker, woodblocks
)
More by Madonna
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.