Strudelify

Kids Wanna Rock

Bryan Adams

KeyE majorTempo167 bpm
0:00/0:00
// Kids Wanna Rock — Bryan Adams
// 167 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 114 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(167/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 · acoustic bass · "BASS"
const bass = note(`<
  ~@5 A B C D E F G H I J K J L M@2 J N O P Q ~ R J S J I J@4 M@2 J T O@2 Q ~ U@2 M@2 V@2 W X@2 W V Y@2 M J Z J AA V Y@2
  AB O@3 AC J@16 ~ AD ~ AE M@2 J T O@2 Q ~ O@2 Q AF O@2 Q ~@2 AG AH AI@2 AJ AK@2 ~
>`.pickRestart({
  A: "~@2 e3 ~ d3 ~ b2@2 g2@4 a2@2 e2 ~", B: "e2@2 ~@2 e2 ~@3 e2 ~@3 e2@2 ~@2", C: "e2@2 e2@2 g2@2 e2@2 a2@4 g2@2 e2 ~",
  D: "e2 ~@3 e2@2 ~@2 e2@2 ~@2 e2@2 ~@2", E: "e2 ~ e2@2 g2@2 e2 ~ g2@4 a2@2 g2 ~", F: "e2 ~@3 e2 ~@3 e2@2 ~@2 e2@2 ~@2",
  G: "e2 ~ e2@2 g2@2 e2@2 a2@4 g2@2 e2 ~", H: "e2 ~@3 e2@2 ~@2 e2@3 ~ e2@2 ~@2",
  I: "e2 ~ e2@2 g2@2 e2@2 g2@4 a2@2 g2 ~", J: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~",
  K: "e2 ~ e2 ~ g2 ~ e2 ~ a2@4 g2@2 e2@2", L: "e2 ~ e3@2 d3@2 b2@2 g2@4 a2@2 a2@2",
  M: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~", N: "e2 e3 d3 b2 g2@2 a2@2",
  O: "b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~", P: "b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2@2", Q: "e2 ~@15",
  R: "~@2 e3 ~ d3 ~ b2@2 g2@4 a2@2 e2@2", S: "e2 ~ e2@2 g2@2 e2@2 a2@4 g2@2 e2@2", T: "e2 ~ e3 ~ d3@2 b2 ~ g2@4 a2@3 ~",
  U: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~", V: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~",
  W: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~", X: "c#2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~",
  Y: "[c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~@3 a2@4 a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~]/2",
  Z: "e2 ~ e2 ~ e2 ~ e2@2 a2@4 g2@2 e2 ~", AA: "e2 ~ e2 ~ g2 ~ e2@2 g2@4 a2@3 ~",
  AB: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ b2 ~", AC: "b2 ~ e3@2 d3@2 b2@2 g2@4 a2@2 e2@2", AD: "~ e2 g2 e2 a2@2 g2 e2",
  AE: "~@2 e3@2 d3@2 b2@2 g2@4 a2 ~ a2 ~", AF: "~@2 g#2@5 ~ a2@3 ~ a#2@2 ~@2", AG: "~@7 e2@4 b1@4 ~", AH: "e2 b1 e2 b1",
  AI: "[e2@4 ~ b1@4 e2@4 ~ b1@4 e2@4 ~ b1@5 e2@4]/2", AJ: "b1@5 e2@5 b1@5 ~", AK: "[e2@13 ~@3]/2",
})).s("gm_acoustic_bass").gain(0.25)

// chords · piano · "CANVAS"
const piano = note("<~@43 A@2 B@2 C@2 D@4 ~@31 E ~ F ~ G ~@11 H ~@13>".pickRestart({
  A: "[[d3,g3,b3]@7 ~]/2", B: "[[a3,c#4]@27 ~@5, e3@29 ~@3]/2", C: "[[e3,g3,c4]@29 ~@3]/2", D: "[[d3,f#3,a3]@29 ~@3]/4",
  E: "~@14 [e3,g#3,b3] ~", F: "~ e3 g3 e3 a3@2 g3 e3", G: "~@2 e4@2 d4@2 b3@2 g3@4 a3 ~@3",
  H: "~@2 g#2@5 ~ a2@2 ~@2 a#2@2 ~@2",
})).s("gm_piano").gain(0.25)

// chords · percussive organ · "CANVAS"
const percussive_organ = note(`<
  ~@6 A@8 ~@4 B@2 C@2 D@2 E ~@2 A@8 B@2 F@4 E ~ G@2 H@2 I@2 J@4 K@4 L@4 M@4 N@4 ~@12 O@4 ~ P ~ Q B@2 F@4 E ~ R@2 E ~ R@2
  E ~@2 S@7 ~
>`.pickRestart({
  A: "[g#5,b5,e6]/8", B: "[[a5,c#6]@31 ~]/2", C: "[[g#5,b5]@31 ~]/2", D: "[f#5,b5,d#6]/2", E: "[g#5,b5,e6] ~@7",
  F: "[g#5@31 ~ [f#5,d#6]@31 ~, b5@63 ~]/4", G: "[[g4,b4,d5]@31 ~]/2", H: "[[a4,c#5,e5]@31 ~]/2",
  I: "[[g4,c5,e5]@31 ~]/2", J: "[[a4,d5,f#5]@63 ~]/4", K: "[[c5,e5,g5]@27 ~@3 [a4,c#5,e5]@34]/4",
  L: "[[b4,e5,g#5]@31 ~]/4", M: "[[c5,e5,g5]@27 ~@3 [a4,c#5,e5]@32 ~@2]/4", N: "[[b4,d#5,f#5]@31 ~]/4",
  O: "[g#5,b5,e6]/4", P: "~ e4 g4 e4 a4@2 g4 e4", Q: "~@2 e5@2 d5@2 b4@2 g4@4 a4 ~@3", R: "[[f#5,d#6]@31 ~]/2",
  S: "[~ [e4,g#4,b4]@14 ~]/7", // E
})).s("gm_percussive_organ").gain(0.05).pan(0.3)

// chords · percussive organ · "CANVAS"
const percussive_organ_2 = note(`<
  ~@6 A@8 ~@4 B@2 C@2 D@2 E ~@2 A@8 B@2 F@4 E ~ G@2 H@2 I@2 J@4 K@4 L@4 M@4 N@4 ~@12 O@4 ~ P ~ Q B@2 F@4 E ~ R@2 E ~ R@2
  E ~@2 S@7 ~
>`.pickRestart({
  A: "[g#6,b6,e7]/8", B: "[[a6,c#7]@31 ~]/2", C: "[[g#6,b6]@31 ~]/2", D: "[f#6,b6,d#7]/2", E: "[g#6,b6,e7] ~@7",
  F: "[g#6@31 ~ [f#6,d#7]@31 ~, b6@63 ~]/4", G: "[[g5,b5,d6]@31 ~]/2", H: "[[a5,c#6,e6]@31 ~]/2",
  I: "[[g5,c6,e6]@31 ~]/2", J: "[[a5,d6,f#6]@63 ~]/4", K: "[[c6,e6,g6]@27 ~@3 [a5,c#6,e6]@34]/4",
  L: "[[b5,e6,g#6]@31 ~]/4", M: "[[c6,e6,g6]@27 ~@3 [a5,c#6,e6]@32 ~@2]/4", N: "[[b5,d#6,f#6]@31 ~]/4",
  O: "[g#6,b6,e7]/4", P: "~ e5 g5 e5 a5@2 g5 e5", Q: "~@2 e6@2 d6@2 b5@2 g5@4 a5 ~@3", R: "[[f#6,d#7]@31 ~]/2",
  S: "[~ [e5,g#5,b5]@14 ~]/7", // E
})).s("gm_percussive_organ").gain(0.05).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  ~@2 A@4 B@3 C B@14 D ~ E B@3 C B@10 D F B G B G B G B G H B@2 I J B K B@2 C B I J B K B@6 C B@3 C B@3 C B L B C ~ M ~
  M B@6 D N B@2 D O B@2 D ~ P Q A R S T D U ~
>`.pickRestart({
  A: "x!4", B: "x!2", C: "x ~@3 x ~@2 x", D: "x", E: "~ x!3", F: "~@3 x", G: "x ~@3 x!2 ~@2", H: "x ~@2 x ~@4",
  I: "x ~@3 x!2 ~ x", J: "~ x", K: "x!3 ~", L: "x ~@2 x!2 ~@3", M: "~@7 x", N: "~@5 x!2 ~", O: "~ x ~@2 x ~ x ~",
  P: "~@11 x ~ x ~@2", Q: "~@7 x ~@3 x ~@4", R: "x ~@4 x ~@3 x ~@4 x ~", S: "~@2 x ~@4 x ~@4 x ~@3",
  T: "x ~@4 x ~@4 x ~@5", U: "~@13 x ~@2",
})).gain(0.35)

// drums · rim
const rim = s("rim").struct("<[x!4] x ~@112>").gain(0.45)

// drums · snare
const snare = s("sd").struct(`<
  ~@5 A B@3 C B@3 A B@9 D ~@2 A B@3 E B@10 F G B@9 H B I B J C@2 A K B I B J C@2 B L B@14 M N ~ A ~ O B@6 F G B@2 F ~ B
  P F ~ Q F ~@4 R S ~
>`.pickRestart({
  A: "~ x ~@2 x ~ x ~", B: "~ x ~ x", C: "~@2 x ~@3 x!2", D: "~@4 x ~@5 x ~ x!3 ~", E: "x ~ x!3 ~ x!3 ~ x ~ x ~ x ~",
  F: "x", G: "~@3 x", H: "x!2 ~@4 x!2", I: "~@2 x ~ x!2 ~@2", J: "~@2 x ~@4 x", K: "x ~ x!2", L: "x ~ x ~ x ~ x!2",
  M: "x ~@2 x ~@2 x ~", N: "x!13 ~ x ~", O: "~ x ~@2 x ~ x!2", P: "~@4 x ~@5 x!5 ~", Q: "~@15 x", R: "~@13 x ~@2",
  S: "x ~@10 x!2 ~@3",
})).gain(0.45)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@5 A ~@7 A ~@10 B ~ A ~@3 C ~@10 B D ~@8 A E ~@7 F ~@7 F ~@17 A ~ A ~@6 B D ~@2 B ~@3 B ~@10
>`.pickRestart({
  A: "~@3 x ~@4", B: "x", C: "~@7 x", D: "~@3 x", E: "~@4 x!2 ~@2", F: "~@2 x!2",
})).gain(0.35)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@14 A@10 ~@7 A@10 ~@48 A@6 ~@2 A@2 ~@2 A@2 ~@11>".pickRestart({
  A: "x!4",
})).gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct("<~@5 A ~@7 A ~@12 A ~@3 B ~@21 C ~@7 D ~@7 D ~@17 A ~ A ~@25>".pickRestart({
  A: "~ x ~@2", B: "~@3 x", C: "~@2 x!2 ~@4", D: "x!3 ~@5",
})).gain(0.35)

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

// drums · ride bell
const ride_bell = s("rd").struct("<~@6 A B@6 C ~@13 A B@2 ~@13 B@8 ~@2 B D B@7 D B@6 A B@3 E B@11 ~@29>".pickRestart({
  A: "~ x ~@2 x ~@3 x ~@3 x ~@3", B: "x!4", C: "x", D: "x!3 ~", E: "~ x!3",
})).gain(0.3)

stack(
  bass, piano, percussive_organ, percussive_organ_2, kick, rim, snare, low_tom, pedal_hat, mid_tom, crash, ride_bell
)

More by Bryan Adams