Strudelify
Dream Police cover art

1979 · Dream Police

Dream Police

Cheap Trick

KeyE majorTempo136 bpm
0:00/0:00
// Dream Police — Cheap Trick
// 136 bpm, 4/4, key E major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 132 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): DISTORTION.
setcpm(136/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.

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  ~ A B C D E F G H I J K L M ~ N O ~@2 N P Q R S@3 T U V W X Y Z AA E F G H I J K L M ~ N O ~@2 N P Q R S@3 T U V W X Y
  Z AB AC AD AE AF AC AD AG ~ AH AI AJ AK AH AI AJ AL AM R S@3 T U V W X Y Z AN AO AP AQ AR AS AT AU AV AW@7 AX@8 AY@3
  AZ BA BB BC BD AY@3 AZ BA BB BC BE@2
>`.pickRestart({
  A: "[e2,b2]@2 [e2,b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3]@6 [e2,b2,e3] ~ e2 ~", // E5
  B: "[b2,f#3,b3]@4 [b2,f#3,b3] ~ e3@6 e3@4, ~@6 [a2,a3]@9 ~", // B5 A
  C: "[e2,e3]@2 e2@2 [e2,b2]@2 [b2,e3]@6 [b2,e3] ~@3, b2@2 ~ e2@4 ~", // E E5
  D: "[b2,f#3,b3]@4 [b2,f#3,b3] ~ [a2,e3,a3]@6 [a2,e3,a3]@3 ~", // B5 A5
  E: "[e2,b2] e2 [e2,b2] [e2,b2]@3 [e2,b2,e3] ~, e3 e3@2 ~", F: "[b2,f#3]@4 [b2,b3] ~ [a2,e3,a3]@6 [a2,e3]@4, ~@6 a3 ~",
  G: "[e2,b2] e2!2 e2@3 [e2,b2,e3] ~, e3@3 ~, ~ b2@5 ~@2", H: "[b2,b3]@4 [b2,f#3,b3] ~ [a2,e3,a3]@6 [a2,e3,a3]@3 ~",
  I: "[b2,e3]!2 [e2,b2,e3] [e2,b2,e3]@3 [e2,b2,e3] ~, e2 ~@3", J: "[b2,f#3,b3]@4 [b2,f#3,b3] ~ [a2,e3,a3]@6 [a2,e3]@4",
  K: "e2 [e2,b2]!7, e3@5 ~@7 e3@4, b2 ~@15", L: "[e2,b2]!3 b2!2 [e2,b2]!3, e3@2 ~ e2@2 ~@3", M: "f#2 ~@3",
  N: "~@7 [e2,b2,e3]", O: "~@2 [b2,f#3,b3]@13 ~", P: "~ [b2,f#3,b3]@5 ~ [e2,b2,e3]", Q: "~ [b2,f#3,b3]@7",
  R: "b2@2 b2 [b2,e3,b3] b2 [b2,e3] [e3,b3]!2, [e3,b3]@3 ~@3 b2@2, e2 ~@7", // E5
  S: "[[f#3,b3] [e3,b3] [d#3,b3] e3 e2 b2 [b2,e3,b3] ~ [e3,b3,e4] e3 [e3,b3] [e3,e4] e3!2 [e3,b3,e4] e3 e3 [e3,b3,e4] e3!2 [e3,b3,e4] [e3,b3] [e3,b3,e4,g#4]@2, ~@6 b3@6 ~@4 g#4@6 b3 ~@5 g#4@12 g#4@4 ~@4, ~@10 e2@9 ~@29]/3", // B5 E5 G#m E5 E E5 E
  T: "[e3,b3,e4]@2 [e3,b3,e4]@2 [e3,b3,e4]@2 [b3,e4] ~ [a3,d4]@2 a3@2 [d3,a3,d4]@2 [a3,d4] ~, ~@2 d3 ~", // E5 D5
  U: "[c3,g3,c4]@2 [c3,g3]@2 [c3,g3,c4]@2 c3@2 [g3,b3]@2 [g3,b3]@2 [g3,b3]@2 [g3,b3] ~", // C5 G
  V: "[e3,a3] e3 [a2,a3] ~ [e3,a3] [a2,e3]!3, a2 e3 ~ a3, ~@3 a2@2 ~@3", W: "a2@2 b2@2 c3@2 b2@2 a2@2 g2 ~ f#2@2 f2@2",
  X: "[e2,e3]@2 [e3,b3,e4]@2 [e3,b3,e4]@2 [e3,b3,e4] ~ [d3,a3,d4]@2 [d3,a3]@2 [d3,a3,d4]@2 d3 ~", // E E5 D5
  Y: "[c3,g3]@2 [c3,g3]@2 [c3,g3,c4]@3 ~ g3@2 g3@2 [b2,g3,b3]@2 [b2,g3,b3] ~, c4 ~ b2 ~", // C5 Em
  Z: "[f#3,b3] f#3 [b2,f#3,b3] b2 [b2,f#3]!2 [b2,f#3,b3] [b2,f#3], b2 ~@3", // B5
  AA: "[b2,f#3]!3 f#3 [f#3,b3] f#3 b3!2, ~@3 b2@2 b2@3, ~@3 f#3", // B5
  AB: "[b2,f#3]!3 f#3 [f#3,b3] f#3 [f#3,b3] [e2,b2], ~@3 b2@2 b2@2 ~", AC: "[e2,b2]@3 ~@13", AD: "~@7 [a2,e3]",
  AE: "[a2,e3]@3 ~@13", AF: "~@7 [e2,b2]", AG: "[a2,e3] ~@7", AH: "f#2!4 c#3!4", AI: "d3!4 a2!4",
  AJ: "c#3!4 g#2!3 [e2,b2]", AK: "~ [b2,f#3]@7", AL: "~ [b2,f#3]@5 ~ [e2,b2]", AM: "~@2 [b2,f#3]@11 ~@3",
  AN: "f#3 ~ e4 ~@2 e4 ~ c4, g3@5 ~ g3@5 ~ g3@4, b2 ~ c4@5 ~ c4@5 ~@3",
  AO: "~ c#4 ~@2 c#4 ~@2 c#4, g#3@2 f4@2 ~ f4@2 ~, ~@6 g#3@5 ~ g#3@4",
  AP: "~ d4 ~@2 d4 ~@2 d4, a3@2 f#4@2 ~ f#4@2 ~, ~@6 a3@5 ~ a3@4", AQ: "~ e4 ~ a#3 ~ f4 ~ b3, a#3 g4 b3 g#4",
  AR: "~ f#4 ~ c4 ~ g4 a#4 c#4, c4@4 a4@4 c#4@5 ~@3", AS: "[d4,g#4,b4] [d#4,a4,c5] [e4,a#4,c#5] [f4,b4,d5]",
  AT: "[f#4,b4,d#5]@4 [g4,c5,e5]@4 [g#4,c#5,f5]@2 [a4,d5,f#5]@3 ~ [a4,d5,f#5]@2", // B C C# D
  AU: "~@3 f#3@2 c3 ~ c3, f#2@7 ~, ~@4 c3@5 ~@3 f#3@4", AV: "~@3 f#3@2 c3 ~ c3, g2, ~@4 c3@5 ~@3 f#3@4",
  AW: "[~@2 f#3 ~@2 f#3 ~@3 c4@2 f#3 ~ f#3 ~@3 c4@2 f#3 ~ f#3 ~@9 e4@2 a#3 ~ a#3 ~@3 g4@2 c#4 ~ c#4 ~@9 a4@2 d4, g#2@6 b2@6 c3@15 ~ c#3@14 ~@2 d3@6 d#3@6 e3@16 g3@15 ~ g#3@6 a3@6 a#3@12, ~@16 f#3@5 ~@3 c4@4 ~@4 f#3@5 ~@3 c4@4 ~@4 d4@4 ~@2 d4@4 ~@2 a#3@5 ~@3 e4@4 ~@4 c#4@5 ~@3 g4@5 ~@3 g4@4 ~@2 g4@6 d4@5 ~@3]/7",
  AX: "[~ d4 ~@3 a4@2 d#4 ~ d#4 ~@3 a4@2 d4 ~ d4 ~@3 a4@2 d#4 ~ d#4 ~@3 a4@2 d4 ~ d4 ~@3 a4@2 d#4 ~ d#4 ~@3 a4@2 d4 ~ d4 ~@3 a4@2 ~ a4 ~ [e2,b2] [e2,b2,e3]!2 [e2,b2,e3]@3, a4@8 d#4@5 ~@3 a4@8 d4@5 ~@3 a4@8 d#4@5 ~@3 a4@8 d4@5 ~@3 a4@8 d#4@5 ~@3 a4@8 d4@5 ~@3 a4@8 d#4@5 ~ d#4@6 ~@12, ~@4 a3@15 ~ a#3@16 a3@15 ~ a#3@16 a3@16 a#3@16 a3@14 ~@14]/8", // E5
  AY: "[[e2,b2,e3] ~ e2 ~ [b2,f#3,b3]@4 [b2,f#3,b3] ~ e3@6 e3@4 [e2,e3]@2 e2@2 [e2,b2]@2 [b2,e3]@6 [b2,e3] ~@3 [b2,f#3,b3]@4 [b2,f#3,b3] ~ [a2,e3,a3]@6, ~@10 [a2,a3]@9 ~ b2@4 ~@2 e2@8 ~@14]/3", // E5 B5 E E5 B5 A5 A
  AZ: "[a2,e3,a3]@3 ~ [e2,b2]@2 e2@2 [e2,b2]@2 [e2,b2]@6, ~ e3 e3@2", // A5 E5
  BA: "[e2,b2,e3]@2 ~@2 [b2,f#3]@4 [b2,b3] ~ [a2,e3,a3]@6", BB: "[a2,e3]@2 [e2,b2] e2!2 e2@3, a3 ~ e3@6, ~@3 b2@5",
  BC: "[e2,b2,e3]@2 ~@2 [b2,b3]@4 [b2,f#3,b3] ~ [a2,e3,a3]@6", // E5 B B5 A5
  BD: "[a2,e3,a3]@3 ~ [e2,b2]@2 [e2,b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3]@6", // A5 E5
  BE: "[[a2,e3,a3]@3 ~ [e2,b2]@2 [e2,b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3]@21 ~]/2", // A5 E5
})).s("gm_overdriven_guitar").gain(0.32).pan(0.3)

// chords · overdriven guitar · "OVERDRIVE" · soft notes
const overdriven_guitar_soft = note(`<
  ~ A ~@3 B C ~@4 D E F ~@6 G ~ H ~ I@2 J K L ~ M N O P B C ~@4 D E F ~@6 G ~ H ~ I@2 J K L ~ M N O Q ~@17 H ~ I@2 J K L
  ~ M N O ~@23 R ~@3 S T ~@2 R ~@3 S T ~@2 R ~
>`.pickRestart({
  A: "e3 ~@7", B: "~ b2 ~@6", C: "b3 ~@7", D: "~@3 e3 e3@2 ~@2", E: "~ e3@3", F: "c#3 ~@3", G: "~@7 a3",
  H: "~@4 e3 ~@3", I: "[~ b3 ~@2 b3 ~@2 b3@2 ~ b3!2 ~@4]/2", J: "~@5 d4 ~@2", K: "~ c4 ~@6", L: "c#4@9 ~@3 c#4@2 ~@2",
  M: "~@10 d4@2 ~@2 d4 ~", N: "~@2 b3 ~", O: "d#4@2 d#4 f#3 ~@4", P: "b3 ~ b3@2 ~ b3 d4@2", Q: "b3 ~ b3@2 ~ b3 ~@2",
  R: "~@2 e3 ~@5", S: "~@3 b2 ~@4", T: "~@2 b3 ~@5",
})).s("gm_overdriven_guitar").gain(0.16).pan(0.3)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~ A B A C A B A B A B D@2 E F G H E F G I H J K D@2 L M N O L M P@2 A B A B A B D@2 E F G H E F G I H J K D@2 L M N O
  L M Q R S T U V S T U W E F G H E F G I H J K D@2 L M N O L M P X Y Z@4 AA AB AC AD@3 AE@8 AF@5 AG@14 AH@2
>`.pickRestart({
  A: "e1 ~ e1 ~ e1 ~ e1@9 ~", B: "b1@3 a1@2 ~ a1 b1", C: "b1@5 ~ a1@4 ~@2 a1@2 b1@2",
  D: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~",
  E: "[f#0,f#1] ~ [f#0,f#1] ~ [f#0,f#1] ~ [f#0,f#1]@2 [c#1,c#2] ~ [c#1,c#2] ~ [c#1,c#2] ~ [c#1,c#2]@2", // F# C#
  F: "[d1,d2] ~ [d1,d2] ~ [d1,d2] ~ [d1,d2]@2 [a0,a1] ~ [a0,a1] ~ [a0,a1] ~ [a0,a1]@2", // D A
  G: "[c#1,c#2] ~ [c#1,c#2] ~ [c#1,c#2] ~ [c#1,c#2]@2 [g#0,g#1] ~ [g#0,g#1] ~ [g#0,g#1] ~ [e0,e1]@2", H: "~ [b0,b1]@7",
  I: "~@2 [b0,b1]@11 ~ [e0,e1]@2", J: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1@2",
  K: "f#2@2 e2@2 d#2@2 e2@2 e1 ~ e1 ~ e1 ~ e1 ~", L: "e1 ~ e1 ~ e1 ~ e1@2 d2 ~ d2 ~ d2 ~ d2@2",
  M: "c2 ~ c2 ~ c2 ~ c2@2 b1 ~ b1 ~ b1 ~ b1@2", N: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~",
  O: "a1 b1 c2 b1 a1 g1 f#1 f1", P: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~",
  Q: "a1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~", R: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ e1 ~",
  S: "e1 ~ e1 ~ e1 ~ e1@2 b1 ~ b1 ~ b1 ~ b1@2", T: "c2 ~ c2 ~ c2 ~ c2@2 g1 ~ g1 ~ g1 ~ a1 ~",
  U: "a1 ~ a1 ~ a1 ~ a1@2 e2 ~ e2 ~ e2 ~ e2@2", V: "f2 ~ f2 ~ f2 ~ f2@2 c2 ~ c2 ~ c2 ~ e1 ~",
  W: "f2 ~ f2 ~ f2 ~ f2@2 e2 ~ e2 ~ e2 ~ e2@2", X: "b1@5 ~ b1@3 ~ b1@3 ~ b1 ~", Y: "b1@6 b1@3 ~ b1@3 ~ b1 ~",
  Z: "b1@5 ~ b1 ~ b1@5 ~ b1 ~", AA: "b1@5 ~ b1 ~ b1@5 ~ b1@2", AB: "f#1", AC: "g1",
  AD: "[g#1@3 b1@3 c2@8 c#2@8 d2@2]/3", AE: "[~ d#2@3 e2@8 g1@8 g#1@3 a1@3 a#1@8 a1@8 a#1@8 a1@8 a#1@6]/8",
  AF: "[~@4 a1@16 a#1@16 a1@16 e1 ~ e1 ~ e1 ~ e1@9 ~ b1@6 a1@4 ~@2]/5",
  AG: "[a1@2 b1@2 e1 ~ e1 ~ e1 ~ e1@9 ~ b1@6 a1@4 ~@2]/2", AH: "[a1@2 b1@2 e1 ~ e1 ~ e1 ~ e1@21 ~]/2",
})).s("gm_fretless_bass").gain(0.44)

// chords · percussive organ · "ORGAN 2"
const percussive_organ = note(`<
  ~@13 A B C D E B F G H ~@20 A B C D E B F G H ~@20 A B C D E B F G H ~@11 I J K L M N O ~@34
>`.pickRestart({
  A: "[a5,c#6,f#6] [e5,g#5,c#6]", B: "[f#5,a5,d6] [e5,a5,c#6]",
  C: "[e5,g#5,c#6]@8 [d#5,g#5]@6 [g#5,b5] ~, ~@4 c6@2 ~ e6", D: "~ [d#5,f#5,b5]@7", E: "[a5,f#6] [e5,g#5], c#6",
  F: "[e5,g#5,c#6]@8 [d#5,g#5,c6]@6 [g#5,b5,e6] ~", G: "~@2 [d#5,f#5,b5]@12 [g#5,b5,e6] ~", H: "~@2 [d#5,f#5,b5]@13 ~",
  I: "[g4,c5,e5]", J: "[g#4,c#5,f5]", K: "[a4,d5,f#5]", L: "[a#4,e5,g5]@4 [a#4,e5,g5]@4 [b4,f5,g#5]@3 ~ [b4,f5,g#5]@4",
  M: "[c5,f#5,a5]@3 ~ [c5,f#5,a5]@4 [c#5,g5,a#5]@3 ~ [c#5,g5,a#5]@4", // F#dim Gdim
  N: "[d5,g#5,b5] [d#5,a5,c6] [e5,a#5,c#6] [f5,b5,d6]", // G#dim Adim A#dim Bdim
  O: "[f#5,b5,d#6]@4 [g5,c6,e6]@4 [g#5,c#6,f6]@2 [a5,d6,f#6]@3 ~ [a5,d6,f#6]@2", // B C C# D
})).s("gm_percussive_organ").gain(0.19).pan(0.4)

// other · lead 1 square · "SQUAREWAVE"
const lead_1_square = note(`<
  ~@4 A@6 ~@14 B@3 C D@2 E F@4 A@4 ~@14 B@3 C D@2 E G@3 ~@19 B@3 C D@2 E H@2 ~@23 I ~ J ~ K ~ K ~ K ~ I ~ I ~ I ~ L@2
>`.pickRestart({
  A: "[~@7 b4@6 ~@3]/2", B: "[b4@5 a4]/3", C: "g4 f#4", D: "[e4@13 ~@3]/2", E: "[e4,b4] [d4,a4]",
  F: "[[c4,g4]@4 [b3,f#4]@19 b4@6 ~@3]/4", G: "[[c4,g4]@4 [b3,f#4]@19 ~]/3", H: "[[c4,g4] [b3,f#4]@3]/2", I: "~ b4@7",
  J: "~ b4@5 ~@2", K: "~ b4@6 ~", L: "[~ b4@15]/2",
})).s("gm_lead_1_square").gain(0.32)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  ~@7 A B ~@3 C ~@9 D ~@2 E ~@4 F ~@2 G ~@2 A B ~@3 C ~@9 D ~@2 E ~@4 F ~@2 H ~@17 D ~@2 E ~@4 F ~@31 I@2 ~@6 I@2 ~@2
>`.pickRestart({
  A: "~@3 b2@4 ~", B: "f#3@5 ~@11", C: "~@4 e2 ~@3", D: "~@2 b2 ~@13", E: "~@7 e3", F: "b3@7 ~@9", G: "d#4@3 d#4",
  H: "d#4@7 ~", I: "[~@10 b2@8 ~@2 f#3@5 ~@7]/2",
})).s("gm_distortion_guitar").gain(0.32).pan(0.8)

// chords · distortion guitar · "DISTORTION" · soft notes
const distortion_guitar_soft = note("<~@2 A ~@19 B ~@8 C ~@19 B ~@8 C ~@19 B ~@8 C ~@25 D@2 ~@6 D@2 ~@7>".pickRestart({
  A: "~@6 f2@9 ~", B: "~@4 e3 ~@11", C: "g#3@3 ~@5", D: "[~@10 f2@9 ~@13]/2",
})).s("gm_distortion_guitar").gain(0.12).pan(0.8)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note("<~@63 A B C D A B C E ~@61>".pickRestart({
  A: "e2 ~ e2 ~ e2 ~ e2@2 b2 ~ b2 ~ b2 ~ b2@2", B: "c3 ~ c3 ~ c3 ~ c3@2 g2 ~ g2 ~ g2 ~ a2 ~",
  C: "a2 ~ a2 ~ a2 ~ a2@2 e3 ~ e3 ~ e3 ~ e3@2", D: "f3 ~ f3 ~ f3 ~ f3@2 c3 ~ c3 ~ c3 ~ e2 ~",
  E: "f3 ~ f3 ~ f3 ~ f3@2 e3 ~ e3 ~ e3 ~ e3@2",
})).s("gm_electric_guitar_muted").gain(0.38).pan(0.2)

// other · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note("<~@70 A B C D E F G H ~@54>".pickRestart({
  A: "~@10 c#4@2 f#4@2 g#4 ~", B: "a4@7 ~ g#4@5 ~@3", C: "f#4@5 ~@3 c#4@4 d#4@2 ~@2", D: "e4@6 ~ e4@6 ~@3",
  E: "~@10 c#4@2 ~ g#4 ~@2, ~@6 f#4 ~", F: "a4@6 ~@2 g#4@5 ~@3", G: "f#4@5 ~@3 c#4@3 ~ d#4@2 ~@2", H: "e4@5 ~ e4@6 ~@4",
})).s("gm_electric_guitar_jazz").gain(0.49).pan(0.7)

// other · guitar harmonics · "GTHARMONIC"
const guitar_harmonics = note("<~@70 A B C D E F G H ~@54>".pickRestart({
  A: "~@10 c#3@2 f#3@2 g#3 ~", B: "a3@7 ~ g#3@5 ~@3", C: "f#3@5 ~@3 c#3@4 d#3@2 ~@2", D: "e3@6 ~ e3@6 ~@3",
  E: "~@10 c#3@2 ~ g#3 ~@2, ~@6 f#3 ~", F: "a3@6 ~@2 g#3@5 ~@3", G: "f#3@5 ~@3 c#3@3 ~ d#3@2 ~@2", H: "e3@5 ~ e3@6 ~@4",
})).s("gm_guitar_harmonics").gain(0.38).pan(0.3)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~ A@12 B ~@7 C D E F G H@2 I H@3 J@2 A@8 B ~@7 C D E F G K H I H@3 J@2 ~@16 C D E F G L K I L I L M N@7 O@5 P@4 Q@8
  R@15 S ~
>`.pickRestart({
  A: "e5@2 b5@2 e6 ~ b5@2 e5@2 b5 ~ e6@2 b5@2", B: "e5 ~@15", C: "~@4 b5 c#6 b5 a#5 b5 c#6 b5 a#5 b5 c#6 b5 a#5",
  D: "e6 ~ e5 ~ e5@2 e6@2 e5 ~ e5 ~ e5 ~ e5 ~", E: "f#5@2 e5@2 d#5@2 e5 ~ e5 ~ e5 ~ e5 ~ e5@2",
  F: "e6@2 e5 ~ e5@2 e6 ~ e5 ~ e5@2 e6 ~ e5 ~", G: "e5@2 e6@2 e5 ~ e5@2 e6@2 e5 ~ e6@2 e5 ~",
  H: "e5 b5 e6 b5 e5 b5 e6 b5", I: "e5@2 b5@2 e6@2 b5@2 e5@2 b5 ~ e6@2 b5@2", J: "b5/2",
  K: "e5@2 b5 ~ e6@2 b5@2 e5@2 b5@2 e6@2 b5@2", L: "e5@2 b5 ~ e6@2 b5@2 e5@2 b5 ~ e6@2 b5@2", M: "a5@15 ~", N: "b1/7",
  O: "[~@3 f#3@2 c3 ~ c3 ~@3 f#3@2 c3 ~ c3 ~@5 f#3 ~@3 c4@2 f#3 ~ f#3 ~@3 c4@2 f#3 ~ f#3 [d2,d3]@2, [f#1,f#2]@8 [g1,g2]@8 [g#1,g#2]@3 [b1,b2]@3 [c2,c3]@8 c#2@8 ~@2, ~@4 c3@5 ~@3 f#3@8 c3@4 ~@4 f#3@6 ~@2 f#3@4 ~@8 f#3@5 ~@3 c4@8 f#3@5 ~@3 c4@6 ~@2, ~@30 c#3@7 ~@3]/5", // D F# G G# B C
  P: "[~@14 e4@4 a#3@2 ~@2 a#3@2 ~@6 g4@4 c#4@2 ~@2 c#4@2 ~@18 a4@4 ~ a#3, d4@4 ~@2 d4@6 a#3@5 ~@3 e4@8 c#4@5 ~@3 g4@6 ~@2 g4@5 ~ g4@6 d4@5 ~ d4@2, ~@2 [d#2,d#3]@6 e2@16 g2@17 ~@11 a#3@10 ~@2, ~@8 e3@14 ~@2 g3@15 ~ [g#2,g#3]@6 [a2,a3]@6 a#2@12]/4", // D# G# A
  Q: "[~@2 a#3@2 ~@6 a4@4 d#4@2 ~@2 d#4@2 ~@6 a4@4 d4@2 ~@2 d4@2 ~@6 a4@4 d#4@2 ~@2 d#4@2 ~@6 a4@4 d4@2 ~@2 d4@2 ~@6 a4@4 d#4@2 ~@2 d#4@2 ~@6 a4@4 d4@2 ~@2 d4@2 ~@6 a4@4 ~@2 a4@2 ~@2 e5 ~ b5@2 e6 ~ b5@2 e5@2 b5 ~, a4@8 d#4@5 ~@3 a4@8 d4@5 ~@3 a4@8 d#4@5 ~@3 a4@8 d4@5 ~@3 a4@8 d#4@5 ~@3 a4@8 d4@5 ~@3 a4@4 ~@4 d#4@4 ~@2 d#4@6 ~@12, ~ [a2,a3]@4 [a#2,a#3]@4 [a2,a3]@4 [a#2,a#3]@4 [a2,a3]@4 a#2@4 a2@4 ~@3, ~@42 a#3@7 ~ a3@7 ~@7]/8", // A A# A A# A
  R: "e6@2 b5@2 e5@2 b5@2 e6 ~ b5@2 e5@2 b5 ~", S: "e6@2 b5@2 e5@2 b5@2 e6 ~ b5@2 e5@2 ~@2",
})).s("gm_string_ensemble_1").gain(0.38).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B A@8 C@2 ~@2 D E ~@2 D F G A@2 H@2 I@2 J@6 A@6 C@2 ~@2 D E ~@2 D F G A@2 H@2 I@2 J@6 K D K D K D K ~ L@3 F L@3 F
  M A@2 H@2 I@2 J@5 N O J@5 K@2 P Q@2 R S T U H@3 V W@3 X Y@15 Z ~
>`.pickRestart({
  A: "x!2 ~ x ~ x ~@2", B: "x!2 ~ x ~@2 x ~", C: "x!2 ~@2 x!2 ~@2", D: "~@7 x", E: "~ x ~@6", F: "~ x ~@5 x",
  G: "~@2 x ~@6 x ~@6", H: "x!4", I: "x ~@2 x!2 ~@2 x", J: "x!2 ~ x!3 ~ x", K: "x", L: "x ~ x ~@4 x",
  M: "x ~ x ~@6 x ~@6", N: "x ~@2 x ~ x ~ x", O: "x ~@2 x ~ x ~@2", P: "x ~@2 x", Q: "~@3 x", R: "~ x ~@2 x ~@3",
  S: "~ x", T: "~@4 x ~@2 x", U: "~@2 x!3 ~ x ~", V: "x ~ x!6", W: "x!8", X: "x!4 ~ x ~ x", Y: "~@2 x!2 ~ x ~ x",
  Z: "~@2 x ~@2 x ~@2",
})).gain(0.44)

// drums · snare
const snare = s("sd").struct(`<
  A B C B D B@8 ~@2 A E ~@2 F G H B@2 I J B@3 K B@3 L B@8 ~@2 A E ~@2 F G H B@2 I J B@3 K B@3 L M N M N M N M O E@2 P
  E@3 F Q H B@2 I J B@3 K B@10 G@2 C M@2 I R@2 S E@3 T@2 U@2 E V@15 W ~
>`.pickRestart({
  A: "~@5 x!2 ~", B: "~ x ~ x", C: "~@2 x ~@2 x ~@2", D: "~@4 x ~@3 x ~ x!2 ~ x!2 ~", E: "~ x", F: "~@3 x ~@4",
  G: "~ x ~@2", H: "~@4 x ~@3 x ~ x!4 ~@2", I: "x ~@2 x ~@2 x ~", J: "~ x ~@2 x ~ x ~", K: "~@2 x ~@2 x!2 ~",
  L: "x ~ x!14", M: "x", N: "~@7 x", O: "~@10 x ~ x ~ x!2", P: "~@4 x!3 ~", Q: "~ x!2 ~", R: "~@3 x",
  S: "~ x ~@2 x ~@3", T: "~@6 x!6 ~@4", U: "~@7 x!5 ~@4", V: "x!2", W: "x ~@2 x!2 ~@3",
})).gain(0.49)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@15 A B ~@2 C D B ~@8 E ~@13 A B ~@2 C D B ~@8 E ~@13 A B ~@2 C D B ~@8 E ~@9 C F ~ G@2 ~ H@2 ~ I J K L I ~ M ~@18
>`.pickRestart({
  A: "~@7 x", B: "~ x ~@6", C: "~@6 x!2", D: "~ x ~@3 x!3", E: "x", F: "~@14 x!2", G: "~@10 x!2 ~@4", H: "~@6 x!2 ~@8",
  I: "~@2 x!2 ~@12", J: "~ x!3 ~@12", K: "x!4 ~@12", L: "x!2 ~@6", M: "~@3 x!4 ~@9",
})).gain(0.44)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B A C A@8 ~@9 A@2 D E A@7 F A@8 ~@9 A@2 D E A@7 F G A@7 ~@9 A@2 D E A@46 B ~
>`.pickRestart({
  A: "x!8", B: "x!6 ~@2", C: "x!5 ~ x!2", D: "~ x!2 ~ x!2 ~ x", E: "x ~ x!2 ~ x ~ x", F: "x!2 ~@6", G: "~ x!7",
})).gain(0.44)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@2 A ~@13 B ~@2 C D E ~@7 F ~@15 B ~@2 C D E ~@7 F ~@15 B ~@2 C D E ~@7 F ~@10 G H I J K F L M N O P Q R S T U V ~@17
// … 32 more lines

More by Cheap Trick