Strudelify

The Battle of Who Could Care Less

Ben Folds Five

KeyB♭ majorTempo195 bpm
0:00/0:00
// The Battle of Who Could Care Less — Ben Folds Five
// 195 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 117 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(195/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.

// bass · synth bass 1
const bass = note(`<
  ~ A B C D@2 C E D A B C D@2 C E D C F@2 G H I J I K L J G H I J I K L J ~@2 M N O@3 P Q@3 P R S T@2 U V A B C D@2 C E
  D G H I J I K L J G H I J I K L J ~@2 M N O@3 P Q@3 P R S T@2 W X J@4 Y@4 J@4 Y@2 ~@7
>`.pickRestart({
  A: "g2!2 b2 d3", B: "f2!2 a2 c3", C: "eb2!2 g2 bb2", D: "db2!2 f2 ab2", E: "b1!2 eb2 gb2",
  F: "[c3@3 f2@3 f1@4 f1@2 ~@4]/2", G: "g2 ~ d2 ~", H: "f2 ~ c2 ~", I: "eb2!2 bb1!2", J: "eb2!4", K: "f2!2 c2!2",
  L: "db2!4", M: "c3@2 c3@2 ~ d3 c3 ~", N: "bb2@2 bb2@2 ~@2 bb2 ~, ~@5 c3@2 ~",
  O: "[f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 c3@2 c3@2 ~ d3 c3 ~, ~ f3@2 f3@2 f3@2 f3@2 ~@3]/3",
  P: "bb2@2 bb2@2 ~ c3 bb2 ~",
  Q: "[f2@2 ~@2 f2@2 ~@2 f2@2 ~@2 f2@2 ~@2 c3@2 c3@2 ~ d3 c3 ~, ~ f3@2 f3@2 f3@2 f3@2 ~@3]/3", R: "f2@2 f2@2 ~ g2 f2 ~",
  S: "eb2@2 eb2@2 ~ eb2 ~ e2", T: "c3!4", U: "g2!4", V: "g2 ~", W: "[g2,g3]!4", X: "[g2,g3] ~@3", Y: "g1!4",
})).s("gm_synth_bass_1").gain(0.23)

// chords · piano
const piano = note(`<
  ~ A B C D@2 C E D A B C D@2 C E D C F@2 G H I J@2 H K I G H I J@2 H K I L@2 M N O P M N O P M N O Q ~@4 A B C D@2 C E
  D G H I J@2 H K I G H I J@2 H K I L@2 M N O P M N O P M N O Q R@2 S ~ T U V W X@2 Y@2 T U V W Z@2 ~@7
>`.pickRestart({
  A: "[g4,b4,d5]!2", B: "[f4,a4,c5]!2", C: "[eb4,g4,bb4]!2", D: "[db4,f4,ab4]!2", E: "[b3,eb4,gb4]!2",
  F: "[[f3,f4,a4]@3 [g3,f4,bb4]@3 [a3,f4,c5]@6 ~@4]/2", G: "[d4,g4,b4]!2 d4 [d4,g4,b4]",
  H: "[c4,f4,a4]!2 c4 [c4,f4,a4]", I: "[bb3,eb4,g4]!2 bb3 [bb3,eb4,g4]",
  J: "[[bb3,eb4,g4]@2 [bb3,eb4,g4] [c4,f4,a4]@2 [c4,f4,a4]@2 [bb3,eb4,g4]@3 [bb3,eb4,g4]@2 bb3@2 [bb3,eb4,g4]@2]/2", // Eb F Eb
  K: "[ab3,db4,f4]!2 ab3 [ab3,db4,f4]", // Db
  L: "[[f3,c4,f4,a4]@6 [g3,f4,bb4]@6 [a3,f4,c5]@6 [f3,c4,f4,a4]@6 [g3,f4,bb4]@3 ~ [a3,f4,c5]@3 ~]/2", // F Gm7 F Gm7 F
  M: "c4@2 c4@2 [c4,eb4,bb4]@2 ~ [c4,eb4,bb4]", N: "bb3@2 bb3@2 [bb3,d4,f4]@2 ~ [bb3,d4,f4]",
  O: "f3@2 f3@2 [f3,a3,c4]@2 ~ [f3,a3,c4]", P: "f3 [f3,a3,c4] f3@2 [f3,a3,c4]@3 [f3,a3,c4]",
  Q: "eb3 [eb3,g3,bb3] eb3@2 ~@2 [f3,a3] b3, ~@4 [eb3,g3,bb3]@3 ~", // Eb F Eb
  R: "[[e3,g3,c4]@6 [e3,g3,c4]@3 [e3,g3,c4]@2 [e3,g3,d4]@2 [e3,g3,e4]@3]/2", S: "[g3,b3,d4]",
  T: "[a3,c4,f4] a3 [a3,c4,f4] [eb3,bb3,eb4,g4]", U: "[bb3,eb4,g4] eb3 [bb3,eb4,g4] eb3",
  V: "[bb3,eb4,g4] bb3 [bb3,eb4,g4] [eb3,bb3]", W: "bb3 eb3 bb3 eb3",
  X: "[[a3,c4,f4] a3 ~@3 g3 ~ g3, ~@6 [b3,d4,g4]@9 ~]/2", // F G
  Y: "[~@2 g3@2 ~@2 d6 ~@3 g3@2 ~@2 g3@2, ~@3 g3 ~@4, ~@7 g6@8 ~]/2", Z: "[[a3,c4,f4]@2 a3@2 ~@2 [b3,d4,g4]@9 ~]/2",
})).s("gm_piano").gain(0)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@7 ~ A@8 ~@3 A@7 B A@9 ~ C@14 D A@8 ~ A@7 B A@9 ~ C@12 E@2 F G A@15 C A C A C A
>`.pickRestart({
  A: "x", B: "x ~@2 x ~ x ~@2", C: "x!2 ~@2", D: "x!8", E: "~ x ~ x ~ x ~ x", F: "~@4 x ~@2 x", G: "~@8 x!2 ~@6",
})).gain(0.4)

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

// drums · low tom
const low_tom = s("lt").struct("<A ~@18 B ~@17 C ~@41 C ~@15 D ~@21>".pickRestart({
  A: "~@3 x ~ x!2 ~", B: "~@4 x!3 ~", C: "~@2 x!2 ~@6 x!2 ~@4", D: "~@3 x",
})).gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<A ~@18 B ~@17 C ~@41 C ~@29 D ~@7>".pickRestart({
  A: "~@3 x ~ x!2 ~", B: "~ x ~ x", C: "x!2 ~@6 x!2 ~@6", D: "~@11 x ~@2 x ~",
})).gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<[~@5 x ~@2] ~@26 [~@3 x ~ x ~@2] ~@41 [~@3 x ~ x ~@2] ~@39 [~@8 x!3 ~ x!2 ~@2] ~@7>")
  .gain(0.4)

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

// drums · ride bell
const ride_bell = s("rd").struct(`<
  ~ A ~@7 A ~@8 B ~ A ~@7 A ~@7 A ~@16 A@2 ~@7 A ~@7 A ~@7 A ~@13 C@2 ~@23
>`.pickRestart({
  A: "x", B: "x ~@2 x ~@2 x ~", C: "x!4",
})).gain(0.4)

// drums · bongos
const bongos = s("bongo:4").struct("<~@28 A ~@7 A ~@33 A ~@7 A ~@38>".pickRestart({
  A: "x",
})).gain(1.05)

stack(bass, piano, kick, snare, low_tom, mid_tom, high_tom, china, ride_bell, bongos)

More by Ben Folds Five