Strudelify

For You Blue

The Beatles

KeyC majorTempo135 bpm
0:00/0:00
// For You Blue — The Beatles
// 135 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 2 "PIANO" named as a piano, played on piano (its acoustic guitar steel patch is not one); ch 4 "PIANO" named as a piano, played on piano (its acoustic guitar steel patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 54 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(135/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 · electric bass finger · "BASS"
const bass = note(`<
  ~ A B C D E B C F G B F H D B C A E B C I J B F H D B C D E B C I J B F H A B C A E B C I G B F K F L M N ~
>`.pickRestart({
  A: "c2@2 ~@2 c2@2 d2@2 ~@2 d2@2 d#2@3 ~ d#2@2 e2@3 ~ e2@2",
  B: "f2@2 ~@2 f2@2 f2@2 ~@2 f2@2 d2@2 ~@2 d2@2 c#2@3 ~ c#2@2",
  C: "c2@2 ~@2 c2@2 c2@2 ~@2 c2@2 a1@2 ~@2 a1@2 g1@3 ~ g1@2", D: "c2@3 ~ c2@2 c2@2 ~@2 c2@2 a1@2 ~@2 a1@2 g1@3 ~ g1@2",
  E: "f2@2 ~@2 f2@2 f2@2 ~@2 f2@2 d2@2 ~@2 d2@2 c2@3 ~ c2@2", F: "c2@3 ~ c2@2 e2@3 ~ e2@2 f2@3 ~ f2@2 f#2@3 ~ f#2@2",
  G: "g2@2 ~@2 g2@2 b1@2 ~@2 b1@2 c2@2 ~@2 c2@2 d2 ~ g2@2 f#2@2",
  H: "g2@2 ~@2 g2@2 g2@3 ~ g2@2 e2@2 ~@2 e2@2 d2@3 ~ d2@2",
  I: "c2@3 ~ c2@2 e2@2 ~@2 e2@2 f2@2 ~@2 f2 ~ f#2@2 c2@2 f#2@2", J: "g2@3 ~ g2@2 b1@3 ~ b1@2 c2@3 ~ c2@2 d2@4 e2@2",
  K: "g2 ~ g2!2 ~ g2 e2 ~ e2 d2 ~ d2", L: "g2@4 g1 ~ g2@5 ~ f2@4 f1 ~ f2@5 ~",
  M: "c2@2 ~@2 c2@2 c2@2 ~@2 c2 ~ a1@2 ~@2 a1 ~ g#1 ~@3 g#1@2", N: "g1@3 ~ a1 ~ b1@4 c2@3 ~@6 c2@5",
})).s("gm_electric_bass_finger").gain(0.8)

// chords · piano
const piano = note(`<
  ~ A B C D B E F D G E F H F B F I J K D@2 L M I N O P O Q R@2 O Q S B F S T B F C E J U I V E I H T W X Y ~
>`.pickRestart({
  A: "[c4,e4,g4]@3 ~ a3 c4 [a3,b3] g3 ~@8 c3 ~ [c4,e4]@4 ~@2, c3 ~@2 d#4@2 ~@19, ~@2 [g3,c#4] ~@9", // C Asus2 C Gdim
  B: "[f4,a4,c5]@8 ~@2 f3@2 [f4,a#4,d5]@4 f3 ~ [f4,a4,c5]@4 ~@2", C: "~@2 [g3,c4,e4,g4]@9 ~",
  D: "[g3,c4]@17 ~ [g3,c4]@4 ~@2, [e4,g4]@11 ~", E: "[a4,c5]@16 f3@2 [f4,a4,c5]@3 ~@3, f4@5 ~@3", F: "[g3,e4]@23 ~",
  G: "[g3,b3,d4]@8 ~@2 g2@2 [g3,c4,e4]@4 g2 ~ [g3,b3,d4]@4 ~@2", H: "[b3,d4]@16 g2@2 [g3,b3,d4]@3 ~@3, g3@5 ~@3",
  I: "[e4,g4]@16 c3@2 [c4,e4,g4]@3 ~@3, c4@5 ~@3", J: "[a3,f4]@23 ~", K: "~@2 [a3,c4,f4,a4]@9 ~",
  L: "~@2 [b3,d4,g4,b4]@9 ~", M: "[a3,c4]@17 ~ [a3,c4]@4 ~@2, [f4,a4]@11 ~", N: "[d4,b4]@6 b3@2 [d4,b4] b3@2 ~",
  O: "[c4,e4,g4]@10 c3 ~ [c4,e4,g4]@4 c3@2 [c4,e4,g4]@4 ~@2", P: "f4@14 [c4,a4] ~ c3 ~ [c4,f4,a4]@3 ~@3, c4@13 ~@11",
  Q: "e4@14 [c4,g4] ~ c3 ~ [c4,e4,g4]@3 ~@3, c4@13 ~@11", R: "[c4,f4,a4]@10 c3 ~ [c4,f4,a4]@4 c3@2 [c4,f4,a4]@4 ~@2",
  S: "[b3,d4]@17 ~ [b3,d4]@4 ~@2, [g4,b4]@11 ~", T: "c4@17 ~ c4@4 ~@2, g4@11 ~, g3 ~@23",
  U: "[c4,e4,g4]@8 ~@2 c3@2 [c4,f4,a4]@4 c3 ~ [c4,e4,g4]@4 ~@2", V: "[b3,g4]@23 ~",
  W: "[b3,g4]@12 ~@8 f4@3 ~, ~ g#3, ~@16 c4@7 ~", X: "~@4 c5@2 [c4,e4,g4]@5 ~ [a3,d#4,f#4]@4 c4 ~ [g#3,d4,f4]@4 ~@2",
  Y: "[g3,c4,e4]@3 ~@3 [c#3,b3,d#4]@4 [c3,e3,c4,d4]@8 ~@6, ~@3 f3 ~@8", // C G#m C
})).s("gm_piano").gain(0.36).pan(0.9)

// chords · acoustic guitar steel · "GUITAR"
const acoustic_guitar_steel = note(`<
  ~ A B A C D B C@2 E F A G H B A@2 B F A@2 G B C I H F H A F B C A G D H G A D A C F B C H E B C I H J ~@3
>`.pickRestart({
  A: "[g3,c4,e4]@3 ~@13 c4@2 e4@2 ~@2 c5@2", B: "[a3,c4,f4]@3 ~@13 f4@2 a4@2 ~@2 f5@2", C: "[g3,c4,e4] ~@7",
  D: "[a3,c4,f4] ~@7", E: "[g3,b3,d4] ~@7", F: "[a3,c4,f4]@5 ~@11 f3 ~ [a3,c4,f4]@2 ~@4",
  G: "[g3,b3,d4]@5 ~@11 g2 ~ [g3,b3,d4]@2 ~@4", H: "[g3,c4,e4]@5 ~@11 c3 ~ [g3,c4,e4]@2 ~@4",
  I: "[g3,b3,d4]@3 ~@13 g3@2 b3@2 ~@2 g4@2", J: "~@4 g2@2 [g3,b3,d4]@3 ~@3 [g#3,c4,f4]@3 ~@9",
})).s("gm_acoustic_guitar_steel").gain(0.16).pan(0.9)

// chords · acoustic guitar steel · "GUITAR" · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~ A B A ~@2 B ~@4 A ~@2 B A@2 B ~ A@2 ~ B ~ C ~@3 A ~ B ~ A ~@4 A ~ A ~@2 B ~@3 B ~ C ~@5
>`.pickRestart({
  A: "~@10 g4 ~", B: "~@10 c5 ~", C: "~@10 d4 ~",
})).s("gm_acoustic_guitar_steel").gain(0.1).pan(0.9)

// chords · piano
const piano_2 = note("<~ A@3 B@2 C@7 D E@6 F@3 G H@2 I J@4 K L M N O P@5 Q@4 R@2 S T@2 U V W@2>".pickRestart({
  A: "[~@7 c4 ~@2 e4 ~ c3@4 [c4,g4]@2 c3@3 g#4 g4 ~ a4@3 ~@2 f3@5 ~ f3@5 ~@2 f3@4 [d#4,e4] c3@5 ~@14 c3@4 c4@2, ~@6 [c3,e4]@4 [c4,g4]@5 ~@8 f3@4 c5@19 ~@6 c4@5 c4@7 c4@6 ~@2, ~@27 f4@11 ~@2 f4@6 ~ e4@3 ~@2 g4@20, ~@9 c3!2 ~]/3", // C5 Emaj7 C C5
  B: "[c5@2 ~@16 c3@4 g#4 ~ g4 ~@11 f3@4 ~ f3@5 f4@2, c3@6 c3@6 ~ c3@5 ~@5 [f3,a4]@4 ~@3 f3@6 ~@12, c4 ~@3 c5@18 ~@6 c5@19 ~, ~@4 c4@6 c4@6 c4@6 ~@6 f4@4 ~ f4@6 ~ f4@6 ~@2]/2", // F
  C: "[[f4,f5]@4 ~@14 f3@3 d#4 ~ e4@3 ~@16 c3@3 d#4 e4 [c3,e4]@5 ~@14 c3@3 a#4 ~@2 b4@3 ~@15 g3@3 g#4 a4 ~@13 f3@4 ~@5 c4@2 ~ c3@5 ~ e3@4 ~@2 [f3,f4]@3 ~@3 f#4 g4 ~@4 g4@3 ~@18 d#4@2 d#4, f3@6 f3@6 f3@6 ~@5 c3@6 c3@6 ~ c3@6 ~@12 c3@6 c3@6 ~@33 f4@6 ~ [f4,c5]@6 [f4,c5]@7 c4@5 ~ e4@4 ~@39, ~@4 f5@17 ~@6 c4@6 c4@6 ~ c4@5 c4@6 ~ c4@4 ~@2 [c4,g4]@6 [c4,g4]@6 ~ g3@6 g3@6 g3@6 ~@6 f3@5 c5@6 ~@41 b4@4 ~@17, ~@4 f4@6 f4@6 f4@6 ~@5 g4@18 ~@7 g4@6 ~@14 a4 ~@3 [g4,d5]@5 [g4,d5]@6 [g4,d5]@7 ~ a4@24 ~@28 g4@6 [g4,b4,f5]@6 [g4,b4,f5]@7 ~@2, ~@102 f3@6 ~@5 f3@6 ~@19 f#3@3 ~@2 g3@3 ~@3 g3@6 g3@7 g3@5 ~]/7", // F C F F5 C5 G5 G7
  D: "e4@3 ~@15 c3@4 [f4,a4] ~, c3@4 g4@19 ~, ~@3 c4@6 ~ c4@6 c4@6 ~@2, ~ c3!2 ~", // F
  E: "[c4 c4@3 ~@17 c4@2 [c4,e4]@3 ~@22 c5@4 ~@8 c3@4 ~ c3@4 g#4 ~ a4@3 ~@22 f5@4 ~@17 d#4 ~@23 c4 d#4 ~, a4@23 ~@5 g4@43 ~@5 c5@20 ~@28 g4@19 ~, f3@6 f3@6 f3@6 f3@5 c3@5 ~ c3@6 c3@6 c3@7 c3@6 c3@6 ~@11 f3@7 f3@6 f3@6 f3@6 f3@6 f3@6 f3@6 f3@5 ~ c3@6 c3@6 c3@6 c3@5 ~, f4@4 f4@18 ~@53 f4@6 ~ f4@6 f4@6 f4@6 [f4,f5]@6 [f4,f5]@6 [f4,f5]@7 e4@23 ~@2, ~@4 c4@6 c4@6 c4@5 d#4 ~@6 c4@5 c4@6 c4@6 c4@6 ~ [c4,c5]@6 [c4,c5]@6 [c4,c5]@7 ~@53 c4@6 c4@6 c4@5 ~@3]/6", // C F C
  F: "[~@18 c3@3 a#4 b4 ~ g4@3 ~@18 g#4@2 f3@5 ~@14 f3@4 c4 ~, [c3,e4]@6 c3@6 c3@6 ~@6 f3 ~@3 g4@6 a4@11 a4@18 ~@9, ~@4 g4@12 ~@7 b4@3 ~@2 [b4,d5]@19 ~@25, ~@4 c4@4 ~@2 c4@6 [c4,g4]@6 ~ g3@6 ~ g3@6 g3@6 g3@5 ~@7 f3@6 f3@6 ~@6, ~@34 [g4,g5]@6 [g4,g5]@7 ~@5 [f4,c5]@6 [f4,c5]@6 [f4,a4,c5]@7 ~]/3", // C Bm C5 G F5 F
  G: "[c3,c4,g4]@5 ~ [e3,e4]@5 ~ [f3,f4]@4 ~@2 [f#3,f#4]@3 ~@3, ~@3 d4 ~@8", // C5 E F F#
  H: "[[g3,g4]@3 ~@3 g3@3 ~@2 g3@5 ~@4 e4!2 ~ [c#3,e4] f4 ~ g4!2 c4 ~ [c3,c4,g4]@2 [c4,g4] ~ [c4,g4] ~ [c4,g4] ~ g4@2 g4 ~ g4 ~ [c4,g4]@2 c4 ~, ~@4 g4@4 ~@2 [g4,b4,f5]@6 [g4,b4,f5]@6 ~ g4@2 ~@23, ~@18 g3@4 ~ c3@4 ~@9 c3@5 ~ c3@4 ~@2, ~@6 c4 ~@5]/2", // G C#m C5 G7
  I: "[f3,c4,f4,a4]@3 ~@3 f3@4 ~@2 f3@4 [c4,f4,c5]@2 f3@4 [c4,d#4] ~, ~@4 [c4,f4,a4]@5 ~ [c4,f4,c5]@5 ~@9, ~@3 e3 ~@8", // F F5 Cm F F5
  J: "[[c3,c4,e4]@4 [c4,g4]@3 c3@3 ~@2 c3@3 ~ c4@2 c3@2 ~@4 c3@3 ~@3 c3@4 ~@2 c3@3 ~@3 c3@3 g#4 ~ [f3,a4]@5 ~ f3@4 ~@3 f3@4 ~@2 f3@3 ~@3 f3@4 ~@2 f3@3 ~@3 f3@3 ~@3 f3@4 [d#4,e4] ~, ~@10 g4@11 ~@31 [f4,c5]@5 ~ [f4,c5]@4 ~@2 c5@7 ~ f5 ~@23, ~@10 c4@4 ~@8 c4@6 [c4,c5]@5 ~ [c4,c5]@5 ~ [c4,c5]@6 ~@18 f4@4 ~@2 f4@6 [f4,f5]@4 ~@2 [f4,f5]@4 ~@2 f4@7 ~]/4", // C C5 F Emaj7 F5 C F
  K: "c3@4 ~@2 c3@3 ~@7 c4@2 c3@2 ~@2 g2@2, e4 ~ g4@9 ~, ~@4 c4@5 c4@6 ~@9, ~@2 c3 ~",
  L: "[b2,c4] ~@11 c3@4 ~@2 c3@4 c4@2, c3@4 [c4,g4]@6 g4@13 ~, ~ c3 ~@2, ~@5 c4@3 c4@3 ~", // Cmaj7 C5
  M: "~@4 [g4,d5]@2 [g4,b4,d5]@4 [g4,b4,d5]@3 ~@3 [g4,b4,d5]@3 ~@3 g4 [f4,c5], g3@6 g3@7 ~@6 g3@5, ~@6 f#3 ~@6 d3@5 ~@4 a4@2", // G5 G F5
  N: "f3@4 [f4,c5] ~ [f3,f4,c5]@4 f5@2 ~@9 [c4,d4] ~@2, ~@10 f4@6 [f4,f5]@7 ~, ~@12 f3@6 f3@5 ~", // F5 Csus2 F
  O: "[c3,c4,g4]@5 ~ [e3,e4]@4 ~@2 [f3,f4]@4 ~@2 [f#3,f#4]@3 ~@3, ~@6 f3 ~@17", // C5 E F F#
  P: "[g3@3 ~@8 g3@5 ~@5 d#4 ~ e4@3 ~@16 c3@4 ~@14 f3@4 ~@2 f3@3 [c4,d#4] ~ c4@4 ~@19 c4@2 [c4,c5]@2 [c4,c5]@2 [c4,c5]@2 [c4,c5]@2 [c4,c5]@2 [c4,c5]@2 [c4,c5]@2 [c4,c5]@2 [c4,c5]@2 ~@2 c4@3 [g#4,c5], g4@2 ~ g4@4 ~@2 [b4,f5]@6 ~@3 g3@5 c3@7 c3@6 c3@6 ~@4 c4@6 c4@6 c4@6 [c4,f4]@6 ~@5 c4@6 c4@7 c4@6 ~@20 c5@5 ~, ~@5 g3@5 g4@6 [g4,b4,f5]@7 ~@5 g4@18 a4@24 ~@5 g4@44 ~, ~@28 c4@6 c4@6 c4@6 f4@18 ~@7 e4@48 ~, ~@48 f3@6 f3@6 ~@11 c3@7 c3@6 c3@6 c3@6 c3@6 c3@6 c3@6 c4 c3@5]/5", // Cm C G# Bdim F5 G7
  Q: "[g#4 ~@23 f5@4 ~@8 f3@4 d#4@2 f3@4 ~@14 c3@6 ~@4 c4@2 [c4,c5]@2 [c4,c5]@2 ~@2 [c4,c5]@2 [c4,c5]@2 [c4,c5]@2 [c4,c5]@2 [c4,c5]@2 [c4,c5]@2 ~@2 a#4@2 [a#4,b4] ~, ~ [f3,a4]@6 f3@5 f3@6 f3@6 f3@6 f3@6 ~@4 e4@4 ~@2 c4@5 ~ c4@6 c4@12 ~@6 [c4,c5]@2 ~@18, ~@5 c5@37 ~@6 c3@6 c3@6 ~@6 c3@6 c3@5 c3@7 c3@6 [c3,c4,c5]@5 ~, ~@5 f4@4 ~ f4@6 f4@6 f4@6 [f4,f5]@6 [f4,f5]@7 ~@5 g4@48 ~@2]/4", // C Bmaj7 F C F
  R: "[[f3,d5] ~ d5@2 ~@8 g3@4 ~@2 g3@4 g#4 ~ b4 f4 ~ [f4,a4]@3 ~@12 f3@4 d#4 e4, [g3,g4,b4]@4 [b4,d5]@18 a4@5 ~@7 [f4,a4,c5,d#5]@6 [f4,a4,c5,d#5]@6 ~@2, ~@5 g4@3 ~@2 g4@6 [g4,g5]@7 ~ c5@3 c5@7 ~@14, ~ g3 ~@2 f3!3 ~]/2", // Dm F G Bm F7 G
  S: "e4@3 ~@15 c3@4 [c4,d4]@2, c3!3 ~, ~ g4@3 g4@2, ~@2 c4@3 c4@3 c4@3 ~", // Csus2
  T: "[~@3 [g4,b4,d5] ~@2 [g3,g4,d5]@4 ~ g3@5 ~@8 g4@2 ~@16 c3@4 f4@2, g3@5 ~ b4 ~@3 [g4,b4,f5]@6 [g4,b4,f5]@7 ~@4 g4@6 ~@15, ~@18 g3@5 ~ c3@6 c3@6 c3@6 ~@6, ~@21 c4@5 ~@2 c4@6 [c4,g4]@6 [c4,g4]@7 ~]/2", // G G5 G7 C5
  U: "[f4,c5]@2 ~@9 f4, f3!4, a4 ~@3 [f4,a4,c5]@6 [f4,a4,c5]@6 [a4,c5]@8, ~@8 f4@3 ~", // F5 F Am
  V: "~@21 g4@2 ~, c3!4, ~ e4@5, ~@5 c4@3 c4@4, ~@16 g4@5 ~@3",
  W: "[~@4 [g4,b4,d5]@2 [g3,g4,b4,c#5,d5,e5,f5]@4 [d4,a#4] c3@3 ~@4 [c3,c4,e4,g4,a#4]@17 ~@13, g3@6 ~@4 [c4,e4,g4]@3 ~@35]/2", // G G7 Gm C7 C
})).s("gm_piano").gain(0.64).pan(0.2)

// other · acoustic guitar steel · "SLIDE"
const acoustic_guitar_steel_3 = 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 AK AL AM AN AO AP AQ AR AS AT AU
  AV AW AX AY AZ ~
>`.pickRestart({
  A: "~@5 [d3,e3] [f3,g3] [a3,b3] c4@4 ~@10 e3 [f3,g3]", B: "[a3,b3,c4] [d4,e4] f4 ~@19 d3 [e3,f3]",
  C: "[g3,a3] b3 ~@20 [d3,e3] [f3,g3]", D: "[a3,b3] c4 ~@20 [e3,f3] [g3,a3]",
  E: "[b3,c4] [d4,e4] ~@18 e3 [e3,f3,g3] [a3,b3] [c4,d4]", F: "e4 f4@2 ~@17 c3 d3 [e3,f3] [g3,a3]",
  G: "[b3,c4] ~@19 c3 [d3,e3] [f3,g3] [a3,b3]", H: "c4 ~@20 [e3,f3] [g3,a3] [b3,c4]",
  I: "[d4,e4] f4 g4@2 ~@16 d3 [e3,f3] [g3,a3] [b3,c4]", J: "d4 e4 ~@19 c3 [d3,e3] [f3,g3]",
  K: "[a3,b3] c4 ~@19 [c3,d3] [e3,f3] [g3,a3,b3]", L: "[c4,d4] [e4,f4] g4 ~@17 [b2,c3] d3 [e3,f3] [g3,a3]",
  M: "b3 ~@20 [c3,d3] e3 [f3,g3,a3]", N: "[b3,c4] e4 ~@20 [c3,d3] e3", O: "[f3,g3,a3] b3 ~@20 [b2,c3] [d3,e3]",
  P: "[f3,g3] [a3,b3] ~@19 [b2,c3] [d3,e3] [f3,g3,a3]", // Fsus2 Asus2 Cmaj7 Dsus2 F
  Q: "[b3,c4,d4] [e4,f4] ~@18 [b2,c3] [d3,e3] [f3,g3,a3] [b3,c4,d4]", R: "e4 ~@20 [a2,b2] [c3,d3] [e3,f3]",
  S: "[g3,a3] b3 c4 ~@17 a2 [b2,c3] [d3,e3] [f3,g3]", T: "[a3,b3] ~@19 b2 c3 [d3,e3,f3] [g3,a3]",
  U: "[b3,c4,d4] [e4,f4] ~@18 b2 c3 [d3,e3,f3] [g3,a3,b3]", V: "[c4,d4] e4 f4 ~@17 a2 [b2,c3] [d3,e3] [f3,g3,a3]",
  W: "b3 ~@19 [b2,c3] [d3,e3] [f3,g3] [a3,b3]", X: "[c4,d4] [e4,f4] ~@17 g2 [a2,b2] [c3,d3] [e3,f3] g3",
  Y: "[a3,b3] c4 ~@19 a2 [b2,c3] [d3,e3,f3]", Z: "[g3,a3,b3] [c4,d4] ~@18 g2 a2 b2 [c3,d3,e3]",
  AA: "[f3,g3] [a3,b3] ~@19 g2 [a2,b2] [c3,d3]", AB: "[e3,f3,g3] a3 b3 c4 ~@16 a2 [b2,c3] [d3,e3] [f3,g3,a3]",
  AC: "[b3,c4,d4] e4 f4 ~@16 a2 [b2,c3] [d3,e3] [f3,g3,a3] [b3,c4]", AD: "d4 e4 ~@19 [a2,b2] c3 [d3,e3]",
  AE: "[f3,g3] [a3,b3] c4 ~@17 a2 b2 [c3,d3] [e3,f3]", AF: "[g3,a3] [b3,c4] ~@18 b2 c3 [d3,e3,f3] [g3,a3]",
  AG: "[b3,c4,d4] e4 [f4,g4] ~@19 a2 [b2,c3,d3]", // Bm Fsus2 Bm
  AH: "[e3,f3,g3] [a3,b3] [c4,d4,e4] f4 ~@16 [f2,g2] a2 [b2,c3,d3] [e3,f3]", // Em Asus2 C Fsus2 Bm Fmaj7
  AI: "[g3,a3] b3 c4 ~@17 [a2,b2] [c3,d3,e3] [f3,g3] [a3,b3,c4]", // Gsus2 Asus2 C Fsus2 Am
  AJ: "[d4,e4] f4 g4 ~@16 [g2,a2] b2 [c3,d3] [e3,f3] [g3,a3]", AK: "b3 ~@18 a2 [b2,c3] [d3,e3] [f3,g3] [a3,b3,c4]",
  AL: "d4 e4 f4@2 ~@16 g2 a2 [b2,c3] [d3,e3]", AM: "[f3,g3] [a3,b3] c4 ~@17 [f2,g2,a2] [b2,c3] [d3,e3] [f3,g3]",
  AN: "[a3,b3] c4 ~@17 g2 a2 [b2,c3] [d3,e3] [f3,g3,a3]", // Asus2 Cmaj7 Dsus2 F
  AO: "[b3,c4] d4 e4 f4 ~@16 [g2,a2,b2] [c3,d3] [e3,f3] [g3,a3,b3]", // Cmaj7 G Csus2 Fmaj7 G
  AP: "[c4,d4] e4 f4 ~@17 [g2,a2] [b2,c3] [d3,e3] [f3,g3]", AQ: "[a3,b3] ~@2 c4@2 ~@15 a2 [b2,c3] [d3,e3] [f3,g3]",
  AR: "[a3,b3] c4@2 ~@18 [b2,c3] [d3,e3] [f3,g3,a3]", AS: "[b3,c4,d4] [e4,f4] g4 ~@17 [a2,b2] c3 [d3,e3] [f3,g3]",
  AT: "[a3,b3] ~@22 [b2,c3]", AU: "[d3,e3] [f3,g3,a3] b3 ~@17 c3 [d3,e3] [f3,g3] [a3,b3,c4]",
  AV: "d4 [e4,f4] ~@18 b2 [c3,d3] e3 [f3,g3]", AW: "[a3,b3] c4 ~@19 [b2,c3] d3 [e3,f3,g3]",
  AX: "[a3,b3,c4] d4 ~@19 b2 c3 [d3,e3]", AY: "[f3,g3] [a3,b3] ~@18 c3 [d3,e3] [f3,g3] [a3,b3]",
  AZ: "[c4,d4,e4] f4 ~@7 d3 [e3,f3] [g3,a3,b3] ~@12", // C Fmaj7 G
})).s("gm_acoustic_guitar_steel").gain(0.22).pan(1)

// other · acoustic guitar steel · "SLIDE"
const acoustic_guitar_steel_4 = 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 AK AL AM AN AL AO AP AQ AR AS AT
  AU AP AV AW AX ~
>`.pickRestart({
  A: "~@13 d5 ~@10", B: "~@9 b5 [g5,a5] f5@5 ~@8", C: "~@3 g5 [e5,f5] d5 ~@18", D: "~@3 g5 f5 [d5,e5] c5@5 ~@13",
  E: "~@3 c6 b5 g5@4 ~@15, ~@5 a5 ~@18", F: "~@3 [b5,c6] a5 g5@4 ~@15", G: "~@2 a5 [f5,g5] [d5,e5] c5@4 ~@15",
  H: "~ a5 g5 f5 [d5,e5] ~@19", I: "~@2 c6 b5 a5 g5@4 ~@15", J: "~@2 c6 b5 g5@3 ~@17, ~@4 a5 ~@19",
  K: "~@2 [g5,a5] [e5,f5] c5@3 ~@17, ~@4 d5 ~@19", L: "~@2 c6 [a5,b5] g5@2 ~@18", M: "~ a5 ~ [e5,f5] d5 ~@19",
  N: "~@2 [b5,c6] [g5,a5] f5@3 ~@17", O: "~@3 [g5,a5] [e5,f5] d5@2 ~@17", P: "~@3 a5 [e5,f5] c5@4 ~@15, ~@5 d5 ~@18",
  Q: "~ d6 ~ [b5,c6] [g5,a5] ~@19", R: "~@3 [c6,d6] [a5,b5] [f5,g5]@2 ~@17", S: "~@3 [g5,a5] [e5,f5] d5 ~@18",
  T: "~@2 b5 [g5,a5] [e5,f5] d5@4 b4 ~@14", U: "~@2 d6 [b5,c6] a5@2 ~@18", V: "~@3 [c6,d6] [a5,b5] g5@2 f5@2 ~@15",
  W: "~@2 [c6,d6] [g5,a5,b5] [e5,f5] d5@2 ~@17", X: "[d6,e6] [a5,b5,c6] g5 ~@21",
  Y: "d6 [a5,b5,c6] [f5,g5] [d5,e5] c5@2 ~@18", Z: "~ e6 [c6,d6] [g5,a5,b5] f5@2 ~@18",
  AA: "~@3 [b5,c6] [f5,g5,a5] [d5,e5]@2 ~@17", AB: "~@2 c6 [g5,a5,b5] f5 [c5,d5]@2 ~@17",
  AC: "~@2 [c6,d6] [g5,a5,b5] f5@2 ~@18", AD: "~@2 [d6,e6] [b5,c6] [g5,a5] f5@2 ~@17",
  AE: "~@2 d6 [b5,c6] [f5,g5,a5] [c5,d5,e5] ~@18", AF: "~@2 [b5,c6] [f5,g5,a5] [d5,e5] c5@3 ~@16",
  AG: "~@3 [d6,e6] [b5,c6] [g5,a5]@2 ~@17", AH: "~@3 e6 [c6,d6] [a5,b5] [f5,g5]@2 ~@16",
  AI: "~@2 c6 [g5,a5,b5] [e5,f5] [c5,d5]@2 ~@17", AJ: "~@2 [d6,e6] [a5,b5,c6] g5@2 ~@18",
  AK: "~ [b5,c6] [f5,g5,a5] [d5,e5] c5@2 ~@18", AL: "~ d6 [b5,c6] [g5,a5] f5@2 ~@18",
  AM: "~@2 c6 [a5,b5] [e5,f5,g5] d5@2 ~ c5@2 ~@14", AN: "~@2 b5 [f5,g5,a5] [d5,e5] c5@2 ~@17",
  AO: "~@2 [c6,d6] [a5,b5] [f5,g5]@2 ~@18", AP: "~@2 [a5,b5] [f5,g5] [d5,e5] c5@2 ~@17",
  AQ: "~@2 a5 [f5,g5] [d5,e5] c5@2 ~@17", AR: "~@3 d6 b5 [g5,a5]@2 ~@17", AS: "~@3 [b5,c6] [g5,a5] f5 ~@18",
  AT: "~@3 g5 [e5,f5] d5@2 ~@16 d6", AU: "[b5,c6] [g5,a5] ~@22", AV: "~@2 [b5,c6] [g5,a5] f5@2 ~@18",
  AW: "~@3 a5 [f5,g5] [d5,e5] c5@2 ~@14 c6 [a5,b5]", AX: "g5 ~@7 f5 [d5,e5] ~@14",
})).s("gm_acoustic_guitar_steel").gain(0.17).pan(0)

// other · acoustic guitar steel · "SLIDE" · soft notes
const acoustic_guitar_steel_5 = note(`<
  ~ A B C D E ~@2 F ~ G ~ H I ~ J K L ~ M N O ~ P ~@3 Q R ~@4 S ~@11 T U V ~@4 W ~
>`.pickRestart({
  A: "~@12 [e5,f5] c5@3 ~@8", B: "~@4 e5 ~@3", C: "~@6 c5@5 ~@13", D: "~@3 a5 ~@20", E: "~@3 d6 ~@20",
  F: "~@5 c5@4 ~@15", G: "~@2 d6 ~@4 f5@3 ~@14", H: "~@2 d6 ~@21", I: "~@2 g5 ~@2 c5@3 ~@16", J: "~@2 b5 ~@3 c5@3 ~@15",
  K: "~@3 [g5,b5] ~@2 b4 ~@17", L: "~@2 f5 ~@5", M: "~@2 b5 ~@2 c5@3 ~@16", N: "~@2 c6 ~@5 c5@2 ~@14",
  O: "~@5 g5@2 ~@17", P: "~@8 c5 ~@15", Q: "~@8 d5 c5@2 ~@13", R: "~@4 e5 ~@19", S: "~@3 f6 ~@20", T: "~@3 e6 c6 ~@19",
  U: "~@2 [d6,e6] ~@21", V: "~@2 a5 ~@21", W: "~@5 c5 ~@6",
})).s("gm_acoustic_guitar_steel").gain(0.05).pan(0)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B A@2 C@2 D A D C D A B@2 A D A@3 C B@2 D A@2 B A C B@3 A B C B A B D B A@3 D A@2 C B E B@2 F G ~
>`.pickRestart({
  A: "x!2", B: "x ~@5 x ~@4 x", C: "x ~@2 x!2 ~", D: "x ~@5 x ~ x ~@2 x", E: "x", F: "x ~ x", G: "~ x ~ x",
})).gain(0.3)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~ A@2 B@3 A B A@3 B ~ A@2 B@4 A ~ B A@2 ~@9 B A@2 ~ B A B@5 ~ B A@2 ~ A@2 ~@3
>`.pickRestart({
  A: "~ x ~@4", B: "~@2 x ~@2 x ~@6",
})).gain(0.05)

// drums · low tom
const low_tom = s("lt").struct("<~@12 [~@10 x!2] ~@35 [~@5 x ~@5 x] ~@5>").gain(0.4)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@4 B C A@3 D A ~ A@3 E D A@2 F A@2 G ~@9 H C A ~ A@2 G A D@2 H I C J A ~ A@2 ~@3
>`.pickRestart({
  A: "x!4", B: "x ~@2 x ~@2 x!2 ~ x ~ x", C: "x ~@2 x ~@2 x ~@2 x ~ x", D: "x ~@2 x ~@2 x!2 ~ x ~@2",
  E: "x!2 ~ x ~@2 x ~@2 x ~ x", F: "x ~@2 x ~ x ~ x ~ x ~@2", G: "x ~@2 x ~@2 x ~@2 x!2 ~",
  H: "x ~ x!2 ~@2 x ~@2 x ~@2", I: "x ~@2 x ~ x ~ x ~@4", J: "x!2 ~ x ~@2 x ~@2 x!2 ~",
})).gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~@12 [~@2 x] ~@35 [~@5 x] ~@5>").gain(0.4)
// … 31 more lines

More by The Beatles