Strudelify

Do You Really Want to Hurt Me

Culture Club

KeyG majorTempo104 bpm
0:00/0:00
// Do You Really Want to Hurt Me — Culture Club
// 104 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 109 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(104/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
const bass = note(`<
  ~@5 A@3 ~@5 B C D ~ E F G F H I J K L F G F H I M N L F G F H O@2 K P@7 Q R Q S T U V@2 Q R Q S T U W@2 X Y Z AA X Y
  AB AC Q R Q S AD U AE AF@2 AG@2 AH@8 F G F H O@2 K AI@3 Q R AJ AK@5
>`.pickRestart({
  A: "[~@3 d3 f#3@5 d3@3 e3@7 ~@5]/3", B: "~@7 d3", C: "f#3@5 d3@3", D: "e3@7 ~", E: "~@8 e1 ~@3 e1 ~@2 d2",
  F: "g2!2 d2 ~ g1 ~ g1 ~@4 d2 f#2!2 ~ d2", G: "e2 ~ e2 ~ d2 ~ e2 ~@7 d2 ~", H: "e2 ~ e2 ~ d2 ~ e2 ~@7 g1 ~",
  I: "c2!2 b1 ~ a1 ~ g1 ~@5 g1 ~ g#1 ~", J: "a1 ~ a1 ~ g1 ~ a1@2 ~@4 a1!2 a#1 ~", K: "b1 ~ b1 ~ a1 ~ b1 ~@9",
  L: "b1@6 e2@8 ~ d2", M: "a1 ~ a1 ~ g1 ~ a1@2 ~@4 c3 ~ c#3 ~", N: "d3@12 ~ b2 a2 f#2",
  O: "[c2!2 b1 ~ a1 ~ g1 ~ g1@2 a1 ~ b1 ~ a1@4 a1 ~ g1 ~ a1@2 ~@4 a1!2 a#1 ~]/2",
  P: "[f#2@2 ~ g2@2 ~ a2 ~ a#2!2 f2 ~ a#1 ~ a#1@5 ~@3 a#1@15 ~ d#2 ~ g#2!2 d#2 ~ g#1 ~ g#1@5 ~@3 g#1@15 ~ d2 ~ g2!2 d2 ~ g1@2 g1@4 ~@4 g1@16 ~ d2 g2!2 d2 ~ g1 ~ g1 ~]/7",
  Q: "~@3 d2 f#2!2 ~ d2 e2 ~ e2 ~ d2 ~ e2 ~", R: "~@6 d2 ~ g2!2 d2 ~ g1 ~ g1 ~", S: "~@6 g1 ~ c2!2 b1 ~ a1 ~ g1 ~",
  T: "~@4 g1 ~ g#1 ~ a1 ~ a1 ~ g1 ~ a1@2", U: "~@4 a1!2 a#1 ~ b1 ~ b1 ~ a1 ~ b1 ~",
  V: "[~@8 b1@6 e2@8 ~ d2 g2!2 d2 ~ g1 ~ g1 ~]/2", W: "[~@4 b1@3 e2@4 ~ c2 ~ e2 g2]/2", X: "~@8 d2@3 ~ f#2@2 a2@2",
  Y: "~@8 c2@3 ~ e2@2 g2@2", Z: "~@8 d2@3 ~ f#2 ~ a2 ~", AA: "~@4 c3 ~ b2 ~ c2@2 ~@2 e2@2 g2@2",
  AB: "~@8 d2@3 ~ f#2 ~@3", AC: "a2 ~@3 d2@2 ~@2 g2!2 d2 ~ g1 ~ g1 ~", AD: "g1@2 a1 ~ b1 ~ a1@4 a1 ~ g1 ~ a1@2",
  AE: "~@8 f#2@2 ~ g2@2 ~ a2 ~", AF: "[a#2!2 f2 ~ a#1 ~ a#1@5 ~@3 a#1@15 ~ d#2 ~]/2",
  AG: "[g#2!2 d#2 ~ g#1 ~ g#1@5 ~@3 g#1@15 ~@2 d2]/2", AH: "g2!3 ~ d2 ~ g1 ~ a#1 ~ a#1 ~ d2 d#2 d2 ~",
  AI: "[f#2@2 ~ g2@2 ~ a2 ~ a#2!2 f2 ~ a#1 ~ a#1@5 ~@3 a#1@15 ~ d#2 ~ g2!2 d2 ~ g1 ~ g1 ~]/3",
  AJ: "~@3 d2 f#2!2 ~ d2 f#1@2 ~ g1@2 ~ a1 ~", AK: "[a#1@69 ~@11]/5",
})).s("gm_fretless_bass").gain(0.56)

// bass · slap bass 1
const bass_2 = note("<~@63 A B A C D B A C ~@38>".pickRestart({
  A: "~@10 c2 ~@5", B: "~@10 a2 ~@5", C: "~@10 d2 ~@5", D: "~ e3@3 ~@6 c2 ~@5",
})).s("gm_slap_bass_1").gain(0.61).pan(0.6)

// chords · synth strings 1
const synth_strings_1 = note(`<
  A@2 B@8 C@3 A@2 D@3 E F E G H I J@2 E F E G H I J@2 E F E G H I K L@7 M@8 N@4 O P@8 Q@2 R@5 S@5 T@2 U@8 E F E G H I K
  V@5 W@6
>`.pickRestart({
  A: "[[g2,b3,g4] [f#2,a3,f#4], d4]/2", // G F#m
  B: "[e2@2 b2@2 e2 [g2,b3,g4]@2 [f#2,a3,f#4]@2 [e2,b3,e4,g4]@4 [g2,b3,g4]@2 [f#2,a3,f#4], [b3,d4,g4]@5 d4@4 ~@4 d4@3, ~@2 e3@3 ~@11]/8", // G F#m Em G F#m G
  C: "[~ e2@2 b2@2 e2, ~ [b3,d4,g4]@5, ~ e3]/3", D: "[[e2,b3,e4,g4]@3 ~]/3", E: "[b3,g4] [a3,f#4], d4", F: "[g3,b3,e4]",
  G: "[g3,b3,e4]@15 ~", H: "[e4,c5] [d4,b4,d5], g4", I: "[e4,a4,c5]@15 ~", J: "[d4,f#4,a4,b4]/2", K: "[d4,f#4,a4,b4]",
  L: "[f#4 [f4,a#4]@4 [c4,d#4,g#4]@4 [a#3,d4,g4]@4 [b3,d4,g4], d4@5 ~@9]/7", // A#5 G# Gm G
  M: "[[a3,f#4]@8 [g3,b3,e4]@16 [b3,g4]@8 [a3,f#4]@8 [g3,b3,e4]@15 ~ [e4,c5]@8 [d4,b4,d5]@8 [e4,a4,c5]@15 ~ [d4,f#4,a4,b4]@32 [b3,d4,g4]@8, ~@3 d4@2 ~@2 g4@2 ~@7]/8", // D Em D Em C G Am Bm7 …
  N: "[[a3,f#4]@8 [g3,b3,e4]@16 [b3,g4]@8 [a3,f#4]@8 [g3,b3,e4]@15 ~ [e4,g4,c5]@8, ~@3 d4@2 ~@3]/4", // D Em D Em C
  O: "[d4,b4,d5] [e4,a4,c5]", // G Am
  P: "[~ [d4,f#4,a4,b4]@4 [g3,c4,e4]@2 [a3,d4,f#4]@2 [g3,c4,e4,g4]@2 [a3,d4,f#4]@2 [g3,c4,e4]@2 [a3,d4,f#4]]/8", // Bm7 C D C D C D
  Q: "[~ [g3,c4,e4,g4]@2 [a3,d4,f#4]]/2", // C D
  R: "[~@8 [b3,g4]@8 [a3,f#4]@8 [g3,b3,e4]@16 [b3,g4]@8 [a3,f#4]@8 [g3,b3,e4]@15 ~ [e4,g4,c5]@8, ~ d4@2 ~@2 d4@2 ~@3]/5", // Em D Em D Em C
  S: "[[d4,b4,d5]@8 [e4,a4,c5]@15 ~ [d4,f#4,a4,b4]@16 f#4@8 [f4,a#4]@32, ~ d4]/5", T: "[c4,d#4,g#4]/2",
  U: "[a#3,d4,g4]/8", V: "[f#4 [f4,a#4]@4 [b3,g4] [a3,f#4] [g3,b3,e4]@2 [b3,d4,g4], d4@5 d4@2 ~@3]/5",
  W: "[[a3,f#4]@8 f#4@8 [f4,a#4]@69 ~@11, ~@8 d4@77 ~@11]/6", // D A#5
})).s("gm_synth_strings_1").gain(0.13).pan(0.4)

// other · string ensemble 2
const string_ensemble_2 = note("<A ~@3 B@2 ~@2 B@2 ~@3 C@2 D@3 ~@45 E@3 F@4 G ~@12 H@4 ~@22>".pickRestart({
  A: "g5@15 ~", B: "[~@13 g5@17 ~@2]/2", C: "[~@5 g5@17 ~@10]/2", D: "[~@2 g6@7 ~@3]/3",
  E: "[~@8 c6@16 d6@17 ~@2 e6@5]/3", F: "[b6@4 ~@13 g6@5 ~@2 a#5@16 c6@15 ~@5 e6@4, ~ e6@5 ~@10]/4", G: "b6 e6@3",
  H: "[g5@29 ~@3]/4",
})).s("gm_string_ensemble_2").gain(0.45).pan(0.7)

// other · string ensemble 2 · soft notes
const string_ensemble_2_soft = note("<~@83 A@8 ~@18>".pickRestart({
  A: "[~@32 d5@32 ~@40 d4@21 ~@3, a#4@53 ~@11, ~@64 g4@61 ~@3]/8",
})).s("gm_string_ensemble_2").gain(0.26).pan(0.7)

// chords · pad sweep
const pad_sweep = note(`<
  ~@4 A@2 B@7 C@2 D@3 ~@7 E ~@7 E ~@3 F ~@2 G H@7 ~@2 I@2 ~ J@3 K@4 ~ L@3 ~@10 M@2 ~ N@2 O@2 P@2 Q@8 ~@3 F ~@2 G R@3 ~@3
  S@4 ~
>`.pickRestart({
  A: "[~@6 [b3,d4]@19 ~@7, ~@3 g4@6 ~@23, ~@5 g3@18 ~@9, ~@5 e4@5 ~@22]/2", // Bm
  B: "[~@4 [b3,d4,e4,g4]@16 [b3,g4]@8 [a3,f#4]@7 ~ [b3,d4,e4,g4]@15 ~ e4@4, ~@20 d4@15 ~@21]/7", // Em7 Em D Em7
  C: "[b3@8 [a3,f#4]@7 ~, d4@15 ~]/2", D: "[[b3,d4,e4,g4]@35 ~@13]/3", E: "~ [d5,f#5,b5]@5 ~@2", F: "[g4,b4,e5]",
  G: "[b4,d5,f#5]@15 ~", H: "[~@8 [d5,f5,a#5]@31 ~ [c5,d#5,g#5]@31 ~ [a#4,d5,g5]@31 ~@9]/7",
  I: "[~ [g4,e5]@3, ~@8 b4@15 ~@9]/2", J: "[~@8 [f#4,b4,d5]@13 ~@5 [d5,f#5,b5]@10 ~@4 g5@8]/3",
  K: "[f#5@8 e5@15 ~ d5@16 e5@13 ~@11]/4", L: "[~@4 [f#4,b4,d5]@8 ~ [d5,f#5,b5]@5 ~@6]/3", M: "[~ [g4,b4,e5]@2 ~]/2",
  N: "[~@8 [b4,d5,f#5]@15 ~@9]/2", O: "[[d5,f5,a#5]@31 ~]/2", P: "[[c5,d#5,g#5]@31 ~]/2",
  Q: "[a#4, d5@3 ~, g5@3 ~@5]/8", R: "[~@8 [d5,f5,a#5]@31 ~@9]/3", S: "[d5,f5,a#5]/4",
})).s("gm_pad_sweep").gain(0.15).pan(0.7)

// chords · pad poly
const pad_poly = note(`<
  ~@17 A ~ B@2 ~@6 B@2 ~@6 B@2 ~@11 C@2 ~@6 C@2 ~@4 D E ~@7 F C@2 ~@18 B@2 ~@7 C@2 ~@6
>`.pickRestart({
  A: "~@8 [e2,e3,b4,e5,g5] ~@3 [e2,e3,b4,e5,g5] ~@3", B: "[~@2 g5 ~@5 d5@4 ~@4, ~ g4@5 b4@6 ~@4, ~@3 e5@5 ~@8]/2",
  C: "[~@6 g5 ~@5 d5@4, ~@5 g4@5 b4@6, ~@7 e5@5 ~@4]/2", D: "~@8 [d5,f#5,b5] ~@2 [d5,f#5,b5] ~@2 [d5,f#5,b5] ~",
  E: "[d5,f#5,b5] ~@3 [d5,f#5,b5]@3 ~@9", F: "[a4,d5,f#5] ~@3 [a4,d5,f#5] ~@11",
})).s("gm_pad_poly").gain(0.42).pan(0.6)

// chords · epiano1
const epiano1 = note(`<
  ~@18 A B C D E F G@2 A B C D H I J K A B A D L M N O@2 P@2 Q@3 R@2 S@2 T@4 R@2 U@2 V@7 W@4 X Y@2 Z@2 AA@3 AB@2 AC@2
  AD@2 ~@6 A B A D L M N O@2 AE Y@2 AF AG@3 ~@2
>`.pickRestart({
  A: "[b4,d5,g5]@7 ~ [a4,d5,f#5]@7 ~", B: "[g4,b4,e5]@7 ~", C: "[g4,b4,d5]@7 ~ [a4,d5,f#5]@7 ~", D: "[g4,b4,e5]@13 ~@3",
  E: "[e4,g4,c5]@5 ~@3 [d4,g4,d5]@7 ~", F: "[e4,a4,c5]@15 ~",
  G: "[~@3 b4@3 ~@5 b4@3 a4@2, [b3,d4,f#4]@7 ~ [b3,d4,f#4]@8, ~@12 a4@9 ~@11]/2", H: "[g4,c5,e5]@7 ~ [g4,b4,d5]@7 ~",
  I: "e5@6 g5@4 ~@3 c5@2 ~, a4, c5@3 ~, ~@5 e5@3", J: "~@6 b5@4 a5@3 f#5@3, b4@15 ~, d5@13 ~@3, f#5@5 ~@3",
  K: "d4@6 b5@4 a5@3 [d5,f#5]@2 ~, [f#4,b4]", L: "[e4,g4,c5]@8 [g4,b4,d5]@7 ~", M: "~@3 g5@3 e5@2, [g4,c5], e4@7 ~",
  N: "~@6 b5@4 a5@4 f#5 ~, [b4,d5,f#5]@7 ~", // Bm
  O: "[[b4,d5,f#5]@2 ~ [b4,d5,g5]@2 ~ [b4,a5]@2 [a#4,d5,f5]@6 [a#4,d5,f5,a#5]@15 ~@3, ~@6 d5 ~@25]/2", // Bm G B7 A#
  P: "[[a#4,d5,f5]@2 ~ [a#4,d5,g5]@2 ~ [a#4,d5]@2 ~@6 g#5@15 ~@3, ~@6 a5 ~ [g#4,c5,d#5]@22 ~@2]/2", // A# Gm A# G#
  Q: "[[g#4,c5,d#5]@2 ~ [g#4,c5,f5]@2 ~ [g#4,c5,g5]@2 ~@6 g5@25 ~ [b4,d5,g5]@7 ~, ~@8 [g4,a#4,d5]@31 ~@9]/3", // G# Fm G#maj7 G Gm
  R: "[[a4,d5,f#5]@7 ~ [g4,b4,e5]@14 ~@2 [g4,b4,d5]@7 ~]/2", // D Em G
  S: "[[a4,d5,f#5]@7 ~ [g4,b4,e5]@13 ~@3 [e4,g4,c5]@5 ~@3]/2", // D Em C
  T: "[[d4,g4,d5]@7 ~ [e4,a4,c5]@15 ~@7 b4@6 ~@10 b4@6 a4@4 [b4,d5,g5]@7 ~, ~@12 [b3,d4,f#4]@7 ~ [b3,d4,f#4]@8 ~@4, ~@36 a4@9 ~@19]/4", // G5 Am G Bm
  U: "[[a4,d5,f#5]@7 ~ [g4,b4,e5]@13 ~@3 [g4,c5,e5]@7 ~]/2", // D Em C
  V: "[[g4,b4,d5]@7 ~ e5@6 g5@4 ~@3 c5@2 ~@7 b5@4 a5@3 f#5@3 d4@6 b5@4 a5@3 [d5,f#5]@2 ~ [e5,g5,c6]@14 ~@2 [f#5,a5,d6]@14 ~@2 [e5,g5,c6]@15 ~ [f#5,a5,d6]@8, ~@4 a4@8 f#5@5 ~@39, ~@8 c5@12 ~@4 b4@15 ~ [f#4,b4]@16 ~@56, ~@18 e5@6 d5@13 ~@75]/7", // G D C D C D B5
  W: "[~@4 [e5,g5,c6]@7 ~ [f#5,a5,d6]@7 ~ [e5,g5,c6]@7 ~ [f#5,a5,d6]@3 ~]/4", // C D C D
  X: "[f#5,a5,d6] ~@3 [f#5,a5,d6] ~@3 [b4,d5,g5]@7 ~", Y: "[[a4,d5,f#5]@7 ~ [g4,b4,e5]@14 ~@2 [b4,d5,g5]@7 ~]/2",
  Z: "[[a4,d5,f#5]@7 ~ [g4,b4,e5]@13 ~@3 [e4,g4,c5]@8]/2", // D Em C
  AA: "[[g4,b4,d5]@7 ~@7 g5@6 e5@4 ~@6 b5@4 a5@4 f#5 ~ [b4,d5,f#5]@2 ~ [b4,d5,g5]@2 ~ [b4,a5]@2, ~@8 [g4,c5]@16 [b4,d5,f#5]@14 ~@8 d5 ~, ~@4 e4@7 ~@13]/3", // G Bm G B7 C5 Bm
  AB: "[[a#4,d5,f5]@6 [a#4,d5,f5,a#5]@15 ~@3 [a#4,d5,f5]@2 ~ [a#4,d5,g5]@2 ~ [a#4,d5]@2, ~@30 a5 ~]/2", // A# Gm A#
  AC: "[~@6 g#5@15 ~@3 [g#4,c5,d#5]@2 ~ [g#4,c5,f5]@2 ~ [g#4,c5,g5]@2, [g#4,c5,d#5]@11 ~@5]/2", // G# Fm G#maj7 G#
  AD: "[~@6 g5@25 ~, [g4,a#4,d5]@31 ~]/2", AE: "[a#4,d5,f5]@2 ~ [a#4,d5,g5]@2 ~ [a#4,d5]@2 [b4,d5,g5]@7 ~, ~@6 a5 ~@9",
  AF: "[a4,d5,f#5]@7 ~ [b4,d5,f#5]@2 ~ [b4,d5,g5]@2 ~ [b4,a5]@2, ~@14 d5 ~", AG: "[[a#4,d5,f5]@7 ~]/3",
})).s("gm_epiano1").gain(0.25).pan(0.6)

// other · english horn
const english_horn = note("<~@43 A@2 B@2 ~@33 C D E F ~@16 G ~@4 H I@3>".pickRestart({
  A: "[f4 ~@2 g4 ~@2 a4 ~ d#4@16 ~@8]/2", B: "[d#4 ~@2 f4 ~@2 g4 ~ d4@16 ~@8]/2", C: "~@8 f4 ~@2 g4 ~@2 a4 ~", D: "d#4",
  E: "~@8 d#4 ~@2 f4 ~@2 g4 ~", F: "d4", G: "f4 ~@2 g4 ~@2 a4 ~@9", H: "~@4 f4@2 ~@2 g4@2 ~@3 a4@2 ~",
  I: "[~@5 d5@33 ~@10]/3",
})).s("gm_english_horn").gain(0.17).pan(0.8)

// other · electric guitar jazz
const electric_guitar_jazz = note("<~@37 A ~@36 B@2 ~@7 C@8 ~@3 A ~@8 D ~@5>".pickRestart({
  A: "[g4,a4]@2 ~ g4@2 ~ e4@10", B: "[~@8 [g4,a4]@2 ~ g4@2 ~ e4@10 ~@8]/2",
  C: "g3!3 ~ d3 ~ g2 ~ a#2 ~ a#2 ~ d3 d#3 d3 ~", D: "~@8 g4 ~@7",
})).s("gm_electric_guitar_jazz").gain(0.48).pan(0.3)

// other · kalimba
const kalimba = note(`<
  ~@18 A B A B C D E@2 A B A B C D E@2 A B A B C D E ~@6 F G H G B I J E K G H G B I J E L M N M O M N P F G H G B I J Q
  ~@4 R@8 A B A B C D E ~@2 F G H Q ~@5
>`.pickRestart({
  A: "~@2 g4!2 ~@2 g4 ~@3 d4!2 ~@2 d4 ~", B: "~@2 e4!2 ~@2 e4 ~@3 e4!2 ~@2 e4 ~",
  C: "~@2 e4!2 ~@2 e4 ~@3 d4!2 ~@2 d4 ~", D: "~@2 c4!2 ~@2 c4 ~@3 c4!2 ~@2 c4 ~",
  E: "~@2 d4!2 ~@2 d4 ~@3 d4!2 ~@2 d4 ~", F: "~@10 g4!2 ~@2 g4 ~", G: "~@2 d4!2 ~@2 d4 ~@3 e4!2 ~@2 e4 ~",
  H: "~@2 e4!2 ~@2 e4 ~@3 g4!2 ~@2 g4 ~", I: "~@2 d4!2 ~@2 d4 ~@3 c4!2 ~@2 c4 ~",
  J: "~@2 c4!2 ~@2 c4 ~@3 d4!2 ~@2 d4 ~", K: "~@2 d4!2 ~@2 d4 ~@3 g4!2 ~@2 g4 ~", L: "~@2 d4!2 ~@2 d4 ~@3 e4 ~@3 e4!2",
  M: "a4 ~ g4 ~ e4@3 ~@3 f#4 ~@3 f#4!2", N: "b4 ~ a4 ~ f#4@4 ~@2 e4 ~@3 e4!2", O: "b4 ~ a4 ~ f#4@3 ~@3 e4 ~@3 e4!2",
  P: "a4 ~ g4 ~ e4@3 ~@3 f#4 ~@5", Q: "~@2 d4!2 ~@2 d4 ~@9", R: "g4!3 ~ d4 ~ g3 ~ a#3 ~ a#3 ~ d4 d#4 d4 ~",
})).s("gm_kalimba").gain(0.36).pan(0.4)

// other · glockenspiel
const glockenspiel = note(`<
  ~@23 A B ~@6 A C D ~@5 A B E ~ F ~ G ~@7 H ~@7 H ~@15 H I J K L M N ~@12 A B E ~ O ~@2 I P Q R@2 ~
>`.pickRestart({
  A: "~@12 [a5,a6] ~ [a#5,a#6] ~", B: "[b5,b6] ~@15", C: "[b5,b6] ~@12 b5 a5 f#5", D: "b4 ~@15",
  E: "f#5 ~@2 g5 ~@2 a5 ~ f5 ~@5 a#5 ~", F: "f5 ~@2 g5 ~@2 a5 ~ d#5 ~@7", G: "d#5 ~@2 f5 ~@2 g5 ~ d5 ~@5 g5 ~",
  H: "~@4 [a5,a6] ~ [a#5,a#6] ~ [b5,b6] ~@7", I: "~@8 f#5 ~@2 g5 ~@2 a5 ~", J: "f5 ~@5 a#5 ~@9",
  K: "~@8 f5 ~@2 g5 ~@2 a5 ~", L: "d#5 ~@15", M: "~@8 d#5 ~@2 f5 ~@2 g5 ~", N: "d5 ~@5 g5 ~@9",
  O: "f5 ~@2 g5 ~@2 a5 ~ g5 ~@7", P: "~ f5 ~@14", Q: "~@4 f5@2 ~@2 g5@2 ~@3 a5@2 ~", R: "[~@5 d6@18 ~@9]/2",
})).s("gm_glockenspiel").gain(0.27).pan(0.8)

// chords · piano
const piano = note("<~@37 A ~@9 B C D E ~@4 B F G@2 ~@4 H@4 I@4 ~@3 J@2 ~@18 A ~@14>".pickRestart({
  A: "[a4,a5]@2 ~ g5@2 ~ [e4,e5]@9 ~, ~@3 g4 ~@12", B: "~@12 d5 ~ d5 ~", C: "d5@2 ~ c5 ~ b4 ~ d5@4 ~ d5@4",
  D: "~@12 d5 ~ d5!2", E: "c5@2 ~ c5@2 ~ b4@2 d5@8", F: "d5 ~ c5 ~ c5 ~ b4 d5@3 d5@6",
  G: "[~@12 d5!2 ~ d5@3 c5 ~ c5 ~ b4 ~ d5@7 ~]/2",
  H: "[~@8 a5@3 g5@2 [d5,f#5] e5@8 g5 [d5,f#5] [e5,g5]@3 [d5,f#5]@2 ~ [d5,f#5]@8 [d5,f#5] ~ [d5,f#5]@3 [c5,e5]@10 ~@11, ~@8 e5@5 ~ g5@7 ~@43]/4", // D Em D C
  I: "[~@8 [c5,e5,a5]@2 ~ [e5,g5]@2 ~ [c5,e5,g5]@7 ~ [d5,e5,g5] f#5 [e5,g5]@2 ~ d5@2 ~ [d5,f#5,a5]@7 ~ [d5,f#5,a5] ~ [d5,f#5,a5]@2 ~ [c5,e5,g5]@10 ~@11, ~@11 c5 ~@14 f#5@2 ~@36]/4", // Am Em C Em7 Em D C
  J: "[~@8 [a4,a5]@2 ~ g5@2 ~ [e4,e5]@9 ~@9, ~@11 g4 ~@20]/2", // A E
})).s("gm_piano").gain(0.05)

// drums · kick
const kick = s("bd").struct("<~@18 A@23 B A@21 C D@7 A@7 E A@19 B A@4 E F ~@4>".pickRestart({
  A: "x!4", B: "x ~@2 x ~@2 x ~ x ~@3 x ~@3", C: "x ~ x ~ x ~@2 x", D: "x ~@3 x ~@2 x",
  E: "x ~@3 x ~@3 x ~@2 x ~@2 x ~", F: "x",
})).gain(0.64)

// drums · rim
const rim = s("rim").struct(`<
  ~@18 A B C D C E F G A B C D C E F G A B C D C E F ~ H I H I H J K C L C L M N J K C L C L M N O ~@7 P K C L C L M Q R
  M R M S@7 T A B C D C E F ~ H A K C U ~@5
>`.pickRestart({
  A: "~@4 x ~@2 x ~@4 x ~@2 x", B: "~@4 x ~@4 x ~@2 x ~@3", C: "~ x ~@2 x ~@4 x ~@2 x ~@3", D: "~ x ~@7 x ~@2 x ~@3",
  E: "~ x ~@7 x ~@2 x ~@2 x", F: "~@4 x ~@2 x ~@7 x", G: "~@7 x ~@4 x ~@3", H: "~ x ~@2 x ~@4 x ~@2 x ~@2 x",
  I: "~@4 x ~@2 x ~@8", J: "~@4 x ~@7 x ~@2 x", K: "~@4 x ~@2 x ~@4 x ~@3", L: "~ x ~@2 x ~@4 x ~@6",
  M: "~ x ~@2 x ~@2 x ~@4 x ~@2 x", N: "~@7 x ~@7 x", O: "~ x ~@2", P: "~@12 x ~@2 x", Q: "~@7 x ~@8",
  R: "~@9 x ~@2 x ~@3", S: "~ x ~@2 x ~@2 x ~@4 x ~@3", T: "~ x ~@2 x ~@2 x ~@8", U: "~ x ~@2 x ~@11",
})).gain(0.56)

// drums · snare
const snare = s("sd").struct("<~@17 A ~@7 B ~@7 B ~@13 C ~@15 D E@7 F ~@12 G ~ H ~ I J K ~@18>".pickRestart({
  A: "~@2 x!2", B: "~@14 x!2", C: "~@6 x!2 ~@8", D: "~@3 x", E: "~ x ~ x", F: "x!2 ~@2", G: "~ x ~@2 x ~@2 x ~@2 x ~@5",
  H: "x ~@2 x ~@2 x ~@2 x ~@6", I: "~@11 x ~@2 x ~", J: "~ x ~@2 x ~@2 x ~@8", K: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@3",
})).gain(0.56)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@84 [~@13 x ~@2] [x ~@2 x ~@2 x ~@2 x ~@2 x ~@3] [~@11 x ~@2 x ~] ~@22>")
  .gain(0.24)
// … 46 more lines

More by Culture Club