Strudelify

Missing the War

Ben Folds Five

KeyF majorTempo78 bpm
0:00/0:00
// Missing the War — Ben Folds Five
// 78 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 82 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(78/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 · piano
const piano = note(`<
  A B A C D E F@2 G H I J D E F@2 K L H M N D E@2 H O E P Q R Q D E F@2 G H I J N D E@2 H O E S T@2 U V W X Y A D E F@2
  G Z I J N D E@2 H O E S Q R Q R Q R Q R T@2 U
>`.pickRestart({
  A: "[d4,f4] bb3 [d4,f4] g4 [db4,f4] bb3 [db4,f4] g4, bb2!2", B: "[c4,f4] a3 [c4,f4] g4 [f3,c4,eb4]@4, f3 ~",
  C: "[c4,f4] a3 [c4,f4] g4 [c4,f4] a3 [c4,f4] g4, f3!2", D: "[c4,f4] a3 [c4,f4] a3 [c4,f4] a3 [c4,f4] a3, f3",
  E: "[c4,eb4] a3 [c4,eb4] a3 [c4,eb4] a3 [c4,eb4] a3, f3", F: "[bb3,d4] g3 [bb3,d4] g3 [bb3,d4] g3 [bb3,d4] g3, bb2",
  G: "g3 c3 [f3,a3,c4] c3 [eb3,a3,c4]@2 [f3,a3,c4]@2", H: "[bb3,d4] g3 [bb3,d4] g3 [bb3,d4] g3 [bb3,d4] g3",
  I: "[f3,bb3] d3 [f3,bb3] d3 [f3,a3] d3 [f3,a3] d3", J: "[eb3,a3] c3 [eb3,a3] c3 [eb3,a3] c3 [eb3,a3] c3",
  K: "[c4,f4] a3 [c4,f4] a3 [c4,e4] a3 [c4,e4] a3, f3", // F5 C
  L: "[c4,eb4]@2 a3@2 [c4,eb4]@2 a3@2 [c4,e4]@2 a3@2 [c4,e4] f4 e4 c4, f3", // Cm C
  M: "[f3,bb3] d3 [f3,bb3] d3 [eb3,a3] c3 [eb3,a3] c3", N: "[c4,f4] a3 [c4,f4] a3 [c4,f4] a3 [c4,f4] a3, f3, [a2,c3] ~",
  O: "[c4,f4] a3 [c4,f4] a3 [c4,f4] a3 [c4,f4] a3", P: "[c4,f4] ~",
  Q: "[d4,f4] bb3 [d4,f4] g4 [db4,f4] bb3 [db4,f4] g4, bb2", R: "[c4,f4] a3 [c4,f4] g4 [c4,eb4] a3 [c4,eb4] g4, f3",
  S: "[c4,eb4] a3 [c4,eb4] a3 [c4,eb4] a3 [c4,eb4] a3", // Cm
  T: "[[f3,a3,c4]@4 ~@2 [f3,a3,c4]@4 ~@2 [f3,a3,c4]@16 [c4,f4] g4 f4 c4]/2", // F F5
  U: "[c3,f3,a3]@2 [d3,f3,bb3] [f3,a3,c4]@4 ~", // F Bb F
  V: "[c4,f4]@4 ~@2 e4 f4 [c4,eb4]@3 ~@2 f4 ~ c4, [f2,a3]@4 ~@2 eb4!2, ~@4 f4@3 ~@4 c4@4 ~, ~@5 c4@3 g3@8", // F5 Cm F
  W: "[f4,a4]@4 ~@2 d4 c4 d4@3 ~ f4 ~@2 bb3, [f2,c4]@8 ~@3 d4@3 d4@2, ~@4 a4@4 g4@5 g4@3, ~@5 f4@3 [g3,bb3]@8", // F F5 Gm
  X: "[c3,f3,a3]@5 a3@2 ~ [db4,f4]@2 bb3@2 [db4,f4]@2 g4@2, c4 bb2", // F Db
  Y: "[c4,f4] a3 [c4,f4] g4 [c4,eb4] a3 [c4,eb4] g4, f3!2", // F5 Cm
  Z: "[bb3,d4]@2 g3@2 [bb3,d4]@2 g3@2 [bb3,d4]@2 g3@2 f4 g4 f4 d4, ~@6 [bb3,d4] g3", // Bb
})).s("gm_piano").gain(0.4)

// bass · electric bass pick · "Bass Bass"
const bass = note(`<
  ~@4 A@2 B C D E@2 F A G H I A@2 E J K A@3 E A@2 ~ E A E L M B N O P Q R K A@3 E A@2 ~ S@2 T U V W X Y L M B N O P Q R
  K A@3 E A@2 ~ E A E A E A E A S@2 T
>`.pickRestart({
  A: "f2", B: "~ d2, g2", C: "~@7 g1, bb1", D: "c2@6 ~ f1", E: "bb1", F: "eb2", G: "f2 g2 a2 c3", H: "bb2",
  I: "g2 a2 bb2 d3", J: "~ eb2, bb1", K: "[f1,f2]", L: "f2@3 f2 f2@3 f2", M: "f2@4 f2 f2@3", N: "bb1@4 bb1 bb1@2 g1",
  O: "c2@4 c2@3 f1", P: "bb1@4 bb1 bb1@3", Q: "bb1@2 ~ bb1 bb1@4", R: "eb2@4 eb2 eb2@3", S: "[f1@3 c2@3 f2@8 ~@2]/2",
  T: "a1@2 bb1 c2@4 ~", U: "f2 g1", V: "f2 g2", W: "a1@3 a1 c2@4", X: "f2 eb2", Y: "bb1!2",
})).s("gm_electric_bass_pick").gain(0.4)

// chords · viola · "Aahs"
const viola = note(`<
  ~@21 A@2 B@2 A@2 ~ C D E ~@9 A@2 B@2 A@2 ~@10 F@3 ~@5 A@2 B@2 A@2 ~ C D C D G@2 H@2 ~@3
>`.pickRestart({
  A: "[~@2 [f4,a4]@2 [f4,bb4] [f4,c5]@2 [c5,eb5]@9]/2", B: "[~@2 [f4,a4]@2 [f4,bb4] [f4,c5]@2 [f4,bb4]@9]/2",
  C: "[d5,f5] [db5,f5]", D: "[c5,f5] [c5,eb5]", E: "[d5,f5,a5] [db5,f5,a5]",
  F: "[[f4,a4] [f4,bb4] [a4,c5] c5 bb4@8, ~ f5@3]/3", // F Bb5 Am
  G: "[d5@2 [a4,d5]@2 [bb4,d5] [c5,f5]@2 [c5,f5]@5 [c5,eb5,a5]@4, a5 ~@3]/2", // D5 Bb F5 Adim
  H: "[d5@2 [a4,d5]@2 [bb4,d5] [c5,f5]@2 [c5,f5]@5 [c5,eb5,a5]@4, a5 ~]/2", // D5 Bb F5 Adim
})).s("gm_viola").gain(0.18)

// other · distortion guitar · "Distortion G-Tar"
const distortion_guitar = note("<~@63 A@2 B@2 C A B A D E D E D E D E ~@3>".pickRestart({
  A: "f3!4", B: "eb3!4", C: "bb2!4", D: "f2!4 bb2!4", E: "a2!4 c3!4",
})).s("gm_distortion_guitar").gain(0.34)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@38 x ~@11 [~@3 x ~@3 x]!2 ~@10 x ~@19>").gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~@38 A ~@7 A ~@15 A ~@7 A ~ A ~ A ~ A ~ A ~@3>".pickRestart({
  A: "~@13 x ~@2",
})).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~@38 A ~@7 A ~@15 A ~@7 A ~ A ~ A ~ A ~ A ~@3>".pickRestart({
  A: "~@9 x ~@4 x ~",
})).gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@38 A ~@7 B ~@3 C@2 ~@10 A ~@7 B ~ B ~ B ~ B ~ B ~@3>".pickRestart({
  A: "x ~@10 x ~ x ~@2", B: "~@11 x ~ x ~@2", C: "~@4 x!2 ~@6 x!2 ~@2",
})).gain(0.4)

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

// drums · tambourine
const tambourine = s("tb").struct("<~@31 [x!8]!7 ~@17 [x!8]!7 ~@20>").gain(0.4)

// drums · vibraslap
const vibraslap = s("vibraslap:0").struct("<~@31 A ~@3 A ~@11 B ~@2 C@2 D ~@2 A ~@3 A ~@19 B ~@2>".pickRestart({
  A: "x", B: "~@3 x ~@4", C: "x!2", D: "~ x ~@2",
})).gain(4.66)

stack(
  piano, bass, viola, distortion_guitar, kick, snare, low_tom, mid_tom, open_hat, high_tom, china, tambourine, vibraslap
)

More by Ben Folds Five