Strudelify

Jubilee

Alabama

KeyC majorTempo120 bpm
0:00/0:00
// Jubilee — Alabama
// 120 bpm, 2/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 143 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/2)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · "Right Hand"
const piano = note(`<
  A B C D E F@2 G H@2 I@2 H@2 I@2 J@2 K@2 L M N@2 J@2 O@2 P Q R S J@2 K@2 L M T@2 U@2 V@2 W@2 X Y Z@2 AA@2 AB@2 AC@2 AD
  AE AF@2 AG@2 AH@2 Z@2 AA@2 AI AJ AK@2 A B C D E AL@2 J@2 K@2 L M N@2 J@2 O@2 P Q R S J@2 K@2 L M T@2 U@2 V@2 W@2 X Y
  Z@2 AA@2 AB@2 AC@2 AD AE AF@2 AG@2 AH@2 Z@2 AA@2 AI AJ AK@2 A B C D E F@2 G
>`.pickRestart({
  A: "[e4,e5]@2 [g4,c5]!2 [g4,c5]@2 [g4,c5]@2", B: "[e4,e5]@2 [g#4,d5]!2 [g#4,d5]@2 [d4,g#4,d5]@2",
  C: "[c4,c5] [f4,a4] [a3,a4] [c4,f4]", D: "[g3,g4] [c4,e4] [f#3,c4,f#4] [g3,c4,g4]",
  E: "[a3,f#4,a4] [c4,f#4,c5] [a3,f#4,a4] [c4,f#4,c5]", // D Cdim D Cdim
  F: "[[b3,f4,b4]@2 [b3,f4,g4]@4 [c4,e4,c5]@4 f#4 g4 a4 g4 f#4 g4]/2", G: "[e4,g4,c5]@7 ~ [c5,e5,g5,c6]@7 ~",
  H: "[[c4,e4,g4,c5]@2 [c4,e4,g4,c5]@4 [c4,e4,g4,c5]@9 ~]/2", I: "[[b3,d#4,g4]@2 [b3,d#4,g4]@4 [b3,d#4,g4]@9 ~]/2",
  J: "[[c4,e4,g4,c5] [c4,e4,g4,c5]@2 [c4,e4,g4,c5]@2 [c4,e4,g4] [c4,e4,a4] [c4,e4,g4]]/2", // C Am C
  K: "[[g#3,c4,f#4,g#4] [g#3,c4,f#4,g#4]@2 [g#3,c4,f#4,g#4]@2 [g#3,c4,f#4] [a#3,c4,f#4] [g#3,c4,f#4]]/2", // G#7 Cm7b5 G#7
  L: "~ [c4,e4,g4] ~ [c4,e4,g4]", M: "~ [b3,f4,g4] ~ [b3,f4,g4]", N: "[c4@2 [a#3,f4,g4]@4 [b3,f4,g4]@9 ~]/2",
  O: "[[a3,c4,e4,a4] [a3,c4,e4,a4]@2 [a3,c4,e4,a4]@2 [a3,c4,e4] [a3,c4,f4] [a3,c4,e4]]/2", // Am F Am
  P: "[f#3,c4,d4] [g3,c4,e4] [a3,c4,f#4] [f#3,c4,d4]", Q: "[g3,c4,e4] [a3,c4,f#4] [g3,c4,e4] [f#3,c4,d4]",
  R: "[g3,b3,g4]@7 ~ [b3,f4]@7 ~", S: "[b3,e4]@7 ~ [b3,d4]@7 ~",
  T: "[c4 [b3,e4,g4]@2 [a3,e4,g4]@2 [g3,c4,e4] [a3,c4,e4] [g3,c4,e4]]/2", // Em A7 C Am C
  U: "[[f#3,c4,f#4] [a3,c4,a4] [g3,c4,e4] [f#3,c4,f#4]@2 [a3,c4,f#4,a4]@2 [a3,c4,f#4]]/2", // F#dim Am C F#dim
  V: "[[b3,d4,g4] [b3,d4,b4] [b3,d4,f#4] [b3,d4,g4]@2 [d4,f4,b4]@2 [d4,f4,c5]]/2", // G Bm G Bdim Dm7
  W: "[[d4,f#4,d5]@4 [c#4,f#4,c#5]@4 [d4,f#4,d5]@4 [e4,f#4,c5]@8 [d4,f#4,b4]@4 [c4,f#4,a4]@7 ~]/2", // D F#5 D F#m7b5 Bm F#dim
  X: "[b3,g4]@2 g4!2 g4@2 g4!2", Y: "g4 [f#3,f#4] [g3,g4] [g#3,g#4]",
  Z: "[[a3,c#4,a4] [g3,c#4,g4] [g3,c#4,e4] [a3,c#4,a4]@2 [g3,c#4,g4]@2 [g3,c#4,e4]]/2", // A Gdim C#dim A Gdim C#dim
  AA: "[[a3,c#4,a4]@2 [g3,c#4,g4]@2 [g3,c#4,e4]@2 [a3,c#4,a4]@4 [a3,c#4,g4]!2 [a3,c#4,g4]@2 [a3,c#4,g4]@2]/2", // A Gdim C#dim A A7
  AB: "[[a3,c4,a4] [a3,c4,f#4] [f#3,c4,d4] [a3,c4,a4]@2 [a3,c4,f#4]@2 [f#3,c4,d4]]/2", // Am F#dim D7 Am F#dim D7
  AC: "[[a3,c4,a4]@2 [a3,c4,f#4]@2 [f#3,c4,d4]@2 [a3,c4,a4]@4 [a3,c4,f#4]!2 [a3,c4,f#4]@2 [a3,c4,f#4]@2]/2", // Am F#dim D7 Am F#dim
  AD: "~ [b3,f4,b4]@2 [a#3,f4,a#4]", AE: "[b3,f4,b4] [a3,f4,a4] [g3,f4,g4] [g#3,f4,g#4]",
  AF: "[[a3,f4,a4]@2 [g#3,f4,g#4]@2 [a3,f4,a4]@2 [b3,f4,b4]@9 ~]/2", // Dm C# Dm Bdim
  AG: "[[c4,e4,c5]@4 [b3,e4,b4]@4 [c4,e4,c5]@4 [a3,e4,a4]@8 [g3,e4,g4]@4 [g3,c4,e4]@7 ~]/2", // C E5 C A5 C
  AH: "[g3 a3 b3 c4 b3@4 c4@4 a3@8 g3@4 e3@7 ~]/2", AI: "[f3,a3,d4] c#4 [f3,a3,d4] e4",
  AJ: "[a3,d4,f4] [a3,e4] [a3,d4,f4] [a3,c#4,g4]", // Dm A5 Dm A7
  AK: "[[a3,d4,a4] [a3,c#4,g4,a4]@2 [a3,d4,f4,a4]@2 [b3,b4] [c4,f#4,c5] [d4,f#4,c5,d5]]/2", // D5 A7 Dm B Cdim D7
  AL: "[[b3,f4,b4]@2 [b3,f4,g4]@4 [c4,e4,c5]@4 g4!2 g4@2 g4!2]/2", // Bdim G7 C
})).s("gm_piano").gain(0.72)

// other · piano · "Left Hand"
const piano_2 = note(`<
  A B C D E F G H I J K@2 I J K@2 I@2 L@2 M N O P I@2 Q@2 R E S T I@2 L@2 M N U I R E V W X@2 Y Z AA@4 R@3 E AB AC@2 P
  I@2 AD@2 AA@5 AE AF AG A B C D E F AH I@2 L@2 M N O P I@2 Q@2 R E S T I@2 L@2 M N U I R E V W X@2 Y Z AA@4 R@3 E AB
  AC@2 P I@2 AD@2 AA@5 AE AF AG A B C D E F G H
>`.pickRestart({
  A: "[g2,g3]@7 ~ [c3,c4]@7 ~", B: "[b2,b3]@7 ~ [e2,e3]@7 ~", C: "[f2,f3]@7 ~ [f2,f3]@7 ~",
  D: "[c2,c3]@7 ~ [d#2,d#3]@4 [e2,e3]@4", E: "[d2,d3]@7 ~ [d2,d3]@7 ~", F: "[g2,g3]@7 ~ [g1,g2]@7 ~",
  G: "[c2,c3]@2 f#3 g3 a3 g3 f#3 g3", H: "[c3,c4]@7 ~ [c2,c3]@7 ~", I: "[c2,c3]@7 ~ [g1,g2]@7 ~",
  J: "[c2,c3] [d2,d3] [e2,e3] [f2,f3]", K: "[[g2,g3]@5 [g1,g2] [a1,a2] [b1,b2]]/2", L: "[g#1,g#2]@7 ~ d#2@7 ~",
  M: "g2 a2 b2 c3 d3@4 e3@4 f3@4", N: "g3 f3 e3 d3", O: "c3@7 ~ [c#2,c#3]@7 ~", P: "[d2,d3] [g1,g2] [a1,a2] [b1,b2]",
  Q: "[a1,a2]@7 ~ e2@7 ~", R: "[d2,d3]@7 ~ [a1,a2]@7 ~", S: "g2@7 ~ a3@7 ~", T: "g3@7 ~ f3@7 ~",
  U: "c3@7 ~ [g2,g3]@7 ~", V: "[g2,g3]@7 ~ [d2,d3]@7 ~", W: "[g2,g3]@7 ~ [g#2,g#3]@7 ~", X: "[a2,a3]@7 ~ [d2,d3]@7 ~",
  Y: "[g2,g3]@2 g3!2 g3@2 g3!2", Z: "g3@7 ~@9", AA: "[e2,e3]@7 ~ [a1,a2]@7 ~", AB: "[g2,g3]@7 ~ [c#2,c#3]@7 ~",
  AC: "[d2,d3]@7 ~ [g1,g2]@7 ~", AD: "[g2 a2 b2 c3 b2@4 c3@4 a2@8 g2@4 e2@7 ~]/2",
  AE: "[d2,d3] [c#2,c#3] [d2,d3] [e2,e3]", AF: "[f2,f3]@7 ~ [e2,e3]@7 ~", AG: "[d2,d3]@7 ~ [a2,a3]@4 [g#2,g#3]@4",
  AH: "[c2,c3]@2 g3!2 g3@2 g3!2", // C
})).s("gm_piano").gain(0.72)

stack(piano, piano_2)

More by Alabama