Strudelify

Casey Jones

Grateful Dead

KeyC majorTempo96 bpm
0:00/0:00
// Casey Jones — Grateful Dead
// 96 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 58 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(96/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 · piano · "Treble Clef"
const piano = note(`<
  A@2 B C D E B C D F G@2 H I J K L M N O P Q@2 R P Q@2 R S@2 T U V W P U X O P Q@2 R P Q@2 R P Y Q R P Y Q R@2 Z AA ~
>`.pickRestart({
  A: "[[e4,g4] d4 c4@2 [d4,g4]@2 ~@2 [d#4,g4] d4 c4@2 a3@2 f3@4 a3@2 c4@2 [e3,c4]@10]/2", B: "[c4,g4]@4 ~ [c4,g4] ~@2",
  C: "[a3,g4]@4 ~ [a#3,f4] ~ [a#3,f4]", D: "[a3,f4]@4 ~ [a#3,f4] ~ [a#3,f4]", E: "[a3,f4]@8 d#4 ~ c5@6, ~@9 e4@7",
  F: "[a3,f4] [c4,g4]", G: "[g4 a4 ~@2 [g4,c5]@2 ~@2 g4 e4 c4@2 a3@2 f3@4 a3@2 c4@2 ~@2 e3@8, c5 ~@3 d#4@2 ~@5 c4@5]/2",
  H: "[g3,c4,e4]@2 ~ [g3,c4,e4]@3 [g3,c4,e4]@2", I: "f#3 [f#3,d4]@2 b3 [f#3,d4]@2 b3@2", J: "a3 [f3,c4]@3 [f3,c4]@4",
  K: "g3!2 ~ g3!3 g3@2", L: "[g3,c4,e4] [g3,c4,e4]@2 [g3,c4,e4]", M: "[a3,d4,f#4] [a3,d4,f#4]@2 [a3,d4,f#4]",
  N: "[a3,c4,f4] [g3,b3,d4,e4]", O: "[a3,c4,e4]!2 [b3,f4] [b3,f4,g4]", P: "[c4,e4,g4]!4", Q: "[a3,c4,f4]!4",
  R: "[a3,c4,f4]!2 [c4,e4,g4]!2", // F C
  S: "[g4 a4 ~@2 [g4,c5]@2 ~@2 [d#4,g4] e4 c4@2 a3@2 f3@4 a3@2 c4@2 [e3,c4]@10, c5 ~@15]/2", // C5 D# C
  T: "[c4,e4,g4]@2 [c4,e4,g4]@2 ~ [c#4,f4,a4]@3", U: "[d4,f#4,a4]!4", V: "[c4,f4,a4]!4", W: "[b3,d4,g4]!4",
  X: "[a3,c4,f4] [g#3,b3,d4,e4]", Y: "[a#3,d4,f4]!2 [a3,c4,f4]!2", Z: "[a3,c#4,e4,g4] [a3,c4,d4,f#4]",
  AA: "[g3,b3,d4,f4] [g3,c4,e4]", // G7 C
})).s("gm_piano").gain(0.35)

// bass · piano · "Bass Clef"
const bass = note(`<
  A B C D@2 E F G H I J@2 K L M N O P Q R S T U V S T U V W@2 X Y Z AA AB AC AD R F T AE AF S T U V AG AH AI AF AJ AH AI
  AF AK AL AM ~
>`.pickRestart({
  A: "g2 a2 c3 g3 ~ e3 d3 g2", B: "f2 a2 c3 c3@2 c2 e2 g2", C: "c3@2 g2@2 c3@3 g2 c3@2 g2@2 c3@3 e2",
  D: "[f2@2 c2@2 f2@3 c2 f2@2 f2@2 c2@3 e2@3 c2@2 f2@3 c2 f2@2 f2@2 ~ c2 d2@2]/2", E: "f2!2 d2 c2 ~ c2 e2 g2",
  F: "c3@2 g2@2 c3@3 g2@2 c3@2 g2@2 c3@2 e2", G: "f2@2 c2@2 f2@3 c2@2 f2@2 f2@2 c2@2 d2",
  H: "d4@2 a3@2 d4@3 a3 d4@2 d4@2 ~@2 b3@2, ~@13 a3@3", I: "d4!2 b3 a3 ~ a3 c4 e4",
  J: "[c3@2 g2@2 c3@4 d#2 e2 g2@2 a2@2 f2@4 a2@2 c3@2 c3@4 c2@2 e2@2 g2@2]/2", K: "c3 g2 c3@2 c3 g2 c3@2",
  L: "d3 a2 d3@2 d2!2 ~ e2", M: "f2 c2 f2@2 f2!2 ~ d2", N: "g2 g1 ~ g2@2 g1 a1 b1",
  O: "c2@4 g2@2 a2 c3 ~ c3 c3@2 ~@2 c2@2", P: "d2@2 d2@2 ~@2 f#2 a2 ~ a2 b2@2 d3@2 e3@2", Q: "f3@2 e2@2 e3@2 e2 g#2",
  R: "a2!2 ~ g2@2 g2 a2 b2", S: "c3@2 g2@2 c3@3 g2 c3@2 g2@2 c3@2 e2@2", T: "f2@2 c2@2 f2@3 c2 f2@2 f2@2 c2@2 d2 ~",
  U: "f2@2 c2@2 f2@3 c2 f2@2 f2@2 c2 ~ [c2,d2] ~, e2 ~@15", V: "f2 e2 d2 c2!3 e2 g2, e2 ~@15",
  W: "[c3@2 g2@2 c3@4 d#2 e2 g2@2 a2@2 f2@6 a2@4 c3@4 c3@4]/2", X: "c3@3 g2 c3@3 g2 c3@2 a2@4 c#3@2",
  Y: "d3@2 a2@2 b2@2 d3@2 ~ a2 d3@2 d2@2 e2@2", Z: "f2@2 c2@2 d2@2 f2@2 ~ e2 f2@2 a2@2 c3@2",
  AA: "g2@2 g2@2 b2@2 d3@2 ~@2 g3@2 ~ g2 a2@2", AB: "c3@4 c3@3 g2 c3@2 a2@2 c3@2 c#3@2",
  AC: "d3@2 a2@2 b2@2 d3@2 ~@2 a2 d3 ~ a2 d3@2", AD: "f3@2 f2@2 e3@2 e2 g#2",
  AE: "f2@2 c2@2 f2@3 c2 f2@2 f2@2 c2 ~ c2 d2, e2 ~@15", AF: "f2 e2 d2 c2!3 e2 g2",
  AG: "c3@2 g2@2 c3@3 c3 ~ [g2,c3] ~ c3@2 c3@2 a2, ~@11 g2 ~@4", AH: "[a#1,a#2] c2 d2 e2 f2 c2 d2 e2",
  AI: "f2@2 c2@2 f2@3 c2 f2@2 f2@2 c2 ~ c2 d2", AJ: "c3@2 g2@2 c3@2 c3 ~ [g2,c3] ~ c3@2 c3@2 a2@2, ~@10 g2 ~@5",
  AK: "f2!2 d2 c2 c2@2 c3 a#2", AL: "a2 [d2,d3]", AM: "g2 c3",
})).s("gm_piano").gain(0.35)

stack(piano, bass)

More by Grateful Dead