Strudelify
Liberation cover art

1994 · Disco 2

Liberation

Pet Shop Boys

KeyB♭ majorTempo107 bpm
0:00/0:00
// Liberation — Pet Shop Boys
// 107 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 13 "MUTED GTR" electric guitar muted (copy of ch 6 "MUTED GTR" electric guitar muted); ch 12 "CLAVINET" clavinet (copy of ch 11 "CLAVINET" clavinet, 0.5 beats late)
// note: Full arrangement: all 112 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(107/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(`<
  ~@2 A B C D E F B G E F B G D E F B G A B H G E F B G A B H G I C J K I C J K E F B G A B H G I C J K I C J L D L M N
  M O E F B G E F B G E F B G A B H G I C J K I C J L D L M N M O P Q M O R S R S R S T@8 ~@3
>`.pickRestart({
  A: "bb1 ~ bb1 ~ bb1@2 ~ bb1 ~ bb1 ~ bb1!2 ~ bb1 ~", B: "eb1 ~ eb1 ~ eb1@2 ~ eb1 ~ eb1 ~ eb1!2 ~ eb1 ~",
  C: "c2 ~ c2 ~ c2@2 ~ c2 ~ c2 ~ c2!2 ~ c2 ~", D: "f1 ~ f1 ~ f1@2 ~ f1 ~ f1 ~ f1!2 ~ f1 ~",
  E: "bb1 ~ bb1 ~ bb1@2 ~ bb1 ~ bb1 ~ bb1 d2 ~ d2 ~", F: "g1 ~ g1 ~ g1@2 ~ g1 ~ g1 ~ g1 f1 ~ f1 ~",
  G: "c2 ~ c2 ~ c2@2 ~ f1 ~ f1 ~ f1!2 ~ f1 ~", H: "d2 ~ d2 ~ d2@2 ~ d2 ~ d2 ~ d2!2 ~ d2 ~",
  I: "b1 ~ b1 ~ b1@2 ~ b1 ~ b1 ~ b1!2 ~ b1 ~", J: "e1 ~ e1 ~ e1@2 ~ e1 ~ e1 ~ e1!2 ~ e1 ~",
  K: "a1 ~ a1 ~ a1@2 ~ d2 ~ d2 ~ d2!2 ~ d2 ~", L: "g1 ~ g1 ~ g1@3 c2 ~ c2 ~ c2!2 ~ c2 ~",
  M: "c2 ~ c2 ~ c2@2 ~ c2 ~ c2 ~ c2!3 bb1@2", N: "f1 ~ f1 ~ f1@2 ~ f1 ~ f1 ~ f1!3 bb1@2",
  O: "f1 ~ f1 ~ f1@2 ~ f1 ~ f1 ~ f1!3 a1@2", P: "d2 ~ d2 ~ d2@2 ~ d2 ~ d2 ~ d2!3 c2 ~",
  Q: "g1 ~ g1 ~ g1@2 ~ g1 ~ g1 ~ g1!3 bb1@2", R: "bb1 ~ bb1 ~ bb1@2 ~ bb1 ~ bb1 ~ bb1!3 f1@2",
  S: "eb1 ~ eb1 ~ eb1@2 ~ eb1 ~ eb1 ~ eb1!3 f1@2", T: "eb1/8",
})).s("gm_fretless_bass").gain(0.58)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A B A B C D A E F G H E I J@2 K@16 L M@3 N O@2 P K@8 L M@3 N O@2 Q@2 R@5 A E F G H E I G K@8 L M@3 N O@2 Q@2 R@5 S@3
  T@2 B U@2 H V W@8 ~@3
>`.pickRestart({
  A: "[f3,a3,bb3,d4]", B: "[g3,bb3,d4,f4]", C: "[gb3,bb3,c4,eb4]", D: "[f3,a3,c4]", E: "[bb3,d4,g4]", F: "[bb3,eb4,g4]",
  G: "[g4,bb4] [f4,a4], [c4,eb4]", H: "[f3,bb3,d4]", I: "[eb4,g4]", J: "[[g4,bb4] [f4,a4]@3, [c4,eb4]]/2",
  K: "[bb3@11 ~ [a3,f4]@4 g4@12 f4@4 g4@15 ~ c4@7 ~@25 f4@32 [c4,eb4]@8 a3@8, d4@23 ~@9 bb3@28 ~@4, ~@2 bb3@5 [f3,a3]@3 g3@2 ~@4, ~@32 eb4@23 ~@9 d4@47 ~@17]/8", // Dm Cm F
  L: "[a3,d4,gb4]", M: "[[b3,e4,g4]@31 e4@8 ~ d4@8, ~@31 [a3,c4]@16 ~, ~@39 gb4@8 ~]/3", N: "[b3,d4,gb4]@15 ~",
  O: "[b3,e4,g4]@15 ~", P: "[c4,e4,g4]@7 ~ [d4,gb4]@8, a3@15 ~, ~@7 c4@8 ~",
  Q: "[[f3,bb3,d4]@6 [g3,e4]@9 ~ a3@15 ~, ~@3 c4@13]/2", // Bb C
  R: "[[bb3,d4] [g3,e4] [gb3,bb3,eb4]@2 [f3,a3]@2 [gb3,bb3,eb4]@2 [f3,a3]@2, ~ c4@9]/5", // Bb C Ebm F Ebm F
  S: "[[ab3,c4,f4]@15 ~ [g3,b3]@15 ~ [bb3,eb4]@16, d4@31 gb3@16 ~]/3", T: "[[a3,c4]@16 [bb3,d4]@15 ~, f3@31 ~]/2",
  U: "[[f3,bb3,d4]@15 ~ [g3,f4]@15 ~, ~@15 [bb3,d4]@16 ~]/2", V: "[g3,bb3,d4,f4]@15 ~", W: "[g3,bb3,d4,f4]/8",
})).s("gm_string_ensemble_1").gain(0.13).pan(0.3)

// chords · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft = note(`<
  ~@12 A ~@2 B ~@2 C ~@3 D B ~@2 C ~@3 D ~@8 B ~@2 C ~@3 D ~@8 E@2 ~@10 A ~ B ~@2 C ~@3 D ~@8 E@2 ~@25
>`.pickRestart({
  A: "bb3", B: "f3@11 ~@5", C: "g3@7 ~ c4@8", D: "g3@7 ~ [f3,c4]@8", E: "[f3@11 ~@5]/2",
})).s("gm_string_ensemble_1").gain(0.08).pan(0.3)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1_2 = note(`<
  ~@5 A B C D@3 E@4 ~@12 F@4 G@2 H@4 I@2 ~@4 F@4 G@2 H@4 ~@7 J K L M N O P@3 ~@43
>`.pickRestart({
  A: "~@8 [f3,g3] a3 [bb3,c4] f3 [g3,a3] [bb3,c4] [c4,d4,eb4] f4", B: "f6", C: "g6@3 a6",
  D: "[bb6@24 a6@3 g6@4 f6@12 d6@4 ~]/3", E: "[g6@27 a6@4 bb6@9 c7@24]/4", F: "f5/4",
  G: "[[gb5,gb6]@7 g5@9, ~@7 g6@8 ~]/2", H: "[~@6 c6 d6@2 c6@2 b5@2 a5@2 [gb5,gb6]@7 [a5,a6] g5@8 ~, ~@46 g6@13 ~@5]/4",
  I: "[~@13 d6@5 c6@4 b5@4 ~@6]/2", J: "~@8 [bb3,c4] [d4,eb4] [f4,g4] ~ [eb4,f4] [g4,a4] [bb4,c5] [d5,eb5]",
  K: "f5@3 a5", L: "bb5@3 a5", M: "g5@4 d6@7 c6@3 bb5@2", N: "c6@5 d6 eb6@2", O: "f6@2 d6 eb6",
  P: "[f6@10 d6@3 eb6@2 f6@12 bb5 c6 d6 eb6 f6@5 eb6@2 d6@4 c6@6]/3",
})).s("gm_string_ensemble_1").gain(0.11).pan(0.7)

// other · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft_2 = note("<~@27 A@4 ~@2 B ~@3 C D ~@4 A@4 ~@2 B ~@62>".pickRestart({
  A: "f6/4", B: "~@5 b5 ~@2", C: "~@5 b5 c6 ~", D: "~@5 a5@2 ~",
})).s("gm_string_ensemble_1").gain(0.07).pan(0.7)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@6 A B C D E F G D@2 H I H I H I H I J I J I J I J I K L M ~ K L M ~ H I H I H I H I N O P Q R S T U V W X Y Z AA AB
  AC AD AE AF AG AH@2 A B C D E F G D AI O AJ Q AK AL T U AM AN AO Y AP AQ AR AS AT AU A B C D E F G D A B C D E F G D ~
>`.pickRestart({
  A: "[d4,f4] ~ [d4,f4] ~ [d4,f4] ~ [d4,f4]!2 f4!2 ~ [d4,f4]!5", // Dm
  B: "[d4,f4] ~ [d4,f4] ~ [d4,f4]!4 d4 [d4,f4] f4 [d4,f4]!5", // Dm
  C: "[d4,f4] ~ [d4,f4] d4 [d4,f4]!2 f4 [d4,f4] d4 [d4,f4]!7", // Dm
  D: "[d4,f4] ~ [d4,f4] ~ [d4,f4] ~ [d4,f4]!2 ~ [d4,f4] f4 [d4,f4]!5", // Dm
  E: "[d4,f4] d4 [d4,f4] ~ [d4,f4] d4 [d4,f4]!2 ~ [d4,f4] f4 [d4,f4]!5", // Dm
  F: "[d4,f4]!3 ~ [d4,f4] d4 [d4,f4]!4 ~ [d4,f4]!5", G: "[d4,f4] d4 [d4,f4] ~ [d4,f4]!4 ~ [d4,f4] ~ [d4,f4]!3 f4 d4",
  H: "~@2 [d4,f4] ~ [d4,f4] ~ f4 [d4,f4] ~ [d4,f4] ~ [d4,f4]!3 ~ [d4,f4]", // Dm
  I: "[d4,f4] d4 [d4,f4]!4 ~ [d4,f4] ~ [d4,f4]!5 ~ [d4,f4]", // Dm
  J: "[d4,f4]!3 ~ [d4,f4]!2 f4 [d4,f4] ~ [d4,f4] ~ [d4,f4]!3 ~ [d4,f4]", // Dm
  K: "[d4,gb4]!3 ~ [d4,gb4]!2 gb4 [d4,gb4] ~ [d4,gb4] ~ [d4,gb4]!3 ~ [d4,gb4]", // D
  L: "[e4,g4] e4 [e4,g4]!4 ~ [e4,g4] ~ [e4,g4]!5 ~ [e4,g4]", // Em
  M: "[e4,g4]!3 ~ [e4,g4]!2 g4 [e4,g4] ~ [e4,g4] ~ [e4,g4]!3 ~ [e4,g4]", // Em
  N: "[d4,gb4] ~ [d4,gb4] ~ [d4,gb4] ~ [d4,gb4]!2 ~ [d4,gb4]!6 gb4", O: "[e4,g4] ~ [e4,g4] ~ [e4,g4]!4 ~ [e4,g4]!7",
  P: "[e4,g4] ~ [e4,g4] ~ [e4,g4]!4 e4 [e4,g4]!5 g4 [e4,g4]", // Em
  Q: "[e4,g4] ~ [e4,g4] ~ [e4,g4] e4 [e4,g4] ~ [d4,gb4]!6 gb4 [d4,gb4]", // Em D
  R: "[d4,gb4] ~ [d4,gb4] ~ [d4,gb4]!6 gb4 ~ [d4,gb4] gb4 [d4,gb4]!2", // D
  S: "[e4,g4] ~ [e4,g4] ~ [e4,g4] ~ [e4,g4]!5 e4 [e4,g4]!4", // Em
  T: "[e4,g4] ~ [e4,g4] ~ [e4,g4]!2 e4 [e4,g4] ~ [e4,g4] ~ [e4,g4]!4 e4", // Em
  U: "[d4,f4] ~ [d4,f4] ~ [d4,f4]!2 [e4,g4]!2 ~ [e4,g4] ~ [e4,g4]!2 ~ [e4,g4]!2", // Dm Em
  V: "[c4,f4] ~ [c4,f4] ~ [c4,f4]!2 c4 [c4,f4] ~@2 [c4,f4] ~ [c4,f4]!3 c4", // F5
  W: "[d4,f4] ~ [d4,f4] ~ [d4,f4] ~ [d4,f4]!2 [e4,g4]!2 ~ [e4,g4]!4 ~", // Dm Em
  X: "[c4,f4] ~ [c4,f4] ~ [c4,eb4]!2 ~ [c4,eb4] c4 [c4,eb4] ~ [c4,eb4]!4 eb4", // F5 Cm
  Y: "c4 ~ [a3,c4] ~ [a3,c4] c4 [a3,c4]!2 ~ [a3,c4]!7", // Am
  Z: "[c4,eb4]!3 ~ [c4,eb4] eb4 [c4,eb4]!2 c4 [c4,eb4] c4 eb4 [c4,eb4] eb4 [c4,eb4] eb4", // Cm
  AA: "[a3,c4] ~ [a3,c4] ~ [a3,c4]!2 ~ [a3,c4] a3 [a3,c4] ~ [a3,c4]!4 a3", // Am
  AB: "[d4,f4] ~ [d4,f4] ~ [d4,f4] ~ [d4,f4]!2 f4 [d4,f4] f4 [d4,f4]!5", AC: "[d4,f4] ~ [d4,f4] ~ [d4,f4]!12",
  AD: "[d4,f4] ~ [d4,f4] ~ [d4,f4]!4 ~ [d4,f4] ~ [d4,f4]!4 ~", AE: "[d4,f4] ~ [d4,f4] ~ [d4,f4]!6 f4 [d4,f4]!5",
  AF: "[d4,f4] ~ [d4,f4] ~ [d4,f4] f4 [d4,f4]!4 ~ [d4,f4]!5", AG: "[d4,f4] ~ [d4,f4] ~ [d4,f4]!4 d4 [d4,f4]!7",
  AH: "[d4,f4] ~ [d4,f4] ~ [d4,f4]!4 ~ [d4,f4]!7", AI: "[d4,gb4] ~ [d4,gb4] ~ [d4,gb4] ~ [d4,gb4]!2 ~ [d4,gb4]!7",
  AJ: "[e4,g4] ~ [e4,g4] ~ [e4,g4]!4 e4 [e4,g4]!7", AK: "[d4,gb4] ~ [d4,gb4] ~ [d4,gb4]!6 gb4 ~ [d4,gb4]!4",
  AL: "[e4,g4] ~ [e4,g4] ~ [e4,g4] e4 [e4,g4]!5 e4 [e4,g4] e4 [e4,g4]!2", // Em
  AM: "[c4,f4] ~ [c4,f4] ~ [c4,f4]!4 f4 ~ [c4,f4] ~ [c4,f4]!4", // F5
  AN: "[d4,f4] ~ [d4,f4] ~ [d4,f4] ~ [d4,f4]!2 [e4,g4]!2 ~ [e4,g4]!4 e4", // Dm Em
  AO: "[c4,f4] ~ [c4,f4] ~ [c4,eb4]!2 c4 [c4,eb4] c4 [c4,eb4] ~ [c4,eb4]!5", // F5 Cm
  AP: "[c4,eb4]!3 ~ [c4,eb4] eb4 [c4,eb4]!2 c4 [c4,eb4] c4 eb4 [c4,eb4] eb4 [c4,eb4]!2", // Cm
  AQ: "[a3,c4] ~ [a3,c4] ~ [a3,c4]!2 c4 [a3,c4] a3 [a3,c4] c4 [a3,c4]!4 a3", // Am
  AR: "[d4,f4] ~ [d4,f4] ~ [d4,f4] d4 [d4,f4]!2 d4 [d4,f4] ~ [d4,f4]!4 ~", // Dm
  AS: "[b3,d4] ~ [b3,d4] ~ [b3,d4]!2 d4 [b3,d4]!8 b3", // Bm
  AT: "[c4,eb4] ~ [c4,eb4] ~ [c4,eb4] eb4 [c4,eb4]!2 c4 [c4,eb4] ~ [c4,eb4]!2 eb4 [c4,eb4] eb4", // Cm
  AU: "a3 ~ [a3,c4] ~ [a3,c4]!2 a3 [a3,c4] ~ [a3,c4]!7", // Am
})).s("gm_electric_guitar_muted").gain(0.09)

// chords · electric guitar muted · "MUTED GTR" · soft notes
const electric_guitar_muted_2 = note(`<
  ~@6 A B C D E F G D@2 H I H I H I H I J I J I J I J I K L M ~ K L M ~ H I H I H I H I N O P Q R S T U V W X Y Z AA AB
  AC AD AE AF AG AH AI A B C D E F G D AJ AK AL Q ~ AM AN U AO AP ~ Y AQ AR AS AT AU AV A B C D E F G D A B C D E F G D
  ~
>`.pickRestart({
  A: "~@8 d4!2 ~@6", B: "~ d4 ~@6 f4 ~ d4 ~@5", C: "~ d4 ~ f4 ~@2 d4 ~ f4 ~@7", D: "~@5 d4 ~@4 d4 ~@5",
  E: "~@5 f4 ~@2 [d4,f4] ~@7", F: "~@5 f4 ~@10", G: "~ f4 ~ d4 ~@4 f4 ~ f4 ~@3 d4 f4",
  H: "[d4,f4] ~@5 d4 ~@3 [d4,f4] ~@5", I: "~ f4 ~@4 [d4,f4] ~@9", J: "~@6 d4 ~@3 [d4,f4] ~@5",
  K: "~@6 d4 ~@3 [d4,gb4] ~@5", L: "~ g4 ~@4 [e4,g4] ~@9", M: "~@6 e4 ~@3 [e4,g4] ~@5", N: "~ gb4 ~@6 d4 ~@6 d4",
  O: "~@8 e4 ~@7", P: "~@8 g4 ~@5 e4 ~", Q: "~@3 e4 ~ g4 ~@8 d4 ~", R: "~@13 d4 ~@2", S: "~@5 e4 ~@5 g4 ~@4",
  T: "~@6 g4 ~@8 g4", U: "~@13 [e4,g4] ~@2", V: "~@6 f4 ~ [c4,f4] ~@6 f4", W: "~@5 f4 ~@4 g4 ~@4 e4",
  X: "~@6 c4 ~@8 c4", Y: "a3 ~@4 a3 ~@2 [a3,c4] ~@7", Z: "~@10 eb4 ~@2 c4 ~ c4",
  AA: "~ a3 ~@4 [a3,c4] ~ c4 ~ [a3,c4] ~@5", AB: "~@8 d4 ~ d4 ~@5", AC: "~ d4 ~@14", AD: "~@10 [d4,f4] ~@4 d4",
  AE: "~@10 d4 ~@5", AF: "~@5 d4 ~@10", AG: "~@8 f4 ~@7", AH: "~@8 [d4,f4] ~@7", AI: "~ d4 ~@6 [d4,f4] ~@7",
  AJ: "~ gb4 ~@6 [d4,gb4] ~@7", AK: "~@8 [e4,g4] ~@7", AL: "~@8 g4 ~@7", AM: "~@11 g4 ~@4", AN: "~@6 g4 ~@3 g4 ~@4 g4",
  AO: "~@8 c4 ~@7", AP: "~@5 f4 ~@4 g4 ~@5", AQ: "~@10 eb4 ~@2 c4 ~@2", AR: "~ a3 ~@4 a3 ~ c4 ~ a3 ~@5",
  AS: "~@8 f4 ~ f4 ~@4 d4", AT: "~@6 b3 ~@9", AU: "~@5 c4 ~@7 c4 ~ c4", AV: "~@6 c4 ~ [a3,c4] ~@7",
})).s("gm_electric_guitar_muted").gain(0.05)

// chords · piano · "A.PIANO 2"
const piano = note(`<
  A B A C D E F G H I F J K L@2 M J H N O B P Q M J H N O B P Q R S T U V W X Y M J H N O B P Q Z AA AB AC AD AE AB AF
  AG AF AH AI AJ AG AK AL AM AN AO AP AM AQ@2 J H N O B P Q Z AA AB AC AD AE AB AF AG AF AH AG AH AG ~@21
>`.pickRestart({
  A: "[f3,a3,bb3,d4]@7 ~", B: "[g3,bb3,d4,f4]@15 ~", C: "[g3,bb3,d4,f4]@7 ~", D: "[gb3,bb3,c4,eb4]@15 ~",
  E: "[f3,c4]@15 ~, a3@13 ~@3", F: "[f3,bb3,d4]@11 ~ [d3,f3,a3]@3 ~", G: "[d3,g3,bb3]@11 ~ [f3,a3,c4]@3 ~, a3 ~@15",
  H: "[eb3,g3,bb3,d4]@7 ~", I: "[f3,bb3,c4]@7 ~ [f3,a3,c4]@7 ~", J: "[d3,g3,bb3]@11 ~ [f3,a3,c4]@3 ~",
  K: "[eb3,g3,bb3,d4]@13 ~@3", L: "[[g3,bb3,c4]@8 [f3,a3,c4]@21 ~@3, eb4@3 ~@13]/2",
  M: "[f3,a3,bb3,d4]@11 ~ [d3,f3,a3]@3 ~", N: "[g3,bb3,c4,eb4]@8 [f3,c4]@7 ~", O: "[f3,a3,bb3,d4]@15 ~",
  P: "[f3,a3,bb3,d4,f4]", Q: "[g3,bb3,c4,eb4]@7 ~ [a3,c4]@7 ~, ~@8 f4@5 ~@3", R: "[b3,d4,gb4]@15 ~",
  S: "[c4,e4,g4]@7 ~", T: "[b3,d4,g4]@7 ~", U: "[a3,c4,g4]@7 ~ [a3,c4,d4,gb4]@7 ~, e4@5 ~@11",
  V: "[b3,d4,gb4]@15 ~, g4 ~@15", W: "[c4,d4,e4,g4]@7 ~", X: "[b3,d4,g4]@15 ~",
  Y: "[a3,c4,e4,g4]@7 ~ [a3,c4,d4,gb4]@6 ~@2", Z: "[b3,d4,gb4]", AA: "[e4,g4], c4@3 ~", AB: "[b3,d4,g4]",
  AC: "[a3,c4,e4,g4] [a3,c4,d4,gb4]", AD: "[b3,d4,gb4], g4 ~@3", AE: "[c4,d4,e4,g4]", AF: "[f3,bb3,d4] [g3,c4,e4]",
  AG: "[f3,a3,c4]", AH: "[gb3,bb3,c4,eb4]", AI: "f3@5 f3 ~ c4, c4@7 ~, a3@3 a3", AJ: "[gb3,bb3,eb4], c4 ~@15",
  AK: "[f3,bb3,d4]@11 ~ [d3,f3,a3]@4", AL: "[d3,g3,bb3]@11 ~ [a3,c4,f4]@3 ~", AM: "[bb3,d4,eb4,g4]@13 ~@3",
  AN: "[g3,bb3]@7 ~ [f3,a3]@7 ~, c4@15 ~", AO: "[bb3,d4]@12 [a3,d4,f4]@3 ~, f3@5 ~@3",
  AP: "[bb3,d4,g4]@12 [a3,c4,f4]@3 ~", // Gm F
  AQ: "[[g3,bb3,eb4]@8 a3@8 [f3,a3,bb3,d4]@11 ~ [d3,f3,a3]@3 ~, ~@8 [c4,f4]@23 ~]/2", // Eb Bbmaj7 Dm F5
})).s("gm_piano").gain(0.21).pan(0.9)

// other · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note("<A@2 B@2 C D ~@33 E@2 F G@2 ~@25 E@2 F G@2 ~@14 H ~@2 I J ~@19>".pickRestart({
  A: "[d4@6 f4@4 d4@11 ~ d4 ~ d4 eb4@2 d4@3 c4@2, ~@10 c4 ~@21]/2",
  B: "[d4@6 f4@3 c4 d4@11 ~ d4 ~ eb4@2 ~ f4 ~@2 g4 [f4,gb4]]/2", C: "~ c4@7 bb4@3 gb4@3 eb4@2", D: "c4@13 ~@3",
  E: "~@3 f4@5", F: "~@6 f4@9 ~", G: "[gb3@2 ~@6 f4@2 f4@2 c5@7 ~@13, ~ c4@3 ~@12, ~ eb4 ~@6, ~@3 g4@2 ~@11]/2",
  H: "~@4 c4@3 ~ a4 bb4 ~ a4@4 ~", I: "~@4 f4@2 ab4 ~ bb4@3 ab4@3 ~@2, ~@8 ab4 ~@7", J: "~@8 c5@2 ~@2 d5 db5 ~@2",
})).s("gm_electric_guitar_jazz").gain(0.25)

// other · electric guitar jazz · "JAZZ GTR" · soft notes · Emaj7 Cmaj7 Bbmaj7
const electric_guitar_jazz_2 = note(`<
  ~@4
  [[eb4,e4] ~@15]
  ~@83
  [~@7 c4 ~@8]
  ~@2
  [~@2 c4 ~@13]
  [~@14 [b4,c5] [a4,bb4]]
  ~@19
>`).s("gm_electric_guitar_jazz").gain(0.12)

// other · clavinet
const clavinet = note(`<
  ~@6
  [bb4 ~ d5 ~ c5 d5 ~ bb4 ~ d5 ~ c5 ~ c5 d5 ~]!8
  ~@47
  [bb4 ~ d5 ~ c5 d5 ~ bb4 ~ d5 ~ c5 ~ c5 d5 ~]!8
  ~@26
  [bb4 ~ d5 ~ c5 d5 ~ bb4 ~ d5 ~ c5 ~ c5 d5 ~]!17
>`).s("gm_clavinet").gain(0.31).pan(0.4)

// drums · kick
const kick = s("bd").struct("<~@2 [x!2 ~@3 x ~@2]!99 x ~@10>").gain(0.45)

// drums · snare
const snare = s("sd").struct("<~@2 A@3 B A@8 B A@15 C A@15 B A@13 B A@7 B A@7 B A@17 B A@6 ~@11>".pickRestart({
  A: "~@4 x ~@2 x ~ x ~@2 x ~@2 x", B: "~@4 x ~@2 x!3 ~ x!5", C: "~@4 x ~@2 x!3 ~ x!4 ~",
})).gain(0.39)

// drums · hihat
const hihat = s("hh").struct("<~@2 [x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2]!99 ~@11>").gain(0.32)

// drums · open hat
const open_hat = s("oh").struct("<~@2 [~ x ~ x ~ x ~ x]!99 ~@11>").gain(0.39)
// … 19 more lines

More by Pet Shop Boys