Strudelify
As Long as You Love Me cover art

1997 · Backstreet's Back

As Long as You Love Me

Backstreet Boys

KeyC majorTempo99 bpm
0:00/0:00
// As Long as You Love Me — Backstreet Boys
// 99 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 82 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(99/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 · piano
const piano = note(`<
  ~ A B C D E F G H ~@16 A B C D E F G H ~@8 A B C D E F G H A B C ~ I J K L M N O P Q R S T A B C D E F G H A B C D E F
  G H ~
>`.pickRestart({
  A: "~@2 g4@2 a4@2 c5@7 ~@3", B: "~ g4 a4 c5@2 ~@3", C: "~ g4 a4 c5@4 ~", D: "~@7 g2", E: "~ g4 a4 c5@5, f2",
  F: "~@2 g4@2 a4@2 c5@5 ~@5, c3", G: "~ g4 a4 c5@3 ~@2, a2", H: "g2@3 ~", I: "a2@3 a2, [a1,a3,c4,e4]",
  J: "g2@5 ~@2 g2, g1, [g3,c4,e4]@3 [g3,c4,e4], ~@5 g2@2 ~", K: "[f#1,f2] ~@2 f3, [c4,e4], ~@5 f2@11, ~@7 f1@9",
  L: "f2!2 g2!2, [f1,f3,a3,c4] [g1,g3,b3,d4]", M: "a2@2 ~@5 a2, [a1,e3], [a3,c4,e4]@3 [a3,c4,e4], ~@2 a2@5 ~",
  N: "[g3,c4,e4]@6 ~ [g2,a3], g1, g2@7 ~, ~@3 [g3,c4,e4]", O: "[f#3,a3,c4]@6 ~ f#2, f#1, f#2@7 ~, ~@3 [f#3,a3,c4]",
  P: "[f1,f2,f3,a3,c4] [g1,g2,g3,b3,d4]", Q: "~@3 c5@5, [f1,f2,f3,a3,c4], ~ g4@7, ~ a4@3",
  R: "~@3 c5@5, [c2,c3,e3,g3,c4], ~ g4@7, ~ a4@3", S: "~@3 c5@5, [a1,a2,a3,c4,e4], ~ g4@7, ~ a4@3",
  T: "[g1,g2,g3,c4,d4] [g1,g2,g3,b3,d4]", // Gsus4 G
})).s("gm_piano").gain(0.36)

// bass · fretless bass · "Bass Guitar"
const bass = note(`<
  ~@2 A B C D ~@3 E F G H I J K L E M N O P J Q R S T I U F V I W ~ F G H I J K R S T I U F X Y Z S T I AA AB AC AD AE
  AF AG AH AI ~@4 S T I U F V I W S T I U F V I W AJ
>`.pickRestart({
  A: "~@14 g3 a3", B: "c4@11 ~@5", C: "~@14 g2 a2", D: "c3@3 ~@5", E: "a1 ~ a1@2 ~@2 a1 ~ a1 ~ a1@2 ~@2 a1@2",
  F: "f1 ~ f1@2 ~@2 f1@2 f1@2 f1@2 ~@2 f1@2", G: "g1 ~ g1@2 ~@2 g1@2 g1 ~ g1@2 ~@2 g1@2",
  H: "c2@2 c2@3 ~ c2@2 b1@2 b1@2 ~@2 b1@2", I: "a1!2 ~ a1!3 ~ a1", J: "f1 ~ f1@2 ~@2 f1 ~ f1 ~ f1@2 ~@2 f1@2",
  K: "g1 ~ g1@2 ~@2 g1 ~ g1 ~ g1@2 ~@2 g1@2", L: "c2 ~ c2@3 ~ c2 ~ c2@2 b1@2 ~@2 b1@2",
  M: "f1 ~ f1@2 ~@2 f1 ~ f1 ~ f1@2 ~@2 f1 ~", N: "g1 ~ g1 ~@3 g1 ~ g1 ~ g1@2 ~@2 g1@2",
  O: "c2@2 c2@3 ~ c2@2 b1 ~ b1@3 ~ b1@2", P: "a1@2 a1@3 ~ a1 ~ a1 ~ a1@2 ~@2 a1@2",
  Q: "g1@2 g1@2 ~@2 g1 ~ g1@2 g1@3 ~ g1@2", R: "c1@3 ~", S: "f1 ~ f1@2 ~@2 f1 ~ f1@2 f1@2 ~@2 f1@2",
  T: "c2@2 c2@3 ~ c2@2 c2@2 c2@3 ~ c2@2", U: "g1@2 g1@3 ~ g1@2 g1@2 g1@3 ~ g1@2",
  V: "c2 ~ c2@3 ~ c2@2 c2@2 c2@2 ~@2 c2@2", W: "g1 ~ g1@3 ~ g1 ~ g1 ~ g1@4 ~@2",
  X: "c2 ~ c2 c2@2 ~ c2@2 c2@2 c2@2 ~@2 c2@2", Y: "a1@2 f1@2 f1 ~ f1@2 e1 ~ e1@3 ~ e1@2, f1 ~@15",
  Z: "d1@2 d1@3 ~ d1@2 [d#1,g1] ~ g1@3 ~ g1@2", AA: "g#1!2", AB: "a1@5 ~ a1@2 a1 ~ a1@3 ~ a1@2",
  AC: "g1 ~ g1@3 ~ g1@2 g1 ~ g1@3 ~ g1@2", AD: "f1 ~ f1@3 ~ f1 ~ f1@2 f1@3 ~ e1@2",
  AE: "f1@2 f1@3 ~ f1@2 g1@2 g1@3 ~ g1@2", AF: "a1@2 a1@3 ~ a1@2 a1 ~ a1@3 ~ a1@2",
  AG: "g1 ~ g1@3 ~ g1@2 g1 ~ g1@3 ~ g1@2, ~@2 f1 ~@13", AH: "f#1 ~ f#1@3 ~ f#1 ~ f#1 ~ f#1@3 ~ f#1 ~", AI: "f1 g1",
  AJ: "c1@15 ~",
})).s("gm_fretless_bass").gain(0.51)

// chords · acoustic guitar steel · "Acoustic Guitar Strums"
const acoustic_guitar_steel = note(`<
  A@5 B C D E F G H I@3 J K L@2 M N O P Q R S T U V W X Y Z F G H I@3 J R AA T U V W X Y Z AA T U AB ~@8 AC C D E AA T U
  V W X Y Z AA T U V W X Y Z ~
>`.pickRestart({
  A: "[~@16 [f3,a3,c4,f4]@16 [c3,e3,g3,c4,e4]@15 ~ [e3,a3,c4,e4]@15 ~ [g2,d3,c4,d4]@8 [g2,d3,g3,b3,d4]@8, ~@15 [f2,c3]@17 a2 ~@14 a2@17 ~@16, ~@48 c3 ~@14 g3@8 ~@9]/5", // F C Am Gsus4 G F5
  B: "[f2,c3,f3,a3,c4,f4]", C: "[g2,e3,g3,c4,e4]", D: "[a2,e3,a3,c4,e4]", E: "[g2,d3,g3,c4,d4]@8 [g2,d3,g3,b3,d4]@7 ~",
  F: "[e3,a3,c4,e4]@2 [e3,a3,c4,e4]@2 e3 ~ [e3,a3,c4,e4]@2 [e3,a3,c4,e4]@2 [e3,a3,c4,e4]@2 e3 ~ [e3,a3,c4,e4]@2", // Am
  G: "[f3,a3,c4,e4]@2 [f3,a3,c4,e4]@2 [f3,a3,c4] ~ [f3,a3,c4,e4]@2 [f3,a3,c4,e4]@2 [f3,a3,c4,e4]@2 [f3,a3,c4] ~ [f3,a3,c4] e4", // Fmaj7 F Fmaj7 F
  H: "[g3,b3,d4,e4]@2 [g3,b3,d4]@2 g3 ~ [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3] ~ [g3,b3,d4]@2", // Em7 G
  I: "[[g3,c4,e4]@2 [g3,c4,e4]@3 ~ [g3,c4,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]@2 g3 ~ [g3,b3]@2 [e3,a3,c4]@2 [e3,a3,c4,e4]@2 e3 ~ [e3,a3,c4,e4]@2 [e3,a3,c4,e4]@2 [e3,a3,c4,e4]@2 [e3,c4] ~ [e3,a3]@2 [f3,a3]@2 [f3,a3,c4,e4]@2 f3 ~ [f3,a3,c4,e4]@2 [f3,a3,c4,e4]@2 [f3,a3,c4,e4]@2 a3 ~@2 e4, ~@7 e4@2 ~@6 [c4,e4]@2 ~@6 [a3,c4]]/3", // C Em G Am C A5 F Fmaj7 …
  J: "[g3,b3,d4]@2 [g3,b3,d4]@2 g3 ~ [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 g3 ~ [g3,b3,d4]@2", // G
  K: "[g3,c4,e4]@2 [g3,c4,e4]@2 g3 c4 [g3,c4,e4]@2 [g3,c4,e4]@2 b3 ~ [g3,e4]@2 [g3,b3,e4]@2", // C Em
  L: "[[e3,a3,c4,e4]@2 [e3,a3,c4,e4]@2 e3 ~ [e3,a3,c4,e4]@2 [e3,a3,c4,e4]@2 [a3,c4,e4]@2 e3 ~ a3@2 [f3,a3]@2 [f3,a3,c4,e4]@2 ~@2 [f3,a3,c4,e4]@2 [f3,a3,e4]@2 [f3,a3,e4]@2 f3@2 [f3,a3,c4,e4]@2, ~@7 [c4,e4]@2 ~@3 c4@2 ~@2, ~@14 e3 ~@17]/2", // Am F Fmaj7 C
  M: "g3@2 g3@2 g3 ~ [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 g3 ~ [g3,b3,d4]@2, [b3,d4] ~@3", // G Bm
  N: "[g3,c4,e4]@2 [g3,c4,e4]@2 g3 ~ [g3,c4,e4]@2 [g3,c4]@2 [g3,b3]@2 [g3,b3] ~ [g3,b3,e4]@2, ~@8 e4@5 ~@3", // C C5 G Em
  O: "[e3,a3,c4,e4]@2 [e3,a3,c4,e4]@2 e3 ~ [e3,a3,c4,e4]@2 [e3,a3,c4,e4]@2 [e3,a3,e4]@2 e3 a3 ~ c4, ~@7 [e3,a3,e4]", // Am A5
  P: "[f3,a3,c4,e4]!2 [f3,e4] [f3,a3,c4,e4] [f3,c4,e4]!2 f3 [f3,c4,e4]", // Fmaj7
  Q: "[g3,b3]@2 ~ d4 g3 ~ [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 g3 ~ [g3,b3,d4]@2, ~ g3 ~@6", R: "[g3,c4]@3 ~",
  S: "[a3,c4,f4] ~ [a3,c4,f4]@2 a3 ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4] ~ [a3,c4] ~, ~@6 f4 ~", // F Am
  T: "[g3,c4,e4] ~ [g3,c4,e4]@2 [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4]@2 [g3,c4,e4] ~", // C
  U: "[a3,c4,e4] ~ [a3,c4,e4]@2 [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~@2 e4 [c4,e4]@2 a3 c4, ~@10 [a3,c4]@2 a3 ~@3", // Am C Am
  V: "[g3,c4,d4,e4] ~ [g3,c4,d4]@2 [g3,c4,d4]@2 [c4,d4] ~ [b3,d4] ~ [g3,b3,d4]@2 [g3,b3,d4] ~ [g3,b3,d4] ~, ~@3 g3 ~@4", // C Gsus4 Csus2 Bm G
  W: "[a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~", // F
  X: "[g3,c4,e4]@2 [c4,e4] ~ [c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4] ~ [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2, ~ g3 ~@6", // C
  Y: "[a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4] ~ [a3,c4,e4]@2 [a3,c4,e4] ~ [a3,c4,e4]@2 [a3,c4,e4] ~ [a3,c4,e4] ~", // Am
  Z: "[g3,c4,d4] ~ [g3,c4,d4]@2 [g3,c4,d4]@2 [g3,c4,d4]@2 [g3,b3,d4] ~ [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2", // Gsus4 G
  AA: "[c4,f4]@2 [a3,c4,f4]@2 a3 ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4] ~ [a3,c4] ~, ~@6 f4 ~", AB: "c4 ~@15",
  AC: "[c4,f4]", // F5
})).s("gm_acoustic_guitar_steel").gain(0.24)

// other · acoustic guitar nylon · "Acoustic Guitar Picks"
const acoustic_guitar_nylon = note("<~@5 A@4 ~@40 B@4 ~@8 C@4 ~@17>".pickRestart({
  A: "[~@6 f4 ~ f4@2 e4@2 d4@2 d4 e4@7 e4@2 e4@2 f4@2 g4@2 c4@14 a3@2 c4@4 d4@2 d4 e4 d4@4 c4@6]/4",
  B: "[~@6 f4 ~ f4@2 e4@2 d4@2 d4 e4@7 e4@2 e4@2 f4 ~ f4 g4 c4@12 b3@2 c4@2 b3@16 ~@2]/4",
  C: "[~@6 f4 ~ f4@2 e4@2 d4@2 d4 e4@7 e4@2 e4@2 f4@2 g4@2 c4@14 a3@2 c4@4 d4@2 d4 e4 d4@4 c4@5 ~]/4",
})).s("gm_acoustic_guitar_nylon").gain(0.51)

// chords · synth strings 1 · "Strings Chords"
const synth_strings_1 = note(`<
  ~ A B A C A B A D ~@7 E F A G B A@2 G H I@4 J@4 ~@3 K L@2 G M I@4 J@4 N@3 O P@4 Q R@2 S A B A D I@4 J@4 I@4 J@4 T
>`.pickRestart({
  A: "[a3,c4]", B: "[g3,c4]", C: "[g3,c4] [g3,b3]", D: "[g3,c4]@8 [g3,b3]@7 ~", E: "~@8 c4@7 ~", F: "[a3,c4]@7 ~",
  G: "[g3,b3]", H: "c4@13 ~@3, g3 ~@3", I: "[[a3,f4]@16 g3@15 ~ a3@15 ~@9 b3@8, c4@7 ~, ~ e4@2 [g3,d4]]/4",
  J: "[[f3,a3]@16 g3@16 a3@15 ~@9 b3@8, c4@7 ~, ~ e4@2 [g3,d4]]/4", K: "~@3 c4!2 ~ c4!2", L: "[a3@16 a3@15 ~, c4]/2",
  M: "[g3,c4]@3 ~", N: "[[a3,f4]@16 g3@15 ~ a3@15 ~, c4, ~ e4@2]/3", O: "[a3,b3,e4]@8 [g#3,b3,e4]@7 ~",
  P: "[[a3,c4]@16 g3@15 ~ [f3,a3]@24 [g3,b3,d4]@8, e3@31 ~@33, ~@16 c4@39 ~ [a3,c4] ~@7]/4", Q: "[e3,a3,c4], f3 ~@15",
  R: "[[e3,g3]@15 ~ [f#3,a3]@16, c4]/2", S: "[f3,a3,c4] [g3,b3,d4], ~@8 [a3,c4] ~@7", T: "[c3,e3,c4]@15 ~",
})).s("gm_synth_strings_1").gain(0.26)

// chords · synth strings 1 · "Strings Chords" · soft notes
const synth_strings_1_soft = note("<~@16 A ~@7 B ~@11 C ~@3 D ~@41>".pickRestart({
  A: "~@8 g3@5 ~@3", B: "e3@13 ~@3", C: "~@2 [g3,c4] g3!2 [g3,c4] g3!2", D: "e3@11 ~@5",
})).s("gm_synth_strings_1").gain(0.15)

// drums · clap
const clap = s("cp").struct("<~@8 A B@15 A B@8 A B@6 A B@20 ~@3 A B@16 ~>".pickRestart({
  A: "~@3 x", B: "~ x ~ x",
})).gain(0.41)

// drums · snare
const snare = s("sd").struct("<~@8 [~@3 x] ~@55 [~@3 x] ~@17>").gain(0.41)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@9 A B A B A B A B A B A B A B A C A B A B A B A B D B A B A B A C A B A B A B A B A B A B A B A B A B A B ~@4 A B A
  B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "x!8", B: "x!5 ~ x!2", C: "x!3 ~", D: "x!4",
})).gain(0.41)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@10 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@5 A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "~@5 x ~@2",
})).gain(0.41)

// drums · crash
const crash = s("cr").struct("<~@25 A ~@15 A ~@7 A ~@3 A ~@3 A ~@7 A ~@7 A ~@7 A>".pickRestart({
  A: "x",
})).gain(0.41)

// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
  ~@9 A B C@2 B C@3 B C A B@3 C D A B C@2 B C@3 D B C@2 B C@2 D A B C@2 B C@3 A B C B A B C B A B C B ~@4 A B C@2 B C@3
  A B C@2 B C@3 ~
>`.pickRestart({
  A: "x!8", B: "x!3 ~ x ~ x ~ x ~ x ~ x ~ x ~", C: "x ~ x ~ x ~ x ~ x!3 ~ x ~ x ~", D: "x!4",
})).gain(1.56)

// drums · shaker
const shaker = s("sh").struct("<~@9 A@15 B A@8 B A@6 B A@20 ~@4 A@16 ~>".pickRestart({
  A: "x!8", B: "x!4",
})).gain(0.46)

stack(
  piano, bass, acoustic_guitar_steel, acoustic_guitar_nylon, synth_strings_1, synth_strings_1_soft, clap, snare, hihat,
  open_hat, crash, cabasa, shaker
)

More by Backstreet Boys