Strudelify
It's Alright cover art

1988 · Introspective

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, A@4 for four bars: 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 C@2 A E F@2 ~@16 A B G@2 D E H@3 I@2 J@3 K@3 L M N O P ~@6 A B Q@2 A E F@2 A B C@2 A E
  F@2 A E C@2 A E F@2 A B C@2 A E R@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@29 ~@3]/2",
  G: "[f4@13 ~@3]/2", H: "[c5@35 ~@13]/3", I: "[~@7 eb5@7 f5@2]/2", J: "c5/3", K: "[bb4@32 db5 ~@15]/3",
  L: "eb5@13 ~@3", M: "f5", N: "g5@2 ab5 bb5", O: "eb5", P: "c5", Q: "[f4@15 ~]/2", R: "[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
  F@2 D G W@2 D J K@2 D G X@2 D J F@2 D G W@2 D Y Z@2 D G AA AB AC ~@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@24 ~@2 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: "[c4@24 ~@2 c4 db4 c4 bb3 ab3 eb3]/2",
  X: "[c4@22 ~@4 c4 db4 c4 bb3 ab3 eb3]/2", Y: "g3@12 eb3 eb3@2 ~", Z: "[f3@21 ~@5 c4 db4 c4 bb3 ab3 eb3]/2",
  AA: "c4@12 ab3 bb3 c4 eb4", AB: "f4@12 ab4 bb4 c5 eb5", AC: "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 B ~@3 B ~@3 D E D@2 ~@24 D F D@2 B G H@2 I J K ~ I L K ~ I L K ~ M L K ~ B G K ~ I L H@2
  I L N@2 O ~@7
>`.pickRestart({
  A: "db-1", B: "db1", C: "[db1@21 ~@11]/2", D: "~@4 [c3,eb3,g3]@3 [db3,f3,ab3] ~@8",
  E: "~@4 [c3,eb3,g3]@3 [db3,f3,g3,ab3] ~@8", F: "~@4 [c3,eb3,g3]@3 [db3,f3,ab3] ~@8, ~@4 f3 ~@11", G: "eb1",
  H: "[f1@21 ~@11]/2", I: "db1@7 ~", J: "eb1@3 ~", K: "f1", L: "eb1@7 ~", M: "db1@13 ~@3", N: "[f1@7 ~]/2", O: "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 B C D@2 B E F@3 G H@2 B I D@2 ~@4 B C D@2 B C D@2 B C D@2 B G D@2 B I J@2 ~@4 B I D@2 B I D@2 K@6 L@2
  B C M N O@2 P@2 ~@4 B I D@2 B Q D@2 B I D@2 B I D@2 B I D@2 B C D@2 B I D@2 B I 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: "[bb4,eb5,g5]@15 ~", F: "[[ab4,c5,f5]@30 ~ [ab4,db5,f5]@16 ~]/3", G: "[g4,bb4,eb5]", H: "[[ab4,c5,f5]@31 ~]/2",
  I: "[g4,bb4,eb5]@15 ~", J: "[[ab4,c5,f5]@29 ~@3]/2",
  K: "[[g4,bb4]@16 [ab4,c5]@16 bb4@16 [ab4,c5]@16 bb4@16 [ab4,c5]@13 ~@3, eb5@31 ~, ~@32 g4@15 ~@17 g4@15 ~@17]/6", // Gm Ab
  L: "[[bb4,eb5,g5]@31 ~]/2", M: "[ab4,c5]@7 ~, f5", N: "[bb4,eb5,g5]@11 ~@5", O: "[db5@7 ~ c5@23 ~, [ab4,f5]@31 ~]/2",
  P: "[g4,bb4,eb5]/2", Q: "[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 C G H B C I J K L M J N C O P Q R S J N C T U V C W J N C X Y Z AA AB AC AD AE AF R@2 AG AH E B AI AJ
  AK B AL AM AN AO AN AO AN AO AP AQ J B AR AS AT AL AU AV R AG R AW J B AL AX H B C AY H B C AY AZ BA C BB H N BC BD AK
  B C BE BF B BG BH BI BJ BG BK BL ~@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@2 eb1@2",
  C: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 g1 ~ 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 f1 eb1 db1 c1@2", H: "db1 ~ db1 ~ db1 ~ db1 ab1 ~ ab1 g1 ~ f1 ~ db1@2",
  I: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 g1 ~ f1 eb1 c1@2", J: "db1 ~ db1 ~ db1 ~ db1!2 ~ db1!2 ~ db1 ~ db1!2",
  K: "eb1 ~ eb1 ~ eb1 ~ eb1!2 ~ eb1!2 ~ eb1 ~ eb1!2", L: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 f1 ~ eb1 ~ f1@2",
  M: "g1 ~ g1 ~ g1 ~ g1 ab1 ~ ab1 g1 f1 eb1 db1 c1@2", N: "eb1 ~ eb1 ~ eb1 ~ eb1 ab1 ~ ab1 g1 ~ f1 ~ eb1@2",
  O: "g1 ~ g1 ~ g1 ~ g1 ab1 ~ ab1 g1 f1 eb1@2 c1@2", P: "c1@2 c1 ~ c1 ~ c1 ab1 ~ ab1 g1@2 f1@2 eb1@2",
  Q: "c1 ~ c1 ~ c1 ~ c1 ab1 ~@2 g1@2 f1 eb1 f1 g1, ~@9 ab1@2 ~@5", R: "c1 ~ c1 ~ c1 ~ c1 ab1 ~ ab1 g1@2 f1@2 eb1@2",
  S: "c1 ~ c1 ~ c1 ~ c1 ab1 ~ ab1 g1@2 f1 eb1 f1 g1", T: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 bb1 ab1 f1 ~ eb1@2",
  U: "db1 ~ db1 ~ db1 ~ db1 ab1 ~ ab1 g1 ~ f1 ~ eb1@2", V: "f1 ~ eb1 ~ eb1 ~ eb1 ab1 ~ ab1 g1 ~ f1 ~ eb1@2",
  W: "f1 ~ f1 ~ f1 ~ f1 bb1 ~ bb1 ab1 g1 f1 eb1 db1 ~", X: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 g1@2 ~ ab1 g1 eb1, ~@6 bb1 ~",
  Y: "db1@2 ~@2 db1 ~@2 db1 ~ db1!2 ~ db1 ~ db1@2", Z: "eb1@2 ~@2 eb1@2 ~ eb1 ~ eb1 ab1@2 g1@2 eb1@2",
  AA: "f1@2 ~@2 f1@2 ~ f1 ~ f1!2 ~ f1 ~ f1@2", AB: "g1 ~ g1@2 g1@2 ~ ab1 ~ ab1 g1 ~@2 ab1 g1 f1, ~@6 bb1 ~",
  AC: "db1@2 ~@2 db1@2 ~ db1 ~ db1!2 ~ db1 ~ db1@2", AD: "eb1 ~ eb1 ~ eb1@2 ~ ab1 ~ ab1 g1@2 f1@2 eb1@2",
  AE: "f1@2 ~@2 f1 ~@2 f1 ~ f1 eb1@2 f1@2 eb1@2", AF: "g1 ~ g1 ~ g1 ~@2 ab1 ~ ab1 g1@2 bb1 ab1 f1 eb1",
  AG: "c1 ~ c1 ~ c1 ~ c1 ab1 ~ ab1 g1@2 f1 eb1 db1@2", AH: "c1 ~ c1 ~ c1 ~ c1 ab1 ~ ab1 g1 ~ f1 ~ eb1 ~",
  AI: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 g1 ~ eb1@2 f1 ~", AJ: "f1 ~ f1 ~ ab1 ~ f1 bb1 ~ bb1 ab1@2 f1@2 eb1@2",
  AK: "db1 ~ db1 ~ db1 ~ db1 ab1 ~ ab1 g1@2 f1@2 db1@2", AL: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 g1@2 f1@2 eb1@2",
  AM: "f1 ~ f1 ~ f1 ~ f1 bb1 ~ bb1 ab1@2 f1@2 eb1 ~", AN: "c1@2 ~@2 c1@2 ~ eb1 ~ eb1 c1@2 eb1@2 ab1@2",
  AO: "f1@2 ~@2 f1@2 ~ ab1 ~ ab1 f1@2 eb1@2 f1@2", AP: "eb1@2 ~@2 eb1@2 ~ ab1 ~ ab1 g1@2 f1@2 eb1 ~",
  AQ: "eb1@2 ~@2 eb1 ~ eb1 ab1 ~ ab1 g1 ~ f1@2 eb1@2", AR: "f1 ~ f1 ~ f1 ~ f1 ab1@2 ab1 g1@2 f1@2 eb1@2",
  AS: "g1 ~ g1 ~ g1 ~ g1 ab1 ~ ab1!2 ~ ab1 ~ ab1@2", AT: "f1 ~ f1 ~ f1 ~ f1!2 ~ f1!2 ~ f1@2 eb1@2",
  AU: "eb1@2 eb1 ~ eb1 ~ eb1 ab1 ~ ab1 g1@2 f1@2 eb1@2",
  AV: "c1 ~ c1 ~ c1 ~ c1 ab1 ~ ab1 g1@2 f1@2 eb1@2, ~@10 ab1 ~@5", AW: "c1 ~ c1 ~ c1 ~ c1 ab1 ~ ab1 g1 ~ f1 eb1 db1 c1",
  AX: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 g1 ~ bb1 ab1 f1 eb1", AY: "f1 ~ f1 ~ f1 ~ f1 g1 ~ g1 ab1@2 bb1 ab1 f1 eb1",
  AZ: "db1 ~ db1 ~ db1 ~ db1 ab1 ~ ab1 g1 ~ f1@2 eb1@2", BA: "f1 ~ eb1 ~ eb1 ~ eb1 bb1 ~ bb1 ab1 ~ g1@2 eb1@2",
  BB: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 f1@2 g1 bb1 ab1 eb1", BC: "f1!3 ~ f1 ~ f1 ab1 ~ ab1 g1 ~ f1 ~ eb1@2",
  BD: "f1 ~ g1 ~ g1 ~ ab1 ab1@2 bb1 ab1 f1 eb1@2 c1 ~", BE: "f1@2 g1 ~ f1@2 eb1 f1 ~ g1 ab1@2 bb1 ab1 f1 eb1",
  BF: "db1 ~ db1 ~ db1 ~ db1 [c1,ab1] ~ ab1 g1@2 f1@2 db1@2", BG: "f1 ~ f1 ~ f1 ~ f1 ab1 ~ ab1 g1 ~ f1@2 eb1@2",
  BH: "f1!3 ~ f1 ~ f1 g1 ~ g1 ab1 ~ bb1 ab1 f1 eb1", BI: "db1 ~ db1 ~ db1 ~ db1 ab1 ~ ab1 f1 ~ eb1 ~ db1@2",
  BJ: "eb1 ~@3 eb1 ~ eb1 ab1 ~ ab1 eb1@2 eb1 ~ eb1@2", BK: "f1 ~ f1 ~ g1 ~ g1 ab1 ~ ab1 bb1 ab1 f1 eb1 db1@2",
  BL: "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
const clap = s("cp").struct("<~@24 A B@2 C ~@20 B D B@2 ~@24 E@2 F@2 ~@40>".pickRestart({
  A: "~ x ~@2 x ~@2 x ~ x ~@2 x ~ x!2", B: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x!2", C: "~@6 x!2 ~ x ~@2 x ~ x!2",
  D: "~@2 x ~@2 x ~ x!2 ~@5 x!2", E: "~@2 x ~ x ~@2 x ~ x ~@2 x ~ x!2", F: "~@2 x ~ x ~@4 x ~@2 x ~ x!2",
})).gain(0.35).pan(0.4)

// drums · hihat
const hihat = s("hh").struct("<~@2 [x!4] [~ x ~ x] [x!16]!108 ~@8>").gain(0.35).pan(0.4)

// … 29 more lines

More by Pet Shop Boys