Strudelify

All in a Mouse's Night

Genesis

KeyG majorTempo145 bpm
0:00/0:00
// All in a Mouse's Night — Genesis
// 145 bpm, 4/4, key G 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, 3/4 at bar 11, 4/4 at bar 54, 6/8 at bar 55, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: ch 3 "Bass Pedal" named as a bass, played on electric bass finger (its rock organ patch is not one)
// note: duplicate parts dropped: ch 6 "Flute sound" ocarina (copy of ch 1 "Tinkly sound" celesta)
// note: Full arrangement: all 264 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(145/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 · electric bass finger · "Bass Pedal"
const bass = note(`<
  ~@9 A@5 B@6 C@6 D@3 E@3 F@2 G H I@3 ~ J@3 K@3 L@3 M@3 N O@3 P@6 Q@6 R@4 S@6 T@6 U@3 V W X@3 Y@3 ~ Z@3 AA@3 AB@3 AC
  AD@3 AE@3 AF@3 AG@6 AH@4 AI@2 AJ@4 AI@2 AK@3 AL@4 AM@6 AN@3 AO@2 AP@8 ~@8 AQ@5 AR@8 ~@8 AS@8 AT@6 AU@4 AV@5 AW@5 AX@5
  AY@4 AZ@5 BA@5 BB@5 BC@5 BD@5 BE@8 BF@5 BG
>`.pickRestart({
  A: "[~@13 c#2@107]/5", B: "[b1@36 c#2@77 c#3@2 ~@2 c3@6 a#2@3 g#2@2 ~ f#2@2 ~ c#2@12]/6",
  C: "[b1@36 c#2@78 c#3@2 ~ c3@6 a#2@3 g#2@2 ~ f#2@2 ~ c#2@12]/6", D: "[b1 c#2]/3", E: "[c#2 a1 c#2 a1]/3",
  F: "[c2@3 d2@3 ~@2]/2", G: "~@2 f#1 ~@3 f#1!2", H: "~@6 f#1!2", I: "~@6 b1!2", J: "c#2!2 ~@6", K: "~@2 f#1!2 ~@4",
  L: "~@2 b1!2 ~@4", M: "~@4 c#2!2 ~@2", N: "~ e2 d2 c2", O: "[b1 a2@11]/3",
  P: "[~ g#2@12 ~@6 e2@5, ~@39 g2@19 ~@14]/6", Q: "[~ d#2@12 d2@11]/6", R: "[~@6 c#2@78 c#3@2 ~ c3@6 a#2@3]/4",
  S: "[g#2@2 ~ f#2@2 ~ c#2@12 b1@36 c#2@77 c#3@2 ~@2 c3@6 a#2@3]/6",
  T: "[g#2@2 ~ f#2@2 ~ c#2@12 b1@36 c#2@36 c#2@18 a1@18 c#2@18]/6", U: "[a1 c2 d2 ~]/3", V: "f#1 ~@3 f#1!2 ~@2",
  W: "~@4 f#1!2 ~@2", X: "~@4 b1!2 ~@2", Y: "~@6 c#2!2", Z: "f#1!2 ~@6", AA: "b1!2 ~@6", AB: "~@2 c#2!2 ~@4",
  AC: "e2 d2 c2 b1", AD: "[a2@71 ~]/3", AE: "g#2/3", AF: "[~ e2, g2@19 ~@17]/3", AG: "[d#2 d2]/6",
  AH: "[c#2@78 c#3@2 ~ c3@6 a#2@3 g#2@2 ~ f#2@2 ~]/4", AI: "[c#2 b1@3]/2",
  AJ: "[c#2@77 c#3@2 ~@2 c3@6 a#2@3 g#2@2 ~ f#2@2 ~]/4", AK: "[c#2@2 c#2 a1]/3",
  AL: "[c#2@18 a1@18 c2@8 ~ d2@9 c2@10 d2@10 c2@11 ~ d2@10]/4",
  AM: "[~ c2@15 d2@14 c2@9 ~ d#2@29 ~ f1@29 ~ g1@14 a1@8 b1@14 ~ c2@7]/6", AN: "[d2@5 d#2@10 f1@9]/3",
  AO: "[~ g1@15]/2", AP: "[~@7 c1@89]/8", AQ: "[~@17 g1@103]/5", AR: "[~ c1@11]/8", AS: "[~@18 g1@118 c1 c1@55]/8",
  AT: "[~@49 b1@15 e1@80, ~@5 c2@46 ~@93]/6", AU: "[~ c2@18 b1@29]/4", AV: "[~@2 a1@59 d1@59]/5",
  AW: "[~ c1@60 g1@30 f#1@29]/5", AX: "[~ e1@59 a1@60]/5",
  AY: "[g2@36 ~ g3@2 ~@2 f#3@15 e3@2 ~ g2@36 ~, ~@29 d3 ~@18]/4",
  AZ: "[g3@2 ~@3 f#3@14 e3@2 d3@2 g2@36 ~ g3@2 ~@2 f#3@15 e3@2 ~ g2@36 ~ g3, ~@81 d3@2 ~@37]/5",
  BA: "[~@4 f#3@14 e3@2 d3 ~ g2@36 ~ g3@2 ~@2 f#3@15 e3@2 ~ g2@36 ~ g3@2, ~@40 d3 ~@19]/5",
  BB: "[~@17 e3@2 d3 ~ g2@36 ~ g3@2 ~@2 f#3@15 e3@2 ~ g2@36 ~ g3@2 ~, ~@3 f#3@16 ~@60 d3@2 ~@39]/5",
  BC: "[~@2 f#3@14 e3@2 d3@2 g2@36 ~ g3@2 ~@2 f#3@15 e3@2 d3 g2@36 ~ g3@2 ~@2]/5",
  BD: "[~ f#3@14 e3@2 d3@2 g2@36 ~ g3@2 ~@2 f#3@15 ~ d3@2 g2@36 ~ g3@2 ~@3, ~@75 e3@2 ~@43]/5",
  BE: "[~@14 e3@2 d3 ~ g2@36 ~ g3@2 ~@2 f#3@15 ~ d3 ~ g2@36 ~ g3@2 ~@3 f#3@14 e3@2 d3@2 g2@36 ~ g3@2 ~@2 f#3@14, f#3@8 ~@29 e3 ~@58]/8",
  BF: "[~@2 d3 ~ g2@36 ~ g3@2 ~@3 f#3@14 e3@2 d3@2 g2@36 ~ g3@2 ~@2 f#3@15, ~ e3@2 ~@117]/5", BG: "~ d3 ~@22, e3 ~@11",
})).s("gm_electric_bass_finger").gain(0.69)

// chords · church organ · "Organ"
const church_organ = note(`<
  ~@9 A B@4 C@6 D@7 E@2 F@3 G@2 ~@19 H@6 I@3 J@3 K@3 L@6 M@6 N@4 O@3 ~@19 P@6 Q@3 R@3 S@3 T@6 U@6 V@3 W@3 X@5 Y@8 ~@112
>`.pickRestart({
  A: "~ [c#4,f4,g#4]", B: "[~ [c#4,f4,g#4]@47]/4", C: "[~ [d#4,f#4]@37 ~ [c#4,f4]@104 ~, ~ b3@36 ~ g#4@104 ~@2]/6",
  D: "[d#4@36 [c#4,f4,g#4]@107 ~ [b3,d#4]@24, f#4@40 ~@103 f#4@25, b3@17 ~@67]/7", E: "[~ [c#4,f4,g#4]@3]/2",
  F: "[[b3,d#4,f#4]@17 ~ [a3,e4]@16 ~ [b3,d#4] [b3,d#4,f#4]@17 ~ [a3,e4]@16 ~ [b3,d#4,f#4], ~@2 c#4 ~@3 c#4 ~]/3", // B A5 B A5 B
  G: "[[d4,f#4]@3 ~, a3 ~@23]/2", H: "[~@6 a4@71 d#5@35 ~ f4@31, ~ c5@23, ~@6 e5@69 ~@2 g#4@67]/6",
  I: "[~ d5@6 e4@5, ~ [g4,b4]@11]/3", J: "[~@6 [d#4,a#4]@35 ~ c4@30, ~ g4@11, ~@41 d#4@31]/3",
  K: "[~@29 g4@2 ~@11 b4@30, ~ [d4,f#4]@11, ~ a4@6 ~@5]/3", L: "[~@9 [c#4,f4]@104 ~ [b3,d#4,f#4]@30, ~ g#4@13 ~@4]/6",
  M: "[~@6 [c#4,f4,g#4]@107 ~ [b3,d#4]@30, ~@113 f#4@31]/6", // C# B
  N: "[~@6 [c#4,f4,g#4]@36 [b3,d#4,f#4]@17 ~ [a3,e4]@16 ~ [b3,d#4,f#4] [b3,d#4,f#4]@17 ~, ~@20 c#4@3 ~@9]/4", // C# B A5 B
  O: "[[a3,e4]@16 ~ [b3,d#4] [d4,f#4]@36 ~@18, c#4@9 ~@9 a3@2 ~@52]/3", // A5 B D
  P: "[a4@71 d#5@35 ~ f4@36 ~, c5@143 ~, e5@69 ~@2 g#4@72 ~]/6", Q: "[d5@18 e4@17 ~, [g4,b4]@71 ~]/3",
  R: "[[d#4,a#4]@35 ~ c4@35 ~, g4, ~@35 d#4@36 ~]/3", S: "[~@23 g4@2 ~@11 b4@36, [d4,f#4], a4 ~]/3",
  T: "[~@3 [c#4,f4]@104 ~ [d#4,f#4]@36, ~ g#4@52 ~ b3@17 ~]/6", U: "[[c#4,f4,g#4]@107 ~ [b3,d#4]@36, ~@107 f#4@37]/6",
  V: "[[c#4,f4,g#4]@36 [b3,d#4,f#4]@17 ~ [a3,e4]@16 ~ [b3,d#4,f#4], ~@6 c#4 ~]/3", // C# B A5 B
  W: "[[b3,d#4,f#4]@17 ~ [a3,e4]@16 ~ [b3,d#4,f#4] [d4,f#4]@36, ~@18 c#4@9 ~@9 a3@2 ~@34]/3", // B A5 B D
  X: "[~@2 [d4,f#4]@52 [c4,e4,g4]@9 ~ [g#3,c4,d#4]@30 [f3,a3,c4]@26, ~@2 a3@3 ~@115]/5", // D C G# F
  Y: "[~@4 [g3,b3,d4]@59 [g#3,c4,d#4]@30 [f3,a3,c4]@30 [g3,b3,d4]@59 ~@10]/8", // G G# F G
})).s("gm_church_organ").gain(0.46)

// chords · clavinet · "Harpsicord Sawtooth Guitar"
const clavinet = note("<~@53 A B@3 C@3 D@2 E F@2 G H@3 ~@37 I@3 J@3 K@3 L@3 M@3 ~@143>".pickRestart({
  A: "~@3 [e4,a4,c5]@7 ~@2", B: "[[e4,a4,c5]@8 ~ [e4,a4,c5]@8 ~ [e4,a4,c5]@7 ~@2 [d#4,g#4,c5]@8 ~]/3",
  C: "[[d#4,g#4,c5]@15 ~@3 [f4,g#4,c5]@16 ~@2 [f4,g#4,c5]@14 ~@4 [d4,g4,b4]@17 ~]/3", // G# Fm G
  D: "[[d4,g4,b4]@15 ~@3 [e4,g4,b4]@17 ~ [e4,g4,b4]@11 ~]/2", E: "~@3 [d#4,g4,a#4]@8 ~",
  F: "[[d#4,g4,a#4]@6 ~@3 [c4,d#4,g4]@8 ~ [c4,d#4,g4]@4 ~@2]/2", G: "~@6 [d4,a4,d5,f#5]@17 ~",
  H: "[[d4,a4,d5,f#5]@16 ~@2 [d4,b4,d5,f#5]@16 ~@2 [d4,b4,d5,f#5]@15 ~@21, ~@9 a4@5 ~@22]/3", // D Bm
  I: "[[a4,c5,e5]@15 ~@3 [a4,c5,e5]@15 ~@3 [a4,c5,e5]@16 ~@2 [a4,c5,e5]@14 ~@4]/3", // Am
  J: "[[g#4,c5,d#5]@16 ~@2 [g#4,c5,d#5]@14 ~@4 [f4,g#4,c5]@15 ~@3 [f4,g#4,c5]@16 ~@2, ~@36 a#4 ~@35]/3", // G# Fm
  K: "[[g4,b4,d5]@16 ~@2 [g4,b4,d5]@15 ~@3 [e4,g4,b4]@15 ~@3 [e4,g4,b4]@16 ~@2]/3", // G Em
  L: "[[d#4,g4,a#4]@17 ~ [d#4,g4,a#4]@15 ~@3 [c4,d#4,g4]@15 ~@3 [c4,d#4,g4]@16 ~@2]/3", // D# Cm
  M: "[[a3,d4,f#4]@16 ~@2 [a3,d4,f#4]@14 ~@4 [b3,d4,f#4]@16 ~@2 [b3,d4,f#4]@17 ~]/3", // D Bm
})).s("gm_clavinet").gain(0.36)

// other · overdriven guitar · "Harpsicord Sawtooth Guitar"
const overdriven_guitar = note("<~@167 A@6 ~@4 B@3 C@5 D@5 E@8 F G H@3 I@3 J K@3 L M@3 ~ N O ~@47>".pickRestart({
  A: "[~@17 g3@34 ~@3 b3@2 c4@2 d4@2 ~ d4@3 g4@3 ~ g4@8 ~@7 d5@17 ~@6 g5@28 ~@10]/6",
  B: "[~@14 e4@12 ~@3 e4@12 ~@3 f4@13 ~@2 a4@13]/3",
  C: "[~@2 g4@13 ~@2 d4@13 ~ c4@14 ~@2 g4@13 ~ f4@14 ~ c4@14 ~ a#3@14 ~ f4@13 ~]/5",
  D: "[~ d#4@13 ~@2 a#3@13 ~@2 a3@36 g3@7 ~ f#3@7 a3@7 ~ g3@30]/5",
  E: "[~@8 c4@3 d4@2 ~@2 d4@3 g4@3 ~ g4@9 ~@7 d5@17 ~@4 g5@27 ~@3 g4@45 d4@4 e4@3 f4@6 ~ g4@43 ~, ~@7 b3@3 ~@182]/8",
  F: "~ d#4@4 e4@3 f#4@4 b4@4 f#5@8", G: "b4@3 f#4@4 b3@3 f#3@4 d#3@6 ~ e3@3",
  H: "[f3 [g3,a3] [b3,c4] [d4,e4,f4] [g4,a4] ~@11 a4@3 g4@4 a4@5 f#4@6 ~@2 e5@25 d5@5 c5@3 d5@3, ~ b4@3 ~@14]/3", // Gsus2 Cmaj7 Dm Gsus2
  I: "[~ e5@3 f#5@4 g5@4 f#5@4 a4@21 a5@4 g5@4 f#5@7 d5@7 b4@8 f#5@5]/3", J: "~@2 e5@4 d5 [b4,c5] [g4,a4] f4 e4@13 ~",
  K: "[e4@4 [f4,g4] [a4,b4] [c5,d5] e5@5 ~@3 e4@3 ~ [g4,a4] b4 [c5,d5] e5@5 ~@3 e4@2 f4 g4 a4 b4 d5@30 ~@6, ~@18 f4@2 ~@16 c5 ~@35]/3", // Fsus2 Asus2 Csus2 Gsus2 Csus2
  L: "~@5 a5@5 g5@2, ~@9 g5@2 ~@13", M: "[~ e5@40 ~@5 e5@3 f5@4 e5@4 c5@3 ~ d5@9 ~@2]/3", N: "~@9 d5@6 ~@2 b4@4 a4@3",
  O: "g#4@7 ~@5",
})).s("gm_overdriven_guitar").gain(0.36)

// chords · lead 2 sawtooth · "Sawtooth"
const lead_2_sawtooth = note(`<
  ~@9 A B C D B E F B C D B E F B C D B E F B G H I J K ~@19 L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AB AC AD
  AE AF AG AH AI AJ AK AL AM ~@18 AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC C D B C BD BE C D B C BD BE C BF I G
  BG BH@4 ~@122
>`.pickRestart({
  A: "~@4 f4 g#4 c#5 f#4", B: "a#4 c#5 g#4 c5 c#5 g#4 a#4 c#5", C: "f4 g#4 c#5 f#4 a#4 c#5 g#4 c5",
  D: "c#5 g#4 a#4 c#5 f4 g#4 c#5 f#4", E: "d#4 f#4 b4 b3 d#4 f#4 f#3 b3", F: "d#4 b3 d#4 f#4 f4 g#4 c#5 f#4",
  G: "f#4 g#4 b4 d#4 f#4@2 e4 f#4", H: "a4 c#4 e4@2 f#4 g#4 b4 d#4", I: "f#4@2 e4 f#4 a4 c#4 e4@2",
  J: "e4 f#4 a4 d4 e4 f#4 e4 f#4", K: "a4 d4 e4 f#4 g4 ~@3",
  L: "~@6 [a4,c5] ~@2 [c5,e5] ~@2 [a4,c5]@2 ~ [c5,e5] ~@2 [a4,c5]@2 ~ [c5,e5]@2 ~", // Am C Am C Am C
  M: "[a4,c5] ~@2 [c5,e5]@2 ~ [a4,c5]@2 ~ e5@2 ~ [a4,c5]@2 ~ [c5,e5] ~@2 [a4,c5] ~@2 [c5,e5]@2 ~, ~@9 c5 ~@14", // Am C Am C Am C
  N: "a4@2 ~ [c5,e5]@2 ~ [a4,c5] ~@2 [c5,e5]@2 ~ [a4,c5] ~@2 [c5,e5] ~@2 a4@2 ~ [c5,e5] ~@2, c5 ~@17 c5 ~@5", // C Am C Am C
  O: "[a4,c5]@2 ~ [c5,e5] ~@2 [d#4,g#4] ~@2 [g#4,c5] ~@2 g#4@2 ~ [g#4,c5] ~@2 d#4@2 ~ [g#4,c5] ~@2, ~@12 d#4 ~@5 g#4 ~@5", // Am C G#5 G#
  P: "g#4@2 ~ [g#4,c5] ~@2 [d#4,g#4] ~@2 [g#4,c5] ~@2 [d#4,g#4]@2 ~ [g#4,c5] ~@2 [f4,g#4]@2 ~ [g#4,c5]@2 ~, d#4 ~@23", // G# G#5 G# G#5 G# Fm G#
  Q: "[f4,g#4] ~@2 g#4@2 ~ [f4,g#4]@2 ~ [g#4,c5]@2 ~ [f4,g#4]@2 ~ [g#4,c5]@2 ~ [f4,g#4]@2 ~ c5@2 ~, ~@3 c5 ~@17 g#4 ~@2", // Fm G# Fm G# Fm
  R: "[f4,g#4] ~@2 [g#4,c5] ~@2 [d4,g4] ~@2 [g4,b4]@2 ~ [d4,g4] ~@2 [g4,b4] ~@2 [d4,g4]@2 ~ [g4,b4] ~@2", // Fm G# G5 G G5 G G5 G
  S: "[d4,g4] ~@2 [g4,b4]@2 ~ d4@2 ~ [g4,b4]@2 ~ d4@2 ~ [g4,b4] ~@2 [e4,g4] ~@2 [g4,b4] ~@2, ~@6 g4 ~@5 g4 ~@11", // G5 G Em G
  T: "e4@2 ~ [g4,b4] ~@2 e4@2 ~ [g4,b4] ~@2 g4@2 ~ [g4,b4] ~@2 g4@2 ~ [g4,b4] ~@2, g4 ~@5 g4 ~@5 e4 ~@5 e4 ~@5", // G
  U: "[e4,g4] ~@2 [g4,b4] ~@2 [d#4,g4] ~@2 [g4,a#4] ~@2 [d#4,g4] ~@2 [g4,a#4]@2 ~ [d#4,g4]@2 ~ [g4,a#4] ~@2", // Em G D# Gm D# Gm D# Gm
  V: "[d#4,g4] ~@2 [g4,a#4] ~@2 [d#4,g4] ~@2 g4@2 ~ [d#4,g4]@2 ~ [g4,a#4] ~@2 [c4,d#4] ~@2 d#4@2 ~, ~@9 a#4 ~@11 g4 ~@2", // D# Gm D# Gm Cm
  W: "[c4,d#4] ~@2 g4@2 ~ [c4,d#4]@2 ~ [d#4,g4]@2 ~ [c4,d#4] ~@2 [d#4,g4]@2 ~ [c4,d#4] ~@2 g4@2 ~, ~@3 d#4 ~@17 d#4 ~@2", // Cm D# Cm D# Cm
  X: "[c4,d#4]@2 ~ g4@2 ~ [a4,d5] ~@2 [d5,f#5]@2 ~ a4@2 ~ [d5,f#5] ~@2 [a4,d5]@2 ~ [d5,f#5] ~@2, ~@3 d#4 ~@8 d5 ~@11", // Cm D5 D D5 D
  Y: "[a4,d5] ~@2 [d5,f#5] ~@2 a4@2 ~ [d5,f#5] ~@2 a4@2 ~ [d5,f#5] ~@2 f#4@2 ~ [f#4,b4]@2 ~, ~@6 d5 ~@5 d5 ~@5 d4 ~@5", // D5 D B5
  Z: "[d4,f#4] ~@2 [f#4,b4] ~@2 [d4,f#4]@2 ~ [f#4,b4] ~@2 [d4,f#4] ~@2 [f#4,b4]@2 ~ f#4@2 ~ [f#4,b4] ~@2, ~@18 d4 ~@5", // D B5 D B5 D B5
  AA: "[d4,f#4]@2 ~ [f#4,b4] ~@2 f4@3 g#4@3 c#5@3 f#4@3 a#4@3 c#5@3", AB: "g#4 c5 c#5 g#4 a#4 c#5 f4 g#4",
  AC: "c#5 f#4 a#4 c#5 g#4 c5 c#5 g#4", AD: "a#4 c#5 f4 g#4 c#5 f#4 a#4 c#5", AE: "g#4 c5 c#5 g#4 a#4 c#5 d#4 f#4",
  AF: "b4 b3 d#4 f#4 f#3 b3 d#4 b3", AG: "d#4 f#4 f4 g#4 c#5 f#4 a#4 c#5", AH: "g#4 c5 c#5 g#4 a#4 c#5 f#4 g#4",
  AI: "b4 d#4 f#4@2 e4 f#4 a4 c#4", AJ: "e4@2 f#4 g#4 b4 d#4 f#4@2", AK: "e4 f#4 a4 c#4 e4@2 e4 f#4",
  AL: "a4 d4 e4 f#4 e4 f#4 a4 d4", AM: "e4 f#4 g4 ~@5", AN: "[c5,e5] [b4,d5] [a4,c5] [g4,b4]",
  AO: "[a4,c5] ~@2 e5@2 ~ [a4,c5] ~@2 e5@2 ~ [a4,c5]@2 ~ [c5,e5] ~@2 [a4,c5] ~@2 [c5,e5]@2 ~, ~@3 c5 ~@5 c5 ~@14", // Am C Am C
  AP: "[a4,c5] ~@2 [c5,e5] ~@2 [a4,c5] ~@2 [c5,e5] ~@2 a4@2 ~ [c5,e5] ~@2 a4@2 ~ [c5,e5] ~@2, ~@12 c5 ~@5 c5 ~@5", // Am C Am C
  AQ: "[a4,c5] ~@2 [c5,e5] ~@2 [a4,c5] ~@2 [c5,e5] ~@2 [a4,c5]@2 ~ [c5,e5] ~@2 [a4,c5]@2 ~ c5@2 ~, ~@21 e5 ~@2", // Am C Am C Am C Am
  AR: "g#4@2 ~ [g#4,c5] ~@2 g#4@2 ~ [g#4,c5] ~@2 [d#4,g#4]@2 ~ [g#4,c5]@2 ~ g#4@2 ~ [g#4,c5]@2 ~, d#4 ~@5 d#4 ~@11 d#4 ~@5", // G# G#5 G#
  AS: "[d#4,g#4]@2 ~ [g#4,c5] ~@2 [d#4,g#4]@2 ~ g#4@2 ~ [f4,g#4] ~@2 [g#4,c5]@2 ~ [f4,g#4] ~@2 [g#4,c5]@2 ~, ~@9 c5 ~@14", // G#5 G# G#5 Fm G# Fm G#
  AT: "[f4,g#4] ~@2 [g#4,c5]@2 ~ [f4,g#4] ~@2 g#4@2 ~ [f4,g#4] ~@2 [g#4,c5]@2 ~ [f4,g#4] ~@2 c5@2 ~, ~@9 c5 ~@11 g#4 ~@2", // Fm G# Fm G# Fm
  AU: "[d4,g4] ~@2 [g4,b4]@2 ~ d4@2 ~ [g4,b4] ~@2 [d4,g4]@2 ~ [g4,b4] ~@2 d4@2 ~ [g4,b4] ~@2, ~@6 g4 ~@11 g4 ~@5", // G5 G G5 G
  AV: "d4@2 ~ [g4,b4] ~@2 [d4,g4] ~@2 [g4,b4] ~@2 e4@2 ~ [g4,b4] ~@2 [e4,g4]@2 ~ [g4,b4] ~@2, g4 ~@11 g4 ~@11", // G G5 G Em G
  AW: "[e4,g4] ~@2 g4@2 ~ g4@2 ~ [g4,b4]@2 ~ g4@2 ~ g4@2 ~ [e4,g4]@2 ~ g4@2 ~, ~@3 b4 ~@2 e4 ~@5 e4 ~@2 b4 ~@5 b4 ~@2", // Em G Em
  AX: "d#4@2 ~ [g4,a#4]@2 ~ [d#4,g4]@2 ~ g4@2 ~ [d#4,g4] ~@2 [g4,a#4]@2 ~ [d#4,g4] ~@2 g4@2 ~, g4 ~@8 a#4 ~@11 a#4 ~@2", // Gm D# Gm D#
  AY: "[d#4,g4] ~@2 g4@2 ~ [d#4,g4] ~@2 [g4,a#4]@2 ~ [c4,d#4] ~@2 d#4@2 ~ [c4,d#4] ~@2 [d#4,g4]@2 ~, ~@3 a#4 ~@11 g4 ~@8", // D# Gm Cm D#
  AZ: "c4@2 ~ g4@2 ~ [c4,d#4] ~@2 [d#4,g4]@2 ~ [c4,d#4] ~@2 [d#4,g4] ~@2 [c4,d#4] ~@2 [d#4,g4] ~@2, d#4 ~@2 d#4 ~@20", // Cm D# Cm D# Cm D#
  BA: "[a4,d5] ~@2 [d5,f#5] ~@2 a4@2 ~ [d5,f#5] ~@2 [a4,d5] ~@2 [d5,f#5] ~@2 [a4,d5] ~@2 [d5,f#5] ~@2, ~@6 d5 ~@17", // D5 D D5 D D5 D
  BB: "d5@2 ~ [d5,f#5] ~@2 [a4,d5]@2 ~ d5@2 ~ f#4@2 ~ [f#4,b4]@2 ~ f#4@2 ~ f#4@2 ~, a4 ~@8 f#5 ~@2 d4 ~@5 d4 ~@2 b4 ~@2", // D D5 B5
  BC: "f#4@2 ~ [f#4,b4] ~@2 [d4,f#4] ~@2 f#4@2 ~ [d4,f#4]@2 ~ f#4@2 ~ [d4,f#4]@2 ~ f#4@2 ~, d4 ~@8 b4 ~@5 b4 ~@5 b4 ~@2", // B5 D
  BD: "c#5 g#4 a#4 c#5 d#4 f#4 b4 b3", BE: "d#4 f#4 f#3 b3 d#4 b3 d#4 f#4", BF: "c#5 g#4 a#4 c#5 f#4 g#4 b4 d#4",
  BG: "a4 c#4 e4@2 e4 f#4 a4 d4",
  BH: "[e4@3 f#4@3 e4@3 f#4@3 ~ a4@3 d4@3 e4@3 ~ f#4@3 e4@4 f#4@4 a4@4 d4@4 e4@4 f#4@3 e4@5 f#4@5 a4@5 d4@5 e4@5 f#4@4 c4@4 ~ d4@4 ~@9]/4",
})).s("gm_lead_2_sawtooth").gain(0.43)

// chords · synth strings 1 · "Strings"
const synth_strings_1 = note(`<
  A@5 B@5 ~@42 C D ~@51 E ~@35 F@8 G@5 H@5 I J@7 K@8 L@5 M@5 N@5 O@8 P@8 Q@5 R@5 S@5 T@8 ~@35
>`.pickRestart({
  A: "[~@14 g5@13 b5@13 ~ a5@13 e6@13 d6@13 ~ a5@13 g5@13 ~ [a#2,d6]@12, ~@7 c3@47 ~@6, ~@14 c5@53 a#4@27 [d#4,c5]@26, ~@14 g4@27 a4@26 d5@25 ~@2 c#5 ~@25, ~@14 e4@25 ~@2 f4@26 g4@52 ~]/5", // A# Cm
  B: "[~ c6@13 g5@14 f5@13 c6@13 a#5@14 f5@13 [c4,g#4,d#5]@27 ~@12, ~ g#2@107 ~@12, ~ f4@53 d#4@54 ~@12, ~ g#4@27 a#4@54 ~@38, ~@28 c#4@25 ~ f#4@26 ~@40]/5", // G#
  C: "~@6 [c5,e5]@5 ~ [b4,d5]@5 ~ [a4,c5,e5]@5 ~", D: "[g4,b4,d5]@5 ~@19",
  E: "[c5,e5]@5 ~ [b4,d5]@5 ~ [a4,c5,e5]@5 ~ [g4,b4,d5]@5 ~", // C Bm Am G
  F: "[~@16 [c4,d#4,g#4]@29 ~ [c4,f4,a4]@28 ~@2 [b3,d4,g4]@58 ~ [d#4,g#4]@29 ~ [f4,a4]@27, ~@45 c4@19]/8", // G# F G G#5 F
  G: "[~@3 [b3,d4,g4]@59 g5@15 b5@14 ~ a5@15 e6@13, ~@62 c5@57 ~, ~@31 [e4,g4]@14 ~ [f4,a4]@14]/5", // G Em F
  H: "[~@16 a5@15 g5@30 b5@29 ~ a5@15 e6@14, ~ [g4,a#4]@31 ~@88, ~@2 d5@28 ~ c5@87 ~@2, ~@2 d6@16 ~@13 [e4,g4]@58 ~@2 [f4,a4]@29]/5", // Gm Em F
  I: "d6@5 a5@3, [g4,a#4,d5]", // Gm
  J: "[~@6 g5@15 d6@14 ~ c6@15 g5@15 ~@15 c6@14 a#5@15 f5@14 ~ d#5@37 d5@6, ~@2 c5@19 ~ a#4@19 ~@15, ~@6 d#4@27 ~@3 f4@58 ~ [d#4,f#4]@73, ~@6 g#4@5 f5@5 ~@12, ~@66 c#4@28 ~@31 [c4,a4]@43]/7", // D#m F
  K: "[~@2 c5@7 d#5@8 b4@28 ~ e5@29 ~ [a4,f5]@29 ~ g5@30 ~@15 b5@13 ~ a5@15 e6@12, ~@17 g4@59 ~@60 c5@56, ~@17 d5@26 ~@3 c5@60 [b4,d5]@32 ~@26 a4@28, ~@136 [e4,g4]@28 ~ f4@27, ~@17 g5@3 ~@4]/8", // Dm Bm Em
  L: "[~@3 d6@15 a5@15 f4 ~@29 b5@14 b5@14 ~ a5@14 ~ e6@13, ~@2 g4@89 ~@29, ~@2 [a#4,d5]@31 c5@87, ~@33 g5@29 ~@58, ~@34 e4@57 [f4,a4]@29]/5", // A# F
  M: "[~@2 d6@15 a5@14 ~ g5@14 ~ d6@13 ~@2 c6@14 ~@15 f5@15 c6@13 ~, ~ g4@59 f4@60, ~ [a#4,d5]@29 ~ c5@58 a#4@31, ~@31 d#4@29 g#4@30 c#4@30, ~@62 d6 ~@13 g5@15 ~@29]/5", // A#
  N: "[~ a#5@15 f5@13 ~@2 d#5@37 d5@7 c5@7 ~ d#5@7 [b3,g4,d5]@30, [d#4,f#4]@89 ~@31, ~@30 c4@59 ~@31]/5", // G D#m
  O: "[e5@29 ~ [a4,f5]@30 [d4,b4,g5]@29 [e4,c5]@30 d4@30 [e4,c6]@43, c4@58 ~@31 a5@28 ~@2 g4@73, ~@119 b5@28 ~@45]/8", // Dm G C
  P: "[~ [f#4,b4,d#6]@15 b5@45 a5@7 g5@7 ~ a5@7 b5@8 e5@22 b5@7 a5@8 g5@7 ~@4 b5@7 ~@34 f#5@12, ~@8 [e4,g4]@67 [d4,f#4]@21, ~@135 a5@7 ~@4 d5@32 ~@14]/8", // B Em D
  Q: "[~@3 [e4,a4,e5]@59 [d4,d5]@7 ~ [e4,e5]@7 [d4,f#4,d5,f#5]@7 ~ [e4,g4,e5,g5]@7 [d5,f5,a5]@15 b5@13, ~@23 [d4,f4]@7]/5", // A5 D E D Em Dm
  R: "[~@2 a5@15 g5@29 b5@7 ~ c6@6 ~@16 d6@7 ~@8 d6@7 [e4,e6]@7 ~ d6@7 [b3,b5]@3 ~ a5@3, ~@2 e4@59 b4@59, ~@2 c4@51 c4@7 d4@7 e4@7 d4@9 b3@7 d4@9 ~@6 d4@7 ~@4 a3@4, ~@61 g4@30 f#4@29, ~@61 d6@8 e6@8 ~@7 b5@8 ~@28]/5", // E B
  S: "[~ [g#3,g#5]@14 ~ b5@14 [d4,d6]@14 ~ c6@7 ~@8 a5@29 ~ e5@14 ~ f#5@15, ~ e4@117 ~@2, ~ g#4@57 ~@2 c#4@59 ~, ~@15 b3@15 ~@14 c4@8 b3@7 a3@30 e3@15 f#3@14 ~@2, ~@53 b5@8 ~@59]/5", // G# D
  T: "[g4,b4,d5]/8", // G
})).s("gm_synth_strings_1").gain(0.42)

// drums · kick
const kick = s("bd").struct(`<
  A ~@8 B ~ C B ~ D E F G H F G H F G H F G H F I H F G J K L@4 ~ M@3 N@6 O@3 ~ P Q R S Q R S Q R S Q R S Q R T U V T U
  V T U V T U V T W V T U V X Y O@4 L@3 ~ M@6 N@3 ~ Z AA AB Z AA AB Z AA AB Z AA AB Z AA AB G H F G H F G H F G H F G AC
  F AD AE AF AG AH AF ~@25 AI AJ ~ AK AL AM AN ~ AO AP AQ AR ~ AS AT A AU ~ AV AW AX AY ~ C AZ B AI BA ~ BB BC AH AJ ~
  AU BD ~ BE ~ AO AT A AR ~ AS AW AX AU ~ AV AZ B AY ~@44
>`.pickRestart({
  A: "~@7 x ~@4", B: "~ x", C: "x", D: "x ~@2 x ~@4", E: "~@4 x ~ x!2", F: "~ x ~@2 x!2 ~ x", G: "x ~ x!2 ~ x ~@2",
  H: "x!2 ~ x!2 ~ x!2", I: "x!4 ~ x ~@2", J: "x!2 ~ x ~@2 x ~", K: "~@2 x ~@3 x!2", L: "~@6 x!2", M: "x!2 ~@6",
  N: "~@2 x!2 ~@4", O: "~@4 x!2 ~@2", P: "~ x!2 ~", Q: "x ~ x ~@2 x!2 ~", R: "x ~ x!2", S: "~ x!2 ~ x ~@3",
  T: "~ x!2 ~ x!2 ~ x", U: "~@2 x!2 ~ x!2 ~", V: "x!2 ~ x ~@2 x!2", W: "~@2 x!2 ~ x!3", X: "~ x ~@2 x ~@3",
  Y: "x ~@3 x!2 ~@2", Z: "x!2 ~ x", AA: "x ~@2 x!2 ~ x ~", AB: "~@2 x ~ x ~@2 x", AC: "x!2 ~ x!5",
  AD: "x ~@2 x ~@2 x ~", AE: "~ x ~@2 x ~@2 x", AF: "~@3 x ~@4 x ~@3", AG: "~ x ~@5 x ~@4", AH: "~ x ~@14 x ~@7",
  AI: "~@17 x ~@6", AJ: "~@11 x", AK: "~ x ~@4", AL: "~@5 x ~@6", AM: "~@2 x", AN: "~@7 x", AO: "~ x ~@6",
  AP: "~@3 x ~@4", AQ: "~@5 x ~@2", AR: "~@5 x", AS: "~ x ~@10", AT: "~ x ~", AU: "~@19 x ~@4", AV: "~ x ~@22",
  AW: "~@7 x ~@16", AX: "~@13 x ~@10", AY: "~@3 x", AZ: "~ x ~@2", BA: "~@23 x", BB: "~@5 x ~@18", BC: "~@11 x ~@12",
  BD: "~@2 x ~@6 x ~@14", BE: "~@6 x ~@7 x ~@6 x ~@2",
})).gain(0.75)

// drums · snare
const snare = s("sd").struct(`<
  ~@9 A ~ B A ~ C ~ D E F D E F D E F D E F D E F D E G F@6 A@3 E@6 ~ B@2 H I J K I J K I J K I J K I J K ~ L A B L A B
  L A B L A B L A B L A M B@6 F@3 A@6 E@3 N J K I J K I J K I J K I J K I E F D E F D E F D E F D E F D O P Q R S T ~@25
  U V ~ W X ~ Y A E ~ B Z AA U AB ~ W X AC V ~ AD J I AE ~@2 AF AG AH AI AJ Y AK AL T B AM A E AB AN Z AA U V ~ W X I AE
  ~ AD J AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU BV BW BX BY
  BZ CA CB CC CD CE
>`.pickRestart({
  A: "~ x", B: "x", C: "x ~@2 x ~@4", D: "~ x ~ x", E: "~@3 x", F: "~ x ~@2", G: "~ x!2 ~", H: "x ~@15 x!4 ~@4",
// … 119 more lines

More by Genesis