Strudelify
Forever Young cover art

1984 · Forever Young

Forever Young

Alphaville

KeyC majorTempo67 bpm
0:00/0:00
// Forever Young — Alphaville
// 67 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 64 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(67/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 · piano
const piano = note(`<
  ~@12 A B C D E B C F G B C F G H B C F I B C F J B C F I B C F G B C F G B C F G B C F G B C F G B C F G B C
>`.pickRestart({
  A: "~@18 [a3,c4]@2 ~ [g3,b3]@3", B: "[c4,e4,g4]@11 ~ [c4,e4,g4]@10 ~@2 [b3,d4,g4]@10 ~@2 [b3,d4,g4]@10 ~@2",
  C: "[c4,e4,a4]@11 ~ [c4,e4,a4]@8 ~@4 [a3,c4,f4]@10 ~@2 [a3,c4,f4]@9 ~@3", // Am F
  D: "[b3,d4,g4]@11 ~ [b3,d4,g4]@9 ~@3 [a3,d4,f4]@10 ~@2 [a3,d4,f4]@8 ~@4, ~@24 d3@17 ~@7", // G Dm
  E: "[c4,f4,a4]@10 ~@2 [c4,f4,a4]@6 ~@6 [e4,a4,c5]@10 ~@2 [e4,a4]@5 ~ [b3,d4,g4]@6", // F Am A5 G
  F: "[b3,d4,g4]@11 ~ [b3,d4,g4]@9 ~@3 [a3,d4,f4]@10 ~@2 [a3,d4,f4]@8 ~@4", // G Dm
  G: "[c4,f4,a4]@5 ~ [c4,f4,a4]@3 ~@3 [d4,g4,b4]@5 ~ [d4,g4,b4]@5 ~", // F G
  H: "[c4,e4,g4]@11 ~ [c4,e4,g4]@10 ~@2 [b3,d4,g4]@10 ~@2 [f4,a4,c5]@4 ~@2 [g4,b4,d5]@4 ~@2", // C G F G
  I: "[c4,f4,a4]@10 ~@2 [c4,f4,a4]@9 ~@3 [c4,e4,a4]@10 ~@2 [c4,e4,a4]@5 ~ [d4,g4,b4]@5 ~", // F Am G
  J: "[c4,f4,a4]@10 ~@2 [c4,f4,a4]@8 ~@4 [c4,e4,a4]@10 ~@2 [c4,e4,a4]@5 ~ [d4,g4,b4]@5 ~", // F Am G
})).s("gm_piano").gain(0.21).pan(0.6)

// chords · pad sweep · F Am Bm
const pad_sweep = note("<~@2 [~@9 [f3,a3,c4]@14 ~ [f3,a3,c4]@24] [d4@47 ~] [[a3,c4]@7 [b3,d4]] ~@59>")
  .s("gm_pad_sweep").gain(0.17).pan(0.4)

// other · pad choir
const pad_choir = note("<~@2 A B C D ~@2 E F ~@3 G H I J K ~@46>".pickRestart({
  A: "~@42 a3 ~@5", B: "b3@2 ~@4 a3 ~@5 b3@2 ~@4 a3 ~@5 b3 ~@5 a3 ~@5 b3 ~@11", C: "~@21 d4 ~@2",
  D: "e4@2 ~ g4@2 ~ d4@2 ~@4 e4 ~@2 g4@2 ~ d4@2 ~@4 e4 ~@2 g4@2 ~ d4 ~@5 e4 ~@2 g4@2 ~ d4 ~@5", E: "~@42 d4 ~@5",
  F: "e4@2 ~@4 d4 ~@5 e4@2 ~@4 d4 ~@5 e4 ~@5 d4 ~@5 e4 ~@11", G: "~@3 [c4,e4] ~@8", H: "~@21 a4@2 ~",
  I: "g4@2 ~@4 a4@2 ~@4 g4@2 ~@4 a4@2 ~@4 g4 ~@23", J: "~@24 a4 ~@2 a4 ~@2 g4 ~@5 a4 ~@2 a4 ~@2 g4 ~@5",
  K: "a4 ~@2 a4 ~@2 g4 ~@5 a4 ~@2 a4 ~@2 g4 ~@29",
})).s("gm_pad_choir").gain(0.23).pan(0.2)

// other · percussive organ
const percussive_organ = note("<~ A B C D A B C D A B C D A B C E A B C F A B C F G ~@38>".pickRestart({
  A: "c3 g2", B: "a2 f2", C: "g2 d2", D: "f2@24 a2@18 g2@5 ~", E: "f2@4 a2@3 g2", F: "f2@24 g2@23 ~", G: "c3 ~",
})).s("gm_percussive_organ").gain(0.22).pan(0.6)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@12 A B C D@3 C E@2 F C G@2 ~ H I J@2 F K L@2 M N@3 O P Q@3 C R@3 S T@3 U V@3 W V@3 W V@3 X
>`.pickRestart({
  A: "[a3,a4]", B: "c4 [b3,d4]", C: "e4@23 f4@25, c4",
  D: "[b3@4 ~@11 g3 e4@4 [b3,d4]@4, d4@48 c4@73 ~@23, ~@4 a3@11 ~@9]/3", // Bm
  E: "[b3 ~ c4 [b3,d4], d4 ~, ~@24 a3@49 ~@23]/2", F: "[c4,e4] [b3,d4]", G: "[b3 ~ c4 [b3,d4], d4 ~, ~ a3@2 ~]/2",
  H: "[e4,g4] [b3,d4]", I: "e4@23 ~ f4@24, c4", J: "[b3@4 ~@4 c4@7 [b3,d4], d4 ~, ~@4 a3@11 ~]/2",
  K: "[c4,e4]@23 ~ [c4,f4]@24", L: "[b3@4 ~@4 c4@7 [b3,d4], d4 ~, ~@24 a3@67 ~@5]/2", M: "[e4,g4,c5] [b3,d4,d5]",
  N: "[[e4,e5]@24 [f4,f5]@23 ~ b3@23 ~@25 c4@41 ~ [b3,d4]@6, c4@47 g5@24 a5@67 ~@6, ~@48 d4@48 ~@41 g5@7, ~@12 a3@11 ~]/3", // E F Bm
  O: "[c4,e4] [b3,d4], g4", P: "e4 f4, c4",
  Q: "[[b3,g4] a4 [c4,f4] [b3,d4] [c4,e4] [b3,d4], d4@2 ~ g4@3, ~@24 a3@49 ~@71]/3", // Em F5 Bm C Bm
  R: "[[b3,g4] a4 [c4,f4] [b3,d4] [c4,e4,e6] [b3,d4,d6], d4@2 ~ g4@3, ~ a3@2 ~@3]/3", // Em F5 Bm C Bm
  S: "[e4,e6]@23 ~ c6@24, c4, ~@23 f4@25", // E
  T: "[[b3,g4]@2 a4@2 [c4,f4]@2 [c5,g5] d5 [c4,c5,e6]@2 [b3,d4,b4,d6]@2, [d4,d6] c6 ~, ~ a3@2 g3 ~@2, ~@84 g4@37 ~@23]/3", // Em F5 C5 C Bm D
  U: "[e4,a4,e6] [f4,c6], c4", // A5 F5
  V: "[[b3,g4] a4 f4 ~ [c4,e4,e6] [b3,d4,d6], [d4,d6] [c4,c6] ~, ~ a3@3 ~@2, ~ e5, ~@72 c5@49 ~@23]/3", // Em C Bm D C
  W: "[e4,e6] [f4,c6], c4", X: "[e4,e6]@6 [f4,c6]@5 ~, c4@43 ~@5",
})).s("gm_string_ensemble_2").gain(0.17).pan(0.7)

// other · tubular bells
const tubular_bells = note(`<
  ~@17 A B C D A B C E F ~@12 A B C D A B C G H I J K H I J L H I J M H I J L H N
>`.pickRestart({
  A: "g4 d4", B: "e4@23 ~ c4@24", C: "d4@23 ~ e4@24", D: "c4@24 d4@23 ~", E: "c4@24 g4@12 d4@11 ~", F: "c4@35 ~@13",
  G: "c4@24 g4@12 d5@11 ~", H: "g5 d5", I: "e5@23 ~ c5@24", J: "d5@23 ~ e5@24", K: "c5@2 g5 d5", L: "c5@2 a4 g4",
  M: "c5@2 a5 g5", N: "e5@23 ~ c5@19 ~@5",
})).s("gm_tubular_bells").gain(0.37).pan(0.7)

// chords · pad warm
const pad_warm = note("<A@8 B@4 C@8 D@5 E@5 F@4 G@7 H@2 I@2 J@8 K@2 L@8 M>".pickRestart({
  A: "[~@47 c3@23 ~ [g2,d4]@23 ~ [a2,e4]@23 f4@24 ~ g2@23 ~ d2@24 c4@41 ~ [g2,d4]@5 ~ c3@23 ~ [g2,d4]@23 ~ [a2,e4]@23 f4@24 ~ g2@23 ~ d2@24 c4, ~@46 [c4,e4]@24 b3@24 c4@48 b3@24 a3@67 ~@5 [c4,e4]@24 b3@24 c4@48 b3@24 a3@26, ~@47 g4@48 a3@48 d4@48 ~@41 b3@7 g4@48 a3@48 d4@48 ~]/8", // G5 A5 G5 A5 C
  B: "[~@41 [g2,d4]@5 ~ c3@23 ~ [g2,d4]@23 ~ [a2,e4]@23 f4@24 ~ g2@23 ~ d2@24 c4, ~@20 b3@3 [c4,e4]@12 b3@12 c4@24 b3@12 a3@13, ~@47 g4@48 a3@48 d4@48 ~]/4", // G5 A5 C
  C: "[~@41 [g2,d4]@5 ~ [c3,e5]@23 ~ [g2,d4]@23 ~ [a2,e4]@23 ~ [f2,c5]@23 ~ g2@23 ~ d2@24 ~@24 a2@17 ~@2 d5@4 ~ [c3,e5]@23 ~ [g2,d4]@23 ~ [a2,e4]@23 ~ [f2,c5]@23 ~ g2@23 ~ d2@24 [f2,c4], ~@40 b3@6 [c4,e4]@24 b3@24 c4@48 b3@25 ~@24 c4@42 ~@5 [c4,e4]@25 ~@23 c4@49 [d4,d5]@48 ~, ~@47 g4@48 a3@48 ~@23 a3@67 [g2,d4,b4]@7 ~@94 b3@25 ~@25, ~@118 f4@25 [d4,d5]@48 f2@24 ~@17 b3@7 ~@23 b3@25 a3@48 ~@23 a3@26, ~@192 c5@42 ~@5 g4@49 ~@22 f4@25 ~@49]/8", // G5 C G5 A5 F5 C G5 A5 …
  D: "[c5@23 ~ d5@22 ~ [c3,e5]@23 ~ [g2,d4]@23 ~ [a2,e4]@23 ~ [f2,c5]@23 ~ g2@23 ~ d2@24 ~ c5@23 ~ d5@22 [c4,e4]@2, ~@23 [g2,g3,d4]@23 [c4,e4]@24 b3@24 c4@48 b3@25 ~@24 [f2,c4]@25 ~@24, ~@47 g4@48 a3@48 ~@23 a3@49 [g2,g3,d4]@25, ~@118 f4@25 [d4,d5]@48 ~@49]/5", // C G5 A5 F5 C G5 C F5 …
  E: "[~@23 d4@24 ~@24 [b3,d4]@24 ~ e4@23 f4@24 b3@24 ~@24 c4@41 ~ d4@6 [c4,e4], ~@22 b3@25 [c4,e4]@25 ~@23 [a3,c4]@49 ~@23 a3@66 ~@7, ~@48 g4@49 ~@46 d4@48 ~@41 g3@7 ~]/5", // Bm C Am
  F: "[~@23 [b3,d4]@24 ~ e4@23 f4@24 b3@24 ~@24 c4@41 ~ d4@6 [c4,e4], g4@47 [a3,c4]@48 d4@48 ~@41 g3@7 ~, ~@119 a3@67 ~@6]/4", // Bm C Am
  G: "[~@23 [g2,b3,d4]@24 ~ e4@23 f4@24 [g2,b3]@24 d2@24 c4@41 ~@2 d5@4 ~ [c3,e5]@24 [g2,d4]@23 ~ [a2,e4]@23 ~ [f2,c5]@24 g2@24 d2@24 [f2,c4], g4@47 [a3,c4]@49 ~@23 a3@66 [d4,b4]@5 e4@25 ~@23 c4@49 [d4,d5]@48 ~, ~@47 a2@24 ~@24 d4@48 ~@41 g3@7 g4@49 ~@22 f4@25 ~@49]/7", // G C G5 A5 F5 Am G D
  H: "[c5@23 ~ d5@22 ~ [c3,e5]@24 [g2,d4]@24 [a2,e4], ~@23 [g2,d4]@23 e4@25 ~@25, ~@47 g4@49]/2", // C G5 A5 G5
  I: "[~@23 [f2,c5]@24 g2@24 d2@24 [f2,c4], ~@22 f4@25 [d4,d5]@48 ~]/2", // F5 D
  J: "[c5@23 ~ d5@22 ~ [c3,e5]@24 [g2,d4]@23 ~ [a2,e4]@23 ~ [f2,c5]@24 g2@24 d2@24 ~ c5@46 ~ [c3,e5]@24 [g2,d4]@23 ~ [a2,e4]@23 ~ [f2,c5]@24 g2@24 d2@24 [f2,c4], ~@23 [g2,d4]@23 e4@25 ~@23 c4@49 [d4,d5]@48 [f2,c4]@48 g4@49 ~@22 f4@25 ~@49, ~@47 g4@49 ~@22 f4@25 ~@95 e4@25 ~@23 c4@49 [d4,d5]@48 ~]/8", // C G5 A5 F5 C G5 A5 F5 …
  K: "[c5@23 ~ e5@22 ~ c3@24 [g2,d4]@24 [a2,e4], ~@23 e4@48 ~@25, ~@23 a2@24 g4@49, ~@47 e5 ~@48]/2", // G5 A5
  L: "[~@23 [f2,c5]@24 g2@24 d2@24 ~ c5@23 ~ e5@22 ~ e5 ~@23 [g2,d4]@24 ~ e4@23 ~ c5@23 ~@24 d2@24 ~ c5@23 ~ e5@23 e5 ~@23 [g2,d4]@24 a2, ~@22 f4@25 [d4,d5]@48 c4@48 c3@24 ~@24 a2@24 [f2,f4]@24 g2@25 ~@23 f2@25 e4@48 ~@24, ~@95 f2@24 e4@49 ~@23 c4@49 d5@48 ~@23 a2@24 c3@24 ~@25, ~@119 a2@25 g4@49 ~@46 d4@48 c4@49 g4@48]/8", // F5 G5 D F
  M: "e4@23 ~ c5@20 ~@4, ~@23 [f2,f4]@19 ~@6", // F
})).s("gm_pad_warm").gain(0.13).pan(0.7)

// chords · pad warm · soft notes
const pad_warm_soft = note("<~@2 A B@2 ~ A B@2 ~ A B@2 ~@11 C@7 D@4 A E@2 ~@26>".pickRestart({
  A: "~@23 f2@24 ~", B: "[~@47 f2@24 a2@18 ~@7]/2",
  C: "[~@47 c3@24 g2@24 c3@24 g2@24 a2@24 f2@24 g2@24 d2@24 f2@41 g2@7 c3@24 g2@24 a2]/7",
  D: "[~@23 f2@24 g2@24 d2@24 f2@41 g2@7 c3@24 ~@25]/4", E: "[~@47 f2@41 g2@7 ~]/2",
})).s("gm_pad_warm").gain(0.08).pan(0.7)

// bass · synth bass 2
const bass = note(`<
  ~@17 A B C D E B C D F G H I J G H I J G H I K L M N O L M N O L M N P L M Q R L M Q R L M Q R L S
>`.pickRestart({
  A: "~@12 g1@6 b1@3 d2@2 ~", B: "~@15 f1@3 a1@3 c2@2 ~", C: "~@15 d1@3 f1@3 a1@2 ~", D: "~@15 g2@3 d3@3 g3@2 ~",
  E: "~@15 g1@3 b1@3 d2@2 ~", F: "c2@23 ~ g2@23 ~",
  G: "c3@4 ~@2 c3@4 ~@2 c3@3 ~@3 c3@4 ~@2 g2@4 ~@2 g3@3 ~@3 b2@4 ~@2 d3@3 ~@3",
  H: "a2@4 ~@2 a2@3 ~@3 a2@3 ~@3 a2@4 ~@2 f2@4 ~@2 f2@3 ~@3 a2@3 ~@3 c3@3 ~@3",
  I: "g2@4 ~@2 g2@4 ~@2 g2@3 ~@3 g2@3 ~@3 d2@3 ~@3 d2@3 ~@3 a2@4 ~@2 d3@4 ~@2",
  J: "f2@3 ~@3 f2@4 ~@2 f2@3 ~@3 f2@3 ~@3 a2@4 ~@2 a2@2 ~@4 c3@4 ~@2 b2@4 ~@2",
  K: "f2@3 ~@3 f2@4 ~@2 f2@3 ~@3 f2@3 ~@3 a2@4 ~@2 a2@2 ~@4 a2@4 ~@2 g2@4 ~@2",
  L: "c2@24 ~@6 g2@3 ~@3 b2@4 ~@2 d3@3 ~@3, ~@24 g1@23 ~",
  M: "a1@11 ~ g1@11 ~@7 f2@3 ~@3 a2@3 ~@3 c3@3 ~@3, ~@24 f1@23 ~",
  N: "g1@23 ~@7 d2@3 ~@3 a2@4 ~@2 d3@4 ~@2, ~@24 d1@23 ~", O: "f1@23 ~@7 b2@2 ~@4 d3@4 ~@2 b2@4 ~@2, ~@24 g1@23 ~",
  P: "f1@23 ~ c2@12 g1@12", Q: "g1@8 ~ d2@3 b1@6 g1@5 ~ d1@9 d2@3 a1@6 f1@5 ~",
  R: "f1@11 ~ g1@10 ~@2 a1@11 ~ a1@6 g1@5 ~", S: "a1@11 ~ g1@11 ~@7 f2@3 ~@3 a2@3 ~@9, ~@24 f1@17 ~@7",
})).s("gm_synth_bass_2").gain(0.54)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@13 A B C@2 D E F G@3 F H I ~@11 J D E F G@3 F H D E F K D E F L@2 E F M@2 E F N D O
>`.pickRestart({
  A: "~@3 b5", B: "a5@3 g5 a5@4",
  C: "[g4@24 ~@12 d6@2 ~ d6@2 ~@4 d6@3 ~@24 c5@18 [d5,g5]@6, ~@24 a4@49 ~@23, ~@8 c6@7 ~]/2", D: "e5 d5, g4",
  E: "e4 f4, c5", F: "g4@24 a4@23 ~, d5", G: "[[f4,c5]@24 d5@23 ~ e5@24 d5@24 e4@24 f4@24, ~ g4@3 c5@2]/3",
  H: "[f4,c5] [g4,d5]", I: "c5 ~", J: "c5@7 [b4,d5]", K: "[f4,c5]",
  L: "[[f4,c5]@47 ~@25 d5@24, ~@47 e5@25 ~@24, ~ g4]/2", M: "[f4@2 e5 d5, c5@3 ~, ~ g4]/2", N: "[a4,c5] [g4,d5]",
  O: "e4@4 f4@3 ~, c5@7 ~",
})).s("gm_string_ensemble_1").gain(0.17).pan(0.3)

// other · trumpet
const trumpet = note("<~@50 A B C D E F G H I J G H K L>".pickRestart({
  A: "~@2 g5@6 ~@3 e5 ~@2 g5@4 ~@2 e5 ~@2 c5 ~@2 d5@6 ~@3 g4 ~@2 b4@2 ~ g4@2 ~ d5@4",
  B: "~@2 a4@7 ~@2 e5 ~ c5 a4@2 ~ e5 ~ c5 a4@2 ~ e5 ~@2 f4@6 c5@5 ~@2 a4@5 f4@4",
  C: "~@2 g5 ~ b5 d6@2 g5 b5 ~@2 g5@2 ~@3 b5 d6@2 ~ b5@3 g5 ~@2 d4@5 ~ a4 ~@2 d4@2 a4@5 ~@6, ~@5 d6 ~@11 f4 ~@6",
  D: "~@2 f4@9 c5 a4 ~ f4@2 ~@3 a4 c5@6 e5@6 c5@3 ~@3 e5@6 c5@2 ~@2",
  E: "~@2 g5@7 ~@2 e5 ~ c5 g5@5 ~ e5@2 ~ c5 ~@2 d5@6 ~ g5 d5 g4 ~@2 b4@2 ~@2 g5@2 d5!2 ~@2, ~@24 b5@9 ~@3 b5@5 g4@2 ~@5",
  F: "~@2 a4@6 a4 ~@2 e5 c5!2 a4!2 ~ e5 c5!2 a4@2 ~ e5 ~@2 f4@6 ~ e5 c5 a4@2 ~@2 e5 c5 a4@2 ~@2 e5@2 ~, c5@8 ~@16 a4@8 c5@2 ~@5 a4@2 ~@3 f4@4",
  G: "~@2 g5 ~ b5 ~ g5!2 b5 ~@2 g5 d5@4 b5 ~@3 b5@2 ~ g5 ~ a5 ~@2 f5 ~ a5 d6 a4 ~@2 d4@2 f5 ~ d6@2 ~ a5@2 ~ f5@2 ~, b4@5 d6@2 ~@3 d6@2 ~@5 d6@2 ~@8 d6@2 ~@4 f5@2 ~@13, ~@18 b4@4 ~@2 f5@2 d4@5 ~@3 f4@2 ~ a4@5 ~@6",
  H: "~@6 f5 c5 ~@3 c5 a4 ~ f4@2 ~@3 a4 ~ a5@2 ~@3 e5@4 ~@2 c5@3 ~@3 e5@4 e5@2 c5@2 ~@2, a4@6 ~@3 a4@2 ~@9 c5@6 ~@22, ~@2 f4@8 f5@8 ~@6 c6@6 a5@5 ~ g5@6 ~@6",
  I: "g5@2 g5@6 ~@3 e5 ~@2 g5@2 ~@2 g5 ~ e5 a5 ~ c5 ~@2 d5@6 ~ a5 ~ g4 ~@2 b4@2 ~@2 g5 ~ d5@4, ~@24 b5@7 ~@5 b5@5 g4@2 ~@5",
  J: "a4@2 a4@5 ~@2 a4 ~ e5 ~ c5 a4@2 ~ e5 c5!2 a4@2 ~ e5 f4@2 f4@4 ~@4 c5 f4@2 ~@3 c5 f4@2 ~ f4@4, ~@12 a4@2 ~@18 c5@2 ~@5 a4@5 ~@4, ~@33 f5@2 ~@3 f5@2 ~@4 f5@2 ~@2",
  K: "g5@2 g5@7 ~@2 e5 ~ c5 g5@2 ~@2 g5 ~@2 a5 ~ c5 ~@2 d5@6 ~ a5 ~ g4 ~@2 b4@2 ~@2 g5 ~ d5@4, ~@20 e5@2 ~@2 b5@7 ~@5 b5@5 g4@2 ~@5",
  L: "a4@2 a4@5 ~@2 a4 ~ e5 ~ c5 a4@2 ~ e5 c5!2 a4@2 ~ e5 f4@2 f4@4 ~@4 c5 f4@2 ~@11, ~@6 a4 ~@9 c5 ~@7, ~@33 f5@2 ~@13",
})).s("gm_trumpet").gain(0.34).pan(1)

// drums · kick
const kick = s("bd").struct("<~@13 A ~@11 A B@11 A C D C E C D C F C D C ~ C D C E C D C F C D C ~ C D>".pickRestart({
  A: "x", B: "x ~@14 x", C: "x ~@6 x!2 ~@7", D: "x ~ x ~@4 x!2 ~@7", E: "x ~ x ~@6 x ~@6", F: "x!2 ~@6",
})).gain(0.49)

// drums · snare
const snare = s("sd").struct("<~@26 A@11 B A@3 C A@3 D A@3 E A@3 C A@3 D A@3 E A@2>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x!3", C: "~@2 x ~ x ~ x!2", D: "~ x!3", E: "x ~@2 x ~@2 x ~ x ~@3 x ~@3",
})).gain(0.56)

// drums · low tom
const low_tom = s("lt").struct("<~@25 A ~@7 B ~@3 C ~@3 D ~@3 E ~@3 F ~@3 D ~@3 E ~@3 F ~@2>".pickRestart({
  A: "~@17 x!2 ~@2 x ~@2", B: "~@3 x", C: "~@9 x ~@5 x", D: "~@7 x", E: "~@39 x ~@5 x!2 ~", F: "~@18 x ~@3 x!2",
})).gain(0.42)

// drums · hihat
const hihat = s("hh").struct("<~@38 [x!8]!11 [x!4 ~ x ~@2] [x!8]!11 [x!4 ~ x ~@2] [x!8] [x!7 ~]>").gain(0.35)

// drums · mid tom
const mid_tom = s("mt").struct("<~@16 A ~@8 B ~@11 C ~@3 D ~@3 E ~@3 F ~@3 D ~@3 E ~@3 F ~@2>".pickRestart({
  A: "~@21 x!4 ~@23", B: "~@24 x ~@3 x ~@4 x ~@14", C: "~@3 x ~ x ~@2", D: "~@12 x!2 ~@2", E: "~@17 x!2 ~@5",
  F: "~@16 x!2 ~@2 x!2 ~@2",
})).gain(0.42)

// drums · open hat
const open_hat = s("oh").struct("<~@49 [~@2 x!2] ~@11 [~@2 x!2] ~@2>").gain(0.49)

// drums · high tom
const high_tom = s("ht").struct("<~@25 A ~@15 B ~@3 C ~@3 D ~@3 B ~@3 C ~@3 D ~@2>".pickRestart({
  A: "~@21 x!2 ~@25", B: "~@5 x ~@2", C: "~@9 x ~ x ~@4", D: "~@14 x!2 ~@8",
})).gain(0.49)

// drums · crash
const crash = s("cr").struct("<~@25 A ~@12 B ~ B ~ B ~ B C B@3 D B ~ B ~ B ~ B C B@3 D B@2>".pickRestart({
  A: "x ~@5 x!2", B: "x", C: "~ x ~@2", D: "x ~@2 x ~@2 x ~@9",
})).gain(0.35)

stack(
  piano, pad_sweep, pad_choir, percussive_organ, string_ensemble_2, tubular_bells, pad_warm, pad_warm_soft, bass,
  string_ensemble_1, trumpet, kick, snare, low_tom, hihat, mid_tom, open_hat, high_tom, crash
)

More by Alphaville