Strudelify

Winnebago

Foo Fighters

Tempo166 bpm
0:00/0:00
// Winnebago — Foo Fighters
// 166 bpm, 4/4, key unknown. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 3 "Pat Smear- Guitar" overdriven guitar (copy of ch 1 "Dave Grohl- Guitar" overdriven guitar)
// note: Full arrangement: all 176 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(166/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.

// chords · overdriven guitar · "Dave Grohl- Guitar"
const overdriven_guitar = note(`<
  ~@33 A B@2 C ~@16 A B@2 C D E F G D E F G D E F G D E F G D E F G ~@24 A B@2 C D E F G D E F G D E F G D E F G D E F G
  ~@16 A B@2 C D E F G D E F G D E F G D E F G D E F G D E F G D E F G H ~ I
>`.pickRestart({
  A: "g2@4 [g2,b2]@2 [g2,b2,d3,g3,b3,g4]@4 [g2,b2,d3,g3,b3,g4]@2 [g2,b2,d3,g3,b3,g4]@2 [g2,b2,d3,g3,b3,g4] ~", // G
  B: "[g2,b2,d3,g3,b3,g4]@4 [g2,b2,d3,g3,b3,g4]@2 [g2,b2,d3,g3,b3,g4]@4 [g2,b2,d3,g3,b3,g4]@2 [g2,b2,d3,g3,b3,g4]@2 [g2,b2,d3,g3,b3,g4] ~", // G
  C: "[g2,b2,d3,g3,b3,g4] ~ [f2,c3,f3,a3,c4,f4] ~@3 [f2,c3,f3,a3,c4,f4]@5 ~@5", D: "c#3 ~ c#3@2 b3@4 b2 ~ b2@2 b3@4",
  E: "e3 ~ e3@2 b3@4 b2 ~ b2@2 b3@4", F: "c3 ~ c3@2 b3@4 g2 ~ g2@2 b3@4",
  G: "[a#2,f3,a#3] ~ [a#2,f3,a#3] ~ [a#2,f3,a#3] ~ [a2,d3,g3] ~ [a#2,f3,a#3] ~ [a2,d3,g3] ~ [a#2,f3,a#3] ~ [a2,d3,g3] ~", // A#5 Dsus4 A#5 Dsus4 A#5 Dsus4
  H: "[c#3,f3,b3]", I: "[c#3,f3,b3]@5 ~@11",
})).s("gm_overdriven_guitar").gain(0.41)

// chords · overdriven guitar · "Dave Grohl- Guitar" · soft notes
const overdriven_guitar_soft = note(`<
  ~ A@2 B C A D E C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C ~@4 A@2 B C A@2 B C A@2 B C A@2 B C ~@24 A@2 B C A@2
  B C A@2 B C A@2 B C A@2 B C A@2 B C ~@24 A@2 B C A D E C A D E C A D E C ~@35
>`.pickRestart({
  A: "[c#3,f3,b3]@4 ~@2 [c#3,f3,b3]@4 [c#3,f3,b3] ~ [c#3,f3,b3] ~ [c#3,f3,b3] ~", // C#7
  B: "[c#3,f3,b3]@4 ~@2 [c#3,f3,b3]@4 [c#3,f3,b3] ~ [c#3,f3,b3] ~ b2 ~", // C#7
  C: "c#3 ~ b2 ~ c#3 ~ b2 ~ c#3 ~ b2 ~ c#3 ~ a2 ~",
  D: "[c#3,f3,b3]@4 ~@2 [c#3,f3,b3]@4 [c#3,f3,b3] ~ [c#3,f3,b3,e4] ~ [c#3,f3,b3,e4] ~", // C#7
  E: "[c#3,f3,b3]@4 ~@2 [c#3,f3,b3]@4 [c#3,f3,b3] ~ [c#3,f3,b3] ~ b2 ~, e4@11 ~@5", // C#7
})).s("gm_overdriven_guitar").gain(0.2)

// bass · electric bass finger · "Nate Mendel- Bass"
const bass = note(`<
  ~ A ~@5 B C D@2 E C D@2 E C D@2 E C D@2 E C D@2 E C D@2 E C F@3 G D@2 E C D@2 E C D@2 E C D@2 E C F@3 G ~@3 H I J K H
  I J K H I J K H I J K H D@2 E C D@2 E C D@2 E C D@2 E C D@2 E C D@2 E C F@3 G ~@3 H I J K H I J K H I J K H I J K H A
  ~@5 B C D@2 E C D@2 E C F@3 G I J K H I J K H I J K H I J K H I J K H I J K H I J K H L ~@2
>`.pickRestart({
  A: "c#2 ~@3", B: "~@14 b1 ~", C: "c#2 ~ b1 ~ c#2 ~ b1 ~ c#2 ~ b1 ~ c#2 ~ a1 ~",
  D: "c#2@4 ~@2 c#2@4 c#2 ~ c#2 ~ c#2 ~", E: "c#2@4 ~@2 c#2@4 c#2 ~ c#2 ~ b1 ~", F: "g1@4 g1 ~ g1@4 g1@2 g1@2 g1 ~",
  G: "g1 ~ f1 ~@3 f1@5 ~@5", H: "a#1 ~ a#1 ~ a#1 ~ a1 ~ a#1 ~ a1 ~ a#1 ~ a1 ~", I: "c#2 ~ c#2@5 ~ b1 ~ b1@5 ~",
  J: "e2 ~ e2@5 ~ b1 ~ b1@5 ~", K: "c2 ~ c2@5 ~ g1 ~ g1@5 ~", L: "c#2@11 ~@5",
})).s("gm_electric_bass_finger").gain(0.51)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@76 A ~@47 B ~@22 C D ~@23 E ~@3>".pickRestart({
  A: "~@10 x ~ x ~ x!2", B: "~@9 x ~@3 x!2 ~", C: "~@3 x ~@3 x ~ x ~@3 x ~@2", D: "~@2 x ~ x ~@3 x!2 ~@6",
  E: "~@5 x ~@2",
})).gain(0.41)

// drums · mid tom
const mid_tom = s("mt").struct("<~@76 A ~@47 B ~@22 C D ~@16 E@7 F ~@3>".pickRestart({
  A: "~@13 x ~@2", B: "~@10 x!3 ~@3", C: "~@2 x ~ x!3 ~ x ~ x!3 ~@3", D: "x!2 ~ x ~@2 x!2 ~@2 x!2 ~@4", E: "x!16",
  F: "~@9 x ~ x!5",
})).gain(0.41)

// drums · high tom
const high_tom = s("ht").struct("<~@124 [~@15 x] ~@23 [~@5 x ~@10] ~@27>").gain(0.41)

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

// drums · ride bell
const ride_bell = s("rd").struct(`<
  A ~@7 A B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 ~@3 C B A@3 B A@3 B A@3 B A@3 ~@3 C ~@20 B A@3 B A@3 B A@3 B A@3 B A@3 B
  A@3 ~@3 C ~@20 D ~@6 A B A@3 B A@3 ~@3 C ~@31
>`.pickRestart({
  A: "x!4", B: "~ x!3", C: "~@2 x!2", D: "x",
})).gain(0.51)

stack(overdriven_guitar, overdriven_guitar_soft, bass, kick, snare, low_tom, mid_tom, high_tom, china, ride_bell)

More by Foo Fighters