Strudelify

She

Green Day

KeyG♭ majorTempo179 bpm
0:00/0:00
// She — Green Day
// 179 bpm, 4/4, key Gb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 101 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): BJ-guitar2.
setcpm(179/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 · "BJ-guitar"
const distortion_guitar = note(`<
  ~@18 A B C D E F C D E F G H G H G H I J K A L M N@2 O P Q P L R S@2 T U C D E F C D E F G H G H G H I V W U C V X Y Z
  U W U C V X Y Z U C D E F C D E F G H G H G H AA@2 AB
>`.pickRestart({
  A: "[gb2,db3,gb3] ~ [gb2,db3,gb3] ~ [gb2,db3,gb3] ~ [gb2,db3,gb3] ~ [gb2,db3,gb3] ~ [gb2,db3,gb3] ~ [gb2,db3,gb3] ~ [gb2,db3,gb3] ~", // Gb5
  B: "[gb2,db3,gb3]!8", // Gb5
  C: "[db3,ab3,db4]@3 ~ [db3,ab3,db4]@3 ~ [db3,ab3,db4]@2 [db3,ab3,db4]@2 [db3,ab3,db4]@2 [db3,ab3,db4]@2", // Db5
  D: "~@2 [db3,ab3,db4]@3 ~ [db3,ab3,db4]@3 ~ [db3,ab3,db4]@2 [db3,ab3,db4]@2 [bb2,f3,bb3]@2", // Db5 Bb5
  E: "[b2,gb3,b3]@3 ~ [b2,gb3,b3]@3 ~ [b2,gb3,b3]@2 [b2,gb3,b3]@3 ~ [gb2,db3,gb3]@2", // B5 Gb5
  F: "~@2 [gb2,db3,gb3]@2 [gb2,db3,gb3]@3 ~ [gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [gb2,db3,gb3]@2", // Gb5
  G: "[b2,gb3,b3]@3 ~ [b2,gb3,b3]@2 [b2,gb3,b3]@2 [b2,gb3,b3]@2 [b2,gb3,b3]@2 [b2,gb3,b3]@2 [b2,gb3,b3]@2", // B5
  H: "[gb2,db3,gb3]@3 ~ [gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [gb2,db3,gb3]@2", // Gb5
  I: "[db3,ab3,db4]@3 ~ [db3,ab3,db4]@2 [db3,ab3,db4]@2 [db3,ab3,db4]@2 [db3,ab3,db4]@2 [db3,ab3,db4]@2 [db3,ab3,db4]@2", // Db5
  J: "~@2 [db3,ab3,db4]@2 [db3,ab3,db4]@2 [db3,ab3,db4]@2 [db3,ab3,db4]@2 [db3,ab3,db4]@2 [db3,ab3,db4]@3 ~", // Db5
  K: "[gb2,db3,gb3]@3 ~ [gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [gb2,db3,gb3] ~ [gb2,db3,gb3] ~ [gb2,db3,gb3] ~ [gb2,db3,gb3] ~", // Gb5
  L: "[db3,ab3,db4] ~ [db3,ab3,db4] ~ [db3,ab3,db4]@2 [db3,ab3,db4] ~ [db3,ab3,db4] ~ [db3,ab3,db4] ~ [db3,ab3,db4] ~ [db3,ab3,db4]@2", // Db5
  M: "[db3,ab3,db4] ~ [db3,ab3,db4] ~ [db3,ab3,db4] ~ [db3,ab3,db4] ~ [db3,ab3,db4] ~ [db3,ab3,db4] ~ [db3,ab3,db4] ~ [db3,ab3,db4] ~", // Db5
  N: "[b2,gb3,b3] ~ [b2,gb3,b3] ~ [b2,gb3,b3] ~ [b2,gb3,b3] ~ [b2,gb3,b3] ~ [b2,gb3,b3] ~ [b2,gb3,b3] ~ [b2,gb3,b3] ~", // B5
  O: "[gb2,db3,gb3]@2 [gb2,db3,gb3] ~ [gb2,db3,gb3]@2 [gb2,db3,gb3] ~ [gb2,db3,gb3] ~ [b2,gb3,b3]@2 [b2,gb3,b3] ~ [gb2,db3,gb3]@2", // Gb5 B5 Gb5
  P: "[gb2,db3,gb3] ~ [gb2,db3,gb3] ~ [gb2,db3,gb3]@2 [gb2,db3,gb3] ~ [gb2,db3,gb3] ~ [gb2,db3,gb3] ~ [gb2,db3,gb3]@2 [gb2,db3,gb3] ~", // Gb5
  Q: "[gb2,db3,gb3]@2 [gb2,db3,gb3] ~ [gb2,db3,gb3]@2 [gb2,db3,gb3] ~ [gb2,db3,gb3] ~ [gb2,db3,gb3] ~ [gb2,db3,gb3] ~ [gb2,db3,gb3]@2", // Gb5
  R: "[db3,ab3,db4] ~ [db3,ab3,db4] ~ [db3,ab3,db4]@2 [db3,ab3,db4] ~ [db3,ab3,db4] ~ [db3,ab3,db4] ~ [db3,ab3,db4]@2 [db3,ab3,db4] ~", // Db5
  S: "[b2,gb3,b3]!8", // B5
  T: "[gb2,db3,gb3]@3 ~ [gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [b2,gb3,b3]@3 ~ [gb2,db3,gb3]@2", // Gb5 B5 Gb5
  U: "~ [gb2,db3,gb3]!7", V: "~ [db3,ab3,db4]!7",
  W: "[gb2,db3,gb3]@3 ~ [gb2,db3,gb3]@3 ~ [gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [gb2,db3,gb3]@2", // Gb5
  X: "[b2,gb3,b3]@3 ~ [b2,gb3,b3]@3 ~ [b2,gb3,b3]@2 [b2,gb3,b3]@2 [b2,gb3,b3]@2 [b2,gb3,b3]@2", // B5
  Y: "[b2,gb3,b3]@2 [b2,gb3,b3]@2 [b2,gb3,b3]@2 [b2,gb3,b3]@3 ~ [b2,gb3,b3]@2 [b2,gb3,b3]@2 [b2,gb3,b3]@2", // B5
  Z: "[gb2,db3,gb3]@3 ~ [gb2,db3,gb3]@5 ~ [b2,gb3,b3]@3 ~ [gb2,db3,gb3]@2", AA: "[db3,ab3,db4]!8",
  AB: "[gb2,db3,gb3]@7 ~@9", // Gb5
})).s("gm_distortion_guitar").gain(0.72)

// chords · overdriven guitar · "BJ-guitar2" · Dmaj7 Gbmaj7 Gbsus2
const overdriven_guitar = note("<~@67 [~@13 [db3,d3,ab3,a3] [bb2,b2,f3,gb3] [gb2,ab2,db3,eb3]] ~@33>")
  .s("gm_overdriven_guitar").gain(0.72)

// bass · electric bass pick · "Mike-bass"
const bass = note(`<
  A B A B A C D E F G A B A C D E H I J@2 K L M N K O M N P Q P Q P Q R S Q T U@2 V@2 W J@2 T U@2 V I J@2 K L M N K O M
  N P Q P Q P Q R X Y Z K AA H I AB Z Y Z K AC H I AB Z K L M N K O M N P Q P Q P Q U@2 AD
>`.pickRestart({
  A: "gb2@3 ~ gb2@3 ~ gb2@2 gb2@2 gb2@2 gb2@2", B: "~@2 gb2@2 gb2@3 ~ gb2@2 gb2@2 gb2@3 ~",
  C: "~@2 gb2@2 gb2@3 ~ gb2@2 gb2@2 gb2@2 ab2@2", D: "db2@3 ~ db2@3 ~ db2@2 db2@3 ~ db2@2",
  E: "~@2 db2@2 db2@3 ~ db2@2 db2@2 db2@2 ab1@2", F: "b1@3 ~ b1@3 ~ b1@2 b1@3 ~ b1@2",
  G: "~@2 b1@2 b1@3 ~ b1@2 b1@2 b1@2 db2@2", H: "b1@3 ~ b1@3 ~ b1@2 b1@2 b1@2 b1@2",
  I: "e2@2 gb2@2 b1@2 e2@2 gb2@2 b1@2 b1@3 [ab1,bb1]", J: "gb1!8", K: "db2@3 ~ db2@3 ~ db2@2 db2@2 db2@2 db2@2",
  L: "~@2 db2@3 ~ db2@3 ~ db2@2 db2@2 bb1@2", M: "b1@3 ~ b1@3 ~ b1@2 b1@2 gb2@2 gb1@2",
  N: "~@2 gb1@2 gb1@3 ~ gb1@2 gb1@2 gb1@2 gb1@2", O: "~@2 db2@3 ~ db2@2 db2@2 db2@2 db2@2 bb1@2",
  P: "b1@3 ~ b1@2 b1@2 b1@2 b1@2 b1@2 b1@2", Q: "gb1@3 ~ gb1@2 gb1@2 gb1@2 gb1@2 gb1@2 gb1@2",
  R: "db2@3 ~ db2@2 db2@2 db2@2 db2@2 db2@2 db2@2", S: "~@2 db2@2 db2@2 db2@2 db2@2 db2@2 db2@3 ~",
  T: "gb1!5 ab1 bb1 b1", U: "db2!8", V: "b1!8", W: "gb1!5 b1!2 gb1", X: "~ db2!7",
  Y: "gb1@3 ~ gb1@3 ~ gb1@2 gb1@2 gb1@2 gb1@2", Z: "~ gb1!7", AA: "~ ab2 ~ gb2 ~ f2 ~ db2",
  AB: "gb1@3 ~ gb1@5 ~ b1@3 ~ gb1@2", AC: "~ f2 gb2 ab2 gb2 f2 eb2 db2", AD: "gb1@7 ~@9",
})).s("gm_electric_bass_pick").gain(0.72)

// drums · kick
const kick = s("bd").struct(`<
  A B A C A B A C A B A C A B A C A B D E F C F G F C F G H F@5 H E A B A C A B A C A B A C A B D E F C F G F C F G H
  F@5 H E F C A C F I A J F C A C A B A J F C F G F C F G H F@5 H E K
>`.pickRestart({
  A: "x ~@4 x ~ x", B: "~ x ~@3 x ~@2", C: "~ x ~@2 x!2 ~@2", D: "x!2 ~@2 x!2 ~@2", E: "x!2 ~@6", F: "x ~@3 x!2 ~ x",
  G: "~ x ~@2 x ~@3", H: "x!2 ~@2 x!2 ~ x", I: "~ x ~ x ~ x ~@2", J: "~ x ~@6", K: "x",
})).gain(0.46)

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

// drums · hihat
const hihat = s("hh").struct("<A B@3 A B@7 A B@5 ~@18 A B C B@3 D E A B C B@3 ~@51>".pickRestart({
  A: "~ x!3", B: "x!4", C: "x ~ x!2", D: "~@2 x!2", E: "x!3 ~",
})).gain(0.46)

// drums · mid tom
const mid_tom = s("mt").struct("<~@23 A ~@3 B ~@7 C ~@19 A ~@3 B ~@7 C ~@7 C ~@7 C ~@3 A ~@3 B ~@9>".pickRestart({
  A: "~@6 x!2", B: "~@4 x!2 ~@2", C: "~@11 x!3 ~@2",
})).gain(0.46)

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

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

// drums · ride
const ride = s("rd").struct("<~@20 A B@2 C A B@2 D ~@24 A B@2 C A B@2 D ~@24 A B@2 C A B@2 D ~@9>".pickRestart({
  A: "~ x!7", B: "x!8", C: "x!6 ~@2", D: "x!4 ~@4",
})).gain(0.46)

stack(distortion_guitar, overdriven_guitar, bass, kick, snare, hihat, mid_tom, open_hat, crash, ride)

More by Green Day