Strudelify
You Got It (The Right Stuff) cover art

Hangin' Tough

You Got It (The Right Stuff)

New Kids on the Block

KeyE♭ majorTempo112 bpm
0:00/0:00
// You Got It (The Right Stuff) — New Kids on the Block
// 112 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 107 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(112/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// 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.

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@2 A B A B A B A B C D C D C D C D A B A B A B A B E F G H E I G@2 A B A B A B A B C D C D C D C D A B A B A B A B E
  F G H E I G@2 A B A B A B A B ~@4 A B A B A B A B A B A B E F G H E I G@2 A B A B A B A B J
>`.pickRestart({
  A: "eb1 ~ g1 ~ ab1 ~ eb2 ~ d2 ~ bb1@2 ~@4", B: "eb1 ~ g1 ~ ab1 ~ eb2 ~ d2 ~@7",
  C: "eb1 ~ ab1 ~ bb1 ~ c2 ~ bb1 ~ f1 ~@5", D: "eb1 ~ ab1 ~ bb1 ~ c2 ~ bb1 ~@7", E: "gb1 ~@2 gb1 ~@2 gb1 ~@7 gb1!2",
  F: "f1 ~@2 f1 ~@2 f1 ~@9", G: "eb2 ~@2 eb2 ~@2 eb2 ~@9", H: "d2 ~@2 d2 ~@2 a1 ~@9", I: "ab1 ~@2 ab1 ~@2 ab1 ~@9",
  J: "ab1 ~@2 ab1 ~@2 eb2@2 d2 ~ bb1 ~@5",
})).s("gm_acoustic_bass").gain(0.72)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~@2 A B A B A B A C D E D F D E D F D G D F D G D F H I J K H I L M A B A C A B A C D E D F D E D F D G D F D G D F H
  I J K H I L M A B A C A B A C ~@7 C D G D F D G D F H I J K H I L M A B A C A B A C N
>`.pickRestart({
  A: "[ab3,ab4] ~@2 [ab3,ab4] ~@2 [eb4,eb5]@2 [d4,d5]@2 [bb3,bb4] ~@5", // Ab Eb D Bb
  B: "[ab3,ab4] ~@2 [ab3,ab4] ~@2 [eb4,eb5]@2 [d4,d5] ~@7", // Ab Eb D
  C: "~@2 [a2,b2] [e3,f3,g3,a3] [b3,c4,eb4,ab4] ~@3 [d4,bb4]@2 ~@6, ~@4 c5@2 ~@2 f4 ~@7", D: "[c4,eb4,ab4] ~@15",
  E: "~@10 [b2,c3,d3] [b3,c4] [d4,e4,f4,d5,ab5] ~@3, ~@6 [f5,bb5] ~", F: "~@4 [eb4,ab4,c5] ~@3 [d4,f4,bb4] ~@7",
  G: "[c4,eb4,ab4] ~@2 [c4,eb4,ab4] ~@4 [d4,f4,bb4] ~@7", H: "[gb3,db4,f4,ab4,bb4,db5,f5]@15 ~",
  I: "[c5,eb5]@7 ab4@7 ~@2, f3@7 ~, ab4@3 ~@5", J: "bb4@2 ~ gb5, [eb3,db4,gb4,db5]@15 ~, ~ bb4",
  K: "[a3,d4,f4,a4,c5]@7 ~, f5@7 ~@9", L: "~ [eb5,gb5,bb5], [eb3,db4,gb4,bb4,db5]@15 ~",
  M: "eb6@4 gb6@3 ~, [eb3,db4,gb4,bb4,db5]@15 ~", N: "[ab3,ab4] ~@2 [ab3,ab4] ~@2 [eb4,eb5]@2 [d4,d5] ~ [bb3,bb4] ~@5",
})).s("gm_epiano2").gain(0.44)

// chords · epiano2 · "E.PIANO 2" · soft notes
const epiano2_soft = note(`<
  ~@9 A ~ B ~@3 B ~@11 C D E ~ C F@2 ~@3 A ~@3 A ~ B ~@3 B ~@11 C D E ~ C F@2 ~@3 G ~@3 G ~@7 G ~@9 C D E ~ C F@2 ~@3 G
  ~@3 G ~
>`.pickRestart({
  A: "~@2 g2 [c3,d3] ~@12", B: "~@10 e3 [f3,g3,a3] ~@4", C: "~@8 [c5,eb5]@7 ~, f2@15 ~", D: "~@2 gb6 bb6, eb4@15 ~",
  E: "a6@3 ~", F: "eb4@15 ~", G: "~@2 [g2,c3] d3 ~@12",
})).s("gm_epiano2").gain(0.25)

// chords · pad halo · "HALO PAD"
const pad_halo = note(`<
  ~@2 A B A B A B A C ~@16 D E F G D E F@2 A B A C A B A C ~@16 D E F G D E F@2 A B A C A B A C ~@7 C ~@8 D E F G D E
  F@2 A B A C A B A C H
>`.pickRestart({
  A: "ab4 ~@2 ab4 ~@2 eb5@2 d5@2 bb4 ~@5", B: "ab4 ~@2 ab4 ~@2 eb5@2 d5 ~@7",
  C: "~@2 [eb5,c6] ~ [d5,bb5] ~@3, ~@4 ab5 ~@3 f5 ~@7", D: "[gb4,db5,ab5,bb5,db6,f6]@15 ~",
  E: "[c6,eb6]@7 ab5@7 ~@2, ab5@3 ~@5", F: "[db5,gb5,bb5,db6]@15 ~", G: "[a4,f5,a5,c6]@7 ~",
  H: "ab4 ~@2 ab4 ~@2 eb5@2 d5 ~ bb4 ~@5",
})).s("gm_pad_halo").gain(0.37)

// chords · pad halo · "HALO PAD" · soft notes
const pad_halo_soft = note("<~@26 A B C D A B C@2 ~@24 A B C D A B C@2 ~@24 A B C D A B C@2 ~@9>".pickRestart({
  A: "f5@15 ~", B: "~@8 [c6,eb6]@7 ~, [f3,f4]@15 ~", C: "[eb4,eb5]@15 ~", D: "d5@7 ~",
})).s("gm_pad_halo").gain(0.25)

// chords · synth drum · "PERC SYNTH"
const synth_drum = note(`<
  ~@2 A B A B A B A C D E D F D E D F D G D F D G D F H I J K H I L M A B A C A B A C D E D F D E D F D G D F D G D F H
  I J K H I L M A B A C A B A C N O N P N O N P D G D F D G D F H I J K H I L M A B A C A B A C Q
>`.pickRestart({
  A: "bb4 ~@2 bb4 ~@2 f5@2 e5@2 c5 ~@5", B: "bb4 ~@2 bb4 ~@2 f5@2 e5 ~@7",
  C: "~@2 [b2,db3] [gb3,g3,a3,b3] [db4,d4,f4,bb4] ~@3 [e4,c5]@2 ~@6, ~@4 d5@2 ~@2 g4 ~@7", D: "[d4,f4,bb4] ~@15",
  E: "~@10 [db3,d3,e3] [db4,d4] [e4,gb4,g4,e5,bb5] ~@3, ~@6 [g5,c6] ~", F: "~@4 [f4,bb4,d5] ~@3 [e4,g4,c5] ~@7",
  G: "[d4,f4,bb4] ~@2 [d4,f4,bb4] ~@4 [e4,g4,c5] ~@7", H: "[ab3,eb4,g4,bb4,c5,eb5,g5]@15 ~",
  I: "[d5,f5]@7 bb4@7 ~@2, g3@7 ~, bb4@3 ~@5", J: "c5@2 ~ ab5, [f3,eb4,ab4,eb5]@15 ~, ~ c5",
  K: "[b3,e4,g4,b4,d5]@7 ~, g5@7 ~@9", L: "~ [f5,ab5,c6], [f3,eb4,ab4,c5,eb5]@15 ~",
  M: "f6@4 ab6@3 ~, [f3,eb4,ab4,c5,eb5]@15 ~", N: "bb3 ~@2 bb3 ~@2 f4@2 e4@2 c4 ~@5", O: "bb3 ~@2 bb3 ~@2 f4@2 e4 ~@7",
  P: "~@4 d4 ~@3 c4@2 ~@6", Q: "bb4 ~@2 bb4 ~@2 f5@2 e5 ~ c5 ~@5",
})).s("gm_synth_drum").gain(0.3)

// chords · synth drum · "PERC SYNTH" · soft notes
const synth_drum_soft = note(`<
  ~@9 A ~ B ~@3 B ~@11 C D E ~ C F@2 ~@3 A ~@3 A ~ B ~@3 B ~@11 C D E ~ C F@2 ~@3 G ~@3 G ~@17 C D E ~ C F@2 ~@3 G ~@3 G
  ~
>`.pickRestart({
  A: "~@2 a2 [d3,e3] ~@12", B: "~@10 gb3 [g3,a3,b3] ~@4", C: "~@8 [d5,f5]@7 ~, g2@15 ~", D: "~@2 ab6 c7, f4@15 ~",
  E: "b6@3 ~", F: "f4@15 ~", G: "~@2 [a2,d3] e3 ~@12",
})).s("gm_synth_drum").gain(0.2)

// drums · kick
const kick = s("bd").struct("<A@3 B A B A B A B C@16 D@8 C@24 D@8 C@8 B@8 C@8 D@8 C@8 D>".pickRestart({
  A: "x!2", B: "x ~@2 x!2 ~@3", C: "x!2 ~ x!3 ~@2", D: "x ~@2 x ~@2 x ~@9",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct(`<
  ~ A B ~ B ~ B ~ B C D E D@3 E D@3 F D@3 F D@2 ~ B ~ G ~ B ~ H D F D@3 F D@3 E D@3 E D@3 F D@3 F D@2 ~ B ~ G ~ B ~ H D
  F D@3 F D@2 ~ C ~ B ~ C ~ B D E D@3 E D@2 ~ B ~ G ~ B ~ H D F D@3 F I J K
>`.pickRestart({
  A: "~@14 x!2", B: "~@3 x", C: "~@12 x!4", D: "~ x ~ x", E: "~@2 x ~@4 x", F: "~@4 x ~@7 x ~ x!2", G: "~@7 x",
  H: "~@15 x", I: "~@4 x ~@7 x ~@2 x", J: "~@4 x ~@7 x!4", K: "x ~@2 x ~@4 x ~ x ~@5",
})).gain(0.8)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~ A ~@7 B ~ A ~@3 A ~@13 A ~@3 C ~@9 A ~@3 A ~@13 A ~@3 C ~@17 A ~@3 A ~@5 A ~@3 C ~@7 D ~
>`.pickRestart({
  A: "~@12 x!2 ~@2", B: "~@10 x!2 ~@4", C: "~@12 x!3 ~", D: "~@8 x!4 ~@4",
})).gain(0.24)

// drums · clap
const clap = s("cp").struct("<~@10 [~ x ~ x]!64 ~@8 [~ x ~ x]!24 ~>").gain(0.8)

// drums · low tom
const low_tom = s("lt").struct("<~@26 A@7 B ~@24 A@7 B ~@24 A@7 B ~@8 C>".pickRestart({
  A: "x ~@2 x ~@2 x ~@9", B: "x ~@2 x ~@2 x ~@7 x!2", C: "x ~@2 x ~@4 x ~ x ~@5",
})).gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<~@10 [x!4]!64 ~@8 [x!4]!24 ~>").gain(0.8)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@10 [~ x ~ x ~ x ~ x]!64 ~@8 [~ x ~ x ~ x ~ x]!24 ~>").gain(0.24)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@10 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@8 B A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@8 B A ~ A ~ A ~ A ~@9 A ~ A ~
  A ~ A ~@8 B A ~ A ~ A ~ A ~@2
>`.pickRestart({
  A: "~@5 x ~@2", B: "~@12 x!2 ~@2",
})).gain(0.8)

// drums · crash
const crash = s("cr").struct(`<
  ~@2 A ~ A ~ A ~ A ~ A ~@3 A ~@3 A ~@3 A ~@3 A ~ A ~ A ~ A ~ A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~ A ~ A ~ A ~ A ~@3
  A ~@11 A ~@3 A ~@3 A ~ A ~ A ~ A ~ A ~@3 A ~@4
>`.pickRestart({
  A: "x",
})).gain(0.8)

stack(
  bass, epiano2, epiano2_soft, pad_halo, pad_halo_soft, synth_drum, synth_drum_soft, kick, snare, snare_soft, clap,
  low_tom, hihat, hihat_soft, mid_tom, crash
)

More by New Kids on the Block