Strudelify

One of My Lies

Green Day

KeyD♭ majorTempo181 bpm
0:00/0:00
// One of My Lies — Green Day
// 181 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 109 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(181/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 · distortion guitar · "Billie Joe - Elec. Guitar"
const distortion_guitar = note(`<
  A B@2 C D B@2 E D F@2 G@2 H@2 I@2 F@2 G@2 H@2 I@2 J@2 K@2 J@2 K@2 L M@8 F@2 G@2 H@2 I@2 F@2 G@2 H@2 I@2 J@2 K@2 J@2
  K@2 L M@8 N@8 L M@8 ~@17
>`.pickRestart({
  A: "~@12 [f2,gb2] ~@3", B: "[[db3,ab3,db4]@2 [db3,ab3,db4]@2 [db3,ab3,db4]!3 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]!7]/2",
  C: "[gb2,db3,gb3]@4 [d2,eb2] gb2 [f2,c3,f3]@2 [f2,c3,f3]@4 ~@2 [gb2,db3,gb3]@2", // Gb5 Ebmaj7 F5 Gb5
  D: "[gb2,db3,gb3] [f2,c3,f3]!2 [gb2,db3,gb3]!2 [ab2,eb3,ab3]!3", // Gb5 F5 Gb5 Ab5
  E: "[gb2,db3,gb3]@3 [f2,c3,f3] [f2,c3,f3]@3 [gb2,db3,gb3]", // Gb5 F5 Gb5
  F: "[[db3,ab3,db4]!2 [db3,ab3,db4]@2 [db3,ab3,db4]!3 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]!2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]!3]/2", // Db5 Ab5
  G: "[[bb2,f3,bb3]!2 [bb2,f3,bb3]@2 [bb2,f3,bb3]!3 [f2,c3,f3]@2 [f2,c3,f3]!7]/2", // Bb5 F5
  H: "[[gb2,db3,gb3]!2 [gb2,db3,gb3]@2 [gb2,db3,gb3]!3 [db3,ab3,db4]@2 [db3,ab3,db4]!2 [db3,ab3,db4]@2 [db3,ab3,db4]!3]/2", // Gb5 Db5
  I: "[[ab2,eb3,ab3]!2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]!3 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]!7]/2", // Ab5
  J: "[[gb2,db3,gb3]!2 [gb2,db3,gb3]@2 [gb2,db3,gb3]!3 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]!2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]!3]/2", // Gb5 Ab5
  K: "[[gb2,db3,gb3]!2 [gb2,db3,gb3]@2 [gb2,db3,gb3]!3 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]!7]/2", L: "[ab2,eb3,ab3] ~@7",
  M: "[[db3,ab3,db4]@2 [db3,ab3,db4]@2 [db3,ab3,db4] [bb2,f3,bb3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]!7]/2", // Db5 Bb5 Ab5
  N: "[[f2,c3,f3]@2 [gb2,db3,gb3]@3 ~ [gb2,db3,gb3]@3 ~ [gb2,db3,gb3]@3 ~ [ab2,eb3,ab3]@4 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2]/2", // F5 Gb5 Ab5
})).s("gm_distortion_guitar").gain(0.26)

// bass · electric bass pick · "Mike - Bass Guitar"
const bass = note(`<
  ~@5 A@2 B C D@2 E@2 F@2 G@2 D@2 E@2 F@2 H@2 I@2 J@2 I@2 K@2 L M@8 D@2 E@2 F@2 G@2 D@2 E@2 F@2 H@2 I@2 J@2 I@2 K@2 L
  M@6 N@2 O@8 L M@8 P ~@13 B C P
>`.pickRestart({
  A: "[db2@2 db2@2 db2!3 ab1@2 ab1 c2 db2 eb2 db2 c2 ab1]/2", B: "gb1@3 f1 f1@3 gb1", C: "gb1 f1!2 gb1!2 ab1!3",
  D: "[db2!2 db2@2 db2 c2 bb1 ab1@2 ab1!2 ab1@2 bb1 c2 ab1]/2",
  E: "[bb1!2 bb1@2 bb1 ab1 gb1 f1@2 f1!2 bb1 ab1 gb1 f1 ab1]/2",
  F: "[gb1!2 gb1@2 gb1!3 db2@2 db2 eb2 f2@2 eb2 db2!2]/2", G: "[ab1!2 ab1@2 ab1!2 eb2 ab1@2 ab1!3 bb1!2 c2!2]/2",
  H: "[ab1!2 ab1@2 ab1!2 eb2 ab1@2 ab1!3 c2 db2 c2 ab1]/2", I: "[gb1!2 gb1@2 gb1!3 ab1@2 ab1!2 ab1@2 ab1!3]/2",
  J: "[gb1!2 gb1@2 gb1!3 ab1@2 ab1!3 c2 db2 c2 ab1]/2", K: "[gb1!2 gb1@2 gb1!3 ab1@2 ab1!5 eb2!2]/2", L: "ab1 ~@7",
  M: "[db2@2 db2@2 db2 bb1 bb2 ab1@2 ab1!4 bb1 c2 ab1]/2", N: "[db2@2 db2@2 db2 bb1 bb2 ab1@2 ab1!3 c2 db2 c2 ab1]/2",
  O: "[f1@2 gb1@3 ~ gb1@3 ~ gb1@3 ~ ab1@4 ab1@2 ab1@2 ab1@2 ab1@2 ab1@2 ab1@2 ab1@2]/2", P: "db2 ~@7",
})).s("gm_electric_bass_pick").gain(0.31)

// chords · distortion guitar · "Billie Joe - Elec. Guitar"
const distortion_guitar_2 = note("<~@92 A B C D E F G D E H C I J@2 K L M>".pickRestart({
  A: "[db3,ab3,db4]@2 [db3,ab3] ~ [db3,ab3] ~ [db3,ab3] ~ [db3,ab3,eb4]@2 [db3,ab3] ~ [db3,ab3] ~ [ab2,eb3,ab3]@2", // Db5 Dbsus2 Db5 Ab5
  B: "[ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [eb3,ab3,c4]@2 [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~", // Ab5 Ab Ab5
  C: "[gb2,db3,gb3]@2 [gb2,db3] ~ gb2 [gb2,db3] [f2,c3,f3]@2 [f2,c3,f3]@2 [f2,c3] ~ [f2,c3] ~ [gb2,db3,gb3]@2", // Gb5 F5 Gb5
  D: "[gb2,db3,gb3]@2 [gb2,db3] ~ [f2,c3,f3]@2 [gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [gb2,db3] ~ [ab2,eb3,ab3]@2 [ab2,eb3] ~", // Gb5 F5 Gb5 Ab5
  E: "[db3,ab3,db4]@2 [db3,ab3] ~ [db3,ab3] ~ [db3,ab3] ~ [db3,ab3,eb4]@2 [db3,ab3] ~ [db3,ab3] ~ [eb3,ab3,c4]@2", // Db5 Dbsus2 Db5 Ab
  F: "[ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3,ab3]@2 [ab2,eb3] ~ [ab2,eb3,ab3]@2 [ab2,eb3] ~ [ab2,eb3] ~", // Ab5
  G: "[gb2,db3,gb3]@2 [gb2,db3] ~@2 [gb2,db3] [f2,c3,f3]@2 [f2,c3,f3]@2 [f4,ab4]@2 [f2,c3] ~ [gb2,db3,gb3]@2, ~@2 [f4,ab4] ~@5", // Gb5 F5 Fm F5 Gb5 Fm
  H: "[ab2,eb3] ~ [eb3,ab3,c4]@2 [ab2,eb3] ~ [ab2,eb3]@2 [ab2,eb3] ~ [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2 [ab2,eb3] ~", // Ab5 Ab Ab5
  I: "[gb2,db3,gb3]@2 [gb2,db3] ~ [f2,c3,f3]@2 [gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2", // Gb5 F5 Gb5 Ab5
  J: "[[db3,ab3,db4]@2 [db3,ab3,db4]@2 [db3,ab3,db4]!3 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]!7]/2", // Db5 Ab5
  K: "[gb2,db3,gb3]@3 [f2,c3,f3] [f2,c3,f3]@3 [gb2,db3,gb3]", // Gb5 F5 Gb5
  L: "[gb2,db3,gb3] [f2,c3,f3]!2 [gb2,db3,gb3]!2 [ab2,eb3,ab3]!3", M: "[db3,ab3,db4] ~@7",
})).s("gm_distortion_guitar").gain(0.26)

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

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

// drums · hihat
const hihat = s("hh").struct("<~@33 A B ~ B ~ B ~ B ~@25 A B ~ B ~ B ~ B ~@10 B ~ B ~ B ~ B ~@13 C ~@4>".pickRestart({
  A: "~ x!2 ~", B: "~@3 x", C: "x",
})).gain(0.26)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@83 [~@10 x!2 ~@4] ~@23 [~@3 x!2 ~@3] ~>").gain(0.26)

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

// drums · high tom
const high_tom = s("ht").struct("<~@24 [~@12 x!4] ~@32 [~@12 x!4] ~@51>").gain(0.26)

// drums · ride bell
const ride_bell = s("rd").struct(`<
  ~@25 A B A B A B C D ~ E ~ E ~ E ~ E ~@17 A B A B A B C D ~ E ~ E ~ E ~ E ~ F G F G F G F H ~ E ~ E ~ E ~ E ~@9 I ~@8
>`.pickRestart({
  A: "~ x!6 ~", B: "x!8", C: "~@3 x!4 ~", D: "x!4 ~ x!3", E: "~ x", F: "~ x!3", G: "~ x!7", H: "~ x!3 ~ x!3", I: "x",
})).gain(0.26)

// drums · splash
const splash = s("cr").struct(`<
  ~@5 A ~ A@3 ~ A ~ A ~ B ~ A ~ A ~ A ~ C ~ B ~ B ~ B ~ C D ~ C ~ C ~ C ~ C ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~ C ~ B ~ B ~ B
  ~ C D ~ C ~ C ~ C ~ C ~ B ~ B ~ B ~ B D ~ C ~ C ~ C ~ C ~@17 A
>`.pickRestart({
  A: "x", B: "x ~@6 x", C: "x ~ x ~@4 x", D: "~ x",
})).gain(0.26)

stack(
  distortion_guitar, bass, distortion_guitar_2, kick, snare, hihat, low_tom, mid_tom, open_hat, high_tom, ride_bell,
  splash
)

More by Green Day