Strudelify

Dance on a Volcano

Genesis

KeyB♭ majorTempo115 bpm
0:00/0:00
// Dance on a Volcano — Genesis
// 115 bpm, 7/8, key Bb 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 (3/2 at bar 1, 3/4 at bar 3, 4/4 at bar 4, 3/4 at bar 7, ...) are rendered on a constant 7/8 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 3 "Clean Guitar Right" electric guitar clean (copy of ch 1 "Clean Guitar Left" electric guitar clean); ch 8 "Aural Right" string ensemble 1 (copy of ch 9 "Aural Left" string ensemble 1)
// note: Full arrangement: all 199 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(115/3.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 · electric guitar clean · "Clean Guitar Left"
const electric_guitar_clean = note(`<
  A@6 B@4 C@7 D@4 E@3 F G@4 H@6 ~@8 G@4 H@6 ~@8 G@4 H@6 ~@4 I@8 J@4 ~@30 K L@8 ~@9 M N@8 ~@3 O@6 ~@9 P@6 ~@20 Q R@4 S@6
>`.pickRestart({
  A: "[[d4,d5]@7 [d4,d5]@8 [d4,d5]@8 [d4,d5]@7 [d4,d5]@8 [d4,ab4,d5]@4 d5@4 d5@4 [d3,d4]@3 [d3,d4]@4 c4 ~ db4 d4 e4@2 ~@14 c4@7 c4@8 c4@8 c4@8 c4@7 c4@8 [c4,f4]@4 d5@4 d5@4 [d3,d4]@3 [d3,d4]@4 c4 ~, a4@15 a4@15 a4@11 ~@22 d4@48 ~@33, ~@7 ab4@15 ~ ab4@15 ~@25 [d2,d3]@64 ~@17, ~@77 f4@15 f4@15 ~ f4@15 ~@21, ~@84 g4@15 ~ g4@15 g4@12 ~@17]/6", // D Ddim D F5 D
  B: "[db4 d4 e4@2 f4@14 d4@7 ~@39 db4@8 db4@8 [db4,bb4]@7 bb4@4 bb4@4 [bb2,bb3], ~@4 [db2,db3]@83 ~@9, ~@18 f4@15 g4@19 db4@4 f4@8 g4@23 ~@9, ~@25 d4@47 f4@15 ~@9, ~@25 bb4@12 db4@4 f4@4 db4@4 bb4@31 ~@16]/4", // Gb Bb Db
  C: "[~@3 [bb2,bb3]@4 bb3 b3 c4 ~ db4@2 c4@13 c4@8 ~@34 db4@11 db4@7 ~@33 eb4@11 eb4@7 ~@17 eb4@7 [eb4,bb4]@7, ~@13 [c2,c3]@55 [db2,db3]@47 f4@4 g4@18 bb4@24 ~@7, ~@26 f4@19 c4@4 f4@11 c4@41 f4@11 db4@42 f4@14, ~@34 bb4@19 c4@3 bb4@23 f4@7 db4@8 g4@25 [c2,c3]@49, ~@34 c4@7 g4@23 f4@4 g4@18 bb4@18 db4@4 bb4@22 f4@7 eb4@7 g4@24]/7", // Bb Eb5 C Db C
  D: "[f4@10 f4@7 f4@3 ~@73 d4@3, [bb1,bb2]@65 a4@31, g4@24 g4@10 f4@4 g4@3 f4@4 g4@6 d4@4 bb4@41, ~@17 bb4@31 f4@38 g4@10, ~@21 f4@6 f4@4 a4@27 d4@4 g4@7 d4@3 g4@3 d4@4 g4@3 d4@7 f4@7]/4", // Bb
  E: "[d4@3 ~@11 eb4@3 eb4@3 ~@4 d4@3 ~@11 eb4@3 eb4@3 ~@4 d4@3 ~@11 eb4@3 eb4@3 ~ [eb4,f4]@3, g4@21 f4@6 d4@4 f4@14 eb4@13 d4@14, ~@3 d4@7 d4@14 g4@21 f4@6 d4@4 f4@14 ~@3, ~@7 f4@14 eb4@13 d4@14 g4@24, ~@7 bb4@12 bb4@12 bb4@5]/3", // Ebsus2
  F: "d4@3 ~@11 eb4@3 eb4@3 ~ [eb4,f4]@3, g4, ~@3 d4@7 d4@14, ~@7 f4@14 ~@3, ~@7 bb4@5", // Ebsus2
  G: "[d4@3 ~@11 c4@3 c4@3 ~@14 eb4@3 ~ eb4@3 eb4@3 ~@4 d4@3 ~@11 c4@3 c4@3 ~@14 eb4@3 ~ eb4@3 eb4@3 ~ eb4@3, bb4@24 bb3@24 bb4@24 [bb3,eb4]@7 g4@3 c5@14, ~@3 d4@7 d4@14 eb4@7 g4@27 d4@38, ~@7 a4@27 c5@28 f4@7 [c4,f4]@27, ~@14 f4@7 [c4,f4]@24 eb4@6 d4@4 a4@41]/4", // Eb5 F5
  H: "[~@14 f4@7 ~@41 f4@7 ~@13 [c5,g5]@48 ~@14, bb4@24 [eb4,f5]@24 d5@7 a4@48 ~@41, d5@14 eb5@7 f4@13 g5@28 eb5@7 [f4,d5]@48 ~@27, ~@7 a4@24 eb5@3 c5@14 bb4@31 [g4,eb5]@48 ~@17, ~@7 c5@14 d5@10 g4@24 c5@17 [eb4,f5]@48 ~@24]/6", // C5 Ebsus2 Dm Cm Ebsus2
  I: "[~@63 ab4, ab4@21 e4@25 d4@13 b3@24 ab4@20 e4@23 d4@13 b3@23 ab4@20 e4@10, ~@4 b3@24 ab4@21 e4@24 d4@13 b3@24 ab4@19 e4@23 d4@14 b3@26, ~@7 d4@11 d4@14 b3@24 ab4@20 e4@24 d4@13 b3@23 ab4@20 e4@23 d4@13, ~@11 gb4@24 d4@4 gb4@24 d4@3 gb4@24 d4@3 gb4@23 d4@4 gb4@23 d4@3 gb4@23 d4@3 gb4@20]/8",
  J: "[~@43 e4@48 ~@5, b3@23 ab4@48 ~@25, ~@3 d4@10 d4@13 b3@48 ~@22, ~@6 gb4@23 d4@4 gb4@48 ~@15, ~@16 e4@23 d4@48 ~@9]/4",
  K: "~@15 d4@3 ~@4 a4@2, ~@5 bb4@3, ~@3 d4",
  L: "[~@4 c4@3 ~ c4@3 ~@13 eb4@3 eb4@3 ~ eb4@3 ~@3 d4@3 ~@10 c4@3 ~ c4@3 ~@13 eb4@3 eb4@3 ~ eb4@3 ~@16 f4@7 ~@39 f4@7 ~@13 [c5,g5]@30, ~ d4@23 c5@26 f4@7 c4@26 bb4@23 [eb4,f5]@23 d5@7 a4@48 ~@8, ~@4 f4@7 [c4,f4]@23 eb4@3 bb4@20 f4@13 c5@10 eb4@3 d5@7 a4@23 eb5@3 g5@26 eb5@7 [f4,d5]@43, ~@14 bb3@26 d4@4 a4@16 bb3@30 c5@13 d5@10 g4@23 c5@16 [eb4,f5]@40, ~@14 eb4@7 g4@26 d4@13 eb4@7 g4@29 eb5@7 f4@13 c5@13 bb4@30 [g4,eb5]@33]/8", // C5 Ebsus2 F5 Dm Ebsus2 Cm
  M: "~@7 d4@3 ~@11 [c4,f4]@3, ~@7 bb4@17, ~@11 d4@6 d4@7, ~@7 a4@5", // F5
  N: "[c4@3 ~@14 eb4@3 ~ eb4@3 eb4@3 ~@4 d4@3 ~@11 c4@3 c4@3 ~@14 eb4@3 ~ eb4@3 eb4@3 ~@18 f4@7 ~@41 f4@7 ~@13 [c5,g5]@31, ~@4 [c4,f4]@24 eb4@3 bb4@21 f4@13 c5@11 eb4@3 d5@7 a4@24 eb5@3 g5@28 eb5@7 [f4,d5]@44, ~@7 bb3@28 d4@3 a4@17 bb3@31 c5@14 d5@3 [eb4,f5]@24 d5@7 a4@48 ~@10, ~@7 eb4@10 c5@28 f4@7 c4@27 bb4@31 g4@24 c5@17 [eb4,f5]@41, ~@14 g4@27 d4@14 eb4@7 g4@31 eb5@7 f4@13 c5@14 bb4@31 [g4,eb5]@34]/8", // C5 F5 Dm Ebsus2 Cm
  O: "[~@25 d4@16 ~@7, ~@3 eb4@17 eb4@24 ~@28, ~@18 db4@20 db4@15 db4@19 db4@48 ~@24, ~@20 b3@15 b3@20 b3@15 b3@48 ~@26, ~@23 a3@34 a3@48 ~@39]/6",
  P: "[~@89 e3@48 ~@7, ~ f3@5 f3@6 f3@28 d4@28 e4@3 c4@3 b3@3 e3@3 e4@48 ~@16, ~@3 a4@11 ~ a4@28 a3@3 bb3@2 bb4@3 bb3@3 bb4@3 bb3@26 c4@48 ~@13, ~@9 f4@11 f4@3 bb3@3 f4@3 a3@3 f4@2 a3@3 f4@28 bb4@48 ~@31, ~@17 e3@43 bb4@3 a3@23 b3@48 ~@10]/6",
  Q: "~@20 f3@3 f4, ~@7 f3@3 ~@2, ~@17 a4@7",
  R: "[~@23 c4, ~@2 f3@31 d4@30 e4@3 c4@3 b3@3 e3@3 e4@4 c4@3 b3@3 e3@4 e4@7, ~@5 a4@31 a3@18 bb4@3 a3@39, ~@8 e3@31 bb3@3 bb4@3 bb3@3 bb4@3 bb3@45, ~@11 f4@3 bb3@3 f4@3 a3@3 f4@4 a3@3 f4@30 bb4@36]/4",
  S: "[~@22 [g2,g3,b4,d5,g5,b5]@105 ~@17, b3@7 b3@24 ~@41, ~ e3@5 e3@16 ~@26, ~@7 e4@48 ~@89, ~@5 c4@24 ~@43]/6", // G
})).s("gm_electric_guitar_clean").gain(0.57).pan(0)

// other · lead 2 sawtooth · "Keyboards 1"
const lead_2_sawtooth = note(`<
  ~@2 A@4 B@4 C@7 D@3 E F@4 G H G H I J I K L@10 G H G H I J I K L@10 G H G H I J I M N@2 O@2 P@5 ~@7 Q R@2 S@8 T@5 ~@16
  U@2 V@3 W@3 X Y@9 Z@8 AA@6 AB AC AD@2 AE@3 AF AG AH AI@2 AJ ~@3 AK AL AM AN@4 AO AP@2 AQ@3 AR AS@2 AT AU AV AW@3 AX AY
  ~@10
>`.pickRestart({
  A: "[~@15 [d2,d3]@64 ~@17]/4", B: "[~@4 [db2,db3]@83 ~@9]/4", C: "[~@13 [c2,c3]@55 [db2,db3]@51 [c2,c3]@49]/7",
  D: "[bb1,bb2]/3", // Bb
  E: "[bb1,bb2]@3 ~@2 bb2@2 bb1@2 ~ bb1@2 bb2@2 ~ bb2@2 bb1@2 bb2@2 ~ bb2@2, ~@9 bb2@2 ~@3 bb1@2 ~@5 bb1@2 ~", // Bb
  F: "bb1@7 ab1@5", G: "[bb1,bb2]@7 [ab1,ab2]@5", H: "[eb2,eb3]@5 [ab1,ab2]@7",
  I: "bb2@3 bb2@3 ~ bb2@3 bb2@3 ~ ab2@3 ab2@3 ~ ab2@3, bb1@7 ab1@5",
  J: "eb3@3 eb3@3 ~ eb3@3 ab2@7 ab2@3 ~ ab2@3, eb2@5 ab1@7", K: "eb3@3 eb3@3 ~ eb3@3 ab3@7 ab3@3 ~ ab3@3, eb2@5 ab2@7",
  L: "bb3@3 eb3@3 ~ f3@3 bb2@3 ~ bb3@3 eb3@2 f3@2 bb2@3", M: "eb3@3 eb3@3 ~ eb3@3 ab2@7 ab2@4 ab2@3, eb2@5 ~@7",
  N: "[b1,b2]/2", O: "[db2,db3]/2", P: "[e2@13 ~@2]/5", Q: "~ b1@23", R: "[b1@23 b1@23 b1@2]/2",
  S: "[~@11 b1@3 ~ b1@3 b1@3 [e1,e2]@13 ~@4 [e1,e2]@6 [e1,e2]@13 ~@4 [e1,e2]@6 [e1,e2]@13 ~@4 [e1,e2]@6 [e1,e2]@13 ~@4 [e1,e2]@6 [b1,b2]@16 ~ [b1,b2]@6 [b1,b2]@16 ~ [b1,b2]@6 [b1,b2]@16 ~ [b1,b2]@6 [b1,b2]@10]/8", // E B
  T: "[~@7 [b1,b2]@6 [e1,e2]@16 ~ [e1,e2]@6 [e1,e2]@16 ~ [e1,e2]@6 [e1,e2]@16 ~ [e1,e2]@6 [e1,e2]@23 ~@15]/5", // B E
  U: "[~@15 [bb1,bb2]@13 [ab1,ab2]@10 [eb2,eb3]@10]/2", // Bb Ab Eb
  V: "[[ab1,ab2]@13 [bb1,bb2]@13 [ab1,ab2]@10 [eb2,eb3]@10 [ab1,ab2]@13 bb2@3 bb2@3 ~ bb2@3 bb2@3, ~@59 bb1@13]/3", // Ab Bb Ab Eb Ab
  W: "[ab2@3 ~ ab2@3 ab2@3 eb3@3 eb3@3 ~ eb3@3 ab2@7 ab2@3 ab2@3 bb2@3 bb2@3 ~ bb2@3 bb2@3 ab2@3 ~ ab2@3 ab2@3 eb3@3 eb3@3 ~ eb3@3 ab2@6, ab1@10 eb2@10 ab1@13 bb1@13 ab1@10 eb2@10 ~@6]/3",
  X: "~ ab2@3 ab2@3 bb3@3 ~ eb3@3 f3@3 bb2@3 ~ bb3@3", Y: "eb3@2 f3@2 bb2@3 bb3@3 ~ eb3@3 f3@3 bb2@3 ~ bb3@3",
  Z: "[eb3@2 f3@2 bb2@3 [bb1,bb2]@14 [ab1,ab2]@10 [eb2,eb3]@10 [ab1,ab2]@14 [bb1,bb2]@14 [ab1,ab2]@10 [eb2,eb3]@10 [ab1,ab2]@14 bb2@3 ~ bb2@3 bb2@3 bb2@3 ~ ab2@3 ab2@3 ~ ab2@3 eb3@3 ~ eb3@3 eb3@3 ab2@7 ab2@3 ~ ab2@3 bb2@3 ~ bb2@3 bb2@3 bb2@3 ~ ab2@3 ab2@3 ~ ab2@3 eb3@3 ~ eb3@3 eb3@3 ab2@7, ~@103 bb1@14 ab1@10 eb2@10 ab1@14 bb1@14 ab1@10 eb2@10 ~@7]/8", // Bb Ab Eb Ab Bb Ab Eb Ab
  AA: "[ab2@4 ab2@3 [b1,b2]@48 ~@24 b4@7 eb5@3 ab5@3 ~ b5@3 gb6@3 b5@3 gb6@2 bb5@2 ~ e6@2 bb5@2 ~ gb6@2 bb5@2 g6@2 ~ gb6@2 bb5@2 ~ e6@2 bb5@2 ~ gb6@2 bb5@2 ~ g6@2 gb6@2 ~ bb5@2 e6@2 ~, ~@55 [db2,db3]@47 ~@42]/6", // B Db
  AB: "bb5@2 gb6@2 ~ bb5@2 g6@2 gb6@2 ~ bb5@2 e6@2 ~ bb5@2 gb6@2 ~ bb5@2",
  AC: "g6@2 ~ d5@2 e5@2 ~ gb5@2 g5@2 ~ a5@2 d6@2 a5@2 ~ gb5@2 gb5 ~",
  AD: "[g5 a5 bb5 g5 ~ a5 bb5 c6 a5 ~ bb5 c6 d6 bb5 c6 ~ d6 e6 eb6@12 db6@2 ~ b5@2 a5@12 ~]/2",
  AE: "[b5@2 db6@2 ~ eb6@12 db6@2 b5@2 ~ a5@12 b5@2 ~ db6@2 bb5@2 ~ gb5@2 ab5@2 ~ f5@2 gb5@2 eb5@2 ~ f5@2 db5@2 ~ eb5 f5 a5 ~ b5 g5 a5 gb5@2 ~ d5 e5 f5]/3",
  AF: "g5 ~ e5 f5 g5 a5 ~ g5@4 f5@5 g5@5 ab5@2 ~", AG: "g5@5 f5@5 g5@5 ab5@2 g5@2 ~ f5@2 g5@2",
  AH: "ab5@2 ~ g5@2 f5@2 ~ g5@2 ab5@2 ~ g5 f5 g5 ab5 ~ g5 f5 g5 ab5 ~ [f5,g5]", // Fsus2
  AI: "[[g5,ab5] g5 [f5,g5] ab5 g5@14 ab5@2 ~ bb5@15 ab5@2 g5 ~@2 f5 ~ db5 ~ c5 ~@2]/2", // Abmaj7 Fsus2
  AJ: "ab4 ~ g4 ~@2 f4 ~ c4 ~@2 d4 eb4 f4 g4 ~ ab4 b4 c5 f5 ~ g5 ab5 b5 c6", AK: "~@5 ab5",
  AL: "~ gb5@5 ab5@5 a5@2 ~ ab5@5 gb5@5", AM: "ab5@4 a5@2 ~ ab5@5 gb5@5 ab5@5 a5@2",
  AN: "[ab5@5 gb5@5 ab5@5 a5@2 ab5@5 gb5@5 ab5@5 a5@2 ~ ab5@5 gb5@5 ab5@4 a5@2 ~ ab5@5 gb5@5 ab5@5 a5@2 ab5@5 gb5@5 ab5@5 a5@2 ab5@5 gb5@5]/4",
  AO: "ab5@5 a5@2 ~ ab5@5 gb5@5 ab5@4 a5@2",
  AP: "[~ ab4@2 a4@2 ~ b4@2 c5@2 ~ d5@5 ab4@2 a4@2 ~ b4@2 c5@2 ~ b4@4 ab4@2 ~ a4@2 b4@2 ~ c5@2 d5@5 ab4@2 ~]/2",
  AQ: "[a4@2 b4@2 ~ c5@2 b4@5 g4@5 f4@5 g4@5 ab4@2 g4@5 f4@5 g4@5 ab4@2 ~ g4@2 f4@2 g4@2 ~ ab4@2 g4@2 ~ f4@2 g4@2 ~ ab4@2 g4 ~ f4 g4 ab4 g4]/3",
  AR: "f4 ~ g4 ab4 g4 [f4,g4] ab4 [f4,g4] [g4,ab4] c4@12 e4@2 ~", AS: "[~@2 e4@12 ~ g4@2 ~@3 g4@12 c5@2 ~@3 c5@11]/2",
  AT: "~ e5@2 ~@3 bb5 ab5 ~ g5 f5 ab5 g5 f5 ~ g5 f5 eb5 d5 ~ f5 eb5 d5 eb5",
  AU: "~ d5 c5 bb4 c5 bb4 ~ ab4 g4 bb4 ab4 ~ g4 f4 ab4 g4 ~ f4 g4 f4 eb4 f4 ~ eb4",
  AV: "d4 c4 d4 ~ c4 bb3 ab3 c4 ~ bb3 ab3 g3 bb3 ~ ab3 g3 f3 g3 f3 ~ eb3 d3 f3 eb3",
  AW: "[~ d3 c3 c3@12 e3 ~@4 e3@12 ~ g3 ~@4 g3@12 c4 ~@4 c4@12 e4 ~@4]/3",
  AX: "c5 ~@2 bb4 ~ ab4 ~@2 g4 ~ f4 ~@2 e4 ~ d4 ~@2 c6 ~@2 bb5 ~@2", AY: "ab5 ~ g5 ~@2 f5 ~@2 e5 ~@2 d5 ~@12",
})).s("gm_lead_2_sawtooth").gain(0.64)

// other · lead 5 charang · "Keyboards 1"
const lead_5_charang = note("<~@162 A@4 ~@22 B C@2 D@8>".pickRestart({
  A: "[~ c5@11 d5@5 eb5@6 f5@23 f5@11 g5@6 a5@5 b5@24 ~@4]/4", B: "~@7 c5@5", C: "[~@2 d5@6 eb5@6 f5@24 ~ f5@9]/2",
  D: "[~@3 g5@6 a5@6 b5@55 b5@105 ~@17]/8",
})).s("gm_lead_5_charang").gain(0.79)

// other · lead 8 bass lead · "Guitar"
const lead_8_bass_lead = note(`<
  ~ A@5 B@4 C@7 D@3 ~ E@4 F G H G I G I G ~@10 F G H G J K J K ~@10 F G H G L G L G M N M N O@5 ~@26 P Q R S ~ T@2 U ~@5
  V@2 W@3 X@4 ~@9 Y@7 Z@6 ~@51
>`.pickRestart({
  A: "[~@18 d5@4 d5@4 [d3,d4]@3 [d3,d4]@4 c4 ~ db4 d4 e4@2 d4@64 [d5,d6]@4 [d5,d6]@4 [d3,d4]@3 [d3,d4]@4 c4 ~]/5", // D
  B: "[db4 d4 e4@2 f4@79 ~@4 [bb4,bb5]@4 [bb4,bb5]@4 [bb2,bb3]]/4", // Bb
  C: "[~@3 [bb2,bb3]@4 bb3 b3 c4 ~ db4@2 c4@55 db4@51 eb4@49]/7", D: "[f4@23 ~]/3", E: "g4@7 f4@7 bb4@7 f4@3",
  F: "bb4@7 a4@7 f4@7 ~@3", G: "eb4@7 g4@3 c5@14", H: "bb4@7 a4@7 f4@10", I: "[bb4,d5]@7 [a4,c5]@7 f4@7 f4@3",
  J: "[bb4,d5]@7 [a4,c5]@7 [f4,eb5]@7 [f4,d5]@3", K: "[eb4,f5]@7 [g4,eb5]@3 [c5,g5]@14", L: "bb4@7 a4@7 f4@7 f4@3",
  M: "gb4@7 f4@7 db4@7 db4@3", N: "b3@7 eb4@3 ab4@14", O: "[[b3,e4,ab4]@13 ~@2]/5",
  P: "~@5 [a4,a5]@3 ~@4 [ab4,ab5]@3 ~@3 [e4,e5]@3 ~@3", Q: "~@4 [b3,b4]@3 ~@4 [e4,e5]@3 ~@3 [ab4,ab5]@3 ~@4",
  R: "~@3 [a4,a5]@3 ~@4 [ab4,ab5]@3 ~@3 [e4,e5]@3 ~@5", S: "~@2 [b3,b4]@3 ~@4 [e4,e5]@3 ~@3 [ab4,ab5]@3 ~@6",
  T: "[~@23 [a4,a5]@3 ~@4 [ab4,ab5]@3 ~@3 [e4,e5]@3 ~@7 [b3,b4]@2]/2", U: "~@5 [e4,e5]@3 ~@3 [ab4,ab5]@3 ~@10",
  V: "[~@15 bb4@7 a4@6 f4@7 ~@3 eb4@7 g4@3]/2", W: "[c5@13 bb4@7 a4@6 f4@10 eb4@7 g4@3 c5@13 bb4@7 a4@6]/3",
  X: "[f4@7 f4@3 eb4@7 g4@3 c5@13 bb4@7 a4@6 f4@7 f4@3 eb4@7 g4@3 c5@13 ~@17]/4",
  Y: "[~@7 bb4@7 a4@7 f4@7 ~@3 eb4@7 g4@3 c5@14 bb4@7 a4@7 f4@10 eb4@7 g4@3 c5@14 bb4@7 a4@7 f4@7 f4@3 eb4@7 g4@3 c5@14 bb4@7 a4@7 f4@3]/7",
  Z: "[~@4 f4@3 eb4@7 g4@3 c5@14 [gb4,gb5]@7 [f4,f5]@7 [db4,db5]@7 [db4,db5]@3 [b3,b4]@7 [eb4,eb5]@3 [ab4,ab5]@14 [gb4,gb5]@7 [f4,f5]@7 [db4,db5]@7 [db4,db5]@3 [b3,b4]@7 [eb4,eb5]@3 [ab4,ab5]@12 ~@19]/6", // Gb F Db B Eb Ab Gb F …
})).s("gm_lead_8_bass_lead").gain(0.57).pan(0.7)

// other · lead 5 charang · "Guitar"
const lead_5_charang_2 = note("<~@147 A@3 B C@5 D E F G@2 H ~@37>".pickRestart({
  A: "[~@6 eb4@12 db4@2 b3@2 ~ a3@12 b3@2 ~ db4@2 eb4@12 ~ db4@2 b3@2 a3@12 ~ b3@2]/3",
  B: "db4@2 ~ d3@2 e3@2 ~ gb3@2 g3@2 ~ a3@2 d4@2 a3@2 ~ gb3@2 gb3 ~",
  C: "[g3 a3 bb3 g3 ~ a3 bb3 c4 a3 ~ bb3 c4 d4 bb3 c4 ~ d4 e4 gb4@5 e4@5 gb4@5 g4@2 gb4@5 e4@5 gb4@5 g4@2 ~ gb4@5 e4@4 gb4@5 g4@2 ~ gb4@5 e4@5 gb4@5 g4@2 bb4@2 ~ gb4@2 ab4@2 ~ f4@2 gb4@2 eb4@2 ~ f4@2 db4@2 ~ eb4 f4 a4 ~ b4 g4 a4 gb4@2 ~ d4 e4 f4]/5",
  D: "g4 ~ e4 f4 g4 a4 ~ g4@4 f4@5 g4@5 ab4@2 ~", E: "g4@5 f4@5 g4@5 ab4@2 g4@2 ~ f4@2 g4@2",
  F: "ab4@2 ~ g4@2 f4@2 ~ g4@2 ab4@2 ~ g4 f4 g4 ab4 ~ g4 f4 g4 ab4 ~ [f4,g4]", // Fsus2
  G: "[[g4,ab4] g4 [f4,g4] ab4 g4@14 ab4@2 ~ bb4@15 ab4@2 g4@2 ~ f4@2 db4@2 c4@2 ~]/2", // Abmaj7 Fsus2
  H: "ab3@2 g3@2 ~ f3@2 c3@2 ~ d3 eb3 f3 g3 ~ ab3 b3 c4 f4 ~ g4 ab4 b4 c5",
})).s("gm_lead_5_charang").gain(0.48).pan(0.3)

// other · distortion guitar · "Guitar"
const distortion_guitar = note("<~@165 A B C D@4 E F@2 G@3 H I@2 J K L M@3 N O ~@10>".pickRestart({
  A: "~@5 ab4", B: "~ gb4@5 ab4@5 a4@2 ~ ab4@5 gb4@5", C: "ab4@4 a4@2 ~ ab4@5 gb4@5 ab4@5 a4@2",
  D: "[ab4@5 gb4@5 ab4@5 a4@2 ab4@5 gb4@5 ab4@5 a4@2 ~ ab4@5 gb4@5 ab4@4 a4@2 ~ ab4@5 gb4@5 ab4@5 a4@2 ab4@5 gb4@5 ab4@5 a4@2 ab4@5 gb4@5]/4",
  E: "ab4@5 a4@2 ~ ab4@5 gb4@5 ab4@4 a4@2",
  F: "[~ ab3@2 a3@2 ~ b3@2 c4@2 ~ d4@5 ab3@2 a3@2 ~ b3@2 c4@2 ~ b3@4 ab3@2 ~ a3@2 b3@2 ~ c4@2 d4@5 ab3@2 ~]/2",
  G: "[a3@2 b3@2 ~ c4@2 b3@5 g3@5 f3@5 g3@5 ab3@2 g3@5 f3@5 g3@5 ab3@2 ~ g3@2 f3@2 g3@2 ~ ab3@2 g3@2 ~ f3@2 g3@2 ~ ab3@2 g3 ~ f3 g3 ab3 g3]/3",
  H: "f3 ~ g3 ab3 g3 [f3,g3] ab3 [f3,g3] [g3,ab3] c4@12 e4@2 ~", I: "[~@2 e4@12 ~ g4@2 ~@3 g4@12 c5@2 ~@3 c5@11]/2",
  J: "~ e5@2 ~@3 bb4 ab4 ~ g4 f4 ab4 g4 f4 ~ g4 f4 eb4 d4 ~ f4 eb4 d4 eb4",
  K: "~ d4 c4 bb3 c4 bb3 ~ ab3 g3 bb3 ab3 ~ g3 f3 ab3 g3 ~ f3 g3 f3 eb3 f3 ~ eb3",
  L: "d3 c3 d3 ~ c3 bb2 ab2 c3 ~ bb2 ab2 g2 bb2 ~ ab2 g2 f2 g2 f2 ~ eb2 d2 f2 eb2",
  M: "[~ d2 c2 c3@12 e3 ~@4 e3@12 ~ g3 ~@4 g3@12 c4 ~@4 c4@12 e4 ~@4]/3",
  N: "c4 ~@2 bb3 ~ ab3 ~@2 g3 ~ f3 ~@2 e3 ~ d3 ~@2 c5 ~@2 bb4 ~@2", O: "ab4 ~ g4 ~@2 f4 ~@2 e4 ~@2 d4 ~@12",
})).s("gm_distortion_guitar").gain(0.48).pan(0)

// bass · lead 8 bass lead · "Keyboards 2"
const bass = note(`<
  ~@2 A@4 B@4 C@7 D@3 E ~@12 F@9 G ~@8 F@9 G ~@8 H@2 I@2 J@5 ~@7 K L@2 M@8 N@5 ~@3 O@4 ~ P@3 ~@13 Q R@9 S ~@7 T@7 U V@2
  W@3 X Y@3 Z AA AB@4 ~@33
>`.pickRestart({
  A: "[~@15 [d1,d2]@64 ~@17]/4", B: "[~@4 [db1,db2]@83 ~@9]/4", C: "[~@13 [c1,c2]@55 [db1,db2]@51 [c1,c2]@49]/7",
  D: "[bb0,bb1]/3", // Bb
  E: "[bb0,bb1]@3 ~@2 bb1@2 bb0@2 ~ bb0@2 bb1@2 ~ bb1@2 bb0@2 bb1@2 ~ bb1@2, ~@9 bb1@2 ~@3 bb0@2 ~@5 bb0@2 ~", // Bb
  F: "bb2@3 eb2@3 ~ f2@3 bb1@3 ~ bb2@3 eb2@2 [f1,f2]@2 bb1@3", G: "bb2@3 eb2@3 ~ f2@3 bb1@3 ~ bb2@3 eb2@2 f2@2 bb1@3",
  H: "[b1,b2]/2", I: "[db2,db3]/2", J: "[e2@13 ~@2]/5", K: "~ b1@23", L: "[b1@23 b1@23 b1@2]/2",
  M: "[~@11 b1@3 ~ b1@3 b1@3 [e1,e2]@13 ~@4 [e1,e2]@6 [e1,e2]@13 ~@4 [e1,e2]@6 [e1,e2]@13 ~@4 [e1,e2]@6 [e1,e2]@13 ~@4 [e1,e2]@6 [b1,b2]@16 ~ [b1,b2]@6 [b1,b2]@16 ~ [b1,b2]@6 [b1,b2]@16 ~ [b1,b2]@6 [b1,b2]@10]/8", // E B
  N: "[~@7 [b1,b2]@6 [e1,e2]@16 ~ [e1,e2]@6 [e1,e2]@16 ~ [e1,e2]@6 [e1,e2]@16 ~ [e1,e2]@6 [e1,e2]@23 ~@15]/5", // B E
  O: "[~@5 [e1,e2]@16 ~ [e1,e2]@6 [e1,e2]@16 ~ [e1,e2]@6 [e1,e2]@16 ~ [e1,e2]@6 [e1,e2]@22]/4", // E
  P: "[~@23 [e1,e2]@16 ~ [e1,e2]@6 [e1,e2]@23 ~@3]/3", Q: "~@7 bb2@3 ~ eb2@3 f2@3 bb1@3 ~ bb2@3",
  R: "eb2@2 [f1,f2]@2 bb1@3 bb2@3 ~ eb2@3 f2@3 bb1@3 ~ bb2@3", S: "eb2@2 f2@2 bb1@3 ~@17",
  T: "[~@7 [b1,b2]@48 [db2,db3]@47 eb2@12 db2@2 b1@2 ~ a1@12 b1@2 ~ db2@2 eb2@12 ~ db2@2 b1@2 a1@12 ~ b1@2]/7", // B Db
  U: "db2@2 ~ d2@20 ~", V: "[~@18 eb2@12 db2@2 ~ b1@2 a1@12 ~]/2",
  W: "[b1@2 db2@2 ~ eb2@12 db2@2 b1@2 ~ a1@12 b1@2 ~ db2@2 d2@20 ~@13]/3", X: "~@7 eb2@12 db2@2 b1@2 ~",
  Y: "[a1@12 b1@2 ~ db2@2 eb2@12 db2@2 ~ b1@2 a1@17 ~ a1@3 a1 c2@4 c2 d2@2 ~ d2@2 f2@2 ~ c2@3]/3",
  Z: "~ c2 d2@3 d2 ~ c2@2 c2@2 ~ bb1@2 a1@4 a1 db2@4 db2", AA: "f2!3 ~ f2!3 a1@4 a1 d2@4 d2 f2@2 ~ a2@2 a2@2",
  AB: "[~ f2@11 e2@11 bb1@23 [bb1,bb2]@11 [a1,a2]@11 [a1,a2]@24 ~@4]/4", // Bb A
})).s("gm_lead_8_bass_lead").gain(0.64)

// bass · electric bass finger · "Keyboards 2"
const bass_2 = note("<~@165 A B C D ~ E@2 F G H I J@2 K L@4 M N@3 ~ O P@2 Q@8>".pickRestart({
  A: "~@20 eb2 ~ eb2!2", B: "eb2!2 ~ eb2!3 eb2@2 ~ db2@2 b1@2 ~ a2!4 ~ a2!4 ~",
  C: "a2@2 b1@2 db2@2 ~ eb2!3 ~ eb2!4 ~ eb2 eb2@2 db2@2 ~ b1@2", D: "a2!2 ~ a2!4 ~ a2!2 a2@2 b1@2 ~ db2@2 eb2@5 ~@2",
  E: "[~@4 db2@10 gb2@5 db2@2 eb2@10 gb2@5 d2@2 db2@10]/2", F: "gb2@5 db2@2 ~ eb2@10 gb2@4 d2@2",
  G: "~ a2@2 ~@3 a2@2 ~@3 a2 a2@2 ~@2 a2@2 ~@3 a2@2 ~", H: "~@2 a1 a1@2 ~ a1@2 ~@3 a1@2 ~@3 a2 ~ a2@2 ~ a2@2 ~",
  I: "~@2 a2@2 ~@3 a1 a1@2 ~@2 a1@4 a1 db2@4 db2 eb2@2",
  J: "[gb2 ~ gb2!3 eb2@4 eb2 db2@4 db2 a1@2 ~ a1!4 ~ a1@3 a1 db2@4 db2 eb2@2 ~ gb2!3 ~ gb2 eb2@4 eb2 db2@3]/2",
  K: "db2 ~ a1@2 a1!2 ~ a1!2 [c1,c2]@15", // C
  L: "[~@2 [c1,c2]@15 ~@3 [c1,c2]@15 ~@2 [c1,c2]@15 ~@2 a1@4 a1 db2@4 db2 eb2@2 gb2 ~ gb2!3 eb2@4 eb2 db2@4 db2 a1@2 ~ a1!4 ~ a1@3 a1 db2@3]/4", // C
  M: "~ db2 eb2@2 ~ gb2!3 ~ gb2 eb2@4 eb2 db2@3 db2 ~ a1@2 a1!2",
  N: "[~ a1!2 [c1,c2]@15 ~@2 [c1,c2]@15 ~@3 [c1,c2]@15 ~@2 [c1,c2]@15 ~@2]/3", O: "~@7 f2@5",
  P: "[~@2 e2@12 bb1@24 ~ [bb1,bb2]@9]/2", Q: "[~@3 [a1,a2]@12 [a1,a2]@55 [g1,g2]@105 ~@17]/8",
})).s("gm_electric_bass_finger").gain(0.63)

// other · string ensemble 1 · "Aural Left"
const string_ensemble_1 = note(`<
  ~@2 A@4 B@4 C@7 D@3 ~@13 E F G H E F G H I@2 ~@8 E F G H E F G H I@2 ~@39 J@5 ~@3 K@2 ~ L@7 ~@7 M@8 N@3 ~@11 O@3 P Q@2
  R@3 S T@3 ~@2 U@4 V W X ~ Y@2 Z AA AB AC AD@2 AE AF@4 AG AH@3 ~ AI AJ@2 AK@8
>`.pickRestart({
  A: "[~@15 [d2,d3,d4,d5]@64 ~@17]/4", B: "[~@4 [db2,db3,db4,db5]@83 ~@9]/4",
  C: "[~@13 [c2,c3,c4,c5]@55 [db2,db3,db4]@51 [c2,c3,c4]@49]/7", D: "[bb1,bb2,bb3]/3", E: "[f4,bb4,db5]",
  F: "[c4,eb4,ab4]", G: "[g4,bb4,eb5]", H: "[gb4,bb4,db5]", I: "[f4,ab4,c5]/2",
  J: "[~@9 b4@46 b5@46 ~@19, ~@9 b3@92 ~@19]/5", K: "[~ b4@23 b5@23 ~, ~ b3@46 ~]/2",
  L: "[~@21 gb4@23 gb5@10 b5@13 bb5@46 f4@46 ~@9]/7",
  M: "[~@7 [f4,bb4,db5]@24 [c4,eb4,ab4]@24 [g4,bb4,eb5]@24 [gb4,bb4,db5]@24 [f4,bb4,db5]@24 [c4,eb4,ab4]@24 [g4,bb4,eb5]@24 [gb4,bb4,db5]@17]/8", // Bbm Ab Eb Gb Bbm Ab Eb Gb
  N: "[~@7 [f4,ab4,c5]@48 ~@17]/3", // Fm
  O: "[~@6 eb2@12 db2@2 b1@2 ~ a1@12 b1@2 ~ db2@2 eb2@12 ~ db2@2 b1@2 a1@12 ~ b1@2]/3", P: "db2@2 ~ d2@20 ~",
  Q: "[~@18 eb2@12 db2@2 ~ b1@2 a1@12 ~]/2", R: "[b1@2 db2@2 ~ eb2@12 db2@2 b1@2 ~ a1@12 b1@2 ~ db2@2 d2@20 ~@13]/3",
  S: "~@7 eb2@12 db2@2 b1@2 ~", T: "[a1@12 b1@2 ~ db2@2 eb2@12 db2@2 ~ b1@2 a1@17 ~@21]/3",
  U: "[~ [f3,f4,a4]@11 [e3,f4,a4]@11 bb2@23 [bb2,bb3,bb4,d5]@11 [a2,a3,bb4,d5]@11 [a2,a3,c5,e5]@24 eb2 ~ eb2!2]/4", // F Fmaj7 Bb Bbmaj7 Am
  V: "eb2!2 ~ eb2!3 eb2@2 ~ db2@2 b1@2 ~ a2!4 ~ a2!4 ~", W: "a2@2 b1@2 db2@2 ~ eb2!3 ~ eb2!4 ~ eb2 eb2@2 db2@2 ~ b1@2",
  X: "a2!2 ~ a2!4 ~ a2!2 a2@2 b1@2 ~ db2@2 eb2@5 ~@2", Y: "[~@4 db2@10 gb2@5 db2@2 eb2@10 gb2@5 d2@2 db2@10]/2",
  Z: "gb2@5 db2@2 ~ eb2@10 gb2@4 d2@2", AA: "~ a2@2 ~@3 a2@2 ~@3 a2 a2@2 ~@2 a2@2 ~@3 a2@2 ~",
  AB: "~@2 a1 a1@2 ~ a1@2 ~@3 a1@2 ~@3 a2 ~ a2@2 ~ a2@2 ~", AC: "~@2 a2@2 ~@3 a1 a1@2 ~@2 a1@4 a1 db2@4 db2 eb2@2",
  AD: "[gb2 ~ gb2!3 eb2@4 eb2 db2@4 db2 a1@2 ~ a1!4 ~ a1@3 a1 db2@4 db2 eb2@2 ~ gb2!3 ~ gb2 eb2@4 eb2 db2@3]/2",
  AE: "db2 ~ a1@2 a1!2 ~ a1!2 [c1,c2]@15", // C
  AF: "[~@2 [c1,c2]@15 ~@3 [c1,c2]@15 ~@2 [c1,c2]@15 ~@2 a1@4 a1 db2@4 db2 eb2@2 gb2 ~ gb2!3 eb2@4 eb2 db2@4 db2 a1@2 ~ a1!4 ~ a1@3 a1 db2@3]/4", // C
  AG: "~ db2 eb2@2 ~ gb2!3 ~ gb2 eb2@4 eb2 db2@3 db2 ~ a1@2 a1!2",
  AH: "[~ a1!2 [c1,c2]@15 ~@2 [c1,c2]@15 ~@3 [c1,c2]@15 ~@2 [c1,c2]@15 ~@2]/3", AI: "~@7 [f3,f4,a4]@5",
  AJ: "[~@2 [e3,f4,a4]@12 bb2@24 ~ [bb2,bb3,bb4,d5]@9]/2", // Fmaj7 Bb
  AK: "[~@3 [a2,a3,bb4,d5]@12 [a2,a3,c5,e5]@55 [g2,g3,b4,d5,g5]@105 ~@17]/8", // Bbmaj7 Am G
})).s("gm_string_ensemble_1").gain(0.31).pan(0)
// … 238 more lines

More by Genesis