Strudelify
The Power Of Goodbye cover art

1998 · Ray of Light

The Power Of Goodbye

Madonna

KeyA♭ majorTempo84 bpm
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