Strudelify
Radio Ga Ga cover art

The Works

Radio Ga Ga

Queen

KeyF majorTempo110 bpm
0:00/0:00
// Radio Ga Ga — Queen
// 110 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 169 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(110/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(`<
  ~@8 A@2 B C D@2 E F@2 G H I@2 J@2 K L M N@2 O@2 P Q R S@2 T U V W X Y C Z@2 T AA AB AC Y AD AE AF AG AH AI@2 AJ@2 AK
  AL AM AN AO AP AQ AR AS AT AI AU AV@2 AW AX AY AZ T U V W X Y C Z@2 T AA AB AC Y AD AE AF AG BA AI@2 AJ@2 ~@6 BB BC BD
  AM AN BE BF BG BH BI@2 ~@9 BJ@2 BK BL BM BN BO Z@2 BP ~ BQ BR BM ~ BS BT BU@2 AO BV BW ~ BX BY BZ CA CB CC CD CE CF CG
  CH CI CJ@8 ~
>`.pickRestart({
  A: "[f1@31 ~]/2", B: "g1@3 ~", C: "g2@15 ~", D: "[bb1@20 ~@2 f2 ~ bb2@7 ~]/2", E: "g1@7 ~",
  F: "[bb1@5 ~ f1 ~ f1@13 ~ f1 ~ f1@7 ~]/2", G: "f1 ~ f1@2 ~ f1 ~ f1 f1@2 ~@4 c2 ~", H: "f2@6 c2@2 f1@5 c2 f2 [c2,db2]",
  I: "[g1 ~ g1@2 ~ d2 g2 d2 g2@23 ~]/2", J: "[bb1@2 bb1@2 ~ bb1@2 ~ bb1@24]/2", K: "g1@2 g1@2 ~ g1 ~ g1 g1@8",
  L: "bb1@5 ~ f1@2 f1@8", M: "f2", N: "[f1@28 ~ c2 f2 c2]/2", O: "[g1@6 d2@2 g2@20 ~ g2!2 d2]/2", P: "bb1@14 f2 ~",
  Q: "bb2@5 ~ bb2@8 ~@2", R: "g2@5 ~ d2@2 g1@5 d2 g2 d2", S: "[bb1@3 f1 f1@11 ~]/2", T: "f1@7 ~ f1@7 ~",
  U: "f1 f1@4 ~ f1@2 f1@5 ~ f1@2", V: "g1@5 ~ g1 ~ g1@7 ~", W: "g1 g1@4 ~ g1 ~ g1@5 ~ g1@2", X: "bb1@5 ~ f2@2 bb2@8",
  Y: "bb1", Z: "[bb1@5 ~ f1 ~ f1@23 ~]/2", AA: "f1 f1@4 ~ f1 ~ f1@5 ~ f2@2", AB: "ab2@15 ~", AC: "~ f2@2 ~@5",
  AD: "bb1@13 f2 bb2 f2", AE: "b1@5 ~ b1 ~ b1@7 ~", AF: "d2@7 ~ b1@7 ~", AG: "c2@13 ~ a2@2", AH: "a2@11 ~ c3@3 ~",
  AI: "c2@5 ~ c2 ~ c2@7 ~", AJ: "[bb1@5 ~ f1 ~ f1@19 ~ f1@3 ~]/2", AK: "eb2@15 ~", AL: "bb1@5 ~ f1 ~ f1@7 ~, ab1 ~@15",
  AM: "bb1@5 ~ f1 ~ f1@7 ~", AN: "bb1@5 ~ f1 ~ f1@3 ~ c2@4", AO: "c2@15 ~", AP: "bb1@6 f1 ~ f1@7 ~, ab1 ~@15",
  AQ: "bb1@5 ~ f1 ~ f1@5 ~ c2@2", AR: "eb2@13 ~ bb2@2", AS: "bb2@8 c3@7 ~", AT: "[d2,d3]", AU: "c2@5 ~ c2 ~ c2@8",
  AV: "[f1@3 ~]/2", AW: "f1 ~ f2 f1!2 f2 f1 ~ f1 ~ bb2 ~@3 c3 ~", AX: "f1 ~ f2 f1!2 ~ c3 f1 ~@8",
  AY: "f1 ~ f2 f1!2 f2 f1 ~ f1 ~ a2 ~@3 d3 ~", AZ: "f1 ~ f2 f1!2 f2 f1 ~ f1 ~ c3 ~@5", BA: "c3@11 ~ c3@3 ~",
  BB: "~@8 f2 ~ f2 c3 ~ c2 c3 c2", BC: "eb2!2 ~@2 eb2 ~@3 f2 ~ f2 c3 ~ c2 c3 c2", BD: "eb2!2 ~ eb3@13", BE: "eb2",
  BF: "bb2 c3", BG: "d2@7 ~ c2@8", BH: "c2 c3", BI: "f2/2", BJ: "f1@4 ~@2 f1 ~ f1@4 ~@4",
  BK: "g1 ~ g1@2 ~ g1 ~ g1 g1@4 ~@3 g1", BL: "g1@2 ~@6 g1 ~@2 g1 g1@2 ~ g1", BM: "bb1 ~ bb1@2 ~ bb1 ~ bb1 bb1@2 ~@6",
  BN: "~@12 bb1@3 ~", BO: "g1 ~ g1@2 ~ g1 ~ g1!2 ~@7", BP: "f1@4 ~@2 f1 ~ f1@3 ~@5",
  BQ: "ab1 ~ ab1 ~@2 ab1 ~ ab1 ab1@2 ~@6", BR: "~@8 ab2 f2 d2 c2 ab1@2 ~@2", BS: "b1 ~ b1 ~@2 b1 ~ b1 b1@2 ~@6",
  BT: "~@6 b2 c3 d3 e3 f3 e3 d3@3 ~", BU: "[c2@25 ~ c2 ~@2 c2 ~ c2]/2", BV: "c2@4 c3@4 c2@3 ~@3 c2 d2",
  BW: "bb1@5 ~ f1 ~ f1@8", BX: "f2 ~ f2 ~@2 f2 ~ d2 f2@5 ~ c2 ~", BY: "f1 ~ f1 ~@2 f1 ~ f1 f1@4 ~ f1!3",
  BZ: "ab1 ~ ab1@2 ~ ab1 ~ ab1 ab1@4 ~@4", CA: "ab2 f2 d2 c2 ab1 ~ ab1 c2 d2 f2 ab2 f2 d2 ~ c2 ab1",
  CB: "bb1 ~ bb1 ~@2 bb1 ~ f2 bb1@8", CC: "~@2 bb1 ~@2 bb1 ~ bb1 bb1@6 bb1!2", CD: "b1 ~ b1@2 ~ b1 ~ b1 b1@5 ~ b1 db2",
  CE: "d2 ~ d2@2 ~ d2 ~ d2 b1@5 ~ b1 g1", CF: "c2 ~ c2 ~@2 c2 ~ a1 c2@2 c3 ~ c2 c3 ~ c2",
  CG: "c2 ~ c3 ~ c2 c3 ~ c2 c2@2 c3!6", CH: "c2 ~ c2 ~@2 c2 ~ c2 c2@4 c3@4", CI: "~@2 c3 ~@2 c3 ~ c3 c3@5 ~ c2 b1",
  CJ: "[bb1@6 f1 ~ f1@120]/8",
})).s("gm_fretless_bass").gain(0.48).pan(0.3)

// chords · harpsichord · "HARPSICHRD"
const harpsichord = note(`<
  ~@8 A ~ B ~ C ~ D E ~ A F B G H ~ I J K A ~ L ~ M ~ N O ~ A F P Q C ~ R S T A ~ U ~ R ~ V ~ W X Y Z AA AB AC@2 AD AE
  AF AD AG AH AI AJ AK AL AM ~@5 A F P Q C ~ R S T A ~ U ~ R ~ V ~ W X Y Z AA AB ~@8 AN@2 AO AH AP AQ AR AS@2 ~@9 A ~ L
  ~ C ~ D AA ~ A ~ AT AU AV@2 AW@2 AX AY AZ BA AA BB BC ~ BD ~ M ~ BE ~ BF BG BH Z AA BI ~@7
>`.pickRestart({
  A: "[f4,a4,c5]", B: "[g4,bb4,d5]@15 ~", C: "[bb4,d5,f5]", D: "[bb4,d5,f5]@13 ~@3",
  E: "[f4,bb4,d5]@5 ~ [f4,a4,c5] ~ [f4,a4,c5]@8", F: "~@15 d5", G: "~ g5@11 ~@4, [g4,bb4,d5]@3 ~", H: "[bb4,d5,f5]@7 ~",
  I: "[bb4,d5,f5]@3 ~", J: "[f4,bb4,d5]@5 ~ [f4,a4,c5] ~ [f4,a4,c5]@6 ~@2", K: "[g4,bb4]@4 ~@2 [f4,a4] ~ [f4,a4]@4 ~@4",
  L: "[g4,bb4,d5]", M: "[bb4,d5,f5]@15 ~", N: "[bb4,d5,f5]@5 ~@3", O: "[f4,bb4,d5]@3 ~ [f4,a4,c5] ~ [f4,a4,c5]@9 ~",
  P: "[g4,bb4,d5]@13 ~@3", Q: "[g4,bb4,d5,g5] ~", R: "[bb4,d5,f5]@11 ~@5",
  S: "[f4,bb4,d5]@3 ~ [f4,a4,c5] ~ [f4,a4,c5]@7 ~@3", T: "[g4,bb4]@5 ~ [f4,a4] ~ [f4,a4]@4 ~@4",
  U: "[f4,ab4,c5,d5]@13 ~@3", V: "[b4,d5,f5]@15 ~", W: "[f4,a4,c5]@3 ~", X: "[a4,c5,f5]@3 ~",
  Y: "[g4,c5,f5]@3 ~, eb5 ~@15", Z: "[g4,c5,e5]@11 ~@5", AA: "[f4,bb4,d5]@5 ~ [f4,a4,c5] ~ [f4,a4,c5]@7 ~",
  AB: "[g4,bb4]@5 ~ [f4,a4] ~ [f4,a4]@6 ~@2", // Gm F
  AC: "[~@6 c5@2 ~@4 c5 a4 f4@2, ~@4 c5@8 ~@4 bb4@7 ~@9, ~@4 f5@5 ~ f5@6]/2", AD: "~@4 c5 a4 f4@2, bb4 ~, ~ f5@3",
  AE: "~@4 c5 a4 f4@2, bb4 ~, ~@4 f5@11 ~", AF: "~@3 c5, ~@4 c5@7 ~@5, ~ f5",
  AG: "bb4@4 ~ bb4@3 c5@2 a4@2 f4@3 ~, ~@4 f5@11 ~", AH: "[bb4,eb5,g5]@7 ~", AI: "[bb4,d5,f5]@3 ~ [g4,c5,e5]@3 ~",
  AJ: "[a4,d5,f5]@7 ~", AK: "[a4,c5,f5]@5 ~ [g4,c5,e5]@9 ~, ~@6 eb5 ~@9",
  AL: "[f4,c5,d5]@5 ~ [g4,c5,e5]@9 ~, ~@6 eb5 ~@9", AM: "[a4,c5,f5]",
  AN: "[~@6 c5@2 ~@4 c5 a4 f4@2, ~@4 c5@8 ~@4 bb4@7 ~@9, ~@8 f5@11 ~ f5@12]/2",
  AO: "~@8 c5@2 a4@2 f4@3 ~, bb4 ~, ~@4 f5@11 ~", AP: "[bb4,d5]@13 ~@3", AQ: "[a4,d5,f5]@7 ~ [g4,c5,e5]@8",
  AR: "[f4,c5,d5]@8 [g4,c5,e5]@7 ~, ~@8 eb5 ~@7", AS: "[[a4,c5,f5]@15 ~]/2", AT: "[f4,ab4,d5]@7 ~",
  AU: "[f4,ab4,c5]@3 ~", AV: "[[bb4,d5,f5]@13 ~@3]/2", AW: "[[b4,d5,f5]@23 ~@9]/2", AX: "[f4,a4,c5]@13 ~@3",
  AY: "[a4,c5,f5]@5 ~@3", AZ: "[g4,c5,f5]", BA: "[g4,c5,e5]@13 ~@3", BB: "[g4,bb4]@5 ~ [f4,a4] ~ [f4,a4]@7 ~",
  BC: "[f4,a4,c5]@15 ~", BD: "[f4,ab4,d5]@15 ~", BE: "[b4,d5,f5]", BF: "[f4,a4,c5]@7 ~", BG: "[a4,c5,f5]@13 ~@3",
  BH: "[c5,f5]@13 ~@3, g4@15 ~", BI: "[g4,bb4]@5 ~ [f4,a4] ~ [f4,a4]@5 ~@3",
})).s("gm_harpsichord").gain(0.35).pan(0.2)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  ~@8 A@2 B@2 C@2 D E@2 F@2 G@2 H@2 I J@2 K@2 L@2 M@2 I N@2 F@2 L@2 O@2 I P ~ F@2 Q@2 R@2 S@2 T@2 U@2 ~@2 V@4 W X@2 Y@2
  Z AA AB AC@2 ~@4 F@2 L@2 O@2 I P ~ F@2 Q@2 R@2 S@2 T@2 U@2 ~@10 AD@2 AE AF AG AH AI AJ@2 ~@9 AK@2 AL@2 AM@2 I AN@2
  AO@2 AP@2 AQ@4 AR@2 AS@2 AT@2 AU@4 AV@2 AW@2 AR@2 AX@2 ~@9
>`.pickRestart({
  A: "[f2,g3,a3,c4,f4]/2", B: "[g2,g3,bb3,d4,f4]/2", C: "[bb2,f3,bb3,d4,f4]/2", D: "[g2,g3,bb3,d4,f4]",
  E: "[[bb3,d4,f4]@6 [a3,c4,f4]@25 ~, [f2,f3]@31 ~]/2", F: "[[g3,a3,c4]@31 ~]/2", G: "[[g3,bb3,d4]@15 ~]/2",
  H: "[[bb3,d4,f4]@15 ~]/2", I: "[g3,bb3,d4]@15 ~", J: "[[bb3,d4]@6 [a3,c4]@13 ~@13, f3@19 ~@13, ~@6 bb3 ~@25]/2",
  K: "[[g3,a3,c4]@15 ~]/2", L: "[[g3,bb3,d4]@31 ~]/2", M: "[[bb3,d4,f4]@7 ~]/2",
  N: "[[bb3,d4]@6 [a3,c4]@25 ~, f3@31 ~]/2", O: "[[bb3,d4,f4]@31 ~]/2", P: "[bb3,d4]@3 [a3,c4]@5, f3",
  Q: "[[c4,f4], d4@15 ~, e4 ~@31]/2", R: "[[bb3,d4,f4]@29 ~@3]/2", S: "[[b3,d4,f4]@15 ~]/2",
  T: "[[c4,f4,a4]@31 ~, g4 ~@31]/2", U: "[f4 e4 d4 e4, [c4,g4]]/2",
  V: "[[eb3,c4]@8 [bb2,bb3,d4]@3 [f3,a3,c4]@5 [bb2,bb3,d4]@3 [f3,a3,c4]@5 [bb2,bb3,d4]@3 [f3,a3,c4]@5, f4@63 ~]/4", // Cm Bb F Bb F Bb F
  W: "[eb3,c4,f4]@7 ~", X: "[[bb2,bb3,d4]@6 [f3,a3,c4]@9 [bb2,bb3,d4]@7 [f3,c4]@10, f4, ~@11 a3@4 ~]/2",
  Y: "[[bb3,eb4,g4]@15 [bb3,d4,f4]@8 ~ [c4,e4]@8, ~@12 g3@3 ~]/2", Z: "[a3,d4,f4]", AA: "[a3,f4]@3 [g3,e4]@5, c4@15 ~",
  AB: "[f3,d4]@3 e4@5, c4@15 ~, ~@3 g3@4 ~", AC: "[[a3,c4,f4]@3 ~]/2",
  AD: "[[eb3,c4]@15 ~ [bb3,d4]@6 [f2,a3,c4]@10, f4, ~@15 d3@6 ~@11]/2", AE: "[bb2,bb3,d4]@6 [f2,a3,c4]@9 ~, f4@15 ~",
  AF: "[bb3,eb4,g4], gb4 ~@15", AG: "[bb3,d4,f4]@8 [g3,c4,e4]@7 ~", AH: "[a3,c4,f4] [g3,c4,e4], eb4 ~@15",
  AI: "[f3,c4,d4] [g3,c4,e4]", AJ: "[a3,c4,f4]/2", AK: "[g3,a3,c4]/2", AL: "[g3,bb3,d4]/2", AM: "[bb3,d4,f4]/2",
  AN: "[f3@3 [f3,a3,c4]@12 ~, [bb3,d4] ~@3]/2", AO: "[[g3,a3,c4,f4]@15 ~, f2]/2", AP: "[[ab2,c4,d4], f4@15 ~]/2",
  AQ: "[[bb2,d4,f4,bb4]@31 [d4,f4,b4]@32 ~, ~@31 b2@28 ~@5]/4", AR: "[a3,c4,f4,c5]/2",
  AS: "[f4 e4 d4 e4, [bb3,c4,g4]@31 ~]/2", AT: "[[bb3,d4] [a3,c4] [g3,bb3] [f3,a3], f4@31 ~]/2",
  AU: "[[g3,a3,c4]@31 ~ [c4,d4,f4]@32, ~@31 ab3@33]/4", AV: "[d4,f4,bb4]/2", AW: "[d4,f4,b4]/2",
  AX: "[f4@8 e4@8 d4@8 e4@7 ~, [bb3,c4,g4], ~@24 f4 ~@7]/2", // C7
})).s("gm_string_ensemble_2").gain(0.18).pan(0.3)

// other · piano · "A.PIANO 1"
const piano = note(`<
  ~@44 A B C D E D F G H ~@32 A B C D E D F G H ~@40 A B I D I J F G K ~@5 A B I D I D F L M N O P ~@9
>`.pickRestart({
  A: "~ [f5,f6]", B: "[g5,g6] [a5,a6]", C: "[d5,d6]@7 ~ [d5,d6]@6 ~@2", D: "[e5,e6] [f5,f6]",
  E: "[d5,d6]@3 ~ [d5,d6]@4", F: "[d5,d6] [e5,e6]", G: "[f5,f6] [g5,g6]", H: "[a5,a6] ~", I: "[d5,d6]@7 ~ [d5,d6]@8",
  J: "[e5,e6]@4 [f5,f6]@3 ~", K: "[a5,a6]@15 ~", L: "[f5,f6]@4 [g5,g6]@3 ~", M: "[a5,a6] [c6,c7]",
  N: "[a5,a6]@8 [g5,f6,a6]@7 ~", O: "[g5,g6]@7 ~ [g5,g6]@8", P: "[f5,f6]@8 [e5,e6]@7 ~",
})).s("gm_piano").gain(0.41).pan(0.9)

// bass · synth bass 1 · "SYN BASS 1"
const bass_2 = note(`<
  ~@2 A B C B D ~ E F G H I J K L M N O P Q R S K L E@2 F G H J@2 K L T U F V H J@2 K L E@2 F W X Y J Z@2 AA@3 AB AC AD
  ~@14 A AE AF AG U F V H J@2 K L E@2 F W X Y J Z@2 AA@3 AB AC AD ~@17 A AH@6 AI AJ@3 AK AL AM AN AK L AJ E F W X Y J
  Z@2 AA@3 AB AC AD E F W X Y J Z@2 AA@3 AB AC AD ~@7
>`.pickRestart({
  A: "f1 f2 f3 f1 f2 f3 f1 ~@9", B: "~@15 f1", C: "f2 f3 f1 f2 f3 f4 f1 ~@9", D: "f2 f3 f4 f1 f2 f3 f4 f1!2 ~@7",
  E: "f1!2 f2 f3 f1 f2 f3 ~ f1!2 f2 f1 f2 f1 f2 f3", F: "f1 f2 f3 f1!2 f2 f3 f1!2 f2 f3!2 f1 f2 f3 f1",
  G: "g1!3 g2 g3 g1 g2 g1!3 g2 g3 g1 g2 g3 g4", H: "g1!4 g2 g3 g1 g2 g3 g2!2 g3 g1 g2 g3 g2",
  I: "~ bb1!2 bb2 bb3 bb1 bb2 bb3 ~ bb2 bb3 bb1 bb2 bb3 bb4 bb1",
  J: "bb2 bb3 bb1!2 ~ bb1 bb2 bb3 bb2 bb3 bb1!2 ~ bb1 bb2 bb3", K: "g1 g2 g3 g4 g2 g3 g1!2 g2 g1 g2 g3 g1 g2 g3 g2",
  L: "bb1 bb2 bb3 bb1 bb2 bb3 bb1 bb2 ~ f1 f2 f3 f1 f2 f3 f1", M: "f1 f2 f3 f1 f2 f1 f2 f3 f4 f1 f2 f3 f4 f1 f2 f3",
  N: "~@2 f1!2 f2 f1 f2 ~@3 f1!2 f2 f1 f2 f3", O: "~ f3 f1!2 f2 f1 f2!2 ~@2 f1!2 f2 f1 f2 f3",
  P: "~@2 g2 g1!2 g2 g3 ~@2 g1!2 g2 g3 g4 g1 ~", Q: "~@2 g1 g2 g3 g1 g2 g3 g1 g2 g3 g1 g2 g3 g1 g2",
  R: "~@2 bb1 bb2 bb1 bb2 bb3 bb1 bb2 bb3 bb1 ~@2 bb1 bb2 bb3",
  S: "~ bb1 bb2 bb3 bb1 bb2 bb3 bb1 bb2 bb3 bb1 bb2 bb3 bb1 bb2 bb3",
  T: "f2 f3 f1 f2 f3 f1 f2 f3 f4 f1 f2 f3 f4 f1 f2 f3", U: "f4 f1 f2 f3 f1 f2 f3 ~ f1!2 f2 f1 f2 f1 f2 f3",
  V: "~ g1!2 g2 g3 g1 g2 g3 ~@2 g1 g2 g3 g4 g2 g3", W: "ab1!2 ab2 ab3 ab1 ab2 ab3 ~ ab1!2 ab2 ab1 ab2 ab1 ab2 ab3",
  X: "ab1 ab2 ab3 ab1!2 ab2 ab3 ~ ab1 ab2 ab3!2 ab1 ab2 ab3 ab1",
  Y: "~ bb1!2 bb2 bb3 bb1 bb2 bb3 ~ bb1 bb2 bb3 bb1 bb2 bb3 bb4", Z: "~ b2 b3 b1 b2 b3 b1 b2 b1 b2 b3 b1 b2 b3 b1 b2",
  AA: "c3 c4 c2 c3 c4 c2 c3 c4 ~ c2 c3 c4 c2 c3 c4 c2", AB: "c2 c3 c4 c2 c3 c4 c2 c3 c4 c2 c3 c4 c2 c3 c4!2",
  AC: "bb1 bb2 bb3 bb1 bb2 bb3 bb1 bb2 f1 f2 f3 f1 f2 f3 f1 f2", AD: "~ f1!2 f2 f3 f1 f2 f3 f1 f2 f3 f1 f2 f3 f4 f2",
  AE: "f1 f2 f3 f1 f2 f3 f4 f1!2 ~@7", AF: "f1 f2 f3 f1 f2 f3 f2 ~@9",
  AG: "f1 f2 f3 f1 f2 f3 f1 f2 f3 f4 f1 f2 f3 f1 f2 f3", AH: "f2!16", AI: "f2!4 f1 f2 f3 f1 f2 f3 f1 f2 f3 f1 f2 f3",
  AJ: "f1 f2 f3 f1 f2 f3 f1 f2 f3 f1 f2 f3 f1 f2 f3 f1", AK: "g2 g3 g1 g2 g3 g1 g2 g3 g1 g2 g3 g1 g2 g3 g4 g1",
  AL: "g2 g3 g1 g2 g3 g1 g2 g3 g1 g2 g3 g1 g2 g3 g1 g2",
  AM: "~@2 bb1 bb2 bb3 bb1 bb2 bb3 bb1 bb2 bb3 bb2 bb3 bb4 bb1 bb2",
  AN: "bb3 bb4 g4 ~@3 bb2 bb3!2 bb1 bb2 bb3 bb1 bb2 bb3 bb1",
})).s("gm_synth_bass_1").gain(0.35)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note("<~@58 A B C D E F G@2 H@2 ~@39 A I J@2 K ~@57>".pickRestart({
  A: "~@3 c3, ~@4 c3@7 ~@5, ~ f3", B: "~@4 c3 a2 f2@2, bb2 ~, ~@4 f3@11 ~", C: "~@4 c3 a2 f2@2, bb2@7 ~@9, ~@4 f3@11 ~",
  D: "~@4 c3 a2 f2@2, bb2@7 ~@9, ~ f3@3", E: "~@3 c3, ~@4 c3@7 ~@5, ~@8 f3@7 ~", F: "~@4 c3 a2 f2@2, bb2 ~, ~@2 f3@5 ~",
  G: "[~@8 c3@2 a2@2 f2@3 ~ [eb4,g4]@5 ~@11, bb2 ~@3, ~@4 f3@8 ~@3 [eb3,bb3]@6 ~@11]/2", // Eb Eb5
  H: "[[bb2,f3,bb3,d4]@7 ~ e4@6 ~@2 f4@9 ~@7, ~@7 [c3,g3]@7 ~ [d3,a3]@11 ~@6, ~@16 e4 ~@15]/2", // Bb C5 D5
  I: "~@4 c3 a2 f2@2, bb2 ~, ~@4 f3@9 ~@3",
  J: "[~@8 c3@2 a2@2 f2@3 ~ [bb3,eb4,g4]@9 ~@7, bb2@8 ~@7 eb3@9 ~@8, ~ f3@3 ~@4]/2", K: "[f3,bb3,d4]@7 ~@9",
})).s("gm_electric_guitar_clean").gain(0.35).pan(0.9)

// chords · electric guitar clean · "CLEAN GTR" · soft notes
const electric_guitar_clean_2 = note("<~@66 A B ~@42 C@2 ~@57>".pickRestart({
  A: "~@4 c4@3 ~, ~@8 d4 ~@7", B: "d4@5 ~@3", C: "[~@15 bb2@8 ~@9]/2",
})).s("gm_electric_guitar_clean").gain(0.25).pan(0.9)

// chords · electric guitar muted · "MUTED GTR" · F5 C5 F
const electric_guitar_muted = note(`<
  ~@103
  [[c3,f3] ~ [c3,f3]!3 ~ [c3,f3] ~ [c3,f3] ~ [c3,f3]!2 [c3,g3] ~ [a2,c3,f3]!2]!4
  ~@62
>`).s("gm_electric_guitar_muted").gain(0.41).pan(0.3)

// other · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note("<~@133 A@2 B C D@3 E F G ~@4 B H@4 I@2 E J K L M N O@2 ~@7>".pickRestart({
  A: "[~@3 f4@5]/2", B: "~@3 f4", C: "c5", D: "[~@12 f4@27 ~ e5@7 ~]/3", E: "f5", F: "e5@8 d5@7 ~", G: "d5",
  H: "[c5@7 f4@8 f4]/4", I: "[d5@6 ~ e5]/2", J: "g5", K: "a5@15 ~", L: "a5@7 ~ g5@8", M: "bb5@15 ~", N: "c6@7 ~",
  O: "[f5@29 ~@3]/2",
})).s("gm_overdriven_guitar").gain(0.44).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B@2 A B A B A B A B A B A B A
  C@14 B A B A B A B A B A B A B@2 A B A B A B A B A B A B A@2 B A B A B A B A B A C@6 B A B A B A B A B@2 A B A B A B A
  B A B A B A B A B A B A B A B@2 A B A B A B A B A B A B A ~@7
>`.pickRestart({
  A: "x!2 ~@6 x ~@7", B: "x!2", C: "x ~@2 x!2 ~@3",
})).gain(0.32)

// drums · snare
const snare = s("sd").struct(`<
  [~@4 x!2 ~@6 x!2 ~@2]!58
  ~@14
  [~@4 x!2 ~@6 x!2 ~@2]!38
  ~@6
  [~@4 x!2 ~@6 x!2 ~@2]!46
  ~@7
>`).gain(0.32)

// drums · clap
const clap = s("cp").struct("<~@58 [~@6 x!2]!13 ~@28 [~ x ~ x]!8 ~@3 [~@6 x!2]!6 ~@53>").gain(0.48)

// drums · hihat
const hihat = s("hh").struct(`<
  A B A B A B A B C B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B C A B A B A B A B A B A B A C
  A@3 C A@4 C ~@4 B A B A B A B A B A B A B C A B A B A B A B A B A B A@12 C A ~@4 B A B A B A B A B A@2 B A C A C A B A
  B A B A B C B C B C B A B C A B A B A C A C A C A C A ~@7
>`.pickRestart({
  A: "x!16", B: "x!14 ~@2", C: "~ x!15",
})).gain(0.32)

// … 37 more lines

More by Queen