Strudelify
It's Gotta Be You cover art

1999 · Millennium

It's Gotta Be You

Backstreet Boys

KeyD minorTempo116 bpm
0:00/0:00
// It's Gotta Be You — Backstreet Boys
// 116 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 86 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(116/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, A@4 for four bars: edit a riff to change every repeat.

// chords · synth strings 1 · "tk2"
const synth_strings_1 = note(`<
  ~@5 A@2 B C D E D E D E D E F@3 C G H G H I J@2 ~ D E D E D E D K F@3 C G H G H I J@2 ~@7 L M N O P@2 ~@2 G H G H I
  Q@2 G H G H I Q@2 R G H G H I S T ~
>`.pickRestart({
  A: "[[bb3,d4]@2 bb3 c4 [a3,d4]@4, d5, ~ g3 ~@2]/2", B: "[bb3,d4]@2 bb3 c4, d5, ~ g3", C: "[a3,d4] ~@15",
  D: "[d4,f4]@3 [d4,g4]@5", E: "[d4,a4]", F: "[[a3,d4]@2 [g3,c4]@2 [f3,bb3] [g3,c4], d6]/3",
  G: "[bb3,d4]@2 bb3 c4, ~ g3", H: "[a3,d4]", I: "[bb3,d4]@3 [g3,c4]@5",
  J: "[[a3,c4]@3 [bb3,d4]@9 [a3,db4]@3 [a3,d4]]/2", K: "[d4,f4,a4]", L: "~@2 [a3,d4,f4] [g3,c4,e4]",
  M: "[bb3,d4,f4]@11 [a3,c4,e4]@5", N: "[bb3,d4] [c4,e4], g3", O: "[a3,d4,f4]", P: "[d4 db4, [a3,e4]]/2",
  Q: "[[a3,c4]@3 [bb3,d4]@9 [a3,db4]@4]/2", R: "[a3,d4]@3 [g3,c4]", S: "[a3,c4]@3 [bb3,d4]@5",
  T: "[bb3,d4]@4 [a3,db4]@3 [a3,d4]", // Bb A D5
})).s("gm_synth_strings_1").gain(0.31)

// bass · fretless bass · "tk3"
const bass = note(`<
  ~@5 A B A C D C D C D C E C ~@4 A F A G H I J ~ K C K C K L M C ~@4 A F A G H I J ~@6 N O P Q R S@2 ~ T A F A G H I
  A@2 F A G H I A U A F A G ~@4
>`.pickRestart({
  A: "bb1 ~ bb1 a1 g1 ~ a1@2", B: "d2!2 ~ d2 ~@4", C: "d1 ~ d1@2 ~@2 d1@2 ~@8", D: "bb1 ~@2 g1@3 a1@2",
  E: "g1 ~@2 c1@3 a0@2", F: "d2!2 ~ d2 ~@2 a1@2", G: "d1 ~ d1@2 ~@2 d1@2 ~@4 c2@4", H: "bb1@5 ~ c2@9 ~",
  I: "f1@2 f1@3 ~ bb1@8 ~@2", J: "bb1 ~ bb1 a1 g1 ~ a1 d1", K: "bb1@2 ~@2 bb1@2 a1@2 g1@4 a1@3 ~",
  L: "d1!2 ~ d1 ~@3 f1", M: "g1@6 a1@9 ~", N: "~@6 g1 ab1 g1 f1 d1@2 d1@2 c1@2", O: "d1@3 ~@13", P: "bb2@3 a2",
  Q: "g2 c3", R: "d2", S: "a1@15 ~", T: "~@2 bb1 ~ bb1@2 ~@4 c2 ~ c2@2 ~@2", U: "d2 ~ d2@2 ~@2 d2@2 ~@4 c2@3 ~",
})).s("gm_fretless_bass").gain(0.27)

// chords · oboe · "tk5"
const oboe = note(`<
  ~@4 A B ~@2 C D E F G H I J K L@3 A B M B N O@2 P ~ Q ~@3 R S ~@2 L@3 A B M B N O@2 P ~ T ~ T ~ T@2 ~@4 U V ~ W X Y
  Z@2 AA@2 AB X Y Z@2 AA@2 AC@2 AD AE AD AF O@2 P ~
>`.pickRestart({
  A: "~@6 [d4,f4] ~ [d4,f4]@2 [f4,a4] ~ [a4,c5]@2 [g4,bb4]@2", B: "~ [f4,a4] [d4,f4]@2 ~@12", C: "~@14 d5 ~",
  D: "d5 ~ d5 ~ d5 ~ d5@3 e5@3 d5@3 ~", E: "~@7 d5", F: "f5 ~ f5 ~ f5 ~ f5@2 e5@4 d5 ~ d5@2",
  G: "~ c5 a4 ~@9 d5 ~ d5 ~", H: "d5@2 d5 ~ d5 ~ d5@2 e5 ~ e5 ~ d5@3 e5", I: "f5 ~@6 d5",
  J: "f5 ~ f5 ~ f5@4 g5@3 ~ d5 ~ d5@2", K: "~ c5 a4@2 ~@12", L: "[d5,f5] ~ [d5,f5] ~@5",
  M: "bb4@4 a4@2 [d4,f4] ~ [d4,f4]@2 [f4,a4] ~ [a4,c5]@2 [g4,bb4]@2", N: "bb4@4 a4 ~ g4@2 f4@3 ~@3 [a3,e4]@2",
  O: "[[bb3,f4]@3 ~ [bb3,f4]@2 [c4,g4]@3 ~ [c4,g4]@4 [c4,a4]@4 [f4,a4]@2 ~@2 [e4,g4]@4 [d4,f4]@3 ~ [d4,f4]@2]/2", // Bb5 C5 F Em Dm
  P: "[bb3,f4]@4 [a3,e4]@3 [a3,f4]", Q: "f4@3 ~ f4 ~ f4@2 g4 ~ g4@2 f4@4", R: "f4@3 ~ f4@2 g4@3 ~ g4@3 ~ a4@2",
  S: "~@2 g4@3 ~ f4@6 ~@4", T: "d5@3 ~ d5@3 ~@9", U: "[e3,a3,d4]", V: "[e3,a3,db4]", W: "~@7 [f4,a4]",
  X: "[a4,d5] ~ [a4,d5] ~ [a4,d5]@2 [g4,bb4]@2 ~@8", Y: "[g4,c5]@2 [a4,d5] [f4,a4] ~@3 [f4,a4]",
  Z: "[[a4,d5] ~ [a4,d5] ~ [a4,d5]@2 [g4,bb4]@2 ~@2 [g4,bb4] ~@3 [g4,c5]@4 [a4,d5]@2 ~@10 [f4,a4]@2]/2", // D5 Gm C5 D5 F
  AA: "[[a4,d5] ~ [a4,d5] ~ [a4,d5]@2 [g4,c5]@2 ~@2 [g4,c5]@3 ~ [a4,c5]@4 [g4,bb4]@3 ~ [f4,a4]@4 [d4,f4]@3 ~ [d4,f4]@2]/2", // D5 C5 Am Gm F Dm
  AB: "[f4,a4]@4 [e4,g4]@2 ~ [f4,a4]", AC: "[[f4,a4]@4 [e4,g4]@3 [f4,a4]@2 ~@7]/2", AD: "[bb3,d4,f4] [g3,bb3,e4]",
  AE: "[a3,d4,f4] ~@7", AF: "[a3,d4,f4] ~@6 [a3,e4]",
})).s("gm_oboe").gain(0.22)

// chords · string ensemble 1 · "tk7"
const string_ensemble_1 = note(`<
  ~@5 A ~ A ~ A ~@7 A ~@3 B C B C D E@2 ~ A ~@7 A ~@3 B C B C D F@2 ~@4 A ~@3 G@2 H@3 ~@2 B C B C D I@2 B J K J L I@2 C
  B C B C D M N ~
>`.pickRestart({
  A: "[d5,a5,d6] ~@7", B: "[f4,bb4,d5]@2 [d4,g4,bb4] [e4,a4,c5]", C: "[f4,a4,d5]", D: "[f4,bb4,d5]@3 [e4,g4,c5]@5",
  E: "[[f4,a4,c5]@6 [f4,bb4,d5]@18 [e4,a4,db5]@6 [f4,a4,d5] ~]/2", // F Bb A Dm
  F: "[[f4,a4,c5]@3 [f4,bb4,d5]@9 [e4,a4,db5]@3 [d5,a5,d6]]/2", // F Bb A D5
  G: "[[d4,f4,bb4]@11 [c4,e4,a4]@4 [d4,f4,bb4]@9 [c4,e4,g4]@8]/2", H: "[f4@2 ~ d4 db4@2, a4, d4 ~, ~ e4@2]/3",
  I: "[[f4,a4,c5]@3 [f4,bb4,d5]@9 [e4,a4,db5]@4]/2", J: "d5@4 d5 f5 a5 g5, [f4,a4]",
  K: "~ f5 ~@6 [d4,g4,bb4]@4 [e4,a4,c5]@4, [f4,bb4,d5] ~", L: "~ f5 ~@4 [e4,g4,c5]@10, [f4,bb4,d5]@3 ~@5",
  M: "[f4,a4,c5]@3 [f4,bb4,d5]@5", N: "[f4,bb4,d5]@8 [e4,a4,db5]@6 [f4,a4,d5] ~",
})).s("gm_string_ensemble_1").gain(0.2)

// chords · string ensemble 1 · "tk7" · soft notes
const string_ensemble_1_soft = note("<~@32 A B C D E ~@18 F G@4 H ~@25>".pickRestart({
  A: "~@2 d6 e6", B: "f6 g6", C: "f6", D: "[f5,f6]@3 [g5,g6]@5", E: "[f5,f6] ~@3", F: "~@2 f5 e5", G: "[d5,d6]/4",
  H: "[e5,e6]", // E
})).s("gm_string_ensemble_1").gain(0.11)

// bass · slap bass 2 · "tk8"
const bass_2 = note("<~@10 A ~ B ~ A ~ B ~@13 A ~ C ~ D E F ~@15 G@3 H ~@21 I ~@8>".pickRestart({
  A: "d3 ~ d3@2 ~@12", B: "d3 ~ d3@2 ~@7 d3 ~@4", C: "d3 ~ d3@2 ~@6 c2 [d2,d3] ~@4", D: "d3 ~ d3@2 ~@10 f2@2",
  E: "g2@6 a2@9 ~", F: "c2 d2 ~ d3 ~@2 c2 d2 ~ d3 ~ d3 ~@4", G: "d2@2 d3 ~@5 c3@2 d3!2 ~ d3 c3 ~", H: "d2 ~@7",
  I: "d2@2 ~ d3 ~@2 c3 ~ c3 d3 ~ d3 ~@4",
})).s("gm_slap_bass_2").gain(0.33)

// chords · piano · "tk9"
const piano = note(`<
  ~@5 A B A C ~@12 A B A D E F G ~@13 A B A D E F G H I J I J I J K ~@6 L A B A D E F G A B A D E F M N A B A D ~@4
>`.pickRestart({
  A: "~@2 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~@3 [d4,g4,bb4] ~@3 [e4,a4,c5] ~", // Bb Gm Am
  B: "~@2 [f4,a4,d5] ~@3 [f4,a4,d5] ~@3 [f4,a4,d5] ~@3 [f4,a4,d5] ~", C: "[d2,d3] ~ [d2,d3]@2 ~@2 [d2,d3]@2 ~@8",
  D: "[d2,d3] ~ [f4,a4,d5] ~@3 [f4,a4,d5] ~@3 [f4,a4,d5] ~@3 [f4,a4,d5] ~, ~ [d2,d3] ~ [d2,d3] ~@4", // D Dm D
  E: "~@2 [f4,bb4,d5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~", // Bb C
  F: "~@2 [f4,a4,c5] ~@3 [f4,a4,d5] ~@3 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~", // F Dm Bb
  G: "~@2 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~@3 [e4,a4,db5] ~@3 [f4,a4,d5] ~", H: "~@3 [d1,d2] ~@4",
  I: "[d1,d2] ~ [d1,d2]@2 ~@2 [d1,d2]@2 ~@8", J: "[d1,d2] ~@2 [d1,d2] ~@4", K: "[d1,d2] ~@15",
  L: "~@2 [bb1,bb2] ~ [bb1,bb2]@2 ~@4 [c2,c3] ~ [c2,c3] ~@3", // Bb C
  M: "~@2 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~@3 [e4,a4,db5] ~@3 [e4,a4,db5] ~", // Bb A
  N: "~@2 [f4,a4,d5] ~@3 [f4,a4,d5] ~@3 [f4,a4,d5] ~@3 [e4,g4,c5] ~", // Dm C
})).s("gm_piano").gain(0.32)

// other · orchestra hit · "tk11"
const orchestra_hit = note(`<
  ~@5 A ~ A ~ A ~@7 A ~@3 A ~@6 B A ~@7 A ~@3 A ~@5 C ~@4 A ~@10 A ~@6 A ~@7 A ~@7
>`.pickRestart({
  A: "d4 ~@7", B: "~@10 [b1,c2,d2] [e2,f2] [g2,a2] [b2,c3,d3] [e3,f3] [g3,a3]", C: "~@7 d4",
})).s("gm_orchestra_hit").gain(0.26)

// other · distortion guitar · "tk12"
const distortion_guitar = note(`<
  ~@5 A B A B ~ C ~ C ~ C ~ C D E F G A H A I J K L ~ M C M C M N O C D E F G A H A I J K L ~@14 P A H A I J K A@2 H A I
  J K A Q A H A I ~@2 L ~
>`.pickRestart({
  A: "bb2 ~ bb2 a2 g2 ~ a2@2", B: "d2!2 ~ d2 ~@4", C: "d2!2 ~ d2!2 ~@3", D: "d3 ~@2 d3 ~@4", E: "c3!2 ~ c3 ~@4",
  F: "bb2 ~@2 bb2 c3 ~@2 c3", G: "d3 ~@7", H: "d2!2 ~ d2 ~@2 a2@2", I: "d2 ~ d2@2 ~@2 d2@2 ~@4 c3@4",
  J: "[bb2,f3]@3 [c3,g3]@5", K: "[f2,c3] [f2,c3]@2 [bb2,f3]@5", L: "bb2 ~ bb2 a2 g2 ~ a2 d2",
  M: "bb2@2 ~@2 bb2@2 a2@2 g2@4 a2@3 ~", N: "d2!2 ~ d2!2 ~@2 f2", O: "g2@6 a2@9 ~",
  P: "~@2 [bb2,f3] ~ [bb2,f3]@2 ~@4 [c3,g3] ~ [c3,g3]@2 ~@2", Q: "d2 ~ d2@2 ~@2 d2@2 ~@4 c2@3 ~",
})).s("gm_distortion_guitar").gain(0.45)

// chords · acoustic guitar nylon · "tk12"
const acoustic_guitar_nylon = note("<~@56 A B C D@2 ~@25>".pickRestart({
  A: "~@5 bb3 ~ a3, bb2@3 [a2,c4], ~ bb3@4 ~@3, ~ d4@2 ~, ~@3 f4@3 ~@2", // Am
  B: "~@3 f4 ~@3 c4, g2 [c3,e4], ~ bb3@3 ~ c4@2 ~, ~ d4 ~ g3", C: "~@7 a3, d3, ~ a3@4 a3@2 ~, ~ d4@2 d4, ~@3 f4@5",
  D: "[~@8 db4 ~@2 e4@5, a2 a2, ~ a3@4 a3@3 ~ a3@7, ~ d4@2 d4 ~ db4@3, ~@3 e4@4 e4@4 ~@5]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.24).pan(0.3)

// other · lead 1 square · "tk13"
const lead_1_square = note(`<
  ~@5 A B A C D E F G F E F G H I J K A L A M N O P Q F E F G F E F R S I J K A L A M N O P Q T ~ T U@3 ~@7 V A L A M N
  O A@2 L A M N O A W A L A M ~@2 P Q
>`.pickRestart({
  A: "bb1 ~ bb1 a1 g1 ~ a1@2",
  B: "d1@2 d1@2 ~@2 d1@2 ~@2 [d3,e3] [gb3,g3] [a3,b3,db4,d4] [gb3,g3,a3,b3] [b2,db3,d3,e3] [e2,gb2,g2,a2]", // Dsus2 Gmaj7 Dmaj7 Gmaj7 Dbm7 Gbm7
  C: "d1 ~ d1@2 ~@2 d1@2 ~@4 [c4,d4] [e3,f3,g3,a3,b3] [a2,b2,c3,d3,e3] [d2,e2,f2,g2]", D: "d4 ~@7, c2 ~@15",
  E: "d4 ~@2 d4 ~@4", F: "d4 ~@15", G: "d4 ~@5 d4 ~@9", H: "d2@2 d6!2 ~@2 d6!4 ~@6, ~@3 d2 ~@4",
  I: "c2@2 d6!2 ~@2 d6!4 ~@6, ~ c2 ~ c2 ~@4", J: "bb1@2 d6!2 ~@2 d6!4 ~@4 c2@2, ~@3 bb1 c2 ~@3", K: "d2 ~@7",
  L: "d1!2 ~ d1 ~@2 a1@2", M: "d1 ~ d1@2 ~@2 d1@2 ~@4 c2@4", N: "bb1@5 ~ c2@9 ~", O: "f1@2 f1@3 ~ bb1@8 ~@2",
  P: "bb1 ~ bb1 a1 g1 ~ a1 d1", Q: "[c3,d3] [a2,b2] [f2,g2] [c2,d2,e2] [a1,b1] g1 d1 c1 ~@8, ~@5 f1@2 ~@9, ~@3 e1 ~@4",
  R: "d4 ~@5 d4 ~@5 [c4,d4] [e3,f3,g3,a3,b3] [a2,b2,c3,d3,e3] [d2,e2,f2,g2]", // Csus2 Em Am Em7
  S: "[c2,d2] ~ d6!2 ~@2 d6!4 ~@6, ~@3 d2 ~@4", T: "~@2 d5 ~@3 d5 ~@3 d5 ~@3 d5 ~", U: "~@2 d6!2 ~@2 d6!4 ~@6",
  V: "~@2 bb1 ~ bb1@2 ~@4 c2 ~ c2@2 ~@2", W: "d2 ~ d2@2 ~@2 d2@2 ~@4 c2@3 ~",
})).s("gm_lead_1_square").gain(0.35).pan(0.4)

// other · pad sweep · "tk14"
const pad_sweep = note("<~@4 A ~@24 B@2 C@2 D E ~@20 F ~@30>".pickRestart({
  A: "[d3,d4,d5]", B: "[d4@7 e4]/2", C: "[d4@6 d5 e5]/2", D: "f5 g5", E: "f5@15 ~", F: "[d4,a4]@11 ~@5",
})).s("gm_pad_sweep").gain(0.27).pan(0.9)

// chords · piano · "tk15"
const piano_2 = note(`<
  ~@4 A B ~@11 C@3 D E F E G H@2 I@2 J@2 ~@2 K@2 ~@2 C@3 D E F E G H@2 I@2 ~@13 L M N O@2 P@2 Q M N R@4 S@2 ~@3 T H@2
  I@2
>`.pickRestart({
  A: "~@3 f4@2 a4 c5 bb4", B: "~ a4 f4@14", C: "[d5,f5] ~", D: "~@3 [d4,f4]@2 [f4,a4] [a4,c5] [g4,bb4]",
  E: "~ [f4,a4] [d4,f4]@4 ~@10", F: "bb4@2 a4 [d4,f4]@2 [f4,a4] [a4,c5] [g4,bb4]",
  G: "bb4@4 a4@2 g4@2 f4@5 ~ [a3,e4]@2", H: "[[bb3,f4]@3 [c4,g4]@4 [c4,a4]@2 [f4,a4]@2 [e4,g4]@2 [d4,f4]@3]/2",
  I: "[[bb3,f4]@4 [a3,e4]@3 [a3,f4]@5 ~@4]/2", J: "[f4@2 g4 f4@3 ~@2]/2", K: "[f4@6 g4@8 a4@4 g4@4 f4@5 ~@5]/2",
  L: "~@7 [f4,a4]", M: "[a4,d5]@3 [g4,bb4]@5", N: "[g4,c5]@2 [a4,d5] [f4,a4]@5",
  O: "[[a4,d5]@3 [g4,bb4]@4 [g4,c5]@2 [a4,d5]@5 ~ [f4,a4]]/2", // D5 Gm C5 D5 F
  P: "[[a4,d5]@3 [g4,c5]@4 [a4,c5]@2 [g4,bb4]@2 [f4,a4]@2 [d4,f4]@3]/2", Q: "[f4,a4]@4 [e4,g4]@3 [f4,a4]",
  R: "[[a4,d5]@3 [g4,bb4]@4 [g4,c5]@2 [a4,d5]@5 ~ [f4,a4]@4 [g4,c5]@4 [a4,c5]@2 [g4,bb4]@2 [f4,a4]@2 [d4,f4]@3]/4", // D5 Gm C5 D5 F C5 Am Gm …
  S: "[[f4,a4]@4 [e4,g4]@3 [f4,a4]@7 ~@2]/2", T: "~@7 [a3,e4]",
})).s("gm_piano").gain(0.05)

// chords · taiko drum · "tk16" · Csus2 Esus2 Gsus2 Bm Csus2 Esus2 Gsus2 Bm …
const taiko_drum = note(`<
  ~@4
  [[c2,d2] [e2,gb2] [g2,a2] [b2,c3,d3] ~@12]
  ~@15
  [[c2,d2] [e2,gb2] [g2,a2] [b2,c3,d3] ~@12]
  ~@34
  [[c2,d2] [e2,gb2] [g2,a2] [b2,c3,d3] ~@12]
  ~@30
>`).s("gm_taiko_drum").gain(0.28)

// chords · taiko drum · "tk16" · soft notes · Esus2 Gsus2 Esus2 Gsus2 Esus2 Gsus2
const taiko_drum_soft = note(`<
  ~@4
  [~@4 [e3,gb3] [g3,a3] ~@10]
  ~@15
  [~@4 [e3,gb3] [g3,a3] ~@10]
  ~@34
  [~@4 [e3,gb3] [g3,a3] ~@10]
  ~@30
>`).s("gm_taiko_drum").gain(0.17)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A B C B D E C E C E C E C B F B A B C B C B C G H E C E C E C E C B F B A B C B C B C G I J B J B F B A ~@6 K B C
  B C B C L B C B C E C E C B C B C E D M ~
>`.pickRestart({
  A: "x", B: "x ~@2 x ~ x ~@2", C: "x!2 ~ x ~@3 x", D: "x!2 ~ x ~@4", E: "x ~@2 x ~@4", F: "x!2 ~ x ~ x ~ x",
  G: "x ~@2 x!2 ~@2 x", H: "~@5 x!3", I: "~@3 x ~ x ~@2", J: "x ~ x ~@3 x ~@3 x ~@3 x!2", K: "~ x!2 ~@2 x!2 ~",
  L: "x ~@2 x!2 ~@3", M: "x ~@6 x",
})).gain(0.42)

// drums · rim
const rim = s("rim").struct("<~@20 [~ x!3] ~@19 [~ x!3] ~@45>").gain(0.21)

// drums · snare
// … 72 more lines

More by Backstreet Boys