Strudelify

Proud Mary

Ike & Tina Turner

KeyD majorTempo120 bpm
0:00/0:00
// Proud Mary — Ike & Tina Turner
// 120 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 100 bars on a 16-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.

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~ A@2 B C D@2 E@2 D@2 F@3 G H I J K F D@2 L@2 D@2 L M N@2 G O I J P F Q@2 L A@2 R S T@2 U@2 V@2 W X Y G H I J K Z@3 Y
  A@2 R C AA@2 AB@2 AC@2 AD@2 Y G H I J K AE@2 AF X W@2 Y@2 AG W Y AH AI T@2 W A@2 B AJ@2
>`.pickRestart({
  A: "c3@5 ~ a2 ~ a2@7 ~", B: "c3@6 a2@4 g2@3 ~ f2@2", C: "~@2 f2 ~ f2 ~ f2 ~ f2@3 ~ f2@3 ~",
  D: "[d3@5 ~ d3 ~ d3@2 a2@2 b2@2 d3@7 ~ d3 ~ d3@2 a2@2 b2@2 d3 ~]/2",
  E: "[d3@5 ~ d3 ~ d3@2 a2@2 b2@2 d3@7 ~ d3 ~ d3@2 a2@2 b2@2 d3 ~, ~@10 b2 ~@21]/2",
  F: "d3@5 ~ d3 ~ d3@2 a2@2 b2@2 d3 ~", G: "d3@5 ~ d3 ~ d3@2 f#2@2 g2@2 g#2@2", H: "a2@5 ~ a2@2 e2@5 ~ e2@2",
  I: "a2@5 ~ a2@4 e2@2 f#2@2 a2@2", J: "b2@5 ~ b2@2 f#2@5 ~ f#2@2", K: "b2@5 ~ b2@4 f#2@2 a2@2 b2@2",
  L: "d3@5 ~ d3 ~ d3@2 a2@2 b2@2 a2@2", M: "d3@5 ~ d3 ~ d3@2 a2@2 b2@2 d3@2",
  N: "[d3@5 ~ d3 ~ d3@2 a2@2 b2@2 d3@7 ~ d3 ~ d3@2 a2@2 b2@2 a2@2]/2", O: "a2@5 ~ a2@2 e2@4 ~@2 e2@2",
  P: "b2@5 ~ b2@4 a2@2 b2@2 a2@2", Q: "[d3@5 ~ d3 ~ d3@2 a2@2 b2@2 d3@7 ~ d3 ~ d3@2 a2@2 b2@2 d3@2]/2",
  R: "c3@6 a2@3 ~ g2@3 ~ f2@2", S: "~@2 f2 ~ f2 ~ f2 ~ f2@2 ~@2 f2@3 ~",
  T: "[d3@5 ~ d3@4 a2@2 b2@2 d3@7 ~ d3@4 a2@2 b2@2 a2@2]/2",
  U: "[d3@5 ~ d3@4 a2@2 b2@2 d3@7 ~ d3 ~ d3@2 a2@2 b2@2 d3@2]/2",
  V: "[d3@5 ~ d3@4 a2@2 b2@2 d3@7 ~ d3@4 a2@2 b2@3 ~]/2", W: "d3@5 ~ d3@4 a2@2 b2@2 d3 ~", X: "d3@5 ~ d3@4 a2@2 b2@4",
  Y: "d3@5 ~ d3@4 a2@2 b2@2 a2@2", Z: "[d3@5 ~ d3@4 a2@2 b2@2 d3@7 ~ d3@4 a2@2 b2@2 d3@7 ~ d3@4 a2@2 b2@2 a2@2]/3",
  AA: "[d3@4 ~@2 d3@4 a2@2 b2@2 d3@7 ~ d3@2 a2@2 b2@2 d3@2 b2@2]/2",
  AB: "[d3@4 ~@2 d3 ~ d3@2 a2@2 b2@2 d3@7 ~ d3@4 a2@2 b2@2 a2@2]/2",
  AC: "[d3@4 ~@2 d3 ~ d3@2 a2@2 b2@2 d3@7 ~ d3@4 a2@2 b2@4]/2",
  AD: "[d3@5 ~ d3 ~ d3@2 a2@2 b2@2 d3@7 ~ d3@6 ~@2 d3 ~]/2", AE: "[d3@5 ~ d3@4 a2@2 b2@2 d3@7 ~ d3@4 a2@2 b2@2 d3 ~]/2",
  AF: "d3@5 ~ d3@3 ~ d3@2 a2@2 b2@2", AG: "d3@5 ~ d3@4 a2@2 b2@2 d3@2", AH: "d3@5 ~ d3@4 b2@2 a2@2 b2@2",
  AI: "d3@5 ~ d3@4 a2@2 b2@2 a2 ~", AJ: "[~@2 f2 ~ f2 ~ f2 ~ f2@2 ~@2 d2@13 ~@7]/2",
})).s("gm_acoustic_bass").gain(0.48)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  ~@18 A@2 ~ B C ~@11 D@2 ~ B E ~@6 F G H I J K L M N O P Q ~@2 B E ~@17 R S ~ B C ~@2 B T@2 ~ B E ~@2 B U V W X Y@2
>`.pickRestart({
  A: "[~@2 b4@2 d5@2 e5 ~ [e5,f#5]@2 e5@2 d5@2 e5@4 f#5@11 ~@3]/2", B: "~@7 [f#5,a5]",
  C: "~ [f#5,a5] [e5,g5] [d5,f#5] [e5,g5]@2 [d5,f#5]@2", // F#m Em D Em D
  D: "[~@2 b4@2 d5@2 e5 ~ [e5,f#5]@2 e5@2 d5@2 e5@4 f#5@10 ~@4]/2", // Esus2
  E: "~@2 [f#5,a5]@2 [e5,g5]@2 [d5,f#5]@2 [e5,g5]@4 [d5,f#5]@3 ~", // F#m Em D Em D
  F: "~@2 f#4 d5@2 f#4 d5 ~ [g4,e5] ~ [f#4,d5]@3 ~ [g4,e5] ~", G: "[g#4,f5] ~ [a4,f#5]@13 ~",
  H: "~@2 f#4 d5@2 f#4 d5 f#4 [g4,e5]@2 [f#4,d5]@4 [g4,e5]@2", I: "[f#4,d5]@3 ~",
  J: "~@2 f#4 d5@2 ~ d5 ~ [g4,e5]@2 [f#4,d5]@4 [g4,e5] ~, ~@5 f#4@2 ~@9", K: "[g#4,f5]@3 [a4,f#5]@10 ~@3",
  L: "~@2 f#4 d5@2 f#4 d5 ~ [g4,e5]@2 ~ [f#4,d5]@2 ~ [g4,e5] ~", M: "~ f#4@12 ~@3, d5@13 ~@3",
  N: "a4 ~@2 a4!2 ~ b4 ~ c#5!2 ~ c#5!2 ~ d5 ~", O: "c#5!2 ~ c#5!2 ~ b4 ~ a4@8",
  P: "b4!2 ~ b4!2 ~ c#5 ~ d5!2 ~ d5!2 ~ e5 ~", Q: "d5!2 ~ d5 d5@2 c#5@2 b4@6 ~@2", R: "~ b4 d5 e5 f5 e5 d5 b4",
  S: "e5@2 f#5@11 ~@3", T: "[~@2 [f#5,a5]@2 [e5,g5]@2 [d5,f#5]@2 [e5,g5]@4 [d5,f#5]@7 ~@13]/2",
  U: "~@2 [f#5,a5]@2 [e5,g5]@2 [d5,f#5]@2 [e5,g5]@4 [d5,f#5] ~@3", V: "[e4,g4,c5]@5 ~ [c#4,e4,a4]@8 ~@2",
  W: "[e4,g4,c5]@5 ~ [c#4,e4,a4]@7 ~@3", X: "[e4,g4,c5]@5 ~ [c#4,e4,a4] ~@3 [b3,d4,g4]@2 ~@2 [a3,c4,f4]@2",
  Y: "[~@2 [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~@3 [d3,a3,d4]@20]/2", // F D5
})).s("gm_overdriven_guitar").gain(0.44)

// chords · brass section · "BRASS 1"
const brass_section = note(`<
  ~ A B C@2 D ~@15 E F ~@14 E G H I J@2 K@2 ~@14 E L M I N@2 O@2 ~@14 E F ~@2 E F ~@2 E F ~@2 E P Q R S@3
>`.pickRestart({
  A: "[e5,g5,c6]@3 ~ [e5,g5,c6] ~ [c#5,e5,a5]@9 ~", B: "[e5,g5,c6]@2 ~@2 [e5,g5,c6] ~ [c#5,e5,a5]@9 ~",
  C: "[[e5,g5,c6]@3 ~ [e5,g5,c6] ~ [c#5,e5,a5]@3 ~ [d5,g5,b5]@3 ~ [f5,a5,c6]@9 ~ [f5,a5,c6]@2 ~@2 [f5,a5,c6]@2 ~@2, ~@28 b5 ~@3]/2", // C A G F
  D: "[f#5,a5,d6]", E: "~@7 [a4,f#5]", F: "~ f#5 [g4,e5] [f#4,d5] [g4,e5]@2 [f#4,d5]@2, ~@2 a4 ~@13",
  G: "~@2 f#5@2 [g4,e5]@2 [f#4,d5]@2 [g4,e5]@4 [f#4,d5]@3 ~, ~@2 a4 ~@13", // C D C D
  H: "[e5,g5,c6] ~ [e5,g5,c6] [e5,a5]@4 ~, ~@3 c#5@3 ~@2", // C A5
  I: "[e5,g5,c6]@2 ~@2 [e5,g5,c6]@2 [e5,a5]@9 ~, ~@6 c#5@7 ~@3", // C A5
  J: "[[e5,g5,c6] ~ [e5,g5,c6] ~ [e5,g5,c6] ~ [c#5,e5,a5]@2 ~@2 [d5,g5,b5]@2 ~@2 [f5,a5,c6]@12 ~@2 [f5,a5,c6]@2 ~@2]/2", // C A G F
  K: "[[f#5,a5,d6]@3 ~]/2", L: "~@2 [a4,f#5]@2 [g4,e5]@2 [f#4,d5]@2 [g4,e5]@4 [f#4,d5]@3 ~",
  M: "[e5,g5,c6]@5 ~ [c#5,e5,a5]@8 ~@2", // C A
  N: "[[e5,g5,c6] ~ [e5,g5,c6] ~ [e5,g5,c6] ~ [c#5,e5,a5]@3 ~ [d5,g5,b5]@3 ~ [f5,a5,c6]@13 ~ [f5,a5,c6]@3 ~]/2", // C A G F
  O: "[[f#5,a5,d6]@21 ~@11]/2", P: "~ [a4,f#5] [g4,e5] [f#4,d5] [g4,e5]@2 f#4 ~, ~@12 d5 ~@3",
  Q: "[e5,g5,c6]@3 ~ [e5,c6] ~ [e5,a5]@9 ~, ~@4 g5@2 c#5@7 ~@3", R: "[e5,g5,c6]@2 ~@2 [e5,g5,c6]@2 [c#5,e5,a5]@9 ~",
  S: "[[e5,g5,c6] ~ [e5,g5,c6] ~ [e5,g5,c6] ~ [c#5,e5,a5]@2 ~@2 [b4,d5,g5]@2 ~@2 [f5,a5,c6]@9 ~ [f5,a5,c6]@2 ~@2 [d5,f#5,d6]@7 ~@13]/3", // C A G F D
})).s("gm_brass_section").gain(0.45)

// chords · piano · "A.PIANO 2"
const piano = note(`<
  ~ A B C D E@2 F@7 G H@2 I@5 J@2 F@6 K L@8 M N O@2 P@2 Q F@3 R F R S T@4 U@3 V W M X@2 Y@2 Z F@6 AA AB AC AD@2 AE@3
  AF@4 AG@4 AH@4 AI AJ AK AL@3
>`.pickRestart({
  A: "[c3,e4]@5 ~ [a2,c#4,e4,a4]@7 ~@3, [g4,c5]@3 ~@13", B: "[c3,e4]@5 ~ [a2,c#4,e4,a4]@6 ~@4, [g4,c5]@3 ~@13",
  C: "[c3,e4]@5 ~ [a2,e4]@2 ~@2 [g2,d4,g4,b4]@3 ~ [f2,f4,a4,c5]@2, [g4,c5]@3 ~@3 [c#4,a4] ~@9", // C A5 G F C5 F#m
  D: "~@2 [f2,f4,a4,c5] ~ [f2,f4,a4,c5] ~ [f2,f4,a4,c5] ~ [f2,c5]@2 ~@2 [f2,f4,a4,c5] ~@3, ~@8 [f4,a4] ~@7", // F F5 F
  E: "[[f#4,a4,d5]@4 ~@17 e4 ~@2 d5@6 ~@2, d2@6 d4@4 a3@5 ~, ~@4 d3@10 f#4@6 ~@2 f#4@9 ~, ~@10 a3@8 d3@13 ~]/2", // D
  F: "~@4 [a3,d4,f#4] ~ [a3,d4,f#4] ~@5 [a3,d4,f#4] ~ [a3,d4,f#4] ~", // D
  G: "~@4 [a3,d4,f#4] ~ [a3,d4,f#4] ~ [d4,f#4] ~ [a3,d4,f#4] ~@3 a3 ~", // D
  H: "[~@4 a3@2 ~ a2@3 ~ b3 ~ a4@3, [c#4,e4]@15 ~@9 c#4@8, a3@4 e3@10 ~@7 e3@9 ~@2, ~ a2@5 ~@4 a2@4 ~@2]/2", // C#m
  I: "[~@10 f4 ~@3 d4@15 ~@13 d4@3 ~@13 d4@2 ~@2 [f#4,a4]@3 ~ [f#4,a4]@2 [e4,g4]@2 [d4,f#4]@2 [e4,g4]@4 d4@2 [f#4,a4]@2, ~ f#3@13 ~@2 [d3,f#4]@7 ~ d3@6 ~@10, ~@4 b3@22 ~@4 d4@10 ~@6 d4@11 ~@5 a3@14 ~@4, ~@11 f#4@19 ~@4 [f#3,a4]@12 ~@6 a3@8 f#3@16 ~@4, ~@12 b4@18 ~@8 a3@9 ~@3 a4@11 ~@15 f#4 ~@3]/5", // F#m Em D Em F#m D F#m
  J: "[~@2 [f#4,a4]@2 [e4,g4]@2 [d4,f#4] ~ [e4,g4]@4 [a3,d4,f#4]@6 d4 ~@9 [a3,d4,f#4] ~ [a3,d4,f#4] ~, d3@17 ~@15, ~@4 f#3@5 ~@7]/2", // F#m Em D Em D
  K: "~@4 [a3,d4,f#4] ~ [a3,d4,f#4] ~@9", // D
  L: "[~@4 [a3,c#4,e4]@6 ~@4 a3@3 ~@5 a4@8 ~@4 [f3,f#3] ~@5 [f4,b4]@2 [f#4,b4]@4 [f4,b4]@2 ~@10 d3@3 ~@21 d4@4 f#4@6 d4 ~ [d4,f#4]@2 ~@2 [d4,f#4]@2 e4@2 d4@2 e4@4 d4 ~ [f#4,a4]@2 ~@2 [f#4,a4]@2 [e4,g4]@2 [d4,f#4] ~ [e4,g4]@4 [d4,f#4] ~@3, ~@10 a2@17 ~@27 b3@7 ~@3 f#3@6 d4@8 f#3@15 d3@13 ~@4 d3@11 ~@7, ~@12 e3@5 ~ e3@10 ~@8 f#3@25 ~ d3@8 f#4@10 a3@13 ~ f#3@12 ~@6 f#3@9 ~@7, ~@19 b3@2 ~@9 b3@4 ~@4 b3@9 ~@5 d4@14 a3@10 d3@10 d4@5 ~@5 a3@10 ~@10 a3@5 ~@7, ~@20 c#4@10 ~@2 [d4,f#4]@5 ~@9 f#4 ~ [f#4,b4]@12 ~@10 a4@39 ~@19]/8", // A F#maj7 Fdim B5 Fdim D F#m Em …
  M: "[c4,e4,g4,c5]@2 ~ [a3,c#4,e4,a4]@3 ~@2", N: "[c4,e4,g4,c5]@3 ~@3 [a3,c#4,e4,a4]@7 ~@3",
  O: "[[c4,e4,g4,c5]@4 ~@2 [a3,c#4]@2 ~@2 [g3,b3,d4,g4]@2 ~@2 [f3,c4,f4,a4]@4 [f3,c4,f4,a4] ~ [f3,c4,f4,a4] ~ [f3,c4,f4,a4] ~ [f3,c4,f4,a4] ~@3 [f3,c4,f4,a4] ~@3, ~@6 [e4,a4] ~@25]/2", // C A G F A5
  P: "[a3@4 ~@6 d4@2 ~@4 e4 ~ d5@4 ~@3 e4 ~@2 d4@4, [f#4,a4]@13 ~@4 f#4@8 ~ f#4@6, d3@11 ~ d3@9 ~ d3@10, d4@3 a3@3 ~ a3@4 ~ a3@4, ~ f#3@2 ~@5]/2", // F#m
  Q: "~@2 [d4,f#4] ~ [a3,b3,d4,f#4] ~ [a3,d4,f#4] ~@5 [a3,d4,f#4] ~ [a3,d4,f#4] ~", // D Bm7 D
  R: "~@4 [a3,d4,f#4] ~ [a3,d4,f#4] ~@5 [a3,d4,f#4] ~@3", S: "~@4 [a3,d4,f#4] ~ [a3,d4,f#4] ~@3 [a3,d4,f#4]@4 a3 ~",
  T: "[~@2 a2 ~@5 a3@3 ~@9 a4@10 ~@6 b3 ~ d4@2 [f4,b4]@2 ~@18 [d4,f#4]@2 ~@2, [c#4,e4]@14 ~@3 b3@2 ~@11 b3@6 ~@10 d4@10 ~@2 b3@4 ~@2, a3@6 e3@8 ~@2 e3@13 ~@6 f#3@16 ~@5 f#3@7 ~, ~@4 a2@8 ~@2 a2@14 ~@3 b2@3 ~@20 d3@8 ~@2, ~@18 c#4@12 ~@2 d4@5 ~@5 [f#4,b4]@13 ~@9]/4", // Fdim D C#m B5
  U: "[d4@10 ~@2 d4 ~ d4@5 ~@3 d3@2 ~@6 [f#4,a4]@3 ~ [f#4,a4]@2 [e4,g4]@2 [d4,f#4] ~ [e4,g4]@4 [d4,f#4] ~ [a3,f#4,a4]@2, [a3,f#4]@13 ~ f#4@14 ~@20, ~@10 f#3@12 ~@2 f#3@13 ~@11, ~@14 a3@9 ~@5 a3@9 ~@11, ~@20 d4@5 ~ d4@4 ~@18]/3", // F#m Em D Em D
  V: "~@2 [f#4,a4]@2 [g3,g4] ~ [f#3,d4,f#4] ~ [g3,e4,g4]@4 [f#3,d4,f#4] ~@3, ~@2 a3 ~ e4@2 ~@10", // F#m G D C D
  W: "[c4,e4]@5 ~ [a3,e4,a4]@7 ~@3, [g4,c5]@3 ~@3 c#4@5 ~@5", // C A5 C5
  X: "[[c4,e4,g4,c5]@3 ~@3 [a3,c#4,e4,a4]@2 ~@2 [g3,b3]@2 ~@2 [f3,a3,c4,f4]@5 ~ [f3,a3,c4,f4] ~ [f3,a3,c4,f4] ~ [f3,a3,c4,f4]@2 ~@2 [f3,c4]@2 ~@2, ~@10 [d4,g4] ~@17 [a3,f4] ~@3]/2", // C A G F F5 G5 Dm
  Y: "[[a3,d4,f#4]@2 ~@2 a3@6 ~@8 e4 ~@7 e4 ~ d4@4, d3@9 ~ d3@10 d5@9 ~@3, ~@2 f#3@8 ~@2 f#3@11 ~@9, ~@14 a3@9 ~@9, ~@19 f#4@7 ~ f#4@3 ~@2]/2", // D
  Z: "~@2 f#4 ~ [a3,d4,f#4] ~ [a3,d4,f#4] ~@5 [a3,d4,f#4] ~ [a3,d4,f#4] ~", // D
  AA: "~@4 [a3,d4,f#4] ~ [a3,d4,f#4] ~@5 [a3,d4,f#4]@3 ~", AB: "~@4 [a3,c#4,e4] ~ [a3,c#4,e4]@10",
  AC: "~@4 b3 ~ a4@10, a2@3 ~, ~@2 e3@11 ~@3, ~@5 c#4@11",
  AD: "[~@8 [f4,b4]@2 a#4 ~@11 b3@8 ~@2, b2@10 [f#4,b4]@13 ~@9, ~@2 d3@9 ~@3 d4@8 ~@10, ~@6 f#3@12 d3@9 ~@5, ~@20 f#3@11 ~]/2", // Fdim B5
  AE: "[~@4 f#3@6 ~@2 e4@2 ~@8 d4@3 ~ d4@2 ~@2 [d4,f#4]@3 ~ [d4,f#4]@2 e4@2 d4@2 e4@4 d4@2 [a3,f#4,a4]@2, ~@4 [a3,d4,f#4]@8 a4@33 ~@3, ~@10 d3@27 ~@11, ~@14 f#4@15 ~ a3@7 ~@11, ~@14 d4@4 f#3@2 a3@7 ~ f#3@9 ~@11]/3", // D
  AF: "[~@2 [a3,f#4] ~ [g3,e4,g4]@2 [f#3,d4] ~ [g3,e4,g4]@4 [f#3,d4,f#4] ~ [f#3,a3]@6 ~@6 d4@2 ~@2 d4@7 ~@9 [d4,f#4]@3 ~ [d4,f#4]@2 e4@2 d4@2 e4@4 d4@2 [a3,f#4,a4]@2, ~@2 a4@2 ~@2 f#4@2 ~@6 f#4@14 ~@2 f#4@15 ~@19, ~@14 d4@10 a3@5 ~ a3@12 f#3@20 ~@2, ~@14 d3@5 ~ d3@9 ~@35, ~@11 f#3@3 f#3@4 ~ d4@3 a3@8 ~@2]/4", // D C D C D F#m D
  AG: "[~@2 [a3,f#4] ~ [e4,g4]@2 [d4,f#4] ~ [g3,e4,g4]@4 [f#3,d4,f#4] ~ d4@7 ~ d4@3 ~ d4@3 ~ d4@6 ~@6 d4@3 ~ [d4,f#4]@3 ~ [d4,f#4]@2 [g3,e4]@2 [f#3,d4]@2 [g3,e4]@4 f#3@2 [a3,f#4,a4]@2, ~@2 a4@2 g3 ~ f#3@2 ~@6 [f#3,a3,f#4]@15 ~ [f#3,a3]@15 ~ [f#3,a3]@6 ~@12, ~@30 f#4@8 f#4@7 ~@19, ~@36 d4@5 ~@19 d4 ~@3]/4", // D Em D C D C D C …
  AH: "[~@2 [a3,a4]@2 [g3,e4,g4]@2 [d4,f#4] ~ [g3,e4,g4]@4 [f#3,d4,f#4] ~ [f#3,a3,d4,f#4]@15 ~ [f#3,d4,f#4]@15 ~ [d4,f#4]@3 ~ d4@2 e4@2 d4@2 e4@4 d4 ~ [a3,f#4,a4]@2, ~@2 f#4 ~@3 f#3@2 ~@22 a3@12 ~@4 [f#3,a3]@14 ~@2 f#3 ~, ~@50 f#4@11 ~@3]/4", // A C D C D F#m
  AI: "~@2 [a3,f#4,a4] ~ [g3,e4,g4] ~ [f#3,d4,f#4] ~ [g3,e4,g4]@3 ~ [f#3,d4,f#4] ~@3", // D C D C D
  AJ: "[c4,e4,g4,c5]@4 ~@2 [a3,c#4,e4,a4]@7 ~@3", AK: "[c4,e4,g4,c5]@5 ~ [a3,c#4,e4,a4]@7 ~@3",
  AL: "[[c4,e4,g4,c5]@4 ~@2 [a3,c#4,e4,a4]@2 ~@2 [g3,b3,d4,g4]@2 ~@2 [f3,c4,f4,a4]@7 ~ [f3,c4,f4,a4] ~ [f3,c4,f4,a4] ~ a3 ~ [d3,a3,f#4,a4,d5]@20]/3", // C A G F D
})).s("gm_piano").gain(0.4)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~ A@2 B@2 C@8 ~@2 D@2 E@2 C@8 ~@4 D@2 E@2 F@4 A G B@2 C@8 ~@2 H@2 E@2 F@4 I J K@2 C@8 ~@2 H@2 E@2 C@8 ~@8 G@2 L@3
>`.pickRestart({
  A: "[e4,g4,c5]@5 ~ [c#4,e4,a4]@9 ~", B: "[[e4,g4,c5]@5 ~ [c#4,e4,a4]@4 [b3,d4,g4]@3 ~ [a3,c4,f4]@16 ~@2]/2",
  C: "[a3,d4,f#4]/8", D: "[a3,c#4,e4]/2", E: "[[b3,d4,f#4]@31 ~]/2", F: "[[a3,d4,f#4]@61 ~@3]/4",
  G: "[e4,g4,c5]@3 [c#4,e4,a4]@5", H: "[[a3,c#4,e4]@31 ~]/2", I: "[e4,g4,c5]@6 [c#4,e4,a4]@9 ~",
  J: "[e4,g4,c5]@6 [c#4,e4,a4]@9 ~, c#4 ~@15", // C A
  K: "[[e4,g4,c5]@6 [c#4,e4,a4]@4 [b3,d4,g4]@3 ~ [a3,c4,f4]@12 ~@2 [a3,c4,f4]@3 ~]/2", // C A G F
  L: "[[e4,g4,c5]@6 [c#4,e4,a4]@4 [b3,d4,g4]@3 ~ [a3,c4,f4]@12 ~@2 [d3,a3,d4,f#4]@19 ~]/3", // C A G F D
})).s("gm_string_ensemble_1").gain(0.4)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~ A B C D E F G H I H J@2 K J L M N@2 O P@4 J K P J O Q R M@2 S T O@2 P U V W C X J K O@3 Y P O@2 Z L AA S AB J P J AC
  B A AD AE J@2 O@3 K P K J AF L@2 S T K P O@2 J P K J P J P J@2 AG R AC B A AD AH ~
>`.pickRestart({
  A: "[e5,g5,c6]@5 ~ [c#5,e5,a5]@9 ~", B: "[e5,g5,c6]@3 ~ [e5,g5,c6] ~ [c#5,e5,a5]@9 ~",
  C: "[e5,g5,c6]@5 ~ [c#5,e5,a5]@2 ~@2 [b4,d5,g5]@2 ~@2 [a4,c5,f5]@2", // C A G F
  D: "~@2 [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5]@2 ~@2 [a4,c5,f5] ~@3", // F
  E: "[a4,d5,f#5]@2 [a4,d5,f#5]@2 ~@2 [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~@3 [a4,d5,f#5] ~", // D
  F: "[a4,d5,f#5] ~ [a4,d5,f#5] ~@3 [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~", // D
  G: "[a4,d5,f#5] ~ [a4,d5,f#5] ~@3 [a4,d5,f#5]@2 [a4,d5,f#5] ~ [a4,d5,f#5] ~@3 [a4,d5,f#5] ~", // D
  H: "[a4,d5,f#5] ~ [a4,d5,f#5] ~@3 [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~@3 [a4,d5,f#5] ~", // D
  I: "[a4,d5,f#5] ~ [a4,d5,f#5]@2 ~@2 [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~@3 [a4,d5,f#5] ~", // D
  J: "[a4,d5,f#5] ~ [a4,d5,f#5]@2 ~@2 [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5]@2 ~@2 [a4,d5,f#5] ~", // D
  K: "[a4,d5,f#5] ~ [a4,d5,f#5]@3 ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5]@2 ~@2 [a4,d5,f#5] ~", // D
  L: "[a4,c#5,e5] ~ [a4,c#5,e5]@3 ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5]@3 ~ [a4,c#5,e5] ~", // A
  M: "[a4,c#5,e5] ~ [a4,c#5,e5]@2 ~@2 [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5]@3 ~ [a4,c#5,e5] ~", // A
  N: "[b4,d5,f#5] ~ [b4,d5,f#5]@3 ~ [b4,d5,f#5] ~ [b4,d5,f#5] ~ [b4,d5,f#5]@3 ~ [b4,d5,f#5] ~", // Bm
  O: "[a4,d5,f#5] ~ [a4,d5,f#5]@3 ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5]@3 ~ [a4,d5,f#5] ~", // D
  P: "[a4,d5,f#5] ~ [a4,d5,f#5]@2 ~@2 [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5]@3 ~ [a4,d5,f#5] ~", // D
  Q: "~@2 [a4,d5,f#5]@2 ~@2 [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5]@3 ~ [a4,d5,f#5] ~", // D
  R: "[a4,d5,f#5] ~ [a4,d5,f#5]@2 ~@2 [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~", // D
  S: "[b4,d5,f#5] ~ [b4,d5,f#5]@2 ~@2 [b4,d5,f#5] ~ [b4,d5,f#5] ~ [b4,d5,f#5]@2 ~@2 [b4,d5,f#5] ~", // Bm
  T: "[b4,d5,f#5] ~ [b4,d5,f#5]@3 ~ [b4,d5,f#5] ~ [b4,d5,f#5] ~ [b4,d5,f#5]@2 ~@2 [b4,d5,f#5] ~", // Bm
  U: "[a4,d5,f#5] ~ [a4,d5,f#5]@2 ~@2 [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5]@3 ~@3", // D
  V: "[e5,g5,c6] ~ [e5,g5,c6]@3 ~ [c#5,e5,a5]@9 ~", W: "[e5,g5,c6]@3 ~ [e5,g5,c6]@2 [c#5,e5,a5]@9 ~",
  X: "~@2 [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5]@2 ~@2 [a4,c5,f5]@2 ~@2", // F
  Y: "[a4,d5,f#5] ~ [a4,d5,f#5]@2 ~@2 [a4,d5,f#5]@3 ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~", // D
  Z: "[a4,d5,f#5] ~ [a4,d5,f#5]@2 ~@2 [a4,d5,f#5]@3 ~ [a4,d5,f#5]@3 ~ [a4,d5,f#5] ~", // D
  AA: "[a4,c#5,e5] ~ [a4,c#5,e5]@3 ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5]@2 ~@2 [a4,c#5,e5] ~", // A
  AB: "[b4,d5,f#5] ~ [b4,d5,f#5]@2 ~@2 [b4,d5,f#5] ~ [b4,d5,f#5] ~ [b4,d5,f#5]@3 ~ [b4,d5,f#5] ~", // Bm
  AC: "[a4,d5,f#5] ~ [a4,d5,f#5]@3 ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5]@4 ~@2", // D
  AD: "[e5,g5,c6]@3 ~ [e5,g5,c6] ~ [c#5,e5,a5]@3 ~ [b4,d5,g5]@2 ~@2 [a4,c5,f5]@2", // C A G F
  AE: "~@2 [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~@3 [a4,c5,f5] ~@3", // F
  AF: "[a4,d5,f#5] ~ [a4,d5,f#5]@2 ~@2 [a4,d5,f#5] ~@3 [a4,d5,f#5]@2 ~@2 [a4,d5,f#5] ~", // D
  AG: "[a4,d5,f#5] ~ [a4,d5,f#5] ~@3 [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5]@2 ~@2 [a4,d5,f#5] ~", // D
  AH: "~@2 [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~@3 [a4,d5,f#5]@4", // F D
})).s("gm_electric_guitar_muted").gain(0.32)

// drums · kick
const kick = s("bd").struct("<~ A@3 B C@34 A@3 B C@18 A@4 C@30 A@3 B ~>".pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x ~@2 x!2 ~ x ~", C: "x ~@3 x!2 ~ x",
})).gain(0.48)

// drums · snare
const snare = s("sd").struct(`<
  A B C D E C F D C D C@4 G D H D C D C D I C D C@3 D@2 J D K D@5 L C@3 M D H C@3 D C@2 D N D O D@3 C@2 P Q C@2 F D R
  D@2 C@2 D@3 R D H D@2 C D C S C D C T D@3 I D@3 I Q B C U ~
>`.pickRestart({
  A: "~@8 x ~@2 x!2 ~@3", B: "~@4 x ~@7 x ~@2 x", C: "~ x ~ x", D: "~@4 x ~@2 x ~@4 x ~@3", E: "~@4 x ~@6 x!5",
  F: "~@4 x ~@2 x!5 ~@4", G: "~ x ~@2", H: "~@4 x ~@2 x!4 ~@5", I: "~@4 x ~@2 x!4 ~ x!2 ~@2",
  J: "~@4 x ~@2 x ~ x!2 ~@5", K: "~@4 x ~@2 x ~@8", L: "~@4 x ~@2 x!2 ~ x ~ x!2 ~@2", M: "~@4 x ~ x!7 ~@3",
  N: "~@4 x ~@2 x ~@2 x ~ x!2 ~@2", O: "~@4 x ~@5 x ~ x!2 ~@2", P: "~@4 x ~@2 x ~@4 x!3 ~", Q: "~@4 x ~@7 x!3 ~",
  R: "~@4 x ~@2 x ~@2 x!2 ~@4", S: "~@4 x ~@5 x!3 ~ x!2", T: "~@4 x ~@2 x ~@2 x ~ x!2 ~ x", U: "~@4 x ~ x!3 ~@3 x ~@3",
})).gain(0.48)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@4 A B ~@2 B ~ B@5 ~@3 B ~ B ~@2 B ~ B@3 ~@2 C ~@14 B@3 ~ B@2 ~@3 B ~@3 B@2 ~@4 D ~@4 B@2 ~@8 B ~ B@3 ~ B ~@14
>`.pickRestart({
  A: "~@5 x ~@2", B: "~@7 x ~@8", C: "~ x", D: "~@3 x ~@4",
})).gain(0.32)

// drums · low tom
const low_tom = s("lt").struct("<~@6 A ~@7 B ~ A ~@13 A ~ C ~@11 A ~@21 A ~@7 A ~ B ~@23>".pickRestart({
  A: "~@15 x", B: "~@7 x", C: "~@14 x!2",
})).gain(0.48)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@3 B A C A@7 D A D A@5 D A@7 C A@7 D A@3 B A C A@7 D A D A@9 B A E A@7 D A E A F A@7 G A@3 D A@3 D A@3 B ~
>`.pickRestart({
  A: "x!8", B: "x!5 ~ x ~", C: "x!6 ~@2", D: "x!4 ~@4", E: "x!5 ~@3", F: "x!6 ~ x", G: "x!4 ~ x ~@2",
})).gain(0.4)
// … 24 more lines

More by Ike & Tina Turner