Strudelify

(Encore) Cracklin' Rose

Neil Diamond

KeyD majorTempo120 bpm
0:00/0:00
// (Encore) Cracklin' Rose — Neil Diamond
// 120 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 3/4 at bar 42, 4/4 at bar 45, 3/4 at bar 71, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: duplicate parts dropped: ch 3 "Brass" brass section (copy of ch 1 "Synth" lead 5 charang); ch 4 "Acc. Bass" acoustic bass (copy of ch 2 "Fretless Bass" fretless bass)
// note: Full arrangement: all 87 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.

// chords · lead 5 charang · "Synth"
const lead_5_charang = note(`<
  A B C D E F G@2 H@2 I J K@2 E F L@2 H@2 M@2 N@2 O@2 P@2 Q@2 R@2 S@2 T@2 U@4 V W@2 E F L@2 H@2 M@2 N@2 O@2 P@2 Q@2 R@2
  S@2 T@2 U@4 V W@2 E F L@2 H@2 M@2 N@2 X@2 Y Z AA
>`.pickRestart({
  A: "[d5,d6]@2 [a4,a5] [b4,b5]@2 [f#4,f#5] [a4,a5]@2", B: "[d4,d5] [f#4,f#5]@2 [b3,b4]@2 [b3,b4] [d4,d5]@2",
  C: "[e4,e5]", D: "[g3,b3,e4] [a3,c#4,f#4]@2 [b3,d4,g4]@2 [c#4,e4,a4]@3",
  E: "a4!4 [a3,d4,f#4,a4] a4@2 b4, [a3,d4,f#4]@4 ~ [a3,d4,f#4]@3", F: "a4@4 [d4,d5] a4 [b3,b4] f#4",
  G: "[a4!3 a4@2 [a3,d4,f#4,a4]!2 [d4,d5]@2 [a3,a4]@2 [g3,g4]@3 [d4,f#4]@2, [a3,d4,f#4] ~@3]/2", // D A G D
  H: "[[g3,b3]@4 [g3,b3,e4]!2 f#4 [g3,b3]@3 ~@2 [b3,b4] [a3,a4] [f#3,f#4] [a3,a4], e4 ~@7]/2", // G Em G B A F# A
  I: "[b3,b4]@2 ~ b3 [b3,e4] [b3,e4]@2 f#4", J: "[g3,b3]@2 ~@2 [b3,b4] [a3,a4] [f#3,f#4] d4",
  K: "[[e3,e4]!3 [g3,g4]@2 [g3,g4] g4 [a3,a4]@2 [a3,c#4,a4]@2 [b3,d4,b4]@2 [c#4,e4,c#5]@3, b3 ~, g3@3 ~@3 g3@2 ~@8]/2", // E G A Bm C#m
  L: "[a4!3 a4@2 [a3,d4,f#4,a4]!2 d4 d4 [a3,a4]@2 [g3,g4]@3 [a3,d4,f#4]@2, [a3,d4,f#4]@4 ~@3 d5@2 ~@7]/2", // D A G D
  M: "[[b3,b4]@3 b3 [b3,e4]!2 [b3,f#4] [g3,b3]@5 [b3,b4] [a3,a4] [f#3,f#4] d4]/2", // B E5 B5 G B A F#
  N: "[[e3,e4]!3 [g3,g4]@2 [g3,g4] g4 a3 a3 [a3,c#4,a4]!2 [b3,d4,b4]@2 [c#4,e4,c#5]@3, b3 ~, g3@3 ~@3 g3@2 ~@8, ~@7 a4@2 ~@7]/2", // E G A Bm C#m
  O: "[d5@3 b4 a4@4 ~@2 a3@2 d4@2 f#4@6 [g3,b3,e4]@4 [f#3,a3,d4]@4 ~@4, [d4,f#4] ~@3]/2", // Em D
  P: "[d4@3 a3 b3@2 g3@3 a3!2 d4@3 ~@2]/2",
  Q: "[[d4,f#4] [d4,f#4]@2 [a3,f#4] [b3,g4]@2 [g3,g4] a3 a3 [a3,a4]@2 [d4,f#4]@2 [a3,d4]@3, ~@7 e4@2 ~@7]/2", // D Em G A D D5
  R: "[[d4,f#4]@3 [a3,f#4] [b3,g4]@2 [g3,g4] [a3,e4]@2 [a3,e4]@2 [d4,f#4]@3 ~@2]/2", // D Em G A5 D
  S: "[e4!3 e4@2 e4!2 g4@2 g4@2 f#4 e4@2 b4 e4, [g3,b3]@7 b3]/2", // G
  T: "[g4!7 ~@2 b4@2 a4 g4@2 d5 g4, [g3,e4]@9 ~@7, b3@4 b3@2 ~ d4, ~@7 b4@2 ~@7]/2", // C
  U: "[b4!3 b4@2 b4!2 [d4,d5]@3 [d4,d5]@2 b3 [d4,d5]@2 e4 [e4,a4,c#5]@2 [e4,a4,c#5]@2 [e4,a4,c#5]@2 [e4,a4,c#5]@2 [e4,a4,c#5]@2 [e4,a4,c#5]@2 [e4,a4,c#5]@2 [e4,a4,c#5]@2, [b3,e4,g4]@6 ~ g4@9 ~@16, ~@7 b4@5 b4@4 ~@16, ~@15 e5@15 ~@2]/4", // D A Em
  V: "c#5@2 c#5 b4 a4@2 c#5@2", W: "[c#5 b4 a4@2 c#5@2 c#5 c#5@3 [c#4,e4,a4]@2 [d4,g4,b4]@2 [c#4,e4,a4]@2]/2",
  X: "[d5@3 b4 a4@4 ~@4 [a3,d4,f#4]@2 [b3,d4,g4]@4 [b3,d4,g4]@2 [a3,d4,f#4]@4 [g3,b3,e4]@4 [f#3,a3,d#4]@4, [d4,f#4] ~@3]/2", // D G D Em D#dim D
  Y: "e4 d#4 e4 f#4 g4 f#4 g4 a4", Z: "f#4!2 g4 a4 b4 c#5 d5 e5", AA: "[f#4,a4,d5]",
})).s("gm_lead_5_charang").gain(0.56).pan(1)

// bass · fretless bass
const bass = note(`<
  ~@2 A B C D C E F G F H I J C D C E F G F H I J K@2 L M L N L O P Q P Q R@2 S T U ~ V C D C E F G F H I J K@2 L M L N
  L O P Q P Q R@2 S T U ~ V C D C E F G F H I J C W X Y Z
>`.pickRestart({
  A: "~ [e3,g3,b3]@3", B: "e2 f#2@2 g2@2 a2@3", C: "d2@3 d2 d2@3 d2", D: "d2@3 d2 d2@2 a1@2", E: "d2@3 a1 d2@2 f#2@2",
  F: "g2@3 g2 g2@3 d2", G: "g2@3 g2 g2@2 d2@2", H: "g2@3 d2 g2@2 d2@2", I: "e2@3 e2 e2@3 e2", J: "a2@3 a2 a2@2 e2@2",
  K: "[d2@3 d2 d2@3 d2@2 d2 a2@2 d2@2 a1@2]/2", L: "[d2,a2]!2 ~ [d2,a2] [g2,d3]!2 ~ [g2,d3]",
  M: "[a2,e3]!2 ~ [a2,e3] [d2,a2]!2 ~ a2", N: "[a2,e3]!2 ~ [a2,e3] [d2,d3]@2 a2@2",
  O: "[a2,e3]!2 ~ [a2,e3] [d2,a2]!2 ~ d2", P: "e2!4", Q: "e2!3 b2", R: "[e2,e3]!4", S: "[a1,a2]!8",
  T: "[a1,a2] [b1,b2] [c#2,c#3] [d2,d3] [e2,e3] [f#2,f#3] [g2,g3] [g#2,g#3]", U: "[a2,a3] ~@3",
  V: "~ [a1,a2] [b1,b2] [c#2,c#3]", W: "d2@3 d2 d2@2 b2@2", X: "e3 d#3 e3 f#3 g3 f#3 g3 a3",
  Y: "f#3!2 g3 a3 b3 c#4 d4 e4", Z: "[d3,a3,d4]",
})).s("gm_fretless_bass").gain(0.36).pan(0.4)

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

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

// drums · clap
const clap = s("cp").struct("<[~ x ~ x]!40 ~@2 [~ x ~ x]!27 ~@2 [~ x ~ x]!15 x>").gain(0.4)

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

// drums · low tom
const low_tom = s("lt").struct(`<
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@5 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
>`.pickRestart({
  A: "x",
})).gain(0.4)

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

stack(lead_5_charang, bass, kick, rim, clap, snare, low_tom, mid_tom)

More by Neil Diamond