Strudelify
Ben cover art

1972 · Ben

Ben

Michael Jackson

KeyF majorTempo69 bpm
0:00/0:00
// Ben — Jackson Michael
// 69 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 47 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(69/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, A@4 for four bars: edit a riff to change every repeat.

// bass · acoustic bass
const bass = note(`<
  ~ A B A B C D C D C E F G A H C D C D C E F G A I J K J K J L J M C D C D C N O P@5 Q@2
>`.pickRestart({
  A: "f2", B: "a3@6 f3@5 ~, f2@11 ~", C: "f2@3 c2 f2@4", D: "e2@3 c2 e2@4", E: "e2@9 d2@3 db2@11 ~",
  F: "eb2@8 ~ eb2@3 d2@12", G: "db2@8 ~ db2@3 c2@11 ~", H: "f2@11 ~, a3 ~", I: "[f2,a3]", J: "g2@3 f2 e2@4",
  K: "f2@3 c2 f1@3 ~", L: "f2@9 c2@3 f1@10 ~@2", M: "f2@9 c2@3 f1@5 ~ c2@6", N: "e2@9 c2@3 e2@10 ~@2",
  O: "eb2@3 bb1 d2@4", P: "[db2@8 ~ db2@3 c2@15 f2@24 f2@24 ~ [gb1,f2]@24 f2@20]/5", Q: "[c3@3 ~ f2@9 ~@11]/2",
})).s("gm_acoustic_bass").gain(0.3)

// other · piccolo
const piccolo = note("<~@25 A@2 B C ~@12 D@6>".pickRestart({
  A: "[~@9 f5@3 g5@3 c6@3 c6@8 ~@10 e5@3 a5@3 a5 ~@5]/2", B: "d5@3 g5@3 g5@14 ~ g5 d5@2, ~@22 e5 ~", C: "c5@3 ~",
  D: "[~@3 c5@12 bb4@12 a4@13 bb4@12 c5@12 bb4@12 a4@12 bb4@16 c5@18 ~@22]/6",
})).s("gm_piccolo").gain(0.15)

// bass · synth brass 1
const bass_2 = note("<~ [f1@7 ~] ~ [f1@19 ~@5] ~@39 [~ f1@5] ~@3>").s("gm_electric_bass_finger").gain(0.3)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~ A@4 B C D@2 E F G@2 H@2 I@2 J@2 K@2 L@2 M@2 N@2 O@2 P@2 Q R S@2 T U V@2 W@8
>`.pickRestart({
  A: "[~@3 a3 ~@3 bb3 ~@3 a3 ~@3 bb3, a3@3 ~ bb3@3 ~ a3@3 ~ bb3@3 ~, ~ c4@3 ~ d4@2 ~@3 f4@4 c4@2, ~@2 f4@4 c4@3 c4@3 ~ d4@2 ~]/2",
  B: "~@7 f3, a3@9 f3@5 ~ c4@6 ~@3, ~@3 c4@5 ~@4 a3@9 ~@3, ~ f4@2 f4",
  C: "~@7 c3, g3!2, ~@3 bb3@5 ~ c3@5 ~@4 c4@6, ~@2 c4@3 bb3@2 ~",
  D: "[a3 g3 ~@2 a3 g3 ~ f3 ~@3 f3 ~@3 c3, f3@9 f3@11 ~@4 g3@9 ~@3 g3@12, ~@3 c4@10 ~@2 c4@12 bb3@6 ~@6 bb3@6 ~@3, ~@6 f4@9 ~@3 f4@6 ~@6 c4@7 ~@5 c4@6]/2",
  E: "~@7 c4, a3@10 ~@2 a3@9 ~@3, ~@3 e4@5 ~ c4@6 e4@6 ~@3, ~ a4 ~ a4",
  F: "~@9 d4@2 ~@10 db4@3, [a3,d4]@3 bb3@2 ~ a4@2, ~ e4@2 ~ a3@4, ~@2 a4@3 e4@3, ~@4 db4@3 ~", // D5
  G: "[~@3 a3!2 c4 ~ c4 ~ b3 ~ g3 ~@3 [g3,c4], g3@14 ~ gb3@9 g3@9 ~@3 e3@12, a3@9 ~@24 b3@5 ~ c4@6 ~@3, ~@3 db4@5 ~ db4@5 ~@34, ~@3 g4@5 ~ gb4@5 ~ f4@5 ~ e4@3]/2", // C5
  H: "[~@3 a3 ~@3 bb3 ~@3 a3 ~@3 bb3, [f3,a3]@3 ~@2 d4@2 ~@3 f4@5 ~, ~ c4@3 bb3@3 ~ a3@3 ~ bb3@3 ~, ~@6 f4@12 c4@9 c4@9 ~@3 d4@5 ~@4, ~@7 c4]/2", // F
  I: "[~@3 ab3 ~@11 c3, ab3@8 ~@4 ab3@9 f3@5 ~ bb3@6 c3@5 ~@4 c4@6, ~ c4@2 ~@2 [c4,g4]@2 ~ g3@4 g3@4, ~@6 f4@9 ~@3 f4@9 ~@3 c4@9 bb3@5 ~@4]/2", // C5
  J: "[~@3 ab3 ~@11 c3, ab3@2 f4@3 [c4,g4]@2 ~ g3@4 g3@4, ~@3 c4@6 ~@3 ab3@9 f3@6 bb3@5 ~ c3@5 ~@4 c4@6, ~@18 f4@8 ~@4 c4@9 bb3@6 ~@3]/2", // C5
  K: "[~@11 [bb3,d4] ~@3 db4, a3@11 ~ a3@9 c4@5 ~ e4@5 ~@4 db4@9 ~@3, ~ e4@2 c4@2 e4@2 ~ [a3,d4]@3 ~ a3@4, ~@2 a4@2 ~@2 a4@2 ~@2 a4@3 e4@3, ~@7 a4]/2", // Bb D5
  L: "[~ db4 ~ [a3,db4] a3 c4 ~ c4 ~ b3 ~ [g3,b3] ~ bb3 ~ bb3, [g3,a3]@3 ~@2 gb3@3 g3@3 ~ e3@4, ~@3 g4@5 ~ gb4@5 ~ f4@5 ~ e4@3]/2", // A G Gsus2
  M: "[~@3 a3 ~@3 bb3 ~@3 a3 ~@3 f4, a3@3 ~ bb3@3 ~ a3@3 ~ bb3@3 ~, ~ c4@3 ~ d4@2 ~@3 f4@4 c4@2, ~@2 f4@4 c4@3 c4@3 ~ d4@2 ~]/2",
  N: "[g3@3 d4@3 c4@3 d4@3 ~@3 d4@3 c4@3 ~@9 a3@5 ~@4 c4@3 ~@3 c4@2 ~, ~@12 bb3@7 ~@5 f3@24, ~@12 e4@5 ~@4 d4@6 c4@7 ~@2 a3@6 [bb3,e4]@6, ~@5 f4@2 ~@3 e4@3 ~@3]/2", // Bbdim
  O: "[d4@2 ~ d4@3 ~@3 [f3,d4]@3 ~@3 d4@3 ~@9 c4@3 a3@3 c4@2 ~ c4@9 ~@3, bb3@6 g4@14 ~ d4@6 ~@21, ~@6 c4@6 e3@9 ~@3 f3@9 ~@2 [f3,a3]@8 ~@5, ~@12 bb3@6 c4@6 a3@5 ~@19]/2", // Dm F
  P: "[~@21 d4@3 ~@6 a3@5 ~@10 c4@3, g3@12 ~@9 bb3@5 ~ c4@10 ~@2 c4@5 ~@4, ~@3 d4@5 ~ d4@5 ~ [d4,f4]@5 ~@10 e4@11 ~@7, ~@6 c4@6 [bb3,e4]@6 [c4,e4]@5 ~ f3@6 ~@6 a3@6 [a3,e4]@6]/2", // Dm Bbdim C A5
  Q: "d4@2 ~@7 f3@3 ~@3 d4@3 c4@3 d4@3, bb3@3 g4@7 ~@2, ~@3 d4@5 ~ d4@5 ~@10, ~@6 c4@5 ~ e3@12, ~@3 bb3@2 ~",
  R: "~ f4 ~ a3 ~ d4 ~ bb3, a3@3 ~ bb3@3 ~, ~@3 c4@10 ~@5 c4@6, ~ f4@2 ~",
  S: "[~ c4 ~@3 c4 ~@9 c3, a3@9 f3@7 ~@5 f3@6 bb3@5 ~ c3@5 ~@4 c4@6, ~@2 f4@4 f4@2 ~@2 c4@3 bb3@2 ~, ~@4 a3@3 ~ g3@4 g3@4]/2",
  T: "a3 ~@3 a3 ~@2 f3, f3@9 f3@11 ~@4, ~@3 c4@10 ~@2 c4@9, ~ g3@2 ~@2 g3@2 ~, ~@2 f4@3 ~ f4@2",
  U: "~ bb3 ~ f3 ~ bb3 ~ c3, g3@3 ~ g3@4, ~@6 c4@7 ~@5 c4@6",
  V: "[~@24 c4@3 ~@9 c4@3 ~@3 e4@4 ~@2, a3@6 f4@9 c4@9 ~@3 c4@8 ~@13, ~@3 f3@12 f3@12 g3@11 ~ [g3,c4]@7 ~@2, ~@3 c4@9 a3@6 f4@12 e4@10 ~@8]/2", // C5
  W: "[~@9 g3@3 ~@9 gb3@3 ~@6 [db4,f4]@5 ~ [c4,e4]@14 ~@10 a3@3 ~@9 bb3@3 ~@10 a3@3 ~@9 bb3@3 ~@9 a3@3 ~@9 bb3@3 ~@9 a3@3 ~@8 c4@4 bb3@3 ~ [c3,f3,a3]@18 ~@22, g3@8 ~@4 gb3@9 ~@3 f3@11 ~@22 f4@12 c4@9 c4@9 ~@4 d4@6 ~@9 f4@12 c4@9 c4@9 ~@4 d4@6 ~@46, ~@3 bb3@11 ~ a3@11 ~ ab3@9 ~@15 a3@9 ~@3 bb3@9 ~@3 a3@9 ~@4 bb3@9 ~@3 a3@9 ~@3 bb3@9 ~@3 a3@9 ~@3 bb3@11 ~@45, ~@6 eb4@8 ~@4 d4@8 ~@28 c4@9 ~@3 d4@6 ~@10 f4@12 c4@6 ~@3 c4@9 ~@3 d4@6 ~@9 f4@13 ~@49]/8", // Db C F
})).s("gm_acoustic_guitar_steel").gain(0.21)

// chords · string ensemble 2
const string_ensemble_2 = note("<~@15 A@2 B@2 C D E F G@2 H I J K L M N O P@3 Q B@2 R S@7>".pickRestart({
  A: "[c6@47 ~]/2", B: "c6/2", C: "a5@8 bb5@3 ~ c6@12", D: "d6@8 g6@3 ~ e6@11 ~", E: "f6 gb6", F: "g6@3 ~",
  G: "[c6@2 bb5@2 a5@2 g5 f5, f6]/2", H: "d4", I: "c4", J: "bb3", K: "a3@3 ~", L: "d6@3 c6 bb5@4", M: "c6@3 bb5 a5@4",
  N: "bb5@3 a5 g5@4, [bb4,d5]", O: "a5@3 g5 f5@2 e5 d5, [a4,c5] ~", P: "[a4@23 ~ g4@24 a4@24, c5]/3",
  Q: "[g4,bb4]@23 ~", R: "db6 d6",
  S: "[f6@12 e6@15 ~ a4@11 g4@12 f4@12 g4@12 ~ a4@2 ~@10 g4@12 f4@12 g4@15 [f4,c6]@19 ~@22, ~@27 f6@49 f6@70 ~@22]/7", // F5
})).s("gm_string_ensemble_2").gain(0.15).pan(0.1)

// other · string ensemble 2
const string_ensemble_2_2 = note("<~@15 A B A B C@2 D E F G H I J K L M N O P Q R Q S T U V@3 W@2 X@2>".pickRestart({
  A: "g5 f5 g5 f5", B: "d5 e5 d5 e5", C: "a3!2", D: "[a3,f5]@4 ~@2 d5 c5, ~ [gb3,gb5]", E: "[g3,b4,g5] [g3,bb4]",
  F: "a4 g4", G: "f4@12 bb4@6 a4@3 g4@2 ~", H: "g4", I: "a4", J: "g4@23 ~", K: "f4@7 ~@5",
  L: "~@4 d4@11 f4@3 e4@3 d4@3", M: "c4@15 e4@2 d4@3 ~ c4@3", N: "f4@3 e4 d4@4, bb3, d4 ~@3", O: "[a3,c4,e4]@11 ~@13",
  P: "c4@2 a4@3 ~ f4 d4", Q: "c4 ~@7", R: "~@2 a4@3 ~ f4 d4, c4@3 ~@5", S: "f4 e4 d4 c4", T: "g4@2 f4 e4", U: "eb4 d4",
  V: "[db4@4 c4@5 f4@12 ~@3]/3", W: "[~ f4@9 ~@2]/2", X: "[~@8 f4@19 ~@21]/2",
})).s("gm_string_ensemble_2").gain(0.22).pan(0.8)

// other · flute
const flute = note("<~@15 A@2 B@2 C@3 D E@2 F G H I ~@8 J@2 K L@7>".pickRestart({
  A: "c5/2", B: "[c5@6 d5 e5]/2", C: "[c5@8 d5@4 e5@2 db5 a4@4 ~@3 d5 c5, a4@11 ~@13]/3", D: "b4@4 bb4@3 ~",
  E: "[c5@15 ~]/2", F: "[bb4,d5]", G: "[a4,c5]", H: "[g4,bb4]", I: "a4@19 ~@5, f4@7 ~@5",
  J: "[g5 f5 g5 f5@2 e5 f5 e5]/2", K: "eb5 d5",
  L: "[db5@12 c5@15 a5@12 g5@12 a5@12 ~ g5@12 a5@12 g5@12 a5@12 g5@15 a5@19 ~@22]/7",
})).s("gm_flute").gain(0.2)

// drums · hihat
const hihat = s("hh").struct("<[x!4] [~ x ~ x]!39 [~ x ~@2] [~@3 x ~@3 x] [~@5 x ~@5 x]!2 [~@5 x ~@6] x ~>").gain(0.2)

// drums · tambourine
const tambourine = s("tb").struct("<~ [~ x ~ x]!39 [~ x ~@2] [~@3 x ~@3 x] [~@5 x ~@5 x]!2 [~@5 x ~@6] x ~>").gain(0.15)

stack(bass, piccolo, bass_2, acoustic_guitar_steel, string_ensemble_2, string_ensemble_2_2, flute, hihat, tambourine)

More by Michael Jackson