Strudelify

Minority

Green Day

KeyC majorTempo136 bpm
0:00/0:00
// Minority — Green Day
// 136 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 95 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): OvdGuitar.
setcpm(136/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(`<
  ~@5 A B A B A B A B C D C E C D F G A B A B A B A B H I H J H I K L M C D C E C D F G A B A B A B A B H I H J H I K L
  M C D C E C D C E C D F G A B A B A B A B A B A B A B A B N ~@3
>`.pickRestart({
  A: "c2!3 c2@2 e1 f1!3 f1@2 e1", B: "g1!3 g1@2 e1 f1!3 f1@2 e1", C: "c2@6 e2@5 ~ g1@6 b1@5 ~",
  D: "f2@2 f2 e2@2 d2 c2@3 a1@2 g1", E: "f1@2 f1 e1@2 f1 g1@3 b1@2 g1", F: "c2@6 e2@5 ~ f2@6 e2@5 ~",
  G: "g1@2 g1 b1@2 g1 c2@3 c2@3", H: "a1@3 ~ a1 ~ a1@3 ~ a1 ~ a1@6 e2@4 ~@2", I: "f2!3 f2@3 c2!3 c2@3",
  J: "f1!3 f1@3 g1!3 g1@3", K: "a1@3 ~ a1 ~ a1@3 ~ a1 ~ a1@6 f1@4 ~@2", L: "g1@4 g1@3 ~@5 g1@4 g1@3 ~@5",
  M: "g1@3 ~ g1@3 ~ g1@3 ~ g1@3 ~@9", N: "c2 ~@7",
})).s("gm_electric_bass_finger").gain(0.37)

// chords · electric guitar clean · "CleGuitar"
const electric_guitar_clean = note(`<
  ~@5 A B A B A B A B ~@8 A B A B A B A B C D C E C D F G H ~@8 A B A B A B A B C D C E C D F G H ~@12 A B A B A B A B A
  B A B A B A B ~@4
>`.pickRestart({
  A: "[e3,g3,c4]!6 [f3,a3,c4]!6", B: "[g3,b3,d4]!6 [f3,a3,c4]!6", C: "[e3,a3,c4]!6 [e3,a3,c4]@3 [e3,a3,c4]@3",
  D: "[f3,a3,c4]!3 [f3,a3,c4]@3 [e3,g3,c4]!3 [e3,g3,c4]@3", E: "[f3,a3,c4]!3 [f3,a3,c4]@3 [g3,b3,d4]!3 [g3,b3,d4]@3",
  F: "[e3,a3,c4]!6 [e3,a3,c4]@3 [f3,a3,c4]@3", G: "[d3,g3,d4]@4 [d3,g3,d4]@3 ~@5 [d3,g3,d4]@4 [d3,g3,d4]@3 ~@5",
  H: "[d3,g3,d4]@4 [d3,g3,d4]@3 ~ [d3,g3,d4]@3 ~ [d3,g3,d4]@3 ~@9", // G5
})).s("gm_electric_guitar_clean").gain(0.31)

// chords · synth strings 1 · "Pad"
const synth_strings_1 = note(`<
  ~@5 A B A B A B A B ~@8 A B A B A B A B ~@17 A B A B A B A B ~@21 A B A B A B A B A B A B A B A B ~@4
>`.pickRestart({
  A: "[e4,g4,c5] [f4,a4,c5]", B: "[g4,b4,d5] [f4,a4,c5]",
})).s("gm_synth_strings_1").gain(0.23)

// chords · acoustic guitar steel · "SteGuitar"
const acoustic_guitar_steel = note(`<
  ~ A B A C ~@8 D E D F D E G H ~@17 D E D F D E G H ~@8 I J I K I L M N O D E D F D E D F D E G H ~@16 A B A C
>`.pickRestart({
  A: "~@5 g3 ~@5 g3, c3 g2, ~@2 g3@7 ~@7 b2@7 ~, ~@4 e3@7 ~@3 d3@7 ~@3, ~ c4 ~ d4",
  B: "~@5 c4 d3 ~@4 g3, f3@12 ~@2 e3@7 ~@3, ~@2 c4@7 ~@9 c4@6, ~@4 a3@7 ~@5 c3@7 ~, ~ e4 ~@2",
  C: "[f3,a3]@6 [e3,g3]@4 [d3,f3]@2 [c3,e3]@9 ~@3", D: "[g3,c4,e4]!2 [g3,b3,d4]!2", E: "[a3,c4,f4]!2 [g3,c4,e4]!2",
  F: "[f3,a3,c4]!2 [g3,b3,d4]!2", G: "[g3,c4,e4]!2 [a3,c4,f4]!2", H: "[g3,b3,d4]!2 [g3,c4,e4]!2",
  I: "[a3,c4,e4]!6 [a3,c4,e4]@3 [a3,c4,e4]@3", J: "[a3,c4,f4]!3 [a3,c4,f4]@3 [c4,e4,g4]!3 [c4,e4,g4]@3",
  K: "[a3,c4,f4]!3 [a3,c4,f4]@3 [b3,d4,g4]!3 [b3,d4,g4]@3", L: "[a3,c4,f4]!3 [a3,c4,f4]@3 [g3,c4,e4]!3 [g3,c4,e4]@3",
  M: "[a3,c4,e4]!6 [a3,c4,e4]@3 [a3,c4,f4]@3", N: "[g3,d4]@4 [g3,d4]@3 ~@5 [g3,d4]@4 [g3,d4]@3 ~@5",
  O: "[g3,d4]@4 [g3,d4]@3 ~ [g3,d4]@3 ~ [g3,d4]@3 ~@9", // G5
})).s("gm_acoustic_guitar_steel").gain(0.39)

// chords · overdriven guitar · "OvdGuitar" · C5
const overdriven_guitar = note("<~@91 [[c3,g3,c4]@5 ~@19] ~@3>").s("gm_overdriven_guitar").gain(0.39)

// chords · harmonica
const harmonica = note("<~@38 A B A C A B D E ~@17 A B A F A B A C A B D E ~@8 G H I J G H I K ~@4>".pickRestart({
  A: "[c5,e5] [g4,d5]", B: "[f4,c5] [g4,e5]", C: "[f4,c5] [g4,d5]", D: "[c5,e5] [f4,c5]", E: "[g4,d5] [c5,e5]",
  F: "[f4,c5] [c5,e5] [g4,d5]@2", G: "e5 c5", H: "d5@12 c5@11 ~", I: "e5@12 c5@11 ~", J: "d5@11 ~ c5@11 ~",
  K: "d5@6 c5@5 ~, c5 ~@23",
})).s("gm_harmonica").gain(0.31)

// drums · kick
const kick = s("bd").struct("<~@5 A@24 B C B C B C B D E A@16 B C B C B C B D E A@28 F ~@3>".pickRestart({
  A: "x ~ x ~@2 x!2 ~ x ~@2 x", B: "x!3 ~", C: "x!2 ~ x!2 ~", D: "x!6", E: "x!4 ~@2", F: "x",
})).gain(0.5)

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

// drums · clap
const clap = s("cp").struct("<~@13 [~@3 x]!8 ~@17 [~@3 x]!8 ~@17 [~@3 x]!12 ~@20>").gain(0.57)

// drums · hihat
const hihat = s("hh").struct("<[x!4] ~@12 [x!3 ~]!8 ~@17 [x!3 ~]!8 ~@17 [x!3 ~]!12 ~@20>").gain(0.57)

// drums · low tom
const low_tom = s("lt").struct("<~@4 A ~@24 B ~ B ~ B ~ B ~@18 B ~ B ~ B ~ B ~@34>".pickRestart({
  A: "~@3 x", B: "~ x!2 ~ x!3 ~@5",
})).gain(0.43)

// drums · mid tom
const mid_tom = s("mt").struct("<~@4 A ~@24 B C B C B C B ~@18 B C B C B C B ~@34>".pickRestart({
  A: "~@3 x", B: "x!2 ~@2", C: "x!4 ~@2 x!4 ~@2",
})).gain(0.43)

// drums · open hat
const open_hat = s("oh").struct("<~@5 A@8 B@8 A@8 ~@9 B@8 A@8 ~@9 B@12 A@16 ~@4>".pickRestart({
  A: "x!4", B: "~@3 x",
})).gain(0.43)

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

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@30 A ~ A ~ A ~@20 A ~ A ~ A ~@35>".pickRestart({
  A: "x!2",
})).gain(0.29)

// drums · ride bell
const ride_bell = s("rd").struct(`<
  ~@5 A@8 B C@3 B C@3 A@8 ~@9 B C@3 B C@3 A@17 B C@3 B C@3 B C@3 A@16 ~@4
>`.pickRestart({
  A: "x ~ x ~@2 x!2 ~ x ~@2 x", B: "x!4", C: "x!2 ~ x",
})).gain(0.43)

// drums · ride bell · soft notes
const ride_bell_soft = s("rd").struct(`<
  ~@13 A B@2 ~ A B@2 ~@18 A B@2 ~ A B@2 ~@18 A B@2 ~ A B@2 ~ A B@2 ~@21
>`.pickRestart({
  A: "~ x ~@6", B: "~@13 x ~@10",
})).gain(0.14)

// drums · tambourine
const tambourine = s("tb").struct("<~@5 A@8 ~@8 A@8 ~@17 A@8 ~@21 A@16 ~@4>".pickRestart({
  A: "x!12",
})).gain(0.36)

stack(
  bass, electric_guitar_clean, synth_strings_1, acoustic_guitar_steel, overdriven_guitar, harmonica, kick, snare, clap,
  hihat, low_tom, mid_tom, open_hat, crash, crash_soft, ride_bell, ride_bell_soft, tambourine
)

More by Green Day