Strudelify
We Are The Champions cover art

1978 · News Of The World

We Are The Champions

Queen

KeyF majorTempo95 bpm
0:00/0:00
// We Are The Champions — Queen
// 95 bpm, 3/8, key F major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 168 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(95/1.5)

// 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 · piano · "A.PIANO 1"
const piano = note(`<
  ~ A@2 B@4 C D@3 E@6 F G@7 H I J K@6 L M@2 N@2 O@2 P Q@3 R@2 S@2 T@2 U@4 V@2 W@2 X@2 Y@2 Z@4 AA@3 AB AC@2 AD@2 AE@2
  AF@2 AG ~ A@2 AH@4 C AI@3 E@6 F AJ@7 H I J K@6 AK AL@2 N@2 O@2 P Q@3 R@2 S@2 T@2 U@4 V@2 W@2 X@2 Y@2 Z@4 AM@6 AN@2
  AO@2 AN@2 AO@2 AN@2 AC@2 AP@3
>`.pickRestart({
  A: "[c2@5 ~@11 c4@5 eb4@6 c4@2 ~@3, ~@5 c3@27, ~@11 g3@21, ~@16 g4@15 ~]/2",
  B: "[[g2,bb3,d4,f4]@2 ~@3 bb3@20 ~@2 bb3@5 c2@5 ~@11 [c4,eb5]@5 [g3,eb4]@6 eb5@5, ~@5 f4@32 ~@6 g3@10 g5@10 ~, ~@5 [g2,g3,d4]@28 ~@4 c3@21 ~ c3@3 ~@2, ~@3 [c5,c6], ~@48 g4@11 c4 ~@4]/4", // Gm7 Cm G5 C
  C: "~@5 [g2,g3,bb3,d4,f4]@3 ~@3 [g2,bb3,d4,f4]@5, ~@11 g3@3 ~@2", // Gm7
  D: "[[g2,g3,bb3]@5 g2@4 ~@2 [g2,bb3]@5 c2@5 ~@11 eb5@5 eb4@6 [c3,c5,eb5]@5, [d4,f4]@10 ~@6 g4@7 ~, ~@5 g3@11 ~@5 c3@16 g3@3 ~@3 c4@2 ~@3, ~@5 bb3@2 ~@20 g3@5 c4@4 ~ g5@10 ~, ~@32 c6@11 g3 ~@4]/3", // Gm Cm Dm
  E: "[[d4,f4]@2 ~@3 [g3,bb3]@11 ~@11 d4@5 ~@11 c4@5 ~@5 [c4,c5]@5 ~ g3@4 ~@6 [g2,bb3]@6 ~@16 [g2,f4]@5, [g2,bb3] ~@4 f4@38 ~@5 c3@15 ~@6 d4@10 ~ bb3@16, ~@5 [g2,d4]@16 [g2,bb3]@10 ~ c2@16 [eb4,eb5]@10 ~ g4@8 ~@2 f4@14 ~@2 d4@11, ~@16 g3@15 ~@6 g3@15 ~@12 g3@8 ~@3 g3@20 ~, ~@25 g2@5 ~@2]/6", // Dm Gm C Gm G7 Gm G5 Gm …
  F: "~@5 g3@6 bb3@5, eb2",
  G: "[g3@5 bb3@6 g3@3 ~@2 [ab3,c4,eb4,ab4]@2 ~@3 c4@16 ~@6 c4@5 ~@16 bb3@5 ~@6 bb3@2 ~@3 [eb2,ab3,c4,eb4,ab4]@3 ~@2 ab3@11 ~@5 ab3@6 bb2@5, eb3@48 eb2@27 ~@10 [eb2,ab4]@22 ~@5, eb4@15 ~@6 eb4@33 ~@5 g3@16 eb3@16 ~@5 eb3@10 ~@6, g4@10 ~@11 ab4@29 ~@14 g4@10 ~@38, ~@21 ab3@12 ~@4 ab3@11 ~@5 eb3@16 eb4@9 ~@7 [c4,eb4]@17 ~@5 c4@2 ~@3]/7", // Ab Ab5 Cm
  H: "[eb2,eb3,bb3,g4], eb4@3 ~, g3@7 ~@9", I: "[d2,d3,f3,bb3,f4], d4@9 ~@7",
  J: "[c3,c4,eb4], [g3,g4]@13 ~@3, c2@3 ~@13", // Cm G
  K: "[[a3,c4,f4,a4]@11 ~@5 bb3@16 ~@5 bb3@3 ~ d4@2 f4@2 ~@3 [c4,ab4,c5]@11 [d4,f4]@3 ~@2 [c4,ab4]@11 [d4,f4]@4 ~ [bb3,ab4,c5]@11 [bb2,bb4]@5, f3@26 ~@6 f3@17 ~@15 [bb3,c5]@14 ~@2 c4@15 ~, f2@16 bb2@56 ~@3 bb2@13 ~@8, ~@16 bb4@25 ~@18 bb4@5 ~@11 bb4@5 ~@16, ~@16 [d4,f4]@21 ~@11 eb4@7 ~@9 eb4@8 ~@8 eb4@7 ~@4 f4@3 ~@2]/6", // F Fm Dm Fm Dm Fm Bb Bbsus2 …
  L: "~@11 c4@4 ~, [c3,e4,c5]@15 ~, c4@9 ~@7, ~@5 g4@10 ~", // C
  M: "[f3@11 ~@16 g3@5, [a4,c5,f5]@15 ~, f2@21 ~@6 g2@3 ~@2, f4@8 ~@3 f4@8 ~@2 f4@11, ~@2 f3 ~]/2", // F
  N: "[~@27 e3@3 c5@2, e5, a2@21 a4@10 ~, [a4,c5]@16 a3@15 ~, ~@11 e4@19 ~@2]/2", // Am
  O: "[f4@9 ~@18 a3@5, [d3,d5]@7 ~, a4@19 ~@2 a4@11, ~@11 f4@19 ~@2, ~@8 d4@5 ~@3]/2", P: "[bb2,bb3,f4,bb4,d5]",
  Q: "[[c3,g4,e5]@16 f3@11 ~@5 f3@5 g3@5 ~ ab3@5, c5@23 ~, c4@5 ~@3 a4@15 ~, ~@16 f5@27 ~@5, ~@16 [e2,f2,f4]@11 f4@9 ~ f4@11]/3", // C Fmaj7
  R: "[a3@11 e4@5 ~@5 e4@6 e3@5, [c5,e5], a2@13 ~@3, a4@11 ~@5, ~@8 a3@5 ~@3]/2", // C
  S: "[f4@8 ~@8 bb3@5 a3@5 ~ g3@5, [bb4,d5]@7 ~, bb2@17 ~@15, ~@11 f4@16 ~@5]/2", // Bb
  T: "[gb4@9 ~@2 [eb4,gb4,eb5]@10 [d4,d5]@11, a4, [gb3,c5]@21 gb4@7 ~@4]/2", // Ebm D Gbdim
  U: "[g4@16 d4@8 ~@3 d4@2 ~@30 g3@5, [g3,d5]@8 [c5,e5]@7 ~, bb4@26 ~ g4@21 e4@15 ~, ~@32 g3@21 g4@10 ~]/4", // G5 C
  V: "[~@11 f4@5 ~@11 f4@5, bb3@21 c4@11, [bb4,f5]@7 ~ [bb4,f5]@6 ~@2]/2", // Bb5
  W: "[db4 [f4,f5], db5, bb4@29 ~@3, f5@7 ~@9]/2", X: "[~@16 f4@11 f3@5, f5, c5@27 a4@2 ~@3, [f3,a4]@19 ~@13]/2",
  Y: "[[f4,g4,c5]@18 ~@3 f4@8 ~@3, [g3,eb5]@31 ~]/2", // Fsus2 Cm
  Z: "[c5@16 ~@5 c5@6 ~@5 f4@16 ~@5 f4@6 f3@5, ab3@16 bb2@13 ~@3, eb5@21 ~@6 eb5@36 ~, ab4@13 ~@3 ab4@12 ~@4 bb4@22 ~@10, ~@16 bb3@6 ~@2 bb3@5 ~@3]/4",
  AA: "[[c3,c4,g4,bb4,eb5]@3 ~@2 [c3,c4,g4]@27 ~@5 f4@6 ab4@4 ~, ~@5 eb5@37 ~@6, ~@5 bb4@31 ~@12, ~@32 f2@15 ~, ~@16 f3@5 ~@3]/3", // Cm7 C5
  AB: "[f4,c5]@5 ab4@4 ~@2 f4 ~@4, f3", AC: "[~@5 bb3@6 d4@5 bb3@5 d4@5 ~ c3@5, c3@24 ~@3 bb3@3 ~@2, ~@16 f4@13 ~@3]/2",
  AD: "[~@5 f4@6 ab4@2 ~@3 [c5,f5]@5 ab4@3 ~@3 f2@4 ~, f2@4 f3@3 ~, f3@8 ~@6 f4@5 ~@13, ~@8 ab4 ~@7]/2", // F5
  AE: "[~@5 [c3,g3,bb3,d4,f4] ~@5 g3@5 g3@4 ~ bb3@5 ~ d4@3 ~@2, ~@11 f4@20 ~, ~@11 c3@16 c3 ~@4, ~@11 [bb3,d4]@11 ~@10]/2", // Gm7 Bb
  AF: "[~@5 f4@5 ~ ab4@2 ~@3 [ab4,c5,f5]@5 [f4,ab4] ~@5 f2@4 ~, f2@4 f3@3 ~, f3@9 ~@5 f4@6 ~@12]/2", // Fm
  AG: "[c3,g3,bb3,d4,f4] ~@4 [c3,g3,bb3,d4,f4]@11", // Gm7
  AH: "[[g2,bb3,d4,f4]@2 ~@3 bb3@20 ~@2 bb3@5 c2@5 ~@11 [c4,eb5]@5 [g3,eb4]@6 eb5@5, ~@5 f4@32 ~@6 g3@5 ab5 ~@4 g5@10 ~, ~@5 [g2,g3,d4]@28 ~@4 c3@21 ~ c3@3 ~@2, ~@3 [c5,c6], ~@48 g4@11 c4 ~@4]/4", // Gm7 Cm G5 C
  AI: "[[g2,g3,bb3]@5 g2@4 ~@2 [g2,bb3]@5 c2@5 ~@11 [eb4,c5,ab5] ~@4 eb4@6 [c3,c5,eb5]@5, [d4,f4]@10 ~@6 g4@7 ~, ~@5 g3@11 ~@5 c3@16 g3@2 ~@4 c4@2 ~@3, ~@5 bb3@2 ~@20 g3@5 [c4,eb5]@5 g5@10 ~, ~@32 c6@11 g3 ~@4]/3", // Gm Ab Cm Dm Cm
  AJ: "[g3@5 bb3@6 g3@3 ~@2 [ab3,c4,eb4,ab4]@2 ~@3 c4@16 ~@6 c4@5 ~@16 bb3@5 ~@6 bb3@2 ~@3 [eb2,ab3,c4,eb4,ab4]@3 ~@2 ab3@11 ~@5 ab3@6 bb2@5, eb3@48 eb2@27 ~@10 [eb2,ab4]@22 ~@5, eb4@15 ~@6 eb4@33 ~@5 g3@16 eb3@16 ~@5 eb3@10 ~@6, g4@10 ~@11 ab4@29 ~@14 g4@10 ~@38, bb3 ~@20 ab3@12 ~@4 ab3@11 ~@5 eb3@16 eb4@9 ~@7 [c4,eb4]@17 ~@5 c4@2 ~@3]/7", // Ab Ab5 Cm
  AK: "~@11 c4@3 ~@2, [c3,e4,c5]@15 ~, c4@9 ~@7, ~@5 g4@10 ~", // C
  AL: "[f3@11 ~@16 g3@5, [a4,c5,f5]@31 ~, f2@21 ~@6 g2@3 ~@2, f4@8 ~@3 f4@8 ~@2 f4@11, ~@2 f3 ~]/2", // F
  AM: "[[c3,c4,g4,bb4,eb5]@3 ~@2 c3@27 ~@21 ab4@4 ~@2 f4 ~@25 d4@6 c3@5, ~@5 eb5@37 ~ ab4@10 ~@22 d4@10 ~@6 bb3@3 ~@2, ~@5 [c4,g4,bb4]@32 f4@11 [f4,c5]@8 ~@13 bb3@11 [bb3,f4]@13 ~@3, ~@32 f2@24 ~@8 c3@27 ~@5, ~@2 f3 f3@2 ~]/6", // Cm7 C7 F5 Bb5
  AN: "[~@21 ab4@6 f4@3 ~@2, f2@29 ~@3, f3 f3, ~@5 f4@11 [f4,c5]@13 ~@3, ~@11 ab4@10 ~@11]/2", // F5
  AO: "[~@21 d4@6 c3@5, c3@27 ~@5, ~@5 bb3@11 [bb3,f4]@13 ~@3, ~@11 d4@10 ~@6 bb3@3 ~@2]/2", // Bb5
  AP: "[~@11 eb4@11 ~@26, f2@37 ~@11, f3@5 ab3@5 ~@38, ~@3 g3@5 c4@5 ~@35]/3",
})).s("gm_piano").gain(0.54)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@3 A B C@2 D E F@4 ~@3 G H@4 I@3 J K L M N O@2 P Q R S N T U V W X Y M N T U Z AA@2 AB@2 AC AD AC AE AF@2 AG AH N AI
  AC AJ AK AL Y AM AN@2 ~@12 AO@5 ~@10 G AP@2 AQ@2 AR@2 AS@2 K W M N AT@2 AU@2 AV AW AX T U V W X Y M N T U Z AA@2 AB@2
  AC AD AC AE AY@2 AG AH N AI AC AJ AK AL Y AM AN@2 ~@19
>`.pickRestart({
  A: "~@5 c4@2 ~@4 g3@2 ~@3", B: "eb3@2 ~@3 bb2@2 ~@4 g2@5", C: "[c3@31 ~]/2", D: "~@5 g3@5 ~ g3@5",
  E: "g3@5 g3@5 ~ g3@5", F: "c3/4", G: "~@5 bb2@5 ~ d3@5", H: "eb3/4", I: "eb2/3", J: "eb3", K: "eb2", L: "d2", M: "c2",
  N: "f1", O: "bb1/2", P: "bb2@4 ~ bb2 ~@3 bb2 ~ bb2@3 bb2@2", Q: "bb2@3 bb2@2 bb2@3 ~ bb2@2 bb2@2 ~ bb2@2",
  R: "bb2@3 bb2@2 bb2@3 ~ bb2@2 bb2@3 bb2@2", S: "c3@13 ~@3", T: "f2@5 f1@5 ~ g1@5", U: "a1", V: "a2@5 a1@5 ~ c2@5",
  W: "d2@15 ~", X: "d2@4 ~ d2@6 c2@4 ~", Y: "bb1", Z: "a2@5 a1@4 ~@2 a2@5", AA: "[bb1@21 a1@4 ~@2 g1@5]/2",
  AB: "[gb1@10 ~ eb2@10 d2@11]/2", AC: "g1", AD: "g2@10 ~ g1@4 ~", AE: "g2@10 ~ a1@5", AF: "[bb1@27 db2@5]/2", AG: "f2",
  AH: "ab2", AI: "g2@5 f2@5 ~ f1@5, f2 ~@15", AJ: "a2@5 g2@4 ~@2 g1@5, g2 ~@7", AK: "ab1",
  AL: "bb2@5 ab2@4 ~@2 ab1@5, ab2 ~@7", AM: "c3@5 bb2@5 ~ bb1@5, b2 ~@15", AN: "[c2@3 ~@2 c2@24 ~@3]/2",
  AO: "[c2@37 ~@3]/5", AP: "[~@11 eb2 ~@9 eb2@2 ~@4 eb2@5, eb3@5 ~@3]/2", AQ: "[eb3@2 ~@3 eb3@15 ~ bb2@5 ~ eb3@5]/2",
  AR: "[~@11 eb2 ~@9 eb2@2 ~@4 eb2@4 ~, eb3@5 ~@3]/2", AS: "[eb3@3 ~@2 eb3@22 bb2@5]/2", AT: "[bb1@26 ~ f2@5]/2",
  AU: "bb2@11 f2@5", AV: "bb2@10 ~ f2@5", AW: "c3", AX: "f1, f2 ~", AY: "[bb1@26 ~ db2@5]/2",
})).s("gm_electric_bass_finger").gain(0.42)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note("<~@18 A B@2 ~ C@3 ~@59 D@2 E@3 F@4 G@4 ~ A B@2 ~ C@3 ~@63>".pickRestart({
  A: "~@11 bb3@5, g4, ~@5 eb4@10 ~", B: "[~@11 bb3@21, ab4, ~@5 eb4@27]/2",
  C: "[~@9 bb3@6 ~, g4@16 bb4@29 ~@3, ~@5 eb4@11 ~@5 eb4@24 ~@3, ~@11 bb3@10 ~@27]/3",
  D: "[bb4@5 ~@6 bb4@20 ~, f5, ~@5 d5@25 ~@2]/2", E: "[~@5 bb4@5 ~@6 f4@5 g4@26 ~, g4@11 c5@36 ~]/3",
  F: "[~@27 c4@4 ~ d4@2 ~ d4@25 ~@4, ~@5 c4@19 ~@40, ~@11 eb4@17 ~@4 f4@28 ~@4, ~ g4 ~@2, ~@21 bb4@38 ~@5]/4",
  G: "[~@5 bb3@5 ~@11 g4@8 ~@3 eb4@3 ~@2 bb3@6 ~@5 bb3@5 g3@6 bb3@2 ~@3, ~@11 c4@24 ~@29, ~@16 eb4@13 ~@8 eb4@4 ~@2 d4@12 ~@9]/4",
})).s("gm_acoustic_guitar_steel").gain(0.42).pan(0.8)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  ~@35 A@4 B@3 C D@2 E@2 F@2 G@6 H@3 I J@4 K@2 L@4 ~@36 M@2 N O@3 P@3 Q A@4 R@3 S T@2 E@2 U@2 V W X@2 Y@2 H@3 I J@4 K@2
  Z@2 AA@2 ~@19
>`.pickRestart({
  A: "[[f3,c4]@32 [e3,a3]@31 ~]/4", B: "[[d3,a3]@2 [bb2,f3]]/3", C: "[c3,g3]",
  D: "[[c3,f3]@21 [g2,g3]@5 ~ [ab2,ab3]@5]/2", E: "[[a2,a3]@31 ~]/2", F: "[[bb2,bb3]@21 a3@6 g3@5]/2",
  G: "[gb3@10 ~ eb4@10 ~@11 [g2,g3]@63 ~, ~@21 d4@44 ~@31, ~@32 d3 ~@63]/6", // G
  H: "[[bb2,f3]@27 ~@5 f3@16, ~@27 db3@10 ~@11]/3", I: "ab3", J: "[[f2,c3] g2]/4", K: "ab2/2",
  L: "[bb2@32 c3@3 ~@2 [c3,g3]@24 ~@3, ~@32 g3 ~@31]/4", M: "[[eb3,eb4] [d3,f3], bb3]/2", N: "[c3,eb3,c4]",
  O: "[[f2,c4] [bb2,bb3,d4]@2, f3]/3", P: "[f3,bb3]", Q: "[c3,g3,c4]",
  R: "[~@27 d5@3 a4@2 d5@10 ~ d5@3 a4@2, [d3,a3]@2 [bb2,f3]]/3", S: "d5@5 c5@2 a4@2 g4@3 f4@2 d4@2, [c3,g3]",
  T: "[[c3,f3,c4]@21 [g2,g3]@5 ~ [ab2,ab3]@5]/2", U: "[[bb2,bb3]@21 a3@6 ~ d4@2 db4@2, ~@27 eb4@2 ~@3]/2",
  V: "d4@5 ~ d4 db4, ~@11 eb4@2 ~@3", W: "d4@5 g4@5 ~ a4@5, ~@5 d4 ~@10", X: "[[g2,g3], bb4@23 ~@9, d3 ~@31]/2",
  Y: "[[g2,d3,g3]@31 ~]/2", Z: "bb2/2", AA: "[c3@3 ~@2 [c3,g3]@24 ~@3, g3 ~@31]/2",
})).s("gm_overdriven_guitar").gain(0.34).pan(0.3)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A B@2 ~ C D@2 E@2 F G H I@2 ~@2 J K@2 ~ L@3 ~ M N O P Q R@2 ~@4 S@2 T@2 U@2 ~ V W@2 X@2 Y ~@3 Z@2 AA AB AC@2 AD AE AD
  AF AD AF AG AF AG AH@3 AI@7 ~@4 A B@2 ~ C D@2 E@2 F G H AJ@3 ~ J K@2 ~ AK@3 ~ M N O P Q R@2 ~@4 S@2 T@2 U@2 ~ V W@2
  X@2 AL ~@3 Z@2 AA AB AC@2 AD AE AD AF AD AF AG AF AG AH@3 AI@7 ~@12
>`.pickRestart({
  A: "g3@5 bb3@5 ~ c4@5", B: "c4/2", C: "g3@6 bb3@5 c4@4 ~", D: "[~ c4@31]/2", E: "[~@15 g3@6 bb3@5 c4@5 ~]/2",
  F: "~ c4@15", G: "c4@3 ~ c4@2 ~@2 c4@4 ~ c4@2 ~", H: "~@11 g3@3 ~@2",
  I: "[~@10 bb3@5 c4@16 ~, d4@11 ~@21, ~@8 c4@5 ~@19]/2", J: "bb3@5 d4@5 ~ eb4@5", K: "[eb4@7 ~]/2",
  L: "[bb3@5 d4@5 ~ eb4@35 ~@2]/3", M: "bb3@5 d4@5 eb4@5 ~", N: "~ eb4@10 f4@5", O: "~ f4@10 g4@5", P: "~ g4@14 ~",
  Q: "a4@10 bb4@5 ~", R: "[bb4@7 g4@2 f4@21 ~@2]/2", S: "[f5@21 e5@5 ~ f5@5]/2", T: "[~ e5@10 c5@15 a4@6]/2",
  U: "[d5@10 a4@21 ~]/2", V: "~@11 c5@5", W: "[f5@20 ~ g5@5 ~ a5@5]/2", X: "[c6@9 a5@17 ~@3 e5@3, ~@13 d5@3]/2",
  Y: "~ d5@7", Z: "[~ d5@14 c5@11 d5@6]/2", AA: "c5", AB: "bb4@7 ~", AC: "[bb5@15 a5@12 bb5@5]/2", AD: "a5", AE: "g5",
  AF: "f5@11 bb5@5", AG: "~ ab5@15", AH: "[~ f5@36 eb5@6 c5@5]/3", AI: "[f5@103 ~@9]/7",
  AJ: "[d4@11 c4@2 bb3@2 c4@28 ~@5]/3", AK: "[bb3@5 d4@5 ~ eb4@36 ~]/3", AL: "d5",
})).s("gm_string_ensemble_1").gain(0.36).pan(0.2)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar = note("<~@129 [gb3@5 ~@3] ~@38>").s("gm_distortion_guitar").gain(0.29).pan(0.9)

// drums · kick
const kick = s("bd").struct(`<
  ~@25 A@5 ~ B@3 ~ A C A C A C D C A C A C A E D F A C A E A C A ~ A C A C A C A E G ~@29 A C A ~ A C A H D I J A@2 ~
  B@3 ~ A C A C A C D C A C A C A E D F A C A E A C A ~ A C A C A C A E G ~@20
>`.pickRestart({
  A: "x", B: "~@9 x ~@4 x ~", C: "~@11 x ~@4", D: "x ~@10 x ~@4", E: "~@5 x ~@5 x ~@4", F: "~@5 x ~@10",
  G: "x ~@4 x ~@10", H: "~@7 x", I: "~@3 x", J: "x ~@10 x!2 ~@3",
})).gain(0.54)

// drums · snare
const snare = s("sd").struct(`<
  ~@31 A@4 ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A B ~@30 A ~ A ~ A ~ C ~ A ~ A ~ D A@4 ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A B ~@20
>`.pickRestart({
  A: "x", B: "x ~@4 x ~@10", C: "x ~@8 x ~@6", D: "x ~@2 x ~@12",
})).gain(0.54)

// drums · hihat
const hihat = s("hh").struct("<~@82 A B C D E B C F D ~ G A D B ~@72>".pickRestart({
  A: "~@9 x ~ x ~@4", B: "x ~@4 x ~@10", C: "x ~@10 x ~@4", D: "x", E: "x ~@4 x ~@5 x ~@4", F: "x ~@4 x ~@3 x ~ x ~@4",
  G: "x ~@8 x ~@6",
})).gain(0.24)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@82 A ~@7 B C ~ D E ~@73>".pickRestart({
  A: "~@5 x ~@10", B: "~@11 x ~@4", C: "x ~@4 x ~@10", D: "x", E: "~@5 x ~@5 x ~@4",
})).gain(0.18)

// drums · low tom
const low_tom = s("lt").struct("<~@28 A ~ B C@3 ~@20 A ~@11 D ~@39 A ~ A ~ E C@3 F ~@19 A ~@11 D ~@21>".pickRestart({
  A: "~@11 x ~@4", B: "~@3 x ~ x ~@3 x ~ x ~@2 x ~", C: "~@5 x ~@5 x ~@4", D: "~@5 x ~@10",
  E: "~@5 x ~@3 x ~ x ~@2 x ~", F: "~@11 x!2 ~@3",
})).gain(0.48)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@29 [~@11 x ~@2 x ~] x ~@78 [~@11 x ~@2 x ~] ~@58>").gain(0.24)

// drums · mid tom
const mid_tom = s("mt").struct("<~@28 A ~@2 A@3 ~@32 B ~@39 C ~ A ~@2 A@3 D ~@31 B ~@21>".pickRestart({
  A: "~@5 x ~@10", B: "~@11 x ~@4", C: "~@7 x ~@8", D: "~@5 x ~ x ~@8",
})).gain(0.42)

// drums · high tom
const high_tom = s("ht").struct("<~@31 [~@3 x ~@12]!3 ~@77 [~@3 x ~@12]!3 ~@54>").gain(0.48)

// drums · crash
const crash = s("cr").struct(`<
  ~@25 A@5 ~@4 A@2 ~@5 A@3 ~@4 B A ~ A ~@3 A ~@3 A ~ A ~ A ~ A ~ C ~@29 A ~@7 A@5 ~@4 A@2 ~@5 A@3 ~@4 B A ~ A ~@3 A ~@3
  A ~ A ~ A ~ A ~ C ~@20
>`.pickRestart({
  A: "x", B: "~@5 x ~@5 x ~@4", C: "~@5 x ~@10",
})).gain(0.48)

// drums · ride
const ride = s("rd").struct(`<
  ~@35 A B@5 C@2 D E B@3 F C E A B E B C B@3 C B C B A B C ~@9 C ~@5 D ~@2 G ~@2 H E ~ C D ~ D F ~@3 E@3 I E@2 F ~@10 A
  B@5 C@2 D E B@3 F C E A B E B C B@3 C B C B A B C ~@22
>`.pickRestart({
  A: "~@11 x ~@4", B: "x ~@4 x ~@5 x ~@4", C: "~@5 x ~@5 x ~@4", D: "~@5 x ~@10", E: "x ~@10 x ~@4", F: "x",
  G: "x ~@4 x ~@8 x ~", H: "~@5 x ~ x ~@8", I: "x ~@4 x ~@10",
})).gain(0.36)

// drums · ride · soft notes
const ride_soft = s("rd").struct(`<
  ~@43 A B ~@5 B@2 ~ B ~@9 B ~@15 C ~@3 B ~@14 B@3 A B@2 ~@19 A B ~@5 B@2 ~ B ~@9 B ~@24
>`.pickRestart({
  A: "~@11 x ~@4", B: "~@5 x ~@10", C: "x ~@4 x ~@10",
})).gain(0.24)

// drums · tambourine
const tambourine = s("tb").struct("<~@46 x ~@79 x ~@41>").gain(0.42)

stack(
  piano, bass, acoustic_guitar_steel, overdriven_guitar, string_ensemble_1, distortion_guitar, kick, snare, hihat,
  hihat_soft, low_tom, low_tom_soft, mid_tom, high_tom, crash, ride, ride_soft, tambourine
)

More by Queen