Strudelify
KeyB♭ majorTempo180 bpm
0:00/0:00
// Mota — The Offspring
// 180 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 3 "DistB" overdriven guitar (copy of ch 2 "Dist" distortion guitar)
// note: Full arrangement: all 131 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(180/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · distortion guitar · "Dist"
const distortion_guitar = note(`<
  ~@8 A B C ~ D E F ~ G H I J G H I J D K L M D K L M G H I J G H I J N O P Q N O P Q N O P Q R S D E F ~ G H I J G H I
  J D K L M D K L M G H I J G H I J N O P Q N O P Q N O P Q R O T M D E F ~ G H I J G H I J N O P Q N O P Q U V W X R S
  P Q R S D E F
>`.pickRestart({
  A: "[g2,d3,g3]!2 ~ [g2,d3,g3]!3 ~ [g2,d3,g3]", B: "~ [g2,d3,g3] ~ [g2,d3,g3]!4 ~",
  C: "[g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3]!4", D: "[g3,d4,g4]!2 ~ [g3,d4,g4]!3 ~ [g3,d4,g4]",
  E: "~ [g3,d4,g4] ~ [g3,d4,g4]!4 ~", F: "[g3,d4,g4] ~ [g3,d4,g4] ~ [g3,d4,g4]!4",
  G: "[g3,d4,g4] [g3,d4,g4]@2 [g3,d4,g4]!2 [g3,d4,g4]@2 [g3,d4,g4]", // G5
  H: "[g3,d4,g4]@2 [a3,e4,a4] [a3,e4,a4]@2 [a3,e4,a4] [g3,d4,g4] [f3,c4,f4]", // G5 A5 G5 F5
  I: "[eb3,bb3,eb4] [eb3,bb3,eb4]@2 [eb3,bb3,eb4]!2 [eb3,bb3,eb4]@2 [f3,c4,f4]", // Eb5 F5
  J: "[f3,c4,f4]@2 [a3,e4,a4] [a3,e4,a4]@2 [a3,e4,a4] [g3,d4,g4] [f3,c4,f4]", // F5 A5 G5 F5
  K: "[g3,d4,g4]@2 [g3,d4,g4]@2 [g3,d4,g4] ~ [g3,d4,g4]@4 [g3,d4,g4]@2 [g3,d4,g4]@2 [eb3,bb3,eb4]@2", // G5 Eb5
  L: "[eb3,bb3,eb4]!2 ~ [eb3,bb3,eb4]!3 ~ [f3,c4,f4]", M: "[f3,c4,f4]!3 [f3,c4,f4]@2 [f3,c4,f4]!2 [g3,d4,g4]",
  N: "[f2,c3,f3] [f2,c3,f3]@2 [f2,c3,f3]!2 [f2,c3,f3]@2 [f2,c3,f3]", // F5
  O: "[c3,g3,c4]!3 [c3,g3,c4]@2 [c3,g3,c4]!2 [a2,d3,g3]", // C5 Dsus4
  P: "[g2,d3,g3] [g2,d3,g3]@2 [g2,d3,g3]!2 [g2,d3,g3]@2 [g2,d3,g3]", // G5
  Q: "[g2,d3,g3]@2 [g2,d3,g3]@2 [g2,d3,g3]@2 [g2,d3,g3]@4 [g2,d3,g3]@2 [g2,d3,g3]@2 [f2,c3,f3]!2", // G5 F5
  R: "[f2,c3,f3] [f2,c3,f3]@2 [f2,c3,f3]!2 [f2,c3,f3]@2 [a2,d3,g3]", // F5 Dsus4
  S: "[c3,g3,c4]!3 [c3,g3,c4]@2 [c3,g3,c4]!2 [g3,d4,g4]", // C5 G5
  T: "[bb2,f3,bb3] [bb2,f3,bb3]@2 [bb2,f3,bb3]!2 [bb2,f3,bb3]@2 [a2,d3,g3]", U: "[f2,c3,f3]!8",
  V: "[c3,g3,c4]!7 [a2,d3,g3]", W: "[g2,d3,g3]!8",
  X: "[g2,d3,g3]@2 [g2,d3,g3]@2 [g2,d3,g3]@2 [g2,d3,g3]@2 [g2,d3,g3]@2 [g2,d3,g3]@2 [g2,d3,g3]@2 [f2,c3,f3] ~", // G5 F5
})).s("gm_distortion_guitar").gain(0.48).pan(0.4)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@16 A B C D A B C D E F G H E F G H A B C D A B C D I J A K I J A K I J A K I L ~@4 A B C D A B C D E F G H E F G H A
  B C D A B C D I J A K I J A K I J A K I L M N ~@4 A B C D A B C D I J A K I J A K O P Q R I L A K I L ~@3
>`.pickRestart({
  A: "g1 g1@2 g1!2 g1@2 g1", B: "g1@2 a1!2 bb1 a1 g1 f1", C: "eb1 eb1@2 eb1!2 eb1@2 f1", D: "f1@2 a1!2 bb1 a1 g1 f1",
  E: "g1!2 ~ g1!3 ~ g1", F: "g1@2 g1@2 g1 ~ g1@4 g1@2 g1@2 eb1@2", G: "eb1!2 ~ eb1!3 ~ f1", H: "f1!3 f1@2 f1!2 g1",
  I: "f1 f1@2 f1!2 f1@2 f1", J: "c2!3 c2@2 c2!3", K: "g1!3 g1@2 g1!2 f1", L: "c2!3 c2@2 c2!2 g1",
  M: "bb1 bb1@2 bb1!2 bb1@2 bb1", N: "f2!3 f2@2 f2!2 g1", O: "f1!8", P: "c2!8", Q: "g1!8", R: "g1!7 f1",
})).s("gm_electric_bass_finger").gain(0.48)

// other · music box · "Voc2"
const music_box = note("<~@39 A B ~ C ~@7 C ~@30 A B ~ C ~@7 C ~@19 C ~@7 C ~@4 D ~@5>".pickRestart({
  A: "~@6 a5 b5@7 f5@2", B: "f5 ~@3", C: "~@3 g5 g5@2 ~@2", D: "g5 b5@5 g5@4 ~@6",
})).s("gm_music_box").gain(0.58).pan(0.4)

// drums · kick
const kick = s("bd").struct("<~@16 A@38 ~@4 A@40 ~@4 A@16 B@4 A@6 ~@3>".pickRestart({
  A: "x!4", B: "x!2 ~@2 x!2 ~@2",
})).gain(0.45)

// drums · snare
const snare = s("sd").struct(`<
  A B C ~ A B C ~ A B C ~ A B C ~ D@38 A B C ~ D@40 A B C ~ D@16 E@4 D@6 A B C
>`.pickRestart({
  A: "x!2 ~ x!3 ~ x", B: "~ x ~ x!4 ~", C: "x ~ x ~ x!4", D: "~ x ~ x ~ x ~ x", E: "~ x ~ x",
})).gain(0.39)

// drums · low tom
const low_tom = s("lt").struct("<A B C ~ A B C ~ A B C ~ A B C ~@39 A B C ~@41 A B C ~@27 A B C>".pickRestart({
  A: "x!2 ~ x!3 ~ x", B: "~ x ~ x!4 ~", C: "x ~ x ~ x!4",
})).gain(0.39)

// drums · hihat
const hihat = s("hh").struct("<~@118 [x!8]!4 ~@9>").gain(0.39)

// drums · open hat
const open_hat = s("oh").struct("<~@16 A B@7 A B@7 A B@7 ~@18 A B@7 A B@7 A B@7 ~@20 A B@7 ~@21>".pickRestart({
  A: "~ x!7", B: "x!8",
})).gain(0.39)

// drums · crash
const crash = s("cr").struct("<~@16 A ~@7 A ~@7 A ~@7 A ~@17 A ~@7 A ~@7 A ~@7 A ~@19 A ~@7 A ~@20>".pickRestart({
  A: "x",
})).gain(0.39)

// drums · ride
const ride = s("rd").struct("<~@40 A B@13 ~@28 A B@15 ~@12 A B@7 ~@4 B@6 ~@3>".pickRestart({
  A: "~ x!7", B: "x!8",
})).gain(0.39)

stack(distortion_guitar, bass, music_box, kick, snare, low_tom, hihat, open_hat, crash, ride)

More by The Offspring