Strudelify
Baby Come Back cover art

1978 · Baby Come Back

Baby Come Back

Player

KeyE♭ majorTempo145 bpm
0:00/0:00
// Baby Come Back — Player
// 145 bpm, 4/4, key Eb major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 156 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(145/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
const bass = note(`<
  ~ A@2 B@2 C@2 D@2 E@2 F@2 A@2 G@3 E@2 H@2 I@2 H@2 C@2 J@2 C@2 K L M@2 N@2 O P Q R S@2 T@2 U V W@2 X@2 F@2 E@2 H@2 I@2
  Y@2 C@2 J@2 C@2 K L M@2 N@2 O P Q R S@2 T@2 U V Z@2 AA@2 AB@2 AC@2 AD@2 AE@2 AF@2 AG@2 AH@2 AI@2 ~ M@2 N@2 O P Q R S@2
  T@2 U V AJ@2 AK AL AM AN AO@2 AP@2 AK AQ AR@2 AS@2 AT@2 U AU Q R AV@2 AW@2 U AQ AX@2 AY AZ ~@5
>`.pickRestart({
  A: "[bb1@11 ~ bb2@2 bb2@11 ~ f1@2 bb1@2 f1@2]/2", B: "[g1@10 ~@2 g2 ~ g2@7 ~@3 g1@2 ab1 ~@3 a1@2]/2",
  C: "[bb1@12 bb2 ~ bb2@9 ~@3 f1@2 bb1@2 f1 ~]/2", D: "[g1@12 g2@2 g2@9 ~ g1@2 ab1 ~@3 a1@2]/2",
  E: "[bb1@11 ~ bb2 ~ bb2@11 ~ f1@2 bb1@2 f1@2]/2", F: "[g1@12 g2 ~ g2@10 g1@2 ab1 ~@3 a1@2]/2",
  G: "[g1@8 ~@4 c2@35 ~]/3", H: "[g1@12 g2 ~ g2@9 ~ g1@2 ab1 ~@3 a1@2]/2",
  I: "[bb1@11 ~ bb2 ~ bb2@12 f1@2 bb1@2 f1@2]/2", J: "[g1@11 ~ g2 ~ g2@10 g1@2 ab1 ~@3 a1@2]/2", K: "c2@3 g2",
  L: "c3@8 g2@7 ~", M: "[ab1@9 ~@3 ab2 ~ ab2@11 ~ eb2 ~ ab1 ~ f1 ~]/2", N: "[g1@5 ~ d2@4 g2 ~ c2@18 ~@2]/2",
  O: "f2@11 ~ f2@4", P: "g2@11 ~ f2@2 d2@2", Q: "c2@5 ~ d2@5 ~ eb2@4", R: "~@2 f2@5 ~ g2@2 bb2@2 c3 ~@3",
  S: "[ab1@8 ~@4 ab2 ~ ab2@12 eb2@2 ab1@2 f1@2]/2", T: "[g1@6 d2@4 g2 ~ c2@20]/2", U: "f2@7 gb2", V: "g2",
  W: "[c2@11 ~ db2@18 ~@2]/2", X: "[bb1@11 ~ bb2 ~ bb2@11 ~ f1@2 bb1@2 f1 ~]/2", Y: "[g1@12 g2 ~ g2@9 ~ g1 ~ g1 ~@5]/2",
  Z: "[c2@11 ~ db2@19 ~]/2", AA: "[bb1@10 ~@2 bb1@17 ~@3]/2", AB: "[gb1@5 ~ gb1 gb1@7 ab1@2]/2",
  AC: "[db2@10 ~@2 db2 ~ db2@6 ab1@2 bb1@2 db2 ~ db2@2 bb1@2 ab1@2]/2", AD: "[gb1@11 ~ gb1 ~ gb1@14 ab1@4]/2",
  AE: "[db2@9 ~@3 db2 ~ db2@6 ab1@2 bb1@2 db2 ~ db2@2 bb1@2 ab1@2]/2", AF: "[gb1@11 ~ gb1 ~ gb1@14 ~@2 gb1@2]/2",
  AG: "[f1@9 ~@3 bb1@17 ~@3]/2", AH: "[bb1@9 ~@3 bb1@12 eb2@2 f2@2 ab2@2 bb2@2]/2", AI: "[bb1@4 ~@2 bb1@9 ~]/2",
  AJ: "c2/2", AK: "f2", AL: "g2@15 ~", AM: "c2@3 d2@3 eb2@2", AN: "~@2 f2@5 ~ g2@2 bb2@2 c3@4",
  AO: "[ab1@4 ab2 ~ ab2@6 ab1 ~ ab1@7 ~ ab2@4 eb2@2 ab1@2 f1@2]/2", AP: "[g1@3 d2@2 g2 c2@8 ~@2]/2", AQ: "g2@6 f2 d2",
  AR: "[c2@5 ~ d2@6 eb2@6 f2@6 g2@2 bb2@2 c3@4]/2", AS: "[ab1@12 ab2 ~ ab2@12 eb2@2 ab1@2 f1@2]/2",
  AT: "[g1@3 d2@2 g2 c2@6 d2@2 eb2@2]/2", AU: "g2@13 ~@3", AV: "[ab1@11 ~ ab2 ~ ab2@12 eb2@2 ab1@2 f1@2]/2",
  AW: "[g1@6 d2@4 g2@2 c2@17 ~@3]/2", AX: "[c2@3 d2@3 eb2@3 f2@3 g2 bb2 c3@2]/2", AY: "c2@7 ~", AZ: "c2@3 ~@13",
})).s("gm_acoustic_bass").gain(0.59)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  ~@9 A@2 B@2 A@2 C@3 D E F G H I J K D L J M D N O P Q@2 ~@4 R@4 S@2 ~@4 A@2 T@2 ~@7 U ~@7 V W@3 ~@3 X@4 Y@2 ~@2 Z@4 AA
  ~@16 W@3 ~@3 X@4 Y@2 ~@6 AB@2 W@3 ~@3 X@4 Y@2 ~@2 AB@2 W@3 ~@3 AB@2 AC AD ~@5
>`.pickRestart({
  A: "[[c4,eb4]@23 ~ [c4,eb4]@2 [d4,f4]@2 [eb4,g4]@2 [f4,ab4]@2]/2", B: "[[d4,f4]@3 ~ d4@2 g3@24 ~@2, ~@2 bb3@13 ~]/2",
  C: "[[bb3,d4]@5 ~ [c4,eb4]@2 [d4,f4]@3 ~ [c4,eb4]@28 ~@8]/3", D: "~@8 [ab3,c4,eb4] ~@7", E: "~@8 eb4 ~ eb4 ~@5",
  F: "~@8 [bb3,d4] ~@7", G: "~@4 [bb3,d4,g4] ~@3", H: "~@8 [ab3,c4] ~@7", I: "~@8 [ab3,eb4] ~ c4 ~@5",
  J: "~@8 [bb3,d4,g4] ~@7", K: "~@8 [bb3,d4] ~ [bb3,d4] ~@5", L: "~@8 [ab3,eb4] ~@7", M: "~@8 d4 ~ [bb3,d4] ~@5",
  N: "~@8 [ab3,c4,eb4] ~ [c4,eb4] ~@5", O: "[c3,f3,bb3,d4]@15 ~", P: "[c3,g3,c4,e4]@15 ~",
  Q: "[~@4 g4@4 ~@3 c5@3 [f4,bb4]@17 ~, ~@8 c5@3 ~@21, ~@9 g4@5 ~@18]/2", R: "[c3@3 d3@3 eb3@3 f3@3 g3 bb3 c4@17 ~]/4",
  S: "[d4@12 c4@17 ~@3]/2", T: "[f4@2 bb3 [g3,bb3]@11 ~@2, d4@3 ~@13]/2", U: "~@8 g3@2 ab3 ~@5", V: "c3@15 ~",
  W: "[~@12 c5@2 [f4,bb4]@19 ~@15, ~@4 g4@6 g4@5 ~@33, ~@2 c5 ~@9]/3", // Bb5
  X: "[c3@3 d3@3 eb3@3 f3@3 g3 bb3 c4@16 d4 eb4]/4", Y: "[d4@3 eb4@4 ~]/2",
  Z: "[~@12 bb4@11 ~ bb4@4 g4@6 bb4@2 f4@5 bb3 ~ bb3@16 ~ a3@2 ab3@2]/4", AA: "gb3 ~",
  AB: "[c3@3 d3@3 eb3@3 f3@3 g3 bb3 c4@2]/2", AC: "c4@7 ~", AD: "[c3,g3,c4]@5 ~@11",
})).s("gm_overdriven_guitar").gain(0.29).pan(0.4)

// chords · overdriven guitar · soft notes
const overdriven_guitar_soft = note(`<
  ~@19 A B C D E ~ F ~ G ~ H ~ I ~@22 J@2 K@2 J@2 L@2 M@2 N@2 O@2 P Q ~@86
>`.pickRestart({
  A: "~@8 [ab3,c4] ~ [ab3,c4] ~@5", B: "~@8 g4 ~@7", C: "~@10 [bb3,d4,g4] ~@5", D: "~@8 eb4 ~@7",
  E: "~@8 c4 ~ [ab3,eb4] ~@5", F: "~@8 g4 ~ g4 ~@5", G: "~@8 c4 ~ [ab3,c4,eb4] ~@5", H: "~@8 [bb3,g4] ~ g4 ~@5",
  I: "~@10 ab3 ~@5", J: "[[ab3,c4,eb4]@15 ~]/2", K: "[[f3,bb3,d4]@27 ~@5]/2", L: "[[f3,bb3,d4]@5 ~@3]/2",
  M: "[[ab3,c4,eb4]@29 ~@3]/2", N: "[[f3,bb3,d4]@24 g3@2 ab3 ~@5]/2", O: "[[ab3,c4,eb4]@7 ~]/2",
  P: "[c3,f3,bb3,d4]@15 ~", Q: "[g3,c4,e4]@15 ~",
})).s("gm_overdriven_guitar").gain(0.15).pan(0.4)

// chords · piano
const piano = note(`<
  ~@4 A@4 B@2 C@5 D@2 E@2 F@4 G@8 ~ H I J@2 K@2 L M ~@2 N@2 O@2 L P Q@2 R@2 S@4 T@2 U@2 V@6 W@2 X@2 Y Z AA@2 AB M AC@2
  AD Z AE@2 AF M AG@2 AH@2 AI@2 AJ@2 AK@2 AL@2 AI@2 AM@2 AN@2 AO@2 ~ AP@2 AQ@2 AB M AR@2 AS Z AT@2 AU AV@5 AW@2 AX AY
  AZ@3 BA BB@2 BC@2 BD@2 BE BF@3 BG@2 BH@2 BI BJ@3 BK BL ~@5
>`.pickRestart({
  A: "[~@16 ab4@27 ~@5 [d5,f5]@16, ~@7 ab5@14 ~@11, ~@15 [c5,eb5]@27 ~@5 [f4,bb4]@17]/4", // Dm Cm Bb5
  B: "[~@16 ab4@8 [ab3,c4,eb4] ~ [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~, ~@14 ab5@9 ~@9, ~@15 [c5,eb5]@9 ~@8]/2", // Ab Cm
  C: "[~@4 [ab3,c4,eb4]@11 ~@9 [f3,bb3,d4]@2 [f3,bb3,d4] ~@3 [f3,bb3,d4]@2 ~@4 [f3,bb3,d4]@11 ~@9 [ab3,c4,eb4]@2 [ab3,c4,eb4] ~@3 [c4,eb4]@2 ~@4 [ab3,c4,eb4]@11 bb4, ~@15 [f4,bb4,d5]@32 [c5,eb5]@25 ~@8, ~ [g2,f5]@2 bb2@2, ~@6 ab4@3 ~, ~@62 ab3 ~@17]/5", // Ab Bb Ab Cm Ab Bb Cm G7
  D: "[[g2,f3,bb3,d4,d5]@3 [c3,g3,bb3,c4,eb4,c5]@5]/2", E: "[~@15 [ab4,c5]@17, ~@7 [eb5,ab5]@9]/2",
  F: "[~@42 g5@5 ~ ab4@16, ~@15 [f4,bb4]@23 bb5@9 [c5,eb5,ab5]@17, ~ [d5,f5]@2 ~, ~@2 g6 ~, ~@17 d6@7 ~@8]/4", // Bb5 Ab Dm
  G: "[~@42 g5@5 ~ ab4@30 ~@28 g5@4 ~@2 ab4@16, ~@14 f4@20 d6@13 [c5,eb5,ab5]@32 [bb4,d5]@23 bb5@8 [eb5,ab5]@18, ~@15 [bb4,d5]@23 bb5@10 ~@32 f5@31 c5@17, ~@16 f5@32 ~@30 f4@20 d6@13 ~@17, ~@32 g6@16 ~@48 g6@15 ~@17]/8", // Ab Bb Ab5 Bb
  H: "[f4,bb4,d5,f5] [f4,bb4,d5]", I: "[e4,bb4,c5]@8 [e4,bb4,c5]@7 ~",
  J: "[~@8 [g4,c5,eb5]@5 ~ [g4,c5,eb5]@2 ~@4 [g4,c5,eb5]@6 [g4,c5,eb5]@5 ~, ab2@31 ~]/2", // Cm
  K: "[[f4,bb4,d5]@6 [f4,bb4,d5]@5 ~ [g4,c5,eb5]@16 ~@4]/2", L: "[eb4,ab4,c5]@11 ~ [ab4,c5,eb5]@4", M: "[f4,bb4,d5]",
  N: "[~@8 [g4,c5,eb5]@6 [g4,c5,eb5]@2 ~@4 [g4,c5,eb5]@5 ~ [g4,c5,eb5]@5 ~, ab2@31 ~]/2", // Cm
  O: "[[f4,bb4,d5]@5 ~ [f4,bb4,d5]@5 ~ [eb4,g4,c5]@16 ~@4]/2", P: "[f4,bb4,d5]@13 ~@3",
  Q: "[[eb4,g4,c5]@11 ~ [f4,ab4,c5]@16 ~@4]/2", // Cm Fm
  R: "[~@8 [ab3,bb3,c4] ~ [bb3,c4]@2 ~@2 [ab3,bb3,c4,eb4]@2 ~@4 [ab3,bb3,c4,eb4]@12, bb2, ~@8 eb4@2 ab3 ~@21]/2", // Ab Bbsus2 Ab
  S: "[~@8 [f3,bb3,d4] ~ [f3,bb3] ~@3 [f3,bb3,d4] ~@5 [f3,bb3,d4]@6 d5 eb5 f5 g5 ab5 c6@27 bb5@3 c6@2 db6, g2@13 ~@19, ~@5 d4 ~@7 c5 ~ bb5 ~@16]/4", // Bb Bb5 Bb
  T: "[d6@2 g5 bb5@11 f5 g5]/2", U: "[eb5@24 ~@4 f5@2 ~ c5, ~@15 g5]/2",
  V: "[d5@20 ~@11 c6@25 ~@2 f6@3 [c6,db6] ~@14 bb5@12 g5@4 bb5@4, db5 ~@25 c5@5 bb5@2 ~@28 d6@14 ~@21, ~@9 [d5,eb5]@2 ~@21, ~@29 [f5,g5]@4 ~@63, ~@10 ab5 ~@21]/6", // Dbmaj7 Ebmaj7 Fsus2
  W: "[c6@4 bb5@2 c6@4 bb5@2 c6@12 bb5@4 c6@3 db6]/2", X: "[d6@2 c6 d6@2 ~ c6@6 [c6,c7]@4, ~@3 [g5,e6]@5]/2",
  Y: "~@8 [g4,bb4,c5,eb5]@5 ~ [g4,bb4,c5,eb5]@2, ab2@13 ~@3", Z: "~@4 [g4,bb4,c5,eb5]@5 ~ [g4,bb4,c5,eb5]@5 ~",
  AA: "[[f4,bb4,d5]@3 [bb4,d5,f5]@3 [g4,c5,eb5]@10]/2", AB: "[ab4,c5]@3 [ab4,c5,eb5], eb4",
  AC: "[[eb5,c6,eb6]@3 [f5,d6] ~@2 [c5,eb5,g5,c6]@3 [g5,bb5] ~@3 [bb4,bb5] [c5,c6]@2, g5 ~@5 d5@6 ~@6 eb5@10 ~@4, ~@6 bb5 ~@11 bb4@8 ~@6, ~@6 [g4,g5] ~]/2", // Cm Dm Cm Gm Bb C G
  AD: "~@8 [g4,bb4,c5,eb5]@3 ~@3 [g4,bb4,c5,eb5]@2, ab2@3 ~", AE: "[[f4,bb4,d5]@3 [f4,bb4,d5] ~@2 [eb4,g4,c5]@8 ~@2]/2",
  AF: "[eb4,ab4,c5]@3 [ab4,bb4,c5,eb5]", AG: "[[eb4,g4,c5]@12 [db3,f4,ab4,c5]@19 ~]/2",
  AH: "[[bb2,bb3,ab4,c5,eb5]@3 [bb2,bb3,f4,bb4,d5]@5]/2", AI: "[[gb2,db4,f4,bb4]@7 ~]/2",
  AJ: "[~@8 [eb4,f4,ab4] ~ [c4,f4]@2 ~@2 [c4,eb4,f4,ab4]@2 ~@4 [c4,eb4,f4,ab4]@9 ~@3, db3@29 ~@3, ~@8 c4@2 [eb4,ab4] ~@21]/2", // Fm7 F5 Fm7 Ab5
  AK: "[[gb2,db4,f4,bb4]@29 ~@3]/2", // Gbmaj7
  AL: "[~@8 [eb4,f4,ab4]@2 [c4,eb4,f4,ab4] ~@3 [c4,eb4,ab4] ~@5 [c4,eb4,f4,ab4]@8 ~@4, db3@29 ~@3, ~@8 c4 ~@5 f4@2 ~@16]/2", // Fm7 Ab Fm7
  AM: "[[eb4,ab4,c5]@3 [f4,bb4,db5]@5]/2", AN: "[[bb2,ab3,c4,eb4]@5 ~ [bb2,ab3,c4,eb4]@9 ~]/2",
  AO: "[[bb2,ab3,c4,eb4]@5 ~ [bb2,ab3,c4,eb4]@4 ~@6]/2", // Ab
  AP: "[~@8 [g4,c5,eb5]@4 ~@2 [g4,c5,eb5]@2 ~@4 [g4,c5,eb5]@5 ~ [g4,c5,eb5]@5 ~, ab2@31 ~]/2", // Cm
  AQ: "[[f4,bb4,d5]@5 ~ [f4,bb4,d5]@3 ~@3 [eb4,g4,c5]@20]/2", // Bb Cm
  AR: "[[eb5,g5,c6,eb6]@3 [d5,f5,bb5]@3 [c5,eb5,g5,c6]@3 [eb5,g5] ~@4 eb5@2, ~@3 d6 ~@5 [bb4,bb5]@7, ~@3 [g4,g5], ~@13 f5@3]/2", // Cm Bb Cm Eb Bb G
  AS: "~@6 ab2 ~ [g4,c5,eb5]@5 ~ [g4,c5,eb5]@2, [g4,c5,eb5]@8 ~@6 bb4 ~, ~@3 ab3@4 ~", // Cm
  AT: "[[f4,bb4,d5]@3 [f4,bb4,d5]@3 [eb4,g4,c5]@10]/2", AU: "[f3,eb4,ab4,c5,eb5]",
  AV: "[[f4,bb4,d5]@14 ~@2 eb5@31 ~ f5@14 ~@2 g5@15 ~, ~@14 eb4@32 ~ [f4,ab4,c5]@16 [bb4,d5]@16 ~, ~@15 [g4,c5]@32 ~@15 g4@16 ~@2]/5", // Bb Fm Bb C5
  AW: "[[eb5,g5,c6,eb6]@6 [d5,f5,bb5,d6]@6 [c5,eb5,g5,c6]@6 ~@10 [eb4,eb5]@3 ~, ~@18 [bb4,bb5]@13 ~, ~@24 [g4,g5]@7 ~, ~@26 [f4,f5]@5 ~]/2", // Cm Bb Cm Eb Bb G F
  AX: "[g4,c5,eb5]@8 [g4,bb4,c5,eb5]@4 ab3 ~ [g4,bb4,c5,eb5]@2, ab2@3 ~@5", // Cm Cm7
  AY: "~@4 [g4,bb4,c5,eb5]@5 ~ [g4,bb4,c5,eb5]@6", // Cm7
  AZ: "[[f4,bb4,d5]@6 [f4,bb4,d5]@5 ~ c5@20 [ab4,c5]@11 [ab4,c5,eb5]@5, g3@11 ~ [c3,g4,eb5]@32 ~@4, ~@3 bb4 ~@4 [f3,eb4]@4]/3", // Bb Ab Cm F7
  BA: "[g3,f4,bb4,d5]", // Gm7
  BB: "[[eb5,g5,c6,eb6]@6 [d5,f5,bb5,d6]@6 [c5,eb5,g5,c6]@6 g5@5 ~@4 [eb4,eb5]@5, ~@9 [bb4,bb5]@7, ~@18 eb5@9 ~@5, ~@23 [g4,g5]@9, ~@25 [f4,f5]@7]/2", // Cm Bb Cm Eb Bb G F
  BC: "[~@8 [g4,c5,eb5]@2 ~@4 [g4,bb4,c5,eb5]@2 ~@3 [g4,bb4,c5,eb5]@5 ~@2 [g4,bb4]@6, ab2, ab3@15 ~@10 [c5,eb5]@7]/2", // Cm Cm7 Gm Cm
  BD: "[[f4,bb4,d5]@5 ~ d5@5 ~ [c5,eb5]@20, ~@5 [f4,bb4]@6 g4@20 ~]/2", BE: "[f3,eb4,ab4,c5]@15 ~",
  BF: "[~@8 [eb5,g5,c6,eb6]@3 [d5,f5,bb5]@3 [c5,eb5,g5,c6]@3 [eb5,g5] ~@4 eb5@2, [g3,f4,bb4,d5]@11 d6 ~@5 [bb4,bb5]@7, ~@5 [g4,g5], ~@7 f5]/3", // Cm Bb Cm Eb Gm7 Bb G
  BG: "[~@8 [g4,bb4,c5,eb5]@2 ~@4 [g4,bb4,c5,eb5]@2 ~@4 [g4,bb4,c5,eb5]@5 ~ [g4,bb4,c5,eb5]@6, ab2]/2", // Cm7
  BH: "[[f4,bb4,d5]@3 [f4,bb4,d5]@3 [g4,bb4,c5,eb5]@10, g2@3 ~@5]/2", BI: "[f3,eb4,ab4,c5]",
  BJ: "[~@8 [eb5,g5,c6,eb6]@3 [d5,f5,bb5,d6]@3 [c5,eb5,g5,c6]@3 g5@3 ~@2 [eb4,eb5]@2, [g3,f4,bb4,d5]@11 ~@6 [bb4,bb5]@7, ~@17 eb5@5 ~@2, ~@5 [g4,g5], ~@7 [f4,f5]]/3", // Cm Bb Cm Eb Gm7 Bb G F
  BK: "[g4,c5,eb5,g5]@15 ~", BL: "[c5,eb5,g5] ~@7, g4 ~@15",
})).s("gm_piano").gain(0.17).pan(0.6)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@9 A@2 B@2 C@2 D@3 ~@28 E F G@2 A@2 B@2 ~@15 H@3 I@3 J K@2 L@2 M@2 N B O@2 P@2 ~@12 Q@2 R@2 ~@21 S@2 I@3 J K@2 L@2
  M@2 N B T ~ S@2 I@3 J K@2 U ~@6
>`.pickRestart({
  A: "[bb2,ab3,eb4]/2", B: "[g2,f3,d4]", C: "[bb2,ab3,eb4,eb6]/2", D: "[[g2,f3,d4,d6]@4 [c3,c4,c6]@11 ~]/3", E: "eb6",
  F: "d6", G: "[c6@15 ~]/2", H: "[~@7 [ab2,g3,eb4]@17]/3", I: "[[g2,f3,bb3]@6 c3@10 [eb3,ab3]@7 ~, ~ c4@3]/3",
  J: "[bb3,d4], f3@7 ~", K: "[[c3,c4]@6 [d3,d4]@6 [eb3,eb4]@6 [f3,f4]@6 [g3,g4]@2 [bb3,bb4]@2 [c4,c5]@3 ~]/2",
  L: "[~ [g3,eb4]@30 ~, ab2]/2", M: "[[g2,f3,bb3]@3 [c3,c4]@5]/2", N: "[f2,eb3,c4]", O: "[c3@14 [db3,f3]@17 ~, c4]/2",
  P: "[~@6 bb4@9 ~, [bb2,bb3]@29 ~@3]/2", Q: "[[bb2,bb4]@11 ~ [bb2,bb4]@19 ~]/2",
  R: "[[bb2,bb4]@5 ~ [bb2,bb4]@6 ~@4]/2", S: "[ab2,g3,eb4]/2", T: "[c3,c4] ~", U: "[c3,g3,eb4]",
})).s("gm_string_ensemble_2").gain(0.09)

// other · lead 1 square
const lead_1_square = note("<~@88 A@2 ~@2 B@2 ~@2 B@2 ~@2 C@2 D@2 ~@52>".pickRestart({
  A: "[db5 bb4 gb4 f5@9 ~@4]/2", B: "[db5@2 bb4@2 gb4@2 f5@19 ~@7]/2", C: "[f4@3 bb4@5]/2", D: "[eb5@6 bb5@7 ~@3]/2",
})).s("gm_lead_1_square").gain(0.25).pan(0.9)

// other · clavinet
const clavinet = note("<~@91 A B ~@2 A C ~@3 D@2 E@2 ~@52>".pickRestart({
  A: "~@4 ab2@2 bb2@2 db3 ~ db3@2 bb2@2 ab2@2", B: "gb2 ~", C: "gb2@5 ~@3",
  D: "[bb1@9 ~@3 bb1@11 ~ eb2@2 f2@2 ab2@2 bb2@2]/2", E: "[bb1@5 ~ bb1@4 ~@6]/2",
})).s("gm_clavinet").gain(0.4).pan(0.1)

// chords · electric bass finger
const electric_bass_finger = note(`<
  ~@33 A ~ B C D E F@2 G@2 H I J K L M ~@20 A ~ B C D E F@2 G@2 H I J K L M ~@3 N@2 O ~ P@3 ~ Q R S@2 ~ T U@2 A ~ B C D
  E F@2 V ~ H W J K L M J K X ~ A ~ B C D E F@2 G@2 H W J K L M A ~ B C D E F@2 G@2 ~@6
>`.pickRestart({
  A: "~@8 [eb4,g4,bb4,eb5] ~ [eb4,g4,bb4] ~ [bb4,eb5]@2 [eb4,g4,bb4,eb5]@2, ~@10 eb5@2 [eb4,g4] ~@3", // Eb Eb5 Eb
  B: "~@8 [bb4,eb5]@2 [f4,bb4,d5] ~ [bb4,d5]@2 [eb4,g4] ~, ~@8 g4 ~@3 f4 ~ c5@2", // Eb5 Bb Eb
  C: "[f4,bb4,d5]@5 ~ [f4,bb4,d5]@4 ~@2 [eb4,g4,c5]@4", D: "~@8 [g4,c5,eb5]@3 ~ [f4,bb4,d5]@3 ~",
  E: "[f4,bb4,d5]@3 ~ [eb4,ab4,c5]@4 ~@6 [ab4,c5]@2, ~@14 eb4 ~", // Bb Ab
  F: "[[f4,bb4,d5]@3 ~ [f4,bb4,d5] ~ [f4,bb4,d5]@5 ~ [f4,bb4,d5] ~ [f4,bb4,d5]@4 [eb4,g4,c5]@3 ~@11]/2", // Bb Cm
  G: "[~@8 [eb4,g4,bb4,eb5] ~ [eb4,g4,bb4,eb5] ~ [eb4,g4,bb4,eb5]@2 [eb4,g4,bb4,eb5]@4 ~@14]/2", // Eb
  H: "~@8 [g4,c5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [eb4,g4] ~, ~@4 eb5 ~@2 c5", // C5 Bb Eb
  I: "[f4,bb4,d5]@2 ~ [f4,bb4,d5]@2 ~ [eb4,g4,c5]@2", J: "~@8 [eb4,g4,bb4]@4 [d4,f4,bb4]@3 ~",
  K: "[d4,f4,bb4]@3 ~ [c4,eb4,ab4]@4 ~@2 [ab3,c4,f4] ~ [eb4,ab4]@2 [d4,f4,bb4]@2, ~@12 c4 ~@3", // Bb Ab Fm Ab5 Bb
  L: "~@2 [d4,f4,bb4]@4 ~@2 [eb4,g4,bb4]@3 ~ [d4,bb4] ~ [d4,f4,bb4]@2, ~@6 f4 ~", M: "~ [c4,eb4,g4]@3 ~@4",
  N: "[~@8 [db4,f4,bb4] ~ [db4,f4,bb4] ~ [db4,f4,bb4] ~ [db4,f4,bb4]@5 ~ [db4,f4,bb4] ~ [db4,f4,bb4]@5 ~ [f4,bb4] ~ [c4,eb4,ab4]@2, ~@14 db4 ~]/2", // Bbm Bb5 Ab
  O: "~ [ab3,c4,f4]@4 ~@3", // Fm
  P: "[~@8 [db4,f4,bb4]@2 [db4,f4,bb4]@2 [db4,f4,bb4]@2 [db4,f4,bb4]@5 ~ [db4,f4,bb4] ~ [eb4,ab4,c5]@6 [db4,gb4,bb4] ~ [eb4,ab4,c5]@4 [db4,gb4,bb4] ~ [c4,f4,ab4]@6 ~@6]/3", // Bbm Ab Gb Ab Gb Fm
  Q: "~@8 [db4,f4,bb4]@3 ~ [db4,f4,bb4]@3 ~", R: "[db4,f4,bb4]@3 ~ [db4,f4,bb4]@3 ~ [db4,f4,bb4]@3 ~ [db4,f4,bb4]@3 ~",
  S: "[[c4,eb4,ab4] [db4,f4,bb4] [eb4,ab4,c5] [db4,f4,bb4]@3 ~@2]/2", T: "~@12 eb5 ~ c5@2",
  U: "[eb5 ~ c5 ~ eb5 ~ c5 ~ eb5@3 ~ f5@9 ~@11]/2",
  V: "~@8 [eb4,g4,bb4,eb5] ~ [eb4,g4,bb4,eb5] ~ [eb4,g4,bb4,eb5]@2 [eb4,g4,bb4,eb5]@2", // Eb
  W: "[f4,bb4,d5]@2 ~ [f4,bb4,d5]!2 ~ [eb4,g4,c5]@2", X: "~@2 [d4,f4,bb4]@4 ~@2 [eb4,g4,bb4]@3 ~@5",
})).s("gm_electric_bass_finger").gain(0.24).pan(0.4)

// drums · rim
const rim = s("rim").struct("<[x!4] ~@109 [~ x] ~@45>").gain(0.55)

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

// drums · snare
const snare = s("sd").struct(`<
  ~ A@15 ~@2 A@14 ~@2 A@3 ~ A@2 ~ B A@3 ~ A@2 ~@2 A@18 ~@2 A@3 ~ A@2 ~ C A@3 ~ A@2 D ~@2 E A@11 ~@2 E ~@3 A@3 ~ A@2 ~ F
  A@3 ~ A@2 ~@4 G H A@3 ~ A@2 ~ I A@6 ~ F A@6 ~ F ~ E ~@5
>`.pickRestart({
  A: "~ x", B: "~@3 x", C: "~@5 x!3", D: "~@2 x!2 ~@4", E: "x", F: "~@6 x!2", G: "x ~@2 x ~@2 x ~",
  H: "~ x ~@2 x!2 ~@2", I: "~@5 x ~@2",
})).gain(0.55)

// drums · clap
const clap = s("cp").struct("<~@87 x ~@68>").gain(0.37)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@33 A ~@3 B ~@7 C ~@23 D ~@3 D ~@7 E ~@3 D F G ~@11 B F G F ~@5 B ~@7 H ~@7 B ~@3 B ~@20 B ~@6
>`.pickRestart({
// … 64 more lines