Strudelify

Don't Cry Daddy

Elvis Presley

KeyC majorTempo175 bpm
0:00/0:00
// Don't Cry Daddy — Elvis Presley
// 175 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 105 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(175/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.

// bass · fretless bass · "Bass"
const bass = note(`<
  ~ A B A B A C D ~ E D E@2 A@2 E D F C D ~ D E D@2 A@2 E@2 G C E ~ H C H B E ~ E@4 A H D E F B E ~ H C A C E ~ E D E@2
  H A E@2 G C E ~ A B A C D ~ F B E ~ F C E D H C A B E ~ F B D ~ G B D E A B A C E@2 I J
>`.pickRestart({
  A: "f2@2 ~ f2 f2@2 ~ f2 f2@2 ~ f2 f2@2 ~ f2", B: "g2@2 ~ g2 b2@2 ~ b2 d3@2 ~ d3 e3@2 ~ d3",
  C: "g2@2 ~ g2 g2@2 ~ g2 g2@2 ~ g2 g2@2 ~ g2", D: "c2@2 ~ c2 e2@2 ~ e2 g2@2 ~ g2 a2@2 ~ g2",
  E: "c2@2 ~ c2 c2@2 ~ c2 c2@2 ~ c2 c2@2 ~ c2", F: "d2@2 ~ d2 d2@2 ~ d2 d2@2 ~ d2 d2@2 ~ d2",
  G: "d2@2 ~ d2 f2@2 ~ f2 a2@2 ~ a2 b2@2 ~ a2", H: "f2@2 ~ f2 a2@2 ~ a2 c3@2 ~ c3 d3@2 ~ c3",
  I: "c2 ~@2 c2!2 ~@2 c2!2 ~@2 c2!2 ~@2 c2", J: "c2@5 ~@2 c2@7 ~@2",
})).s("gm_fretless_bass").gain(0.57).pan(0.1)

// chords · piano
const piano = note(`<
  ~@9 A B C A D E F@2 G H F ~ A C@2 B I E F C G J F ~ K L M L N ~ O P F@2 D E F C Q R O ~ S L S L T ~ O F@2 U D M A F Q
  H P ~ S L V L T ~ W R A ~ Q R C P V L S L N ~ W X P ~ Q Y C B Z L V L N@2 AA AB
>`.pickRestart({
  A: "[c3,g3] ~@2 [c3,g3] [c3,a3]@2 ~ [c3,a3] [c3,a#4,d#5]@2 ~ [c3,g3] [c3,a3]@2 ~ [c3,a3], ~@8 g3 ~@2 [g4,c5]@5", // C5 F Cm7 C5 F C5
  B: "[c3,g3]@2 ~ [c3,g3,e4,g4,c5] [c3,a3]@2 ~ [c3,a3] [e4,g4,c5] ~@2 [c3,g3] c3@2 ~ [c3,a3], ~@8 [c3,g3]@2 ~@2 a3 ~@3", // C5 C F C C5 F C5
  C: "[c3,g3] ~@2 [c3,g3] [c3,a3] ~@2 [c3,a3] [c3,g3] ~@2 [c3,g3] [c3,a3] ~@2 [c3,a3]", // C5 F C5 F
  D: "[a4,c5,f5] ~@6 [a4,c5,f5]@3 ~@2 e6 [f5,g5,a5,a#5,c6,d6] [d5,e5] ~, ~@11 f6@2 ~@3", // F Dm7 Dsus2
  E: "[f3,c4]@2 ~ [f3,c4,a4,c5,f5] [f3,d4]@2 ~ [f3,d4] [a4,c5,f5] ~@2 [f3,c4] f3@2 ~ [f3,d4], ~@8 [f3,c4]@2 ~@2 d4 ~@3", // F5 F Dm F F5 Dm F5
  F: "[c3,g3] ~@2 [c3,g3] [c3,g3,a3] ~@2 [c3,a3] [c3,g3] ~@2 [c3,g3] [c3,a3] ~@2 [c3,a3], [e4,g4,c5]", // C5 Am7 F C5 F C
  G: "[d3,a3] ~@2 [d3,a3] [d3,b3] ~@2 [d3,b3] [d3,a3] ~@2 [d3,a3] [d3,b3] ~@2 [d3,b3]", // D5 G D5 G
  H: "[g2,d3] ~@2 [g2,d3] [g2,e3] ~@2 [g2,e3] [g2,d3] ~@2 [g2,d3] [g2,e3] ~@2 [g2,e3]", // G5 C G5 C
  I: "[f3,c4] ~@2 [f3,c4] [f3,d4] ~@2 [f3,d4] [f3,c4] ~@2 [f3,c4] [f3,d4] ~@2 [f3,d4]", // F5 Dm F5 Dm
  J: "[g2,d3] ~@2 [g2,d3] [g2,e3]@2 ~ [g2,e3] [g2,f4,a#4]@2 ~ [g2,d3] [g2,e3]@2 ~ [g2,e3], ~@8 d3 ~@2 [d4,g4]@5", // G5 C Gm7 G5 C G5
  K: "[f3,c4]@2 ~ [f3,c4] [f3,d4,c5,f5]@2 ~ [f3,d4,c5,f5] [f3,c4,d#5]@2 ~ [f3,c4,d#5,g#5] [f3,d4]@2 ~ [f3,d4,a#4,d#5], ~@8 g#5 ~@3 [c5,f5] ~@3", // F5 Dm7 F7 Fm7 Dm A# F5
  L: "[g2,d3]@2 ~ [g2,d3,b4,d5,g5] [g2,e3]@2 ~ [g2,e3] [b4,d5,g5] ~@2 [g2,d3] [g2,e3]@2 ~ [g2,e3], ~@4 [g2,d3] ~@3", // G5 G C G G5 C G5
  M: "[f3,c4] ~@2 [f3,c4] [f3,d4]@2 ~ [f3,d4] [f3,d#5,g#5]@2 ~ [f3,c4] [f3,d4]@2 ~ [f3,d4], ~@8 c4 ~@2 [c5,f5]@5", // F5 Dm Fm7 F5 Dm F5
  N: "[c3,g3]@2 ~ [c3,g3,e5,g5,c6] [c3,a3]@2 ~ [c3,a3] [e5,g5,c6] ~@2 [c3,g3] [c3,a3]@2 ~ [c3,a3], ~@4 [c3,g3] ~@3", // C5 C F C C5 F C5
  O: "[e4,g4,c5] ~@6 [e4,g4,c5]@3 ~@2 b5 [c5,d5,e5,f5,g5,a5] [a4,b4] ~, ~@11 c6@2 ~@3", // C Dm7 Asus2
  P: "[c3,g3] ~@2 [c3,g3] c3@2 ~ [c3,a3] [c3,a#4,d#5]@2 ~ [c3,g3] [c3,a3]@2 ~ [c3,a3], ~@4 a3 ~@3 g3 ~@2 [g4,c5]@5", // C5 F Cm7 C5 F C5
  Q: "[d3,a3] ~@2 [d3,a3] [d3,a3,b3] ~@2 [d3,b3] [d3,a3] ~@2 [d3,a3] [d3,b3] ~@2 [d3,b3], [f4,a4,d5]", // D5 Bm7 G D5 G Dm
  R: "[g2,d3] ~@2 [g2,d3] [g2,d3,e3] ~@2 [g2,e3] [g2,d3] ~@2 [g2,d3] [g2,e3] ~@2 [g2,e3], [b3,d4,g4]", // G5 Em7 C G5 C G
  S: "[f3,c4]@2 ~ [f3,c4,f5,f6] [g#5,e6,f6] [a5,f6] ~ [f3,d4,a#5,f6] [b5,f6] [c6,f6] ~ [f3,c4,b5,f6] [a#5,f6,g6] [g#5,f6] ~ [f3,d4,a5,f6], ~@2 [f3,d4] ~ [f3,c4] ~ [f3,d4] ~", // F5 C# Dm A# Bdim F5 F Gm7 …
  T: "[c3,g3]@2 ~ [c3,g3] [c3,a3,g4,c5]@2 ~ [c3,a3,g4,c5] [c3,g3,a#4]@2 ~ [c3,g3,a#4,d#5] [c3,a3]@2 ~ [c3,a3,f4,a#4], ~@8 d#5 ~@3 [g4,c5] ~@3", // C5 Am7 C7 Cm7 F C5
  U: "[c5,e5]!2 ~ [c3,g3,c5,e5] [a#4,d5]!2 ~ [c3,a3,a#4,d5] [g3,a4,c5] [a4,c5] ~ [c3,g3,a4,c5] [g4,a#4]!2 ~ [c3,a3,g4,a#4], [c3,g3] ~ [c3,a3] ~ c3 ~ [c3,a3] ~", // C A# D7 Am7 Am Am7 Gm C7 …
  V: "[f3,c4]@2 ~ [f3,c4,a5,c6,f6] [f3,d4]@2 ~ [f3,d4] [a5,c6,f6] ~@2 [f3,c4] [f3,d4]@2 ~ [f3,d4], ~@4 [f3,c4] ~@3", // F5 F Dm F F5 Dm F5
  W: "[f4,a4,d5] ~@6 [f4,a4,d5]@3 ~@2 c#6 [d5,e5,f5,g5,a5,b5] [b4,c#5] ~, ~@11 d6@2 ~@3", // Dm Em7 Bsus2
  X: "[g4,b4]!2 ~ [g2,d3,g4,b4] [f4,a4]!2 ~ [g2,e3,f4,a4] [d3,e4,g4] [e4,g4] ~ [g2,d3,e4,g4] [d4,f4]!2 ~ [g2,e3,d4,f4], [g2,d3] ~ [g2,e3] ~ g2 ~ [g2,e3] ~", // G F Fmaj7 Em7 Em Em7 Dm G7 …
  Y: "[g2,d3]@2 ~ [g2,d3,b3,d4,g4] [g2,e3]@2 ~ [g2,e3] [b3,d4,g4] ~@2 [g2,d3] g2@2 ~ [g2,e3], ~@8 [g2,d3]@2 ~@2 e3 ~@3", // G5 G C G G5 C G5
  Z: "[f3,c4] ~@2 [f3,c4] f3@2 ~ [f3,d4] [f3,d#5,g#5]@2 ~ [f3,c4] [f3,d4]@2 ~ [f3,d4], ~@4 d4 ~@3 c4 ~@2 [c5,f5]@5", // F5 Dm Fm7 F5 Dm F5
  AA: "[e4,g4,c5] ~@2 [e4,g4,c5] [f4,a4,c5] ~@2 [f4,a4,c5] [e4,g4,c5] ~@2 [e4,g4,c5] [f4,a4,c5] ~@2 [f4,a4,c5]", // C F C F
  AB: "[e4,g4,c5]@4 ~@3 [e5,g5,c6]@8 ~", // C
})).s("gm_piano").gain(0.52).pan(1)

// drums · kick
const kick = s("bd").struct("<[x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x]!104 [x ~@3 x ~@2 x ~@8]>").gain(0.57)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<A ~@7 A ~@15 A ~@7 A ~@9 A ~@3 A ~@13 A ~@3 A ~@23 A ~@3 A ~@3 A ~@8>".pickRestart({
  A: "~@13 x ~ x",
})).gain(0.43)

// drums · clap
const clap = s("cp").struct(`<
  A ~@6 A@2 ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A@7 ~@3 A ~@3 A ~@3 A@7 ~@3 A ~@3 A ~@3 A@7 ~@3 A ~@3 A@7 ~@3 A ~@3 A@8 B
>`.pickRestart({
  A: "~ x ~ x", B: "x",
})).gain(0.57)

// drums · low tom
const low_tom = s("lt").struct("<~@104 [~@7 x ~@8]>").gain(0.64)

// drums · hihat
const hihat = s("hh").struct(`<
  A B@6 A@2 B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A@7 B@3 A B@3 A B@3 A@7 B@3 A B@3 A B@3 A@7 B@3 A B@3 A@7 B@3 A B@3 A@8 ~
>`.pickRestart({
  A: "x!2 ~ x!3 ~ x!3 ~ x!3 ~ x", B: "x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x",
})).gain(0.5)

// drums · mid tom
const mid_tom = s("mt").struct("<A ~@7 A ~@15 A ~@7 A ~@9 A ~@3 A ~@13 A ~@3 A ~@23 A ~@3 A ~@3 A ~@7 B>".pickRestart({
  A: "~@11 x!3 ~ x", B: "~@4 x!2 ~@10",
})).gain(0.5)

// drums · high tom
const high_tom = s("ht").struct("<~@104 [~ x ~ x ~@12]>").gain(0.57)

// drums · ride
const ride = s("rd").struct(`<
  ~ A ~ A ~@5 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@5 A ~@3 A ~@3 A ~@3 A ~@5 A ~@3 A ~@3 A ~@3 A ~@5 A ~@3 A ~@3 A
  ~@5 A ~@3 A ~@3 A ~@6 B
>`.pickRestart({
  A: "x", B: "x ~@6 x ~@8",
})).gain(0.5)

stack(bass, piano, kick, snare, snare_soft, clap, low_tom, hihat, mid_tom, high_tom, ride)

More by Elvis Presley