Strudelify

I'm Still Remembering

The Cranberries

KeyG minorTempo121 bpm
0:00/0:00
// I'm Still Remembering — The Cranberries
// 121 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (2/4 at bar 1, 4/4 at bar 2) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 149 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(121/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 · pad poly
const pad_poly = note(`<
  ~@8 A@3 B C@3 D@3 E F G@2 H I J@4 K@4 L@3 M N@4 O@2 P@2 O@2 Q@2 R@3 B S@3 T U V W X Y@2 Z AA J@4 K@4 L@3 M N@4 AB ~@7
  AC AD@3 AC AE AF@2 AG@3 AH AI@3 I AJ AK@3 AL AM AN AO AP@12 AQ AR@8 AS@4 ~@12
>`.pickRestart({
  A: "[~@4 bb4@3 ~ bb4@3 ~ eb5@2 eb5@4 d5@3 ~ c5@6 d5@2 bb4@4 ab4@3 ~ g4@6 g4@2 g4@2]/3", B: "bb4@2 ab4@3 ~ ab4@5 ~@5",
  C: "[~@4 bb4@3 ~ bb4@3 ~ eb5@2 eb5@4 d5@3 ~ c5@6 d5@2 bb4@10 ~@2 g4@2 g4@3 ~]/3",
  D: "[[bb4,bb5]@5 ~ [ab4,ab5]@5 ~ [g4,g5]@7 ~@5 f5@2 g5@3 ~ g5@4 f5@3 ~ eb5@5 ~ f5@2 f5@2]/3", // Bb Ab G
  E: "d5@8 ~@2 d5@2 d5@3 ~", F: "eb5@5 ~ f5@4 eb5@3 ~ f5@2", G: "[g5@8 g5@2 g5@3 ~ g5@4 f5@3 ~ eb5@7 ~ d5@2]/2",
  H: "eb5@2 d5@3 ~ c5@4 d5@3 ~ d5@2", I: "eb5@15 ~",
  J: "[bb5@2 g5@3 ~ g5@6 ab5@2 g5@4 f5@3 ~ eb5@6 f5@2 g5@12 ~@2 ab5@2 f5@12 ~@4 bb5@2]/4",
  K: "[bb5@2 g5@3 ~ g5@6 ab5@2 g5@4 f5@2 eb5@2 eb5@6 c5@2 g5@12 f5@2 eb5@2 f5@15 ~@3]/4",
  L: "[f5@2 g5@3 ~ g5@6 ab5@2 f5@6 f5@3 ~ eb5@2 f5@3 ~ g5@4 f5@3 ~ eb5@7 ~ d5@2]/3", M: "eb5@2 d5@3 ~ c5@10",
  N: "[bb5@2 g5@3 ~ g5@6 ab5@2 g5@4 f5@3 ~ eb5@6 f5@2 g5@12 ~@2 ab5@2 f5@12 ~@4 eb5!2]/4", O: "eb5@10 ~@4 eb5!2",
  P: "[eb5@2 d5@3 ~ c5@4 g4@3 ~ bb4@12 ~@4 eb5!2]/2", Q: "[eb5@2 d5@3 ~ c5@4 g4@3 ~ bb4@12 ~@6]/2",
  R: "[~@4 bb4@3 ~ bb4@3 ~ eb5@2 eb5@4 d5@3 ~ c5@4 d5@4 bb4@6 g4@2 g4@6 g4@2 g4@2]/3",
  S: "[~@4 bb4@3 ~ bb4@3 ~ eb5@2 eb5@4 d5@3 ~ c5@6 bb4@2 bb4@10 ~@2 g4@4 g4@2]/3", T: "bb4@5 ~ ab4@5 ~@5",
  U: "~@6 g5@2 g5@3 ~ g5@3 ~", V: "g5@2 f5@3 ~ eb5@10", W: "f5@2 g5@3 ~ f5@4 eb5@3 ~ eb5@2", X: "f5@5 ~@2 bb4",
  Y: "[g5@2 g5@3 ~ f5@4 g5@3 ~ eb5@12 ~@4 d5@2]/2", Z: "eb5@2 d5@3 ~ c5@4 d5@5 ~", AA: "eb5@5 ~ f5@10", AB: "eb5@5 ~@3",
  AC: "~@4 bb4@3 ~ bb4@3 ~ eb5@3 ~", AD: "[eb5@3 ~ d5@2 c5@4 d5@3 ~ bb4@10 g4@2 g4@4 bb4@6 ~@12]/3",
  AE: "eb5@5 ~ d5@4 c5@3 ~ bb4@2", AF: "[bb4@2 ab4@3 ~ g4@5 ~ g4@2 bb4@5 ~@13]/2",
  AG: "[g5@2 g5@3 ~ g5@5 ~ ab5@2 f5@5 ~ eb5@3 ~ eb5@2 eb5@3 ~ g5@4 f5@3 ~ eb5@7 ~ d5@2]/3",
  AH: "eb5@2 d5@3 ~ c5@5 ~@3 bb4@2", AI: "[g5@2 g5@5 ~ g5@2 g5@3 ~ f5@10 eb5@2 eb5@3 ~ g5@4 f5@3 ~ eb5@6 d5@2 d5@2]/3",
  AJ: "eb5@5 ~ d5@5 ~ eb5@3 ~", AK: "eb5@5 ~ d5@5 ~ eb5@3 ~, bb4@13 ~@3", AL: "g5@5 ~ f5@5 ~ g5@3 ~, bb4@13 ~@3",
  AM: "eb5@5 ~ f5@4 eb5@5 ~", AN: "g5@5 ~ f5@4 g5@5 ~, bb4@13 ~@3", AO: "ab5@5 ~ g5@8 ~@2",
  AP: "[bb5@2 g5@3 ~ g5@6 ab5@2 g5@4 f5@3 ~ eb5@6 f5@2 g5@12 ~@2 ab5@2 f5@12 ~@6]/4",
  AQ: "bb5@2 g5@3 ~ g5@6 ab5@2 g5@2",
  AR: "[~@2 f5@3 ~ eb5@6 f5@2 g5@10 g5@3 ~ ab5@2 f5@10 f5@3 ~ g5@2 eb5@8 ~@2 eb5@3 ~ eb5@2 f5@8 ~@2 eb5@3 ~ f5@2 g5@8 ~@2 g5@3 ~ ab5@2 f5@8 ~@2 f5@3 ~ g5@2 eb5@8 ~@2 d5@3 ~ eb5@2 f5@2]/8",
  AS: "[~@8 eb5@3 ~ f5@2 g5@8 ~@2 g5@3 ~ ab5@2 f5@8 ~@2 f5@3 ~ g5@2 eb5@8 ~@10]/4",
})).s("gm_pad_poly").gain(0.48)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  A B C@4 D@16 E@4 F@20 G@4 D@12 E@4 F@20 G@4 D@12 E@4 F@16 H@8 I@2 J@4 K@8 L M N M L
>`.pickRestart({
  A: "[eb3,g3,bb3,eb4,g4]@3 ~ [eb3,g3,bb3,eb4,g4]@2 [eb3,g3,bb3,d4,g4]@4 [eb3,g3,bb3,d4,g4]@2 [eb3,g3,bb3,eb4,g4]@2 [eb3,g3,bb3,d4,g4]@2", // Eb Ebmaj7 Eb Ebmaj7
  B: "[f3,ab3,c4,f4,ab4]@3 ~ [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,g4]@4 [f3,ab3,c4,f4,g4]@2 [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,g4]@2", // Fm
  C: "[[d3,g3,bb3,d4,g4]@3 ~ [d3,g3,bb3,d4,g4]@2 [d3,g3,bb3,d4,g4]@4 [d3,g3,bb3,d4,g4]@2 [d3,g3,bb3,d4,g4]@2 g3@2 [f3,ab3,c4,f4,ab4]@3 ~ [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,g4]@4 [f3,ab3,c4,f4]@2 [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,g4]@2 [eb3,g3,bb3,eb4,g4]@3 ~ [eb3,g3,bb3,eb4,g4]@2 [eb3,g3,bb3,d4,g4]@4 [eb3,g3,bb3,g4]@2 [eb3,g3,bb3,eb4,g4]@2 [eb3,g3]@2 [f3,ab3,c4,f4,ab4]@3 ~ [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,g4]@4 [f3,ab3,c4,f4]@2 [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,g4]@2, ~@7 d3@25, ~@7 d4@12 ~@2 d4@2 ~@9, ~@7 bb3@9 ~@7 [bb3,d4]@9, ~@7 g4@4 ~@2 g4@2 ~@8 g4@4 ~@2 g4@2 ~]/4", // Gm Fm Eb Ebmaj7 Eb Fm Bb
  D: "[[d3,g3,bb3,d4,g4]@4 [d3,g3,bb3,d4,g4]@2 [d3,g3,bb3,d4,g4]@4 [d3,g3,bb3,d4,g4]@2 [d3,g3,bb3,d4,g4]@2 g3@2 [f3,ab3,c4,f4,ab4]@3 ~ [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,g4]@4 [f3,ab3,c4,f4]@2 [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,g4]@2 [eb3,g3,bb3,eb4,g4]@3 ~ [eb3,g3,bb3,eb4,g4]@2 [eb3,g3,bb3,d4,g4]@4 [eb3,g3,bb3,g4]@2 [eb3,g3,bb3,eb4,g4]@2 [eb3,g3]@2 [f3,ab3,c4,f4,ab4]@3 ~ [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,g4]@4 [f3,ab3,c4,f4]@2 [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,g4]@2, ~@7 d3@25, ~@7 d4@12 ~@2 d4@2 ~@9, ~@7 bb3@9 ~@7 [bb3,d4]@9, ~@7 g4@4 ~@2 g4@2 ~@8 g4@4 ~@2 g4@2 ~]/4", // Gm Fm Eb Ebmaj7 Eb Fm Bb
  E: "[[d3,g3,bb3,d4,g4]@4 [d3,g3,bb3,d4,g4]@2 [d3,g3,bb3,d4,g4]@4 [d3,g3,bb3,d4,g4]@2 [d3,g3,bb3,d4,g4]@2 g3@2 [f3,ab3,c4,f4,ab4]@3 ~ [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,g4]@4 [f3,ab3,c4,f4]@2 [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,g4]@2 [eb3,g3,bb3,eb4,g4]@3 ~ [eb3,g3,bb3,eb4,g4]@2 [eb3,g3,bb3,d4,g4]@4 [eb3,g3,bb3,g4]@2 [eb3,g3,bb3,eb4,g4]@2 [eb3,g3]@2 [f3,ab3,c4,f4,ab4]@3 ~ [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,ab4]@4 [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4]@2 [f3,ab3,c4,f4,ab4]@2, ~@7 d3@25, ~@7 d4@12 ~@2 d4@2 ~@9, ~@7 bb3@9 ~@7 [bb3,d4]@9, ~@7 g4@4 ~@2 g4@2 ~@8 g4@7 g4@2]/4", // Gm Fm Eb Ebmaj7 Eb Fm Bb
  F: "[[d3,g3,bb3,d4,g4]@4 [d3,g3,bb3,d4,g4]@2 [d3,g3,bb3,d4,g4]@4 [d3,g3,bb3,d4,g4]@2 [d3,g3,bb3,d4,g4]@2 g3@2 [f3,ab3,c4,f4,ab4]@3 ~ [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,ab4]@4 [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4]@2 [f3,ab3,c4,f4,ab4]@2 [eb3,g3,bb3,eb4,g4]@3 ~ [eb3,g3,bb3,eb4,g4]@2 [eb3,g3,bb3,d4,g4]@4 [eb3,g3,bb3,g4]@2 [eb3,g3,bb3,eb4,g4]@2 [eb3,g3]@2 [f3,ab3,c4,f4,ab4]@3 ~ [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,ab4]@4 [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4]@2 [f3,ab3,c4,f4,ab4]@2, ~@7 d3@25, ~@7 d4@12 ~@2 d4@2 ~@9, ~@7 bb3@9 ~@7 [bb3,d4]@9, ~@7 g4@7 g4@2 ~@7 g4@7 g4@2]/4", // Gm Fm Eb Ebmaj7 Eb Fm Bb
  G: "[[d3,g3,bb3,d4,g4]@4 [d3,g3,bb3,d4,g4]@2 [d3,g3,bb3,d4,g4]@4 [d3,g3,bb3,d4,g4]@2 [d3,g3,bb3,d4,g4]@2 g3@2 [f3,ab3,c4,f4,ab4]@3 ~ [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,ab4]@4 [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4]@2 [f3,ab3,c4,f4,ab4]@2 [eb3,g3,bb3,eb4,g4]@3 ~ [eb3,g3,bb3,eb4,g4]@2 [eb3,g3,bb3,d4,g4]@4 [eb3,g3,bb3,g4]@2 [eb3,g3,bb3,eb4,g4]@2 [eb3,g3]@2 [f3,ab3,c4,f4,ab4]@3 ~ [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,g4]@4 [f3,ab3,c4,f4]@2 [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,g4]@2, ~@7 d3@25, ~@7 d4@12 ~@2 d4@2 ~@9, ~@7 bb3@9 ~@7 [bb3,d4]@9, ~@7 g4@7 g4@2 ~@7 g4@4 ~@2 g4@2 ~]/4", // Gm Fm Eb Ebmaj7 Eb Fm Bb
  H: "[[d3,g3,bb3,d4,g4]@4 [d3,g3,bb3,d4,g4]@2 [d3,g3,bb3,d4,g4]@4 [d3,g3,bb3,d4,g4]@2 [g3,bb3,d4,g4]@2 g3@2 [f3,ab3,c4,f4,ab4]@3 ~ [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,ab4]@4 [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4]@2 [f3,ab3,c4,f4,ab4]@2 [eb3,g3,bb3,eb4,g4]@3 ~ [eb3,g3,bb3,eb4,g4]@2 [eb3,g3,bb3,d4,g4]@4 [eb3,g3,bb3,g4]@2 [eb3,g3,bb3,eb4,g4]@2 [eb3,g3]@2 [f3,ab3,c4,f4,ab4]@3 ~ [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,ab4]@4 [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4]@2 [f3,ab3,c4,f4,ab4]@2 [g3,bb3,d4,g4]@4 [g3,bb3,d4,g4]@2 [g3,bb3,d4,g4]@4 [g3,bb3,d4,g4]@2 [g3,bb3,d4,g4]@2 g3@2 [f3,ab3,c4,f4,ab4]@3 ~ [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,ab4]@4 [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4]@2 [f3,ab3,c4,f4,ab4]@2 [eb3,g3,bb3,eb4,g4]@3 ~ [eb3,g3,bb3,eb4,g4]@2 [eb3,g3,bb3,d4,g4]@4 [eb3,g3,bb3,g4]@2 [eb3,g3,bb3,eb4,g4]@2 [eb3,g3]@2 [f3,ab3,c4,f4,ab4]@3 ~ [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,ab4]@4 [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4]@2 [f3,ab3,c4,f4,ab4]@2, ~@3 d3@29, ~@7 d4@12 ~@2 d4@2 ~@16 d4@12 ~@2 d4@2 ~@9, ~@7 bb3@9 ~@7 [bb3,d4]@9 ~@7 bb3@9 ~@7 [bb3,d4]@9, ~@7 g4@7 g4@2 ~@7 g4@7 g4@2 ~@7 g4@7 g4@2 ~@7 g4@7 g4@2]/8", // Gm Fm Eb Ebmaj7 Eb Fm Gm Fm …
  I: "[[g3,bb3,d4,g4]@4 [g3,bb3,d4,g4]@2 [g3,bb3,d4,g4]@4 [g3,bb3,d4,g4]@2 [g3,bb3,d4,g4]@2 g3@2 [f3,ab3,c4,f4,ab4]@3 ~ [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,ab4]@4 [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4]@2 [f3,ab3,c4,f4,ab4]@2, ~@7 [bb3,d4]@9, ~@7 g4@7 g4@2]/2", // Gm Fm Bb
  J: "[[eb3,g3,bb3,eb4,g4]@3 ~ [eb3,g3,bb3,eb4,g4]@2 [eb3,g3,bb3,d4,g4]@4 [eb3,g3,bb3,g4]@2 [eb3,g3,bb3,eb4,g4]@2 [eb3,g3]@2 [f3,ab3,c4,f4,ab4]@3 ~ [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,ab4]@4 [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4]@2 [f3,ab3,c4,f4,ab4]@2 [g3,bb3,g4]@4 [g3,bb3,g4]@2 [g3,bb3,g4]@4 [g3,bb3,g4]@2 [g3,bb3,g4]@2 g3@2 [f3,ab3,c4,f4,ab4]@3 ~ [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,ab4]@4 [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4]@2 [f3,ab3,c4,f4,ab4]@2, ~@5 d4@27, ~@7 bb3@9 ~@7 bb3@9, ~@7 g4@7 g4@2 ~@7 g4@7 g4@2]/4", // Eb Ebmaj7 Eb Fm Gm Fm
  K: "[[eb3,g3,bb3,eb4,g4]@3 ~ [eb3,g3,bb3,eb4,g4]@2 [eb3,g3,bb3,g4]@4 [eb3,g3,bb3,g4]@2 [eb3,g3,eb4,g4]@2 [eb3,g3]@2 [f3,ab3,c4,f4,ab4]@3 ~ [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,ab4]@4 [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4]@2 [f3,ab3,c4,f4,ab4]@2 [g3,g4]@4 [g3,g4]@2 [g3,g4]@4 g3@2 g3@2 g3@2 [f3,ab3,c4,f4,ab4]@3 ~ [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,ab4]@4 [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4]@2 [f3,ab3,c4,f4,ab4]@2 [eb3,g3,eb4]@3 ~ [eb3,g3,eb4]@2 [eb3,g3]@4 [eb3,g3]@2 [eb3,g3,eb4]@2 [eb3,g3]@2 [f3,ab3,c4,f4,ab4]@3 ~ [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,ab4]@4 [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4]@2 [f3,ab3,c4,f4,ab4]@2 g3@3 ~ g3@2 g3@4 g3@2 g3@2 g3@2 [f3,ab3,c4,f4,ab4]@3 ~ [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,ab4]@4 [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4]@2 [f3,ab3,c4,f4,ab4]@2, ~@3 bb3@29, ~@7 g4@7 g4@2 ~@5 g4@43]/8", // Eb Fm G Fm Eb Fm
  L: "[eb3,g3,eb4]@3 ~ [eb3,g3,eb4]@2 [eb3,g3]@4 [eb3,g3]@2 [eb3,g3,eb4]@2 [eb3,g3]@2", // Eb
  M: "[f3,ab3,c4,f4,ab4]@3 ~ [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4,ab4]@4 [f3,ab3,c4,f4,ab4]@2 [f3,ab3,c4,f4]@2 [f3,ab3,c4,f4,ab4]@2", // Fm
  N: "g3@3 ~ g3@2 g3@4 g3@2 g3@2 g3@2",
})).s("gm_acoustic_guitar_nylon").gain(0.14)

// other · epiano1
const epiano1 = note(`<
  A B C B A B C B A B C B A B C B A B C B A B C B D E F E D E F E D E F E D E F E ~@8 A B C B A B C B A B C B A B C B D
  E F E D E F E D E F E D E F E ~@8 G H I H G H I H ~@8 D E F E D E F J D E F E D E F E ~@20 D E K ~@6
>`.pickRestart({
  A: "eb3 g3 bb3 g4@2 eb4 bb3 eb4", B: "f3 c4 f4 ab4@2 f4 c4 f4", C: "d3 g3 bb3 g4@2 d4 bb3 d4",
  D: "eb4@3 ~ eb4@2 g4@4 g4@2 f4@2 g4@2", E: "f4@3 ~ f4@2 ab4@4 ab4@2 g4@2 ab4@2", F: "d4@3 ~ d4@2 g4@4 g4@2 f4@2 g4@2",
  G: "~ [bb3,eb4,g4]@15, [eb3,g3]", H: "~ [c4,f4,ab4]@15, [f3,ab3]", I: "~ [bb3,d4,g4]@15, [d3,g3]",
  J: "f4@3 ~ f4@2 ab4@4 g4@2 g4@2 g4@2", K: "d4@3 ~ d4@2 g4@4 ~@6",
})).s("gm_epiano1").gain(0.29)

// other · epiano1 · soft notes
const epiano1_soft = note(`<
  ~@40 A B C B A B C B ~@32 A B C B A B C B ~@8 D E F E D E F E ~@16 A B C B A B C B A B C B A B C B A B C B ~@2 G B A B
  C B A
>`.pickRestart({
  A: "eb4@3 ~ eb4@2 g4@4 g4@2 f4@2 g4@2", B: "f4@3 ~ f4@2 ab4@4 ab4@2 g4@2 ab4@2", C: "d4@3 ~ d4@2 g4@4 g4@2 f4@2 g4@2",
  D: "~ [bb3,eb4,g4]@5 ~ [bb3,eb4,g4]@9, [eb3,g3]@5 ~ [eb3,g3]@10", // Eb
  E: "~ [c4,f4,ab4]@5 ~ [c4,f4,ab4]@9, [f3,ab3]@5 ~ [f3,ab3]@10", // Fm
  F: "~ [bb3,d4,g4]@5 ~ [bb3,d4,g4]@9, [d3,g3]@5 ~ [d3,g3]@10", G: "~@5 g4 f4 g4",
})).s("gm_epiano1").gain(0.19)

// other · flute
const flute = note(`<
  ~@48 A B C D A B C D E F E F E F E G ~@48 A B C D A B C D E F E G E F E G ~@8 H@8 ~@5
>`.pickRestart({
  A: "eb4@6 d4 eb4", B: "f4@6 eb4 f4", C: "g4@5 g4 f4 eb4", D: "f4", E: "bb4 ab4@2 g4@3 eb4@2", F: "ab4 g4@2 f4@5",
  G: "f4@15 ~",
  H: "[eb4@8 d4@3 ~ eb4@2 f4@10 eb4@3 ~ f4@2 g4@10 f4@3 ~ g4@2 f4@10 eb4@3 ~ d4@2 eb4@10 d4@3 ~ eb4@2 f4@10 eb4@3 ~ f4@2 g4@10 f4@3 ~ g4@2 f4@10 ~@8]/8",
})).s("gm_flute").gain(0.07)

// other · flute · soft notes
const flute_soft = note("<~@143 A@2 B@4>".pickRestart({
  A: "[~@8 g4@3 ~ f4@2 eb4@12 ~@2 eb4@2 eb4@2]/2",
  B: "[f4@8 eb4@3 ~ f4@2 g4@10 f4@3 ~ eb4@2 f4@10 eb4@3 ~ d4@2 eb4@10 d4@3 ~ eb4@3 ~]/4",
})).s("gm_flute").gain(0.02)

// bass · acoustic bass
const bass = note(`<
  ~@7 A B C D E B C D E B C D E B C D F G C D H G C D H G C D H G C D I G C D E G C D E B C D E B C D E B C D E B C D F
  G C D H G C D H G C D H G C D I G C D E G C D E B C D E B C D E B C D E B C D J B C D E B C D K G C D E G C D E G C D
  E G C D E G C D E G C D E G C D E G C D E G C D E G
>`.pickRestart({
  A: "~@6 ab2@4 g2@2 f2@3 ~", B: "eb2@5 ~ bb1@5 ~ eb2@3 ~", C: "f2@5 ~ f2@6 f2@3 ~", D: "g2@5 ~ g2@5 ~ g2@3 ~",
  E: "f2@5 ~ f2@4 f2@2 f2@3 ~", F: "f2@5 ~ f2@2 g2@2 f2@2 f2@3 ~", G: "eb2@5 ~ eb2@5 ~ eb2@3 ~",
  H: "f2@5 ~ f2@4 ab2@2 ab2@2 f2@2", I: "f2@5 ~ f2@4 f2@2 f2@2 f2@2", J: "f2@5 ~ ab2@4 g2@2 f2@3 ~",
  K: "f2@5 ~ f2@2 f2@2 f2@2 f2@3 ~",
})).s("gm_acoustic_bass").gain(0.48)

// drums · kick
const kick = s("bd").struct(`<
  ~@7 A B@3 C B@3 C B@3 C B@3 D B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@3 D B@3 C B@3 C B@3 C B@3 C B@3
  C B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@3 D B@3 C B@3 C B@3 C B@3 E B@3 C B@3 F B@3 C B@3 C B@3 C B
>`.pickRestart({
  A: "~@5 x!2 ~", B: "x ~@2 x ~@2 x ~", C: "x ~@2 x ~ x!2 ~", D: "x ~@2 x!4 ~", E: "x ~@2 x ~ x ~@2", F: "x ~@2 x ~@4",
})).gain(0.14)

// drums · snare
const snare = s("sd").struct("<~@24 A@15 B A@7 ~@17 A@23 ~@25 A@15 C A@7 D A@7 ~@6>".pickRestart({
  A: "~@3 x", B: "x ~ x!2", C: "x ~@7 x ~@3 x!4", D: "~@12 x!4",
})).gain(0.14)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@143 [~@3 x]!6>").gain(0.05)

// drums · low tom
const low_tom = s("lt").struct("<~@7 A ~@71 B C ~@2 B C ~@64>".pickRestart({
  A: "~@3 x", B: "~@7 x", C: "x",
})).gain(0.14)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  ~@8
  [x!8]!71
  [x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x]
  [x!8]!3
  [x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x]
  [x!8]!65
>`).gain(0.14)

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

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@39 A ~@87 A ~@15 B C@3 B C>".pickRestart({
  A: "x", B: "~@5 x!2 ~", C: "~@3 x",
})).gain(0.07)

// drums · high tom
const high_tom = s("ht").struct("<~@7 [~@3 x ~@4] ~@141>").gain(0.14)

// drums · crash
const crash = s("cr").struct("<~@8 A ~@14 A B@23 C A ~@14 A B@24 A ~@15 D@7 C B@15 E B@7 E B@8 A ~@4>".pickRestart({
  A: "x", B: "x ~@2 x ~@2 x ~", C: "x ~@2 x ~@4", D: "~@3 x ~@4", E: "x ~@2 x ~ x ~@2",
})).gain(0.07)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@144 [~@3 x ~@2 x ~] [x ~@2 x ~@2 x ~]!4>").gain(0.05)

// drums · ride
const ride = s("rd").struct(`<
  ~@7
  [~@3 x ~@4]
  [x!8]!71
  [x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x]
  [x!8]!3
  [x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x]
  [x!8]!65
>`).gain(0.14)

// drums · tambourine
const tambourine = s("tb").struct("<~@16 A ~@39 A ~@31 A ~@7 A ~@7 B@8 ~@37>".pickRestart({
  A: "x", B: "~@3 x ~@4",
})).gain(0.14)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@24 A@24 ~@16 A@15 B A@3 B A@4 ~@24 A@31 C ~@5>".pickRestart({
  A: "x!8", B: "x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x", C: "x!3 ~@5",
})).gain(0.72)

// drums · cabasa · soft notes
const cabasa_soft = s("cabasa:4").struct("<~@143 [~@3 x!5] [x!8]!5>").gain(0.24)

stack(
  pad_poly, acoustic_guitar_nylon, epiano1, epiano1_soft, flute, flute_soft, bass, kick, snare, snare_soft, low_tom,
  pedal_hat, mid_tom, mid_tom_soft, high_tom, crash, crash_soft, ride, tambourine, cabasa, cabasa_soft
)

More by The Cranberries