Strudelify
I'll Stand By You cover art

1994 · Last of the Independents

I'll Stand By You

The Pretenders

KeyD majorTempo135 bpm
0:00/0:00
// I'll Stand By You — The Pretenders
// 135 bpm, 4/4, key D major. Source: 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 121 bars on a 16-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 · fretless bass · "FRETLESS"
const bass = note(`<
  ~@21 A B A B C D E@2 F G H I J K G L M N O P Q R S T M U O P Q V W X Y W Y W Q R S Z AA AB AC AD AE AF AA AB AC AD AE
  AF AA AG H AH AI AJ I AK@2 AL I AL I S AJ AM AN AO@2 AP@4 AO@2 AP@4 AO@2 AP@4 AO@2 AP@4 AO@2 AQ@3 ~@2
>`.pickRestart({
  A: "f#1@15 ~", B: "b1@15 ~", C: "g1@7 d2", D: "g2 a2 g2@6", E: "a2/2", F: "d2@13 ~ d2 ~", G: "d2", H: "b1@13 ~ b1 ~",
  I: "b1", J: "a1@13 ~ a1 ~", K: "a1@3 g1", L: "f2 g2", M: "c2@12 ~@2 c2 ~", N: "c2", O: "e1@12 ~@2 e1 ~", P: "e1",
  Q: "f1@12 ~@2 f1 ~", R: "f1", S: "g1@12 ~@2 g1 ~", T: "b1@6 a1 b1", U: "c2 a1", V: "f1@7 g1", W: "a1", X: "g1@7 f1",
  Y: "e1@6 ~ e1", Z: "g1!2", AA: "d2@13 ~ a1@2", AB: "d2@7 ~ d2@8", AC: "b1@13 ~ f#1@2", AD: "b1@13 ~ g1@2",
  AE: "a1@13 ~ g1@2", AF: "a1@15 ~", AG: "d2@11 ~ d2@2 c#2@2", AH: "b1@11 ~ b1@2 a1@2", AI: "g1@13 ~ g1 ~", AJ: "g1",
  AK: "[a1@19 ~ a1@2 e2@2 a2@8]/2", AL: "f#1@6 ~ f#1", AM: "a1@12 ~@2 a1 ~", AN: "a1!2",
  AO: "[~ d2@13 ~ a1@2 d2@7 ~ d2@7]/2", AP: "[~ b1@13 ~ f#1@2 b1@13 ~ g1@2 a1@13 ~ g1@2 a1@15]/4",
  AQ: "[~ b1@13 ~ f#1@2 b1@13 ~ g1@2 a1@13 ~@2]/3",
})).s("gm_fretless_bass").gain(0.48)

// chords · piano · "A.PIANO 2"
const piano = note(`<
  A B C D@2 E@2 F@2 G@2 H@2 I@2 J@2 K@2 L M N O P B Q@2 R@2 S T S U V W X Y Z@2 AA@2 AB@2 AC AD Z@2 AA@2 AB@2 AC AD AE
  AC AE AC AF@2 AG@2 AH@4 AI@2 AH@4 AI@2 AH@4 AJ@2 AK AL@3 AM AL AM AN@2 AO@2 AP@4 AQ@2 AP@4 AQ@2 AP@4 AQ@2 AP@4 AQ@2
  AP@4 AR@3
>`.pickRestart({
  A: "a3 ~ a3!2, [d3,d4,f#4]!2, d2@3 d2@5, ~ a3 ~@2", B: "a3!4, [b1,b2], [d4,f#4]!2",
  C: "a3@2 ~@5 d4, a2@5 a2@3, [c#4,e4]@2 c#4!2, a1@3 a1@5, ~ a3 [a3,e4]@2", // C#m A5
  D: "[d3 ~@6 g2, g1, g2@3 b3, b3@5 d3@3, g3 d3 g3 d3 [g3,d4]@4]/2", // G5
  E: "[a3@2 ~@13 d3, d2, d3@15 ~, [d4,f#4]!2 [d4,f#4]!2, ~ a3@2 a3@2 a3@2 a3]/2", // D
  F: "[c#4 ~@6 c#4, [f#1,f#2], [f#4,a4]!2 [f#4,a4]!2, ~ c#4@2 c#4@2 c#4@2 ~]/2", // F# F#m
  G: "[d4@2 ~@9 g2 b3@2 b3@2, g1@3 [g1,g2,d4,g4], g2@11 ~@5, [g4,b4]!2 [g4,b4] ~, ~ d4@2 d4@2 d4 ~@2]/2", // G5 G
  H: "[a3 ~@3 a3 ~@2 a3, a2 a2, a1@7 a1@9, [d4,f#4]!2 [c#4,e4]!2, ~ a3@2 a3 ~ a3@2 ~]/2", // D C#m
  I: "[a3@2 ~@5 d3 d3@4 [b1,b2,a3,d4,f#4]@4, d2@3 ~, d3@7 ~@9, [d4,f#4] [d4,f#4]@2 ~, ~ a3@2 a3@3 ~@2]/2", // Bm7 D
  J: "[c#4 ~@2 c#4 c#4 ~ [f#2,c#4,f#4,a4]@2, f#2@3 ~, f#1@11 f#1@5, [f#4,a4]!2 [f#4,a4] ~, ~ c#4@2 ~@2 c#4 ~@2]/2", // F#m
  K: "[d4!4 d4 ~ d4!2, g2@3 [g2,g4,b4], g1@11 g1@5, [g4,b4]!2 [g4,b4] ~, ~@5 d4 ~@2]/2", // G
  L: "a3@2 a3@2 a3@2 ~ b2, b1, b2@7 ~, [d4,f#4]!2, ~@3 a3", // D
  M: "a3@2 ~@5 a2, a1, e4@4 a2@3 ~, a2@3 c#4@2 [c#4,e4]@3, c#4 a3@2 a3", // C#m
  N: "a3 ~ a3!2, [f#2,c#4,e4]!2, f#1@3 f#1@5, ~ a3 ~@2", O: "a3@5 a3@3 a3@4 a3@4, [b1,b2], [d4,f#4]!2",
  P: "a3@2 ~@3 a3 ~ f#2, f#1, e4@4 f#2@3 ~, f#2@3 c#4@2 [c#4,e4]@3, c#4@2 a3@3 ~ a3@2", // C#m
  Q: "[b3 ~ b3!2 b3 ~ b3!2, [g2,d4,g4] g2@2 [g2,d4,g4], g1@3 g1@8 g1@5, ~ b3 [d4,g4]@2 [d4,g4]@2 ~@2, ~@5 b3 ~@2]/2", // G5
  R: "[a1@3 ~ a3@2 ~@2 [a2,a3,c#4,e4,a4]@8, [a2,c#4,e4,a4]!2 ~@2, ~@3 a1@4 a1@9, ~@3 a3 ~@4]/2", S: "a3!4, [d4,f#4]!2",
  T: "a3@2 ~ d4@2 a3 a3@2, f#4@5 ~@3, d4@3 ~@2 [d4,f#4]@3, ~@2 a3@3 ~@3", U: "d4@3 d4@2 [a3,d4,f#4]@3, [a3,f#4]@5 ~@3",
  V: "a3!4, [c4,e4,g4]!2", W: "a3!2 [a3,c4,e4,g4] [b3,d4,g4], [c4,e4,g4] ~", X: "d4@2 ~ a4, a3, f#4@5 f#4@3, ~ d4",
  Y: "[f3,a3,c4] [g3,b3,d4]", Z: "[g3 ~@6 g3, [c4,e4]!2 [c4,e4]!2, ~ g3@2 g3@2 g3@2 ~]/2",
  AA: "[b3 ~@6 b3, [e4,g4]!2 [e4,g4]!2, ~ b3@2 b3@2 b3@2 ~]/2", // Em
  AB: "[c4 ~@6 c4, [f4,a4]!2 [f4,a4]!2, ~ c4@2 c4@2 c4@2 ~]/2", AC: "g3 ~@2 g3, [c4,e4]!2, ~ g3@2 ~",
  AD: "~@3 g3, [b3,d4]!2, ~ g3@2 ~", AE: "b3 ~@2 b3, [e4,g4]!2, ~ b3@2 ~",
  AF: "[a3 ~@6 a3, [c4,f4]!2 [c4,f4]!2, ~ a3@2 a3@2 a3@2 ~]/2", // F5
  AG: "[g3 ~@4 g3 ~ g3, [c4,d4,g4]!2 [c4,d4,g4] [b3,d4,g4], ~ g3@2 g3@2 ~@3]/2", // Csus2 G
  AH: "[a3 ~@6 a3, [d4,f#4]!2 [d4,f#4]!2, ~ a3@2 a3@2 a3@2 ~]/2", // D
  AI: "[a3 ~@6 a3, [c4,e4,g4]!2 [c4,e4,g4]!2, ~ a3@2 a3@2 a3@2 ~]/2", // C
  AJ: "[b3 ~@6 b3, [d4,g4]!2 [d4,g4]!2, ~ b3@2 b3@2 b3@2 ~]/2", AK: "b3 ~@2 b3, [d4,f#4]!2, ~ b3@2 ~",
  AL: "a3 ~@2 a3, [c#4,e4]!2, ~ a3@2 ~", AM: "a3 ~@2 a3, [d4,f#4]!2, ~ a3@2 ~",
  AN: "[g3 ~@6 g3, [b3,d4]!2 [b3,d4]!2, ~ g3@2 g3@2 g3@2 ~]/2", // Bm
  AO: "[a3@3 ~@25 a3@4, [c#4,e4]!2 [c#4,e4]!2, ~ a3@2 a3@2 a3@2 ~]/2", // C#m
  AP: "[~ a3@4 ~@24 a3@3, ~ [d4,f#4]@8 [d4,f#4]@8 [d4,f#4]@8 [d4,f#4]@7, ~@5 a3@8 a3@8 a3@8 ~@3]/2", // D
  AQ: "[~ a3@4 ~@24 a3@3, ~ [c4,e4,g4]@8 [c4,e4,g4]@8 [c4,e4,g4]@8 [c4,e4,g4]@7, ~@5 a3@8 a3@8 a3@8 ~@3]/2", // C
  AR: "[~ a3@4 ~@8 a3@32 ~@3, ~ [c4,e4,g4]@8 [c4,e4,g4]@32 ~@7, ~@5 a3@8 ~@35]/3", // C
})).s("gm_piano").gain(0.47).pan(0.4)

// other · lead 3 calliope · "CALLIOPE"
const lead_3_calliope = note("<~@97 [~@5 f#5 ~ f#5 ~ f#5 ~ e5 ~ e5 ~ e5] [~ e5@4 d5 ~ c#5@4 d5@5] ~@22>")
  .s("gm_lead_3_calliope").gain(0.42)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note("<~@73 A@4 B@4 ~@40>".pickRestart({
  A: "[~@2 [a3,d4,f#4]!2 a3@2 ~@8 d4@3 [a3,d4,f#4]!3 a3@2 ~@8 d4@2, ~@4 f#4@5 f#4 e4@15 f#4 e4@6, ~@4 d4@3 d4@5 f#4@5 ~@3 f#4@4 g4@8, ~@6 a3@11 ~@3 d4@2 a3@10, ~@8 g4@15 d4@5 f#4@4]/4", // D
  B: "[~@3 a2, g3@3 g3@7 g3@3 d4 g3@16 ~@2, ~ d4@2 d4@3 e4@8 ~@2, ~@4 f#3@3 f#3@8 d4@16 ~, ~ e3 b2@2]/4",
})).s("gm_electric_guitar_clean").gain(0.42)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<~@80 A B C@3 D E@2 F@2 ~@12 G@2 H@12 I@3 ~@2>".pickRestart({
  A: "[e4,a4,c#5]@6 a4 b4", B: "c#5@2 a4 b4 c#5 d5 e5@2", C: "[f#4@8 f#4@3 [e4,e5], f#5@11 ~]/3",
  D: "d4@4 c#4@4 [b3,c#5]@4 d3 e3 f#3 ~, d5@2 ~ d5", E: "[g3,b4]/2", F: "[a4@31 ~, a3@9 ~@7]/2",
  G: "[~ a4@24 a5@7, ~ [d5,f#5]@31]/2", H: "[~ [b4,d5,f#5]@32 [c5,e5,g5]@32 a4@24 a5@7, ~@65 [d5,f#5]@31]/6",
  I: "[~ [b4,d5,f#5]@32 [c5,e5,g5]@15]/3", // Bm C
})).s("gm_string_ensemble_1").gain(0.42)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean_2 = note(`<
  ~@21 A@2 B@2 C@2 D@2 E F E F G H I ~ J K L M N O P Q J R L M N O P Q S T U V W X Y Z AA AB AC AD AE AF AA AB AC AD AE
  AF AB@2 AG AD AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU@8 AV@8 AW@7 AX@6 ~@2
>`.pickRestart({
  A: "[~ e4@3, ~@6 e3@25 ~, ~@7 [a3,b3]@25]/2", // Asus2
  B: "[~@8 e4@15 ~ b3@4 b3@4, ~@3 e3@8 ~ [f#3,d4,f#4]@4, ~@7 [a3,b3]@16 ~@9]/2", C: "[[g3,b3,d4,g4]@3 [d3,g3,b3,d4]]/2",
  D: "[e3,a3,c#4,e4]", E: "~ [f#3,a3,d4], [f#3,a3,d4] ~, ~ d3@3", F: "[d3,f#3,a3,d4]!2",
  G: "~@4 [a3,c4,e4]@3 [g3,a3,c4,e4], [a3,c4,e4] ~, ~@2 g3@5 ~", // Am Am7 Am
  H: "[g3,a3,c4,e4]@3 [g3,a3,c4,e4] [g3,a3,c4,e4]@2 [d3,g3,b3,d4]@2", I: "[d3,f#3,a3,d4]",
  J: "e3!2 [e3,g3,c4,e4]@2, [g3,c4,e4] ~", K: "e3@2 ~@5 e3, e4@5 e4@3, c4!2, g3@3 g3@3 g3@2, ~@2 e3@5 ~",
  L: "e3@5 e3@3 e3@5 e3@3, [g3,b3,e4]!2", M: "e3@3 ~@3 e4@2, e4@3 ~, b3@5 b3@3, g3!2, ~@3 e3@5",
  N: "f3!2 [f3,a3,c4,f4]@2, [a3,c4,f4] ~", O: "f3@3 f3 f3@2 f3@2, [a3,c4,f4]!2",
  P: "e3@3 ~ g3 [e3,g3,e4]@3, c4, e4@5 ~@3, g3 ~, ~@3 e3@2 ~@3", // Em
  Q: "d3@2 ~ g3 ~@3 g3, d4@5 d4@3, b3@2 b3!2, g3@3 ~ g3@3 ~, ~ d3@3", R: "[e3,g3,c4,e4] [a3,c4,e4,a4]",
  S: "[e3,g3,b3,d4]@2 [e3,g3,b3,d4]!2 [e3,g3,b3,d4]@2 [e3,g3,b3,d4]!2", // Em7
  T: "[e3,a3,c4,e4]@2 [e3,a3,c4,e4]!2 [e3,a3,c4,e4]@3 [e3,a3,c4,e4]", // Am
  U: "[e3,g3,b3,d4]@2 [e3,g3,b3,d4]!2 [g3,b3,d4]@2 [e3,g3,b3,d4]!2", // Em7 G Em7
  V: "[e3,a3,c4,e4]@2 [e3,a3,c4] [e3,a3,c4,e4] [a3,c4,e4]@2 e3 [e3,a3,c4,e4], ~@8 e3@3 ~@5", // Am
  W: "[c3,f3,a3,c4]@2 [c3,f3,a3,c4]!2 [c3,f3,a3,c4]@2 [c3,f3,a3,c4] [f3,a3,c4]", // F
  X: "[c3,f3,a3,c4]@2 [c3,f3,a3,c4] [f3,a3] [c3,f3,a3,c4]@2 [c3,f3,a3,c4]@2", // F
  Y: "[d3,g3,c4,d4]@2 [d3,g3,c4,d4]!2 [d3,g3,c4,d4]@2 [d3,g3,c4,d4]!2", // Csus2
  Z: "[d3,g3,c4,d4]@3 [d3,g3,c4,d4] [d3,g3,b3,d4]@2 [d3,g3,b3,d4]@2", // Csus2 G
  AA: "d3 ~@3 a4@2 [d3,f#3,a3,d4]!2, [f#3,a3,d4]@3 ~, ~ d3@5 ~@2, ~ e4@2 ~", // D
  AB: "[f#3,a3,d4]@3 ~ [f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@4 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2, d3 ~@3", // D
  AC: "d3 ~@3 a4@2 [d3,f#3,b3,d4,e4] [d3,f#3,b3,d4], [f#3,b3,d4]@3 ~, ~ d3@5 ~@2, ~ e4@2 ~", // Bm
  AD: "[d3,f#3,b3,d4]@2 [d3,f#3,b3,d4]!2 [d3,f#3,b3,d4]@2 [d3,f#3,b3,d4]!2", // Bm
  AE: "[e3,g3,a3,c4]@2 [g3,a3,c4] [e3,g3] [e3,g3,a3,c4]@2 [e3,g3,a3,c4]!2", // Am7 Em Am7
  AF: "e3@2 ~@5 b3, a3@3 c4, c4@4 b3 e4@3, g3@3 g3@5, ~ e3@3",
  AG: "[d3,f#3,b3,d4]@2 [d3,f#3,b3,d4]!2 [d3,f#3,b3,d4]@2 [d3,f#3,b3,d4,e4] [d3,f#3,b3,d4]", // Bm
  AH: "[g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]!2", AI: "[g3,b3,d4,g4]!4",
  AJ: "~@2 [b3,d4,f#4,b4] ~ [b3,d4]@2 b3@2 [b3,d4,f#4,b4]@6 b3@2", // Bm
  AK: "[a3,c#4,e4,a4]@2 [c#4,e4] [c#4,e4,a4] [a3,c#4,e4,a4]@2 [c#4,e4,a4]@2", // A C#m A
  AL: "[a3,c#4,e4,a4]@2 [a3,c#4,e4,a4] a3 [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]@2", // A
  AM: "[f#3,a3,c#4,e4]@2 [f#3,a3,c#4,e4]!2 [f#3,a3,c#4,e4]@2 [f#3,a3,c#4,e4]!2", // F#m7
  AN: "[f#3,b3,d4,f#4]@2 [f#3,b3,d4,f#4]!2 [f#3,b3,d4,f#4]@3 [f#3,b3,d4,f#4]", // Bm
  AO: "[f#3,a3,c#4,e4]@2 [f#3,a3,c#4,e4]!2 [a3,c#4,e4]@2 [f#3,a3,c#4,e4]!2", // F#m7 A F#m7
  AP: "[f#3,b3,d4,f#4]@2 [f#3,b3,d4] [f#3,b3,d4,f#4] [b3,d4,f#4]@2 f#3 [f#3,b3,d4,f#4], ~@8 f#3@3 ~@5", // Bm
  AQ: "[d3,g3,b3,d4]@2 [d3,g3,b3,d4]!2 [d3,g3,b3,d4]@2 [d3,g3,b3,d4] [g3,b3,d4]", // G
  AR: "[d3,g3,b3,d4]@2 [d3,g3,b3,d4] [g3,b3] [d3,g3,b3,d4]@2 [d3,g3,b3,d4]@2", // G
  AS: "[e3,a3,d4,e4]@2 [e3,a3,d4,e4]!2 [e3,a3,d4,e4]@2 [e3,a3,d4,e4]!2", // Dsus2
  AT: "[e3,a3,d4,e4]@3 [e3,a3,d4,e4] [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4]@2", // Dsus2 A
  AU: "[~ d3@2 ~@6 a4@4 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [f#3,a3,d4]@3 ~ [f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@4 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 d3@2 ~@6 a4@4 [d3,f#3,b3,d4,e4]@2 [d3,f#3,b3,d4]@2 [d3,f#3,b3,d4]@4 [d3,f#3,b3,d4]@2 [d3,f#3,b3,d4]@2 [d3,f#3,b3,d4]@4 [d3,f#3,b3,d4]@2 [d3,f#3,b3,d4]@2 [e3,g3,a3,c4]@4 [g3,a3,c4]@2 [e3,g3]@2 [e3,g3,a3,c4]@4 [e3,g3,a3,c4]@2 [e3,g3,a3,c4]@2 e3@4 ~@10 b3@2 d3@2 ~@6 a4@4 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [f#3,a3,d4]@3 ~ [f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@4 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4], ~ [f#3,a3,d4]@12 ~@20 [f#3,b3,d4]@12 ~@36 a3@12 c4@4 ~@31, ~@3 d3@10 ~@4 d3@4 ~@14 d3@10 ~@36 g3@6 g3@10 [f#3,a3,d4]@12 ~@19, ~@5 e4@8 ~@24 e4@8 ~@36 c4@8 b3@2 e4@6 ~@4 e4@8 ~@19, ~@85 e3@12 ~@2 d3@10 ~@4 d3@4 ~@11]/8", // D Bm Am7 Em Am7 D Bm D
  AV: "[~ d3@2 ~@6 a4@4 [d3,f#3,b3,d4,e4]@2 [d3,f#3,b3,d4]@2 [d3,f#3,b3,d4]@4 [d3,f#3,b3,d4]@2 [d3,f#3,b3,d4]@2 [d3,f#3,b3,d4]@4 [d3,f#3,b3,d4]@2 [d3,f#3,b3,d4]@2 [e3,g3,a3,c4]@4 [g3,a3,c4]@2 [e3,g3]@2 [e3,g3,a3,c4]@4 [e3,g3,a3,c4]@2 [e3,g3,a3,c4]@2 e3@4 ~@10 b3@2 d3@2 ~@6 a4@4 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [f#3,a3,d4]@3 ~ [f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@4 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 d3@2 ~@6 a4@4 [d3,f#3,b3,d4,e4]@2 [d3,f#3,b3,d4]@2 [d3,f#3,b3,d4]@4 [d3,f#3,b3,d4]@2 [d3,f#3,b3,d4]@2 [d3,f#3,b3,d4]@4 [d3,f#3,b3,d4]@2 [d3,f#3,b3,d4], ~ [f#3,b3,d4]@12 ~@36 a3@12 c4@4 ~@63, ~@3 d3@10 ~@36 g3@6 g3@10 [f#3,a3,d4]@12 ~@20 [f#3,b3,d4]@12 ~@19, ~@5 e4@8 ~@36 c4@8 b3@2 e4@6 ~@4 e4@8 ~@24 e4@8 ~@19, ~@53 e3@12 ~@2 d3@10 ~@4 d3@4 ~@14 d3@10 ~@19]/8", // Bm Am7 Em Am7 D Bm D Bm
  AW: "[~ [e3,g3,a3,c4]@4 [g3,a3,c4]@2 [e3,g3]@2 [e3,g3,a3,c4]@4 [e3,g3,a3,c4]@2 [e3,g3,a3,c4]@2 e3@4 ~@10 b3@2 d3@2 ~@6 a4@4 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [f#3,a3,d4]@3 ~ [f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@4 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 d3@2 ~@6 a4@4 [d3,f#3,b3,d4,e4]@2 [d3,f#3,b3,d4]@2 [d3,f#3,b3,d4]@4 [d3,f#3,b3,d4]@2 [d3,f#3,b3,d4]@2 [d3,f#3,b3,d4]@4 [d3,f#3,b3,d4]@2 [d3,f#3,b3,d4]@2 [e3,g3,a3,c4]@4 [g3,a3,c4]@2 [e3,g3]@2 [e3,g3,a3,c4]@4 [e3,g3,a3,c4]@2 [e3,g3,a3,c4], ~@17 a3@12 c4@4 ~@79, ~@17 c4@8 b3@2 e4@6 ~@4 e4@8 ~@24 e4@8 ~@35, ~@17 g3@6 g3@10 [f#3,a3,d4]@12 ~@20 [f#3,b3,d4]@12 ~@35, ~@21 e3@12 ~@2 d3@10 ~@4 d3@4 ~@14 d3@10 ~@35]/7", // Am7 Em Am7 D Bm Am7 Em Am7 …
  AX: "[~ e3@4 ~@10 b3@2 d3@2 ~@6 a4@4 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [f#3,a3,d4]@3 ~ [f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@4 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 d3@2 ~@6 a4@4 [d3,f#3,b3,d4,e4]@2 [d3,f#3,b3,d4]@2 [d3,f#3,b3,d4]@4 [d3,f#3,b3,d4]@2 [d3,f#3,b3,d4]@2 [d3,f#3,b3,d4]@4 [d3,f#3,b3,d4]@2 [d3,f#3,b3,d4]@2 [e3,g3,a3,c4]@4 [g3,a3,c4]@2 [e3,g3]@2 [e3,g3,a3,c4]@4 ~@3, ~ a3@12 c4@4 ~@79, ~ c4@8 b3@2 e4@6 ~@4 e4@8 ~@24 e4@8 ~@35, ~ g3@6 g3@10 [f#3,a3,d4]@12 ~@20 [f#3,b3,d4]@12 ~@35, ~@5 e3@12 ~@2 d3@10 ~@4 d3@4 ~@14 d3@10 ~@35]/6", // D Bm Am7 Em Am7 D Bm
})).s("gm_electric_guitar_clean").gain(0.21).pan(0.8)

// drums · kick
const kick = s("bd").struct("<~@29 A@6 ~@2 A@23 ~ A@19 B A@7 C ~ D@17 ~ D@11 ~@2>".pickRestart({
  A: "x", B: "x ~@4 x ~@2", C: "x ~@6 x", D: "~ x ~@14",
})).gain(0.54)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@29 A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A@2 ~ A ~ A ~ A
  ~@3 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~@3 B ~ B ~ B ~ B ~ B ~@4
>`.pickRestart({
  A: "~@7 x", B: "~@15 x",
})).gain(0.36)

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

// drums · low tom
const low_tom = s("lt").struct("<~@44 A ~@7 B ~@7 C ~@5 B ~@5 D ~@22 E ~@5 F ~@5 G H ~@4 I ~@7>".pickRestart({
  A: "~@3 x", B: "~@7 x", C: "~ x", D: "~@6 x!2", E: "~@8 x!2 ~ x ~@3 x", F: "~@13 x ~ x", G: "~@13 x!3", H: "x",
  I: "~@15 x",
})).gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<~@37 [x!4]!7 [x!2 ~@2] [x!4]!7 [x!2 ~@2] [x!4]!8 ~@60>").gain(0.42)

// drums · mid tom
const mid_tom = s("mt").struct("<~@44 A ~@7 B ~@6 C D ~@5 B ~@5 E ~@8 B ~@7 F ~@11 G ~@5 H ~@5 I ~@7>".pickRestart({
  A: "~@7 x!2 ~ x ~@5", B: "~@3 x", C: "~@15 x", D: "~ x ~ x ~@4", E: "~@4 x!2 ~@2", F: "~@5 x ~ x ~@3 x!2 ~@3",
  G: "~@9 x ~ x ~@4", H: "~@9 x!4 ~@3", I: "~@13 x ~@2",
})).gain(0.48)

// drums · high tom
const high_tom = s("ht").struct("<~@52 A ~@13 B ~@40 C ~@5 D ~@7>".pickRestart({
  A: "~@5 x ~@2", B: "~@7 x!2 ~ x ~@5", C: "~@5 x!4 ~@7", D: "~@11 x ~@4",
})).gain(0.48)

// drums · crash
const crash = s("cr").struct(`<
  ~@29 A ~@3 A ~@3 A ~@7 A ~@7 A ~@7 A ~@5 B ~@5 A ~@6 C@2 A ~@7 D ~@5 E ~@5 D ~@5 D ~@5 E ~@6
>`.pickRestart({
  A: "x", B: "x!2", C: "~ x ~@2", D: "~ x ~@14", E: "~ x ~@7 x ~@6",
})).gain(0.42)

// drums · ride
const ride = s("rd").struct(`<
  ~@29 A@5 B C ~@25 A@5 D A@5 D A@7 C ~ A@7 ~ E@5 F E@5 F E@5 F E@5 F E@4 G ~@2
>`.pickRestart({
  A: "x!4", B: "x ~@3 x ~@3 x ~@3 x ~ x!2", C: "x", D: "x!2 ~@2", E: "~ x ~@3 x ~@3 x ~@3 x ~@2", F: "~ x ~@3 x ~@10",
  G: "~ x ~@3 x ~@3 x ~@6",
})).gain(0.36)

// drums · tambourine
const tambourine = s("tb").struct("<~@29 A@6 ~@2 A@23 ~ B@28 A C@28 D ~@2>".pickRestart({
  A: "~ x", B: "~ x!2 ~@2 x!2 ~", C: "~@3 x ~ x ~@5 x ~ x ~@2", D: "~@3 x ~ x ~@5 x ~@4",
})).gain(0.24)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<~@61 [x ~@2 x!2 ~@2 x]!28 ~ [~ x ~@5 x ~ x ~@5 x]!28 [~ x ~@5 x ~ x ~@6] ~@2>")
  .gain(0.18)

stack(
// … 3 more lines

More by The Pretenders