Strudelify

Then Again

Alabama

KeyA majorTempo120 bpm
0:00/0:00
// Then Again — Alabama
// 120 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 109 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. 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 · piano
const piano = note("<A@6 B@3 C D@5 E@5 F@8 G@7 H@8 I@2 J@4 K@6 L@8 M@7 N@3 O@6 P@6 Q@4 R@5 S@8 T@7>".pickRestart({
  A: "[~@33 e3@5 ~@14 c#4@5 ~@131 b3@4, ~@23 a1@10 a3@23 ~ d4@10 a3@5 [f4,a4]@14 a3@6 d4@12 ~@11 c#4@15 c#4@5 d4@9 ~@2 b3@4 a4@34 a3@8, ~@28 a2@14 a2@15 ~@5 a2@39 a1@38 ~@8 d4@45, ~@33 c#4@15 b3@9 b3@46 ~@8 a3@28 ~@5 f3@4 f4@44, ~@38 e3@19 ~@5 f3@10 d4@5 a3@5 f3@21 ~@3 e3@14 e3@19 ~ a2@52]/6", // F
  B: "[~@6 c#4@4 c#4@5 ~@58 c#4@3 ~@6 d4@5 d4@5 [b3,d4]@4, ~ a1@6 ~@8 c#4@53 b3@9 c#4@19, ~@2 b3@61 e3@14 ~ a2@18, ~@16 a3@14 a3@5 e3@4 a1@37 a1@5 ~@15, ~@20 a2@15 a2@14 a3@28 ~@19]/3", // Bm
  C: "~@29 [f#3,b3]@3, a2@7 a2@9, ~@5 f#3@24 ~@3, ~@10 b3@19 ~@3, ~@19 a1@13", // B5
  D: "[~ a2@5 ~@13 [a2,c#4]@3 ~@7 d4@4 d4@4 ~@57 a2@4 ~@5 e4@5 e4@4 ~@28 a2@10 a2@5 a2@4 a3, ~@6 a2@13 ~@3 b1@30 f#3@5 b3@22 f#3@15 d4@42 a1@24, ~@10 f#3@12 ~@2 b2@14 d4@51 [b2,b3]@9 ~@19 a2@5 g#3@38, ~@15 b3@8 ~ c#4@42 a3@4 f#3@5 b2@9 a3@14 ~ [a3,c#4]@13 [a3,c#4,e4]@48, ~@28 f#3@5 ~@4 f#3@5 b2@19 b1@37 a1@33 f#3@29]/5", // A B A
  E: "[~@4 [a2,d4]@5 [a2,e4]@3 ~@6 f#4@4 f#4@4 ~ a3@9 ~@45 e4@3 ~@6 f#4@4 f#4@4 ~@57 f#4@3 ~ f#4, ~@13 [d2,e4]@28 d4@18 d3@26 ~@14 f#4@42 f#3@10 [a3,e4]@7 b2@2, ~@22 a2@5 d4@9 a3@9 c#4@18 a3@4 f#3@5 a3@5 d4@8 e4@52 b2@9 b3@13 ~, ~@26 d3@19 a2@9 a2@30 ~@5 b2@9 b2 d4@14 b3@4 b2@5 [b1,c#4]@37 ~, ~@27 f#4@23 d2@35 b1@14 b3@5 f#3@32 d4@23 ~]/5", // D5 A5 Dsus2 A5 Bsus2
  F: "[~@4 g4@4 ~ [b3,e4,g4]@4 ~@65 g4@5 g4@4 ~@39 e3@5 ~@15 a2@4 ~@28 g4@4 c#4@3 ~@30 b2@4 ~@14 b2@5 ~@13 b2@5, e2@27 e3@19 d4@5 e3@4 g3@5 b3@5 d4@42 g3@25 ~@4 g3@14 [d4,f#4]@14 a3@5 [f#3,d4,f#4]@13 a3@14 a3@6 c#3@17 f#4@19 f#4@18, ~@13 [b2,g4]@19 b2@9 b2@28 g3@18 c#4@5 g3@10 c#4@19 c#4@10 ~@9 c#4@10 d2@23 a3@9 a4@24 f#3@4 b4@9 [b3,d4,a4]@22 ~ b1@14, ~@13 b3@14 e4@47 [a2,f#4]@38 a2@20 ~@9 [c#3,e4]@10 ~@8 d3@23 c#3@10 c#3@9 c#4@18 b2@10 g#4@12 ~@6 e4@9, ~@13 e4@5 e3@5 f#4@14 e2@38 ~@12 [e3,g4]@26 ~@3 a3@15 [b2,b3,d4]@20 ~@4 a2@29 ~@3 c#2@33 ~@3 b1@15 b2@13 ~@5]/8", // Em D Em Bm7 D C#m Em Bm
  G: "[b2@2 ~@36 a2@4 ~ f#4@4 ~@23 b4@5 ~@36 g2@3 ~ c3 g3@5 ~@24 e4@5 ~@69 e3@4 e4, [c#4,e4]@24 d4@17 ~@2 d4 ~@8 d3@5 a3@4 f#3@4 a3@10 [c#3,a4]@39 ~@7 g3@37 e2@24 d4@28 b3@4 d4@10, ~@5 a1@19 ~ [b1,b2]@17 ~@6 a2@30 ~@11 c#4@13 a3@5 c#4@7 ~@2 [c4,g4]@43 ~@4 b2@9 g#3@33 g#3@19, ~@9 a2@10 a2@15 [c#2,c#3,c#4,e4]@8 ~ d2@34 ~@3 c#2@34 ~@2 c2 ~@13 e4@10 d4@19 ~@9 e3@22 e2@34, ~@15 a3@10 ~@5 a3@11 ~@2 a3@2 ~@2 [a3,d4,f#4]@9 [d4,f#4]@21 ~@8 a3@9 e4@20 ~@11 f#4@25 e4@36 b2@10 b2@28]/7", // C#m F#m B C5 C#m D
  H: "[~@13 d4@4 ~@14 b2@4 ~@37 c#3@4 ~ e4@4 ~@23 g#3@5 c#4@4 ~@32 a2@5 d2@5 ~@4 a4@5 ~@51 e3@4 ~@33 c#4@4, ~@4 d2@19 a3@12 g#4@19 b3@4 g#3@5 b3@5 e4@8 g#4@2 ~@3 e4@9 a4@5 g#3@5 g#4@12 ~@11 c#4@13 a3@4 c#4 [e2,e3]@10 ~@4 b4@26 e2@19 d4@5 a4@5 g#4@9 a4@37, ~@4 [d4,f#4]@9 f#4@14 b4@8 e4@4 ~ e2@37 [c#2,c#5]@35 ~ [f#2,f#3]@37 d3@14 d4@4 d3@16 e3@12 b4@23 e3@10 e3@9 c#4@10 b3@8, ~@8 a2@28 b3@13 e3@28 ~@9 b4@23 a4@41 d4@14 [g#4,a4]@8 d4@5 a4@8 ~ f#4@36 ~@2 a2@32, ~@18 [f#3,d4,a4]@18 b2@9 b2@32 ~@4 c#3@9 c#3@19 a3@9 a3@9 f#4@23 [f#4,c#5]@35 d4@2 c#5@35 ~@12 a3@22]/8", // E D C# F# Amaj7 D F#5
  I: "[~@6 d4@7 ~@22 f3@10 ~@13 c#4@6, ~ a2@43 ~ a2@19, ~@6 f3@9 f4@30 ~@9 a3@10, ~@13 b3@3 a4@30 ~@18, ~@14 d4@31 ~@5 e3@14]/2",
  J: "[~@9 c#4@9 ~ b3@5 b3@11 ~@28 b4@4 ~@5 c#5@4 c#5@5 ~@4 e4@10 ~@25 e4@8, a3@19 f3@53 e3@38 e3@18, ~@19 d4@21 ~@18 a4@18 a3@39 a3@13, ~@67 b4@61, ~@67 a2@14 [c#4,c#5]@14 ~@11 a2@22]/4", // C#
  K: "[~@11 c#5@4 ~@5 d5@4 ~ b4@4 ~@57 f#3@5 ~@5 d5@3 ~ d5@4 ~@56 e3@4 ~@5 e5@4 [c#5,e5]@5 ~@9 e4@5, ~ e4@13 ~ c#5@39 a2@23 f#4@5 b4@9 ~@4 f#3@4 a3@19 f#4@5 b4@9 f#3@5 a4@9 g#4@5 e2@5 f#4@8 a2@18 c#4@10, ~@6 c#4@8 ~ a2@14 [f#3,f#4]@5 b3@5 e4@52 f#4@13 d5@60 c#5@9 ~@5 [c#5,e5]@14, ~@24 [f#4,d5]@5 d5@62 c#5@22 d4@14 [b2,a#4]@38 ~@4 e3@23, ~@29 b4@34 f#3@9 d4@19 b2@13 [f#3,f#4,b4]@5 b3@56 ~@8 a3@19]/6", // C#m F# C#m D Bmaj7 B5
  L: "[~@4 c#5@4 ~@32 e5@4 ~@6 f#5@4 f#5@4 ~@50 f#3@5 ~ f#3@3 ~@5 g5@4 [b4,g5]@4 ~@56 b2@2 ~@6 [b4,g5]@4 ~ b4@4 ~@49 b3@4, a4@8 g#4@9 g#4@5 f#4@5 [c#4,a4]@4 e4@5 d5@8 ~ e5@13 f#5@23 b4@9 f#3@4 a3@5 c#4@5 a4@4 e5@5 f#5@4 f#5@9 a3@14 d4@36 d5@4 a3 e5@4 f#5@3 ~@15 d5@9 b3@5 e4@4 e5@9 g4@4 b4@5 [d4,d5]@4 g4@5 b4@8, ~@4 e3@40 ~@14 c#5@59 d5@14 g5@58 ~@14 b4@5 g3@48, ~@9 a2@35 d2@14 d3@5 a3@4 c#4@5 a4@4 f#4@41 ~@4 b4 f#3@17 f#5 b4@4 f#4@45 ~ [e2,f#5]@31 [g4,b4]@4 e4@31, ~@13 e4@5 a3@26 ~@5 d5@36 d3@32 b2@14 b4@4 b3@9 e5@5 d5@4 b4@4 b2@5 f#3@5 a3@5 b4@17 ~@9 [d5,g5]@5 [e3,g5]@53]/8", // Em F#m D Esus2 G G5 Em
  M: "[~ f#5@4 ~@5 g5@4 [g4,c#5,g5]@4 ~@51 c#3@9 ~@19 a4@4 a4@4 a4@4 ~ c#3@4 ~@5 a4@5 ~@17 b2@5 f#5@4 ~@28 e3@4 c#5@4 ~@6 e4@4 ~ a3@5 a3@4 ~@14 [a2,b2]@3 ~, e3@4 ~ f#5@28 g4@4 e3@5 a2@5 g4@4 c#5@9 b2@5 a3@13 d2@32 [a4,c#5,e5,a5]@4 c#3 c#2@31 [b4,d5]@9 [d5,g#5]@9 [g#4,b4]@18 a4@14 ~@10 [g#4,b4,d5]@17 ~, ~@5 a2@14 g5@59 f#5@14 f#3@9 f#3@23 [a4,c#5,e5]@4 c#3@5 e3@14 ~@3 b1@14 f#5@3 ~@6 e5@9 [e3,e5]@25 ~@8 [c#3,c#5,e5]@8 ~, ~@14 a3@14 e4@51 d5@9 d5@8 ~@9 g5@32 b5 b4@8 a5@19 c3@17 e4@10 ~@4 [e4,a4,c#5]@11 ~@17, ~@18 c#5 g4@4 c#4@56 ~@4 a4@13 [a3,d5,f#5]@50 b2@9 b4@5 b2@8 ~ e2@15 ~@2 a2@20 b2@14 ~@4]/7", // Gdim Asus2 A Bm Ddim G#m G#dim A …
  N: "[[a4,d5,f#5]@5 a4@4 a4@4 ~@15 a3@3 ~@37 f#5@4 ~ g4@4 ~@5 c5@4 ~@5 c2@4 d5, d2@31 c#5@10 a4@8 e5@5 a4@5 c#5@4 e5@9 g5@24, ~@5 [d5,f#5]@8 [f#3,a4,d5,f#5]@18 [f#3,a5]@41 c5@10 f#5@14, ~@18 a3@9 ~@4 e5@14 c#5@5 d#5@22 e5@3 ~@2 g4@9 [g4,c5,e5]@10, ~@23 [g5,b5]@8 a4@5 c#3@38 ~@22]/3", // D F#m C G
  O: "[~@4 [c3,e5]@4 g#4@5 ~@54 e4@4 ~@10 b2@3 ~ d4@3 ~@6 d4@4 ~ d3@4 ~@9 d3@4 g#4@4 ~@37 e4@4 ~@28 a3@3, ~@8 e5@46 b2@4 e3@5 b3@8 [e4,g#4]@4 b3 e3@4 e4@4 ~ f#4@9 f#4@9 d3@4 b4@9 b3@9 b3@10 b3@4 e3@9 e4@4 c#3@7 ~@2 e4@9 c#3@5 c#2@4 g#4@5 c#3@8, ~@8 b2@28 b3@8 g#4@5 e2@35 ~ d2@31 ~@5 e2@35 c#5@36, ~@13 e2@18 g#3@53 ~@6 a2@26 b2@40 g#4@14 a4@22, ~@17 g#4@10 e3@13 b4@44 ~@14 [d4,a4]@18 e4@14 e4@13 b3@13 c#2@10 b4@26]/6", // C E D5
  P: "[~@33 [e2,e3]@5 d3@5 ~@4 a4@5 ~@50 e3@4 ~@42 a3@4 ~@28 g2@3 ~ c4@5 c4@3, ~ a4@37 ~@5 b4@30 f#4@33 a4@33 c#4@12 ~ a3@5 c#4@9 [f#3,f#4]@5 e4@4 c#4@8 ~@9, ~ [f#2,f#3]@15 a3@4 [f#2,f#3]@19 ~@13 d4@4 d3@5 d4@5 a4@7 e3@10 b4@24 e3@17 e4@20 a2@39 ~ [c2,c3,g4,a4]@8, ~ a3@10 c#4@18 c#4@9 [d2,f#4,c#5]@35 d4@6 d4@9 e3@5 [d4,a4]@4 g#4@12 ~@2 a2@23 a3@13 f#3@15 a3@21 ~@9, ~@6 f#4@18 f#4@14 d4@14 a4@13 d3@5 e2@4 c#5@36 ~@6 a3@14 e3@18 d4@35 ~ e4@2 ~@6]/6", // E F# Am7 Dmaj7 D5
  Q: "[~@2 c4@4 ~ c4@3 ~ a4@4 [c4,e4,g4,a4]@4 ~@5 c3@4 ~@27 b2@4 ~@32 [a2,a3]@5 ~@14 a2@5 [a2,a3]@4 [a2,a3]@5 [a2,a3]@4, ~@2 [e4,g4]@8 [c4,e4,g4]@4 ~@5 [c4,e4,g4,a4]@9 d4@14 d4@17 c#4@10 a3@4 c#4@23 d4@32, ~@6 c3@5 c2@17 b2@9 b2@5 a4@4 b2@4 c#4 a4@8 a4@47 a3@4 c#4@9 [c#4,e4]@9, ~@11 c3@13 ~@4 [b1,f#4,c5]@31 a3@5 a1@14 a2@5 a3@4 e4@9 [a2,a3]@4 a1@28, ~@32 b4@28 a2@13 f#4@55]/4", // Am7 A Em C Am7 C#m B A
  R: "[~@5 g2@3 ~@2 c4@5 ~@9 c3@4 c4@4 ~ a4@4 c3@5 c3@4 ~@14 b2@5 ~@9 b2@5 ~@73 g#3@8, [a3,c#4]@8 ~ e4@2 ~@4 c4@13 c3@9 ~@10 b2@13 ~@5 b2@9 ~@5 e3@14 e3@8 ~@6 e4@8 e3@5 b3@5 b2@35, ~ [a2,e4]@8 ~ a4@23 ~@13 f#4@2 ~@8 b4@23 [g#4,b4]@18 [b4,e5]@63, ~@10 [c2,g4]@18 [c2,e4,g4]@18 ~ [b1,c5]@34 ~@3 e2@36 [e2,g#4]@40, ~@10 c3@10 e4@8 ~@9 [c4,a4]@9 d4@5 d4@9 [d4,f#4,a4]@10 [d4,f#4,a4]@11 ~@7 e5@9 g#4@14 g#4@9 e4@10 e3@30]/5", // A A5 G#m E5 C5 C Cmaj7 E …
  S: "[~@2 a2@3 d4@4 ~@29 b4@4 ~@28 g#3@9 ~@16 a4@2 ~@51 e3@5 ~@10 a4@4 ~@32 b4@9 ~@10 e3@4 ~@30 b3@4, ~@5 d2@37 [e2,g#4]@24 b3@13 c#5@18 b4 a4@4 g#4@5 g#3@5 a4@22 e3@5 a3@5 c#4@9 [d4,f#4]@27 d3@9 e2@33 e3@5 a2@6 a3@4 [c#4,e4]@19, ~@5 f#4@9 [d3,f#4]@9 f#3@5 d4@5 a3@11 ~@8 e3@27 e4@5 e4@32 ~@5 f#4@32 ~@5 b4@26 d4@7 ~@19 b4@46, ~@10 a2@34 ~@3 b2@32 g#4@2 ~@7 g#3 b4@4 c#4@23 ~@9 c#4@5 a3@4 e2@19 [d2,c#5]@32 f#4@28 a4@9 a4@34, ~@19 a4@25 ~@12 e4@5 f#3@19 c#3@36 [f#2,f#3]@37 d3@14 a4@4 d3@5 a4@10 c#5@22 c#5@48]/8", // E D C#m D Dmaj7 F#
  T: "[~@9 [b3,d4]@10 ~@5 f#3@4 ~@15 e3@5 ~@28 c#4@5 d4@5 ~@15 f3@11 ~@7 a3@22 b3@2 [c#4,e4]@64 ~@17, c#4@9 f#3@15 ~@4 f#3@5 d5@4 f#3@6 [c#4,e4]@19 e4@19 b3@10 b3@15 ~@35 [a0,a3]@64 ~@19, ~@5 a2@41 ~@2 a2@24 b3@9 a2@61 ~@82, ~@19 [b3,d4,a4]@27 ~@7 e3@9 c#4@5 e3@16 ~@3 f3@15 ~@11 f3@30 ~@82, ~@32 [b4,a5]@14 ~@12 a3@25 ~@13 [d4,a4]@46 ~@82]/7", // Bm C#m A Bm7 B7 D5
})).s("gm_piano").gain(0.26)

// chords · piano · soft notes
const piano_soft = note(`<
  ~@3 A B C D@3 ~@2 E ~ F@3 ~@2 G@2 H I ~ J ~@9 K@2 ~@5 L M N@3 O@5 P@2 ~@6 Q R@2 ~@4 S ~@7 T@2 ~@4 U@2 ~ V@2 W ~@5 X ~
  Y Z@2 ~@5 AA@3 AB ~ AC@4
>`.pickRestart({
  A: "e2@7 ~@25", B: "~@7 b3@10 ~@15", C: "~ f3@15", D: "[~@17 e3@8 e3@10 ~@9 e3@10 ~@5 a2@18 ~@19, ~@18 e3@3 ~@11]/3",
  E: "~ f#3@4 ~@10 b3@10 ~@7", F: "[~@31 a2@5 a2@8 ~@6 e3@25 ~@21]/3",
  G: "[~@12 b3@5 ~@19 b3@14 ~@14, ~@31 b2@10 ~@23]/2", H: "~@4 b3@5 ~@23", I: "b3@7 b3@7 ~@2", J: "~ a3@19 ~@12",
  K: "[~@41 e3@18 ~@5, ~@17 b3@32 ~@15]/2", L: "~@17 g#4@7 ~@8", M: "d4@8 ~@5 e3@10 ~@9",
  N: "[~@19 e3@17 ~@36 e3@8 ~@16, ~@53 f3@14 ~@29, ~@62 b3@15 ~@19]/3",
  O: "[~@53 e3@19 ~@24 e4@24 ~@4 c#4@10 ~@26, e3@18 ~@17 b3@12 b3@64 ~@49, ~@5 b3@14 ~@10 a4@28 ~@33 c#4@34 ~@36, ~@14 a2@53 ~@28 c#5@43 ~@22, ~@41 d4@55 a4@47 ~@17]/5",
  P: "[~@36 b3@23 ~@5, ~@12 f#4@14 f#4@19 ~@19, ~@17 e3@42 ~@5]/2", Q: "~@15 d#3@5 ~@12", R: "[~@5 a4@10 ~]/2",
  S: "~@10 a2@5 ~@17", T: "[~@11 b4@9 ~@12]/2", U: "[~@24 a3@15 ~@25]/2", V: "[~@4 d4@10 ~@10 c#4@19 ~@21]/2",
  W: "~@11 d#4@12 ~@9", X: "~ c4@4 ~@27", Y: "~@5 e3@14 ~@13",
  Z: "[~@30 e4@7 ~@27, ~@7 g#3@17 ~@40, ~@13 b3@13 b3@11 ~@27, ~@9 e4@6 ~@17]/2",
  AA: "[~@6 e3@7 ~@14 e3@9 ~@12, ~ d4@32 ~@15, ~@50 a3@23 ~@23]/3", AB: "~@11 a3@15 ~@6",
  AC: "[~@10 b3@20 b3@15 ~ a1@64 ~@18]/4",
})).s("gm_piano").gain(0.15)

stack(piano, piano_soft)

More by Alabama