Strudelify

On the Day

Jackson Browne

KeyE minorTempo120 bpm
0:00/0:00
// On the Day — Jackson Browne
// 120 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 116 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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.

// other · recorder
const recorder = note(`<
  ~ A@8 ~@16 B@2 C D B@2 ~@2 A@8 ~@16 B@2 C D B@2 ~@19 B@2 C D B@2 ~@2 B@2 C D B@2 ~@20
>`.pickRestart({
  A: "~ g5 ~@2", B: "[~ g5 a5 b5@7 ~@6]/2", C: "~ g5 a5 b5@3 b5@2", D: "b5 a5!2 a5@3 ~@2",
})).s("gm_recorder").gain(0.22).pan(0.1)

// other · recorder
const recorder_2 = note(`<
  ~ A@7 ~@17 B@2 C D E@2 ~@2 A@7 ~@17 B@2 C D E@2 ~@19 B@2 C D E@2 ~@2 B@2 C D E@2 ~@20
>`.pickRestart({
  A: "~ e5 ~@2", B: "[~ g5 a5 g5@6 ~@7]/2", C: "~ g5 a5 g5@3 g5@2", D: "g5 f#5!2 f#5@3 ~@2", E: "[~ g5 a5 g5@7 ~@6]/2",
})).s("gm_recorder").gain(0.23).pan(1)

// chords · drawbar organ
const drawbar_organ = note(`<
  ~ A@2 B A@3 B C D E F G H I J I D E G H@2 I J K L@3 M L@2 N ~ A@2 B A@3 B C D E F G H I J I D E G H@2 I J K L@3 M L@2
  O@2 L@3 M L@2 O@2 P@2 Q R P@2 Q S T L@3 M L@2 O@2 L@3 M L@2 O@2 L@3 M L@2 O@2 L@3 M L@2 O U@3
>`.pickRestart({
  A: "~ [b4,e5,g5] ~@2", B: "~ [c5,e5,g5] ~@2", C: "~@4 [b4,e5,g5]@11 ~", D: "~@2 [g3,c4,e4] ~@2 [g3,c4,e4]@3",
  E: "~@2 [g3,b3,d4] ~@2 [g3,b3,d4]@3", F: "~@2 [f#3,a3,d4] ~@2 [f#3,a3,d4]@3", G: "~@2 [f#3,b3,d4] ~@2 [f#3,b3,d4]@3",
  H: "~@2 [a3,c4,e4] ~@2 [a3,c4,e4]@3", I: "~@2 [g3,b3,e4] ~@2 [g3,b3,e4]@3", J: "~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4]@3",
  K: "[b3,d4,g4]", L: "~ [b3,e4,g4] ~ [c4,e4,g4]", M: "[c4,e4,g4] [a3,d4,f#4]@7", N: "[a3,d4,f#4] ~@3", O: "[a3,d4]!8",
  P: "[b3,e4,g4,b4]/2", Q: "[c4,e4,a4,c5]", R: "[b3,e4,g4,b4]", S: "[d4,g4,b4,d5]", T: "[e4,g4,c5,e5] [d4,g4,b4,d5]@3",
  U: "[[a3,d4]!5 g4 f#4 [g3,b3,e4]@17]/3", // D5 Em
})).s("gm_drawbar_organ").gain(0.41)

// bass · fretless bass
const bass = note(`<
  A@7 B@2 C D E F G H E I C D E F G H E D J@3 K J@2 L A@7 B@2 C D E F G H E I C D E F G H E D J@3 K J@2 M@2 J@3 K J@2
  M@2 N@2 O P N@2 O Q@2 J@3 K J@2 M@2 J@3 K J@2 M@2 J@3 K J@2 M@2 J@3 K J@2 M R@3
>`.pickRestart({
  A: "[~@5 g2 f#2 e2@5 ~ g2 f#2 e2@5 ~ c3 b2 a2@5 ~ g2 f#2 e2@5 ~ g2 f#2 e2@5 ~ g2 f#2 e2@5 ~ c3 b2 a2]/7",
  B: "[~@5 g2 f#2 e2@9]/2", C: "c2@3 c2 c2@4", D: "g2@3 g2 g2@4", E: "d2@3 d2 d2@4", F: "b2@3 b2 b2@4",
  G: "a2@3 a2 a2@4", H: "e2@3 e2 e2@4", I: "e2@3 e2 e2@3 d2", J: "e2@3 b2 c3@4", K: "c2 d2@2 d2@2 d2 d2@2", L: "d3 ~@3",
  M: "d2!8", N: "e2/2", O: "a2", P: "e2", Q: "g2/2", R: "[d2!5 g2 f#2 e2@17]/3",
})).s("gm_fretless_bass").gain(0.5)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  A@8 B C D E F G H I ~@9 J@3 K J@2 L A@8 B C D E F G H I ~@9 J@3 K J@2 ~@12 M N O@2 P Q@2 J@3 R J@2 ~@2 J@3 K J@2 ~@20
>`.pickRestart({
  A: "[~@10 g2@2 f#2@2 e2@6 ~ [g3,b3,e4]@4 ~ g2@2 f#2@2 e2@6 ~ [g3,b3,e4]@4 ~ c3@2 b2@2 a2@6 ~ [c4,e4]@5 g2@2 f#2@2 e2@6 ~ [g3,b3,e4]@5 g2@2 f#2@2 e2@6 ~ [g3,b3,e4]@5 g2@2 f#2@2 e2@6 ~ [g3,b3,e4]@5 c3@2 b2@2 a2@6 ~ [a3,c4,e4]@5 g2@2 f#2@2 e2@2, ~@20 [e2,b2,e3]@5 ~@11 [e2,b2,e3]@5 ~@11 [a2,e3,a3]@6 ~@10 [e2,b2,e3]@6 ~@10 [e2,b2,e3]@6 ~@10 [e2,b2,e3]@6 ~@10 [a2,e3]@6 ~@6]/8", // Em C Em Am E5 A5 E5 A5
  B: "~@5 [c4,e4]@11, ~ [a2,e3,a3]@3", C: "~ [c4,e4]@3 [c3,e3,g3,c4,e4]@2 ~@4 [c3,e3,g3,c4,e4]@2 ~@4, [c3,e3,g3] ~@3",
  D: "~ [b3,d4,g4]@3 [g2,d3,g3,b3,d4,g4]@2 ~@4 [g2,d3,g3,b3,d4,g4]@2 ~@4, [g2,d3,g3] ~@3", // G G5
  E: "~ [d4,f#4]@3 [d3,g3,d4,f#4]@2 ~@4 [d3,g3,d4,f#4]@2 ~@4, [d3,a3] ~@3", // D Gmaj7 D5
  F: "~ [b3,d4,f#4]@3 [b2,f#3,b3,d4,f#4]@2 ~@4 [a2,f#3,b3,d4,f#4]@2 ~@4, [b2,f#3] ~@3", // Bm Bm7 B5
  G: "~ [c4,e4]@3 [a2,f#3,a3,c4,e4]@2 ~@4 [a2,f#3,a3,c4,e4]@2 ~@4, [a2,f#3,a3] ~@3", // C F#m7b5 D
  H: "~ [g3,b3,e4]@3 [e2,b2,e3,g3,b3,e4]@2 ~@4 [e2,b2,e3,g3,b3,e4]@2 ~@4, [e2,b2,e3] ~@3", // Em E5
  I: "~ [d4,f#4]@3 [d3,a3,d4,f#4]@2 ~@4 [d3,a3,d4,f#4]@2 ~@4, [d3,a3] ~@3", J: "e2@3 b2 c3@4",
  K: "[b2,e3,g3,c4,e4] [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]@5", L: "[d3,a3,d4,f#4] ~@3", M: "~ e4@7, [a2,f#3], ~ [a3,c4]@15",
  N: "~ [b3,d4]@7, [e2,b2], ~ [e3,g3]@15", O: "[~ [b3,d4]@15, [e2,b2], ~ [e3,g3]@31]/2", P: "~ [a3,c4,e4]@15, [a2,f#3]",
  Q: "[~ [d4,f#4]@15, [g2,d3], ~ [g3,b3]@31]/2", R: "[b3,e4,g4,c5,e5] [d4,a4,d5,f#5]@2 [d4,a4,d5,f#5]@5",
})).s("gm_electric_guitar_clean").gain(0.3)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  ~@16 A B C D E F G D H ~@23 A B C D E F G D H ~@6 I J K L M@2 N O P Q R@2 ~@13 I@2 ~@6 I S T U V W X@2 Y Z N AA@2 AB
  AC AD AE AF@3
>`.pickRestart({
  A: "b4@2 c5@2 b4 [b4,c5] a4@2 b4@8", B: "~@3 [d3,g3] [e3,g3]@2 [e3,g3]@2", C: "[d3,g3,b3]",
  D: "~@3 [e3,a3] [f#3,a3]@2 [a3,d4]@2", E: "[f#3,b3,d4]", F: "~@3 [d3,g3] [e3,g3]@2 [g3,c4]@2", G: "[g3,b3,e4]",
  H: "[b3,d4,g4]", I: "[d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~",
  J: "b3 d4 e4 d4 e4 g4@3", K: "e4@14 e4 ~", L: "g4 a4 a4@5 g4", M: "[~ a4@10 b4 a4 g4 b4 d5]/2", N: "e5@2 g5 e5@5",
  O: "~@2 e5@4 e5@2 e5@2 e5@2 e5 d5 b4@2", P: "e5 d5!2 c5 d5 d5@3", Q: "d5@2 b4@2 a4@2 g4@2 b4 a4 g4@2 a4@2 g4@2",
  R: "e5/2", S: "g3@2 g3!2 a3@2 b3!2 b3@2 b3!2 d4@2 d4 ~", T: "e4@7 ~", U: "e4@2 g4@5 ~@7 b4@2",
  V: "b4@7 ~ a4@3 ~ g4@2 e4@2", W: "b4@3 ~ b4@2 a4@2 a4@3 ~ b4@2 d5@2",
  X: "[e5@2 ~@2 e5@2 e5@13 ~ g5@2 e5@4 d5@2 b4@2 a4@2]/2", Y: "d5@2 b4 g4 b4@2 a4@2 d5@2 b4 [b4,d5] a4@2 d5 b4",
  Z: "a4 d5 b4 a4 e5 d5 b4 a4@2 [b4,e5] d5 b4 e5@2 g5@2", // E5
  AA: "[~@4 b4@2 a4@2 a4@3 g4 e4@8 ~@2 a4@2 b4 a4 g4@2 b4@2 d5@2]/2", AB: "b4@2 a4 a4@5", AC: "b4@2 e5 e5@5",
  AD: "b4@2 e5 e4@3 g4 a4", AE: "b4@2 b4@2 e5@2 d5@2 b4 a4 g4@2 a4@2 g4@2",
  AF: "[e5@2 d5@2 b4 a4 g4@2 a4@2 g4@2 f#4@2 e4@34]/3",
})).s("gm_overdriven_guitar").gain(0.62)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@9 A@7 B A@7 C A@6 ~@10 A@7 B A@7 C A@6 ~@2 A@6 ~@11 A@6 ~@2 A@6 ~@2 A@6 ~@2 A@6 ~@4
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@3 x!2", C: "~@4 x ~@5 x ~ x!4",
})).gain(0.36)

// drums · hihat
const hihat = s("hh").struct("<~@9 A@8 B A@7 ~@16 A@8 B A@7 ~@59>".pickRestart({
  A: "x!8", B: "~ x!7",
})).gain(0.36)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~ A@7 B ~@24 A@7 B ~@22 C@2 ~@6 C@2 D E@7 F ~@6 C@2 ~@6 C@2 ~@6 C@2 ~@6 C G ~@2
>`.pickRestart({
  A: "~@2 x ~@3 x!2", B: "~@4 x ~@9 x!2", C: "x!8", D: "~ x ~ x", E: "~@3 x", F: "~@10 x!3 ~ x ~", G: "x!5 ~@3",
})).gain(0.36)

// drums · mid tom
const mid_tom = s("mt").struct("<~@8 [~@10 x ~ x!2 ~@2] ~@31 [~@10 x ~ x!2 ~@2] ~@40 [~@8 x!2 ~@6] ~@34>").gain(0.36)

// drums · crash
const crash = s("cr").struct("<~@32 [~@5 x!3] ~@3 [~@5 x!3] ~@76 [~@5 x!3] ~@2>").gain(0.36)

// drums · high tom
const high_tom = s("ht").struct("<~@63 A@2 ~@6 A@2 ~ B@7 C ~@6 A@2 ~@6 A@2 ~@6 A@2 ~@6 A D ~@2>".pickRestart({
  A: "x!8", B: "~ x ~@2", C: "~@6 x!2 ~@8", D: "x!5 ~@3",
})).gain(0.36)

// drums · ride
const ride = s("rd").struct("<~@17 A ~@7 B@6 ~@18 A ~@7 B@6 ~@2 B@6 ~@11 B@6 ~@2 B@6 ~@2 B@6 ~@2 B@6 ~@4>".pickRestart({
  A: "x", B: "x!8",
})).gain(0.36)

stack(
  recorder, recorder_2, drawbar_organ, bass, electric_guitar_clean, overdriven_guitar, kick, snare, hihat, low_tom,
  mid_tom, crash, high_tom, ride
)

More by Jackson Browne