Strudelify

Do Da Da

Green Day

KeyA majorTempo160 bpm
0:00/0:00
// Do Da Da — Green Day
// 160 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 59 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(160/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 · overdriven guitar · "Billie Joe - Elec. Guita"
const overdriven_guitar = note(`<
  A@3 B C D E F C D E F G C G F G C G A@2 B C D E F C D E F G C G F G C G A@2 B C D E F C D E F G C G F G C G A@2 H I
>`.pickRestart({
  A: "[a2,e3,a3]@3 ~ [a2,e3,a3]@2 [e3,b3,e4]@2 [e3,b3,e4]@2 [b3,e4,b4]@2 [b3,e4,b4]@2 [e3,b3,e4]@2", // A5 E5
  B: "[d3,a3,d4]!4 [e3,b3,e4]!4", // D5 E5
  C: "[a2,e3,a3]@3 ~ [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@2", // A5
  D: "[e3,b3,e4]@3 ~ [e3,b3,e4]@2 [e3,b3,e4]@2 [e3,b3,e4]@2 [e3,b3,e4]@2 [e3,b3,e4]@2 [e3,b3,e4]@2", // E5
  E: "[d3,a3,d4]@3 ~ [d3,a3,d4]@2 [d3,a3,d4]@2 [d3,a3,d4]@2 [d3,a3,d4]@2 [d3,a3,d4]@2 [d3,a3,d4]@2", // D5
  F: "[a2,e3,a3]@3 ~ [a2,e3,a3]@2 [a2,e3,a3]@2 [e3,b3,e4]@2 [e3,b3,e4]@2 [e3,b3,e4]@2 [e3,b3,e4]@2", // A5 E5
  G: "[f#2,c#3,f#3]@3 ~ [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2", // F#5
  H: "[d3,a3,d4]@3 ~ [d3,a3,d4]@2 [e3,b3,e4]@2 [e3,b3,e4]@2 [b3,e4,b4]@2 [b3,e4,b4]@2 [e3,b3,e4]@2", // D5 E5
  I: "[a2,e3,a3]@3 ~@13", // A5
})).s("gm_overdriven_guitar").gain(0.72)

// bass · electric bass pick · "Mike - Bass Guitar"
const bass = note(`<
  A@3 B C D E F C D G H I J I K I J I L@2 B C D E F C D G H I J I K I J I L@2 B C D E F C D G H I J I K I J I L@2 M N
>`.pickRestart({
  A: "a1@3 ~ a1@2 d2@2 e2@2 e2@2 e2@2 e2@2", B: "d2!2 g#2 a2 e2!2 g#2 b2", C: "a1@3 ~ a1@2 a1@2 a1@2 a1@2 c#2@2 d2@2",
  D: "e2@3 ~ e2@2 e2@2 e2@2 e2@2 d2@2 c#2@2", E: "d2@3 ~ d2@2 d2@2 d2@2 e2@2 d2@2 c#2@2",
  F: "a1@3 ~ a1@2 e2@2 f#2@2 e2@2 c#2@2 e2@2", G: "d2@3 ~ d2@2 d2@2 d2@2 a2@2 g#2@2 e2@2",
  H: "a1@3 ~ a1@2 e2@2 f#2@2 e2@2 c#2@2 a1@2", I: "f#1@3 ~ f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 g#1@2",
  J: "a1@3 ~ a1@2 a1@2 a1@2 a1@2 a1@2 g#1@2", K: "a1@3 ~ a1@2 e2@2 e2@2 e2@2 c#2@2 a1@2",
  L: "a1@3 ~ a1@2 e2@2 e2@2 e2@2 e2@2 e2@2", M: "d2@3 ~ d2@2 e2@2 e2@2 e2@2 e2@2 e2@2", N: "a1@3 ~@13",
})).s("gm_electric_bass_pick").gain(0.72)

// drums · kick
const kick = s("bd").struct("<A@3 B C@7 B C@7 A@2 B C@7 B C@7 A@2 B C@7 B C@7 A@3 D>".pickRestart({
  A: "x ~@3 x!4", B: "x ~@2 x!2 ~ x ~", C: "x ~@2 x!2 ~@2 x", D: "x",
})).gain(0.72)

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

// drums · low tom
const low_tom = s("lt").struct("<~@11 [~@12 x ~ x!2] ~@17 [~@12 x!4] ~@29>").gain(0.72)

// drums · open hat
const open_hat = s("oh").struct(`<
  A@3 B C D C E C D C B ~@7 A@2 B C D C E C D C B ~@7 A@2 B C D C E C D C B ~@7 A@3 ~
>`.pickRestart({
  A: "~ x!2 ~", B: "~ x ~@2", C: "~ x!3", D: "x!4", E: "~ x ~ x",
})).gain(0.72)

// drums · mid tom
const mid_tom = s("mt").struct("<~@11 [~@8 x!3 ~@3 x!2] ~@17 [~@8 x!3 ~ x!4] ~@29>").gain(0.72)

// drums · high tom
const high_tom = s("ht").struct("<~@3 A ~@7 B ~@9 A ~@7 B ~@9 A ~@19>".pickRestart({
  A: "~@10 x!2 ~ x ~@2", B: "~@8 x!3 ~@5",
})).gain(0.72)

// drums · splash
const splash = s("cr").struct(`<
  A@3 B A ~ A B A ~ A@3 ~ A B A ~ A@3 B A ~ A B A ~ A@3 ~ A B A ~ A@3 B A ~ A B A ~ A B A ~ A B A ~ A@5
>`.pickRestart({
  A: "x", B: "x!2",
})).gain(0.72)

// drums · ride
const ride = s("rd").struct("<~@12 A B A C A B A ~@11 A B A C A B A ~@11 D E D F D E D ~@4>".pickRestart({
  A: "~ x!3", B: "x!4", C: "~ x ~ x", D: "~@2 x!6", E: "x!8", F: "~@2 x!2 ~@2 x!2",
})).gain(0.72)

stack(overdriven_guitar, bass, kick, snare, low_tom, open_hat, mid_tom, high_tom, splash, ride)

More by Green Day