Strudelify
We've Got It Goin' On cover art

1996 · Backstreet Boys

We've Got It Goin' On

Backstreet Boys

KeyE♭ minorTempo113 bpm
0:00/0:00
// We've Got It Goin' On — Backstreet Boys
// 113 bpm, 4/4, key D# minor. 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 ab2 bb2@8", B: "eb2@3 ~@3 ab2@2", C: "bb2@3 ~@3 ab2@2", D: "eb2@3 ~@3 b2@2", E: "bb2@3 ~@3 d2@2",
  F: "bb1@2 ~ bb1 bb1@2 ~ bb1 bb1@2 ~@6", G: "eb2@3 ~@3 bb1@2", H: "b1@3 ~@3 ab1@2", I: "b1@3 ~@3 db2@2",
  J: "bb2@3 ~@5", K: "b1@3 ~@3 d2@2", L: "eb2@3 ~@5", M: "~@2 eb2@2 gb2 eb2 gb2 eb2", N: "~@8 db2!2 eb2 ~ gb2@2 eb2@2",
  O: "bb1",
})).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: "~ [ab2,ab3]", B: "~@2 [bb2,bb3]@2 [a2,a3]@2 [bb2,bb3]@2 [f2,f3]@2 [gb2,gb3]@2 [d2,d3]@2 [eb2,eb3] ~",
  C: "[bb2,bb3]@4 [a2,a3]@2 [bb2,bb3]@2 [b2,b3]@2 [bb2,bb3] ~@3 [bb2,bb3]@2", D: "[b2,b3]@2 [bb2,bb3] ~@13",
  E: "[b2,b3]@2 [bb2,bb3] ~@5 [ab2,ab3]@8", // B Bb Ab
})).s("gm_brass_section").gain(0.59)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  A B@3 C@8 D@8 E@6 F@3 G@2 H@6 I@3 ~@4 J@3 ~ E@6 F@3 G@2 H@6 K@2 L@2 M@8 N@2 F@3 G@2 H@6 O@5 P@3 G@2 Q R S
>`.pickRestart({
  A: "[bb3,eb4,gb4,bb4]", B: "[[ab3,d4,f4,ab4]@15 ~ [gb4,bb4]@15 ~ [ab3,d4,ab4]@16, ~@15 [bb3,eb4]@16 f4@16 ~]/3",
  C: "[eb5@15 d5@16 eb5@16 d5@16 [eb4,bb4,eb5]@16 [d4,ab4,d5]@16 ~ bb4@15 ~ ab4@12 ~@4, ~@95 [eb4,eb5]@16 [d4,d5]@12 ~@5]/8", // Eb5 Ddim Eb D
  D: "[[bb3,g4]@15 [b3,ab4]@16 [bb3,g4]@16 [b3,ab4]@16 ~ g4@15 [b3,ab4]@16 [bb3,g4]@16 [b3,ab4]@16 ~, eb4, ~@63 bb3@16 ~@49]/8", // Eb E Eb E Eb E
  E: "[[g3,bb3,g4]@15 [ab3,b3,ab4]@16 g4@16 [d4,f4]@16 ~ [eb4,gb4]@15 [d4,f4,ab4]@16 ~, eb4 ~, ~@31 bb4@48 ~@17, ~@31 bb3@32 ~@33]/6", // Gm Abm Dm Ebm Ddim
  F: "[[eb4,gb4,bb4]@15 ~ ab4@7 b4@8 [eb4,gb4,bb4]@16 ~, ~@15 d4@16 ~@17, ~ f4 ~]/3", // Ebm
  G: "[[d4,f4,ab4]@15 ~ [eb4,gb4]@16, ~@15 bb4@16 ~]/2", // Ddim Ebm
  H: "[ab4@8 b4@7 [eb4,gb4,bb4]@16 ~ [f4,ab4]@15 [eb4,gb4,bb4]@16 ~@8 b4@8 ~ bb4@15 ab4, [d4,f4]@16 ~@15 d4@16 ~@16 eb5@16 ~@17, ~@63 ab4@8 ~@8 [eb4,gb4]@16 ~, ~@4 [d4,f4] ~]/6", // Ebm Fm Ebm Dm Ebm Dm
  I: "[[d4,f4]@15 ~ eb4@15 ~@8 b4@7 ~@2, ~@15 [gb4,bb4]@16 f4@15 ~@2, ~@31 ab4@8 ~@9, ~@2 [d4,eb5]]/3", // Dm Gb Ebmaj7
  J: "[eb5,eb6]/3", K: "[[d4,f4]@15 ~ eb4@15 [f4,ab4], ~@15 [gb4,bb4]@16 ~]/2",
  L: "[~@7 b4@7 ~ [eb2,eb4,g4,bb4]@16 [ab2,b4], [d4,eb5] ~]/2", // Eb Abm Ebmaj7
  M: "[ab4@15 [eb2,gb4]@16 bb2@8 ab2@8 [eb2,g4]@16 [f2,ab4,b4]@16 ~ eb2@11 ab2@4 ~@16 d4@16 ~, ~@15 bb4@48 ~@16 bb4@49, ~@31 [d4,f4]@16 eb4@64 ~@17, ~@79 gb4@16 [bb2,f4]@32 ~]/8", // Ebm Eb Fdim Dm Bb5
  N: "[[eb4,gb4]@15 [d4,f4,ab4]@16 ~]/2", // Ebm Ddim
  O: "[[d4,f4]@15 ~ eb4@15 ~@8 b4@8 ~ [eb4,gb4,bb4]@15 [d4,f4,ab4]@16 ~, ~@15 [gb4,bb4]@16 f4@16 eb2@16 ~@17, ~@31 ab4@8 ~@41, ~@2 [d4,eb5] ~@2]/5", // Dm Ebm Ddim Gb Ebmaj7
  P: "[[eb4,gb4,bb4]@15 ~ ab4@7 b4@8 [eb4,gb4,bb4]@16 ~, ~@15 [d4,eb5]@16 ~@17, ~ f4 ~]/3", Q: "ab4 b4, [d4,f4,eb5]",
  R: "ab3 ab5@2 f3 ~ f4@2 d3@2 [d4,d5] ~@2 bb2 bb3@2 ~, ~ ab4 ~@3 f5 ~@7 bb4 ~@2", S: "~@3 eb2 [eb4,eb5] ~@11",
})).s("gm_string_ensemble_1").gain(0.18).pan(0.6)

// other · percussive organ
const percussive_organ = note("<~@12 A B A B A B A B A B C ~@21 A B D ~ A B ~@53>".pickRestart({
  A: "~@2 [bb2,bb3]@2 [db3,db4]@2 [eb3,eb4] ~ [eb3,eb4]@3 ~@3 [bb2,bb3]@2", // Bb Db Eb Bb
  B: "[db3,db4] ~ [eb3,eb4]@2 ~ [bb2,bb3] [db3,db4] [eb3,eb4]", // Db Eb Bb Db Eb
  C: "~@2 [bb2,bb3]@2 [db3,db4]@2 [eb3,eb4] ~ [eb3,eb4]@3 ~@5", // Bb Db Eb
  D: "~@2 [bb2,bb3]@2 [db3,db4]@2 [eb3,eb4] ~ [eb3,eb4]@4 ~@4", // Bb Db Eb
})).s("gm_percussive_organ").gain(0.13).pan(0.4)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@4 A B A B A B A ~@13 A B A B A B A B A B A B A B A B ~@12 A B A B A B A B A B A B A B A C ~@9 A B A B A B A B A B A
  B A B A B A B A B A B A B ~@2
>`.pickRestart({
  A: "~@2 [bb3,eb4,gb4] ~@3 [bb3,eb4,gb4] ~@3 [bb3,eb4,gb4] ~@3 [bb3,eb4,gb4] ~", // Ebm
  B: "~@2 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~", // Bb
  C: "~@2 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~@5", // Bb
})).s("gm_electric_guitar_clean").gain(0.23).pan(0.4)

// 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, kick, snare, clap, hihat, open_hat,
  crash, tambourine, cabasa
)

More by Backstreet Boys