Strudelify
(I Can't Help) Falling In Love With You cover art

1993 · Promises And Lies

(I Can't Help) Falling In Love With You

UB40

KeyC majorTempo88 bpm
0:00/0:00
// (I Can't Help) Falling In Love With You — UB40
// 88 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 74 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(88/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 · "bass"
const bass = note(`<
  ~@11 A@3 B C D E F G H I D E D E F G H I D E J K J L M E D F G H I D E J K J L M E D F G H I D E H I D E H I D E H I D
  ~@5
>`.pickRestart({
  A: "e1 a1", B: "f1!2", C: "f1 g1", D: "~ c2!4 ~ c2 ~ c2 g1 g1@2 ~@4", E: "~ c2!4 ~ c2 ~ c2 ~ g1@2 ~@4",
  F: "~ f2!4 ~ f2 ~ f2 ~ e2@2 ~@4", G: "~ d2!4 ~ d2 ~ d2 g1 g1@2 ~@4", H: "~ a1!4 ~ a1 ~ b1 ~ b1@2 ~@4",
  I: "~ c2!4 ~ c2 ~ d2 ~ d2@2 ~@4", J: "b1 ~@4 e2 g2 b2 a2!2 ~@6", K: "b1 ~@4 e2 g2 b2 a2@2 ~@2 a2 ~ a2 ~", L: "g2!2",
  M: "f2@4 g2 ~ g2 ~",
})).s("gm_fretless_bass").gain(0.4)

// bass · fretless bass · "bass" · soft notes
const bass_soft = note(`<
  ~@69
  [~ c2!4 ~ c2 ~ c2 ~ g1@2 ~@4]
  [~ a1!4 ~ a1 ~ b1 ~ b1@2 ~@4]
  [~ c2!4 ~ c2 ~ d2 ~ d2@2 ~@4]
  [~ c2!4 ~ c2 ~ c2 g1 g1@2 ~@4]
  [~ c2!4 ~ c2 ~ c2 ~@7]
>`).s("gm_fretless_bass").gain(0.15)

// chords · rock organ · "intro organ"
const rock_organ = note("<A@5 B@2 C@2 D@2 ~@63>".pickRestart({
  A: "[~@10 [e4,g4,c5]@10 [d4,g4,b4]@10 [e4,g4,c5]@9 ~@2 [d4,g4,b4]@9 ~ [a4,c5,f5]@9 ~@2 e5@9 ~ [g4,b4,d5]@8, ~@61 [g4,c5]@10 ~@9]/5", // C G C G F G C5
  B: "[~@2 [b3,d4,g4]@9 ~ [c4,f4,a4]@9 ~@2 [d4,g4,b4]@9]/2", C: "[~ [e4,g4,c5]@9 ~ [f4,a4,d5]@9 ~@2 [e4,g4,c5]@9 ~]/2",
  D: "[[d4,g4,b4]@9 ~@2 [e4,g4,c5]@16 ~@5]/2", // G C
})).s("gm_rock_organ").gain(0.25)

// chords · string ensemble 1 · "strings"
const string_ensemble_1 = note(`<
  ~@11 A B A C D ~@8 E F G H I J F K A@3 C D F@2 G H L J F M A@3 C D F@2 G H I J F M I J F@2 I J F@2 I J F ~@5
>`.pickRestart({
  A: "[e4,g4,b4]@7 ~ [e4,a4,c#5]@7 ~", B: "b4@4 a4@3 ~ c#5@4 d5@3 ~, [e4,g4]@7 ~ [e4,a4]@7 ~", C: "[d4,f4,a4]@15 ~",
  D: "[f4,a4,c5]@7 ~ [g4,b4,d5]@7 ~", E: "[e4,g4,c5]@8 [d4,g4,b4]@7 ~", F: "[e4,g4,c5]@7 ~ [d4,g4,b4]@7 ~",
  G: "[a4,c5,f5]@7 ~ [g4,c5,e5]@7 ~", H: "[g4,b4,d5]@7 ~ [b3,d4,g4]@7 ~", I: "[c4,f4,a4]@7 ~ [d4,g4,b4]@7 ~",
  J: "[e4,g4,c5]@7 ~ [f4,a4,d5]@7 ~", K: "[e4,g4,c5]@7 ~", L: "[c4,f4,a4]@8 [d4,g4,b4]@7 ~", M: "[e4,g4,c5]@15 ~",
})).s("gm_string_ensemble_1").gain(0.24).pan(0.6)

// chords · string ensemble 1 · "strings" · soft notes · C G F G C Dm C G
const string_ensemble_1_soft = note(`<
  ~@69
  [[e4,g4,c5]@7 ~ [d4,g4,b4]@7 ~]
  [[c4,f4,a4]@7 ~ [d4,g4,b4]@7 ~]
  [[e4,g4,c5]@7 ~ [f4,a4,d5]@7 ~]
  [[e4,g4,c5]@7 ~ [d4,g4,b4]@7 ~]!2
>`).s("gm_string_ensemble_1").gain(0.08).pan(0.6)

// chords · acoustic guitar steel · "st guitar"
const acoustic_guitar_steel = note(`<
  ~@16 A@2 B C D E A@4 B C D E A F G@3 H I A@2 B C D E A F G@3 H I A@2 B C D E A@2 D E A@2 D E A@2 D E J ~@5
>`.pickRestart({
  A: "~@2 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~", // C G
  B: "~@2 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [e4,g4,b4] ~@3 [e4,g4,b4] ~", // F Em
  C: "~@2 [d4,f4,a4] ~@3 [d4,f4,a4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~", // Dm G
  D: "~@2 [c4,f4,a4] ~@3 [c4,f4,a4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~", // F G
  E: "~@2 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [f4,a4,d5] ~@3 [f4,a4,d5] ~", // C Dm
  F: "~@2 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~", // C
  G: "~@2 [e4,g4,b4] ~@3 [e4,g4,b4] ~@3 [e4,a4,c#5] ~@3 [e4,a4,c#5] ~", // Em A
  H: "~@2 [f4,a4,d5] ~@3 [f4,a4,d5] ~@3 [f4,a4,d5] ~@3 [f4,a4,d5] ~", // Dm
  I: "~@2 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [g4,b4,d5] ~@3 [g4,b4,d5] ~", // F G
  J: "~@2 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [d4,g4,b4] ~@5", // C G
})).s("gm_acoustic_guitar_steel").gain(0.4).pan(0.4)

// chords · acoustic guitar steel · "st guitar" · soft notes · G C G F G C Dm C …
const acoustic_guitar_steel_2 = note(`<
  ~@68
  [~@14 [d4,g4,b4] ~]
  [~@2 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~]
  [~@2 [c4,f4,a4] ~@3 [c4,f4,a4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~]
  [~@2 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [f4,a4,d5] ~@3 [f4,a4,d5] ~]
  [~@2 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~]
  [~@2 [e4,g4,c5] ~@3 [e4,g4,c5] ~@9]
>`).s("gm_acoustic_guitar_steel").gain(0.15).pan(0.4)

// other · brass section · "brass L"
const brass_section = note("<~@14 A B ~@16 C D C E F ~@8 C D C A G ~@9 H I J ~ H I J ~ H I K ~@4>".pickRestart({
  A: "f4 ~@7 c5 ~ c5@5 ~, ~ f4@7", B: "[f4,c5]@7 ~ [g4,d5]@3 ~ [g4,d5]@4", C: "~@10 a4 b4 c5 ~@3",
  D: "~@10 a4 b4 c5 ~ a4 ~", E: "f4 ~@7 c5 ~ c5@5 ~, ~@2 f4@13 ~", F: "[f4,c5]@7 ~ [g4,d5]@3 ~ [g4,d5]@3 ~",
  G: "[f4,c5]@7 ~ [g4,d5]@3 ~ [g4,d5]@2 ~@2", H: "~ g4!2 ~@2 g4!2 ~@2 g4!2 ~@2 g4!2 ~",
  I: "~ g4 c5!3 ~ c5 ~ c5 g4!2 ~ g4@4", J: "~ c5!4 ~ c5 ~ c5 g4 g4@4 ~@2", K: "~ c5!4 ~ c5 ~@9",
})).s("gm_brass_section").gain(0.54).pan(0.7)

// other · brass section · "brass L" · soft notes
const brass_section_soft = note(`<
  ~@69
  [~@8 c5 g4 g4@4 ~@2]
  ~
  [~ g4!2 ~@2 g4!2 ~@2 g4!2 ~@2 g4!2 ~]
  [~ g4 c5!3 ~ c5 ~ c5 g4 g4@6]
  [~ c5!4 ~ c5 ~ c5 g4 ~@6]
>`).s("gm_brass_section").gain(0.12).pan(0.7)

// other · brass section · "brass R"
const brass_section_2 = note("<~@14 A@2 ~@16 B C B D E ~@8 B C B D F ~@9 G H I ~ G H I ~ G H J ~@4>".pickRestart({
  A: "[~@4 a4 ~@11 f5@7 ~ [b4,g5]@3 ~ [b4,g5]@3 ~, ~@6 a4@17 ~@9]/2", B: "~@10 a5 b5 c6 ~@3", C: "~@10 a5 b5 c6 ~ a5 ~",
  D: "~@4 a4 ~ a4@9 ~", E: "[a4,f5]@7 ~ [b4,g5]@3 ~ [b4,g5]@3 ~", F: "[a4,f5]@7 ~ [b4,g5]@3 ~ [b4,g5]@2 ~@2",
  G: "~ g5!2 ~@2 g5!2 ~@2 g5!2 ~@2 g5!2 ~", H: "~ g5 c6!3 ~ c6 ~ c6 g5!2 ~ g5@4", I: "~ c6!4 ~ c6 ~ c6 g5 g5@4 ~@2",
  J: "~ c6!4 ~@11",
})).s("gm_brass_section").gain(0.48).pan(0.3)

// other · brass section · "brass R" · soft notes
const brass_section_soft_2 = note(`<
  ~@69
  [~@6 c6 ~ c6 g5 g5@4 ~@2]
  ~
  [~ g5!2 ~@2 g5!2 ~@2 g5!2 ~@2 g5!2 ~]
  [~ g5 c6!3 ~ c6 ~ c6 g5 g5@6]
  [~ c6!4 ~ c6 ~ c6 g5 ~@6]
>`).s("gm_brass_section").gain(0.12).pan(0.3)

// other · taiko drum · "intro kick" · C
const taiko_drum = note("<~@11 [[c0,c1] ~@15]!5 ~@58>").s("gm_taiko_drum").gain(0.25)

// drums · kick
const kick = s("bd").struct("<~@11 [x ~@3 x!2 ~@2]!5 [x!2]!58>").gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@11 [~@4 x ~@2 x ~ x ~@2 x ~@3]!5 [~ x ~ x]!57 [~ x ~@2]>").gain(0.4)

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

// drums · low tom
const low_tom = s("lt").struct("<~@14 [~ x] ~@59>").gain(0.25)

// drums · hihat
const hihat = s("hh").struct("<~@11 [x!16]!62 [x!10 ~@6]>").gain(0.3)

// drums · shaker
const shaker = s("sh").struct("<~@11 [~@4 x!4 ~@4 x!4]!5 [x!16]!57 [x!10 ~@6]>").gain(0.2)

stack(
  bass, bass_soft, rock_organ, string_ensemble_1, string_ensemble_1_soft, acoustic_guitar_steel,
  acoustic_guitar_steel_2, brass_section, brass_section_soft, brass_section_2, brass_section_soft_2, taiko_drum, kick,
  snare, clap, low_tom, hihat, shaker
)

More by UB40