Strudelify

Long View

Green Day

KeyE♭ majorTempo141 bpm
0:00/0:00
// Long View — Green Day
// 141 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "bass" named as a bass, played on electric bass finger (its shakuhachi patch is not one)
// note: Full arrangement: all 133 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(141/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: edit a riff to change every repeat.

// bass · electric bass finger · "bass"
const bass = note(`<
  ~@3 A B C D E F C D E G C D E F C D E G C D H I J I J I J I K L M N O F C D E G C D E F C D E G C D H I J I J I J I K
  P Q P Q P Q R S I J I J I J I K L M N O L M N O F C D E G C D E F C D E G C D H T I J I J I J I J I J I J I J I K L M
  N O L M N O L M N O U M N O
>`.pickRestart({
  A: "eb4 d4 db4 c4 b3 bb3 a3 ab3 g3 gb3 f3 bb2", B: "eb3@6 bb3@5 ~ ab3@6 g3@4 eb3@2",
  C: "db3@5 ~ ab3@6 g3@6 db3@4 f3@2", D: "eb3@3 bb3@3 g3 bb3 eb4 g3 bb3 c4", E: "eb4@3 db4@3 c4@3 db4@2 f3",
  F: "eb3@5 ~ bb3@5 ~ ab3@6 g3@4 eb3@2", G: "~ eb3@5 bb3@5 ~ ab3@6 g3@4 eb3@2",
  H: "[db3,ab3,db4] ~ [db3,ab3,db4] ~ [db3,ab3,db4] ~ [ab3,bb3,db4] ~ [ab3,db4] ~ [db3,ab3,db4] ~ [ab3,bb3,db4] ~ [ab3,db4] ~ [db3,ab3,db4] ~ [db3,ab3,db4] ~ [ab3,db4] ~ [db3,ab3,db4] ~, eb4@3 db3!2 ~ db3!2 ~@2 db3 ~", // Db5 Bbm7 Db5 Bbm7 Db5
  I: "[bb2,bb3,f4,bb4]@5 ~ [bb2,bb3,f4,bb4]@5 ~ [bb2,bb3,f4,bb4]@6 [bb2,bb3,f4]@6, ~@9 bb4@2 ~", // Bb5
  J: "[ab2,ab3]@6 [ab2,ab3,eb4,ab4]@5 ~ [eb2,eb3,bb3,eb4]@6 [eb2,eb3,bb3,eb4]@6, [eb4,ab4] ~@5", // Ab Ab5 Eb5 Ab5
  K: "ab2@4 ab2 ~ ab2@3 ~ ab2 ~ ab2@3 ~ ab2 ~ ab2@3 ~ bb2@2, [ab3,eb4,ab4]", // Ab5
  L: "eb3@6 bb3@5 ~ [eb5,g5]@3 [eb5,ab5]@2 ~ g3@3 ~ eb3@2, ~@12 ab3@6 ~@3 [db5,bb5]@2 ~", // Eb Ab5 Gb
  M: "~@3 ab3@3 g3@3 db3@2 f3, db3@5 ~@19, ~@3 [db5,eb6]@20 ~", // Dbsus2
  N: "eb3@3 bb3@3 [g3,eb5,g5] bb3 [eb4,eb5,ab5] g3 ~ c4, ~@10 bb3 ~, ~@7 [db5,bb5]", // Cm Ab5 Gb
  O: "~@3 db4@3 c4@3 db4@2 f3, eb4 ~@3, ~ [db5,ab5]@7", // Db5
  P: "bb3@3 bb3@2 ~@4 g3@2 [eb3,bb3], [eb3,eb4]@10 [eb3,bb3,eb4]@5 [eb3,bb3,eb4]@6 ~@3, ~@12 ab3@6 ~@4 eb4 ~", // Eb5 Eb Eb5
  Q: "ab3@6 ab3@4 ~@5 db3@3 db3@4 [db3,f3,ab3,db4]@2, [db3,db4]@9 ~ [db3,ab3,db4]@5 [ab3,db4]@6 ~@3, ~@2 g3 ~", // Db Db5
  R: "bb3@3 bb3@2 ~@4 g3@2 [eb3,bb3,eb4], [eb3,eb4]@9 ~ [eb3,bb3,eb4]@6 [eb3,bb3,eb4]@6 ~@2, ~@2 ab3 ~", // Eb5 Eb Eb5
  S: "db3 db3@5 [db3,ab3,db4]@4 db3 ~ [db3,ab3,db4]@3 ~ db3 ~ [db3,ab3,db4]@4 db3@2, [ab3,db4] ~@7", // Db5
  T: "[db3,ab3,db4] ~ [db3,ab3,db4] ~ [db3,ab3,db4] ~ [ab3,bb3,db4] ~ [ab3,db4] ~ [db3,ab3,db4] ~ [ab3,bb3,db4] ~ [ab3,db4] ~ [db3,ab3,db4] ~ db3 ~ db3@2 db3 ~, ~@3 db3!2 ~ db3!2 ~ [eb3,ab3,eb4,ab4]@3", // Db5 Bbm7 Db5 Bbm7 Db5 Ab5
  U: "eb3@5 ~ bb3@5 ~ [eb5,g5]@3 [eb5,ab5]@2 ~ g3@3 ~ eb3@2, ~@12 ab3@6 ~@3 [db5,bb5]@2 ~", // Eb Ab5 Gb
})).s("gm_electric_bass_finger").gain(0.5)

// drums · kick
const kick = s("bd").struct("<~@24 A@7 B ~@20 A@7 B A@15 B ~@25 A@15 B ~@16>".pickRestart({
  A: "x ~@4 x!2 ~@4 x", B: "x ~ x ~@2 x!2 ~ x ~@3",
})).gain(0.5)

// drums · snare
const snare = s("sd").struct(`<
  A B C D A B C D A B C D A B C D A B C D A B C E F@8 A B C D A B C D A B C D A B C D A B C E F@24 A B C D A B C D A B C
  D A B C D A B C D A B C E@2 F@16 A B C D A B C D A B C D A B C D
>`.pickRestart({
  A: "x ~@3 x ~@4 x ~@2 x ~@3 x ~@7", B: "~@2 x ~@2 x!2 ~ x ~@3", C: "x ~ x ~@2 x!2 ~ x ~@2 x",
  D: "x ~ x ~@2 x!2 ~ x ~@3", E: "x!12", F: "~ x ~ x",
})).gain(0.5)

// drums · low tom
const low_tom = s("lt").struct(`<
  A B C D A B C D A B C D A B C D A B C D A B C ~@8 E A B C D A B C D A B C D A B C D A B C ~@8 E ~@15 E A B C D A B C D
  A B C D A B C D A B C D A B C ~@17 E A B C D A B C D A B C D A B C D
>`.pickRestart({
  A: "~@3 x ~@5 x ~ x", B: "x ~@5 x ~@11 x ~@4 x", C: "~ x ~ x", D: "~@11 x", E: "~@23 x",
})).gain(0.5)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  A B A@3 B A@3 B A@3 B A@3 B A@3 B A ~@8 C A B A@3 B A@3 B A@3 B A@3 B A ~@8 C ~@15 C A B A@3 B A@3 B A@3 B A@3 B A@3 B
  A ~@17 C A B A@3 B A@3 B A@3 B A@2
>`.pickRestart({
  A: "~ x ~ x", B: "~@3 x ~@5 x ~ x", C: "~@22 x!2",
})).gain(0.5)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~ A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@2 B@7 C ~ A ~@3 A ~@3 A ~@3 A ~@3 A ~@2 B@7 C B@15 C ~ A ~@3 A ~@3 A ~@3 A ~@3 A
  ~@3 A ~@3 B@15 C ~ A ~@3 A ~@3 A ~@3 A ~@2
>`.pickRestart({
  A: "~@11 x", B: "x!4", C: "x",
})).gain(0.5)

// drums · crash
const crash = s("cr").struct("<~@23 A B C@6 ~@20 A B C@6 ~ C@8 B C@6 ~@24 A@2 B C@3 B C@3 B C@6 ~@17>".pickRestart({
  A: "x", B: "x ~@2 x", C: "~@3 x",
})).gain(0.5)

stack(bass, kick, snare, low_tom, mid_tom, high_tom, crash)

More by Green Day