Strudelify

Always Have, Always Will

Ace of Base

KeyB♭ majorTempo137 bpm
0:00/0:00
// Always Have, Always Will — Ace of Base
// 137 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 8 synth choir (copy of ch 1 voice oohs)
// note: Full arrangement: all 128 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(137/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 · electric bass finger
const bass = note(`<
  ~@2 A@6 B@2 C@2 D E F@4 G@4 C@2 H@2 C@2 I@2 J@2 B@2 C@2 H@2 J@2 B@2 C@2 H@2 K@2 B@2 C@2 D E F@4 G@4 C@2 H@2 C@2 I@2
  J@2 B@2 C@2 H@2 J@2 B@2 C@2 H@2 L M N@2 O P N@2 Q@2 R S Q@2 T ~ J@2 B@2 C@2 H@2 J@2 B@2 C@2 H@2 K@2 B@2 C@2 D E U ~
>`.pickRestart({
  A: "[bb1@3 ~ f1@2 g1@4 bb1@5 ~ f1@2 g1@4 bb1@5 ~ f1@2 g1@4 bb1@5 ~ f1@2 g1@4 bb1@5 ~ f1@2 g1@4 bb1@5 ~ f1@2 g1@4 bb1@5 ~ f1@2 g1@4 bb1@5 ~ f1@2 g1@4 bb1@5 ~ f1@2 g1@4 bb1@5 ~ f1@2 g1@4 bb1@5 ~ f1@2 g1@4 bb1@5 ~ f1@2 g1@4 bb1@2]/6",
  B: "[g1@3 ~ d1@2 f1@4 g1@5 ~ d1@2 f1@4 g1@5 ~ d1@2 f1@4 g1@5 ~ d1@2 f1@4 g1@2]/2",
  C: "[c2@3 ~ g1@2 bb1@4 c2@5 ~ g1@2 bb1@4 c2@5 ~ g1@2 bb1@4 c2@5 ~ g1@2 bb1@4 c2@2]/2",
  D: "g1@5 ~ g1@5 ~ g1@4 d1@2 f1@4 g1@2", E: "f1@23 ~",
  F: "[bb1@3 ~ f1@2 g1@4 bb1@5 ~ f1@2 g1@4 bb1@5 ~ f1@2 g1@4 bb1@5 ~ f1@2 g1@4 bb1@5 ~ f1@2 g1@4 bb1@5 ~ f1@2 g1@4 bb1@5 ~ f1@2 g1@4 bb1@5 ~ f1@2 g1@4 bb1@2]/4",
  G: "[g1@3 ~ d1@2 f1@4 g1@5 ~ d1@2 f1@4 g1@5 ~ d1@2 f1@4 g1@5 ~ d1@2 f1@4 g1@5 ~ d1@2 f1@4 g1@5 ~ d1@2 f1@4 g1@5 ~ d1@2 f1@4 g1@5 ~ d1@2 f1@4 g1@2]/4",
  H: "[f1@3 ~ c1@2 d1@4 f1@5 ~ c1@2 d1@4 f1@5 ~ c1@2 d1@4 f1@5 ~ c1@2 d1@4 f1@2]/2",
  I: "[f1@3 ~ c1@2 d1@4 f1@5 ~ c1@2 d1@4 f1@5 ~@21]/2",
  J: "[bb1@3 ~ f1@2 g1@4 bb1@5 ~ f1@2 g1@4 bb1@5 ~ f1@2 g1@4 bb1@5 ~ f1@2 g1@4 bb1@2]/2",
  K: "[~@4 f1@2 g1@4 bb1@5 ~ f1@2 g1@4 bb1@5 ~ f1@2 g1@4 bb1@5 ~ f1@2 g1@4 bb1@2]/2",
  L: "bb1@7 ~@3 c1@2 bb1@7 ~ c1 ~ bb1 ~", M: "bb1@7 ~@3 c1@2 bb1@6 ~@2 c1 ~ f1 ~",
  N: "g1@7 ~ bb1 ~ d2 ~ g2@6 ~@2 d2 ~ bb1 ~", O: "bb1@7 ~@3 bb1 ~ f2@6 ~@4 f2 ~", P: "f2@6 f2@5 ~ d2@5 ~ bb1@5 ~",
  Q: "c2@4 ~@2 c2@4 ~@2 c2@4 ~@2 c2@4 bb1 ~", R: "f2@4 ~@2 f2@4 ~@2 f2@4 ~@2 f2@4 eb2 ~",
  S: "f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~", T: "f1@11 ~ f2@11 ~", U: "bb1@2 ~@2 ab1@2 ~@3 a1@2 ~@2 bb1@11",
})).s("gm_electric_bass_finger").gain(0.4)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@6 A B C D E F G ~ H B A B I D C D J K L M N F L ~ A B C D O P L M A B C D O P Q M A B I D E F R ~ A B S B C D C D E
  F L M E F L ~ A B C D T P L M U B C D T V L M ~@8 O P L M O P W ~ A B X D O P Y M A B X Z O P AA M A B C D E F G ~@3
>`.pickRestart({
  A: "[d4,f4,bb4]@2 ~@4 [d4,f4,bb4]@2 ~@4 [d4,f4,bb4]@7 ~@3 [d4,f4,bb4]@2", // Bb
  B: "~@4 [d4,f4,bb4]@2 ~@4 [d4,f4,bb4]@2 [d4,f4,bb4]@4 [d4,f4,bb4]@2 [d4,f4,bb4]@4 [d4,f4,bb4] ~", // Bb
  C: "[g4,bb4,d5]@2 ~@4 [g4,bb4,d5]@2 ~@4 [g4,bb4,d5]@7 ~@3 [g4,bb4,d5]@2", // Gm
  D: "~@4 [g4,bb4,d5]@2 ~@4 [g4,bb4,d5]@2 [g4,bb4,d5]@4 [g4,bb4,d5]@2 [g4,bb4,d5]@4 [g4,bb4,d5] ~", // Gm
  E: "[eb4,g4,bb4]@2 ~@4 [eb4,g4,bb4]@2 ~@4 [eb4,g4,bb4]@7 ~@3 [eb4,g4,bb4]@2", // Eb
  F: "~@4 [eb4,g4,bb4]@2 ~@4 [eb4,g4,bb4]@2 [eb4,g4,bb4]@4 [eb4,g4,bb4]@2 [eb4,g4,bb4]@4 [eb4,g4,bb4] ~", // Eb
  G: "[g4,bb4,d5]@2 ~@4 [g4,bb4,d5]@2 ~@4 [g4,bb4,d5]@7 ~@5", // Gm
  H: "[d4,f4,bb4]@2 ~@4 [d4,f4,bb4] ~@5 [d4,f4,bb4]@7 ~@3 [d4,f4,bb4]@2", // Bb
  I: "[g4,bb4,d5] ~@5 [g4,bb4,d5]@2 ~@4 [g4,bb4,d5]@7 ~@3 [g4,bb4,d5]@2", // Gm
  J: "[eb4,g4,bb4]@2 ~@4 [eb4,g4,bb4] ~@5 [eb4,g4,bb4]@7 ~@3 [eb4,g4,bb4]@2", // Eb
  K: "~@4 [eb4,g4,bb4] ~@5 [eb4,g4,bb4]@2 [eb4,g4,bb4]@4 [eb4,g4,bb4]@2 [eb4,g4,bb4]@4 [eb4,g4,bb4] ~", // Eb
  L: "[f4,a4,c5]@2 ~@4 [f4,a4,c5]@2 ~@4 [f4,a4,c5]@7 ~@3 [f4,a4,c5]@2", // F
  M: "~@4 [f4,a4,c5]@2 ~@4 [f4,a4,c5]@2 [f4,a4,c5]@4 [f4,a4,c5]@2 [f4,a4,c5]@4 [f4,a4,c5] ~", // F
  N: "[eb4,g4,bb4] ~@5 [eb4,g4,bb4]@2 ~@4 [eb4,g4,bb4]@7 ~@3 [eb4,g4,bb4] ~", // Eb
  O: "[eb4,g4,c5]@2 ~@4 [eb4,g4,c5]@2 ~@4 [eb4,g4,c5]@7 ~@3 [eb4,g4,c5]@2", // Cm
  P: "~@4 [eb4,g4,c5]@2 ~@4 [eb4,g4,c5]@2 [eb4,g4,c5]@4 [eb4,g4,c5]@2 [eb4,g4,c5]@4 [eb4,g4,c5] ~", // Cm
  Q: "[f4,a4,c5]@2 ~@4 [f4,a4,c5] ~@5 [f4,a4,c5]@7 ~@3 [f4,a4,c5]@2", // F
  R: "[g4,bb4,d5]@2 ~@4 [g4,bb4,d5] ~@5 [g4,bb4,d5]@7 ~@5", // Gm
  S: "[d4,f4,bb4] ~@5 [d4,f4,bb4]@2 ~@4 [d4,f4,bb4]@7 ~@3 [d4,f4,bb4] ~", // Bb
  T: "[eb4,g4,c5]@2 ~@4 [eb4,g4,c5] ~@5 [eb4,g4,c5]@7 ~@3 [eb4,g4,c5]@2", // Cm
  U: "[d4,f4,bb4] ~@5 [d4,f4,bb4]@2 ~@4 [d4,f4,bb4]@7 ~@3 [d4,f4,bb4]@2", // Bb
  V: "~@4 [eb4,g4,c5] ~@5 [eb4,g4,c5]@2 [eb4,g4,c5]@4 [eb4,g4,c5]@2 [eb4,g4,c5]@4 [eb4,g4,c5] ~", // Cm
  W: "[eb4,g4,c5]@7 ~@17", X: "[g4,bb4,d5]@2 ~@4 [g4,bb4,d5] ~@5 [g4,bb4,d5]@7 ~@3 [g4,bb4,d5]@2",
  Y: "[f4,a4,c5] ~@5 [f4,a4,c5]@2 ~@4 [f4,a4,c5]@7 ~@3 [f4,a4,c5]@2", // F
  Z: "~@4 [g4,bb4,d5] ~@5 [g4,bb4,d5]@2 [g4,bb4,d5]@4 [g4,bb4,d5]@2 [g4,bb4,d5]@4 [g4,bb4,d5] ~", // Gm
  AA: "[f4,a4,c5] ~@5 [f4,a4,c5]@2 ~@4 [f4,a4,c5]@7 ~@3 [f4,a4,c5] ~", // F
})).s("gm_electric_guitar_clean").gain(0.12).pan(0.4)

// chords · percussive organ
const percussive_organ = note(`<
  ~@6 A@2 B@2 C@2 D ~ A@4 B@4 E@2 F@2 E@2 G ~ A@2 B@2 C@2 F@2 A@2 B@2 C@2 F@2 A@2 B@2 C@2 D ~ A@4 B@4 E@2 F@2 E@2 G ~
  A@2 B@2 C@2 F@2 A@2 B@2 C@2 F@2 ~@16 A@2 B@2 C@2 F@2 A@2 B@2 C@2 F@2 A@2 B@2 C@2 D ~@3
>`.pickRestart({
  A: "[f4,bb4,d5]/2", B: "[d5,g5,bb5]/2", C: "[g4,c5,eb5]/2", D: "[d5,g5,bb5]", E: "[bb4,eb5,g5]/2", F: "[c5,f5,a5]/2",
  G: "[c5,f5,a5]", // F
})).s("gm_percussive_organ").gain(0.04)

// chords · electric guitar clean
const electric_guitar_clean_2 = note(`<
  ~@6 A@2 B@2 C@2 B ~ A@4 B@4 D@2 E@2 D@2 ~@2 A@2 B@2 C@2 E@2 A@2 B@2 C@2 E@2 A@2 B@2 C@2 B ~ A@4 B@4 D@2 E@2 D@2 ~@2
  A@2 B@2 C@2 E@2 A@2 B@2 C@2 E@2 A@2 B@2 A@2 F@2 G@2 E@2 G@2 ~@2 A@2 B@2 C@2 E@2 A@2 B@2 C@2 E@2 A@2 B@2 C@2 B ~ H ~
>`.pickRestart({
  A: "~@3 [bb3,f4,bb4,d5]@2 ~@4 [bb3,f4,bb4,d5]@2 ~", B: "~@3 [bb3,g4,bb4,d5]@2 ~@4 [bb3,g4,bb4,d5]@2 ~",
  C: "~@3 [c4,g4,c5,eb5]@2 ~@4 [c4,g4,c5,eb5]@2 ~", D: "~@3 [bb3,g4,bb4,eb5]@2 ~@4 [bb3,g4,bb4,eb5]@2 ~",
  E: "~@3 [a3,f4,a4,c5]@2 ~@4 [a3,f4,a4,c5]@2 ~", F: "~@3 [b3,g4,b4,d5]@2 ~@4 [b3,g4,b4,d5]@2 ~",
  G: "~@3 [c4,eb4,g4,c5]@2 ~@4 [c4,eb4,g4,c5]@2 ~", // Cm
  H: "[bb3,f4,bb4,d5]@3 ~@2 [bb4,d5]@3 ~ [bb3,f4,bb4,d5]@3 ~@2 [bb4,d5]@8 ~@2, ~@4 [bb3,f4]@3 ~@6 [bb3,f4]@7 ~@4", // Bb Bb5
})).s("gm_electric_guitar_clean").gain(0.16).pan(0.7)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@2 A@2 B@2 C@4 D@2 E F ~@3 G H@4 ~@4 I@4 C@4 D@2 ~@2 C@4 D@2 ~ F C@4 D@2 E F ~@3 J H@4 ~@4 I@4 C@4 D@2 ~@2 C@4 D@2 ~
  F K@2 L M N@3 O P@2 Q R S@2 T@2 C@4 D@2 ~@2 C@4 D@2 ~ F C@4 D@2 E F U ~
>`.pickRestart({
  A: "[[bb2,bb3]@2 ~@2 [f2,f3]@2 [g2,g3]@3 ~ [bb2,bb3]@4 ~@2 [f2,f3] ~ [g2,g3]@3 ~ [bb2,bb3]@4 ~@2 [f2,f3] ~ [g2,g3]@3 ~ [bb2,bb3]@5 ~ [f2,f3] ~ [g2,g3]@3 ~ [ab3,a3,f4,a4] ~]/2", // Bb F G Bb F G Bb F …
  B: "[[bb3,bb4]@2 ~@2 [f3,f4] ~ [g3,g4]@3 ~ [bb3,bb4]@3 ~@3 [f3,f4] ~ [g3,g4]@2 ~@2 [d4,d5]@4 ~@2 [bb3,bb4] ~ [c4,c5]@2 ~@2 [d4,d5]@4 ~@2 [bb3,bb4] ~ [c4,c5]@2 ~@2 [bb3,bb4] ~]/2", // Bb F G Bb F G D Bb …
  C: "[[bb3,d5,bb5]@39 ~ [eb4,eb5,eb6]@2 [d4,d5,d6]@3 ~ [bb3,d5,bb5]@49 ~]/4", // Bb Eb D Bb
  D: "[~@4 [c4,c5,c6] ~ [c4,c5,c6] ~@3 [bb3,bb4,bb5] ~@5 [g3,g4,g5] ~@5 [eb3,eb4,eb5]@23 ~@3]/2", // C Bb G Eb
  E: "[g4,g5] ~@3 [d4,d5] ~ [f4,f5] ~@2 [g4,g5]@3 ~@4 [d4,d5] ~ [f4,f5]@2 ~@2 [g4,g5] ~, g3", // G D F G D F G
  F: "[f4,f5] ~@3 [c4,c5] ~ [d4,d5]@2 ~ [f4,f5]@3 ~@12, f3", G: "~@12 [eb4,eb5]@11 ~",
  H: "[[d4,d5]@35 [a4,a5]@6 [g4,g5]@6 [d4,d5]@47 ~@2]/4", // D A G D
  I: "[[eb4,g4]@23 ~ [g4,eb5]@23 ~ f5@12 g5@12 a5@2 ~@22, [c4,c5]@47 c5@26 ~@23, ~@24 f3@13 ~@11]/4", // Eb Cm C
  J: "~@6 [eb4,eb5]@5 ~", K: "[[d4,f5]@47 ~]/2", L: "[bb3,g5] ~@2",
  M: "~@10 [d4,d5] ~ [g4,g5]@2 [d4,d5] ~ [bb3,bb4] ~ [d4,d5]@2 [bb3,bb4] ~ [d3,d4] ~", // D G D Bb D Bb D
  N: "[~@23 d5@24 ~ [d4,g4,g5]@24, [bb3,bb4]@49 ~@23]/3", O: "[eb4,eb5,eb6] [d4,d5,d6] [c4,c5,c6] [b3,b4,b5]",
  P: "[g4,c6]/2", Q: "[f3,f4]@2 ~@7 [f3,f4] ~@2 f3@2 ~@10, ~@12 f4 ~@11",
  R: "f4@2 ~@8 [f3,f4] ~ f4@2 ~@10, f3 ~@11 f3 ~@11", S: "[[c4,g4]@47 ~]/2",
  T: "[c4,f4] ~@3 [c4,f4] ~@3 [c4,f4] ~@3 [c4,f4] ~@3 [c4,f4] ~@3 [c4,f4] ~@3", // F5
  U: "[bb3,d5,bb5] ~@3 [bb3,d5,bb5] ~@4 [bb3,d5,bb5] ~@3 [bb3,d5,bb5]@10 ~", // Bb
})).s("gm_string_ensemble_1").gain(0.14)

// chords · vibraphone
const vibraphone = note(`<
  ~@2 A@6 B@2 C@2 D@2 E@2 ~@2 F@3 ~ G H I@2 J@2 K ~ L@2 M@2 N@2 O P L@2 M@2 N@2 O P Q@2 B@2 C@2 D@2 E@2 ~@2 F@3 ~ G H
  I@2 J@2 K ~ L@2 M@2 N@2 O P L@2 M@2 N@2 O P R S T ~ U V W ~ X@2 Y@2 Z@2 AA ~ L@2 M@2 N@2 O P L@2 M@2 N@2 O P Q@2 B@2
  C@2 D@2 ~@2
>`.pickRestart({
  A: "[bb3@3 ~ f3 ~ g3@3 ~ bb3@3 ~@3 f3 ~ g3@3 ~ bb3@4 ~@2 f3 ~ g3@3 ~ bb3@4 ~@2 f3 ~ g3@3 ~ bb3@4 ~@2 f3 ~ g3@3 ~ bb3@4 ~@2 f3 ~ g3@3 ~ bb3@4 ~@2 f3 ~ g3@3 ~ bb3@5 ~ f3@2 g3@3 ~@3 [f4,bb4,d5]@42 ~@6, ~@47 bb3@2 ~@23]/6", // Bb
  B: "[[g4,bb4,d5]@43 ~@5]/2", C: "[[g4,c5,eb5]@40 ~@2 [g4,d5]@3 ~@3]/2", D: "[[g4,d5]@3 ~]/2",
  E: "[[f4,bb4,d5]@3 ~]/2", F: "[[g4,bb4,d5]@13 ~@5]/3", G: "[g4,bb4,eb5]@23 ~", H: "eb5@11 ~ d5@11 ~, [g4,bb4]",
  I: "[~ [f4,c5]@28 ~@19, a4@25 ~@23]/2", // F5
  J: "[[c5,eb5]@22 ~@2 [c5,eb5]@5 ~ [c5,eb5]@5 ~ [c5,d5]@4 ~@2 [g4,c5,eb5]@4 ~@2, g4@5 ~]/2", K: "[f4,a4,c5]",
  L: "[[bb4,d5]@9 ~ [bb4,d5]@33 ~@5, f4@43 ~@5]/2", M: "[[bb4,d5]@7 ~@3 [bb4,d5]@26 ~@12, g4@35 ~@13]/2",
  N: "[[g4,bb4,eb5]@21 ~ [g4,bb4,eb5]@14 ~@12]/2", O: "~ f4@22 ~, [a4,d5]@23 ~", P: "[f4,a4,c5]@19 ~@5",
  Q: "[[f4,bb4,d5]@7 ~]/2", R: "~ f4@21 ~@2, [bb4,d5]@7 ~", S: "[f4,a4,d5]@23 ~", T: "[g4,bb4,d5]@23 ~",
  U: "[f4,bb4,d5]@11 ~", V: "[f4,a4,d5]@5 ~", W: "[g4,b4,d5]@11 ~",
  X: "[g4@29 ~@13 eb4@2 ~@4, eb4@13 ~@3, c5@9 ~ c5@5 ~, ~@12 g4@3 ~]/2", Y: "[[f4,a4,c5]@29 ~@19]/2",
  Z: "[[eb4,g4,c5]@28 ~@13 eb4@2 ~@5, ~@10 c5@5 ~, ~@12 g4@3 ~]/2", AA: "[f4,a4,c5]@3 ~@5",
})).s("gm_vibraphone").gain(0.08).pan(0.3)

// chords · electric guitar clean · Bb
const electric_guitar_clean_3 = note("<~@86 [[bb3,f4,bb4,d5]] ~@3 [[bb3,f4,bb4,d5]] ~@37>")
  .s("gm_electric_guitar_clean").gain(0.15).pan(0.7)

// drums · kick
const kick = s("bd").struct("<~@6 A@7 B A@14 C B A@15 B A@7 B A@14 C B A@15 B A@15 B A@15 B A@7 B D ~>".pickRestart({
  A: "x ~@2 x!2 ~", B: "x!2", C: "x!4", D: "x ~@3 x ~@4 x ~@3 x ~@10",
})).gain(0.5)

// drums · snare
const snare = s("sd").struct("<~@6 A@7 ~ A@14 ~@2 A@15 B A@7 ~ A@14 ~@2 A@15 B A@14 ~ B A@15 B A@7 ~@3>".pickRestart({
  A: "~ x ~ x", B: "~@6 x ~@3 x!3 ~@5 x ~@5",
})).gain(0.39)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@6 A B@6 C A B@14 ~ A B@7 A B@6 ~ A B@6 C A B@14 ~ A B@7 A B@6 ~ A B@7 A B@6 ~ A B@7 A B@6 ~ A B@6 C ~@2
>`.pickRestart({
  A: "~@2 x!2 ~ x!2 ~ x!2 ~ x", B: "x ~ x!2 ~ x!2 ~ x!2 ~ x", C: "x",
})).gain(0.33)

// drums · low tom
const low_tom = s("lt").struct("<~@29 [~@11 x] ~@39 [~@11 x] ~@58>").gain(0.28)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@5 A ~@7 B ~@15 C ~@7 D ~@7 E ~@7 B ~@15 C ~@7 D ~@7 E ~@7 D ~@7 E ~@7 D ~@7 E ~@7 B ~@2
>`.pickRestart({
  A: "~@11 x", B: "~@10 x!2", C: "~@3 x ~@4 x!3 ~", D: "~@2 x!2", E: "~@2 x ~@5 x ~ x!2",
})).gain(0.39)

// drums · open hat
const open_hat = s("oh").struct("<~@126 [x ~@3 x ~@4 x ~@14] ~>").gain(0.39)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@5 A ~@7 B ~@14 C D ~@7 E ~@7 F ~@7 B ~@14 C D ~@7 E ~@7 F ~@7 E ~@7 F ~@7 E ~@7 F ~@7 B ~@2
>`.pickRestart({
  A: "~@10 x!3 ~@3 x ~ x ~@5", B: "~@8 x!2 ~@2", C: "~@11 x", D: "x ~ x ~@3 x!2 ~@4", E: "~@2 x!2 ~@8",
  F: "x ~@2 x ~@3 x ~@4",
})).gain(0.39)

// drums · crash
const crash = s("cr").struct(`<
  ~@6 A ~@7 A ~@15 A ~@7 A ~@7 A ~@7 A ~@15 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 B ~
>`.pickRestart({
  A: "x", B: "~@13 x ~@10",
})).gain(0.33)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@6 A@7 ~ A@14 ~@2 A@15 B A@7 ~ A@14 ~@2 A@15 B A@14 ~@2 A@15 B A@7 ~@3
>`.pickRestart({
  A: "~ x ~ x", B: "~@3 x ~@5 x!3",
})).gain(0.39)

// drums · jingle bells
const jingle_bells = s("sleighbells:4").struct("<~@6 A@7 B ~@16 A@23 B ~@16 A@30 B ~ A@23 B ~@2>".pickRestart({
  A: "x!4", B: "x",
})).gain(0.96)

stack(
  bass, electric_guitar_clean, percussive_organ, electric_guitar_clean_2, string_ensemble_1, vibraphone,
  electric_guitar_clean_3, kick, snare, hihat, low_tom, mid_tom, open_hat, high_tom, crash, tambourine, jingle_bells
)

More by Ace of Base