Strudelify

It's Alright

Pet Shop Boys

KeyF minorTempo120 bpm
0:00/0:00
// It's Alright — Pet Shop Boys
// 120 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 5 "CHOIR AAHS" choir aahs (copy of ch 1 "STEEL GTR" acoustic guitar steel)
// note: Full arrangement: all 120 bars on a 16-step grid, each part at one level. 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.

// other · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@8 A B C@2 D E F@2 ~@12 A B G@2 A E H@2 ~@16 A B I@2 D E J@3 K@2 L@3 M@3 N O P Q R ~@6 A B S@2 A E T@2 A B C@2 A E
  T@2 A E C@2 A E T@2 A B G@2 A E U@2 ~@8
>`.pickRestart({
  A: "f4@3 bb4", B: "g4@3 ab4", C: "[f4@29 ~@3]/2", D: "f4 ~@11 bb4@4", E: "g4@3 eb4", F: "[c5@7 ~]/2", G: "[f4@7 ~]/2",
  H: "[c5@15 ~]/2", I: "[f4@13 ~@3]/2", J: "[c5@35 ~@13]/3", K: "[~@7 eb5@7 f5@2]/2", L: "c5/3",
  M: "[bb4@32 db5 ~@15]/3", N: "eb5@13 ~@3", O: "f5", P: "g5@2 ab5 bb5", Q: "eb5", R: "c5", S: "[f4@15 ~]/2",
  T: "[c5@29 ~@3]/2", U: "[c5@31 ~]/2",
})).s("gm_acoustic_guitar_steel").gain(0.32).pan(0.3)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@2 A@2 B ~ B C D E F@2 D G H@2 ~@11 I D J K@2 D G L@2 B ~ B ~@12 I D J M I D G N@2 O@6 P@2 Q R S T R U V ~@4 I D J
  W@2 D G X@2 D J Y@2 Z G AA@2 D J F@2 D G AB@2 D AC AD@2 D G AE AF AG ~@7
>`.pickRestart({
  A: "[[bb1,f2,eb3,ab3]@15 ~]/2", B: "[ab2,ab3] [bb2,bb3] ~ [ab2,ab3] [bb2,bb3] ~ [ab2,ab3] [bb2,bb3] ~@8",
  C: "~@11 db4 ~ bb3 ab3 eb3, ~@10 c4@3 ~@3", D: "f3@3 bb3", E: "g3@11 ab3@4 ~", F: "[f3@25 ~ c4 db4 c4 bb3 ab3 eb3]/2",
  G: "g3@3 eb3", H: "[c4@7 ~]/2", I: "~@10 c4 db4 c4 bb3 ab3 eb3", J: "g3@3 ab3",
  K: "[f3@23 ~@3 c4 db4 c4 bb3 ab3 eb3]/2", L: "[c4@11 ~@5]/2", M: "f3@11 ~@5", N: "c4/2", O: "c3/6", P: "eb3/2",
  Q: "db5", R: "eb5", S: "f5", T: "g5@2 ab5 bb5", U: "c5", V: "bb4 ~@15",
  W: "[f3@24 ~@2 c4 db4 ~ bb3 ab3 eb3, ~@14 c4 ~]/2", X: "[c4@24 ~@2 c4 db4 c4 bb3 ab3 eb3]/2",
  Y: "[f3@24 ~@2 c4 db4 c4 bb3 ab3 eb3]/2", Z: "f3@12 bb3@3 ~", AA: "[c4@22 ~@4 c4 db4 c4 bb3 ab3 eb3]/2",
  AB: "[c4@23 ~@3 c4 db4 c4 bb3 ab3 eb3]/2", AC: "g3@12 eb3 eb3@2 ~",
  AD: "[f3@21 ~@5 c4 db4 ~ bb3 ab3 eb3, ~@14 c4 ~]/2", AE: "c4@12 ab3 bb3 c4 eb4", AF: "f4@12 ab4 bb4 c5 eb5",
  AG: "f5 ~@7",
})).s("gm_string_ensemble_1").gain(0.24).pan(0.4)

// chords · pizzicato strings · "PIZZICATO"
const pizzicato_strings = note(`<
  ~@2 A B ~@8 C D E F G H I J K L M N O@2 P@2 K Q I R S Q T U K V W X K Y Z AA K Q AB AC AD P AE P AF AG AH AI AJ AG AK
  AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB P@4 BC BD BE BF BG BH BI BJ K Q BK BL BM Q BN BO BP BQ BR BS K Q BT
  BU K Q BV BW K Q BX BY BZ ~@7
>`.pickRestart({
  A: "eb4 f4 ab4 bb4 f4 ab4 bb4 db5 ab4 bb4 db5 f5 bb4 db5 f5 ab5",
  B: "db5 eb5 f5 ab5 eb5 f5 ab5 bb5 f5 ab5 bb5 db6 ab5 bb5 db6 eb6",
  C: "~@2 [ab4,db5] ~ [ab4,db5]!2 ~ [ab4,db5] ~ [ab4,db5]!2 ~@3 [ab4,db5]!2", // Db5
  D: "~@2 [bb4,eb5] ~ [bb4,eb5]!2 ~ [bb4,eb5] ~ [bb4,eb5]!2 ~@3 [bb4,eb5]!2", // Eb5
  E: "~@2 [c5,f5] ~@2 [c5,eb5] ~@2 [c5,f5] ~@2 [c5,f5] ~@2 [c5,eb5]!2", // F5 Cm F5 Cm
  F: "~@2 [c5,f5] ~@2 [c5,eb5] ~ [c5,f5] ~ [c5,f5] [c5,eb5] ~ [c5,f5] ~ [c5,eb5] [c5,f5]", // F5 Cm F5 Cm F5 Cm F5
  G: "~@4 [ab4,db5] ~@2 [ab4,db5] ~ [ab4,db5] ~@4 [ab4,db5]!2", // Db5
  H: "~@2 bb4 ~ eb5 [bb4,eb5] ~@2 [bb4,eb5] ~@2 [bb4,eb5] ~@2 [bb4,eb5]!2", // Eb5
  I: "~@2 [c5,f5] ~@2 [c5,f5] ~@2 [c5,eb5] ~@2 [c5,f5] ~@4", // F5 Cm F5
  J: "~@2 [c5,f5] ~@2 [c5,eb5] ~@2 [c5,f5] ~@2 [c5,eb5] ~ [c5,eb5] [c5,f5] ~", // F5 Cm F5 Cm F5
  K: "~@2 [ab4,db5] ~@2 [ab4,db5] ~@2 [ab4,db5] ~@2 [ab4,db5] ~@2 [ab4,db5]!2", // Db5
  L: "~@2 [bb4,eb5] ~@2 [bb4,eb5] ~@2 [bb4,eb5]!2 ~@3 [bb4,eb5] ~@2", // Eb5
  M: "~@2 [c5,f5] ~@2 [c5,f5] ~@2 c5 ~@2 [c5,f5] ~@2 [c5,eb5] ~", // F5 Cm
  N: "~@2 [c5,eb5] ~@2 [c5,f5] ~@2 [c5,eb5] ~@2 [c5,f5] ~@4", O: "~@9 [db5,f5,ab5] ~@2 [db5,f5,ab5] ~ [db5,f5,ab5]!2",
  P: "~@9 [db5,f5,ab5] ~@2 [db5,f5,ab5] ~@3", // Db
  Q: "~@2 [bb4,eb5] ~@2 [bb4,eb5] ~@2 [bb4,eb5] ~@2 [bb4,eb5] ~@2 [bb4,eb5]!2", // Eb5
  R: "~@2 [c5,eb5] ~ [c5,eb5] [c5,f5] ~ [c5,f5] ~ [c5,f5] [c5,eb5] ~ [c5,f5] ~ [c5,eb5] ~", // Cm F5 Cm F5 Cm
  S: "~@2 [ab4,db5]!4 ~@2 [ab4,db5] ~@2 [ab4,db5] ~@2 [ab4,db5]!2", // Db5
  T: "~@2 [c5,f5] ~@2 [c5,f5] ~@2 [c5,f5] ~@3 [c5,eb5] ~ [c5,eb5] ~", // F5 Cm
  U: "~@2 [c5,f5] ~@2 [c5,eb5] ~ [c5,f5] ~ [c5,f5] [c5,eb5] ~ [c5,f5] ~ [c5,eb5] ~", // F5 Cm F5 Cm F5 Cm
  V: "~@2 [bb4,eb5] ~ [bb4,eb5]!2 ~ [bb4,eb5] ~ eb5 ~@2 [bb4,eb5] ~ [bb4,eb5]!2", // Eb5
  W: "~@2 [c5,f5] ~ [c5,f5] [c5,eb5] ~ [c5,f5] ~ [c5,f5] [c5,g5] ~@3 [c5,eb5] ~", // F5 Cm F5 C5 Cm
  X: "~@2 [c5,f5] ~@2 [c5,eb5] ~ c5 ~@2 [c5,eb5] ~ [c5,f5] ~ [c5,eb5] ~", // F5 Cm F5 Cm
  Y: "~@2 [bb4,eb5] ~@2 [bb4,eb5] ~@2 [bb4,eb5]!2 ~ [bb4,eb5] ~@2 [bb4,eb5]!2", // Eb5
  Z: "~@2 [c5,f5] ~ [c5,f5]!2 ~ [c5,eb5] ~ [c5,eb5] [c5,f5] ~@3 [c5,f5] ~", // F5 Cm F5
  AA: "~@2 [c5,f5] ~ [c5,f5] ~ eb5 ~ eb5 [c5,f5] ~ [c5,g5] ~@2 db5 ~", // F5 C5
  AB: "~@2 [c5,f5] ~ [c5,f5] ~@2 [c5,eb5] ~ eb5 [c5,f5] ~@3 c5 ~", // F5 Cm F5
  AC: "~@2 [c5,eb5] ~ eb5 [c5,f5] ~ [c5,f5] ~ [c5,f5] eb5 ~ [c5,f5] ~@3", // Cm F5
  AD: "~@9 [db5,f5,ab5] ~@2 [db5,f5,ab5] ~ [db5,f5,ab5] ~", AE: "~@9 [db5,f5,ab5] ~@2 [db5,f5] ~@3",
  AF: "~@4 [ab4,db5] ~@2 [ab4,db5] ~@4 [ab4,db5] ~ [ab4,db5]!2", // Db5
  AG: "~@2 [bb4,eb5] ~@2 [bb4,eb5] ~@2 [bb4,eb5] ~@5 [bb4,eb5]!2", // Eb5
  AH: "~@2 [c5,f5] ~@2 [c5,f5] ~@2 [c5,f5] ~@5 [c5,f5]!2", AI: "~@2 [c5,f5] ~@2 [c5,f5] ~@2 [c5,f5] ~@5 [c5,f5] ~",
  AJ: "~@2 [ab4,db5] ~@2 [ab4,db5] ~@2 [ab4,db5] ~@5 [ab4,db5]!2", // Db5
  AK: "~@2 [c5,f5] ~@2 [c5,f5] ~@2 [c5,f5] ~@5 [c5,eb5] ~", // F5 Cm
  AL: "[c5,eb5] [c5,f5] ~ [c5,f5] ~ [c5,f5] [c5,eb5] ~ [c5,g5] ~ [c5,eb5] ~ [c5,f5] ~@3", // Cm F5 Cm C5 Cm F5
  AM: "~@2 [c5,eb5] ~@2 [bb4,eb5] ~@2 c5 ~@2 [bb4,eb5] ~ [bb4,eb5] c5 ~", // Cm Eb5
  AN: "~@2 [c5,f5] ~@2 [c5,eb5] ~@2 [c5,f5] ~@2 [eb5,ab5] ~ [eb5,ab5] [c5,f5] ~", // F5 Cm F5 Ab5 F5
  AO: "bb4 ~ [bb4,eb5] ~@2 [bb4,c5] ~ [bb4,eb5] ~ [bb4,eb5] c5 ~@3 [bb4,eb5] ~", // Eb5 Bbsus2 Eb5
  AP: "~@2 [c5,f5] ~@2 [bb4,eb5] ~ [c5,f5] ~ [c5,f5] eb5 ~ [c5,f5] ~ eb5 [c5,f5]", // F5 Eb5 F5
  AQ: "~@2 [c5,eb5] ~@2 [bb4,eb5] ~ eb5 ~ c5 [bb4,eb5] ~ c5 ~ [bb4,eb5] ~", // Cm Eb5
  AR: "~@2 [c5,f5] ~@2 [c5,eb5] ~ [c5,f5] ~ [c5,f5] eb5 ~ [c5,f5] ~ eb5 ~", // F5 Cm F5
  AS: "~@2 [bb4,eb5] ~@2 c5 ~ [bb4,eb5] ~ [bb4,eb5] c5 ~ [bb4,eb5] ~ c5 bb4", // Eb5
  AT: "~@2 [bb4,eb5] ~ [bb4,eb5] c5 ~ [bb4,eb5] ~ [bb4,eb5] c5 ~ [bb4,eb5] ~ c5 bb4", // Eb5
  AU: "~@7 [ab4,db5] ~ db5 ~@2 [ab4,db5] ~@3", // Db5
  AV: "~@2 [bb4,eb5] ~@2 [bb4,eb5] ~ [bb4,eb5] ~ [bb4,eb5]!2 ~@3 eb5 [bb4,eb5]", // Eb5
  AW: "~@2 [c5,f5] ~ [c5,f5]!2 ~ [c5,f5] ~ [c5,f5] ~@2 [c5,f5] ~ f5 ~", AX: "~@2 [eb5,g5] ~ [eb5,g5] ~@5 eb5 ~@5",
  AY: "~@2 [ab4,db5] ~@13", AZ: "~@2 eb5 ~@4 f5 ~ f5 eb5 ~ f5 ~ eb5 ~",
  BA: "~@2 eb5 ~@2 [bb4,eb5] ~ [bb4,eb5] ~ [bb4,eb5] ~@2 [bb4,eb5] ~ c5 [bb4,eb5]", // Eb5
  BB: "~@2 [bb4,c5] ~@2 [bb4,eb5] ~ [bb4,c5] ~ c5 [bb4,eb5] ~ [bb4,c5] ~ [bb4,eb5] ~", // Bbsus2 Eb5 Bbsus2 Eb5 Bbsus2 Eb5
  BC: "~@9 [ab4,db5] ~@2 [ab4,db5] ~ [ab4,db5]!2", // Db5
  BD: "~@2 [bb4,eb5] ~@2 [bb4,eb5] ~ [bb4,eb5] ~ eb5 [bb4,eb5] ~@3 [bb4,eb5]!2", // Eb5
  BE: "~@2 [c5,f5] ~ [c5,f5]!2 ~ [c5,f5] ~ f5 [c5,eb5] eb5 [c5,g5] ~ eb5 ~", // F5 Cm C5
  BF: "f5 ~ [c5,f5] ~@2 [c5,f5] ~ [c5,f5] ~ f5 eb5 ~ [c5,ab5] ~ [c5,f5] ~", // F5 Fm F5
  BG: "~@2 [ab4,db5] ~@2 [ab4,db5] ~ [ab4,db5] ~ [ab4,db5] ~@2 [ab4,db5] ~ [ab4,db5]!2", // Db5
  BH: "~@2 [bb4,eb5] ~@2 [bb4,eb5] ~ [bb4,eb5] ~ eb5 ~@2 eb5 [bb4,eb5]!2 eb5", // Eb5
  BI: "~@5 [c5,f5] ~ [c5,f5] ~ f5 eb5 ~@3 eb5 ~", BJ: "~ [c5,f5] ~@7 f5 [c5,eb5] ~ [c5,f5] ~ [c5,eb5] ~",
  BK: "~@2 [c5,f5] ~@2 [c5,eb5] ~ [c5,f5] ~@4 [c5,eb5] ~ [c5,f5] ~", // F5 Cm F5 Cm F5
  BL: "~@2 [c5,ab5] ~@2 [c5,f5] ~ [c5,eb5] ~ eb5 [c5,f5] ~ [c5,eb5] ~ [c5,f5] ~", // Fm F5 Cm F5 Cm F5
  BM: "~@2 [ab4,db5] ~@2 [ab4,db5] ~ [ab4,db5] ~@2 [ab4,db5] ~@3 [ab4,db5]!2", // Db5
  BN: "~@2 [c5,f5] ~@2 eb5 ~ [c5,f5] ~@2 eb5 ~ eb5 ~ [c5,f5] ~", // F5
  BO: "~@2 [c5,f5] ~@2 eb5 ~ [c5,f5] ~ f5 eb5 f5 eb5 c5 eb5 ~", // F5
  BP: "~@2 [ab4,db5] ~@2 [ab4,db5] ~ [ab4,db5] ~ db5 ~@2 [ab4,db5] ~ [ab4,db5]!2", // Db5
  BQ: "~@2 [bb4,eb5] ~@2 [bb4,eb5] ~ [bb4,eb5] ~ eb5 ~@2 [bb4,eb5] ~ [bb4,eb5]!2", // Eb5
  BR: "~@2 [c5,f5] ~@2 [c5,f5] ~ f5 ~@2 eb5 ~ eb5 ~ [c5,f5] ~", // F5
  BS: "~@2 [c5,f5] ~@2 eb5 ~ f5 ~ f5 [c5,eb5] ~ [c5,f5] ~ [c5,eb5] ~", // F5 Cm F5 Cm
  BT: "~@2 [c5,f5] ~@2 [c5,eb5] ~ [c5,f5] ~@4 [c5,f5] ~ [c5,eb5] ~", // F5 Cm F5 Cm
  BU: "~@2 [c5,f5] ~@2 [c5,f5] ~ [c5,f5] ~ f5 ~@2 [c5,f5] ~ eb5 ~", // F5
  BV: "~@2 [c5,f5] ~ f5!2 ~ [c5,f5] ~ [c5,f5] ~@2 [c5,f5] ~ [c5,eb5] ~", // F5 Cm
  BW: "~@2 [c5,f5] ~@2 [c5,f5] ~ [c5,f5] ~ [c5,f5]!2 ~ [c5,f5] ~ [c5,f5] ~", // F5
  BX: "~@2 [c5,f5] ~@2 [c5,f5] ~@2 [c5,f5] ~@2 [c5,eb5] ~@2 [c5,f5] ~", // F5 Cm F5
  BY: "~@2 [c5,f5] ~@2 [c5,eb5] ~ [c5,f5] ~ [c5,f5] eb5 ~ f5 ~ eb5 ~", BZ: "f5 ~@15",
})).s("gm_pizzicato_strings").gain(0.2).pan(0.6)

// chords · piano · "A.PIANO"
const piano = note(`<
  A ~@15 B ~@3 C@2 ~@2 D@4 ~@12 E ~@3 B ~@3 D F D@2 ~@24 D G D@2 B H I@2 J K L ~ M N L ~ J N L ~ M N O@2 B H L ~ E P I@2
  J N Q@2 R ~@7
>`.pickRestart({
  A: "db-1", B: "db1", C: "[db1@21 ~@11]/2", D: "~@4 [c3,eb3,g3]@3 [db3,f3,ab3] ~@8", E: "db1@15 ~",
  F: "~@4 [c3,eb3,g3]@3 [db3,f3,g3,ab3] ~@8", G: "~@4 [c3,eb3,g3]@3 [db3,f3,ab3] ~@8, ~@4 f3 ~@11", H: "eb1",
  I: "[f1@21 ~@11]/2", J: "db1@7 ~", K: "eb1@3 ~", L: "f1", M: "db1@13 ~@3", N: "eb1@7 ~", O: "[f1@9 ~@7]/2",
  P: "eb1@13 ~@3", Q: "[f1@7 ~]/2", R: "f1 ~@7",
})).s("gm_piano").gain(0.36).pan(0.2)

// chords · piano · "A.PIANO"
const piano_2 = note(`<
  ~@2 A@2 B C D@2 E C D@2 B F G@3 H I@2 J K D@2 ~@4 B C D@2 B C I@2 J C D@2 B H I@2 B H L@2 ~@4 J H I@2 B M D@2 N@6 O@2
  J C P Q R@2 S@2 ~@4 J M D@2 B T D@2 B M I@2 B T D@2 B T I@2 B F D@2 B M D@2 J M D@2 ~@8
>`.pickRestart({
  A: "[eb4,bb4,db5,f5,ab5]/2", B: "[ab4,db5,f5]@15 ~", C: "[bb4,eb5,g5]", D: "[[ab4,c5,f5]@15 ~]/2",
  E: "[db5,f5], ab4@7 ~", F: "[bb4,eb5,g5]@15 ~", G: "[[ab4,c5,f5]@30 ~ [ab4,db5,f5]@16 ~]/3", H: "[g4,bb4,eb5]",
  I: "[[ab4,c5,f5]@31 ~]/2", J: "[ab4,db5,f5]", K: "[g4,bb4]@7 ~, eb5", L: "[[ab4,c5,f5]@29 ~@3]/2",
  M: "[g4,bb4,eb5]@15 ~", // Eb
  N: "[[g4,bb4]@16 [ab4,c5]@16 bb4@16 [ab4,c5]@16 [g4,bb4]@16 [ab4,c5]@13 ~@3, eb5@31 ~, ~@32 g4@15 ~@49]/6", // Gm Ab Gm Ab
  O: "[[bb4,eb5,g5]@31 ~]/2", P: "[ab4,c5]@7 ~, f5", Q: "[bb4,eb5,g5]@11 ~@5", R: "[db5@7 ~ c5@23 ~, [ab4,f5]@31 ~]/2",
  S: "[g4,bb4,eb5]/2", T: "[g4,bb4,eb5]@7 ~",
})).s("gm_piano").gain(0.28).pan(0.8)

// bass · electric bass finger · "ACOU BASS"
const bass = note(`<
  ~@4 A B C D E F G H I B J K L M N O L P J Q R S T U L P J V W X J Y L P C Z AA AB AC AD AE AF AG AH AI@2 AJ AK AL AM
  AN AO AP AM G AQ AR AS AR AS AR AS AT AU AV AM AW AX AY G AZ BA T AJ AI BB L AM G BC I B G BD AP AM J BE BF BG J BH I
  P BI BJ AP AM J BK BL AM BM BN BO BP BM BQ BR ~@7
>`.pickRestart({
  A: "db1 ~ db1 ~ db1 ~ db1!2 ~ db1 ab1@2 g1@2 f1@2", B: "eb1 ~ eb1 ~ eb1 ~ eb1 ab1 ~ ab1 g1@2 f1 ~ eb1@2",
  C: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 g1@2 f1 ~ eb1@2", D: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 g1@2 f1 db1@2 c1, ~@13 eb1 ~@2",
  E: "db1 ~ db1 ~ db1 ~ db1 ab1 ~ ab1 g1@2 f1 ~ eb1 ~", F: "~@2 eb1 ~ eb1 ~ eb1 ab1 ~ ab1 g1@2 f1 ~ eb1@2",
  G: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 g1@2 f1@2 eb1@2", H: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 g1 f1 eb1 db1 c1@2",
  I: "db1 ~ db1 ~ db1 ~ db1 ab1 ~ ab1 g1 ~ f1 ~ db1@2", J: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 g1 ~ f1 ~ eb1@2",
  K: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 g1 ~ f1 eb1 c1@2", L: "db1 ~ db1 ~ db1 ~ db1!2 ~ db1!2 ~ db1 ~ db1!2",
  M: "eb1 ~ eb1 ~ eb1 ~ eb1!2 ~ eb1!2 ~ eb1 ~ eb1!2", N: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 f1 ~ eb1 ~ f1@2",
  O: "g1 ~ g1 ~ g1 ~ g1 ab1 ~ ab1 g1 f1 eb1 db1 c1@2", P: "eb1 ~ eb1 ~ eb1 ~ eb1 ab1 ~ ab1 g1 ~ f1 ~ eb1@2",
  Q: "g1 ~ g1 ~ g1 ~ g1 ab1 ~ ab1 g1 f1 eb1@2 c1@2", R: "c1@2 c1 ~ c1 ~ c1 ab1 ~ ab1 g1@2 f1@2 eb1@2",
  S: "c1 ~ c1 ~ c1 ~ c1 ab1 ~@2 g1@2 f1 eb1 f1 g1, ~@9 ab1@2 ~@5", T: "c1 ~ c1 ~ c1 ~ c1 ab1 ~ ab1 g1 ~ f1@2 eb1@2",
  U: "c1 ~ c1 ~ c1 ~ c1 ab1 ~ ab1 g1@2 f1 eb1 f1 g1", V: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 bb1 ab1 f1 ~ eb1@2",
  W: "db1 ~ db1 ~ db1 ~ db1 ab1 ~ ab1 g1 ~ f1 ~ eb1@2", X: "f1 ~ eb1 ~ eb1 ~ eb1 ab1 ~ ab1 g1 ~ f1 ~ eb1@2",
  Y: "f1 ~ f1 ~ f1 ~ f1 bb1 ~ bb1 ab1 g1 f1 eb1 db1 ~", Z: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 g1@2 ~ ab1 g1 eb1, ~@6 bb1 ~",
  AA: "db1@2 ~@2 db1 ~@2 db1 ~ db1!2 ~ db1 ~ db1@2", AB: "eb1@2 ~@2 eb1@2 ~ eb1 ~ eb1 ab1@2 g1@2 eb1@2",
  AC: "f1@2 ~@2 f1@2 ~ f1 ~ f1!2 ~ f1 ~ f1@2", AD: "g1 ~ g1@2 g1@2 ~ ab1 ~ ab1 g1 ~@2 ab1 g1 f1, ~@6 bb1 ~",
  AE: "db1@2 ~@2 db1@2 ~ db1 ~ db1!2 ~ db1 ~ db1@2", AF: "eb1 ~ eb1 ~ eb1@2 ~ ab1 ~ ab1 g1@2 f1@2 eb1@2",
  AG: "f1@2 ~@2 f1 ~@2 f1 ~ f1 eb1@2 f1@2 eb1@2", AH: "g1 ~ g1 ~ g1 ~@2 ab1 ~ ab1 g1@2 bb1 ab1 f1 eb1",
  AI: "c1 ~ c1 ~ c1 ~ c1 ab1 ~ ab1 g1@2 f1@2 eb1@2", AJ: "c1 ~ c1 ~ c1 ~ c1 ab1 ~ ab1 g1@2 f1 eb1 db1@2",
  AK: "c1 ~ c1 ~ c1 ~ c1 ab1 ~ ab1 g1 ~ f1 ~ eb1 ~", AL: "db1 ~ db1 ~ db1 ~ db1 ab1 ~ ab1 g1@2 f1@2 eb1 ~",
  AM: "eb1 ~ eb1 ~ eb1 ~ eb1 ab1 ~ ab1 g1@2 f1@2 eb1@2", AN: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 g1 ~ eb1@2 f1 ~",
  AO: "f1 ~ f1 ~ ab1 ~ f1 bb1 ~ bb1 ab1@2 f1@2 eb1@2", AP: "db1 ~ db1 ~ db1 ~ db1 ab1 ~ ab1 g1@2 f1@2 db1@2",
  AQ: "f1 ~ f1 ~ f1 ~ f1 bb1 ~ bb1 ab1@2 f1@2 eb1 ~", AR: "c1@2 ~@2 c1@2 ~ eb1 ~ eb1 c1@2 eb1@2 ab1@2",
  AS: "f1@2 ~@2 f1@2 ~ ab1 ~ ab1 f1@2 eb1@2 f1@2", AT: "eb1@2 ~@2 eb1@2 ~ ab1 ~ ab1 g1@2 f1@2 eb1 ~",
  AU: "eb1@2 ~@2 eb1 ~ eb1 ab1 ~ ab1 g1 ~ f1@2 eb1@2", AV: "db1 ~ db1 ~ db1 ~ db1!2 ~ db1 db1@2 db1 ~ db1!2",
  AW: "f1 ~ f1 ~ f1 ~ f1 ab1@2 ab1 g1@2 f1@2 eb1@2", AX: "g1 ~ g1 ~ g1 ~ g1 ab1 ~ ab1!2 ~ ab1 ~ ab1@2",
  AY: "f1 ~ f1 ~ f1 ~ f1!2 ~ f1!2 ~ f1@2 eb1@2", AZ: "eb1@2 eb1 ~ eb1 ~ eb1 ab1 ~ ab1 g1@2 f1@2 eb1@2",
  BA: "c1 ~ c1 ~ c1 ~ c1 ab1 ~ ab1 g1@2 f1@2 eb1@2, ~@10 ab1 ~@5", BB: "c1 ~ c1 ~ c1 ~ c1 ab1 ~ ab1 g1 ~ f1 eb1 db1 c1",
  BC: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 g1 ~ bb1 ab1 f1 eb1", BD: "f1 ~ f1 ~ f1 ~ f1 g1 ~ g1 ab1@2 bb1 ab1 f1 eb1",
  BE: "f1 ~ f1 ~ f1 ~ f1 g1 ~ g1 ab1@2 ~ ab1 f1 eb1, ~@6 bb1 ~", BF: "db1 ~ db1 ~ db1 ~ db1 ab1 ~ ab1 g1 ~ f1@2 eb1@2",
  BG: "f1 ~ eb1 ~ eb1 ~ eb1 bb1 ~ bb1 ab1 ~ g1@2 eb1@2", BH: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 f1@2 g1 bb1 ab1 eb1",
  BI: "f1!3 ~ f1 ~ f1 ab1 ~ ab1 g1 ~ f1 ~ eb1@2", BJ: "f1 ~ g1 ~ g1 ~ ab1 ab1@2 bb1 ab1 f1 eb1@2 c1 ~",
  BK: "f1@2 g1 ~ f1@2 eb1 f1 ~ g1 ab1@2 bb1 ab1 f1 eb1", BL: "db1 ~ db1 ~ db1 ~ db1 [c1,ab1] ~ ab1 g1@2 f1@2 db1@2",
  BM: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 g1 ~ f1@2 eb1@2", BN: "f1!3 ~ f1 ~ f1 g1 ~ g1 ab1 ~ bb1 ab1 f1 eb1",
  BO: "db1 ~ db1 ~ db1 ~ db1 ab1 ~ ab1 f1 ~ eb1 ~ db1@2", BP: "eb1 ~@3 eb1 ~ eb1 ab1 ~ ab1 eb1@2 eb1 ~ eb1@2",
  BQ: "f1 ~ f1 ~ g1 ~ g1 ab1 ~ ab1 bb1 ab1 f1 eb1 db1@2", BR: "f1 ~@7",
})).s("gm_electric_bass_finger").gain(0.45)

// drums · kick
const kick = s("bd").struct("<~@4 [x!4]!76 ~@8 [x!4]!24 x ~@7>").gain(0.5).pan(0.4)

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

// drums · clap
// … 37 more lines

More by Pet Shop Boys