Strudelify
No One Else Comes Close cover art

1999 · Millennium

No One Else Comes Close

Backstreet Boys

KeyC majorTempo58 bpm
0:00/0:00
// No One Else Comes Close — Backstreet Boys
// 58 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 52 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(58/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
const bass = note(`<
  A B A B C D A E F G H I J K L K L K M N O N J C P Q R S T U V J K L K L K W X Y Z AA Z AA Z AB AC AD AE AF@3
>`.pickRestart({
  A: "c2 a1", B: "f1 g1", C: "c2@4 a1@3 e1", D: "f1@4 g1@2 a1 b1", E: "f1@8 e1@3 f#1@2 g#1@3", F: "a1@5 e2 a2 e2 g#2@8",
  G: "g2 f#2", H: "f2@5 c2 a1 f1 f#1@8", I: "g1@6 d2 d1 g1 ~@7", J: "f1@7 f1 g1@8", K: "c2@2 b1@2 a1@2 g1 e1",
  L: "f1@5 e2 d2 b1 g1@6 b1 d2", M: "f1@6 ~ f1 g1@3 g1 a1@2 b1 g1", N: "c2@7 e1 a1@6 e1@2", O: "f1@7 f1 g1@4 a1@2 b1@2",
  P: "f1@8 g1@3 g1 a1@2 b1@2", Q: "c2@5 g2 c3 b2 a2@3 e2 a1@2 g1@2", R: "f1@7 f1 e1@3 f#1@2 g#1@2 e1",
  S: "a1@3 e2 c3 b2 a2 e2 g#1@8", T: "g1@7 g1 f#1@8", U: "f1@6 ~ f1 f#1@8", V: "g1@5 d2 g2 d2 g1 ~@7",
  W: "f1@6 ~ f1 g1@6 d2 g1", X: "g#1@6 ~ g#1 g#2 ~@2 a#2 g#2 d#2 c#2 f1", Y: "f#1@7 f#1 g#1@8",
  Z: "c#2@2 c2@2 a#1@2 g#1 f1", AA: "f#1@5 f2 d#2 c2 g#1@6 c2 d#2", AB: "f#1@6 ~ f#1 g#1@3 g#1 a#1@2 c2 g#1",
  AC: "c#2@7 f1 a#1@6 f1@2", AD: "f#1@7 f#1 g#1@4 a#1@2 c2@2", AE: "c#2@7 f1 a#1@7 g#1",
  AF: "[f#1@4 f1@5 d#1@5 g#1@6 c#1@19 ~@9]/3",
})).s("gm_fretless_bass").gain(0.43)

// other · string ensemble 2
const string_ensemble_2 = note("<~@27 A B C D E@2 F@2 G@3 ~ H I J I J I K L ~@5>".pickRestart({
  A: "[a4,a5]@4 [g#4,g#5]@3 [e4,e5]", B: "[b4,b5] [c5,c6]", C: "[c5,c6] [d5,d6]", D: "[b4,b5]@3 a4@5",
  E: "[~ g4 g4 e4, a4]/2", F: "[~@2 g4@2 e4 d4 c4 g4, a4]/2", G: "[~@2 g4@2 e4 d4 c4 g4 ~@2 g4@2, a4@5 ~]/3",
  H: "f6 g#6", I: "[f5,f6]@2 [d#5,d#6]@2 [c#5,c#6]@2 [c5,c6] [c#5,c#6]", J: "[a#4,a#5]@2 [c5,c6] [g#4,g#5]",
  K: "[a#4,a#5]@8 [c5,c6]@3 [c#5,c#6]@3 [d#5,d#6]@2", L: "[c#5,c#6] [g#4,g#5]",
})).s("gm_string_ensemble_2").gain(0.4)

// other · string ensemble 1 · G A#sus2 C#sus2 F#maj7 G#sus2 C#maj7 D#sus2 F#sus2
const string_ensemble_1 = note(`<
  ~@30
  [~@8 [g4,g5] ~@7]
  ~@7
  [g#4@8 g#4 [a#4,c5] [c#5,d#5] [f5,f#5] [g#5,a#5] [c6,c#6] [d#6,f6] [f#6,g#6]]
  [a#6 ~@15]
  ~@12
>`).s("gm_string_ensemble_1").gain(0.4)

// other · electric guitar clean
const electric_guitar_clean = note("<A@2 B@2 ~@15 C@2 B@2 D@2 E ~@20 F@2 G@2 ~@2>".pickRestart({
  A: "[~@3 b4@2 c5@6 d5@2 c5@5 ~ g4@2 e4@3 g4@7 ~]/2", B: "[~@3 b4@2 c5@6 b4@2 g4@5 ~ e4@2 c4@3 d4@7 ~]/2",
  C: "[~@3 b4@2 c5@6 d5@2 c5@5 ~ g4@2 f#4@3 g4@7 ~]/2", D: "[~@11 d5@11 ~@7 g4 d4 c4]/2", E: "e4@7 ~@9",
  F: "[~@3 c5@2 c#5@6 d#5@2 c#5@5 ~ g#4@2 g4@3 g#4@7 ~]/2", G: "[~@3 c5@2 c#5@6 d#5@2 c#5@5 ~@14]/2",
})).s("gm_electric_guitar_clean").gain(0.3).pan(0.3)

// other · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@8 A B C@2 D E F ~@2 E G ~@6 H@2 A B I@2 D E F ~@2 E G ~ J K L ~@2 K M ~@3 N O ~
>`.pickRestart({
  A: "~ e4@2 b4@5 ~ b4@2 d5@5", B: "~@6 c5 d5 e5@3 a4@5", C: "[~@5 a4 b4 c5@6 ~ d4@7 ~@11]/2",
  D: "~@3 a4@3 c5 b4@6 ~@3", E: "~ g4 e5@2 ~ g4 d5@2 ~ e4 c5@3 e4 b4@2", F: "a4@7 ~@9", G: "a4@4 ~@2 e5@9 ~",
  H: "[~@12 a3 b3 c4 c4@7 ~@10]/2", I: "[~@5 a4 b4 c5@4 ~ a4 b4 c5 d5@8 ~@9]/2", J: "~@3 a#4@3 c#5 c5@6 ~@3",
  K: "~ g#4 f5@2 ~ g#4 d#5@2 ~ f4 c#5@3 f4 c5@2", L: "a#4@7 ~@9", M: "a#4@4 ~@2 f5@9 ~",
  N: "~@4 a#4@3 g#4@2 f#4@2 f4@3 d#4@2, ~@4 g#4 ~@11", O: "~ c4@3 ~@4 f4@8, ~@4 c#4@11 ~",
})).s("gm_electric_guitar_jazz").gain(0.36)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A B A C D E F G H I J K L M N M N O L A B A C D E F G H I J K L M N O N O L P Q R S R S T Q U V U W@3
>`.pickRestart({
  A: "~@2 c4 e4@2 ~ c4@2 ~@5 g3 c4@2, c3@6 ~@2 a2@7 ~, ~ g3@3 ~ g3@3 ~ g3@2 e4@5, ~@5 c4 ~@2",
  B: "~@3 f3@2 ~ c4@2 ~@5 g3@2 ~, f2@7 ~ g2@5 ~@3, ~ c3@6 ~@2 d3@4 ~@3, ~ f3@2 ~@2 a3@3 ~@3 b3@4 ~, ~ c4@2 ~ d4 c4 ~@2",
  C: "~@3 f3@2 ~ c4@2 [d3,g3,b3]@6 ~@2, [f2,c3]@7 ~@9, ~ a3@2 ~@2 a3@3 ~@8, ~ c4@2 ~@5", // G F5
  D: "~@5 g4@3 ~@5 g4@2 ~, c3@7 ~ a2@6 ~@2, ~ g3@5 ~@3 g3@6 ~, ~@2 c4@6 ~@2 c4@5 ~, ~@3 d4@5 ~@3 d4@4 ~",
  E: "~@2 c4 e4@2 ~ g3@2 [g3,b3]@3 d3 [a3,c4] d3 [b3,d4] d3, f2@7 ~ g2@7 ~, ~ g3@4 c4@2 ~@9", // G Am Bm
  F: "~@5 g4@3 ~@5 g4@2 ~, c3@7 ~ a2@6 ~@2, [c4,e4]@2 c4@6 ~@2 c4@5 ~, ~ g3@5 ~@3 g3@6 ~, ~@3 d4@5 ~@3 d4@4 ~", // C
  G: "~@2 c4 e4@2 ~ g3@2 g#3@2 e3 ~ e3 [g#3,b3]@2 ~, f2@7 ~ g2@7 ~, ~ g3@4 c4@2 ~ e3 ~@2 [f#3,a3]@2 ~@3", // G#m F#m
  H: "~ e3 ~@4 e3@2 ~ e3 ~@4 e3@2, a2@5 a3@3 ~@2 g#3@2 b3@4, ~@2 a3@2 c4@4 ~@3 e3@2 g#3@3, ~@3 e3@3 ~@2 g#2@6 ~@2",
  I: "~@5 g3@3 ~ d3 ~@4 d3 ~, g2@7 ~ f#2@6 ~@2, ~ e3@6 ~@4 d3@2 ~@3, ~@2 g3@3 ~@5 a3@2 ~ a3@2 ~, ~@3 c4@4 ~@5 d4@3 ~",
  J: "~@3 c4@2 ~ f3@2 ~ d3 ~@4 d3@2, f2@7 ~@9, ~ f3@4 ~@6 d3@2 a3@2 ~, ~@2 a3@2 ~ a3@2 ~@3 a3@2 c4@2 ~@2",
  K: "~@3 b3@2 d3 [a3,c4]@2 [d3,g3,b3] ~@7, [g3,b3]@2 g3@3 ~@11, ~ d3@2 ~@13", // Am G
  L: "~@3 e4@3 ~@5 g4@3 ~@2, f3@7 ~ g3@5 ~@3, ~ a3@6 ~@3 d4@3 ~@3, ~@2 c4@6 ~ b3@4 ~@3",
  M: "~@2 [c4,e4]@2 ~@2 d4@2 ~@7 g3, c3@3 ~ b2@3 ~ a2@2 c4@4 b3@2, ~ g3@3 ~ g3@2 ~@2 e3@2 a3@2 d3@3, ~@3 g2", // C
  N: "~@3 e4@4 ~@4 g4@3 ~@2, f3@7 ~ g3@6 ~@2, ~ a3@6 ~@3 d4@4 ~@2, ~@2 c4@5 ~@2 b3@5 ~@2",
  O: "~@3 e4 d4 ~ b3 ~@4 c4 b3@2 g3@2, e4@2 g3@3 g3@3 c4@2 e3@2 ~@4, ~ c4@3 ~@3 g4@2 g3@2 ~@5",
  P: "~ a#3 f#3 a#3 d#4 a#3 f#3 a#3 [d#4,g#4] ~@7", // G#5
  Q: "~@3 f4@3 ~@5 g#4@3 ~@2, f#3@7 ~ g#3@5 ~@3, ~ a#3@6 ~@3 d#4@3 ~@3, ~@2 c#4@6 ~ c4@4 ~@3",
  R: "~@2 [c#4,f4]@2 ~@2 d#4@2 ~@7 g#3, c#3@3 ~ c3@3 ~ a#2@2 c#4@4 c4@2, ~ g#3@3 ~ g#3@2 ~@2 f3@2 a#3@2 d#3@3, ~@3 g#2", // C#
  S: "~@3 f4@4 ~@4 g#4@3 ~@2, f#3@7 ~ g#3@6 ~@2, ~ a#3@6 ~@3 d#4@4 ~@2, ~@2 c#4@5 ~@2 c4@5 ~@2",
  T: "~@3 f4 d#4 ~ c4 ~@4 c#4 c4@2 g#3@2, f4@2 g#3@3 g#3@3 c#4@2 f3@2 ~@4, ~ c#4@3 ~@3 g#4@2 g#3@2 ~@5",
  U: "~@2 c#4 f4@2 ~ c#4@2 ~@5 g#3 c#4@2, c#3@6 ~@2 a#2@7 ~, ~ g#3@3 ~ g#3@3 ~ g#3@2 f4@5, ~@5 c#4 ~@2",
  V: "~@3 f#3@2 ~ c#4@2 ~@5 g#3@2 ~, f#2@7 ~ g#2@5 ~@3, ~ c#3@6 ~@2 d#3@4 ~@3, ~ f#3@2 ~@2 a#3@3 ~@3 c4@4 ~, ~ c#4@2 ~ d#4 c#4 ~@2",
  W: "[[f#3,a#3,c#4,f#4]@3 ~@2 f4@3 ~ [d#3,f#3,a#3,d#4]@4 ~ [g#3,c4,d#4]@5 ~@9 f4@7 ~@13, ~@4 [f3,g#3,c4]@3 ~@6 d#3@6 c#3@15 ~@14, ~@20 [f3,g#3]@15 ~@13, ~@21 c#4@14 ~@13]/3", // F# D#m G# Fm
})).s("gm_acoustic_guitar_steel").gain(0.46).pan(0.8)

// chords · synth strings 1
const synth_strings_1 = note(`<
  A B A C D E D F G H I J K L K L K L K A B A C D E D F G H I J K L K L K L K M N O N O N O N P Q P R@3
>`.pickRestart({
  A: "[g3,c4,e4]!2", B: "[f3,a3,c4] [g3,b3,d4]", C: "[f3,a3,c4]@2 [b3,d4] ~, ~ g3", D: "[g3,c4,e4]",
  E: "[a3,c4,e4]@4 [g3,b3,d4]@2 [a3,c4] [g3,b3,d4]", F: "[a3,c4,e4]@8 [g#3,b3,e4]@3 [a3,c4]@2 [g#3,b3,d4]@3",
  G: "[a3,c4,e4] [g#3,b3,e4]", H: "[g3,c4,e4] [f#3,a3,d4]", I: "[f3,a3,c4] [a3,c4,d4]",
  J: "b3@6 c4@2 [d3,g3,b3,d4] ~@7, [g3,d4] ~", K: "[f3,a3,c4,e4] [g3,b3,d4]",
  L: "[g3,c4,e4] [g3,b3,d4] [e3,a3,c4] [d3,g3,b3]", M: "[f#3,g#3,a#3,d#4] ~", N: "[f#3,a#3,c#4,f4] [g#3,c4,d#4]",
  O: "[g#3,c#4,f4] [g#3,c4,d#4] [f3,a#3,c#4] [d#3,g#3,c4]", P: "[g#3,c#4,f4]", Q: "[f#3,a#3,c#4] [g#3,c4,d#4]",
  R: "[[a#3,c#4,f#4]@4 [g#3,c4,f4]@5 [f#3,a#3,d#4]@5 [g#3,c4,d#4]@6 [f3,g#3,c#4]@22 ~@6]/3", // F# Fm D#m G# C#
})).s("gm_synth_strings_1").gain(0.19)

// drums · kick
const kick = s("bd").struct("<~@4 A@8 B@26 C B@6 D B@3 A ~@2>".pickRestart({
  A: "x", B: "x ~@6 x!2 ~@7", C: "x ~@6 x ~@8", D: "x ~@6 x!2 ~@2 x ~@4",
})).gain(0.38)

// drums · snare
const snare = s("sd").struct("<~@38 [~ x] [~ x ~ x]!7 ~@6>").gain(0.44)

// drums · low tom
const low_tom = s("lt").struct("<~@18 A ~@3 B ~@3 A ~@3 A ~@3 A ~@2 B C ~@6 A ~@6>".pickRestart({
  A: "~@15 x", B: "~@7 x", C: "~@14 x!2",
})).gain(0.38)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@12 A B A B A B C D E A F A E A E G A E H D E A E A E I F D B A B A B J D E A K ~@2
>`.pickRestart({
  A: "x!16", B: "x ~ x!13 ~", C: "x!11 ~@3 x ~", D: "~ x!15", E: "x!15 ~", F: "x!8 ~@8", G: "~ x!12 ~ x ~",
  H: "x!9 ~@2 x!2 ~@3", I: "x!10 ~@2 x!4", J: "x!12 ~@2 x ~", K: "x",
})).gain(0.32)

// drums · mid tom
const mid_tom = s("mt").struct("<~@26 A ~@3 B ~@3 B ~@3 C ~@13>".pickRestart({
  A: "~@13 x ~ x", B: "~@7 x", C: "~@11 x ~@4",
})).gain(0.38)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@13 A ~ A ~ A B ~ A ~ C ~ A ~ A@2 ~ A D ~ A ~ A ~ A E ~@2 A ~ A ~ A F ~ A ~@4
>`.pickRestart({
  A: "~@15 x", B: "~@11 x!3 ~@2", C: "~@8 x ~@6 x", D: "~@3 x", E: "~@5 x ~@2", F: "~@12 x!2 ~@2",
})).gain(0.38)

// drums · high tom
const high_tom = s("ht").struct("<~@18 [~@7 x] ~@19 [~@9 x ~@6] ~@6 [~@7 x] ~@6>").gain(0.38)

// drums · crash
const crash = s("cr").struct("<~@3 A ~@15 B ~@7 B ~@3 B ~@7 B ~@6 B ~@3 C ~>".pickRestart({
  A: "x!11 ~@5", B: "x", C: "~@4 x!10 ~@2",
})).gain(0.13)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@2 [~@14 x!2] [~@11 x ~@4] ~@46 [~ x!3 ~@10 x!2] ~>").gain(0.06)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@13 A ~ A ~ A ~@2 A ~@3 A ~ A ~ A ~@2 A ~ A ~ A ~ A ~@2 A ~ A ~ A ~@2 A ~@4
>`.pickRestart({
  A: "~@13 x ~@2",
})).gain(0.25)

// drums · bongos
const bongos = s("bongo:4").struct("<~@27 [~ x ~ x]!3 [~ x ~@2] [~ x ~ x]!7 [~ x ~@2] ~@13>").gain(1.17)

// drums · bongos
const bongos_2 = s("bongo:18").struct("<~@27 [~ x ~ x]!3 [~ x ~@2] [~ x ~ x]!7 [~ x ~@2] ~@13>").gain(1.17)

// drums · congas
const congas = s("conga:13").struct(`<
  ~@12 A ~ A ~ A ~ A@2 ~ A ~ A ~ A ~ A@3 B A@7 B A ~ A ~ A ~ A@2 ~ A ~@3
>`.pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(1.22)

// drums · shaker
const shaker = s("sh").struct(`<
  [x!5 ~@11]
  [x ~ x!3 ~@11]
  [x!5 ~@11]
  [x ~ x!3 ~@11]
  [x!6 ~ x!9]!7
  [x!6 ~ x!2 ~@7]
  ~@40
>`).gain(0.32)

// drums · triangle
const triangle = s("triangles:30").struct(`<
  [~@5 x!2 ~@6 x!2 ~]
  [~@13 x!2 ~]
  [~@5 x!2 ~@6 x!2 ~]
  ~
  [~@13 x!2 ~]!7
  ~@41
>`).gain(2.76)

// drums · triangle
const triangle_2 = s("triangles:35").struct(`<
  [x ~ x!3 ~@6 x!2 ~@3]
  [x ~@2 x!2 ~@6 x!2 ~@2 x]
  [x ~ x!3 ~@6 x!2 ~@3]
  [x ~@2 x!2 ~@11]
  [x ~@2 x!2 ~@6 x!2 ~@2 x]!7
  [x ~@2 x!2 ~@11]
  ~@40
>`).gain(2.76)

// drums · bell tree
// … 10 more lines

More by Backstreet Boys