Strudelify

I Won't Let You Down

2Boys

KeyC minorTempo126 bpm
0:00/0:00
// I Won't Let You Down — 2Boys
// 126 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 125 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(126/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 · drawbar organ · "ORGAN 1"
const drawbar_organ = note(`<
  A B C D A B C D A B C D A B C D ~@24 A B C D A B C D A B C D A B C D ~@24 A B C D A B C D A B C D A B C D ~@8 A B C D
  A B C D A B C D A B C D A B C E ~
>`.pickRestart({
  A: "[ab3,ab4]@3 ~@3 eb5 c5, eb4@15 ~, c5@3 ~, ~@3 [g3,g4]@5", B: "[f3,ab5]@3 [c3,g5]@5, [c5,eb5]",
  C: "[g3,g5]@3 [bb2,f5]@5, [bb4,d5]", D: "bb4@3 a4@3 [eb3,ab4,eb5]@2, c5, [f3,f5]@3 ~",
  E: "[f3,f5]@3 ~, c5, bb4@3 ~@5", // F
})).s("gm_drawbar_organ").gain(0.38).pan(0.4)

// bass · synth bass 1 · "SYN BASS 1"
const bass = note(`<
  ~@16 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 D E F C D E F C D E F C D E F 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 D E F C D E F C D E F C D E F A B A B ~@4 C D E F C D E F C D E F C D E F C D E G ~
>`.pickRestart({
  A: "eb2 ~@3 eb2 ~@3 eb2 ~ eb2 ~ bb1 ~ a1 ~", B: "ab1 ~@3 ab1 ~@3 ab1 ~ c2 ~ db2 ~ d2 ~",
  C: "ab2 ~@3 ab2 ~@3 g2 ~ g2 ~ g2 ~ g2 ~", D: "f2 ~@3 f2 ~@3 c2 ~ c2 ~ c2 ~ c2 ~",
  E: "g2 ~@3 g2 ~@3 bb1 ~ bb1 ~ bb1 ~ bb1 ~", F: "f2 ~@3 f2 ~@3 f2 ~ f2 ~ eb2 ~ eb2 ~", G: "f2 ~@3 f2 ~@11",
})).s("gm_synth_bass_1").gain(0.45)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@4 A B C D A B C D A B C D E F E F E F E F E F E F E F E F E F E F E F E F A B C D A B C D A B C D A B C D E F E F E
  F E F E F E F E F E F E F E F E F E F A B C D A B C D A B C D A B C D E F E F A B C D A B C D A B C D A B C D A B C D
  A B G ~@2
>`.pickRestart({
  A: "~@2 [ab3,c4,eb4] ~@3 [g3,c4,eb4] ~@3 [g3,c4,eb4] ~@3 [g3,c4,eb4] ~", // Ab Cm
  B: "~@2 [c4,eb4,ab4] ~@3 [c4,eb4,g4] ~@3 [c4,eb4,g4] ~@3 [c4,eb4,g4] ~", // Ab Cm
  C: "~@2 [bb3,d4,g4] ~@3 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~", // Gm Bb
  D: "~@2 [bb3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [ab3,c4,eb4] ~", // Bbsus2 F Ab
  E: "~@2 [bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~@3 [bb3,db4,g4] ~@3 [bb3,db4,g4] ~", // Eb Gdim
  F: "~@2 [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~", // Ab
  G: "~@2 [bb3,d4,g4] ~@3 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~@5", // Gm Bb
})).s("gm_electric_guitar_muted").gain(0.56)

// chords · electric guitar muted · "MUTED GTR" · soft notes
const electric_guitar_muted_2 = note(`<
  ~@4 A B C D A B C D A B C D E F E F E F E F E F E F E F E F E F E F E F E F A B C D A B C D A B C D A B C D E F E F E
  F E F E F E F E F E F E F E F E F E F A B C D A B C D A B C D A B C D E F E F A B C D A B C D A B C D A B C D A B C D
  A B G ~@2
>`.pickRestart({
  A: "~@3 [ab3,c4,eb4] ~@3 [g3,c4,eb4] ~@3 [g3,c4,eb4] ~@3 [g3,c4,eb4]", // Ab Cm
  B: "~@3 [c4,eb4,ab4] ~@3 [c4,eb4,g4] ~@3 [c4,eb4,g4] ~@3 [c4,eb4,g4]", // Ab Cm
  C: "~@3 [bb3,d4,g4] ~@3 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~@3 [bb3,d4,f4]", // Gm Bb
  D: "~@3 [bb3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [ab3,c4,eb4]", // Bbsus2 F Ab
  E: "~@3 [bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~@3 [bb3,db4,g4] ~@3 [bb3,db4,g4]", // Eb Gdim
  F: "~@3 [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~@3 [c4,eb4,ab4]", // Ab
  G: "~@3 [bb3,d4,g4] ~@3 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~@4", // Gm Bb
})).s("gm_electric_guitar_muted").gain(0.32)

// chords · orchestral harp · "HARP"
const orchestral_harp = note("<~@30 A B C ~ A B A B A B ~@30 A B C ~ A B A B A B ~@16 A B A B ~@25>".pickRestart({
  A: "[g3,bb3,eb4] [bb3,eb4,g4] [eb4,g4,bb4]!2 [g3,bb3,eb4]!2 [g4,bb4,eb5] [eb4,g4,bb4] ~ [bb4,eb5,g5] [g4,bb4,eb5] ~ [eb5,g5,bb5] [bb4,eb5,g5] ~ [g5,c6,eb6]", // Eb Cm
  B: "[eb5,ab5,c6] [c5,eb5,ab5] [ab4,c5,eb5] [c5,eb5,ab5] [ab4,c5,eb5] [eb4,ab4,c5] [c5,eb5,ab5] [eb4,ab4,c5] [c4,eb4,ab4] [eb4,ab4,c5] [c4,eb4,ab4] [ab3,c4,eb4] [eb3,ab3,c4] [ab3,c4,eb4] [c4,eb4,ab4]!2", // Ab
  C: "[g3,bb3,eb4] ~@15", // Eb
})).s("gm_orchestral_harp").gain(0.3)

// chords · synth strings 2 · "SYN STR 2"
const synth_strings_2 = note(`<
  ~@8 A B C D A B E@2 ~@24 A B C D A B E@2 A B C D A B E@2 ~@24 A B C D A B E@2 A B C D A B E@2 ~@4 A B E@2 A B C D A B
  E@2 A B C D A B E@2 A B C F ~
>`.pickRestart({
  A: "[ab2,ab3]@3 ~@3 eb4 c4, eb3@15 ~, c4@3 ~, ~@3 [g2,g3]@5", B: "[f2,ab4]@3 [c2,g4]@5, [c4,eb4]",
  C: "[g2,g4]@3 [bb1,f4]@5, [bb3,d4]", D: "bb3@3 a3@3 [eb2,ab3,eb4]@2, c4, [f2,f4]@3 ~",
  E: "[[g2,g4]@3 ~@3 bb4 ~ bb3@3 a3@3 [eb2,ab3,eb4]@2, [bb3,d4] c4, ~@3 [bb1,f4]@5 [f2,f4]@6 ~@2, ~@7 c5@9]/2", // G Ab5 Bb Bb5 F
  F: "[f2,f4]@3 ~, c4, bb3@3 ~@5", // F
})).s("gm_synth_strings_2").gain(0.4).pan(0.6)

// drums · kick
const kick = s("bd").struct("<~@8 A@8 ~@4 A@19 ~ A@16 ~@4 A@19 ~ A@16 ~@4 A@2 ~@23>".pickRestart({
  A: "x!4",
})).gain(0.8)

// drums · clap
const clap = s("cp").struct("<~@20 [~@2 x ~@2 x!2 ~]!36 ~@4 [~@2 x ~@2 x!2 ~]!36 ~@4 [~@2 x ~@2 x!2 ~]!2 ~@23>")
  .gain(0.4)

// drums · snare
const snare = s("sd").struct(`<
  ~@20
  [~@4 x ~@2 x ~ x ~@2 x ~ x ~]!36
  ~@4
  [~@4 x ~@2 x ~ x ~@2 x ~ x ~]!36
  ~@4
  [~@4 x ~@2 x ~ x ~@2 x ~ x ~]!2
  ~@23
>`).gain(0.32)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@8 A@8 ~@4 A@36 ~@4 A@36 ~@4 A@2 ~@23>".pickRestart({
  A: "x!4",
})).gain(0.16)

// drums · open hat
const open_hat = s("oh").struct("<~@8 A@8 ~@4 A@36 ~@4 A@36 ~@4 A@2 ~@23>".pickRestart({
  A: "~ x ~ x ~ x ~ x",
})).gain(0.48)

// drums · tambourine
const tambourine = s("tb").struct("<~@8 A@8 ~@4 A@36 ~@4 A@36 ~@4 A B ~@23>".pickRestart({
  A: "x!16", B: "x!15 ~",
})).gain(0.32)

// drums · shaker
const shaker = s("sh").struct("<~@4 A@12 B@4 A@36 B@4 A@36 B@4 A@2 ~@23>".pickRestart({
  A: "~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2", B: "~ x!3 ~ x!3 ~ x!3 ~ x!3",
})).gain(0.32)

stack(
  drawbar_organ, bass, electric_guitar_muted, electric_guitar_muted_2, orchestral_harp, synth_strings_2, kick, clap,
  snare, pedal_hat, open_hat, tambourine, shaker
)