Strudelify

Everything About You

Ugly Kid Joe

KeyD♭ majorTempo120 bpm
0:00/0:00
// Everything About You — Ugly Kid Joe
// 120 bpm, 4/4, key C# 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 123 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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.

// chords · overdriven guitar
const overdriven_guitar = note(`<
  ~@7 A B@2 C@2 B@2 D A E@2 C@2 E@2 C@2 E@2 C@2 E@2 D F G H B@2 D I E@2 C@2 E@2 C@2 E@2 C@2 E@2 D F G J G J K L B@2 C@2
  B@2 M@2 N@2 O@2 N@2 P J Q@2 R@2 Q@2 S@2 T U V W T X Y@2 Z AA Z AA Z AA Z AA Z AA Z AA Z AA Z AA Z AA Z AA AB AA AB AC
  ~@2 AD AE@3 AF
>`.pickRestart({
  A: "~@5 [ab2,eb3,ab3] [bb2,f3,bb3] [ab2,eb3,ab3]", // Ab5 Bb5 Ab5
  B: "[[db3,ab3,db4]@2 [db3,ab3,db4] ~ [db3,ab3,db4] [bb2,f3,bb3] [gb2,db3,gb3] [ab2,eb3,ab3]@2 [ab2,eb3,ab3]!5 [bb2,f3,bb3] [ab2,eb3,ab3]]/2", // Db5 Bb5 Gb5 Ab5 Bb5 Ab5
  C: "[[db3,ab3,db4]@2 [db3,ab3,db4] ~ [db3,ab3,db4] [bb2,f3,bb3] [gb2,db3,gb3] [ab2,eb3,ab3]@2 [ab2,eb3,ab3]!3 [gb3,db4,gb4] [ab2,eb3,ab3] [f3,c4,f4] [eb3,bb3,eb4]]/2", // Db5 Bb5 Gb5 Ab5 Gb5 Ab5 F5 Eb5
  D: "[db3,ab3,db4]@2 [db3,ab3,db4] ~ [db3,ab3,db4] [bb2,f3,bb3] [gb2,db3,gb3] [ab2,eb3,ab3]", // Db5 Bb5 Gb5 Ab5
  E: "[[db3,ab3,db4]@2 [db3,ab3,db4] ~ [db3,ab3,db4] [bb2,f3,bb3] [gb2,db3,gb3] [ab2,eb3,ab3]@2 [ab2,eb3,ab3]!3 [ab3,eb4,ab4] [ab2,eb3,ab3] [ab3,eb4,ab4] [ab2,eb3,ab3]]/2", // Db5 Bb5 Gb5 Ab5
  F: "~ [ab3,eb4,ab4] ~ [ab2,eb3,ab3]@3 [ab2,eb3,ab3]@2", G: "[gb2,db3,gb3] [gb3,db4,gb4]",
  H: "[ab2,eb3,ab3]@5 [ab2,eb3,ab3] [bb2,f3,bb3] [ab2,eb3,ab3]", // Ab5 Bb5 Ab5
  I: "~@2 [ab2,eb3,ab3]@2 [c3,g3,c4] [eb3,bb3,eb4] [ab3,eb4,ab4]@4 [ab2,eb3,ab3]@2 [bb2,f3,bb3]@2 [ab2,eb3,ab3]@2", // Ab5 C5 Eb5 Ab5 Bb5 Ab5
  J: "[ab2,eb3,ab3]", K: "[gb2,db3,gb3]", L: "[ab2,eb3,ab3] ~@4 [ab2,eb3,ab3] [bb2,f3,bb3] [ab2,eb3,ab3]",
  M: "[[db3,ab3,db4]@2 ~ [b2,gb3,b3]@2 ~ [ab2,eb3,ab3]@10]/2", N: "[[gb2,db3,gb3]@13 [gb2,db3,gb3] [g2,d3,g3]@2]/2",
  O: "[[ab2,eb3,ab3]@13 [ab2,eb3,ab3] [g2,d3,g3]@2]/2", P: "[ab2,eb3,ab3]!8",
  Q: "[[db3,ab3,db4,ab4,db5]@2 [db3,ab3,db4,ab4,db5] ~ [db3,ab3,db4,ab4,db5] [bb2,f3,bb3,f4,bb4] [gb2,db3,gb3,db4,gb4] [ab2,eb3,ab3,eb4,ab4]@2 [ab2,eb3,ab3,eb4,ab4]!5 [bb2,f3,bb3,f4,bb4] [ab2,eb3,ab3,eb4,ab4]]/2", // Db5 Bb5 Gb5 Ab5 Bb5 Ab5
  R: "[[db3,ab3,db4,ab4,db5]@2 [db3,ab3,db4,ab4,db5] ~ [db3,ab3,db4,ab4,db5] [bb2,f3,bb3,f4,bb4] [gb2,db3,gb3,db4,gb4] [ab2,eb3,ab3,eb4,ab4]@2 [ab2,eb3,ab3,eb4,ab4]!3 [gb3,db4,gb4,db5,gb5] [ab2,eb3,ab3,eb4,ab4] [f3,c4,f4,c5,f5] [eb3,bb3,eb4,bb4,eb5]]/2", // Db5 Bb5 Gb5 Ab5 Gb5 Ab5 F5 Eb5
  S: "[[db3,ab3,db4,ab4,db5]@2 [db3,ab3,db4,ab4,db5] [db4,ab4,db5] [db3,ab3,db4,e4,b4,e5] [bb2,f3,bb3,db4,ab4,db5] [gb2,db3,gb3,e4,b4,e5] [ab2,eb3,ab3]@2 [ab2,eb3,ab3]!3 [gb3,db4,gb4] [ab2,eb3,ab3] [f3,c4,f4] [eb3,bb3,eb4], ~@7 [ab4,eb5,ab5]@9]/2", // Db5 Dbm7 Bbm7 Gbsus4 Ab5 Gb5 Ab5 F5 …
  T: "[bb2,bb3,f4,bb4]@2 [f3,bb3] [b3,gb4,b4]@2 [b2,gb3,b3] [db4,ab4,db5]@3 [db3,ab3,db4] [b3,gb4,b4]@2 [bb3,f4,bb4]@2 [bb2,f3,bb3]@2, [bb1,f2], ~ bb2@6 ~", // Bb5 B5 Db5 B5 Bb5
  U: "[c3,c4,g4,c5]@2 [g3,c4] [db4,ab4,db5]@2 [db3,ab3,db4] [eb4,bb4,eb5]@2 [eb3,bb3,eb4] [db4,ab4,db5]@2 [g3,c4] [c4,g4,c5]@2 [c3,g3,c4]@2, [c2,g2], ~@2 c3@9 c3@3 ~@2", // C5 Db5 Eb5 Db5 C5
  V: "[bb2,bb3,f4]@2 f3 [b3,gb4]@2 [b2,gb3] [db4,ab4]@2 [db3,ab3] [b3,gb4]@2 [b2,gb3] [bb3,f4]@2 [bb2,f3]@2, [bb1,f2], ~ bb2@6 ~", // Bb5 B5 Db5 B5 Bb5
  W: "[c4,g4]@2 [db3,ab3] [db4,ab4]@2 [eb3,bb3] [eb4,bb4]@10, [c2,g2,c3]", // C5 Db5 Eb5 C5
  X: "[c4,g4,c5] ~@2 [f4,c5,f5]@2 [ab4,eb5,ab5] [f4,c5,f5] [eb4,bb4,eb5]", Y: "[db4,ab4,db5]/2",
  Z: "[db3,ab3,db4]@2 [db3,ab3,db4]!2 [db3,ab3,db4]@2 [db3,ab3,db4] [db3,ab3,db4]@2 [db3,ab3,db4] [f2,c3,f3]@2 [gb2,db3,gb3]@2 [g2,d3,g3]@2", // Db5 F5 Gb5 G5
  AA: "[ab2,eb3,ab3]@2 [ab2,eb3,ab3]!2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3] [ab2,eb3,ab3]@2 [ab2,eb3,ab3] [bb2,f3,bb3]@2 [b2,gb3,b3]@2 [c3,g3,c4]@2", // Ab5 Bb5 B5 C5
  AB: "[gb2,db3,gb3]@2 [gb2,db3,gb3]!2 [gb2,db3,gb3]@2 [gb2,db3,gb3] [gb2,db3,gb3]@2 [gb2,db3,gb3] [ab2,eb3,ab3]@2 [a2,e3,a3]@2 [bb2,f3,bb3]@2", // Gb5 Ab5 A5 Bb5
  AC: "[ab2,eb3,ab3] ~@7", AD: "~@3 [db3,ab3,db4]@4 [db3,ab3,db4]@2 [b2,gb3,b3]@4 ~ [b2,gb3,b3]@2",
  AE: "[[bb2,f3,bb3]@4 [bb2,f3,bb3]@2 ~ [a2,e3,a3]@4 [a2,e3,a3]@2 [ab2,eb3,ab3]@9 [ab3,eb4,ab4]@17 [db3,db4]@2 [ab2,ab3]!2 [bb2,bb3]@2 [ab2,ab3]@2 ~]/3", // Bb5 A5 Ab5 Db Ab Bb Ab
  AF: "~ [c3,c4]@2 [db3,db4]@2 ~@11", // C Db
})).s("gm_overdriven_guitar").gain(0.64)

// bass · electric bass finger
const bass = note(`<
  ~@4 A@2 B@2 C@2 D@2 C@2 E F G@2 D@2 G@2 D@2 G@2 D@2 G@2 E H I J C@2 E K G@2 D@2 G@2 D@2 G@2 D@2 G@2 E H I L I L M N
  C@2 D@2 C@2 O@2 P@2 Q@2 P@2 R L C@2 D@2 C@2 S@2 T U T U T V W@2 X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y Z Y Z AA ~@2
  AB AC@2 AD AE
>`.pickRestart({
  A: "[db2@7 ab1@9]/2", B: "[db2@7 ab1@6 ab1 bb1 ab1]/2", C: "[db2@2 db2@2 db2 bb1 gb1 ab1@2 ab1!5 bb1 ab1]/2",
  D: "[db2@2 db2@2 db2 bb1 gb1 ab1@2 ab1!3 gb2 ab1 f2 eb2]/2", E: "db2@2 db2@2 db2 bb1 gb1 ab1", F: "~@5 ab1 bb1 ab1",
  G: "[db2@2 db2@2 db2 bb1 gb1 ab1@2 ab1!3 ab2 ab1 ab2 ab1]/2", H: "~ ab2 ~ ab1@3 ab1@2", I: "gb1 gb2",
  J: "ab1@5 ab1 bb1 ab1", K: "~@2 ab1@2 c2 eb2 ab2@4 ab1@2 bb1@2 ab1@2", L: "ab1", M: "gb1", N: "ab1 ~@4 ab1 bb1 ab1",
  O: "[db2@3 b1@3 ab1@10]/2", P: "[gb1@13 gb1 g1@2]/2", Q: "[ab1@13 ab1 g1@2]/2", R: "ab1!8",
  S: "[db2@2 db2@2 db2 bb1 gb1 ab1@2 ab1!7]/2", T: "bb1", U: "c2", V: "c2@5 ~ f2@4 ab2@2 f2@2 eb2@2", W: "db2/2",
  X: "db2@2 db2!2 db2@2 db2 db2@2 db2 f1@2 gb1@2 g1@2", Y: "ab1@2 ab1!2 ab1@2 ab1 ab1@2 ab1 bb1@2 b1@2 c2@2",
  Z: "gb1@2 gb1!2 gb1@2 gb1 gb1@2 gb1 ab1@2 a1@2 bb1@2", AA: "ab1 ~@7", AB: "~@3 db2@4 db2@2 b1@4 ~ b1@2",
  AC: "[bb1@4 bb1@2 ~ a1@4 a1@2 ab1@9 ab2@9 ~]/2", AD: "~@7 db2@2 ab1!2 bb1@2 ab1@2 ~", AE: "~ c2@2 db2@2 ~@11",
})).s("gm_electric_bass_finger").gain(0.64)

// chords · electric guitar jazz
const electric_guitar_jazz = note("<A@2 B@2 A@2 C@2 ~@115>".pickRestart({
  A: "[db3@5 bb2 gb2 ab2@6 ab2 bb2 ab2, db4 ~, ab3@7 [eb3,ab3]@9]/2", // Ab5
  B: "[db3@5 bb2 gb2 ab2@4 ab2 gb3 ab2 f3 eb3, db4 ~, ab3@7 ab3@9, ~@7 eb3@8 ~]/2",
  C: "[db3@5 bb2 gb2 [eb3,ab3]@9, db4 ~, ab3@7 ab2@6 ~@3]/2", // Ab5
})).s("gm_electric_guitar_jazz").gain(0.64)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@7 A B@6 C A B@15 D E A B@2 C A B@15 D E F E F E A B@6 G ~ E@6 H I B@13 ~@2 A J@3 K J@3 K J@3 K J@3 K J@3 K J@3 ~@3 L
  M ~ N O
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@2 x ~@2 x!2 ~", D: "~ x ~@4 x ~", E: "~ x", F: "~@3 x ~@4", G: "x ~@2 x ~@2 x ~",
  H: "x!8", I: "~@2 x!3 ~ x!3 ~@7", J: "~@4 x ~@4 x ~@2 x ~@3", K: "~@4 x ~@4 x ~@2 x ~ x!2", L: "~@3 x ~@3 x ~@6 x ~",
  M: "~@4 x ~@6 x ~@4", N: "~@7 x ~@2 x!2 ~@4", O: "~@3 x ~@12",
})).gain(0.64)

// drums · low tom
const low_tom = s("lt").struct("<~@55 A ~ A ~@17 B ~@42 C D ~@3>".pickRestart({
  A: "~@7 x", B: "~@14 x!2", C: "~@3 x", D: "~@2 x ~@6 x ~@6",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct("<~@15 A B@8 ~@6 C ~@6 B@9 ~@6 C ~@6 D ~@15 E ~@39 D ~@6 F>".pickRestart({
  A: "x!3 ~", B: "x!4", C: "~@7 x", D: "x", E: "~ x!3", F: "~@3 x ~@12",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@55 A ~ A ~@17 B ~@42 C D ~@3>".pickRestart({
  A: "~@3 x", B: "~@11 x!2 ~@3", C: "~@9 x ~@6", D: "x ~@6 x ~@8",
})).gain(0.64)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@7 A B C@3 B C@2 A ~@8 B C@6 D ~@2 B C@2 ~@9 B C@6 D ~@6 B C@3 B C ~@8 E F B C@3 B C@3 B C@3 B G ~ A E@20 H@3 ~@6 I J
>`.pickRestart({
  A: "~@3 x", B: "~ x!3", C: "x!4", D: "~ x ~ x ~@2 x ~", E: "x!8", F: "x!2 ~ x ~ x ~@2", G: "x", H: "~ x!7",
  I: "~@7 x ~@8", J: "~ x ~@14",
})).gain(0.64)

// drums · high tom
const high_tom = s("ht").struct("<~@75 [~@5 x ~@2] ~@47>").gain(0.64)

// drums · crash
const crash = s("cr").struct(`<
  ~@8 A ~@3 A ~@11 A ~@9 A ~@11 A ~@13 A ~@3 A ~ B ~@2 C A C ~ C ~@2 A ~@3 A ~@3 A ~@3 A ~@23 A@3 ~@3 D E ~@3
>`.pickRestart({
  A: "x", B: "x ~@2 x ~@2 x ~", C: "~@3 x", D: "~@3 x ~@3 x ~@4 x ~@3", E: "x ~@3 x ~@4 x ~@3 x ~@2",
})).gain(0.64)

// drums · ride
const ride = s("rd").struct("<~@3 A B C B D ~@24 E F ~@20 E F E F E ~@9 E F G F E F ~@49>".pickRestart({
  A: "~@14 x!2", B: "x ~@9 x!3 ~ x!2", C: "x ~@4 x!3", D: "x", E: "x!4", F: "x!3 ~", G: "~ x!3",
})).gain(0.64)

stack(
  overdriven_guitar, bass, electric_guitar_jazz, kick, snare, low_tom, hihat, mid_tom, open_hat, high_tom, crash, ride
)

More by Ugly Kid Joe