Strudelify

Sunday Girl

Blondie

KeyE majorTempo148 bpm
0:00/0:00
// Sunday Girl — Blondie
// 148 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 117 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(148/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 · overdriven guitar
const overdriven_guitar = note("<~@44 A@2 B@2 C D E F ~@65>".pickRestart({
  A: "c#4/2", B: "[g#3@47 ~]/2", C: "f#3@5 d#3 c#3@2", D: "f#3@15 d#3@3 c#3@5 ~", E: "a3", F: "b3",
})).s("gm_overdriven_guitar").gain(0.32).pan(0.3)

// other · xylophone
const xylophone = note(`<
  ~@84
  [~@18 c#6@2 ~ c#5@2 ~]
  [~@19 c#6@2 ~ e5@2]!2
  [~@19 c#6@2 ~ c#5@2]!2
  [~@19 c#6@2 ~ e5@2]!2
  ~@26
>`).s("gm_xylophone").gain(0.72).pan(0.8)

// bass · electric bass finger
const bass = note(`<
  ~ A B@2 A C D E F G H A B C D I J K L A@2 M N O P Q R S T U V W V X Y Z AA AB AC X Y AD AE AF AG AH AI AJ AK AL AM AN
  Y AO Y AP AE AQ AR AS AC AT AU AV AE AW AS AX AY AZ BA BB AZ BC BD BE AZ@2 BB@2 BF BG BH BI BJ BK BL BB BM BN BO BP BQ
  BR BS BT BU BV BW BX BY BZ CA BX CB CC CD CE CF CB CG BX CB@2 CA CH CI
>`.pickRestart({
  A: "d2@7 ~@2 d2@2 ~ d2@6 a1@6", B: "d2@8 ~ d2@2 ~ d2@6 a1@6", C: "d2@6 ~@3 d2 ~@2 d2@7 ~@2 d2@2 ~",
  D: "g2@6 ~@3 g2 ~@2 a2@7 ~@2 a2@3", E: "d2@7 ~@2 d2 ~@2 d2@7 ~@2 d2@3", F: "g2@7 ~@2 g2@3 a2@7 ~@2 a2@2 ~",
  G: "d2@7 ~@2 d2 ~@2 d2@7 ~@2 d2@2 ~", H: "g2@7 ~@2 g2@2 ~ a2@7 ~@2 a2 ~@2", I: "d2@6 ~@3 d2@2 ~ d2@7 ~@2 d2@2 ~",
  J: "g2@8 ~ g2@2 ~ a2@6 ~@3 a2@2 ~", K: "d2@7 ~@2 d2 ~@2 d2@7 ~@2 d2 ~@2", L: "g2@7 ~@2 g2@2 ~ a2@7 ~@2 a2@2 ~",
  M: "g1@2 ~ g1@2 ~ g1@2 ~ g1@2 ~ g1@2 ~ g1 ~@2 g1@2 ~ g1@2 ~",
  N: "g1@2 ~ g1@2 ~ g1@2 ~ g1@2 ~ g1@2 ~ g1@2 ~ g1@2 ~ g1@2 ~",
  O: "d2@2 ~ d2@2 ~ d2@2 ~ d2 ~@2 d2@2 ~ d2 ~@2 d2@2 ~ d2 ~@2",
  P: "d2@2 ~ d2@2 ~ d2@2 ~ d2@2 ~ d2@2 ~ d2 ~@2 d2@2 ~ d2@2 ~",
  Q: "g1@2 ~ g1@2 ~ g1@2 ~ g1 ~@2 g1@2 ~ g1 ~@2 g1@2 ~ g1 ~@2",
  R: "g1 ~@2 g1@2 ~ g1@2 ~ g1 ~@2 g1 ~@2 g1@2 ~ g1 ~@2 g1 ~@2", S: "e1@7 ~@2 e1 ~@2 e1@5 ~ e1@5 ~", T: "a1 f#2 e2 a1",
  U: "b1@2 g#2@2 f#2@2 c#2 d#2", V: "e2@6 ~@3 e2 ~@2 e2@7 ~@2 e2@2 ~", W: "a1@7 ~@2 a1@2 ~ b1@7 ~@2 b1@3",
  X: "a1@7 ~@2 a1@2 ~ b1@7 ~@2 b1 ~@2", Y: "e2@6 ~@3 e2 ~@2 e2@7 ~@2 e2 ~@2", Z: "a1@6 ~@3 a1@2 ~ b1@7 ~@2 b1 ~@2",
  AA: "e2@7 ~@2 e2@2 ~ e2@6 b1@6", AB: "e2@7 ~@2 e2 ~@2 e2@6 b1@6", AC: "e2@7 ~@2 e2 ~@2 e2@7 ~@2 e2@2 ~",
  AD: "a1@7 ~@2 a1@2 ~ b1@7 ~@2 b1@2 ~", AE: "e2@7 ~@2 e2 ~@2 e2@7 ~@2 e2 ~@2", AF: "a1@7 ~@2 a1@2 ~ b1@8 ~ b1 ~@2",
  AG: "c#2@7 ~@2 c#2 ~@2 c#2@9 ~@3", AH: "c#2@7 ~@2 c#2 ~@2 c#2@10 ~@2", AI: "g#1@6 ~@3 g#1 ~@2 g#1@8 ~@4",
  AJ: "g#1@7 ~@2 g#1 ~@2 g#1@10 ~@2", AK: "f#2@3 a#2@2 ~@4 c#3@3 ~@3 d#3@7 ~@2",
  AL: "f#3@3 d#3@2 ~@4 c#3@3 ~@3 d#3@5 ~ g#2@3", AM: "a2@2 ~ a2@2 ~ a2@2 ~ a2@2 ~ a2@2 ~ a2@2 ~ a2 ~@2 a2@2 ~",
  AN: "b2@2 ~ b2@2 ~ b2@2 ~ b2@2 ~ b2@2 ~ b2 ~@2 b2@2 ~ b2@2 ~", AO: "a2@6 ~@3 a2 ~@2 b2@7 ~@2 b2@2 ~",
  AP: "a2@7 ~@2 a2@2 ~ b2@7 ~@2 b2@2 ~", AQ: "a2@6 ~@3 a2@2 ~ b2@8 ~ b2 ~@2", AR: "e2@7 ~@2 e2 ~@2 e2@9 ~@3",
  AS: "e2@7 ~@2 e2@2 ~ e2@8 ~@4", AT: "a2@7 ~@2 a2@2 ~ b2@7 ~@2 b2@3", AU: "e2@7 ~@2 e2@2 ~ e2@7 ~@2 e2@2 ~",
  AV: "a2@6 ~@3 a2@3 b2@7 ~@2 b2@2 ~", AW: "a2@7 ~@2 a2@3 b2@7 ~@2 b2@2 ~", AX: "e2@7 ~@2 e2 ~@2 e2@10 ~@2",
  AY: "a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1 ~@2",
  AZ: "a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~",
  BA: "e2@2 ~ e2@2 ~ e2 ~@2 e2 ~@2 e2@2 ~ e2@2 ~ e2@2 ~ e2 ~@2",
  BB: "e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~",
  BC: "a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~@2 a1 ~ a1@2 ~",
  BD: "e2@2 ~ e2@2 ~ e2@2 ~ e2 ~@2 e2@2 ~ e2@2 ~@2 e2@2 ~ e2@2",
  BE: "~ e2@2 e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~",
  BF: "a1@2 ~ a1@2 ~ a1@2 ~@2 a1 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~",
  BG: "a1@2 ~ a1@2 ~@2 a1@2 ~ a1@2 ~ a1@2 a1@2 ~ a1@2 ~ a1@2 ~",
  BH: "e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~@2 e2@2 ~ e2@2 ~ e2@2 ~ e2 ~",
  BI: "e2@2 ~@2 e2@2 ~ e2@2 ~ e2@2 ~ e2@2 e2@2 ~@2 e2@2 e2@2 ~",
  BJ: "a2@2 ~ a2@2 ~ a2@2 ~ a2@2 ~ a2@2 ~ a2@2 ~ a2@2 ~ a2@2 ~",
  BK: "~ a2@2 ~ a2@2 a2@2 ~ a2@2 ~ a2@2 ~ a2@2 ~ a2@2 ~@2 a2@2",
  BL: "~ e2@2 e2@2 ~ e2@2 ~@2 e2@2 ~ e2@2 e2@2 ~ e2@2 ~@2 e2 ~",
  BM: "a2@2 ~ a2@2 ~@2 a2@2 ~ a2@2 ~ a2@2 ~ a2@2 ~ a2@2 ~ a2@2",
  BN: "~ a2@2 a2@2 ~ a2@2 ~ a2@2 ~ a2@2 ~ a2@2 ~ a2@2 ~@2 a2@2",
  BO: "e2@2 ~ e2@2 ~ e2 ~@2 e2@2 ~ e2@2 ~ e2@2 ~@2 e2@2 ~ e2@2", BP: "~ e2@2 ~ e2@2 e2@2 ~ e2@2 ~@5 a1@6 g#1@2",
  BQ: "~ a1@5 ~ a1@2 a1@2 ~ a1@2 ~ a1@2 ~@2 a1@2 ~ a1@2", BR: "~ a1@2 ~ a1@2 a1@2 ~@2 a1@2 a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~",
  BS: "e2@2 ~@2 e2@2 ~ e2@2 ~ e2 ~@2 e2@2 ~ e2@2 ~ e2@2 ~ e2@2",
  BT: "~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 e2@2 ~",
  BU: "a1@2 ~ a1@2 ~ a1@2 ~@2 a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2",
  BV: "~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 a1@2 ~@2 a1@2 ~ a1@2",
  BW: "~ e2@2 ~ e2@2 ~ e2@2 ~ e2 ~@2 e2@2 ~ e2 ~@2 e2@2 ~ e2 ~",
  BX: "~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2",
  BY: "~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1 ~@2 a1@2 ~ a1@2",
  BZ: "~ a1@2 ~ a1 ~@2 a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2",
  CA: "~ e2@2 ~ e2@2 ~ e2@2 ~ e2 ~@2 e2@2 ~ e2@2 ~ e2@2 ~ e2@2",
  CB: "~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2",
  CC: "~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 a1@2 ~ a1@2 ~@2 a1@2 ~ a1@2",
  CD: "~ e2@2 ~ e2 ~@2 e2@2 ~ e2 ~@2 e2@2 ~ e2 ~@2 e2@2 ~ e2 ~",
  CE: "e2@2 ~@2 e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2",
  CF: "~ a1@2 ~ a1@2 ~ a1@2 ~ a1 ~@2 a1@2 ~ a1@2 ~ a1@2 ~ a1@2",
  CG: "~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2 ~@2 e2@2 ~ e2@2", CH: "~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 e2@2 ~@2 a1@6 g#1@2",
  CI: "~ a1@4 ~@19",
})).s("gm_electric_bass_finger").gain(0.72)

// chords · drawbar organ
const drawbar_organ = note(`<
  ~@13 A@4 B@2 C@2 D@4 E@2 F@2 G H I@4 J K@3 I@4 J L@2 M@2 N@2 O P H I@4 Q@4 I@4 R@7 S@2 T@2 S@2 U@4 V@2 ~@7 W X@6 Y@8
  Z@8 AA@3
>`.pickRestart({
  A: "[[a4,f#5]@2 [g4,b4] [c#5,e5] f#5@2 [g4,b4] [a4,c#5,e5], d5@3 a4@3 ~@2, ~@4 d5@3 ~]/4", // D G C#m G A
  B: "[[a4,f#5]@2 [g4,b4] [a4,c#5,e5], d5@3 ~]/2", C: "[a4,d5,f#5]/2", D: "[[g4,b4] [a4,f#5], d5@95 ~]/4",
  E: "[g4,b4,d5]/2", F: "[[g#4,b4] [a4,c#5], e5]/2", G: "[b4,d#5,f#5]", H: "[g#4,b4,e5]",
  I: "[[e4,a4,c#5] [f#4,d#5] [g#4,e5]@2, ~ b4@3]/2", J: "[e4,a4,c#5] [f#4,b4,d#5]", K: "[g#4,b4,e5]/3",
  L: "[g#4,c#5,e5]/2", M: "[g#4,b4,d#5]/2", N: "[f#4,a#4,c#5]/2", O: "[e4,a4,c#5]", P: "[f#4,b4,d#5]",
  Q: "[[e4,a4,c#5] [f#4,d#5] [g#4,e5]@6, ~ b4@7]/4", // A D#m C#m
  R: "[[e4,a4,c#5] [f#4,d#5] g#4@4 [a4,c#5]@4 [g#4,b4]@4, ~ b4@5 ~@8, ~ e5@6]/7", S: "[a4,c#5]/2", T: "[g#4,b4]/2",
  U: "[f#5 g#5 b5@2 g#5 f#5 ~@10 [a4,c#5]@16, [g#4,b4] ~, ~@3 e5@13]/4", // A G#m
  V: "[f#5@3 g#5@2 ~ b5@6 g#5@2 f#5@4 e5@30, [g#4,b4], e5@5 ~@11]/2", // G#m
  W: "~@16 [a4,c#5,e5]@2 ~ [a4,c#5]@2 ~ [g#4,c#5]@2, ~@19 e5@5", // A C#5
  X: "[~ [a4,c#5]@48 ~@24 f#5@3 g#5@3 b5@6 g#5@3 f#5@3 ~@6 [a4,c#5]@47, ~ e5@143, ~@49 [g#4,b4]@48 ~@47]/6", // A G#m
  Y: "[~ f#5@3 g#5@3 b5@6 ~ f#5@2 ~@33 [a4,c#5]@48 f#5@3 g#5@3 b5@6 c#6@6 b5@29 ~ [a4,c#5]@47, ~ [g#4,b4]@48 ~@48 [g#4,b4]@48 ~@47, ~ e5@18 e5@78 e5@95, ~@13 g#5@3 ~@176]/8", // A G#m
  Z: "[~ f#5@3 g#5@3 b5@6 g#5@3 f#5@2 ~@31 [a4,c#5]@48 f#5@3 g#5@3 b5@6 g#5@3 f#5@3 ~@30 [a4,c#5]@47, ~ e5@113 ~ e5@77, ~ [g#4,b4]@48 ~@48 [g#4,b4]@48 ~@47]/8", // A G#m
  AA: "[~ f#5@3 g#5@3 b5@6 g#5@3 f#5@3 ~@30 [a4,c#5]@3 ~@20, ~ [g#4,b4]@48 ~@23, ~ e5@16 ~@2 e5@33 ~@20]/3", // A G#m
})).s("gm_drawbar_organ").gain(0.25).pan(0.7)

// chords · electric guitar muted
const electric_guitar_muted = note(`<
  ~ A@3 B C D C D C D E@2 C D C D C D E B F@2 C@2 F@2 G H I G J G J G J K L G J G J G J M N O@2 P Q R S G J G J G J T U
  G J G J G J V W R@2 G@2 R@2 X Y Z AA AB AC AD AE AF G AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW AT AU AV AW
  AT AU AV AW AT AU AV AW AT AU AX AY
>`.pickRestart({
  A: "d3@8 ~ d3@2 ~ d3@6 a2@6", B: "d3@8 ~ d3 ~@2 d3@6 a2@5 ~",
  C: "[d3,a3] ~@2 [d3,a3] ~@2 [d3,a3] ~@2 [d3,a3] ~@2 [d3,a3] ~@2 [d3,a3] ~@2 [d3,a3] ~@2 [d3,a3] ~@2", // D5
  D: "[g2,d3] ~@2 [g2,d3] ~@2 [g2,d3] ~@2 [g2,d3] ~@2 [a2,e3] ~@2 [a2,e3] ~@2 [a2,e3] ~@2 [a2,e3] ~@2", // G5 A5
  E: "d3@7 ~@2 d3 ~@2 d3@6 a2@6",
  F: "[g2,d3] ~@2 [g2,d3] ~@2 [g2,d3] ~@2 [g2,d3] ~@2 [g2,d3] ~@2 [g2,d3] ~@2 [g2,d3] ~@2 [g2,d3] ~@2", // G5
  G: "[e2,b2] ~@2 [e2,b2] ~@2 [e2,b2] ~@2 [e2,b2] ~@2 [e2,b2] ~@2 [e2,b2] ~@2 [e2,b2] ~@2 [e2,b2] ~@2", // E5
  H: "[a2,e3]@23 ~", I: "[b2,f#3]",
  J: "[a2,e3] ~@2 [a2,e3] ~@2 [a2,e3] ~@2 [a2,e3] ~@2 [b2,f#3] ~@2 [b2,f#3] ~@2 [b2,f#3] ~@2 [b2,f#3] ~@2", // A5 B5
  K: "e3@8 ~ e3@2 ~ e3@6 b2@6", L: "e3@8 ~ e3@2 ~ e3@6 b2@5 ~", M: "[c#3,g#3]@11 ~", N: "[c#3,g#3]@23 ~",
  O: "[g#2,d#3]@11 ~", P: "[f#2,c#3]@23 ~", Q: "[f#2,c#3]@7 ~",
  R: "[a2,e3] ~@2 [a2,e3] ~@2 [a2,e3] ~@2 [a2,e3] ~@2 [a2,e3] ~@2 [a2,e3] ~@2 [a2,e3] ~@2 [a2,e3] ~@2", // A5
  S: "[b2,f#3] ~@2 [b2,f#3] ~@2 [b2,f#3] ~@2 [b2,f#3] ~@2 [b2,f#3] ~@2 [b2,f#3] ~@2 [b2,f#3] ~@2 [b2,f#3] ~@2", // B5
  T: "e3@5 ~", U: "e3", V: "e3@7 ~", W: "e3@11 ~",
  X: "[e2,b2] ~@2 [e2,b2] ~@2 b2 e2 ~ [e2,b2] ~@2 [e2,b2] ~@2 [e2,b2] ~@2 [e2,b2] ~@2 [e2,b2] ~@2", // E5
  Y: "b2 e2 ~ [e2,b2] ~@2 [e2,b2] ~@2 [e2,b2] ~@2 [e2,b2] ~@2 [e2,b2] ~@2 [e2,b2] ~@2 b2 e2 ~", // E5
  Z: "[a2,e3] ~@2 [a2,e3] ~@2 a2 e3 ~ [a2,e3] ~@2 [a2,e3] ~@2 [a2,e3] ~@2 [a2,e3] ~@2 [a2,e3] ~@2", // A5
  AA: "a2 e3 ~ [a2,e3] ~@2 a2 e3 ~ a2 e3 ~ [a2,e3] ~@2 [a2,e3] ~@2 a2 e3 ~ [a2,e3] ~@2", // A5
  AB: "[e2,b2] ~@2 [e2,b2] ~@2 [e2,b2] ~@2 [e2,b2] ~@2 [e2,b2] ~@2 [e2,b2] ~@3 [e2,b2] ~ [e2,b2] ~@2", // E5
  AC: "[e2,b2] ~@2 [e2,b2] ~@3 [e2,b2] ~@2 [e2,b2] ~ [e2,b2] ~@3 [e2,b2] ~@2 [e2,b2] ~@2 [e2,b2] ~", // E5
  AD: "~ [a2,e3] ~@2 [a2,e3] ~@2 [a2,e3] ~@2 [a2,e3] ~ e3 a2 ~ e3 a2 ~@2 [a2,e3] ~ e3 a2 ~", // A5
  AE: "[a2,e3] ~@2 [a2,e3] ~@2 e3 a2 ~ e3 a2 ~ e3 a2 ~@2 [a2,e3] ~ e3 a2 ~ e3 a2 ~", // A5
  AF: "[e2,b2] ~@2 b2 e2 ~ [e2,b2] ~@2 [e2,b2] ~@2 [e2,b2] ~@2 [e2,b2] ~@2 [e2,b2] ~@2 [e2,b2] ~@2", // E5
  AG: "a2 c#3@2 a2 ~@2 e3@3 a2 ~@2 f#3@3 a2 ~@2 e3@3 a2 ~@2, ~@6 a2 ~@5 a2 ~@5 a2 ~@5",
  AH: "c#3@3 e3@3 a2 ~@2 a2 f#3@2 a2 ~@2 e3@3 ~ c#3@3 e3@2, a2 ~@2 a2 ~@11 a2 ~@3 a2 ~@2 a2 ~",
  AI: "e2 g#2@3 e2 ~ e2 b2@2 e2 ~@2 e2 f#3@2 e2 ~@2 e2 e3@2 ~ e2 ~",
  AJ: "g#2@3 e2 b2@2 e2 ~@2 f#3@3 ~ e2 ~ e2 e3@3 c#3@3 e3@2, e2 ~@8 e2 ~@9 e2 ~@2 e2 ~",
  AK: "~ c#3@3 a2 ~@2 e3@3 a2 ~@2 f#3@2 a2 ~@2 a2 e3@2 a2 ~@2, ~ a2 ~@5 a2 ~@5 a2 ~@10",
  AL: "a2 c#3@2 a2 e3@2 a2 ~@2 a2 f#3@2 a2 ~@2 a2 e3@2 a2 c#3@2 a2 e3@2",
  AM: "~ g#2@3 e2 ~@2 b2@3 e2 ~@2 f#3@3 e2 ~@2 e3@2 e2 ~@2, ~ e2 ~@5 e2 ~@5 e2 ~@5 e2 ~@4",
  AN: "~ e2 ~@2 b2@2 e2 ~@3 e2 ~@5 e3@3 c#3@2 ~ a2 ~, g#2@3 ~ e2 ~@4 f#3@3 ~@4 a2 ~@2 a2 ~ e3@3",
  AO: "~ a2 ~ a2 ~@3 a2 ~ a2 ~@3 f#3@2 a2 ~@2 a2 e3@2 a2 ~@2, c#3@3 ~@3 e3@3 ~@4 a2 ~@10",
  AP: "~ c#3@2 e3@3 a2 ~@2 a2 f#3@3 a2 ~@2 e3@3 [a2,c#3]@2 ~ a2 ~, ~ a2 ~ a2 ~@12 a2 ~@4 e3@3", // A
  AQ: "~ g#2@3 e2 ~@2 b2@2 e2 ~@3 f#3@2 e2 ~@3 e3@2 e2 ~@2, ~ e2 ~@5 e2 ~@5 e2 ~@5 e2 ~@4",
  AR: "~ e2 ~ e2 b2@3 e2 ~ f#3@3 ~ e2 ~@2 e3@3 c#3@3 e3@2, g#2@3 ~@6 e2 ~@6 e2 ~@2 e2 ~@2 e2 ~",
  AS: "~ c#3@2 a2 ~@3 e3@3 a2 ~@2 f#3@3 a2 ~@2 e3@3 a2 ~, ~ a2 ~@5 a2 ~@5 a2 ~@5 a2 ~@4",
  AT: "~ c#3@3 e3@3 a2 ~@2 f#3@3 a2 ~@2 e3@3 c#3@3 e3@2, ~ a2 ~@2 a2 ~@5 a2 ~@5 a2 ~@2 a2 ~@2 a2 ~",
  AU: "~ g#2@3 e2 ~@2 b2@3 e2 ~@2 f#3@3 e2 ~@2 e3@3 e2 ~, ~ e2 ~@5 e2 ~@5 e2 ~@5 e2 ~@4",
  AV: "~ g#2@3 b2@3 e2 ~@2 f#3@3 e2 ~@2 e3@3 c#3@3 e3@2, ~ e2 ~@2 e2 ~@5 e2 ~@5 e2 ~@2 e2 ~@2 e2 ~",
  AW: "~ c#3@3 a2 ~@2 e3@3 a2 ~@2 f#3@3 a2 ~@2 e3@3 a2 ~, ~ a2 ~@5 a2 ~@5 a2 ~@5 a2 ~@4",
  AX: "~ g#2@3 b2@3 e2 ~@2 f#3@3 e2 ~@2 e3@3 c#3@3 e3@2, ~ e2 ~@2 e2 ~@5 e2 ~@5 a2 ~@2 a2 ~@2 a2 ~",
  AY: "~ c#3@3 ~@20, ~ a2 ~@22",
})).s("gm_electric_guitar_muted").gain(0.57).pan(0.3)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~ A@3 B ~@6 C D ~@6 E F ~@6 G H I ~@6 J K ~@6 L M N@2 O P ~@8 J K ~@6 J Q ~@8 R S T U V W X Y ~@7 Z AA@2 AB@2 AC@2
  AD@2 AA@2 AE@2 AC@2 AF@2 AG@2 AE@2 AA@2 AE@2 AH
>`.pickRestart({
  A: "f#4@7 ~@2 f#4 ~@2 f#4@6 e4@5 ~, [d3,a3,d4]@11 ~", B: "f#4@7 ~@2 f#4 ~@2 f#4@6 e4@5 ~, [d3,a3,d4]@23 ~",
  C: "[a3,d4,f#4]@7 ~", D: "[a3,d4,f#4]", E: "[a3,d4,f#4]@11 ~", F: "[a3,d4,f#4]@23 ~", G: "[e3,b3,e4]@11 ~",
  H: "[a3,e4]@23 ~", I: "[b3,f#4]@23 ~", J: "[g#3,b3,e4]@11 ~", K: "[g#3,b3,e4]", L: "[c#4,e4,g#4]@23 ~",
  M: "[c#4,e4,g#4]@11 ~", N: "[b3,d#4,g#4]@11 ~", O: "[a#3,c#4,f#4]@11 ~", P: "[a#3,c#4,f#4]@23 ~",
  Q: "[g#3,b3,e4]@23 ~", R: "~ c#3@4 ~@2 e3@3 ~@3 f#3@3 ~@2 e3@3 ~@3", S: "c#3@3 e3@3 ~@3 f#3@4 ~@2 e3@4 c#3@3 e3@2",
  T: "~ g#2@4 ~@2 b2@4 ~@2 f#3@4 ~@2 e3@5", U: "g#2@4 b2@3 ~@3 f#3@4 ~ e3@4 c#3@3 e3@2",
  V: "~ c#3@4 ~@2 e3@4 ~@2 f#3@4 ~ e3@4 ~@2", W: "c#3@3 e3@3 ~@4 f#3@3 ~@2 e3@4 c#3@2 e3@3",
  X: "~ g#2@4 ~@2 b2@4 ~@2 f#3@3 ~@2 e3@3 ~@3", Y: "~ g#2@3 b2@4 ~@2 f#3@3 ~@2 e3@3 c#3@3 e3@3",
  Z: "~@15 [e3,a3,c#4]@3 ~ [e3,a3,c#4]@3 [e3,g#3,c#4]@2", AA: "[~ [e3,a3,c#4]@45 ~@2]/2",
  AB: "[[e3,g#3,b3]@22 ~ [e3,a3,c#4]]/2", AC: "[~ [e3,a3,c#4]@46 ~]/2", AD: "[~ [e3,g#3,b3]@43 ~ [e3,a3,c#4]@3]/2",
  AE: "[~ [e3,g#3,b3]@43 ~@2 [e3,a3,c#4]@2]/2", // E A
  AF: "[~ [e3,g#3,b3]@38 ~ [e3,a3,c#4]@2 ~ [e3,a3]@3 [e3,g#3]@2, ~@43 c#4@5]/2", AG: "[~ [e3,a3]@46 ~, ~ c#4@42 ~@5]/2",
  AH: "~ [e3,a3,c#4]@3 ~@20", // A
})).s("gm_electric_guitar_clean").gain(0.54).pan(0.8)

// drums · kick
const kick = s("bd").struct("<~ A@4 B@23 C B@15 A@6 C ~ B@32 D@2 E@5 F E@15 G E@8 H>".pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x!2", C: "x", D: "x!2 ~@2 x!2 ~@2", E: "~ x ~@2 x ~@8 x ~@2 x ~@7", F: "~ x ~@2 x ~@19",
  G: "~@4 x ~@2 x ~@5 x ~@2 x ~@5 x ~", H: "~ x ~@22",
})).gain(0.8)

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

// drums · clap
const clap = s("cp").struct("<~@21 A@7 ~@40 A@15 B ~@8 C@7 D C@7 ~ C@7 D ~>".pickRestart({
  A: "~@2 x!2 ~@2 x ~", B: "~@2 x!2 ~@4", C: "~@7 x ~@2 x ~@8 x ~@4", D: "~@7 x ~@2 x ~@13",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct("<A ~@4 B@70 C D E F G H I J K ~@8 L M N O L@20 ~>".pickRestart({
  A: "~@2 x!2", B: "x!8", C: "~ x ~ x ~@2 x ~@3 x ~@2 x ~ x ~@2 x ~@2 x ~@2",
// … 29 more lines

More by Blondie