Strudelify
Bicycle Race cover art

Jazz

Bicycle Race

Queen

KeyB♭ majorTempo171 bpm
0:00/0:00
// Bicycle Race — Queen
// 171 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 17, 4/4 at bar 18, 3/4 at bar 45, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 128 bars on a 24-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): GUITAR1.
setcpm(171/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 · piano
const piano = note(`<
  ~@3 A B C@3 D@8 E F G H I J K L M N O P@8 Q@3 R S@5 ~ T@2 ~@2 U ~@2 V@2 ~@2 W@2 X@3 Y@6 Z AA@4 AB@3 AC ~@11 AD AE AF
  AG@8 AH@2 AI AJ@3 AK@2 AL AM@8 AN@3 AO@4 AP@6
>`.pickRestart({
  A: "~@4 ab3@2 ~ ab3, ~ [ab2,eb3], ~@3 c4", B: "bb3@2 ~ bb3 ~ d3 ~ d3, [bb2,f3] ~, ~ db4 [a3,d4,gb4]!2",
  C: "[~@3 d3@3 ~@6 b2@3 ~@3 b2@3 ~@4 b2@3 ~@3 b3@6 [ab2,ab3,c4,eb4]@3 [ab2,ab3,c4,eb4]@3 [ab3,c4,eb4]@6 ~@3 [ab3,c4]@3 [ab3,c4,ab4]@3 [ab3,c4,ab4]@3 ab3@3 ab3@3 c4@4 ab3, [a3,d4,gb4]@6 ~@6 b3@18 ~@13 ab2@18 ab2@11, ~@12 eb4@15 ~ eb4@9 ~@24 [c4,eb4]@6 ~@5, ~@12 gb4@12 ~ gb4@12 ~@12 ab4@6 ~@17]/3", // Ab D Cm
  D: "[~@2 bb3@3 bb3@3 ~@3 bb3@3 ~@13 ab4@12 ab3@3 ab3@3 ~@3 ab3@3 bb3@3 ~ bb3@3 ~@3 bb3@3 [eb3,ab3,c4]@6 [eb3,ab3,c4]@6 [eb3,ab3,c4]@3 [eb3,ab3,c4]@9 ~ ab3@3 ab3@3 ~@3 ab3@3 bb3@3 bb3@3 ~@4 bb3@3 ~@12 ab4@12 ab3@3 ~ ab3@3 ~@3 ab3@3 bb3@3 bb3@3 ~@3 bb3@3 ~@13 ab4@12 ~@4, ~@2 bb2@12 [ab2,ab3]@25 ab2@12 bb2@12 ~ ab2@25 ab2@12 bb2@12 ~ [ab2,ab3]@24 ab2@12 ~ bb2@12 [ab2,ab3]@25 ~@4, ~@2 eb4@6 db4@6 ~@6 eb4@19 [c4,eb4]@6 c4@6 eb4@6 ~ db4@6 ~@25 [c4,eb4]@6 c4@6 eb4@6 db4@6 ~@7 eb4@18 [c4,eb4]@6 ~ c4@6 eb4@6 db4@6 ~@7 eb4@19 ~@3]/8", // Ab Cm
  E: "~@3 [bb2,bb3,db4,f4] ~@4", F: "~@10 [bb2,bb3,db4,f4]@3 ~@11", G: "~@11 [bb2,bb3,db4,f4]@3 ~@10",
  H: "~@4 [gb3,bb3,db4,e4]!4", I: "[gb3,bb3,db4,e4]@3 ~ [gb3,bb3,db4,e4]@9 g2@3 ~@8",
  J: "~@5 [a2,a3]@9 [bb2,bb3]@3 ~@7", K: "~@5 [bb2,bb3,db4,f4] ~@2", L: "~@16 [bb2,bb3,db4,f4]@3 ~@5",
  M: "~@17 [bb2,bb3,db4,f4]@3 ~@4", N: "~@6 [gb2,gb3,bb3,db4,e4]!2",
  O: "[gb2,gb3,bb3,db4,e4]@3 [gb2,gb3,bb3,db4,e4]@3 ~ [gb2,gb3,bb3,db4,e4]@3 [gb2,gb3,bb3,db4,e4]@9 [g2,g3,bb3,db4,e4]@3 [g2,g3,bb3,db4,e4]@2", // Gb7 Gdim
  P: "[~ [g2,g3,bb3,db4,e4]@3 [g2,g3,bb3,db4,e4]@3 ~ [g2,g3,bb3,db4,e4]@3 [g2,g3,bb3,db4,e4]@9 [f2,f3]@3 [f2,f3]@3 [f2,f3]@3 [f2,f3]@3 [g2,g3]@3 [a2,a3]@9 [eb4,g4,bb4]@3 [eb4,g4,bb4]@3 [eb4,g4,bb4]@3 [eb4,g4,bb4]@3 g4@3 eb4@3 ~@6 [d4,gb4,bb4]@3 [d4,gb4,bb4]@3 [d4,gb4,bb4]@3 [d4,gb4,bb4]@3 gb4@3 d4@3 ~@6 [db4,f4,bb4]@3 [db4,f4,bb4]@3 [db4,f4,bb4]@3 [db4,f4,bb4]@3 bb4@6 f4@6 ab3@6 ~@3 ab3@3 bb3@6 ~@4 bb3@3 ~@3 d3@3 ~@3 d3@3 ~@3 d3@3 ~@6 b2@3 ~@3 b2@3 ~@4 b2@3 ~@3 b3@6 [ab2,ab3,c4,eb4]@2, ~@44 eb3@24 d3@24 db3@24 [ab2,eb3]@12 [bb2,f3]@12 ~@25 eb4@15 ~ eb4@9 ~@2, ~@122 c4@6 ~@7 db4@6 [a3,d4,gb4]@6 [a3,d4,gb4]@6 [a3,d4,gb4]@6 ~@6 b3@18 ~@9, ~@165 gb4@12 ~ gb4@12 ~@2]/8", // Gdim F G A Eb Daug Bbm Ab …
  Q: "[~ [ab2,ab3,c4,eb4]@3 [ab3,c4,eb4]@6 ~@3 [ab3,c4]@3 [ab3,c4,ab4]@3 [ab3,c4,ab4]@3 ab3@3 ab3@3 ~@4 ab3@3 bb3@3 bb3@3 ~@3 bb3@3 ~@13 ab4@12, ~@4 ab2@18 ab2@12 ~ bb2@12 [ab2,ab3]@25, ~@10 ab4@6 ~@6 [c4,eb4]@6 ~ c4@6 eb4@6 db4@6 ~@6 eb4@19]/3", // Ab Cm
  R: "ab3@3 ab3@3 ~@3 ab3@3 ~ bb3@3 bb3@3 ~@3 bb3@2, ab2@12 ~ bb2@11, [c4,eb4]@6 c4@6 ~ eb4@6 db4@5", // Cm
  S: "[~ [eb3,ab3,c4]@6 [eb3,ab3,c4]@6 [eb3,ab3,c4]@3 ~ [eb3,ab3,c4]@9 c4@6 ~@3 c4@3 db4@6 ~@4 db4@3 ~@12 ab4@12 ~ ab3@3 ab3@3 ~@3 ab3@3 bb3@3 bb3@3 ~@3 bb3@3 ~@20, ~ ab2@25 ab2@12 bb2@12 ~ [ab2,ab3]@25 ab2@12 bb2@12 ~@20, ~@32 ab3@6 ~@7 bb3@6 ~@6 eb4@19 [c4,eb4]@6 c4@6 eb4@6 db4@6 ~@20]/5", // Ab Cm
  T: "[~@23 [c3,c4]@3 [d3,d4]@10 ~@12]/2", U: "[f4,a4,c5]@3 ~ [g4,bb4,d5]@3 [f4,a4,c5]@13 ~@4",
  V: "[~@14 [c3,c4]@3 ~ [d3,d4]@10 ~@20]/2", W: "[~@10 [bb2,bb3,d4,f4]@19 ~ [a2,a3,db4,e4]@18]/2",
  X: "[~ [d3,a3,d4,f4]@19 [c4,e4]@7 [f4,a4]@3 ~@7 [e3,e4,bb4]@3 [d3,d4,a4]@13 c3@3 ~@4 [a2,a3,c4]@6 [d3,d4,f4]@3 ~@3]/3", // Dm C F Edim D5 Am Dm
  Y: "[~@4 c3@3 [bb2,bb4]@13 [c3,c5]@7 [g2,g3,b3,d4]@19 [g2,g3,b3,e4]@20 [g2,g3,b3,f4]@20 [g2,g3]@3 [g2,g3]@3 [g2,g3]@3 [g2,g3]@3 [a2,a3]@3 [b2,b3]@9 [f3,f4,a4,c5]@3 [f3,f4,a4,c5]@3 [f3,f4,a4,c5]@3 [f3,f4,a4,c5]@3 ~ [f3,a4]@3 [f3,f4]@3 f3@3 f3@3 [e3,e4,c5]@3 [e3,e4,c5]@3 [e3,e4,c5]@3]/6", // Bb C G Em G7 G A B …
  Z: "[e3,e4,c5]@3 [e3,a4]@3 [e3,e4]@3 e3@3 e3@3 [eb3,eb4,ab4,c5]@3 [eb3,eb4,ab4,c5]@3 ~ [eb3,eb4,ab4,c5]@2", // C A5 E Ab
  AA: "[~ [eb3,eb4,ab4,c5]@3 [eb3,eb4,ab4]@3 [eb3,eb4,ab4]@3 [eb3,eb4]@3 [eb3,db4]@3 ab3@3 ab3@3 ~@3 ab3@3 bb3@3 bb3@3 ~@3 bb3@3 ~ [d4,gb4,a4]@6 [d4,gb4,a4]@6 [d4,gb4,a4]@6 [d4,gb4,a4]@6 [b3,eb4,gb4]@6 [b3,gb4]@6 ~@7 b3@6 [g2,g3]@3 [g2,g3]@3, ~@16 ab2@12 bb2@12 ~ d3@25 ~@5 eb4@9 eb4@9 ~@7, ~@16 ab4@6 c4@6 ab4@6 db4@6 ~@25 b2@25 ~@6, ~@77 gb4@12 ~@7, ~@77 b3@6 ~@13]/4", // Ab Ab5 Eb Eb7 D B B5 G
  AB: "[[g2,g3]@3 [g2,g3]@3 [g2,g3]@4 [g2,g3]@4 [g2,g3]@4 [g2,g3]@4 [g2,g3]@5 [g2,g3]@5 [g2,g3]@5 [g2,g3]@5 [g2,g3]@5 [g2,g3]@6 [g2,g3]@6 [g2,g3]@13]/3", // G
  AC: "[c3,c4] ~@7", AD: "[a3,gb4,a4]!2 [d3,d4]!2 [a3,gb4,a4]!2 [d3,d4]!2",
  AE: "[e3,db4,e4]@3 [e3,db4,e4]@3 ~ [a2,a3]@3 [a2,a3]@3 [e3,db4,e4]@3 [e3,db4,e4]@3 [a2,a3]@3 [a2,a3]@2", // Dbm A Dbm A
  AF: "~ [a3,gb4,a4]@3 [a3,gb4,a4]@3 [d3,d4]@3 [d3,d4]@3 [a3,gb4,a4]@3 [a3,gb4,a4]@3 [d3,d4]@3 [d3,d4]@2", // D
  AG: "[~ [e3,e4]@3 [e3,e4]@3 [a2,gb3,a3,gb4]@3 [a2,gb3,a3,gb4]@3 ~ [g3,g4]@3 [g3,g4]@3 [a2,a3,a4]@3 [a2,a3,a4]@3 [a3,gb4,a4]@3 [a3,gb4,a4]@3 [d3,d4]@3 [d3,d4]@3 [a3,gb4,a4]@3 [a3,gb4,a4]@3 [d3,d4]@3 [d3,d4]@3 [b2,b3]@6 ~@3 eb4@3 [b2,b3]@6 ~@3 eb4@3 [e3,e4]@6 [b2,b3]@6 [e3,e4]@6 g4@3 ~ e4@3 gb2@2 ~ [gb3,gb4]@2 [gb3,gb4]@2 ~ gb2@2 ~ [gb3,gb4]@2 ~ [gb3,gb4]@2 ~ gb2@2 ~ [gb3,gb4]@2 ~ [gb3,gb4]@2 ~ gb2@2 ~ [gb3,gb4]@2 ~ gb2@2 ~ [gb3,gb4]@2 ~ gb2@2 ~ [gb3,gb4]@2 ~ [gb3,gb4]@2 ~ gb2@2 ~ [gb3,gb4]@2 ~ [gb3,gb4]@2 ~ gb2@2 ~ [gb3,gb4]@2 ~ [gb3,gb4]@2 ~ [gb2,db4]@3 [gb3,eb4,gb4]@3 [gb3,e4,gb4]@3 ~@19, ~@56 [gb3,gb4]@6 ~@6 [gb3,gb4]@6 ~@18 [b2,b3]@6 ~@48 ab3@9 bb3@9 ~@28]/8", // E D G A D B E B …
  AH: "~@2 [bb2,bb3,db4,f4]@3 ~@19", AI: "~ [bb2,bb3,db4,f4] ~@6",
  AJ: "[~ [gb3,bb3,db4,e4]!5 [gb3,bb3,db4,e4]@3 g2 ~@4 [a2,a3]@3 [bb2,bb3] ~@6]/3", AK: "~@4 [bb2,bb3,db4,f4]@3 ~@17",
  AL: "~@4 [bb3,db4,f4]@3 bb2@3 [bb3,db4,f4]@3 ~@11", // Bbm
  AM: "[~@5 [gb2,gb3,bb3,db4,e4]@3 [gb2,gb3,bb3,db4,e4]@3 [gb2,gb3,bb3,db4,e4]@3 [gb2,gb3,bb3,db4,e4]@3 [gb2,gb3,bb3,db4,e4]@3 [gb2,gb3,bb3,db4,e4]@9 [g2,g3,bb3,db4,e4]@3 [g2,g3,bb3,db4,e4]@3 [g2,g3,bb3,db4,e4]@3 [g2,g3,bb3,db4,e4]@3 [g2,g3,bb3,db4,e4]@3 [g2,g3,bb3,db4,e4]@9 [f2,f3]@3 [f2,f3]@3 [f2,f3]@3 [f2,f3]@3 [g2,g3]@3 [a2,a3]@9 [eb4,g4,bb4]@3 [eb4,g4,bb4]@3 [eb4,g4,bb4]@3 [eb4,g4,bb4]@3 g4@3 eb4@3 ~@6 [d4,gb4,bb4]@3 [d4,gb4,bb4]@3 [d4,gb4,bb4]@3 [d4,gb4,bb4]@3 gb4@3 d4@3 ~@6 [db4,f4,bb4]@3 [db4,f4,bb4]@3 [db4,f4,bb4]@3 [db4,f4,bb4]@3 bb4@6 f4@6 ab3@6 ~@3 ab3@3 bb3@6 ~@3 bb3@3 ~@3 d3@3 ~@3 d3@3 ~@3 d3@3 ~, ~@77 eb3@24 d3@24 db3@24 [ab2,eb3]@12 [bb2,f3]@12 ~@19, ~@155 c4@6 ~@6 db4@6 [a3,d4,gb4]@6 [a3,d4,gb4]@6 [a3,d4,gb4]@6 ~]/8", // Gb7 Gdim F G A Eb Daug Bbm …
  AN: "[~@5 b2@3 ~@3 b2@3 ~@3 b2@3 ~@3 b3@6 [ab2,ab3,c4,eb4]@3 [ab2,ab3,c4,eb4]@3 [ab3,c4,eb4]@6 ~@3 [ab3,c4]@3 [ab3,c4,ab4]@3 [ab3,c4,ab4]@3 ab3@3 ab3@3 ~@4 ab3@3 bb3@3 bb3@3, ~@5 b3@18 ~@12 ab2@18 ab2@12 ~ [bb2,eb4]@6, ~@5 eb4@15 eb4@9 ~@24 [c4,eb4]@6 ~ c4@6 ~@6, ~@5 gb4@12 gb4@12 ~@12 ab4@6 ~@25]/3", // Ab Eb5 Cm
  AO: "[~@3 bb3@3 ~@12 ab4@12 ab3@3 ab3@3 ~@3 ab3@3 ~ bb3@3 bb3@3 ~@3 bb3@3 [eb3,ab3,c4]@6 [eb3,ab3,c4]@6 [eb3,ab3,c4]@3 [eb3,ab3,c4]@9 c4@6 ~@3 c4@3 [bb2,db4]@5, db4@6 [ab2,ab3]@24 ab2@12 ~ bb2@12 ab2@24 ab2@12 ~@5, ~@12 eb4@18 [c4,eb4]@6 c4@6 ~ eb4@6 db4@6 ~@30 ab3@6 ~@5]/4", // Ab Bbm Ab Cm
  AP: "[~@5 db4@3 ~@12 ab4@12 ab3@3 ab3@3 ~@3 ab3@3 bb3@3 bb3@3 ~@3 bb3@3 ~@10 c4@3 [ab3,c4,eb4]@61 ~@14, ~ bb3@6 ~ [ab2,ab3]@24 ab2@12 bb2@12 ab2@73 ~@15, ~@7 eb4@9 [c4,eb4]@3 c4@3 eb4@3 db4@3 ab3@6 ~@38, ~@21 eb4@2 ~@25]/6", // Ab Cm
})).s("gm_piano").gain(0.29)

// chords · piano · soft notes
const piano_soft = note("<~@20 A ~@22 B@3 C@7 D@4 ~@45 E ~@25>".pickRestart({
  A: "~@13 [g3,bb3,db4,f4]@3 ~@8", // Gm7b5
  B: "[~@4 [g3,bb3,d4,f4]@7 [g3,bb3,d4,f4]@7 [g3,bb3,d4,f4]@6 [g3,bb3,d4,f4]@7 [g3,bb3,d4,f4]@7 [g3,bb3,d4,f4]@6 [g3,bb3,c4,e4]@7 [g3,bb3,c4,e4]@7 [g3,bb3,c4,e4]@6 [g3,bb3,c4,e4]@7 ~, ~@4 g2@40 c3@27 ~]/3", // Gm7 C7
  C: "[~@12 [a3,c4,f4]@7 [a3,c4,f4]@7 [a3,c4,f4]@6 [a3,c4,f4]@7 [a3,c4,f4]@7 [a3,c4,f4]@6 [bb3,d4,f4]@7 [bb3,d4,f4]@7 [bb3,d4,f4]@7 ~@19 [g3,bb3,d4,f4]@7 [g3,bb3,d4,f4]@7 [g3,bb3,d4,f4]@6 [g3,bb3,d4,f4]@7 [g3,bb3,d4,f4]@6 [g3,bb3,d4,f4]@7 [g3,bb3,c4,e4]@7 [g3,bb3,c4,e4]@6 [g3,bb3,c4,e4]@7 [g3,bb3,c4,e4]@7 ~@9, ~@6 f2@20 bb2@20 g2@20 c3@13 ~@5]/7", // F Bb Gm7 C7
  D: "[~@4 [a3,c4,f4]@6 [a3,c4,f4]@7 [a3,c4,f4]@6 [a3,c4,f4]@7 [a3,c4,f4]@6 [a3,c4,f4]@7 [bb3,d4,f4]@7 [bb3,d4,f4]@6 [bb3,d4,f4]@7 [bb3,d4,f4]@6 [bb3,d4,f4]@7 [bb3,d4,f4]@6 ~@14, ~@4 f2@39 bb2@39 ~@14]/4", // F Bb
  E: "~ [g3,bb3,db4,f4] ~@6", // Gm7b5
})).s("gm_piano").gain(0.18)

// bass · electric bass finger · "BASS"
const bass = note(`<
  ~@3 A B C D E@3 F G@2 H I J K L M N@2 O P Q R@2 S T@6 U V W@3 X Y Z AA@2 AB AC@4 AD@8 AE@2 AF@3 AG AH@2 AI AJ@2 AK AL
  AM@3 AN@3 AO ~@11 AP AQ AR AS@8 AT@4 AU@5 AV@4 AW AX AY@2 AZ BA@2 BB@2 BC@2 BD@6
>`.pickRestart({
  A: "~@5 ab3@6 ~ ab2@6 c3@3 ab2@3", B: "bb2@2 db3 bb2 d2!4", C: "d2@3 d2@3 ~@6 b1@3 b1@3 b1@3 ~ b1@2",
  D: "~ b1@3 b1@3 ~@6 ab1@3 ab1@3 ab1@3 ab1@2",
  E: "[~ ab1@3 ab1@3 ~@6 ab2@6 c3@3 ~ ab2@3 bb2@6 db3@3 bb2@3 ab2@6 eb3@6 ~ ab3@12 ab2@6 c3@3]/3",
  F: "ab2@3 bb2@6 ~ db3@3 bb2@3 ab2@3 c3@3 db3@2", G: "[~ eb3@3 ab3@12 ~ ab2@6 c3@3 ab2@3 bb2@6 db3@3 ~ bb2@3 c3@6]/2",
  H: "eb3 c3 ab3@4 ab2@2", I: "~ c3@3 ab2@3 bb2@6 db3@3 bb2@3 c3@5", J: "~@2 eb3@3 ~@3 ab3@11 ~@5", K: "~@3 bb1 ~@4",
  L: "bb2@9 ~ bb1@3 ~@11", M: "~ bb1@3 ~@7 bb1@2 ~@4 bb1@2 ~@5", N: "[~@3 bb2@3 ~@6 gb1@25 g1@3 ~@8]/2",
  O: "~@5 a1@9 bb1@3 ~@7", P: "~@2 bb1@13 bb1@3 ~@6", Q: "~@7 bb2@9 bb1@3 ~@5",
  R: "[~@17 bb1@3 ~@3 bb2@2 ~@8 bb2@6 ~@3 gb1@6]/2", S: "~@19 g1@5",
  T: "[~@11 f2@9 f1@3 f1@3 f1@3 f1@3 g1@3 a1@9 eb2@3 eb2@3 eb2@3 eb2@3 eb2@3 eb2@3 ~@6 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 ~@6 db2@3 db2@3 db2@3 db2@3 db2@3 db2@3 ~@6 ab2@6 c3@3 ab2@3 bb2@6 ~ db3@3 bb2@3 d2@3]/6",
  U: "d2!5 ~@2 b1", V: "b1@3 b1@3 b1@3 ~ b1@3 b1@3 ~@6 ab1@2",
  W: "[~ ab1@3 ab1@3 ab1@3 ab1@3 ab1@3 ab1@3 ab1@3 ab2@6 ~ c3@3 ab2@3 bb2@6 db3@3 bb2@3 ab2@6 eb3@6 ~ ab3@12]/3",
  X: "ab2@6 c3@3 ab2@3 ~ bb2@6 db3@3 bb2@2", Y: "~ ab2@6 eb3@6 ab3@11",
  Z: "~@2 c3@3 c3@3 ab2@3 c3@3 db3@3 db3@3 ~ bb2@3",
  AA: "[db3@3 ab2@3 c3@3 db3@3 eb3@3 ab3@12 ~ ab2@6 c3@3 ab2@3 bb2@6 db3@2]/2", AB: "~ bb2@3 g1@20",
  AC: "[g2@20 c2@30 d2@10 f1@20 f2@3 ~@7 eb2@3 ~ d2@2]/4",
  AD: "[~ c2@3 bb1@30 bb1@3 ~ bb1@6 g1@17 d2@3 g1@10 d2@3 g2@7 c2@30 d2@10 f2@26 ~@3 eb2@3 d2@7 bb1@20 bb1@3 ~@6]/8",
  AE: "[~ f2@3 bb2@6 bb1@19 ~ a1@18]/2", AF: "[~ d2@19 c2@7 f2@3 ~@7 e2@3 d2@13 c2@3 ~@4 a2@6 d3@3 ~@3]/3",
  AG: "~@4 c2@3 bb1@13 c2@3 ~", AH: "[~@3 g1@6 g1@3 ~ g1@3 g1@3 g1@3 g1@7 g1@3 g1@3 ~ g1@3 g1@3 g1@6]/2",
  AI: "~ g1@3 g1@3 g1@3 g1@3 ~ g1@3 ~@7", AJ: "[~@14 f2@3 f2@3 f2@3 f2@3 ~ f2@3 f2@3 ~@6 e2@3 e2@3 e2@3]/2",
  AK: "e2@3 e2@3 e2@3 ~@6 eb2@3 eb2@3 ~ eb2@2", AL: "~ eb2@3 eb2@3 eb2@3 ~@6 ab2@6 c3@2",
  AM: "[~ ab2@3 bb2@6 db3@3 bb2@3 ~ d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 ~@6 b1@3 b1@3 b1@3 b1@3 b1@3 b1@3 ~@7 g1@3 g1@3]/3",
  AN: "[g1@3 g1@3 g1@4 g1@4 g1@4 g1@4 g1@5 g1@5 g1@5 g1@5 g1@5 g1@6 g1@6 g1@13]/3", AO: "c2 ~@7", AP: "d3 a2 d3 a2",
  AQ: "a1@3 a1@3 ~ a2@3 a1@3 a1@3 a2@3 a1@3 a2@2", AR: "~ d3@6 a2@6 d3@6 a2@5",
  AS: "[~ a2@3 b2@3 db3@3 d3@3 ~ d3@3 eb3@3 e3@3 db3@3 d3@6 a2@6 d3@6 a2@6 b2@6 gb2@6 b2@6 gb2@6 e2@6 b1@6 e2@6 b1@6 ~ gb1@8 ab1@9 bb1@9 db2@3 eb2@3 e2@6 gb1@9 ab1@7 ~@2 bb1@9 db2@3 eb2@3 e2@3 ~@12 bb2@7]/8",
  AT: "[~@2 bb1@3 ~@12 bb2@9 bb1@3 ~@12 bb2@9 ~ bb1@3 ~@12 bb2@9 gb1@3 ~@18]/4",
  AU: "[~@3 g1@3 ~@12 a1@9 bb1@3 ~@10 bb1@12 bb1@3 ~@12 bb2@9 bb1@3 ~@12 bb2@9 bb1@3 ~@17]/5",
  AV: "[~@5 gb2@24 g2@24 f1@3 f1@3 f1@3 f1@3 g1@3 a1@9 eb2@3 eb2@3 eb2@3 eb2@3 eb2@3 eb2@3 ~]/4",
  AW: "~@5 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 ~", AX: "~@5 db2@3 db2@3 db2@3 db2@3 db2@3 db2@3 ~",
  AY: "[~@5 ab2@6 c3@3 ab2@3 bb2@6 db3@3 bb2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 ~]/2",
  AZ: "~@5 b1@3 b1@3 b1@3 b1@3 b1@3 b1@3 ~",
  BA: "[~@5 ab1@3 ab1@3 ab1@3 ab1@3 ab1@3 ab1@3 ab1@3 ab1@3 ab2@6 ~ c3@3 ab2@3 bb2@6]/2",
  BB: "[db3@3 bb2@3 ab2@6 eb3@6 ab3@12 ab2@6 c3@3 ab2@3 ~ bb2@5]/2",
  BC: "[~ db3@3 bb2@3 ab2@6 eb3@6 ab3@12 ab2@6 c3@3 ab2@3 bb2@5]/2",
  BD: "[~ db3@3 ~ bb2@3 eb3@3 c3@3 db3@3 eb3@3 ab3@12 ab2@6 c3@3 ab2@3 bb2@6 db3@3 bb2@3 eb3@6 ~ ab1@6 ab1@61 ~@14]/6",
})).s("gm_electric_bass_finger").gain(0.53)

// other · distortion guitar · "GUITAR1"
const distortion_guitar = note("<~@85 A@2 B ~ C ~ D E F G@4 ~@30>".pickRestart({
  A: "a3/2", B: "d4 e4 gb4 g4 a4 b4 db5 d5", C: "~ d4@3 e4@3 gb4@3 g4@3 a4@3 b4@3 db5@3 d5@2",
  D: "~@2 d4@3 e4@3 gb4@3 g4@3 ~@10", E: "~@2 b3@3 db4@3 eb4@3 e4@3 ~@10", F: "~@2 eb3@3 e3@3 ~@6 eb4@3 e4@3 ~@4",
  G: "[~@3 gb5@71 ~@22]/4",
})).s("gm_distortion_guitar").gain(0.4).pan(0)

// other · distortion guitar · "GUITAR2"
const distortion_guitar_2 = note(`<
  ~@28 A@8 ~@7 B@3 C@7 D@5 E@3 F@3 G@5 H@6 I ~@9 J@3 K L M@4 N@4 ~@3 O@3 ~@3 P@8 Q@5 ~@8
>`.pickRestart({
  A: "[~@20 eb3@24 d3@24 db3@24 ab2@25 d3@24 b2@25 ab2@25 ~]/8", B: "[~ [g2,g3,bb3,d4,f4]@10 [c3,g3,bb3,c4,e4]@7]/3",
  C: "[~@2 d3@10 ~@34 a3@6 ~@30 bb2@3 ~ bb2@6 [g2,g3,bb3,d4,f4]@40 [c3,g3,bb3,c4,e4]@30 d3@6, ~@6 f2@20 bb2@15 ~@43, ~@8 f4@5 ~@5 [d4,f4]@5 ~@19, ~@39 c4@13 bb3@40 ~@76]/7", // Gm7 C7 Dm
  D: "[~@36 a3@7 ~@33 f3@6 [bb2,bb3,d4,f4]@19 ~ [a2,a3,db4,e4]@18, ~@4 f2@39 bb2@39 ~@38, ~@23 f4@20 ~@20 d4@19 ~@38, ~@30 c4@13 ~@13 bb3@13 bb3@13 ~@38]/5", // Bb A
  E: "[~ [d3,a3,d4,f4]@19 c3@7 f3@3 ~@7 e3@3 d3@13 c3@3 ~@4 a2@6 d3@3 ~@3]/3", // Dm
  F: "[~@4 c3@3 bb2@13 c3@7 g2@6 g2@3 ~ g2@3 g2@3 g2@3 g2@7 g2@3 g2@3 ~ g2@3 g2@3 g2@6]/3",
  G: "[~ g2@3 g2@3 g2@3 g2@3 ~ g2@3 g2@3 g2@3 g2@3 a2@3 b2@9 f2@25 e2@24 eb3@25 ~@8]/5",
  H: "[~@17 d3@24 b2@25 [g2,d3,g3]@78]/6", I: "c3 ~@7", J: "[~@4 a4@16 ~@3 e3]/3",
  K: "a3@3 b3@3 ~ db4@3 d4@3 e4@3 gb4@3 g4@3 a4@2", L: "~@11 e3",
  M: "[~ a3@3 b3@3 db4@3 d4@3 ~ e4@3 gb4@3 g4@3 a4@3 ~@12 d5@3 e5@3 gb5@3 g5@3 ~@12 b4@3 db5@3 eb5@3 e5@3 ~@6 bb3@3 b3@3 ~@6 eb5@3 ~]/4",
  N: "[e5@3 ~@23 bb4@47 ~@23, ~@11 e5@62 ~@23]/4", O: "[~ gb2!5 gb2@3 g2 ~@4 a2@3 bb2 ~@6]/3",
  P: "[~@5 gb2@24 g2@24 f2@3 f2@3 f2@3 f2@3 g2@3 a2@9 eb3@24 d3@24 db3@24 ab2@24 d3@19]/8",
  Q: "[~@5 b2@24 ab2@24 ab3@49 ~@18]/5",
})).s("gm_distortion_guitar").gain(0.4).pan(1)

// chords · distortion guitar · "GUITAR3"
const distortion_guitar_3 = note("<~@59 A@2 B ~@24 C@2 ~@6 D@4 ~@22 E F@3 ~@4>".pickRestart({
  A: "[~@10 [d3,f3,bb3]@2 ~ [e3,g3,c4]@2 ~ [f3,a3,d4]@13 [e3,g3,c4]@3 ~@16]/2", // Bb C Dm C
  B: "~ [d4,f4,a4]@2 ~ [e4,g4,c5]@2 ~ [f4,bb4,d5]@15 ~@2", C: "[e5@5 ~@3]/2",
  D: "[~@3 gb2@8 ab2@9 bb2@9 db3@3 eb3@3 e3@6 gb2@9 ab2@9 bb2@9 db3@3 eb3@3 e3@3 ~@19]/4",
  E: "~@7 ab3@2 ~ bb3@2 ~ c4@2 ~ db4@2 ~ eb4@2 ~ f4@2", F: "[~ g4@2 ~ ab4@52 ~@16]/3",
})).s("gm_distortion_guitar").gain(0.35).pan(0.3)

// chords · distortion guitar · "GUIATR4"
const distortion_guitar_4 = note("<~@59 A@2 B ~@24 C@2 ~@6 D@4 ~@30>".pickRestart({
  A: "[~@10 [d3,f3,bb3]@2 ~ [e3,g3,c4]@2 ~ [f3,a3,d4]@13 [e3,g3,c4]@3 ~@16]/2", // Bb C Dm C
  B: "~ [d4,f4,a4]@2 ~ [e4,g4,c5]@2 ~@2 [f4,bb4,d5]@15 ~", C: "[~@2 a5@3 ~@3]/2", D: "[~@20 d5@53 ~@23]/4",
})).s("gm_distortion_guitar").gain(0.35).pan(0.8)

// chords · glockenspiel · "BELL1"
const glockenspiel = note("<~@75 A B C D E F G H I@2 J K@2 L@4 ~@36>".pickRestart({
  A: "~@5 [gb6,bb6] ~ [gb6,bb6]", B: "~ [gb6,bb6] ~ [gb6,bb6] ~@4", C: "~@3 [gb6,bb6] ~ [gb6,bb6] ~@2",
  D: "~@3 [gb6,bb6] ~ [gb6,bb6] ~ [gb6,bb6]", E: "~@3 [gb6,bb6]@3 ~@5 [gb6,bb6]@3 ~ [gb6,bb6]@3 ~@6",
  F: "[eb6,g6]@3 ~@2 [gb6,bb6]@3 ~@6 [gb6,bb6]@3 ~@4 [gb6,bb6]@3", G: "~@4 [gb6,bb6] ~@2 [gb6,bb6]",
  H: "[eb6,g6]@3 ~@5 [a6,db7]@3 [gb6,bb6]@3 ~@10", // Eb A Gb
  I: "[[a6,db7]@3 ~@2 [gb6,bb6]@3 ~@9 [gb6,bb6]@3 ~@3 [gb6,bb6]@3 ~@3 [eb6,g6]@3 ~ [gb6,bb6]@2 [a6,db7]@3 [gb6,bb6]@3 ~@3 [gb6,bb6]@3 ~]/2", // A Gb Eb Gb A Gb
  J: "~@2 [a6,db7]@3 ~ [eb6,g6]@2 [a6,db7]@3 [gb6,bb6]@3 ~ [gb6,bb6]@3 ~@3 [eb6,ab6]@3", // A Eb A Gb Ab5
  K: "[~@3 [eb6,ab6]@3 [gb6,bb6]@3 [ab6,db7]@3 [gb6,bb6]@2 [ab6,db7]@3 ~ [gb6,bb6]@3 db7@3 [a6,db7]@3 ~@3 [a6,db7]@3 [gb6,bb6]@3 ~@2 [gb6,bb6]@3 ~@3 [eb6,ab6]@3 ~, ~@21 ab6@6 ~@2 [eb6,g6]@3 ~@16]/2", // Ab5 Gb Db5 Gb Db5 Gb A Gb …
  L: "[~@2 [eb6,ab6]@3 [gb6,bb6]@3 [ab6,db7]@3 [gb6,bb6]@2 [ab6,db7]@3 ~ [gb6,bb6]@3 [ab6,db7]@5 ~ gb6@5 ~@6 [f6,bb6]@6 ~@2 [eb6,gb6]@6 ~@7 [eb6,ab6]@5 [gb6,c7]@6 [f6,bb6]@6 ~@21, ~@25 [eb6,bb6]@6 ab6@5 gb6@6 ~ c7@6 ~@5 [gb6,c7]@6 ~@36, ~@34 [eb6,c7]@6 ~@11 [f6,bb6]@6 ~@39]/4", // Ab5 Gb Db5 Gb Db5 Gb Db5 Bb5 …
})).s("gm_glockenspiel").gain(0.25)

// chords · music box · "BELL2"
const music_box = note("<~@82 A B C@2 D E@2 F@3 ~@36>".pickRestart({
  A: "~ [ab6,db7] ~ [ab6,db7] ~@3 [gb6,bb6]", B: "[ab6,db7] ~ [ab6,db7] [gb6,bb6] [ab6,db7] ~ [gb6,bb6] ~",
  C: "[[ab6,db7]@3 ~@3 [gb6,bb6]@3 ~@3 [gb6,bb6]@3 [ab6,db7]@3 ~@3 [gb6,bb6]@2 [ab6,db7]@3 ~ [gb6,bb6]@3 ~@3 [e6,ab6]@3 [gb6,bb6]@3 [ab6,db7]@3 ~@3 [gb6,db7]@3, ~@11 [ab6,db7]@3 ~@34]/2", // Db5 Gb Db5 Gb Db5 Gb E Gb …
  D: "[e6,bb6]@2 [ab6,db7]@3 ~@4 [e6,bb6]@3 [gb6,bb6]@2 [ab6,db7]@3 [f6,bb6]@3 ~ [ab6,c7]@3, ~@8 [ab6,db7]@3 ~@13", // Edim Db5 Edim Gb Db5 Bb5 Ab Db5
  E: "[[gb6,bb6]@3 ~@3 [e6,ab6]@3 [gb6,bb6]@3 [ab6,db7]@3 ~@3 [gb6,db7]@3 [e6,bb6]@2 [ab6,db7]@3 ~@3 [ab6,db7]@2 [e6,bb6]@3 ~ [ab6,db7]@3 [f6,bb6]@3 ~@2 [ab6,c7]@3 ~@2, ~@34 [gb6,bb6]@3 ~@11]/2", // Gb E Gb Db5 Gb5 Edim Db5 Edim …
  F: "[~@2 gb6@5 ~@6 [f6,bb6]@6 ~@2 [eb6,gb6]@6 ~@7 [eb6,ab6]@5 [gb6,c7]@6 [f6,bb6]@6 ~@21, ~ [eb6,bb6]@6 ab6@5 gb6@6 ~ c7@6 ~@5 [gb6,c7]@6 ~@36, ~@10 [eb6,c7]@6 ~@11 [f6,bb6]@6 ~@39]/3", // Bb5 Ebm Ab5 Gbdim Bb5 Eb5 Gbdim Cm …
})).s("gm_music_box").gain(0.25).pan(0)

// chords · glockenspiel · "BELL3"
const glockenspiel_2 = note("<~@77 A@2 B@4 C@6 D@3 ~@36>".pickRestart({
  A: "[~@6 [eb6,ab6]@5 [gb6,db7]@6 ~@9 [eb6,ab6]@6 ~@16, ~@10 [eb6,ab6]@3 ~@11, ~@4 [gb6,db7] ~@3]/2", // Ab5 Gb5 Ab5 Gb5
  B: "[~@20 [eb6,ab6]@6 ~@10 [eb6,ab6]@6 ~@9 [f6,d7]@6 ~@3 b6@6 ~@3 [eb6,ab6,db7]@6 ~@3 [eb6,ab6]@5 [f6,db7]@6 ~ [eb6,ab6,b6]@6, ~@14 [eb6,ab6]@6 ~@10 [eb6,ab6]@6 ~@11 [eb6,ab6]@6 ~@6 eb6@6 ~@31, ~@17 db7@6 ~@12 [f6,db7]@6 ~@16 ab6@6 ~@33, ~@18 bb6@6 ~@9 bb6@6 ~@9 b6@6 ~@23 b6@6 ~@13]/4", // Ab5 Dm Dbsus2 Ab5 Db Abm Ab5 Db
  C: "[[f6,bb6]@5 ~ eb6@5 ~@33 [f6,c7]@6 ~ gb6@5 ~@6 [f6,bb6]@6 ~ [eb6,gb6]@6 ~@3 [gb6,c7]@5 ~@4 [gb6,c7]@6 bb6@3 ~@12 [f6,bb6]@6 ~@2 [eb6,gb6]@6 ~@3 [gb6,c7]@5 ~@4 [gb6,c7]@6 [f6,bb6]@4, ~@5 [ab6,db7]@6 [f6,bb6]@6 ~@4 f6@6 eb6@6 gb6@6 ~@3 ab6@6 ~@8 ab6@6 ~@6 c7@6 ~@24 gb6@6 ~@3 gb6@6 ~@9 [f6,bb6]@6 ~@16, ~@12 ab6@6 [g6,db7]@6 ~@5 [ab6,c7]@6 ~@3 eb6@6 ~@6 [eb6,bb6]@6 ~@3 [eb6,c7]@6 ~@18 [eb6,ab6]@6 ~@7 [eb6,bb6]@6 ~@3 [eb6,c7]@6 ~@19 [eb6,ab6]@6 ~@8, ~@15 eb6@6 ~@2 bb6@6 ~@7 bb6@6 ~@18 gb6@6 ~@9 [f6,bb6]@6 ~@12 f6@6 ~@3 ab6@6 ~@6 c7@6 ~@24]/6", // Bb5 F5 Bb5 Ebm Gbdim Bb5 Ebm Gbdim …
  D: "[~@2 gb6@5 ~@6 [f6,bb6]@6 ~@2 [eb6,gb6]@6 ~@7 [eb6,ab6]@5 [gb6,c7]@6 [f6,bb6]@6 ~@21, ~ [eb6,bb6]@6 ab6@5 gb6@6 ~ c7@6 ~@5 [gb6,c7]@6 ~@36, ~@10 [eb6,c7]@6 ~@11 [f6,bb6]@6 ~@39]/3", // Bb5 Ebm Ab5 Gbdim Bb5 Eb5 Gbdim Cm …
})).s("gm_glockenspiel").gain(0.25).pan(1)

// other · pad new age · "EFFECTS"
const pad_new_age = note("<~@103 A@2 ~@23>".pickRestart({
  A: "[~@8 bb4@9 ~@7]/2",
})).s("gm_pad_new_age").gain(0.4)

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A B C D E ~ F G H ~ I J K L ~ F ~@3 F H ~@3 M N@2 O P Q R S T ~ U@2 V ~ W ~ X W ~ Y ~ X W ~ Y Z ~ AA ~@5 AB W AC ~
  AD AE AF G AG AH AI ~@15 AJ AK AL AM AN@3 AO AP ~ V@3 AQ ~@3 W@2 AR ~@3 AS@3 AT AH@3 AQ ~ AR@3 ~ M ~@4
>`.pickRestart({
  A: "~@2 x!2", B: "x ~ x!2", C: "~ x ~@11 x ~@5 x ~@4", D: "~ x ~@22", E: "~ x ~@10", F: "~ x ~@6", G: "~ x ~@4",
  H: "~@5 x ~@18", I: "~@7 x ~@16", J: "~@2 x ~@2 x", K: "~@7 x", L: "~@11 x", M: "~@5 x", N: "~ x ~@2 x ~@5 x ~",
  O: "~ x ~@2 x ~@7", P: "~@8 x ~@6 x ~@5 x ~@2", Q: "~ x ~ x ~ x ~ x", R: "~@3 x ~@6 x ~@5 x ~@5 x ~",
  S: "~@2 x ~@2 x ~@2 x ~@3", T: "~@11 x ~@12", U: "~@13 x ~@10", V: "~@7 x ~@4", W: "~@2 x", X: "x", Y: "~ x ~",
  Z: "~@23 x", AA: "~@5 x ~@2", AB: "~@20 x!2 ~@2", AC: "~ x", AD: "~@7 x ~@2 x ~", AE: "~ x ~@3 x ~ x",
  AF: "~@3 x ~@11 x ~@6 x ~", AG: "~@4 x ~@5 x ~@6 x ~@5 x", AH: "~@5 x ~@5 x ~@5 x ~@5 x", AI: "~@5 x ~@6 x ~@11",
  AJ: "x!4", AK: "x ~@6 x ~@5 x ~@5 x ~@4", AL: "~ x ~@5 x ~@5 x ~@5 x ~@4", AM: "~ x ~@5 x ~@6 x ~@5 x ~@3",
  AN: "~ x ~@2 x ~@2 x ~@2 x ~", AO: "~@3 x ~@7 x ~@8 x ~@3", AP: "~@5 x ~@5 x ~@12", AQ: "~@3 x", AR: "~@19 x ~@4",
  AS: "~@5 x ~@5 x ~@5 x ~@6", AT: "~@17 x ~@5 x",
})).gain(0.53)

// drums · clap
const clap = s("cp").struct("<~@56 [~@17 x ~@2 x ~@2 x] [~@12 x ~@6 x ~@4] [~ x ~] ~@69>").gain(0.53)

// drums · low tom
const low_tom = s("lt").struct("<~@5 A B@2 ~@48 C D ~@13 E F G H ~@53>".pickRestart({
  A: "~@3 x ~@4", B: "~@5 x ~@6", C: "~@20 x ~@2 x", D: "~@5 x ~@2", E: "~@6 x!2",
  F: "x ~@2 x ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~", G: "~@3 x ~@4 x ~@4 x ~@4 x ~@4 x", H: "~@5 x ~@5 x ~@12",
})).gain(0.53)

// drums · hihat
const hihat = s("hh").struct(`<
// … 91 more lines

More by Queen