Strudelify

Twistin the Night Away

Sam Cooke

KeyA majorTempo160 bpm
0:00/0:00
// Twistin the Night Away — Sam Cooke
// 160 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 123 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(160/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.

// other · alto sax
const alto_sax = note(`<
  ~@53 A B C D E F G H I@2 J K L M N ~@24 A B C D E F G H I@2 O K P M N ~@10 Q R S@3 ~
>`.pickRestart({
  A: "~@12 e4@2 ~ f#4, ~@11 c#4@2 ~@3, ~@12 f4 ~@3", B: "f#4@7 ~ f#4@6 ~ e4", C: "f#4@3 ~ f#4@3 ~ f#4@3 e4 c#4@2 ~ e4",
  D: "~@8 [a3,b3] c#4 ~ e4 f#4@3 e4", E: "f#4@2 ~@2 f#4@3 ~ f#4@2 ~ e4 ~@4, ~@3 a4@2 ~@11",
  F: "~@7 c#4 ~ e4@2 f#4 a4@2 ~ [e4,f#4]", G: "b4@2 ~@2 a4@2 ~@2 f#4@3 e4 ~@4", H: "~@7 a3 b3 a3 ~ b3 c#4 e4 ~ f#4",
  I: "[e4 f#4@4 ~@2 a4 b4@3 a4 e5@2 ~@2 b4 ~@3 a4 ~@3 a4@2 ~@2 a4@3 ~, ~@15 a4@5 ~@12]/2",
  J: "a4@3 ~ a4 ~@2 a4 c#5@3 a4 ~@4", K: "~@3 f#4 a4@4 a4@4 a4@2 ~@2", L: "a4@2 ~@2 a4@2 ~ a4 c#5@2 ~ a4 ~@4",
  M: "~@7 e4 f#4@2 ~ a4 b4@3 a4", N: "c#5@3 a4 c#5@2 ~@2 b4@2 ~ a4 f#4@3 e4", O: "a4@2 ~@2 a4 ~@2 a4 c#5@3 a4 ~@4",
  P: "a4@2 ~@2 a4 ~@2 a4 c#5@2 ~ a4 ~@4", Q: "a3@3 ~ a4@2 ~ e4 f#4@2 ~ a4 ~@4", R: "~@4 f#4@2 ~@2 e4@3 f#4 ~@4",
  S: "[~@4 a4@2 ~ e4 f#4@2 ~ a4@2 ~@2 e4@5 ~@4 e5@3 f#5 g#5@2 ~ a5@14 ~@3]/3",
})).s("gm_alto_sax").gain(0.8)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~ A@2 B C D E F@2 G H I J K@2 L M H@2 N O K@4 H@2 P Q D E F@2 G H I J K@2 L M H@2 N O K@4 H@2 P Q D E F@2 G H I J K@2
  L M H@2 N O R E F@2 H@2 I J K@2 L M H@2 N O K@4 H@2 P Q D E F@2 H@2 I J K@2 L M H@2 N O K@4 H@2 P Q A@2 S T@3
>`.pickRestart({
  A: "[a1@3 ~ c#2@4 e2@3 ~ f#2 ~@2 f#1@5 a1@4 c#2@4 e2@4]/2", B: "a1@4 c#2@4 e2@4 f#2@2 ~ e2",
  C: "~@3 e2!2 ~@2 e2!2 ~@2 e2!2 ~@3", D: "a1@3 ~ c#2@4 e2@3 ~ f#2@4", E: "a1@3 ~ c#2@4 e2@4 f#2@4",
  F: "[f#1@4 a1@3 c#2@4 e2@4 f#1@5 a1@4 c#2@4 e2@4]/2", G: "d2@3 ~ f#2@4 a2@4 f#2@4", H: "d2 f#2 a2 f#2",
  I: "e2 g#2 b2 g#2", J: "e2@4 d2@4 c#2@4 b1@3 ~", K: "a1 c#2 e2 f#2", L: "f#1 a1 c#2 e2", M: "f#1@4 a1@3 c#2@4 ~ e2@4",
  N: "e2@3 g#2@4 ~ b2@4 g#2@4", O: "a2 g#2 f#2 e2", P: "e2@3 g#2@4 ~ b2@3 c#3@3 ~@2", Q: "a1@4 c#2@4 e2@4 f#2@3 ~",
  R: "a1@4 c#2@4 e2@3 ~ f#2@4", S: "a1@4 c#2@4 e2@4 f#2@2 ~ [e1,e2]",
  T: "[~@3 e1!2 ~@2 e1 e1@2 ~ f#1 g#1@2 ~ a1@26 ~@7]/3",
})).s("gm_acoustic_bass").gain(0.64)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  ~ A B C@2 D E F@2 G@2 H@2 I@2 J@2 K L@2 M N O P Q R S T U V@2 W X Y@2 Z AA AB AC AD AE@2 AF AG AH AI AJ AK AL AM AN@3
  AO@2 AP@2 AQ AR AS AT AU AV AW AX AY@2 AZ BA BB BC BD@2 BE BF@2 BG BH BI BJ@2 BK BL BM BN BO BP BQ BR BS@4 BT BU BV BW
  BX@2 BY BZ CA@2 CB CC CD CE CF CG CH CI CJ@2 CK@2 CL@2 CM@2 CN@3 ~
>`.pickRestart({
  A: "~@4 [e4,a4,c#5]@2 ~@5 [e4,a4,c#5]@3 ~@2", B: "~@4 [f#4,a4,c#5]@2 ~@5 [f#4,a4,c#5]@4 e4",
  C: "[~@4 [e4,c#5] ~@7 a4@3 e4@2 ~@3 [e4,g#4,b4]@4 ~@4 f#4@3 g#4, ~@4 a4@2 ~@5 c#5@5 ~@16, ~@11 e4@2 ~@14 e4@2 ~@3]/2", // C#m E
  D: "~@4 [b4,e5]@2 ~@2 b4@2 ~@2 c#5@2 ~ b4, ~@8 f#5 ~@2 e5@4 ~", // E5
  E: "~@4 c#5 ~@6 b4 [c#5,g#5] b4 ~ a4, ~@3 [b4,e5]@3 ~@5 [e5,f#5]@2 ~@3", // C#5 E5 Esus2
  F: "[f#4@4 [a4,c#5] ~@7 f#5@3 ~ a5@2 ~@2 [e5,a5]@2 ~@2 [e5,f#5]@3 e5 f#5@3 e5, ~@11 e5@2 ~@2 e5@4 ~ c#6 ~@3 c#6@6 ~@2, ~@27 a5@4 ~]/2", // A A5 Esus2
  G: "[~@3 [f#4,a4,c5,d5] ~@11 [a5,d6]@2 ~@2 [a5,d6]@2 ~@2 [f#5,a5,d6] ~@4 b5@3 a5, ~@15 f#5 ~@3 e5 ~@7 [e5,c#6]@5, ~@27 a5@2 ~@3]/2", // D7 D5 D C#m
  H: "[~@3 [e5,g#5,a#5,b5] ~@4 [f#5,b5] ~@7 c#5 ~@2 [g#4,b4,c#5] f#4@3 g#4 [f#4,b4]@3 g#4 [g#4,b4]@3 f#4, ~@15 [g#4,b4,e5]@2 ~@2 e5@3 ~@5 e4@2 ~@3]/2", // E B5 C#7 B5 G#m E
  I: "[~@12 c#6 b5 ~ e6 b5@2 ~ c#6 b5 ~@3 e5@3 ~ a5@3 e5, ~@11 e6@4 ~ e6 ~@2 e6@2 ~@11, ~@11 b5@2 ~@2 c#6@2 ~@6 a5@4 f#5@4 ~]/2",
  J: "[~@3 b5 c#6 b5 ~ [f#5,a5] e5@3 a5 e5@2 ~ f#5 [f#5,a5] ~@3 [e5,a5,c#6]@2 ~ f#5 [e5,c#6]@3 a5 ~@4, ~@3 e6@2 ~@10 e5@2 ~@7 f#5 ~@7]/2", // F#m A C#m
  K: "~@7 [f#5,d6,f#6] ~@8, ~@7 a5@2 ~@7", // D
  L: "[~@3 a5!2 ~@3 [d5,a5,d6]@2 ~@2 [a5,d6]@3 e5@2 ~@2 [g#5,b5]@2 ~@3 [f#5,b5]@2 ~@2 [e5,g#5,b5] ~@3, ~@3 [d5,f#5,d6,f#6]@3 ~@2 e5 ~@3 [f#5,c6] ~@6 e5 ~@12]/2", // D5 G#m B5 E D F#dim
  M: "~@3 [b4,c#5] c#5@2 ~ b4 [c#5,e5] ~@3 e4@3 f#4, ~@3 e5@4 ~@4 a4@4 ~", N: "~@7 [b5,e6] ~@3 [c#6,e6] b5 a5 ~ f#5",
  O: "e5 ~@6 [e5,c#6] ~@8, ~@7 a5@2 ~@7", P: "~@4 c#6@2 ~ b5 [b5,c#6,e6] ~@3 [b5,e6] ~@3, ~@3 e6@4 ~@9, ~@3 b5@2 ~@11",
  Q: "~@3 [e5,g5,a5] ~@7 a5 ~ g5@2 e5, ~@11 c#6@4 ~, ~@11 [e5,g5]@2 ~@3, ~@12 a5@3 ~", // A7 Em
  R: "~@3 [d5,f#5,a5] ~@4 [e5,a5]@3 f#5 e5 ~@3, ~@3 d6@2 ~@6 a5@2 ~@3", // D A5
  S: "~@3 [f#5,a5,c6,d6] ~@4 [e5,a5] ~@2 [e5,f#5] f#5@2 ~ e5, ~@11 a5@4 ~, ~@12 d5 ~@3", // D7 A5 Esus2
  T: "~@3 [b5,e6,g#6]@2 ~@3 [d6,f#6]@2 ~@2 e6@2 ~ b5, ~@8 b5 ~@3 c#6 ~@3", // E D
  U: "~@4 f#5@2 ~@2 [a5,c#6]@2 ~@2 c#6 ~@3, ~@3 [e5,a5,c#6]@2 ~@2 e5@2 ~@7", // A
  V: "[~@3 c#6 [c#6,d#6,e6] [c#6,e6] ~ [c#6,e6] b5 ~@2 e6 b5 ~@3 e5@3 f#5 ~@4 [b5,c#6] ~@3 c#6@2 ~ [f#5,a5,c#6], ~@11 c#6@2 ~@2 a5@4 ~@5 a5@5 ~@3, ~@27 f#5@2 ~@3]/2", // C#m Bsus2 F#m
  W: "~@4 f#5 ~@2 [f#5,a5,c#6] d#6 ~@2 e5 f#5 e5 ~ [c#5,d#5], ~@11 [a5,c#6]@2 ~@3", // F#m C#sus2 A
  X: "e5@3 c#5 ~@4 f#5@2 ~ e5 c#5@2 ~ e5, ~@7 [e5,a5]@2 ~@7", // A5
  Y: "[~@7 [f#5,a5,d6] ~@8 f#5 ~@2 [e5,a5] ~@3 [f#5,a5,d6] ~@4 f#5@3 e5, ~@15 [e5,a5]@2 ~@10 a5@5, ~@27 e5@2 ~@3]/2", // D A5 D A5
  Z: "~@7 [g#5,b5,e6] ~@3 [g#5,c#6,e6] ~@3 [g#5,b5,e6]", // E C#m E
  AA: "~@3 [f#5,b5] ~@3 [e5,g#5,b5] ~@4 g#5@3 e5, ~@11 b5@5, ~@11 f#5@2 ~@3", // B5 E
  AB: "~@7 e6@2 ~@2 b5 c#6@2 ~ b5, ~@7 b5 ~@3 e6@4 ~",
  AC: "~@8 c#5@2 ~@2 a4@3 [e4,f#4], ~@7 e5@4 ~@5, ~@7 b4@2 ~@2 b4@2 ~@3", // Esus2
  AD: "~@3 [f#4,a4,c#5] ~@4 [f#5,a5,c#6] ~@3 f#4 ~@3", // F#m
  AE: "[~@3 b4 c#5@2 ~ b4 a4@3 e4 [a4,c#5]@3 f#4@2 ~@2 [f#4,a4,c5,d5] ~@4 [f#5,a5]@2 ~@2 e5@2 ~@2, ~@3 e5@3 ~@22 a5 ~@3]/2", // A D7 F#m
  AF: "d5@3 ~ [c#5,e5]@2 ~@2 [c#5,f#5]@2 ~ b4 ~@3 [c#5,e5]", AG: "~@8 e5@2 ~ g#5 e5@3 ~",
  AH: "~@4 a4@2 ~@2 c#5@2 ~ b4 e5@3 b4, ~@7 e5@4 ~@5", AI: "~@3 [e5,a5,c#6] ~@4 [e5,f#5,c#6] ~@3 [b4,e5] ~@3",
  AJ: "a4@2 ~ e5 f#5@2 ~ e5 [c#5,e5]@3 b4 [a4,b4] ~@2 b4, ~@3 [a5,c#6]@4 ~@5 e5@3 ~", // C#m Asus2 A
  AK: "~@7 [e5,a5,c#6] ~@3 [e5,a5,c#6] ~@4", // A
  AL: "c#5 ~@3 g5@3 ~ [a4,e5,a5,c#6]@3 ~ [e5,g5,c#6]@3 a5, ~@3 c#6@4 ~@9, ~@3 [e5,a5]@2 ~@11", // A C#dim A5
  AM: "f#5@3 [a5,d6]@2 ~@3 [f#5,a5,d6,f#6]@2 ~@5 [e5,a5,d6]", // D5 D Dsus2
  AN: "[~@3 [f#5,a5,c6,d6] ~@3 [e5,a5,d6] ~@3 [a5,d6]@4 e5@2 ~@2 [e5,g#5] f#5@2 ~ e5 [g#5,b5]@2 ~@2 [g#5,c#6]@3 e5@2 ~@3 g5@2 ~ e5 [e5,a5,c#6]@2 ~@2 [e5,a5,c#6]@3 e5, ~@11 f#5 ~@7 b5@4 ~@5 f#5 ~@6 [e5,a5,c#6]@2 ~@11]/3", // D7 Dsus2 D5 E G#m C#5 A
  AO: "[~@3 [f#5,a5,d6] ~@4 [b5,e6]@2 ~@2 [c#6,e6]@2 ~ b5@2 a5@3 f#5@2 ~@2 [f#5,c#6] ~@2 e5@2 [f#5,c#6]@2 e5, ~@20 e5 ~@3 a5@2 ~ a5@4 ~]/2", // D E5 C#m F#5
  AP: "[~@7 [f#5,a5,c#6] ~@7 [f#5,a5,c#6]@6 ~@2 e5 ~ a5 ~ e5 [f#5,c#6]@3 e5, ~@23 c#6@4 ~@5, ~@23 a5@2 ~@7, ~@24 f#5@3 ~@5]/2", // F#m F#5
  AQ: "~@7 [a4,d5,f#5]@3 ~@3 d5@3, ~@11 e5@2 ~@3, ~@3 a4", AR: "~@7 e5 f#5 e5 ~ c#5 e5@3 b4, ~@7 a5@2 ~@3 c#5 ~@3",
  AS: "~@4 d5 f#5@2 b4 [e5,g#5]@2 ~@2 [d5,g#5]@2 ~ b4, ~@3 [b4,e5,g#5]@2 ~@7 [b4,f#5] ~@3", // E Ddim E B5
  AT: "[a4,b4]@3 c#5 b4 ~@3 [c#5,e5,b5] ~@7, ~@3 [e5,g#5]@2 ~@11", AU: "~@4 [b5,e6]@3 c#6 [b5,e6] ~@7",
  AV: "~@4 f#5@2 ~ e5 a5@2 ~@2 [c#5,e5,a5] ~@3, ~@3 [e5,a5]@3 ~@10", // A A5
  AW: "~@3 f#5!2 ~@3 [e5,a5] ~@3 [f#5,a5] ~@3, ~@3 a5@2 ~@11", // A5 F#m
  AX: "c#5@3 e5 f#5@2 ~ c#5 ~ c#5 ~ e5@2 c#5@3, ~@8 f#5@3 ~@5",
  AY: "[~@16 f#5@2 ~ e5 [e5,a5]@2 ~@2 e5@3 ~ e5 ~@2 e5, ~@15 a5@4 ~@5 a5@7 ~, ~@15 e5@2 ~@10 f#5@2 ~@3]/2", // A5
  AZ: "~@7 [e5,g#5] ~ f#5 ~@2 e5@3 g#5", BA: "~@4 [c#5,e5]@2 ~@2 e5@2 ~ f#5@2 e5@2 c#5, ~@8 c#5@5 ~@3",
  BB: "~@4 c#6@2 ~@2 [b5,e6] ~@7, ~@3 [b5,e6]@3 ~@10", // E5
  BC: "[e5,a5]@3 f#5 e5@2 ~@3 a5 ~@2 f#5@2 ~ e5, ~@8 e5@3 a5@2 ~@3", // A5
  BD: "[~ c#5 ~@2 f#5@2 ~@2 [c#5,f#5]@2 ~@2 e5@3 ~ b4 ~@2 a4@4 ~ c#5@3 ~ a4@3 ~, ~@3 [c#5,e5]@3 ~@6 b4@2 ~ c#5@2 ~@15]/2", // F#5 C#m
  BE: "a4 ~@2 [d5,f#5]@2 e5@2 ~ d5 ~@3 d5 ~@3", // D
  BF: "[~@3 [f#4,a4,c5,d5] ~@8 a4@3 f#4@2 ~@6 [e4,b4]@4 g#4 ~@4, ~@11 d5@6 ~@15, ~@11 f#4@2 ~@10 g#4 ~@8]/2", // D7 E5
  BG: "~@4 c#5@3 g#4 [g#4,b4,e5]@2 ~@2 [g#4,c#5,e5]@3 b4, ~@3 e5@4 ~@9, ~@3 [g#4,b4]@2 ~@11", // E C#m G#m
  BH: "~@4 [e5,a5]@3 ~ [e5,a5]@3 e5 ~@4, ~@8 f#5 ~@7", // A5
  BI: "~@3 e4 f#4@2 ~@2 [e4,a4]@3 ~ e4@3 a4, ~@3 [a4,c#5]@4 ~ c#5@6 ~@2, ~@11 f#4@2 ~@3", // A5 A
  BJ: "[~@7 [f#4,a4,c#5]@2 ~@6 [f#4,c#5] ~@9 f#4@2 ~ f#4@2 ~ e4, ~@15 a4@2 ~@7 c#5@8, ~@6 a4 ~, ~@24 e4@2 ~ e4@2 ~@3]/2", // F#m F#5
  BK: "~@2 [f#4,a4,d5] ~ [f#4,a4,d5] ~@3", BL: "~@3 [a4,f#5]@2 e5@2 ~@5 a4@3 f#4, ~@3 f#4@10 ~@3, ~@3 d5 ~@4 d5@7 ~",
  BM: "~@3 [g#4,b4,e5]@2 d5 ~@2 [g#4,d5]@2 ~@2 [g#4,e5]@3 [b4,c#5], ~@6 b4 ~", // E G#dim C#m Bsus2
  BN: "~@8 f#4@3 ~ a4@3 e4, ~@7 c#5@9, ~@7 [e4,a4]@2 ~@2 e4@2 ~@3", // A5
  BO: "~@8 f#5 ~@3 f#5@2 ~@2, ~@7 [e5,a5]@2 ~@2 [e5,a5]@2 ~@3", // A5
  BP: "~@7 b5 c#6 ~@2 b5 ~ e6 ~ b5, ~@7 e6@2 ~@2 e6@2 ~@3, ~@12 c#6@3 ~", BQ: "~@7 [e5,a5,c#6] ~@8",
  BR: "~@3 b5 [c#6,e6]@3 ~ e6@3 ~ b5 ~@2 a5, ~@8 b5@2 ~ c#6@2 ~@3", // C#m
  BS: "[~@3 [a5,d6]@2 ~@10 [f#5,a5,d6]@2 ~@2 [f#5,e6] ~@3 [f#5,a5,d6] ~@3 [e5,a5,d6]@2 ~@2 [e5,g#5]@2 ~@2 [e5,g#5,b5] ~ b5@2 e5 [g#5,b5]@2 ~@2 [f#5,c#6]@3 e5@2 ~@3 f#5@2 ~@2 [e5,a5,c#6]@2 ~@2 [e5,c#6] ~@2 e5, f#5@5 ~@31 f#5@2 ~@13 [e5,a5,c#6]@2 ~@7 f#5@2 ~@2, ~@3 c6 ~@11 f#6 ~@48]/4", // D5 D F#7 D Dsus2 E G#m F#5 …
  BT: "[e5,a5,c#6,e6]@4 ~@3 [e5,a5,c#6,e6] ~@8", BU: "[e5,a5,c#6]@4 ~@3 [e5,a5,c#6,e6] ~@8", BV: "~@7 [f#5,a5] ~@8",
  BW: "[f#5,a5]@5 ~@2 [e5,f#5,a5] ~@8", BX: "[d5,f#5,a5]@5 ~@2 [d5,f#5,a5] ~@8",
  BY: "[e5,g#5,b5]@5 ~@2 [e5,g#5,b5] ~@8", BZ: "[e5,g#5,b5]@4 ~@3 [e5,g#5,b5]@2 ~@7",
  CA: "[e5,a5,c#6,e6]@5 ~@2 [e5,a5,c#6,e6] ~@8", CB: "~@3 [e5,f#5,a5]@3 ~@2 [f#5,a5] ~@7, ~@4 e5 ~@3",
  CC: "~@3 [e5,f#5,a5]@3 ~@2 [e5,f#5,a5]@2 ~@6", CD: "~@3 [d5,f#5,a5]@3 ~@2 [d5,f#5,a5] ~@7",
  CE: "[d5,f#5,a5]@4 ~@3 [d5,f#5,a5]@2 ~@7", CF: "[e5,g#5,b5]@2 ~@5 [e5,g#5,b5]@2 ~@7",
  CG: "[e5,g#5,b5]@2 ~@5 [e5,g#5,b5] ~@8", CH: "~@3 b5 c#6@2 ~@2 [b5,e6] ~@3 e5@2 ~@2, ~@3 e6@3 ~@6 a5 ~@3",
  CI: "~@8 [e5,a5,c#6] ~@7", // A
  CJ: "[~@4 a5@2 ~@2 [e5,c#6] ~@6 [e5,a5] ~@4 [f#5,a5,c#6] ~@2 [e5,a5,c#6] ~@3 [f#5,a5,c#6] ~ c#6@2 [e5,a5], ~@3 [f#5,c#6]@2 ~@3 a5@2 ~@5 c#6@2 ~@11 g5@4]/2", // C#m A5 F#m A F#m A5 F#5
  CK: "[~@3 f#5 d5@2 ~@2 [f#5,a5] ~@6 [a5,f#6]@2 ~@2 f#5 e6 ~@2 [f#5,a5,d6] ~@3 [a5,d6]@4 e5, ~@3 [a5,d6]@2 ~@3 d6@2 ~@5 [f#5,d6] ~@11 e5 ~@4]/2", // F#m D D5 D
  CL: "[~@3 [e5,g#5] f#5 ~@2 e5 [g#5,b5]@2 ~@2 [f#5,c#6]@3 e5@2 ~@2 [e5,a5,c#6] ~@4 [b5,e6]@3 ~ f#6@3 b5, ~@3 b5@4 ~@20 c#6@4 ~]/2", // E G#m F#5 A E5
  CM: "[~@8 [e5,a5,c#6]@3 ~ [e5,c#6] ~@2 [a5,c#6]@3 ~@10 g#5@3 a5, ~@11 f#5@2 ~@2 f#5@5 ~@7 f#5@2 ~@3]/2", // A C#m A
  CN: "[e5@2 ~@2 [e5,a5,c#6] ~@6 [a5,c#6]@2 ~@2 g#5@2 ~@2 [e5,g#5,b5] ~@3 [g#5,b5] e5@3 f#5 g#5@2 ~ [c#5,a5]@14 ~@3, ~@11 e5 ~@3 b5 ~@15 e5@16 ~]/3", // A E G#m F#m
})).s("gm_piano").gain(0.64)

// chords · piano · "A.PIANO 1"
const piano_2 = note(`<
  ~ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ@2 AK AL ~ AM AN AO AP ~ AQ ~ AR AS
  AT AU AV AW AX AY AZ BA BB BC BD BE BF BG ~ BH AT BI BJ BK ~@2 BL BM BN@2 BO BP BQ BR BS BT BU BV BW ~ BX BY BZ CA CB
  CC CD CE@2 CF CG CH CI CJ CK CL CM CN CO CP CQ CR CS CT ~ CU CV CW CX CY CZ DA@5 ~
>`.pickRestart({
  A: "a3@4 ~@4 a3 ~@3 a3@4", B: "f#3@2 ~@2 f#3 ~ f#3 ~", C: "a3@4 ~@4 a3@3 ~ a3@3 ~", D: "[e3,b3]@3 ~@5 [e3,b3]@3 ~@5",
  E: "a3@3 ~@13", F: "a3 ~@7", G: "f#3@4 ~@4 f#3 ~@7", H: "f#3@3 ~@5 f#3@5 ~@3", I: "[a3,d4]@2 ~@10 f#3 ~@3, f#3 ~@15",
  J: "~@3 a3, ~@11 [f#3,d4]@4 ~", K: "[e3,b3] ~@5 [e3,b3] ~", L: "~@4 e3 ~@7 [e3,b3]@3 ~",
  M: "~@3 [e4,a4,c#5] ~@4 a3@2 ~@6, a3@5 ~@11", N: "~@3 a3", O: "f#3 ~@7", P: "f#3@3 ~@5 [f#3,c#4]@3 ~@4 [f#3,a3,d4]",
  Q: "~@5 a3 ~ [d3,d4]@3 ~ d4 ~@4, ~@7 a3 ~@8", R: "~@3 a4!2 ~@3 [d4,a4]@3 ~@5, ~@3 d4@3 ~@10", S: "~@4 [b3,e4] ~@11",
  T: "~@4 a3@3 ~", U: "[a3,a4]@3 ~ [e4,a4,c#5] ~@11", V: "~@4 a4 ~@11", W: "~@8 [e4,a4] ~@7, ~@4 c#5 ~@3",
  X: "~@12 g4@3 ~, ~@11 a4@4 ~, ~@11 e4@2 ~@3", Y: "f#4@3 a4 ~@12", Z: "[f#4,a4] ~@11 a4@3 ~",
  AA: "[e4,g#4] ~@7, b4 ~@15", AB: "a4@3 ~@5 a4@3 ~ [e4,a4]@2 ~@2", AC: "[a4,c#5] ~@7 [e4,c#5] ~@7",
  AD: "~@4 [e4,a4] ~@3 [c#5,e5]@3 ~ [c#5,e5]@3 a4, ~@4 c#5@2 ~@2 e4 ~@3 a4 ~@3", AE: "f#4@3 ~@5", AF: "~@2 f#4 ~@5",
  AG: "~@4 f#4@3 ~@5 [f#4,a4,d5] ~@3", AH: "~@4 [f#4,a4]@2 ~@6 [f#4,a4,d5]@3 ~, ~@4 d5 ~@11", AI: "[e4,g#4,b4] ~@7",
  AJ: "[~@5 [e4,g#4,b4] ~@6 [e4,g#4,b4]@3 ~ c#5@2 ~@14, ~@15 a4@3 ~@14, ~@16 e4 ~@15]/2", AK: "a3@3 ~ a3 ~@7 a3@3 ~",
  AL: "f#3@3 ~ f#3 ~@7 f#4 ~@3, g#3 ~@15", AM: "d3@3 ~ d3 ~@3 [d3,d4] ~@7", AN: "~@4 d3@2 ~@6 [d3,d4]@3 ~",
  AO: "~@4 e4@3 b4@2 ~@6 b4", AP: "~@2 a4 ~@5, ~@4 a3 ~@11", AQ: "[a3,a4] ~@7", AR: "~@8 a4@3 ~@5",
  AS: "d4@3 ~ [a4,d5] ~@7 [d4,a4]@2 ~@2", AT: "~@6 [d4,a4] ~", AU: "e4@2 ~@6 e4@3 ~@5", AV: "a4@3 ~@5 a4@5 ~@3",
  AW: "a4@3 ~@5 a4@2 ~@6", AX: "~@4 a4@2 ~@6 a4@3 ~", AY: "~@4 a4 ~@7 f#4 ~@3", AZ: "~@4 f#4 ~@7 f#4 ~@3",
  BA: "d4@2 ~@5 [f#4,a4]@3 ~ f#4 a4@3 f#4", BB: "d4@3 ~ d4 ~@7 d4 ~@3", BC: "e4@3 ~ e4 ~@3 e4@3 ~@5",
  BD: "[a4,b4]@3 ~@13", BE: "~@3 [e4,a4,c#5] ~@8 [e4,a4,c#5] ~@3", BF: "~@12 [e4,a4] ~@3",
  BG: "[f#4,a4,c#5] ~@3 [f#4,c#5] ~@11", BH: "~@3 [d4,a4] ~@4 [f#4,a4,d5] ~@3 [d4,a4] ~@3",
  BI: "~@7 b4 e4@3 b4@2 ~@2 b4", BJ: "a4@5 ~@7 e4@4", BK: "~@6 [e5,a5] ~", BL: "~@4 e4@2 ~@2 f#4@2 ~ e4@2 ~@2 f#4",
  BM: "~@3 f#4@6 a4 ~@2 [f#4,a4,d5] ~@3, ~@3 a4 ~@12", // D
  BN: "[~@3 f#4 ~@4 d4@3 ~ [d4,a4]@3 f#4@2 ~@7 b3@3 ~@5, ~@11 f#4@2 ~@19]/2", BO: "b3 ~@7 b3 ~@7", BP: "a4@3 ~@13",
  BQ: "~@3 e4@2 ~@3 e4@3 ~ e4@3 a4, ~@11 f#4@2 ~@3", BR: "~@6 f#3 ~", BS: "~@4 [f#3,c#4] ~@11",
  BT: "~@3 [d3,d4] ~@8 [d3,d4] ~@3", BU: "[d3,d4] ~@7 [d3,d4]@2 ~@6", BV: "[e3,b3]@2 ~@2 [e3,b3] ~@11",
  BW: "~@2 a3 ~@5", BX: "e4 ~@3 [e4,a4,c#5] ~@11", BY: "e4 ~@11 [e4,a4,c#5] ~@3", BZ: "~@9 e4@3 ~ a4@3, ~@8 c#5@3 ~@5",
  CA: "f#4@3 [a4,d5] ~@8 [f#4,d5] ~@3, ~@3 f#4@3 ~@10", CB: "~@12 a4 ~@3",
  CC: "[e4,g#4]@2 ~@2 g#4 ~@3 [e4,g#4,b4]@3 ~@5, b4 ~@15", CD: "a4 ~@7, e4 ~@15",
  CE: "~@4 [e4,a4,c#5] ~@7 [e4,a4,c#5] ~@3", CF: "~ [c#4,a4]@6 ~@5 [c#4,f#4,a4] ~@3, f#4@3 ~@5",
  CG: "~@4 [c#4,f#4,a4] ~@7 [c#4,f#4,a4] ~@3", CH: "~@4 [d4,f#4,a4] ~@7 [d4,f#4,a4] ~@3",
  CI: "~@4 [d4,a4]@2 ~@6 [d4,f#4,a4] ~@3, ~@4 f#4 ~@11", CJ: "~@4 [e4,g#4,b4] ~@7 [e4,b4] ~@3",
  CK: "~@4 [e4,g#4,b4] ~@7 [e4,g#4,b4] ~@3", CL: "~@4 [e4,c#5] ~@8 [e4,a4,c#5] ~@2, ~@4 a4@3 ~@9",
  CM: "~@4 [e4,c#5] ~@7 [e4,a4,c#5] ~@3, ~ a4 ~@2", CN: "[c#4,f#4,a4]@3 ~ [c#4,f#4] ~@7 [f#4,a4] ~@3, ~@6 c#4 ~",
  CO: "[c#4,a4]@2 ~@2 [c#4,a4]@3 ~@5 [c#4,f#4,a4]@3 ~, f#4 ~@3", CP: "[d4,f#4,a4]@3 ~@9 d4@3 ~",
  CQ: "[d4,a4] ~@3 [d4,a4] ~@7 [d4,f#4]@2 ~@2, ~@12 a4 ~@3", CR: "[e4,b4]@2 ~@2 [e4,b4] ~@7 [e4,b4]@2 ~@2",
  CS: "~@4 e4 ~@7 [e4,g#4,b4] ~@3", CT: "[e4,a4] ~@15, c#5 ~@7", CU: "f#4@2 ~@4 e4 ~", CV: "[e4,a4,c#5] ~@15",
  CW: "f#4@3 ~ [a4,d5]@2 ~@6 f#4@3 ~", CX: "f#4 ~@3 f#4 ~@7 [f#4,a4]@3 ~",
  CY: "[e4,g#4,b4]@2 ~@2 [e4,g#4] ~@3 [e4,g#4,b4]@3 ~@2 e4 ~@2, ~@2 b4 ~@5", CZ: "[a4,c#5] ~@7, e4 ~@15",
  DA: "[[e4,a4,c#5]@3 ~ [e4,a4,c#5]@4 ~@4 [e4,c#5] ~@2 [f#4,a4,c#5]@2 ~@4 [f#4,c#5] ~@2 [f#4,c#5]@7 ~ [e4,c#5]@3 ~@5 [e4,a4,c#5]@3 ~ [e4,a4,c#5] ~@2 [e4,g#4,b4]@2 ~@2 [g#4,b4] ~@3 [e4,g#4,b4] e4@2 ~ f#4@2 g#4@2 [a4,c#5]@14 ~@3, ~@12 a4@2 ~@17 a4@5 ~@15 e4@2 ~@27]/5", // A C#m F#m F#5 C#m A E G#m …
})).s("gm_piano").gain(0.52)

// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note(`<
  ~@3 A ~@5 B C D E ~@2 F ~ G ~@2 H ~@2 I J ~@15 K L ~@7 L M N ~@6 O ~ P ~@6 Q ~@5 R ~@10 S ~@3 T U V W ~@11 X Y X ~@2 P
  ~ Z ~ AA ~ AB ~ Q ~@6
>`.pickRestart({
  A: "~@7 a3 ~@8", B: "~@8 [f#3,a3,d4] ~@3 [a3,d4] ~@3", C: "d4@2 ~@2 [a3,d4] ~@3 f#3@2 ~@6, a3 ~@3 f#3@2 ~@10",
  D: "g#3@2 ~@2 [e3,b3] ~@11", E: "[e3,b3] ~@15", F: "~@12 f#3 ~@3", G: "~@4 d3 ~@7 a3 ~@3", H: "~@4 a3 ~@11",
  I: "~@2 e4 ~@5", J: "~@9 e4 ~@6", K: "~@4 f#3 ~@3", L: "~@4 d4 ~@11", M: "~@8 [d4,a4] ~@7", N: "~@4 e4 ~@11",
  O: "~@8 d4 ~@2 d4 ~@4", P: "~@4 b4 ~@11", Q: "~@5 e4 ~@10", R: "a4 ~@15", S: "~ a3 ~@14", T: "~@13 c#5 ~@2",
  U: "~@12 a4 ~@3", V: "~@12 f#4 ~@3", W: "~@4 [e4,b4] ~@8 e4@2 ~", X: "~@5 a4 ~@10", Y: "~@7 f#4 ~@8",
  Z: "~@13 e4 ~@2", AA: "~@8 e4@2 ~@2 [e4,a4]@3 ~", AB: "~@8 f#4 ~@7",
})).s("gm_piano").gain(0.3)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~ A@2 B C D E F G H I J K L M@2 N H O@3 D L@2 P@2 Q@2 L D E F G H I J K L M@2 N H O@3 D L@2 P@2 Q@2 L R E F G H I J K
  L M@2 N H O@3 D E F G H I J K L M@2 N H O@3 D L@2 P@2 S@2 L R E F G H I J K L M@2 N H O@3 D L@2 P@2 Q@2 L A@2 B T@3
>`.pickRestart({
  A: "[[e4,a4,c#5]@11 ~ a4 ~@2 [f#4,a4,c#5]@15 ~@2]/2", B: "[a4,c#5]@9 ~@3 e4@2 ~ [e4,g#4,b4], e4@11 [a4,c#5]@2 ~@3",
  C: "~@3 [e4,g#4,b4] ~@3 e4 [e4,g#4]@3 ~ [e4,g#4]@2 ~@2, ~@4 b4@3 ~", D: "[e4,a4,c#5]@4 ~@3 [e4,a4,c#5] ~@8",
  E: "[e4,a4,c#5]@4 e4 ~@2 [e4,a4,c#5] ~@8", F: "[a4,c#5]@5 ~@2 [f#4,a4,c#5] ~@8, f#4@3 ~@13",
  G: "[a4,c#5,e5]@4 f#4 ~@2 [f#4,a4,c#5,e5] ~@8, f#4@3 ~@13", H: "[f#4,a4,d5]@5 ~@2 [f#4,a4,d5] ~@8",
  I: "[f#4,a4,d5]@6 ~ [f#4,a4,d5] ~@8", J: "[e4,g#4,b4]@5 ~@2 [e4,g#4,b4] ~@8",
  K: "[g#4,b4]@5 ~@2 [e4,g#4,b4] ~@8, e4 ~@7", L: "[e4,a4,c#5]@5 ~@2 [e4,a4,c#5] ~@8",
  M: "[[e4,a4,c#5]@5 ~@2 [e4,a4,c#5] ~@7 [f#4,a4,c#5]@6 ~@2 [f#4,a4,c#5] ~@8]/2", // A F#m
  N: "[f#4,a4,c#5]@4 f#4 ~@2 [f#4,a4,c#5] ~@8", // F#m
  O: "[[f#4,a4,d5]@5 ~@2 [f#4,a4,d5] ~@7 [e4,g#4,b4]@6 ~@2 [e4,g#4,b4] ~@7 [e4,a4,c#5]@6 ~@2 [e4,a4,c#5] ~@8]/3", // D E A
  P: "[[e4,a4,c#5]@5 ~@2 [e4,a4,c#5] ~@7 [f#4,a4,d5]@6 ~@2 [f#4,a4,d5] ~@8]/2", // A D
  Q: "[[f#4,a4,d5]@5 ~@2 [f#4,a4,d5] ~@7 [e4,g#4,b4]@5 ~@3 [e4,g#4,b4] ~@8]/2", R: "[e4,a4,c#5]@3 ~@4 [e4,a4,c#5] ~@8",
  S: "[[f#4,a4,d5]@5 ~@2 [f#4,a4,d5] ~@7 [e4,g#4,b4]@6 ~@2 [e4,g#4,b4] ~@8]/2", // D E
  T: "[[e4,g#4,b4] ~@6 e4 e4@3 ~ g#4 ~@2 [e4,a4]@30 ~@3, ~@11 f#4@2 ~@35]/3", // E A5
})).s("gm_acoustic_guitar_steel").gain(0.48)

// chords · brass section · "BRASS 1"
const brass_section = note(`<
  ~ A@2 B@2 ~@87 C D E F G H I J K D L M L N O P Q R S T U V W J X Y@2 Z AA@2 ~
// … 96 more lines

More by Sam Cooke