Strudelify
Ode to My Family cover art

No Need To Argue

Ode to My Family

The Cranberries

KeyD majorTempo93 bpm
0:00/0:00
// Ode to My Family — The Cranberries
// 93 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 108 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): JAZZ GTR.
setcpm(93/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 · fretless bass · "FRETLESS"
const bass = note(`<
  ~ A B C D A B C D E F G H E F G H E F G H I J G K I J G K L M N O L M N O L M N O L M N O P Q G K E F G H E F G H I J
  G K I J G K L M N O L M N O L M N O L M N K L M R K L M R K L M R K L M R K L M R K L M S T U@2 ~
>`.pickRestart({
  A: "d2@2 ~ d2@5", B: "b1@2 ~ b1@5", C: "f#1@2 ~ f#1@5", D: "g1@2 ~ g1 a1!2 d2@2", E: "d2@3 d2@5", F: "b1@3 b1@5",
  G: "f#1@3 f#1@5", H: "g1@3 g1 a1!2 d2@2", I: "d2@3 d2@2 a2 a2@2", J: "b1@3 b1@2 f#2 f#2@2", K: "g1@3 g1 a1!2 c2@2",
  L: "d2@2 d2 a2@2 g2 e2 d2", M: "b1@2 b1 f#2@2 e2 c#2 b1", N: "f#1@2 f#1 f#1@3 f#1!2", O: "g1 g1@2 g1 a1!2 c2!2",
  P: "d2@3 d2@2 a1 a1@2", Q: "b1@3 b1@2 f#1 f#1@2", R: "f#1@3 f#1@3 f#1!2", S: "f#1@3 f#1 f#1@2 f#1!2",
  T: "g1@3 g1 a1!2 c2!2", U: "[d2@9 ~@7]/2",
})).s("gm_fretless_bass").gain(0.32)

// other · electric guitar muted · "MUTED GTR" · D C# D C# D
const electric_guitar_muted = note(`<
  ~
  [~ [d4,d5]@2 a3@2 ~@3, g3 ~@3]!2
  [~ [c#4,c#5]@2 a3@2 ~@3, g3 ~@3]
  [~ [d4,d5]@2 a3@2 ~@3, g3 ~@3]!3
  [~ [c#4,c#5]@2 a3@2 ~@3, g3 ~@3]
  [~ [d4,d5]@2 a3@2 ~@3, g3 ~@3]
  ~@99
>`).s("gm_electric_guitar_muted").gain(0.32).pan(0.3)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note("<~@4 A@5 ~@36 B@5 ~@58>".pickRestart({
  A: "[~@48 f#4@43 ~@5 f#4@43 ~@5 f#4@43 ~@8 g4@40 ~@5, ~@43 d3@48 ~@3 d4@45 ~@3 c#4@45 ~@3 d3@3 b3@42 ~@5, ~@45 a3@46 f#3@48 f#3@48 g2@48 ~@5, ~@46 d4@45 ~@2 b3@46 ~@2 a3@46 ~@2 b2@46 ~@5, ~@192 a3@43 ~@5]/5",
  B: "[~@12 f#4@43 ~@5 f#4@43 ~@5 f#4@43 ~@6 g4@40 ~@43, ~@7 d3@48 ~@3 d4@45 ~@3 c#4@45 ~@3 a3@43 ~@43, ~@9 a3@46 f#3@48 f#3@48 [g2,b2]@48 ~@41, ~@10 d4@45 ~@2 b3@46 ~@2 a3@46 ~@2 d3@45 ~@42, ~@26 b3@7 ~@7]/5", // G
})).s("gm_acoustic_guitar_steel").gain(0.3).pan(0)

// other · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel_2 = note(`<
  ~@8 A B C D E B C D E B C D E B C D E B C D E ~@16 B C D E B C D E B C D E B C D E B C D E ~@43
>`.pickRestart({
  A: "~@5 d4 a3 g3", B: "d4@2 a3@2 f#3@2 d4 a3@2 f#3 d4@2 a3@2 e3@2", C: "d4@2 b3@2 f#3@2 d4 b3@2 f#3 d4@2 b3@2 e3@2",
  D: "c#4@2 a3@2 f#3@2 c#4 a3@2 f#3 c#4@2 a3@2 e3@2", E: "d4@2 a3@2 g3@2 a3 b3 a3@2 a3 b3 a3@2 a3 b3",
})).s("gm_acoustic_guitar_steel").gain(0.22).pan(0.8)

// other · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel_3 = note(`<
  ~@12 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@18 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@42
>`.pickRestart({
  A: "~@18 a3@3 ~@3 b3@4 ~@2 a3@3 ~@3 b3@4 ~@2 a3@3 ~@3", B: "b3 ~",
})).s("gm_acoustic_guitar_steel").gain(0.3)

// other · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note("<~@13 A ~@3 A ~@3 A ~@3 A ~@3 A ~@19 A ~@3 A ~@3 A ~@3 A ~@3 A ~@42>".pickRestart({
  A: "a3 ~@7",
})).s("gm_electric_guitar_jazz").gain(0.22)

// other · english horn · "ENGL.HORN"
const english_horn = note(`<
  ~@29 A B C D A B C D E B@2 D E B@2 D ~@20 A B C D A B C D E B@2 D E B@2 D A B C D E B@2 D A B C D E B@2 D E B@2 D E
  B@2 D F ~@2
>`.pickRestart({
  A: "d5@2 ~ d5@2 ~ c#5@2 ~ c#5@2 ~@5", B: "b4@2 ~ b4@2 ~ a4@2 ~ a4@2 ~@5", C: "b4@6 a4@9 ~",
  D: "g4@2 ~ g4@2 ~ f#4@2 ~ f#4@2 ~@5", E: "d5", F: "d5@3 ~",
})).s("gm_english_horn").gain(0.2).pan(0.3)

// other · woodblock
const woodblock = note("<~@60 [~@6 g4 ~ g4 ~ g4 ~ g4 ~@3] ~@3 [~@6 g4 ~ g4 ~ g4 ~ g4 ~@3] ~@43>")
  .s("gm_woodblock").gain(0.14).pan(0.7)

// other · cello
const cello = note("<~@56 A@2 B C D E F C D ~@17 G H ~@2 G H ~@2 G H ~@2 G H ~@2 G H ~@2 G I@2 J ~@2>".pickRestart({
  A: "[~@4 f#3@7 g3 a3@2 d4@2]/2", B: "c#4@9 b3@6 ~ b3@20 f#3@12", C: "g3", D: "g3 f#3 g3 a3", E: "d4@3 a4@2 g4 f#4 e4",
  F: "d4@3 f#3", G: "g3 a3 b3 d4", H: "c#4@2 d4 b3@4 ~", I: "[c#4@12 d4@6 b3@24 ~@5 d4@24 e4@25]/2", J: "d4@23 ~",
})).s("gm_cello").gain(0.28)

// other · tremolo strings · "TREMOLOSTR"
const tremolo_strings = note("<~@80 A@8 B@4 C@8 D@6 ~@2>".pickRestart({
  A: "[~@47 a5@336 g5]/8", B: "[~@24 e5@23 f#5@144 ~]/4",
  C: "[d5@24 g5@23 f#5@30 e5@6 d5@6 c#5@6 d5@37 f#5@9 ~@2 f#5@48 d5@48 f#5@144 ~]/8",
  D: "[d5@24 g5@23 f#5@31 e5@5 d5@6 c#5@6 d5@36 f#5@11 ~ f#5@18 g5@30 d5@17 ~ d5@7 g5@23 f#5@47 ~@2]/6",
})).s("gm_tremolo_strings").gain(0.36).pan(0.6)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel_4 = note("<~@29 A B C@8 D@8 ~@18 A B C@32 E@8 ~>".pickRestart({
  A: "~ [d4,f#4]@8 ~ [d4,f#4]@2 ~ [d3,a3]@5 ~ [d4,f#4]@8 ~ [d4,f#4]@2 ~ [d3,a3]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@2 ~ [d3,a3]@2, [d3,a3]@3 [d3,a3] [d4,f#4]@2 [d3,a3]@3 [d3,a3] [d4,f#4]@2 [d3,a3]@2 [d3,a3] [d4,f#4]", // D D5 D D5 D D5 D D5 …
  B: "~ [d4,f#4]@8 ~ [d4,f#4]@2 ~ [f#3,b3]@5 ~ [d4,f#4]@8 ~ [d4,f#4]@2 ~ [f#3,b3]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@2 ~ [f#3,b3]@2, [f#3,b3]@3 [f#3,b3] [d4,f#4]@2 [f#3,b3]@3 [f#3,b3] [d4,f#4]@2 [f#3,b3]@2 [f#3,b3] [d4,f#4]", // D B5 D B5 D B5 D B5 …
  C: "[~ [c#4,f#4]@8 ~ [c#4,f#4]@2 ~ [f#3,a3]@5 ~ [c#4,f#4]@8 ~ [c#4,f#4]@2 ~ [f#3,a3]@5 ~ [c#4,f#4]@5 ~ [c#4,f#4]@2 ~ a3@2 ~ [b3,g4]@5 ~ [b3,g4]@11 ~ [b3,g4]@2 ~ a3@2 ~ [d4,g4]@5 ~ [d4,g4]@2 ~ [e3,a3]@2 ~ [d4,g4]@5 ~ [d4,g4]@2 ~ a3@2 ~ [d4,f#4]@8 ~ [d4,f#4]@2 ~ [d3,a3]@5 ~ [d4,f#4]@8 ~ [d4,f#4]@2 ~ [d3,a3]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@2 ~@4 [d4,f#4]@8 ~ [d4,f#4]@2 ~ [f#3,b3]@5 ~ [d4,f#4]@8 ~ [d4,f#4]@2 ~ [f#3,b3]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@2 ~ f#3@2 ~ [c#4,f#4]@8 ~ [c#4,f#4]@2 ~ [f#3,a3]@5 ~ [c#4,f#4]@8 ~ [c#4,f#4]@2 ~ [f#3,a3]@5 ~ [c#4,f#4]@5 ~ [c#4,f#4]@2 ~ a3@2 ~ [b3,g4]@5 ~ [b3,g4]@11 ~ [b3,g4]@2 ~ a3@2 ~ [d4,g4]@5 ~ [d4,g4]@2 ~ [e3,a3]@2 ~ [d4,g4]@5 ~ [d4,g4]@2 ~ a3@2 ~ [d4,f#4]@8 ~ [d4,f#4]@2 ~ [d3,a3]@5 ~ [d4,f#4]@8 ~ [d4,f#4]@2 ~ [d3,a3]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@2 ~@4 [d4,f#4]@8 ~ [d4,f#4]@2 ~ [f#3,b3]@5 ~ [d4,f#4]@8 ~ [d4,f#4]@2 ~ [f#3,b3]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@2 ~ [f#3,b3]@2, [f#3,a3]@9 [f#3,a3]@3 [c#4,f#4]@6 [f#3,a3]@9 [f#3,a3]@3 [c#4,f#4]@6 [f#3,a3]@6 [f#3,a3]@3 c#4@48 d4 e3@95 d4@51 [d3,a3]@6 [d3,a3]@12 [d3,a3]@3 b3@72 [d4,f#4]@3 [f#3,b3]@9 [f#3,b3]@3 [d4,f#4]@6 [f#3,b3]@9 [f#3,b3]@3 [d4,f#4]@6 [f#3,b3]@6 [f#3,b3]@4 ~@2, ~@45 f#4@24 g4 d3@2 [e3,a3]@6 [e3,a3]@3 [d4,g4]@3 [e3,a3]@6 [e3,a3]@3 g4@51 [f#3,b3]@9 [f#3,b3]@3 [d4,f#4]@6 [f#3,b3]@9 [f#3,b3]@3 [d4,f#4]@6 [f#3,b3]@6 [f#3,b3]@3 f#4@3 [f#3,a3]@9 [f#3,a3]@3 [c#4,f#4]@6 [f#3,a3]@9 [f#3,a3]@3 [c#4,f#4]@6 [f#3,a3]@6 [f#3,a3]@3 c#4@48 d4 e3@96 ~@2, ~@46 f#3@50 [d3,a3]@9 [d3,a3]@3 [d4,f#4]@6 [d3,a3]@9 [d3,a3]@3 [d4,f#4]@6 [d3,a3]@6 [d3,a3]@3 [d4,f#4] a3@48 b3@48 f#3@50 [d3,a3]@9 [d3,a3]@3 [d4,f#4]@6 [d3,a3]@9 [d3,a3]@3 [d4,f#4]@6 [d3,a3]@6 [d3,a3]@4 [d3,a3]@50, ~@48 [d3,a3]@6 [d3,a3]@12 [d3,a3]@3 b3@73 d3@95 f#4@24 g4 d3@2 [e3,a3]@6 [e3,a3]@3 [d4,g4]@3 [e3,a3]@6 [e3,a3]@3 g4@96 [d4,f#4]@3]/8", // F#5 F#m F#5 F#m F#5 Em G5 A5 …
  D: "[~ [c#4,f#4]@8 ~ [c#4,f#4]@2 ~ [f#3,a3]@5 ~ [c#4,f#4]@8 ~ [c#4,f#4]@2 ~ [f#3,a3]@5 ~ [c#4,f#4]@5 ~ [c#4,f#4]@2 ~ a3@2 ~ [b3,g4]@5 ~ [b3,g4]@11 ~ [b3,g4]@2 ~ a3@2 ~ [d4,g4]@5 ~ [d4,g4]@2 ~ [e3,a3]@2 ~ [d4,g4]@5 ~ [d4,g4]@2 ~ a3@2 ~ [d4,f#4]@8 ~ [d4,f#4]@2 ~ [d3,a3]@5 ~ [d4,f#4]@8 ~ [d4,f#4]@2 ~ [d3,a3]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@2 ~@4 [d4,f#4]@8 ~ [d4,f#4]@2 ~ [f#3,b3]@5 ~ [d4,f#4]@8 ~ [d4,f#4]@2 ~ [f#3,b3]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@2 ~ f#3@2 ~ [c#4,f#4]@8 ~ [c#4,f#4]@2 ~ [f#3,a3]@5 ~ [c#4,f#4]@8 ~ [c#4,f#4]@2 ~ [f#3,a3]@5 ~ [c#4,f#4]@5 ~ [c#4,f#4]@2 ~ a3@2 ~ [b3,g4]@5 ~ [b3,g4]@11 ~ [b3,g4]@2 ~ a3@2 ~ [d4,g4]@5 ~ [d4,g4]@2 ~ [e3,a3]@2 ~ [d4,g4]@5 ~ [d4,g4]@2 ~ [e3,a3]@96 ~@2, [f#3,a3]@9 [f#3,a3]@3 [c#4,f#4]@6 [f#3,a3]@9 [f#3,a3]@3 [c#4,f#4]@6 [f#3,a3]@6 [f#3,a3]@3 c#4@48 d4 e3@95 d4@72 b3@96 ~@27, ~@45 f#4@24 g4 d3@2 [e3,a3]@6 [e3,a3]@3 [d4,g4]@3 [e3,a3]@6 [e3,a3]@3 g4@51 [f#3,b3]@9 [f#3,b3]@3 [d4,f#4]@6 [f#3,b3]@9 [f#3,b3]@3 [d4,f#4]@6 [f#3,b3]@6 [f#3,b3]@3 f#4@3 [f#3,a3]@9 [f#3,a3]@3 [c#4,f#4]@6 [f#3,a3]@9 [f#3,a3]@3 [c#4,f#4]@6 [f#3,a3]@6 [f#3,a3]@3 [c#4,f#4]@27 [e3,a3]@6 [e3,a3]@3 [d4,g4]@3 [e3,a3]@6 [e3,a3]@3 [d4,g4]@96 ~@3, ~@46 f#3@50 [d3,a3]@9 [d3,a3]@3 [d4,f#4]@6 [d3,a3]@9 [d3,a3]@3 [d4,f#4]@6 [d3,a3]@6 [d3,a3]@3 [d4,f#4] a3@48 b3@50 [d3,a3]@6 [d3,a3]@12 [d3,a3]@3 g4 d3@96 ~@26, ~@48 [d3,a3]@6 [d3,a3]@12 [d3,a3]@3 b3@73 d3@96 f#3@96 ~@50]/8", // F#5 F#m F#5 F#m F#5 Em G5 A5 …
  E: "[~ [c#4,f#4]@8 ~ [c#4,f#4]@2 ~ [f#3,a3]@5 ~ [c#4,f#4]@8 ~ [c#4,f#4]@2 ~ [f#3,a3]@5 ~ [c#4,f#4]@5 ~ [c#4,f#4]@2 ~ a3@2 ~ [b3,g4]@5 ~ [b3,g4]@11 ~ [b3,g4]@2 ~ a3@2 ~ [d4,g4]@5 ~ [d4,g4]@2 ~ [e3,a3]@2 ~ [d4,g4]@5 ~ [d4,g4]@2 ~ a3@2 ~ [d4,f#4]@8 ~ [d4,f#4]@2 ~ [d3,a3]@5 ~ [d4,f#4]@8 ~ [d4,f#4]@2 ~ [d3,a3]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@2 ~@4 [d4,f#4]@8 ~ [d4,f#4]@2 ~ [f#3,b3]@5 ~ [d4,f#4]@8 ~ [d4,f#4]@2 ~ [f#3,b3]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@2 ~ f#3@2 ~ [c#4,f#4]@8 ~ [c#4,f#4]@2 ~ [f#3,a3]@5 ~ [c#4,f#4]@8 ~ [c#4,f#4]@2 ~ [f#3,a3]@5 ~ [c#4,f#4]@5 ~ [c#4,f#4]@2 ~ a3@2 ~ [b3,g4]@5 ~ [b3,g4]@11 ~ [b3,g4]@2 ~ a3@2 ~ [d4,g4]@5 ~ [d4,g4]@2 ~ [e3,a3]@2 ~ [d4,g4]@5 ~ [d4,g4]@2 ~ a3@2 ~ [d4,f#4]@95, [f#3,a3]@9 [f#3,a3]@3 [c#4,f#4]@6 [f#3,a3]@9 [f#3,a3]@3 [c#4,f#4]@6 [f#3,a3]@6 [f#3,a3]@3 c#4@48 d4 e3@95 d4@51 [d3,a3]@6 [d3,a3]@12 [d3,a3]@3 b3@96 ~@27, ~@45 f#4@24 g4 d3@2 [e3,a3]@6 [e3,a3]@3 [d4,g4]@3 [e3,a3]@6 [e3,a3]@3 g4@51 [f#3,b3]@9 [f#3,b3]@3 [d4,f#4]@6 [f#3,b3]@9 [f#3,b3]@3 [d4,f#4]@6 [f#3,b3]@6 [f#3,b3]@3 f#4@3 [f#3,a3]@9 [f#3,a3]@3 [c#4,f#4]@6 [f#3,a3]@9 [f#3,a3]@3 [c#4,f#4]@6 [f#3,a3]@6 [f#3,a3]@3 c#4@48 d4 e3@96 ~@2, ~@46 f#3@50 [d3,a3]@9 [d3,a3]@3 [d4,f#4]@6 [d3,a3]@9 [d3,a3]@3 [d4,f#4]@6 [d3,a3]@6 [d3,a3]@3 [d4,f#4] a3@48 b3@48 f#3@50 [d3,a3]@96, ~@48 [d3,a3]@6 [d3,a3]@12 [d3,a3]@3 b3@73 d3@95 f#4@24 g4 d3@2 [e3,a3]@6 [e3,a3]@3 [d4,g4]@3 [e3,a3]@6 [e3,a3]@3 g4@96 ~@3]/8", // F#5 F#m F#5 F#m F#5 Em G5 A5 …
})).s("gm_acoustic_guitar_steel").gain(0.11).pan(1)

// other · viola
const viola = note(`<
  A B C@2 D B C@2 E ~@4 F G H I@3 H J@5 K@4 L M@2 N L M@2 N O@3 P Q@3 R ~@4 F G H I@3 H S@5 T@4 L M@2 N L M@2 N O@3 P
  Q@3 U V W V X V W V Y B C@2 D B C@2 D B C@2 E ~@7
>`.pickRestart({
  A: "~@3 f#5", B: "e5 f#5@2 f#5@3 f#5@2", C: "[e5 f#5@2 f#5@3 ~@2 e5 f#5@2 f#5@3 f#5@2, ~@6 f#5@3 ~@7]/2",
  D: "g5 d5@2 d5@3 g5@2", E: "g5 d5@2 d5@3 ~@2", F: "~@4 a4@2 d5!2", G: "~@2 c#5 b4@2 b4 c#5@2",
  H: "a4 g4@2 f#4@3 ~ g4", I: "[a4 g4@2 f#4@2 f#4 g4 f#4@3 ~ a4!2 d5@2 d5@2 ~ c#5 b4@2 b4 c#5@2]/3",
  J: "[a4@2 g4@4 f#4@4 f#4@2 g4@2 f#4@4 ~ e5 f#5@2 e5@4 f#5@8 ~ e5 f#5@2 e5@4 f#4@2 f#4@2 b4@4 a4@6 ~@2 a4@2 a4@2 b4@4 d5@4 d5@4 d5@2 d5@2 ~@2]/5",
  K: "[~@9 e5@3 f#5@6 e5@12 f#5@24 ~@3 e5@3 f#5@6 e5@12 f#4@6 f#4@6 b4@12 a4@18 ~@6 a4@6 a4@6 b4@12 d5@12 ~@4 a4@2 d5@3 ~ d5@2 d5@3 ~@3 d5 ~@11]/4",
  L: "~@3 a4 b4@2 d5!2", M: "[~@5 f#5 g5 a5@2 g5@2 e5@2 e5 ~ e5]/2", N: "g5 f#5@2 d5@2 d5!2 ~",
  O: "[~@2 f#5 e5@2 f#5@4 ~ f#5 e5@2 f#4!2 b4@2 a4@3 ~@2 a4!2]/3",
  P: "b4@6 d5@12 ~@4 a4@2 d5@3 ~ d5@2 d5@3 ~@3 e5@3 ~ d5@8",
  Q: "[~@2 f#5 e5@2 f#5@4 ~ f#5 e5@2 f#5 f#4 b4@2 a4@3 ~ a4!3]/3",
  R: "b4@6 d5@6 ~@10 a4@2 d5@3 ~ d5@2 d5@3 ~@3 d5 ~@11",
  S: "[a4@6 g4@12 f#4@12 f#4@6 g4@6 f#4@12 ~@3 e5@3 f#5@6 e5@12 f#5@24 ~@6 f#5@6 e5@12 f#4@6 f#4@6 b4@12 a4@12 ~@12 a4@6 a4@6 b4@12 d5@12 d5@6 d5@4 d5@2 d5@3 ~@3 d5 ~@11]/5",
  T: "[~@9 e5@3 f#5@6 e5@12 f#5@24 ~@3 e5@3 f#5@6 e5@12 f#5@6 f#5@6 a5@12 e5@12 f#5@6 ~@6 f#5@6 f#5@6 b5@12 f#5@12 ~@4 a4@2 d5@3 ~ d5@2 d5@3 ~@3 d5 ~@11]/4",
  U: "b4@6 d5@6 ~@10 a4@2 d5@3 ~ c#5@2 d5@6 d5@6 c#5@6", V: "a4@4 ~@3 a4 d5 c#5 d5@2 d5@2 c#5@2",
  W: "b4@12 ~@10 b4@2 d5@3 ~ c#5@2 d5@6 d5@6 c#5@6", X: "b4@12 ~@10 a4@2 d5@3 ~ c#5@2 d5@6 d5@6 c#5@6", Y: "b4@2 ~ f#5",
})).s("gm_viola").gain(0.48)

// chords · flute
const flute = note(`<
  ~@17 A@2 B C@2 ~@2 D ~@3 E ~@3 F ~@2 G@2 ~@3 H ~@3 H ~@7 I@2 ~@2 C@2 ~@2 D ~@3 E ~@3 F ~@2 G@2 ~@3 H ~@3 J K L K L K L
  K M N O@2 P N O@2 Q ~@11
>`.pickRestart({
  A: "[~@7 [f#5,b5]@2 c#6@2 [d5,f#5]@2 [d5,f#5]@3]/2", B: "[a4,c#5]@3 ~", C: "[[a4,d5]@3 [a4,d5]@4 [a4,d5]@2 ~@7]/2",
  D: "~@3 [g5,a5]@5", E: "~@22 g5@2 g5@2 ~@2 g5@2 g5@3 ~@3 f#5@12", F: "[a5,d6]@3 [g5,a5]@5",
  G: "[~@7 [a5,d6]@2 [a5,d6]@2 [g5,a5]@5]/2", H: "~ [g5,a5]", I: "[[a4,d5]@3 [a4,d5]@3 [a4,d5]@3 ~@7]/2",
  J: "~@5 f#5 g5 ~", K: "d5@2 ~@3 f#5 g5 ~", L: "f#5@2 ~@3 f#5 g5 ~", M: "g5 ~@2 f#5", N: "e5 f#5@2 f#5@3 f#5@2",
  O: "[e5 f#5@2 f#5@3 ~@2 e5 f#5@2 f#5@3 f#5@2, ~@6 f#5@3 ~@7]/2", P: "g5 d5@2 d5@3 g5@2", Q: "g5 d5@2 d5@3 ~@2",
})).s("gm_flute").gain(0.19).pan(0.7)

// drums · rim
const rim = s("rim").struct("<~@28 A B@16 ~@19 A B@15 C@9 B@3 C B@3 C B@3 C B@4 ~@3>".pickRestart({
  A: "~@30 x ~@2 x ~@8 x ~@3 x ~", B: "~@3 x", C: "~@12 x!2 ~@2",
})).gain(0.45)

// drums · rim · soft notes
const rim_soft = s("rim").struct("<~@80 A B A B A B A B A ~@3 A ~@3 A ~@3 A ~@7>".pickRestart({
  A: "~@14 x!2", B: "~@21 x ~ x",
})).gain(0.25)

// drums · low tom
const low_tom = s("lt").struct("<~@44 A B ~@35 B@3 ~ B@3 ~@16 A ~@3>".pickRestart({
  A: "~@7 x", B: "x",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@28
  [~@3 x!2 ~@3]
  [x ~@2 x ~@2 x ~@2 x!2 ~ x ~ x ~]!16
  ~@19
  [~@3 x!2 ~@3]
  [x ~@2 x ~@2 x ~@2 x!2 ~ x ~ x ~]!40
  ~@3
>`).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~@28 [~@3 x] ~@35 [~@3 x] ~@43>").gain(0.4)

// drums · china
const china = s("cr").struct("<~@4 [~@5 x!2 ~] ~@40 x ~@14 [~@3 x] ~@47>").gain(0.4)

// drums · tambourine
const tambourine = s("tb").struct("<~ [~ x ~ x]!104 ~@3>").gain(0.4)

// drums · ride
const ride = s("rd").struct(`<
  ~@32 A B ~@2 A B ~@2 A B ~@2 A B ~@22 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2
>`.pickRestart({
  A: "x!4", B: "x",
})).gain(0.45)

// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
  ~ A B A B A B A B A B A B A B A B A B A B A B A B A B A B C@16 A B A B A B A B A B A B A B A B A B A B C@40 ~@3
>`.pickRestart({
  A: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x ~ x ~@3 x ~",
  B: "x ~@3 x ~ x ~@2 x ~@2 x ~@3 x ~ x ~@3 x ~ x ~@3 x ~ x ~@2 x ~@2 x ~@3 x ~ x ~@3 x ~", C: "~ x ~@2",
})).gain(1.51)

// drums · triangle
const triangle = s("triangles:35").struct("<~@37 [~@3 x]!8 ~@28 [~@3 x]!32 ~@3>").gain(3.89)

// drums · shaker
const shaker = s("sh").struct(`<
  ~@29 A B A B A B A B A B A B A B A B ~@20 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
  A B ~@3
>`.pickRestart({
  A: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x ~ x ~@3 x ~",
  B: "x ~@3 x ~ x ~@2 x ~@2 x ~@3 x ~ x ~@3 x ~ x ~@3 x ~ x ~@2 x ~@2 x ~@3 x ~ x ~@3 x ~",
})).gain(0.25)

stack(
  bass, electric_guitar_muted, acoustic_guitar_steel, acoustic_guitar_steel_2, acoustic_guitar_steel_3,
  electric_guitar_jazz, english_horn, woodblock, cello, tremolo_strings, acoustic_guitar_steel_4, viola, flute, rim,
  rim_soft, low_tom, hihat, open_hat, china, tambourine, ride, cabasa, triangle, shaker
)

More by The Cranberries