Strudelify
First Time cover art

100% Melodic Rock

First Time

Robin Beck

KeyC majorTempo98 bpm
0:00/0:00
// First Time — Robin Beck
// 98 bpm, 4/4, key C 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 14, 4/4 at bar 15, 2/4 at bar 23, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 81 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(98/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 · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~ A@2 B@2 C D E@2 F@2 G@2 H@8 I J@2 K@2 F@2 L@2 M@8 N@2 O@2 P@3 Q@7 R@8 S@3 T U V W X Y@3 A@2 B@2 Z@6
>`.pickRestart({
  A: "[~@6 c4 [c4,d4]@4 ~@3 c4 d4, a2@3 [f2,f4]@4 g2@9, e4@6 c4@11 ~@4 g4@11 ~ g4@15, ~@3 a3@10 ~@2 a3@5 ~@14 d4@8 ~@6, ~@35 c4 b3@12]/2", // Csus2 F
  B: "[~@6 c4 [c4,d4,g4]@4 ~@3 c4 d4, [a2,e4]@3 [f2,f4]@4 g2@9, ~@3 a3@11 ~ a3@6 ~@13 d4@10 ~@4, ~@6 c4@11 ~@16 g4@14 ~, ~@35 c4 b3@11 ~]/2", // Csus2 A5 F
  C: "[f3,a3,c4,e4]@3 [a3,c4,e4,g4]@3 [f3,a3,c4,e4]@2, f2", D: "~ g5, [g2,g3,a3,b3,d4], ~@3 g4@5, ~@11 d5@13",
  E: "[~@2 c4 a3@2 ~ c4 [d4,g4]@4 ~@3 g3@2, a2@9 [f2,f4]@12 ~@13 d4@13 ~, e4@6 ~@9 a3@5 ~ [g3,c4]@14 c4@12 ~, ~ a3@2 c4@3 ~@5 g4@5, ~@3 [g2,b3]]/2", // G5 F C5 G
  F: "[~@6 c4 [c4,d4,g4]@4 ~@3 c4 d4, [a2,e4]@3 [f2,f4]@4 g2@9, ~@3 a3@11 ~ a3@6 ~@14 c4@6 ~@7, ~@6 c4@11 ~@16 g4@14 ~, ~@36 b3@11 ~]/2", // Csus2 A5 F
  G: "[~@18 c4@3 [g2,c4]@13 ~@2 [g2,b3]@12, [a2,e4]@3 [f2,f4]@4 ~@9, ~@3 a3@11 ~ a3@6 ~@14 c4@13, ~@6 c4@11 ~@4 [d4,g4]@12 ~ g4@14]/2", // C5 G A5 F G5
  H: "[[c4,d4,g4]@6 [b3,d4,g4,b4]@6 c4@3 ~@3 a3@3 c4@6 ~@6 a3@3 d4@3 ~@3 b3@3 g4@5 ~@7 b3@3 c4@3 ~@3 a3@3 e4@8 ~@4 c4@3 f4@2 ~@4 d4@3 [c4,d4,g4,c5]@8 ~ [b3,d4,g4,b4]@6 e2@6 c3@3 [c4,f4,g4,a4,c5]@15 f#2@6 [d3,d5]@3 g2@5 ~ e2@2 ~ g2@3 [a2,a4]@5 ~ a2@2 ~ [g2,g4]@3 [f2,f4]@6 f3@2 ~ [e3,e4]@3 [d4,e4,f#4,a4,c5]@15, g2@12 [f3,e4]@9 e4@8 ~ e4@6 ~@3 d4@6 b4@15 ~@9 [g4,a4,c5]@15 ~@69 g4@8 ~@4 e4@9 ~@18, ~@12 [f2,a3]@7 ~@2 [f2,g4]@15 [f2,g3,g4]@9 f2@13 ~@2 [f2,e4,a4]@9 f2@13 ~@2 [d3,c4,a4]@8 ~ g2@13 ~@11 f2@13 ~@47 d3@13 ~@2, ~@15 c4@6 a3@11 ~@13 d4@6 g4@9 ~@3 c4@6 c4@11 ~@28 [d4,e4,g4,c5]@8 ~@16 [a3,d4,e4,f#4,a4]@9 ~@18 a4@6 ~@6 f4@5 ~@16, ~@27 c4@9 b3@6 ~@3 c4@9 d4@6 a3@6 ~@12 e4@5 ~@4 f4@6 ~@48 [d4,g4,a4,b4,d5]@12 [e4,c5,e5]@12 [c4,a4]@11 ~@16]/8", // Csus2 G Csus2 G F D A G …
  I: "c5@5 ~ g5@6, [g2,c4,d4,f4,g4,b4], ~@5 c5@7, ~@11 [d5,f5]@13", // G7 Dm
  J: "[~@2 c4 a3@2 ~ c4 [d4,g4]@4 ~@4 g4, a2@9 [f2,f4]@12 ~@13 d4@13 ~, e4@6 ~@9 a3@5 ~ [g3,c4]@14 c4@6 ~ c4@6, ~@3 a3@6 c4@9 ~@15 g4@11 ~@4, ~@3 [g2,b3]]/2", // G5 F C5 G
  K: "[~@6 c4@3 a3@6 ~@3 c4@3 g3@8 ~@4 g4@3 ~@6 g3@6, a2@9 [f2,f4]@12 g2@26 ~, e4@6 ~@9 a3@5 ~@10 g3@11 ~@7, ~@3 a3@6 c4@9 ~@3 [c4,d4,g4]@13 ~@2 g5@12, ~@13 g4@3]/2", // F Csus2
  L: "[~@18 c4@3 [g2,c4]@13 ~@11 g3@3, [a2,e4]@3 [f2,f4]@4 ~@5 [g2,b3]@4, ~@3 a3@11 ~ a3@6 ~@14 c4@13, ~@6 c4@11 ~@4 [d4,g4]@12 ~ g4@7 ~ g4@6]/2", // C5 A5 F G G5
  M: "[[c4,d4,g4]@6 [b3,d4,g4,b4]@6 c4@3 ~@3 a3@3 c4@6 ~@6 a3@3 d4@3 ~@3 b3@3 g4@5 ~@7 b3@3 c4@3 ~@3 a3@3 e4@8 ~@4 c4@3 f4@2 ~@4 d4@3 [c4,d4,g4,c5]@8 ~ [b3,d4,g4,b4]@6 e2@6 c3@3 f4@5 ~@7 c5@3 f#2@6 [d3,d5]@3 [g2,g4]@6 [e2,e4]@3 [g2,g4]@3 [a2,a4]@5 ~ a2@2 ~ [g2,g4]@3 [f2,f4]@6 f3@2 ~ [e3,e4]@3 [d4,e4,f#4,a4,c5]@15, g2@12 [f3,e4]@9 e4@8 ~ e4@6 ~@3 d4@6 d4@8 ~ d4@6 ~@3 c4@6 c4@11 ~@28 [d4,e4,g4,c5]@8 ~ c4@6 f4@9 ~@9 [d4,a4,b4,d5]@12 [e4,c5,e5]@12 [c4,a4]@11 ~@16, ~@12 [f2,a3]@7 ~@2 [f2,g4]@15 [f2,g3,g4]@9 [f2,b4]@14 ~ [f2,e4,a4]@9 f2@13 ~@2 [d3,c4,a4]@8 ~ g2@13 ~@11 f2@13 ~@47 d3@13 ~@2, ~@15 c4@6 a3@11 ~@19 g4@9 ~@9 [g4,a4,c5]@15 ~@33 [g4,a4]@15 ~@21 g4@8 ~@4 e4@9 ~@18, ~@27 c4@9 b3@6 ~@3 c4@11 ~@4 a3@6 ~@12 e4@5 ~@4 f4@6 ~@24 c5@9 c4@6 [a3,d4,e4,f#4,a4]@9 ~@18 a4@6 ~@6 f4@5 ~@16]/8", // Csus2 G Csus2 G D G E G …
  N: "[[g2,c4,d4,f4,g4,c5]@12 [a2,c4,e4,a4,c5]@8 ~ [f2,c4,f4,a4,c5]@11 ~ [c4,d4,c5]@11 ~ [b3,d4,g4,b4]@3, ~@11 [g2,g4]@4 ~]/2", // Gsus4 Am F Csus2 G
  O: "[g4@5 ~@4 a4@3 [c4,e4,a4,c5]@6 [c4,e4,a4,c5]@3 [b3,d4,b4]@6 [c4,e4,a4,c5]@3 [b3,d4,g4,b4]@6 [a2,e4,a4,c5]@2 ~@10, [g2,b3,d4,b4]@12 a2@23 ~@13, ~@6 g4@6 ~@9 g4@8 ~@19]/2", // Am Bm Am G Am G
  P: "[~@12 [c4,d4,g4,a4]@9 [d3,g4,a4,c5,d5,g5]@15 [e2,g3,c4,d4,g4]@9 d4@8 ~@4 a3@3 b3@5 ~@4 [g#2,g#3]@3, ~@12 d3@7 ~@26 [e2,g4,c5]@14 ~ [g#2,g#3]@8 ~@4, ~@54 d4@6 e4@11 ~, ~@11 b3]/3", // Csus2 Dsus4 C G# C G#
  Q: "[g#2@2 ~ e2@2 ~ [g#2,g#4]@3 [a2,e4,a4,c5]@3 ~@3 [g2,d4,g4,b4,c5]@3 ~@3 c4@8 ~ c4@3 c4@3 c4@2 ~@4 f4@3 d3@2 ~@10 g4@3 [a4,c5,d5,g5]@9 d3@2 ~@7 g4@3 a4@3 b3@3 b3@3 [e3,d4,e4]@3 b3@5 ~ [e3,b3]@2 ~ [e3,b3,d4,e4,a4]@3 [e2,b3,d4,e4,g#4]@27 ~@6 c4@3 a3@6 ~@3 c4@3 [d4,g4]@12 ~@2 c4, [b3,e4,g#4]@5 ~@16 [f2,f4,a4,c5]@15 [d3,d4,a4]@8 ~@4 d3@10 ~@2 d3@7 ~@5 d3@10 ~@2 [e2,d4,a4]@7 ~@2 [e2,e4]@10 ~@29 a2@9 [f2,f4]@12 ~@15, ~@12 f4@2 ~ [a4,c5,d5]@5 ~@3 [c5,d5,g5]@5 ~@27 g4, ~@39 c4@6 g4@9 f4@6 ~@9 a4@10 ~@56 a3@6 c4@9 ~@16 d4@2, ~@51 c4@9 ~@9 d4@6 c4@9 e4@5 ~@4 [d4,a4]@8 ~@31 e4@6 ~@9 a3@5 ~ [g3,c4]@14 ~]/7", // G# Am G Am7 E7 E5 Esus4 E7 …
  R: "[~@6 c4@3 d4@3 ~@6 c4@3 a3@6 ~@3 c4@3 [c4,d4,g4]@12 ~@3 b3@6 [b3,d4,g4]@6 a3@3 ~@3 c4@3 a3@5 ~ a3@3 c4@3 [g3,d4]@6 ~@3 d4@3 ~@3 [g2,b3]@6 [g2,b3,d4,g4]@6 a3@3 ~@3 c4@2 ~ a3@5 ~@4 c4@3 [c4,d4,g4]@12 ~@3 [g2,b3]@6 [g2,b3,d4,g4]@6 a3@3 ~@3 c4@3 a3@5 ~ a3@3 c4@3 [g3,d4]@6 ~@3 d4@3 ~ c4@2, [g2,b3]@12 a2@9 [f2,f4]@12 g2@26 ~ a2@9 f2@12 g2@9 ~@3 g2@2 ~@13 [a2,e4]@9 [f2,f4]@12 g2@9 ~@3 g2@2 ~@13 a2@9 f2@12 g2@9 ~@3 [g2,g4]@3, ~@12 e4@6 ~@9 a3@5 ~ g3@8 ~@5 d4@2 g5@12 ~@33 g4@9 ~@39 g4@9 ~@15 [f4,a4]@10 ~@17, ~@15 a3@6 c4@9 ~@15 g4@8 ~@10 a3@6 c4@8 ~@4 [c4,g4]@13 c4@7 ~@7 c4@5 ~@4 c4@8 ~@17 c4@7 ~@7 [c4,e4,a4]@7 ~@2 c4@8 ~@4 [c4,g4]@13 ~@2, ~@47 c4@7 ~@6 [c4,e4,a4]@7 ~@2 [f4,a4]@10 ~@8 g3@7 ~@17 a3@6 ~@6 a3@6 ~@30 a3@6 ~@18 g3@7 ~@2]/8", // Csus2 G G5 G Csus2 G G5 G …
  S: "[[g2,b3]@6 [g2,b3,d4,g4]@6 a3@3 ~@3 c4@2 ~ a3@5 ~@4 c4@3 [c4,d4,g4]@12 ~@3 [g2,b3]@6 [g2,b3,d4,g4]@6 [c4,d4,g4]@6 [b3,d4,g4,b4]@6, ~@12 [a2,e4]@9 [f2,f4]@12 g2@9 ~@3 g2@2 ~@13 g2@12, ~@12 c4@5 ~@4 c4@8 ~@16 g4@9 ~@18, ~@15 a3@6 ~@6 a3@6 ~@13 c4@7 ~@19]/3", // G Csus2 G Csus2 G A5 F
  T: "c4 ~ a3 c4@2 ~@2 a3, [f3,e4]@9 e4@8 ~ e4@6, [f2,a3]@7 ~@2 [f2,g4]@15, ~@3 c4@6 a3@11 ~@4, ~@5 c4@3", // Fmaj7 F Fsus2
  U: "d4@3 ~@3 b3@3 g4@5 ~@7 b3@3, [f2,g3,g4]@9 [f2,b4]@14 ~, b3@6 ~@3 c4@11 ~@4, ~@3 d4@6 d4@8 ~ d4@6, ~@5 g4@3", // Fsus2 Fdim
  V: "c4@3 ~@3 a3@3 e4@8 ~@4 c4@3, [f2,e4,a4]@9 f2@13 ~@2, a3@6 ~@3 c4@11 ~@4, ~ c4@2 [g4,a4,c5]@5, ~@18 e4@5 ~", // Fmaj7 Am7
  W: "f4@2 ~@4 d4@3 [c4,d4,g4,c5]@8 ~ [b3,d4,g4,b4]@6, [d3,c4,a4]@8 ~ g2@13 ~@2, ~ f4@2 ~@5", // Csus2 G D7
  X: "e2@6 c3@3 f4@5 ~@7 c5@3, [d4,e4,g4,c5]@8 ~ [g4,a4]@15, ~@9 f2@13 ~@2, ~@3 c5@3 c4@2, ~@3 c4@2 f4@3", // C Gsus2
  Y: "[f#2@6 [d3,d5]@3 [g2,g4]@6 [e2,e4]@3 [g2,g4]@3 [a2,a4]@5 ~ a2@2 ~ [g2,g4]@3 [f2,f4]@6 f3@2 ~ [e3,e4]@3 [d3,d4,e4,f#4,a4,c5]@14 ~ [g2,g5]@12, [a3,d4,e4,f#4,a4]@9 [d4,a4,b4,d5]@12 [e4,c5,e5]@12 [c4,a4]@11 ~@28, ~@21 g4@8 ~@4 e4@9 ~@30, ~@27 a4@6 ~@6 f4@5 ~@15 [a4,c5,d5]@13]/3", // D G E G A G F E …
  Z: "[~@18 c4@3 [c4,d4]@13 ~@10 g3@6 ~@41 a5@38 ~@15, [a2,e4]@9 [f2,f4]@12 g2@30 a2@16 e4@3 a4@3 b4@4 c#5@3 e5@3 b5@45 ~@16, ~@3 a3@11 ~ a3@6 ~@14 d4@2 b3@13 ~@4 e3@75 ~@15, ~@6 c4@11 ~@4 g4@12 ~ g4@17 ~@10 b3@68 ~@15, ~@36 c4@14 ~@7 a3@7 c#4@65 ~@15]/6", // Csus2 A5 F
})).s("gm_epiano2").gain(0.42)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@13 A B@2 C@5 D E@4 F@2 G@3 H I J@5 K@2 L@2 M N O P@2 Q R@8 S@2 T@2 S@2 U V W V X Y Z@3 AA@4 AB@2 ~@4
>`.pickRestart({
  A: "~@6 a2 ~@5 f1 ~@2 f1 ~@2 f1 ~@2 f1 ~@2", B: "f1 ~@2 f1 ~@2 f1 ~@2 f1@2 ~ f1 ~@2 f1 ~@2 f1 ~@2 f1 ~@2",
  C: "[f1 ~@2 f1 ~@2 f1 ~@2 f1@2 ~ d2@4 ~ b1 f1@3 g1@6 ~@3 g1@2 ~ f1@2 ~ e1@5 ~ c2@3 f1@8 ~@2 a1 ~ c2@2 ~ f#1@5 ~ d2@3 g1@5 ~ e1@2 ~ g1@2 ~ a1@5 ~ a1@2 ~ g1@2 ~ f1@5 ~ f2@2 ~ e2@2 ~ d2@14 ~, ~@27 f1 ~@32]/5",
  D: "g1@23 ~", E: "[a1@2 ~ f1@3 ~ g1@8 ~]/2", F: "[a1@2 ~ f1@3 ~ g1@3 ~ g1 g1@3 ~]/2",
  G: "[a1@6 ~@3 f1@9 ~@3 g1@9 ~@3 g1@3 g1@18 a2 ~@5 f1 ~@2 f1 ~@2 f1 ~@2 f1@2 ~]/3",
  H: "f1 ~@2 f1@2 ~ f1 ~@2 f1@2 ~ f1 ~@2 f1 ~@2 f1 ~@2 f1 ~@2",
  I: "f1 ~@2 f1 ~@2 f1 ~@2 f1@2 ~ f1 ~@2 f1 ~@2 f1 ~@2 f1@2 ~",
  J: "[f1 ~@2 f1@2 ~ f1 ~@2 f1@2 ~ d2@4 ~ b1 f1@3 g1@6 ~@3 g1@2 ~ f1@2 ~ e1@5 ~ c2@3 f1@8 ~@2 a1 ~ c2@2 ~ f#1@5 ~ d2@3 g1@5 ~ e1@2 ~ g1@2 ~ a1@5 ~ a1@2 ~ g1@2 ~ f1@5 ~ f2@2 ~ e2@2 ~ d2@14 ~, ~@27 f1 ~@32]/5",
  K: "[g1@11 ~ a1@6 ~@3 f1@9 ~@3 g1@9 ~@3 g1@2 ~]/2", L: "[g1@9 ~@3 a1@21 ~@3 a1 ~ f1 ~@9]/2",
  M: "~@12 d2@6 ~@3 d2@2 ~", N: "d2@9 ~@3 e1@6 ~@3 e1@2 ~", O: "e1@9 ~@3 g#1@6 ~@3 g#1@2 ~",
  P: "[e1@5 ~ g#1@2 ~ a1@3 ~@3 g1@3 ~@3 f1@9 ~@3 c2@3 d2@6 ~@3 d2@2 ~]/2", Q: "d2@6 ~@3 a1@2 ~ d2@6 ~@3 d2@2 ~",
  R: "[d2@6 ~@4 e2 ~ e1@5 ~ e1@3 e2@8 ~ e2@2 ~ e1@26 ~ a2@7 ~@2 f2@9 ~@3 g2@25 ~@2 a2@6 ~@3 f2@9 ~@3 g2@18 ~@3 a2 [g2,g#2] f#2 ~@3 a1@6 ~@3 f1@9 ~@3 g1@9 ~@3 g1@2 ~, ~@9 d2@2 ~@181]/8", // G#maj7
  S: "[g1@7 ~@2 g1@3 a1@6 ~@3 f1@9 ~@3 g1@9 ~@3 g1@2 ~]/2",
  T: "[g1@5 ~ g1@3 g#1@2 ~ a1@6 ~@3 f1@9 ~@3 g1@9 ~@3 g1@2 ~]/2",
  U: "g1@11 ~ g1@4 ~ [b1,c2,d2] [e2,a2] [g2,g#2] f#2 ~@3", V: "f1 ~@2 f1 ~@2 f1 ~@2 f1@2 ~ f1 ~@2 f1@2 ~ f1 ~@2 f1@2 ~",
  W: "f1 ~@2 f1 ~@2 f1 ~@2 f1 ~@2 f1 ~@2 f1 ~@2 f1 ~@2 f1@2 ~", X: "d2@4 ~ b1 f1@3 g1@6 ~@3 g1@2 ~ f1@2 ~",
  Y: "e1@5 ~ c2@3 f1@8 ~@2 a1 ~ c2@2 ~, ~@9 f1 ~@2",
  Z: "[f#1@5 ~ d2@3 g1@5 ~ e1@2 ~ g1@2 ~ a1@5 ~ a1@2 ~ g1@2 ~ f1@5 ~ f2@2 ~ e2@2 ~ d2@14 ~ g1@11 ~]/3",
  AA: "[a1@6 ~@3 f1@9 ~@3 g1@9 ~@3 g1@2 ~ g1@9 ~@3]/2", AB: "[a1@6 ~@3 f1@9 ~@3 g1@13 ~@3 g1@11]/2",
})).s("gm_electric_bass_finger").gain(0.48)

// bass · electric bass finger · "FINGERDBAS" · soft notes
const bass_soft = note("<~@13 A ~@2 B ~@13 A ~@2 B ~@7 C ~@12 D ~@7 E ~@3 F ~@14>".pickRestart({
  A: "~@7 [g2,g#2] [e2,f2] [d2,d#2] [a#1,c2,c#2] [g#1,a1] g1 ~@11", B: "~@15 c#2 c2 ~@7", C: "~@13 g#1 [f#1,g1] e1 ~@8",
  D: "~@8 f2 [d#2,e2] [c2,c#2,d2] [a#1,b1] ~@12", E: "~@16 a1 ~@3 f2 [d#2,e2] [c2,c#2,d2] [a#1,b1]",
  F: "~@3 c#2 c2 ~@19",
})).s("gm_electric_bass_finger").gain(0.24)

// other · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  ~@13 A ~@2 B@5 C ~@8 A ~@2 D@5 E@2 F@2 ~@2 G H@2 I J@3 ~@3 K@2 L@2 M@2 N@2 O ~@3 P Q R@3 ~@10
>`.pickRestart({
  A: "~@5 [a3,b3,c4,d4] [e4,f4,g4] [b3,c4,d4] [g3,a3] f3 ~@14", // D7 Em Bm Gsus2
  B: "[~@12 d3@4 [b2,c3] a2 f2@3 g2@9 g2@3 f2@3 e2@6 c3@3 f2@9 f2@2 a2 c3@3 f#2@5 d3@3 ~ g2@6 e2@3 g2@3 a2@6 a2@2 ~ g2@3 f2@6 f3@3 e3@3 d3@14 a2]/5", // Cmaj7
  C: "g2@23 ~, g#2 ~@23",
  D: "[~@12 d3@4 [b2,c3] a2 f2@3 g2@9 g2@3 f2@3 e2@6 c3@3 f2@9 f2@2 a2 c3@3 f#2@5 d3@3 ~ g2@6 e2@3 g2@3 a2@6 a2@2 ~ g2@3 f2@6 f3@3 e3@3 d3@13 [a2,a#2] g#2]/5", // Cmaj7 A#maj7
  E: "[g2@11 ~ a2@8 f2@12 ~ g2@12 g2@3, ~@20 f#2 ~@27]/2", F: "[g2@6 e2@3 g2@3 a2@24 a2 [g2,g#2] f2 ~@9]/2",
  G: "~@18 g#2@2 ~ g#2@2 ~", H: "[g#2@3 e2@3 g#2@3 a2@3 ~@3 g2@2 ~@4 f2@12 c3@3 d3@9 d3@3]/2", I: "d3@3 d3 d3@3 d3",
  J: "[d3@9 ~ e3@2 e2@48 ~@12, ~@9 d3@2 ~@61]/3", K: "[~@12 a2@7 ~@2 f2@10 ~@2 g2@12 g2@3]/2",
  L: "[g2@7 ~@2 g2@3 a2@6 ~@3 f2@9 ~@3 g2@12 g2 ~@2]/2", M: "[g2@5 ~ g2@2 ~ g2@3 a2@7 ~@2 f2@10 ~@2 g2@10 ~@2 g2@3]/2",
  N: "[g2@7 ~@2 g2@3 a2@6 ~@3 f2@9 ~@3 g2@9 ~@3 g2@2 ~]/2",
  O: "g2@9 g2@3 g2@5 [a3,b3,c4,d4] [e4,f4,g4] [b3,c4,d4] [g3,a3] f3 ~@2", P: "d3@4 [b2,c3] a2 f2@3 g2@9 g2@3 f2@3",
  Q: "e2@6 c3@3 f2@9 f2@2 a2 c3@3",
  R: "[f#2@5 d3@3 ~ g2@6 e2@3 g2@3 a2@6 a2@2 ~ g2@3 f2@6 f3@3 e3@3 d3@13 [a2,a#2] g#2 g2@12]/3", // A#maj7
})).s("gm_distortion_guitar").gain(0.56)

// other · distortion guitar · "DISTORTION" · soft notes
const distortion_guitar_soft = note("<~@13 A ~@6 B ~@9 A ~@7 C ~ D E ~@2 F ~@17 G ~@18>".pickRestart({
  A: "~@4 g3 ~@4 e3 [c3,d3] [a2,b2] ~@12", B: "~@23 a#2", C: "~@19 g2 ~@4", D: "~@5 f2 ~@18", E: "~@14 f#2 e2 ~@8",
  F: "~@12 g#2@2 ~ g#2@2 ~@7", G: "~@16 g3 ~@4 e3 [c3,d3] [a2,b2]",
})).s("gm_distortion_guitar").gain(0.24)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@13 A B@2 C ~@13 A B@2 C ~@8 D E F G ~@8 H ~ I J K ~ I J K B@3 ~@15
>`.pickRestart({
  A: "~@12 f2 ~@2 f2 ~@2 f2 ~@2 f2 ~@2", B: "f2 ~@2 f2 ~@2 f2 ~@2 f2 ~@2 f2 ~@2 f2 ~@2 f2 ~@2 f2 ~@2",
  C: "f2 ~@2 f2 ~@2 f2 ~@2 f2 ~@14", D: "~@12 d3 ~@2 d3 ~@2 d3 ~@2 d3@2 ~",
  E: "d3 ~@2 d3 ~@2 d3 ~@2 d3@3 e3 ~@2 e3 ~@2 e3 ~@2 e3@2 ~", F: "e3 ~@2 e3 ~@2 e3 ~@2 e3@3 g#2@3 g#2@3 g#2@3 g#2@3",
  G: "g#2@3 e2@3 g#2@2 ~@16", H: "~@3 c4 d4 e4 ~@18", I: "~@9 g2@2 ~@13", J: "~@7 g2", K: "~@6 g2@2 ~ g2@2 ~@13",
})).s("gm_electric_guitar_muted").gain(0.48)

// other · guitar harmonics · "GTHARMONIC"
const guitar_harmonics = note("<~@24 A@2 ~@11 B ~@9 C@2 ~@20 D@2 ~@10>".pickRestart({
  A: "[~@9 [c3,g3]@4 ~@5 b2@3 d3@22 ~@5]/2", B: "~@9 a3@13 ~@2", C: "[~ g3@2 ~]/2", D: "[~@21 d3@14 ~@13]/2",
})).s("gm_guitar_harmonics").gain(0.4)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar_2 = note(`<
  ~@2 A@4 B@3 C ~@11 D@2 E F@2 ~@12 G@4 H ~@4 I@2 J@3 K@2 L@2 M@3 N O P Q@2 ~@2 R S ~@6 T@3 ~@4
>`.pickRestart({
  A: "[~@9 e5@33 ~ c5@2 d5@15 b4@9 c5@12 a4@9 f#4@6, ~@21 d5 ~@26]/4",
  B: "[g4@12 d4@6 c4@3 d4@21 e4@3 d4@18 b3 ~ a3@3 ~@4]/3", C: "a3@7 ~", D: "[~@12 c5@29 ~@4 b4@3]/2", E: "g4 d4@7",
  F: "[~@3 b4@3 c5@3 [c5,g5]@4 ~@2 a4@3 b4@3 d5@22 ~@5]/2", // C5
  G: "[~@5 [a3,b3,c4,d4] [e4,f4,g4] [b3,c4,d4] a3 ~@3 a4@19 ~@2 a4@3 g4@3 d4@3 c4@3 b3@6 d4@3 g4@3 a4@3 d5@8 c5 d5@6 c5 ~@2 b4 c5 b4 g4@3 [a3,e4,a4]@6 [g3,g#3,d4,d#4,g4,g#4] [f3,f#3,c4,c#4,f4,f#4] [e3,b3,e4] [d3,d#3,a3,a#3,d4,d#4] ~@2, ~@33 g4 ~@62]/4", // D7 Em Bm A5 D#maj7 C#maj7 E5 D#maj7
  H: "[e3,a3] ~@23", I: "[~@3 c4@3 f4@3 g4@25 ~@14]/2", J: "[~@15 d6@21 c6@19 ~@4 b5@9 ~@4]/3",
  K: "[g5@4 ~@2 d5@12 f5 ~@2 c5@9 d5@2 ~ d5@15, ~@16 c5 ~@7]/2",
  L: "[~@3 c4 d4 e4 f4 g4 a4 b4 c5 d5@9 c5 d5@8 c#5 [b4,c5] [g4,g#4,a4,a#4] [e4,f4,f#4] [c#4,d4,d#4] [d#4,e4,f4,f#4,g4] [a4,a#4,b4,c5,c#5] d5 ~@3 e5@2 ~ d5 ~@2 c5 ~, ~@39 d5@2 ~ f5@2 ~ e5@2 ~]/2", // Cmaj7
  M: "[d5 ~ c5@8 b4@2 a4 b4 [b4,c5] a4@11 ~@2 b4@2 ~ e5@2 ~ e5 ~ a5@3 ~ g5@10 f#5 [b4,c5,d5,e5,f5] [e4,f4,g4,a4] e4 [a4,e5]@2 a5 b5 e5@2 c6 e5 ~ b5 e5 ~ a5 ~ b5 ~ c6@2, ~@30 c5@2 ~ a5@2 ~@4 a5@2 ~@31]/3", // Cmaj7 Bdim Fmaj7 A5
  N: "c6@12 c6@2 b5@2 g5@2 [c5,d5]@2 ~ c5 b4@2", O: "g4@8 a4 b4 ~ c5 d5@3 d5 ~ [d5,d#5] c5@3 d5@3",
  P: "d5 d#5 c5 a#4@3 d5!2 ~ d5@7 c#5 [a4,b4] [b3,c4,d4,e4,g4] a3 ~ d5@3", Q: "[g5 ~@2 a5@2 ~ b5@2 ~ c6@2 ~ c6@35 ~]/2",
  R: "~@4 g4 c5 d5!2", S: "~@9 c5@10 b4 g4 [c4,d4,e4,f4] [f3,g3,a3,b3] [d3,e3]",
  T: "[~@9 b4@12 c5@12 ~@2 g#4 a4@5 [f4,f#4] e4@3 g4@19 ~@8]/3", // F#maj7
})).s("gm_distortion_guitar").gain(0.56)

// chords · distortion guitar · "DISTORTION" · soft notes
const distortion_guitar_soft_2 = note("<~@8 A ~@29 B ~@2 C D ~@12 E ~@5 F ~@5 G ~@7 H ~@5>".pickRestart({
  A: "~@16 [b3,c4] ~@4 g3@3", B: "~@4 g3 ~@3 g3 [e3,f3] [c3,d3] [a2,b2] ~@12",
  C: "~@22 [c#3,g#3,c#4] [b2,c3,f#3,g3,b3,c4]", D: "[a2,a#2,f3,a#3] ~@23", E: "~@10 d4 ~@13", F: "~@17 c5 f4 ~@5",
  G: "~@20 a4 ~@3", H: "~@17 g4 ~@6",
})).s("gm_distortion_guitar").gain(0.32)

// other · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note("<A@5 ~@16 A@5 ~@24 B@5 ~@15 A@5 ~@6>".pickRestart({
  A: "[~@23 a5@21 g5@21 e5@3 g5@3 ~@8 a6@14 g6@27, ~@71 a5@10 ~@39]/5",
  B: "[~@11 a5@21 g5@21 e5@3 g5@3 ~@8 a6@14 g6@27 ~@12, ~@59 a5@10 ~@51]/5",
})).s("gm_string_ensemble_2").gain(0.4)

// other · string ensemble 2 · "SLOWSTRING" · soft notes
const string_ensemble_2_soft = note("<~@6 A@8 ~@63 B@3 ~>".pickRestart({
  A: "[~@23 e5@9 f5@12 [d5,g5]@27 e5@9 f5@12 g5@27 e5@9 f5@12 g5@39 ~@13, ~@23 c5@48 ~@121, ~@23 a4@22 ~@147]/8", // G5
  B: "[~ [e5,a5,b5,c#6,e6]@33 ~@2]/3", // A
})).s("gm_string_ensemble_2").gain(0.16)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note("<~@17 A@4 B ~@8 C@8 D@4 ~@3 E@6 ~@12 F@3 G@2 H@3 ~@10>".pickRestart({
  A: "[~@20 [f4,f5]@16 [f#4,f#5]@9 [g4,g5]@12 [c5,e5,a5,c6]@11 ~ [f5,a5,c6]@12 [c5,d5,f#5,a5]@15, ~@11 e4@9 ~@76, ~@6 e5@5 ~@23 c5@6 ~@8]/4", // F F# G Am F D7
  B: "[f4,g5] ~", // Fsus2
  C: "[~@12 [g4,g5]@81 ~@23 [f4,f5]@16 [f#4,f#5]@9 [g4,g5]@12 [c5,e5,a5,c6]@11 ~ [f5,a5,c6]@12 [c5,d5,f#5,a5]@15, ~@93 [d4,d5]@9 g4@6 e5@10 ~@46 c5@12 ~@16, ~@101 g5@6 e4@9 ~@76]/8", // G F F# G Am F D7 D
  D: "[[g4,d5,g5]@12 [a4,a5]@21 [g4,g5]@27 [e5,a5,c6,e6,a6,c7]@9 [d5,g5,b5,d6,g6,b6]@15 [c5,e5,a5,c6,e6,a6]@2 ~@10]/4", // G5 A G Am G Am
  E: "[~@9 [e5,a5,c6]@4 ~@2 [d5,g5,b5]@3 ~@3 [c5,f5,a5]@15 f5@9 g5@39 [b4,e5,a5]@20 ~ [g#4,b4,e6]@27 ~@12, ~@36 [d5,a5,c6]@48 ~@20 e5@27 ~@13]/6", // Am G F Esus4 E D7
  F: "[g4,g5]/3", G: "[[a4,a5]@9 ~@23 [f4,f5]@16, ~@9 [d4,d5]@9 g4@6 e5@10 ~@14, ~@17 g5@6 e4@9 ~@16]/2",
  H: "[[f#4,f#5]@9 [g4,g5]@12 [c5,e5,a5,c6]@11 ~ [f5,a5,c6]@12 [c5,d5,f#5,a5]@15 [g4,d5,g5]@12, ~@8 c5@3 ~@7]/3", // F# G Am F D7 G5
})).s("gm_synth_strings_1").gain(0.2)

// chords · electric guitar clean · "+CHORUS GT"
const electric_guitar_clean = note("<~@13 A@8 B ~@8 C@8 B ~@3 D@3 E ~@8 F@8 G H I J K L M@3 ~@10>".pickRestart({
  A: "[~@30 a3@5 ~@22 g3@3 ~@9 e4@5 ~@7 a3@3 [a3,c4,f4]@7 ~@2 [c4,d4,g4]@8 ~ [b3,d4,g4]@6 [g3,c4,e4]@9 [a3,c4,f4]@14 ~ a3@5 ~ a3@3 g3@6 ~@3 g3@3 e4@5 ~@4 g4@3 f4@6 ~@3 e4@3 [a3,c4,f#4]@15, ~@12 e4@9 g4@14 ~@7 b3@11 ~ b3@6 ~@3 c4@7 ~@8 c4@5 ~@58 [b3,d4]@12 [a3,c4]@12 c4@12 ~@15, ~@15 c4@7 ~@5 c4@8 ~@4 d4@11 ~ d4@9 e4@9 ~@6 e4@8 ~@76 e4@6 ~@27, ~@18 a3@9 ~@9 g3@20 ~@10 a3@9 ~@57 [f#3,d4]@8 ~@7 e3@6 ~@12 a3@4 ~@2 f3@6 ~@15, ~@15 g4@5 ~@44]/8", // F Csus2 G C F F#dim Bm Am …
  B: "[a3,c4,d4,g4] ~", // Am7
  C: "[~@30 a3@5 ~@19 b3@6 ~@9 e4@5 ~@7 a3@3 [a3,c4,f4]@7 ~@2 [c4,d4,g4]@8 ~ [b3,d4,g4]@6 [g3,c4,e4]@9 a3@6 g3@3 a3@3 g3@3 a3@5 ~ a3@3 g3@6 ~@3 g3@3 e4@5 ~@4 g4@3 f4@6 ~@3 e4@3 [a3,c4,f#4]@15, ~@12 e4@9 g4@14 ~@7 b3@11 ~@10 c4@7 ~@8 c4@5 ~@34 [c4,f4]@15 ~@9 [b3,d4]@12 [a3,c4]@12 c4@12 ~@15, ~@15 c4@7 ~@5 c4@8 ~@4 d4@11 ~ d4@9 e4@9 ~@6 e4@8 ~@76 e4@6 ~@27, ~@18 a3@9 ~@9 g3@24 ~@6 a3@9 ~@57 [f#3,d4]@8 ~@7 e3@6 ~@12 a3@4 ~@2 f3@6 ~@15, ~@15 g4@5 ~@44]/8", // F Csus2 G C F#dim F5 Bm Am …
  D: "[~@21 g4@14 ~@13 g4@12 ~@9 g#3@3, ~@12 d3@23 ~ e3@24 g#2@11 ~, ~@15 a3@19 ~@8 g4@5 ~@19 b3@6, ~@18 d4@16 ~@5 d4@20 ~@4 e4@9, ~@15 c5@5 ~@4]/3",
  E: "~@2 b3 ~@5, e3@3 ~@5, ~ e4@2 ~@5",
  F: "[~@12 [a2,a3,c4,e4]@6 a3@3 a3@5 ~@4 c4@3 g3@6 ~@15 g3@3 g2@3 c4@3 ~@3 a3@3 a3@6 ~@3 c4@3 [g2,g3,c4,d4]@9 ~@6 b3@6 g4@6 [a2,a3,c4,e4]@6 a3@3 a3@5 ~@4 c4@3 g3@6 ~@15 g3@3 g2@3 c4@3 ~@3 a3@3 a3@6 ~@3 c4@3 [g2,g3,c4,d4]@9 ~@4 c4@2, ~@21 [f2,f4]@10 ~@2 [g2,c4,d4]@10 ~@3 c4@8 ~@9 c4@5 ~@26 c4@8 ~@15 c4@8 ~@17 c4@8 ~@9 c4@5 ~@28, ~@21 c4@8 ~@16 g4@9 g4@6 ~@33 g4@9 ~@39 g4@9 g4@6 ~@33 g4@3, ~@27 a3@6 ~@6 g3@12 d3@6 ~@3 [a2,a3,e4]@7 ~@2 [f2,c4,f4]@10 ~@38 [f2,f4]@10 ~@2 [g2,c4,d4]@10 ~@5 b3@6 ~@21 a3@6 ~@15, ~@48 b3@6 ~@21 a3@6 ~@42 a3@6 ~@6 g3@12 d3@6 ~@3 [a2,a3,e4]@7 ~@2 [f2,c4,f4]@10 ~@17]/8", // Am Gsus4 Am Gsus4 F Gsus4 A5 F5 …
  G: "b3 g3 [c4,d4,g4] [b3,d4,g4]", H: "~@18 a3@5 ~, e4@9 g4@14 ~, ~@3 c4@7 ~@5 c4@8 ~, ~@2 a3@3 ~@3",
  I: "~@3 b3, g3, ~@3 d4@11 ~ d4@9, ~@6 b3@11 ~@7, ~@3 g4@5",
  J: "~@9 e4@5 ~@7 a3@3, e4@9 ~@6 e4@8 ~, ~@3 c4@7 ~@8 c4@5 ~, ~@2 a3@3 ~@3",
  K: "[a3,c4,f4]@7 ~@2 [c4,d4,g4]@8 ~ [b3,d4,g4]@6", L: "[g3,c4,e4]@3 a3@2 g3 a3 g3, ~@3 [c4,f4]@5",
  M: "[a3@5 ~ a3@3 g3@6 ~@3 g3@3 e4@5 ~@4 g4@3 f4@6 ~@3 e4@3 [a3,c4,f#4]@15 [a3,c4,d4,g4]@12, [f#3,d4]@8 ~ [b3,d4]@12 [a3,c4]@12 c4@12 ~@27, ~@15 e3@6 ~@6 e4@6 a3@4 ~@2 f3@6 ~@27]/3", // F#dim Am7 D Bm Am
})).s("gm_electric_guitar_clean").gain(0.48).pan(0.3)

// chords · pad sweep · "SWEEP PAD"
const pad_sweep = note("<~@7 A@2 ~@72>".pickRestart({
  A: "[~@7 [c5,d5]@9, ~@5 [g3,g4]@7]/2", // Csus2 G
})).s("gm_pad_sweep").gain(0.07)

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

// drums · rim
const rim = s("rim").struct("<~@22 [~ x ~ x]!8 ~@51>").gain(0.56)

// drums · snare
const snare = s("sd").struct(`<
  ~@13 A ~@3 B@2 C A ~@9 B@3 D C B C B C B A E C B@2 F B@2 A F ~@4 C B@3 G B@3 H B@3 F B A B ~@11
>`.pickRestart({
// … 77 more lines