Strudelify
Twenty One cover art

No Need To Argue

Twenty One

The Cranberries

KeyB♭ majorTempo120 bpm
0:00/0:00
// Twenty One — The Cranberries
// 120 bpm, 4/4, key Bb 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: duplicate parts dropped: ch 7 "Aahs" piccolo (copy of ch 11 "Aahs" pad halo)
// note: Full arrangement: all 93 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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 · acoustic guitar steel · "Acoustic Guitar"
const acoustic_guitar_steel = note(`<
  ~ A@2 B@2 C@2 D@2 C@2 D@2 C@2 D@2 C@2 D@2 C@2 D@2 E@8 ~@4 C@2 D@2 C@2 D@2 C@2 D@2 C@2 D@2 C@2 D@2 C@2 D@2 ~@4 E@24 ~@4
>`.pickRestart({
  A: "[~@2 bb3 d4@2 bb3@2 ~@2 a3 bb3 f4 g4 f4@3, g3 f3, ~@7 bb3@2 ~@7]/2",
  B: "[~ a3 bb3 g4@2 d4@2 ~@3 bb3 d4@2 bb3@3, f3 g3, ~@7 bb3@3 ~@6]/2",
  C: "[~ a3 bb3 g4@2 bb3@2 ~@2 a3 bb3 f4 g4 f4 a3 bb3, f3 f3, ~@7 bb3@2 ~@7]/2",
  D: "[~ a3 bb3 g4@2 bb3@2 ~@2 a3 bb3 g4@2 d4 bb3@2, f3 g3, ~@7 bb3@3 ~@6]/2", E: "a3 bb3!2 a3 bb3 bb3@2 bb3",
})).s("gm_acoustic_guitar_steel").gain(0.4).pan(0.3)

// chords · acoustic guitar steel · "Chorus Guitar"
const acoustic_guitar_steel_2 = note(`<
  ~ A@4 B C D B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D B E@4 B C D B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D B E@4
  B C D B@2 C D B@2 C D B@2 C D B@2 C D B@2 C D B F G H I
>`.pickRestart({
  A: "[~@33 d4@15 ~ [bb3,d4,g4]@11 ~@4, [eb3,g3]@17 f4 a4@32 ~@14, ~ [bb3,d4,g4]@31 [d3,a3]@28 ~@4, ~@16 [f2,c3]@17 f4@27 ~@4, ~@17 [f3,c4]@31 [eb3,g3]@12 ~@4]/4", // Gm Eb Gm D5 F5 Eb
  B: "[eb3,g3,bb3,d4,g4]@2 [eb3,g3,bb3,d4,g4] [eb3,g3,bb3,d4,g4]@2 [eb3,g3,bb3,d4,g4]!3", // Ebmaj7
  C: "[f2,c3,f3,c4,f4,a4]@2 [f2,c3,f3,c4,f4,a4] [f2,c3,f3,c4,f4,a4]@2 [f2,c3,f3,c4,f4,a4]!3", // F
  D: "[d3,a3,d4,f4]@2 [d3,a3,d4,f4] [d3,a3,d4,f4]@2 [d3,a3,d4,f4]!3", E: "[d3,f3,bb3,d4,g4]/4",
  F: "[eb4,g4,d5]@3 [eb4,g4,c5]", G: "[f4,a4,d5]@3 [f4,a4,c5]", H: "[f4,a4,d5]@3 [a3,d4,f4]", I: "[d4,g4,bb4]",
})).s("gm_acoustic_guitar_steel").gain(0.43).pan(1)

// chords · rock organ · "Organ"
const rock_organ = note("<~@33 A@4 ~@24 A@4 ~@28>".pickRestart({
  A: "[g4,bb4,d5,f5]/4", // Gm7
})).s("gm_rock_organ").gain(0.25)

// other · brass section · "Wah"
const brass_section = note("<~@33 A@3 B@2 ~@26 B@2 ~@27>".pickRestart({
  A: "f4/3", B: "d4/2",
})).s("gm_brass_section").gain(0.04).pan(1)

// other · acoustic guitar steel · "Acoustic Guitar"
const acoustic_guitar_steel_3 = note("<~@73 A@2 B C A@2 B D E F G H E F G I J@2 K L>".pickRestart({
  A: "[d4@3 c4@3 ~@2 f3@6 ~@2, ~@7 d4@2 ~@7]/2", B: "f3@3 f3@2 g3 a3@2", C: "bb3 a3@2 g3@3 f3 g3",
  D: "bb3 a3@2 g3@3 ~@2", E: "d4!4 ~ d4 bb3 d4", F: "c4!4 ~ c4 bb3 c4", G: "bb3!4 ~ bb3 a3 bb3", H: "g3!4 ~ g3@2 ~",
  I: "g3!4 ~@2 c4@2", J: "d4@3 c4", K: "d4@3 f3", L: "bb3",
})).s("gm_acoustic_guitar_steel").gain(0.48).pan(0.8)

// bass · fretless bass · "Bass"
const bass = note(`<
  ~ A B C A@2 B C A@2 B C A@2 B C D A B C A@2 B C A@2 B C A@2 B C A E@4 A B C A@2 B C A@2 B C F A B C G A B C H A B C D
  E@3 I A B C J A B C J A B C J A B C J A B C A@2 B C A K L M K
>`.pickRestart({
  A: "eb1@5 ~ eb1@5 ~ eb1@4", B: "f1@5 ~ f1@5 ~ f1@4", C: "d1@5 ~ d1@5 ~ d1@4", D: "eb1@5 ~ eb1@4 bb1@2 eb1@4",
  E: "g1@5 ~ g1@5 ~ g1@4", F: "eb1@5 ~ eb1@4 eb2@2 bb1@2 eb1@2", G: "eb1@5 ~ eb1@5 ~ bb1@2 eb1@2",
  H: "eb1@5 ~ eb1@4 bb1@2 eb1@2 eb1@2", I: "g1@5 ~ g1@5 ~ f1@4", J: "eb1@5 ~ eb1@5 ~ eb2@2 eb1@2", K: "eb1@7 ~",
  L: "f1@7 ~", M: "d1@7 ~",
})).s("gm_fretless_bass").gain(0.32)

// other · pad halo · "Aahs"
const pad_halo = note("<~@61 A B@2 C D E F G D E F H D E F G D E F H I@4 ~@8>".pickRestart({
  A: "~@2 bb4 ~ g4@2 f4@2", B: "g4@2 bb4 ~ g4@2 f4@2", C: "g4@3 a4@3 c5@2", D: "d5@3 c5@3 ~ d5", E: "f4@3 ~",
  F: "f4@3 f4@2 g4 a4@2", G: "bb4 a4@2 g4@3 f4 g4", H: "bb4 a4@2 g4@3 ~@2", I: "bb4@2 a4 g4@3 ~@2",
})).s("gm_pad_halo").gain(0.36).pan(0.7)

// drums · rim
const rim = s("rim").struct("<~ [~@3 x]!23 ~@13 [~@3 x]!15 ~ [~@3 x]!7 ~@33>").gain(0.45)

// drums · snare
const snare = s("sd").struct("<~@25 A@8 ~ B ~ C ~@23 A ~ B ~ C A@24 ~@4>".pickRestart({
  A: "~@3 x", B: "~@10 x!4 ~@2", C: "~@10 x!2 ~@4",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@24 A ~@8 A ~ A B ~@15 A ~@8 A ~ A B ~@28>".pickRestart({
  A: "~@3 x", B: "~@13 x ~@2",
})).gain(0.4)

// drums · pedal hat
const pedal_hat = s("hh").struct("<[x!4] [~ x ~ x ~ x ~ x]!88 ~@4>").gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~@24 A ~@11 B ~@15 A ~@11 B ~@28>".pickRestart({
  A: "~@5 x ~@2", B: "~@3 x",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct("<~@25 A@8 ~@4 B ~@7 A@16 ~@4 A@24 ~@4>".pickRestart({
  A: "x ~@2 x ~ x!3", B: "x",
})).gain(0.2)

// drums · high tom
const high_tom = s("ht").struct("<~@24 [~@3 x ~@4] ~@27 [~@3 x ~@4] ~@40>").gain(0.4)

// drums · triangle
const triangle = s("triangles:35").struct(`<
  ~@28 A ~@3 A ~@3 B ~@11 A ~@3 A ~@3 A ~@3 A ~@3 B ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 C
>`.pickRestart({
  A: "~@3 x", B: "~@13 x ~@2", C: "x",
})).gain(3.89)

stack(
  acoustic_guitar_steel, acoustic_guitar_steel_2, rock_organ, brass_section, acoustic_guitar_steel_3, bass, pad_halo,
  rim, snare, low_tom, pedal_hat, mid_tom, crash, high_tom, triangle
)

More by The Cranberries