Strudelify

We've Got It Going On

Backstreet Boys

Tempo113 bpm
0:00/0:00
// We've Got It Going On — Backstreet Boys
// 113 bpm, 4/4, key unknown. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 103 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(113/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(`<
  ~@3 A B C D E B C D F G H G I G H G I G H B J B C D E B C D E B C D E B C D E G H G K G H G I L M N O B C D E B C D E
  B C D E B C D J ~@9 B C D E B C D E B C D E B C D E B C D E B C D E ~@2
>`.pickRestart({
  A: "~@7 g#2 a#2@8", B: "d#2@3 ~@3 g#2@2", C: "a#2@3 ~@3 g#2@2", D: "d#2@3 ~@3 b2@2", E: "a#2@3 ~@3 d2@2",
  F: "a#1@2 ~ a#1 a#1@2 ~ a#1 a#1@2 ~@6", G: "d#2@3 ~@3 a#1@2", H: "b1@3 ~@3 g#1@2", I: "b1@3 ~@3 c#2@2",
  J: "a#2@3 ~@5", K: "b1@3 ~@3 d2@2", L: "d#2@3 ~@5", M: "~@2 d#2@2 f#2 d#2 f#2 d#2", N: "~@8 c#2!2 d#2 ~ f#2@2 d#2@2",
  O: "a#1",
})).s("gm_fretless_bass").gain(0.44)

// other · brass section
const brass_section = note(`<
  ~@3 A B@2 C D B@2 C D ~@11 A B@2 C D B@2 C E B@2 C D B@2 C D ~@11 A B@2 C D B@2 C E B@2 C D B@2 C D ~@9 B@2 C D B@2 C
  E B@2 C D B@2 C E B@2 C D B@2 C D ~@2
>`.pickRestart({
  A: "~ [g#2,g#3]", B: "~@2 [a#2,a#3]@2 [a2,a3]@2 [a#2,a#3]@2 [f2,f3]@2 [f#2,f#3]@2 [d2,d3]@2 [d#2,d#3] ~",
  C: "[a#2,a#3]@4 [a2,a3]@2 [a#2,a#3]@2 [b2,b3]@2 [a#2,a#3] ~@3 [a#2,a#3]@2", D: "[b2,b3]@2 [a#2,a#3] ~@13",
  E: "[b2,b3]@2 [a#2,a#3] ~@5 [g#2,g#3]@8", // B A# G#
})).s("gm_brass_section").gain(0.59)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  A B@2 C@7 D@8 E@2 F@6 G@3 H@2 I@6 J@2 K@8 ~ F@6 G@3 H@2 I@6 J@2 L@2 M@8 N@5 H@2 I@6 O@8 H@2 P@2 Q
>`.pickRestart({
  A: "[a#3,d#4,f#4,a#4]", B: "[[g#3,d4,f4,g#4]@15 ~ [f#4,a#4]@15 f4, ~@15 [a#3,d#4]@16 ~]/2",
  C: "[[g#3,g#4]@16 d#5@15 d5@16 d#5@16 d5@16 [d#4,a#4,d#5]@16 [d4,g#4,d5]@16 [d#4,d#5], d4@95 ~@17]/7", // G# D#5 Ddim D#
  D: "[a#4@15 ~ g#4@12 ~@4 [a#3,g4]@15 [b3,g#4]@16 [a#3,g4]@16 [b3,g#4]@16 ~ g4@15 [b3,g#4]@16 [a#3,g4], ~@15 d4@113, ~@15 d5@12 ~@5 d#4@96, ~@95 a#3@16 ~@17]/8", // D# E D# E D#
  E: "[~@15 [b3,g#4]@16 ~]/2", // E
  F: "[[g3,a#3,g4]@15 [g#3,b3,g#4]@16 g4@16 f4@16 ~ [d#4,f#4]@15 [d4,f4,g#4]@17, d#4@47 d4@32 ~@17, ~@31 a#4@48 ~@17, ~@31 a#3@32 ~@33]/6", // Gm G#m D#m Ddim
  G: "[[d#4,f#4,a#4]@15 ~ g#4@7 b4@8 [d#4,f#4,a#4]@16 ~, ~@5 d4@11, ~ f4 ~]/3", // D#m
  H: "[[f4,g#4]@15 ~ [d#4,f#4]@16, d4, ~@15 a#4@16 ~]/2", // Fm D#m
  I: "[g#4@8 b4@7 [d#4,f#4,a#4]@16 ~ [f4,g#4]@15 [d#4,f#4,a#4]@16 ~@8 b4@8 ~ a#4@15 g#4, d4@31 d4@32 g#4@8 ~@8 [d#4,f#4]@16 ~, f4@16 ~@47 d#5@16 ~@17, ~@2 d4, ~@4 f4 ~]/6", // D#m Fm D#m
  J: "[f4@15 ~ d#4@15 [f4,g#4], d4, ~@15 [f#4,a#4]@16 ~]/2", K: "[~@7 b4@7 ~@66 [d#5,d#6]@48, d4, d#5 ~@7]/8",
  L: "[~@7 b4@7 ~ [d#2,d#4,g4,a#4]@16 [g#2,b4], d4, d#5 ~]/2", // D# G#m
  M: "[g#4@15 [d#2,f#4]@16 a#2@8 g#2@8 [d#2,g4]@16 [f2,g#4,b4]@16 ~ d#2@11 g#2@4 ~@16 d4@17, ~@15 a#4@48 ~@16 a#4@49, ~@31 d4@80 ~@17, ~@31 f4@16 d#4@64 ~@17, ~@79 f#4@16 [a#2,f4]@32 ~]/8", // D#m D# Fdim A#5
  N: "[[d#4,f#4]@15 [f4,g#4]@16 ~ [d#4,f#4,a#4]@15 ~ g#4@7 b4@8 [d#4,f#4,a#4]@16 ~, ~@15 d4@32 d4@33, ~@3 f4 ~]/5", // D#m Fm D#m
  O: "[f4@15 ~ d#4@15 ~@8 b4@8 ~ [d#4,f#4,a#4]@15 [f4,g#4]@16 ~ [d#4,f#4,a#4]@15 ~ g#4@7 b4@8 [d#4,f#4,a#4]@16 ~, d4@31 g#4@8 ~@57 f4@16 ~@16, ~@15 [f#4,a#4]@16 f4@16 d#2@16 ~@65, ~@32 d4@31 d4@32 d4@33, ~@32 d#5@16 ~@47 d#5@16 ~@17]/8", // D#m Fm D#m F#
  P: "[g#4@8 b4@8 g#3 g#5@2 f3 ~ f4@2 d3@2 d5 ~@2 a#2 a#3@2 ~, d4@27 ~@5, [f4,d#5]@16 ~ g#4 ~@3 f5 ~@7 a#4 ~@2]/2", // F7
  Q: "~@3 d#2 [d#4,d#5] ~@11", // D#
})).s("gm_string_ensemble_1").gain(0.18).pan(0.6)

// chords · percussive organ
const percussive_organ = note("<~@12 A B@8 C D ~@21 E C F ~ E C ~@53>".pickRestart({
  A: "~@2 a#2@2 c#3@2 d#4@2 d#3@3 ~@3 [a#2,a#3]@2, ~ a#3@6 ~, ~ c#4@3, ~@6 d#3 ~ d#4@8", // A#
  B: "[c#3@2 ~@2 d#3@4 ~@2 a#2@2 c#3@2 d#3@2 ~@2 a#2@2 c#3@2 d#3 ~ d#3@3 ~@3 a#2@2 c#3@2 ~@2 d#3@4 ~@2 a#2@2 c#3@2 d#3@2 ~@2 a#2@2 c#3@2 d#3 ~ d#3@3 ~@3 a#2@2 c#3@2 ~@2 d#3@4 ~@2 a#2@2 c#3@2 d#3@2 ~@2 a#2@2 c#3@2 d#3 ~ d#3@3 ~@3 a#2@2 c#3@2 ~@2 d#3@4 ~@2 a#2@2 c#3@2 d#3@2 ~@2 a#2@2 c#3@2 d#3 ~ d#3@3 ~@3 a#2@2, ~@2 d#4@5 d#4@57, ~@5 a#3@4 a#3@6 a#3@6 a#3@4 a#3@6 a#3@6 a#3@27, ~@3 c#4@2 c#4@27]/8",
  C: "c#3 ~ d#3@2 ~ a#2 c#3 d#3", D: "~@2 a#2@2 c#3@2 d#3 ~ d#3@3 ~@5", E: "~@2 a#2@2 c#3@2 d#3 ~ d#3@3 ~@3 a#2@2",
  F: "~@2 a#2@2 c#3@2 d#3 ~ d#3@4 ~@4",
})).s("gm_percussive_organ").gain(0.15).pan(0.4)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@4 A B C D C E@8 ~@7 C D C D C D C D C D C D C D F@8 ~@6 C D C D C D C D C D C D C D G@8 ~@3 C D C D C D C D C D C D
  C D C H@8 I ~@2
>`.pickRestart({
  A: "~@2 [a#3,d#4,f#4] ~@3 [a#3,d#4,f#4] ~@3 [a#3,f#4] ~@3 [a#3,f#4] ~, ~@5 d#4@2 d#4", // D#m
  B: "~@2 [a#3,d4,f4] ~@3 [a#3,f4] ~@3 [a#3,f4] ~@3 [a#3,f4] ~, ~@3 d4@2 d4@2 d4", // A# A#5
  C: "~@2 [a#3,f#4] ~@3 [a#3,f#4] ~@3 [a#3,f#4] ~@3 [a#3,f#4] ~, ~ d#4@2 d#4@2 d#4@2 d#4", // D#m
  D: "~@2 [a#3,f4] ~@3 [a#3,f4] ~@3 [a#3,f4] ~@3 [a#3,f4] ~, ~ d4@2 d4@2 d4@2 d4", // A#5
  E: "[~@2 [a#3,f4] ~@3 [a#3,f4] ~@3 [a#3,f4] ~@3 [a#3,f4] ~@3 [a#3,f#4] ~@3 [a#3,f#4] ~@3 [a#3,f#4] ~@3 [a#3,f#4] ~@97, ~ d4@2 d4@2 d4@2 d4@57, ~@9 d#4@2 d#4@2 d#4@2 d#4@49]/8", // A#5 D#m
  F: "[~@2 [a#3,f#4] ~@3 [a#3,f#4] ~@3 [a#3,f#4] ~@3 [a#3,f#4] ~@3 [a#3,f4] ~@3 [a#3,f4] ~@3 [a#3,f4] ~@3 [a#3,f4] ~@97, ~ d#4@2 d#4@2 d#4@2 d#4@57, ~@9 d4@2 d4@2 d4@2 d4@49]/8", // D#m A#5
  G: "[~@2 [a#3,f#4] ~@3 [a#3,f#4] ~@3 [a#3,f#4] ~@3 [a#3,f#4] ~@3 [a#3,f4] ~@3 [a#3,f4] ~@3 [a#3,f4] ~@101, ~ d#4@2 d#4@2 d#4@2 d#4@57, ~@9 d4@2 d4@2 d4@51]/8", // D#m A#5
  H: "[~@2 [a#3,f4] ~@3 [a#3,f4] ~@3 [a#3,f4] ~@3 [a#3,f4] ~@3 [a#3,f#4] ~@3 [a#3,f#4] ~@3 [a#3,f#4] ~@3 [a#3,f#4] ~@3 [a#3,f4] ~@3 [a#3,f4] ~@3 [a#3,f4] ~@3 [a#3,f4] ~@3 [a#3,f#4] ~@3 [a#3,f#4] ~@3 [a#3,f#4] ~@3 [a#3,f#4] ~@3 [a#3,f4] ~@3 [a#3,f4] ~@3 [a#3,f4] ~@3 [a#3,f4] ~@3 [a#3,f#4] ~@3 [a#3,f#4] ~@3 [a#3,f#4] ~@3 [a#3,f#4] ~@3 [a#3,f4] ~@3 [a#3,f4] ~@3 [a#3,f4] ~@3 [a#3,f4] ~@3 [a#3,f#4] ~@3 [a#3,f#4] ~@3 [a#3,f#4] ~@3 [a#3,f#4] ~, ~ d4@2 d4@61, ~@18 d#4@4 d#4@105 ~]/8", // A#5 D#m A#5 D#m A#5 D#m A#5 D#m
  I: "~@2 [a#3,f4] ~@3 [a#3,f4] ~@3 [a#3,f4] ~@3 [a#3,f4] ~", // A#5
})).s("gm_electric_guitar_clean").gain(0.23).pan(0.4)

// other · piano
const piano = note("<~@13 A ~ A ~ A ~ A ~ A ~@23 A ~@57>".pickRestart({
  A: "c#4 ~@7",
})).s("gm_piano").gain(0.2)

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

// drums · snare
const snare = s("sd").struct("<~@4 A@3 B A@3 C A@3 B A@23 C A@7 C A@20 ~@9 A@24 ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@2 x ~@4 x ~@3", C: "~@3 x",
})).gain(0.34)

// drums · clap
const clap = s("cp").struct("<~@4 A@7 ~ A@27 B A@7 ~ A@20 ~@9 A@24 ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@3 x",
})).gain(0.29)

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

// drums · open hat
const open_hat = s("oh").struct("<~@4 A@7 B A@11 ~ A@15 B A@7 ~ A@3 ~ A@16 ~@9 A@24 ~@2>".pickRestart({
  A: "~@5 x ~@2", B: "~ x ~ x ~ x ~@2",
})).gain(0.34)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@3 A ~@2 B A ~@7 A ~@2 A@2 ~@2 C A ~@2 C A ~@2 C A ~@2 D A ~@3 A ~ A@5 E A ~@2 C A ~@2 C A ~ A C A F ~ C A ~@3
  A ~@4 A ~@2 C A ~@2 C A ~@2 C A@2 ~ C A ~ A G A ~@2 H ~@2
>`.pickRestart({
  A: "x", B: "x ~@2 x", C: "~ x ~@2", D: "~ x ~@6", E: "x!4", F: "~@3 x", G: "~@5 x ~@2", H: "~@4 x!2 ~@2",
})).gain(0.24)

// drums · tambourine
const tambourine = s("tb").struct("<~@4 A@8 ~@12 A@16 ~@12 A@15 B ~@9 A@24 ~@2>".pickRestart({
  A: "x!8", B: "x!7 ~",
})).gain(0.29)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@68 A B A B A B A C ~@27>".pickRestart({
  A: "x!2 ~ x!3 ~ x", B: "x!2 ~ x ~ x ~ x", C: "x!2 ~ x ~ x ~@2",
})).gain(1.23)

stack(
  bass, brass_section, string_ensemble_1, percussive_organ, electric_guitar_clean, piano, kick, snare, clap, hihat,
  open_hat, crash, tambourine, cabasa
)

More by Backstreet Boys