Strudelify

The Fountain of Salmacis

Genesis

KeyB minorTempo106 bpm
0:00/0:00
// The Fountain of Salmacis — Genesis
// 105.9 bpm, 4/4, key B minor. 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, 6/4 at bar 132, 4/4 at bar 133, 5/4 at bar 184, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 211 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(105.9/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.

// other · pan flute · "Peter Gabriel"
const pan_flute = note("<~@14 A B C D E F G H I ~@40 J K L M N O P Q@2 ~@139>".pickRestart({
  A: "f#5@3 ~ f#5@2 ~@2 e5@2 ~@6 d5@6 ~@2 c#5@2 ~@2 c#5@2 ~@2", B: "d5@10 ~@6 b4@13 ~@3",
  C: "~@8 b4@2 ~ b4 ~@2 b4@4 ~@2 b4 ~@3 b4@3 ~ c#5 ~@3", D: "c#5@5 ~ f#5@8 ~@6 f#4@5 ~ f#4@5 ~",
  E: "a4@3 ~ g4@3 ~ f#4@3 ~ e4 ~ e4 ~", F: "f#4@9 ~@3 e4@6 ~@2 d4@12",
  G: "~@4 c#5@2 ~@2 c#5@2 ~@2 c#5 ~ c#5@4 ~@2 d5@5 ~@7", H: "f#5@2 ~ c#5@2 ~@2 d#5@9 ~@4 f#4 ~ f#4@2 g4@2 ~ b4@2 ~@3",
  I: "b4@11 ~@2 b4@18 ~", J: "f#5@7 ~ e5@7 ~ d5@7 ~ c#5@7 ~", K: "d5@11 ~ c#5@6 ~@2 b4@10 ~@2",
  L: "~@4 b4@2 ~@2 b4@2 ~@2 b4 ~ b4@4 ~@2 b4@2 ~@2 b4@3 ~ c#5@2 ~@2", M: "d#5@4 ~@2 f#5@8 ~@6 f#5 ~@3 f#5 ~ f#5@4 ~@2",
  N: "a5@6 ~@2 g5@7 ~ f#5@7 ~ e5@3 ~ e5@2 ~@2", O: "g5@7 ~ f#5@2 ~@2 e5@7 ~ d5@8 ~@4",
  P: "~@8 d5@2 ~@2 d5 ~ c#5@8 ~ d5@5 ~@4", Q: "[f#5@2 d#5 c#5@2 ~ d#5@8 ~@6 f#4@3 ~ g4@2 b4@2 ~@2 c#5@9 ~ b4@3 ~@21]/2",
})).s("gm_pan_flute").gain(0.32)

// other · oboe · "Peter Gabriel"
const oboe = note(`<
  ~@24 A B C D E F G H I J K@2 L@2 M@2 N O P Q R S T@2 ~@25 A B C U V F W H I J K@2 ~@26 X@3 ~@2 Y Z AA ~@3 AB@3 ~ AC AD
  AE@2 AF@4 ~@25 AG@2 AH@2 AI AJ@4 AK@2 AL@2 ~ AM AN@3 ~ AO AP AQ@3 AR@2 ~@26
>`.pickRestart({
  A: "e4@7 ~ e4@5 ~@3 e4@7 ~ e4@6 ~@2", B: "e4@7 ~ e4@3 ~ f4@16 ~@4", C: "g4@5 ~ e4@5 ~ g4@3 ~ a4@5 ~ f#4@5 ~ a4@3 ~",
  D: "b4@5 ~ d5@2 e5@7 ~ e5@6 ~@2 f#5@7 ~", E: "f#5@15 ~ e5@14 ~@2", F: "e5@15 ~ b4@15 ~",
  G: "a4@4 a4@6 ~@2 a4@3 ~ a4@2 ~@2 b4 ~ c5@5 ~ c5@3 ~", H: "b4@3 ~ b4 ~ c#5@5 ~ d#5 ~ e5@18",
  I: "~@12 g5@3 ~ f#5@3 e5@2 ~ d5@6 e5@4", J: "d5@5 ~ c5@2 b4@21 ~@3",
  K: "[~@12 g5@4 f#5@3 ~ e5 ~ d5@5 ~ a5@7 ~@2 a5@27]/2",
  L: "[~@6 g4 ~ a4@2 ~ b4@2 ~ c5@6 ~ b4@3 a4@2 ~ g4@2 ~ b4@14 a4@3 ~ b4@7 ~ e5@7 ~]/2",
  M: "[b5@2 ~ a5@2 ~ b5@21 ~ d5@2 ~ e5@21 ~@12]/2", N: "c5@7 ~ b4@7 ~ a4@7 ~ g4@7 ~", O: "e4@8 f#4@7 ~ g4@11 ~ b4@3 ~",
  P: "a4@11 ~@2 c5@3 g5@8 f#5@5 ~@3", Q: "f#5@10 ~ f#5 g5@4 e5@16", R: "~@12 g5@3 ~ f#5@4 e5@2 d5@6 e5@4",
  S: "b4@5 ~ a4@2 g4@19 ~@5", T: "[~@12 g5@3 ~ f#5@3 ~ e5@2 d5@5 ~ a5@36]/2", U: "b4@8 ~@4 e5@3 ~ e5@6 ~@2 f#5@7 ~",
  V: "f#5@15 ~ e5@8 ~@4 d5@2 e5@2", W: "a4@2 ~@2 a4@6 ~@2 a4@2 ~@2 a4@2 ~@2 b4 ~ c5@5 ~ c5@2 ~@2",
  X: "[~@4 d#5@3 ~ d#5@2 ~ d#5@2 ~@2 d#5@3 ~ c#5@2 ~@2 b4@2 ~ f#5@10 ~@2 d#5@3 ~ c#5@3 b4@2 ~@2 g#5@24 ~@23]/3",
  Y: "~@25 d#5@3 d#5@2 ~@2", Z: "d#5@2 ~@2 d#5@3 ~ c#5@3 b4@2 ~@2 f#5@10 ~@2 d#5@3 c#5@2", AA: "~@2 b4@3 ~ b5@25 ~",
  AB: "[~@13 a#4@4 ~@2 a#4@2 ~@2 a#4@6 ~@2 a#4@5 g#4@5 ~ g#4@4 ~ c#5@5 ~ c#5@4 ~@2 f#4@34 ~@3]/3", AC: "~@27 g#4@4 ~",
  AD: "g#5@5 ~ f#5@4 ~@2 e5@5 d#5@4 ~@2 c#5@4 ~ b4@4",
  AE: "[~@2 c#5@10 ~ f#4@4 ~@2 d#5@18 ~@5 f#4@3 ~@2 d#5@4 ~@2 d#5@3 ~@3 c#5@4 ~]/2",
  AF: "[c#5@4 ~@2 c#5@4 ~@2 e5@5 f#4@22 ~@23 f#5@44 ~@22]/4",
  AG: "[~@27 g4 ~ a4 ~ b4@2 ~@2 c5@5 ~ b4@2 ~@2 a4 ~ g4@2 ~@2 b4@11 ~@2]/2",
  AH: "[~ a4@2 ~@2 b4@7 ~ e5@6 ~@2 b5@26 ~@2 d5@2 e5@12 ~]/2", AI: "~@15 e5 ~ f#5@2 ~@2 g5@5 ~@5 e5",
  AJ: "[~ f#5@2 ~@2 g5@4 ~@8 e5@2 ~@2 e5@2 ~ e5 ~@2 f#5@2 ~@2 a5@2 ~@2 g5@12 ~@6 g5@6 ~@2 f#5@14 ~ g5@9 ~@4 d5@2 e5@25 ~@12]/4",
  AK: "[~ g5@3 ~ f#5@3 ~ e5 ~ d5@4 ~@2 e5@3 ~ d5@5 ~ c5 ~ b4@17 ~@18]/2",
  AL: "[~ g5@3 ~ f#5@3 e5 ~@2 d5@5 a5@6 ~@3 a5@28 ~@11]/2", AM: "~@17 a#4@6 ~ a#4@2 ~ a#4@5",
  AN: "[~@5 a#4@5 ~ g#4@5 ~@2 g#4@2 ~@2 c#5@8 ~ c#5@6 ~@2 f#4@39 ~@18]/3", AO: "~@13 g#4@3",
  AP: "g#5@6 f#5@6 ~ e5@6 d#5@6 ~ c#5@6",
  AQ: "[~ b4@5 ~@2 c#5@13 ~@2 f#4@5 ~ d#5@25 ~@2 f#4@5 ~@2 d#5@5 ~@2 d#5@6 c#5@4 ~@3 c#5@5 ~@2 c#5@5 ~]/3",
  AR: "[~ e5@5 ~@2 f#4@51 ~@5]/2",
})).s("gm_oboe").gain(0.32)

// chords · string ensemble 1 · "Mellotron (strings)"
const string_ensemble_1 = note(`<
  ~ A B@2 ~ A B@2 ~@2 C@2 D@2 ~@8 E F E F E F E F E F G H I J E F E F E F E F G H I K@2 L@4 M@2 B@2 ~ N@3 D@2 ~@8 E F E
  F E F E F E F G H I J O@4 ~@64 P@8 Q@6 R@3 S@5 T@8 U V@4 W@5 X@4 Y@5 Z@4 AA@5
>`.pickRestart({
  A: "[b3,e4,g4,b4,e5,g5]", B: "[a3,d4,f#4,a4,d5,f#5]/2", C: "[[c4,b4,e5,g5], g4 ~]/2", D: "[a3,d4,f#4,a4,d5,f#5,a5]/2",
  E: "[b3,c4,e4,g4]@7 ~ [a3,c4,e4,f#4]@7 ~", F: "[a3,b3,d4,f#4]@7 ~ [g3,b3,d4,e4]@7 ~", G: "[c5,e5,g5]@29 ~@3",
  H: "[b4,d5,g5]@31 ~", I: "[g4,c5,e5]@15 ~ [g4,b4,d5]@16", J: "[a4,d5,f#5]", K: "[[a4,d5,f#5]@15 ~]/2",
  L: "[~ [b3,e4,g4,b4,e5,g5]@31 [a3,d4,f#4,a4,d5,f#5]@32]/4", M: "[b3,e4,g4,b4,e5,g5]/2", N: "[c4,g4,b4,e5,g5]/3",
  O: "[[e4,g#4,b4,e5]@45 [e4,g#4,b4,e5]@23 [g4,b4,d5,g5]@22 [a4,d5,f#5,a5]@11 ~ [b4,d#5,f#5,b5]@11 ~@15]/4", // E G D B
  P: "[~@21 [c4,g4,b4,e5,g5]@128 [a3,d4,f#4,a4,d5,f#5,a5]@64 [b3,c4,e4,g4]@14 ~@2 [a3,c4,e4,f#4]@14 ~@2 [a3,b3,d4,f#4]@11]/8", // Cmaj7 D Cmaj7 F#m7b5 Bm7
  Q: "[~@5 [g3,b3,d4,e4]@14 ~@2 [b3,c4,e4,g4]@14 ~@2 [a3,c4,e4,f#4]@14 ~@2 [a3,b3,d4,f#4]@14 ~@2 [g3,b3,d4,e4]@14 ~@2 [b3,c4,e4,g4]@14 ~@2 [a3,c4,e4,f#4]@14 ~@2 [a3,b3,d4,f#4]@14 ~@2 [g3,b3,d4,e4]@14 ~@2 [b3,c4,e4,g4]@14 ~@2 [a3,c4,e4,f#4]@14 ~@2 [a3,b3,d4,f#4]@11]/6", // Em7 Cmaj7 F#m7b5 Bm7 Em7 Cmaj7 F#m7b5 Bm7 …
  R: "[~@5 [g3,b3,d4,e4]@14 ~@2 [c5,e5,g5]@29 ~@3 [b4,d5,g5]@31 ~ [g4,c5,e5]@11]/3", // Em7 C G C
  S: "[~@5 [g4,b4,d5]@16 [a4,d5,f#5]@60 ~@4 [a#4,d#5,f#5]@75]/5", // G D D#m
  T: "[~@6 [a4,d5,f#5]@54 [g#4,c#5,f#5]@27 [g#4,c#5,f5]@27 [g#4,b4,e5]@54 ~ [f#4,b4,d#5]@54 [g#4,c5,d#5]@13 [e4,g#4,c#5]@13 ~ [f#4,a4,c#5]@6]/8", // D C#sus4 C# E B G# C#m F#m
  U: "~@7 [f#4,a4,d5]@25", V: "[~ [g#4,b4,e5]@26 [f#4,a4,d5]@26 [g#4,b4,e5]@26 ~ [f#4,a4,d5]@26 [g#4,b4,e5]@22]/4",
  W: "[~@2 [f#4,a4,d5]@13 [g#4,b4,e5]@13 [f#4,a4,d5]@13 [g#4,b4,e5]@13 [f#4,a4,d5]@13 [g#4,b4,e5]@13]/5", // D E D E D E
  X: "[[f#4,a4,d5]@26 ~ [g#4,b4,e5]@26 [f#4,a4,d5]@26 [g#4,b4,e5]@26 [f#4,a4,d5]@23]/4", // D E D E D
  Y: "[~@3 [g#4,b4,e5]@26 [f#4,a4,d5]@26 [g#4,b4,e5]@26 [f#4,a4,d5]@26 [g#4,b4,e5]@26 ~ [f#4,a4,d5]@26]/5", // E D E D E D
  Z: "[[g#4,b4,e5]@13 [f#4,a4,d5]@13 [g#4,b4,e5]@13 [f#4,a4,d5]@13 [g#4,b4,e5]@12]/4", // E D E D E
  AA: "[~@2 [a#4,c#5,f#5]@157 ~]/5", // F#
})).s("gm_string_ensemble_1").gain(0.16).pan(0.7)

// chords · acoustic guitar steel · "Acoustic Guitar (steel)"
const acoustic_guitar_steel = note("<~@14 A B C D E F G H ~@30 I J K ~@8 A B C D E F G H ~@140>".pickRestart({
  A: "b4 g4 e4 g4 ~ g4 e4 g4 ~ g4 e4 g4 ~ g4 e4@2, ~@2 b4 ~ b4 ~ b4@2",
  B: "~ f#4 ~ f#4 ~ f#4 d4 f#4 b4 f#4 d4 f#4 ~ f#4 d4@2, b4 d4 b4 ~@3 b4 ~",
  C: "~ g4 e4@2 ~ g4 e4@2 ~ f#4 e4@2 a#4 f#4 e4@2, b4 ~ b4 ~ a#4 ~@3", D: "b4 f#4 d#4 f#4 b4 f#4 d#4 f#4 b4@7 ~",
  E: "b4 g4 e4 g4 ~ g4 e4 g4 ~ g4 e4 g4 ~@2 e4@2, ~@2 b4 ~ b4 ~ b4@2, ~@13 g4@3",
  F: "~ f#4 ~ f#4 ~ f#4 d4 f#4 b4 f#4 d4 f#4 ~@2 d4@2, b4 d4 b4 ~@3 b4@2, ~@13 f#4@3",
  G: "~ g4 e4@2 ~@2 e4@2 ~@2 e4@2 ~@2 e4@2, b4@2 ~@2 b4@3 ~ a#4@2 ~@2 a#4@2 ~@2, ~@5 g4@2 ~@2 f#4@2 ~@2 f#4@2 ~",
  H: "~ f#4 ~ f#4 ~ f#4 d#4 f#4@5 ~@4, b4 d#4 b4 ~@5", I: "~@8 a4@3 ~ g4@3 ~ a4@6 ~@2 b4@7 ~",
  J: "b4@16 ~@4 e5@3 ~ f#5@3 ~ g5@3 ~", K: "a4@21 ~@11",
})).s("gm_acoustic_guitar_steel").gain(0.19)

// other · distortion guitar · "Distorted Guitar"
const distortion_guitar = note(`<
  ~@12 A@2 ~@47 A@2 ~@22 B C D E F G H@2 I J ~ K L M@2 ~@25 N@3 O@6 P@4 Q R@2 S@2 ~@14 T@3 ~@43 U@6 ~@2
>`.pickRestart({
  A: "[d3,f#3,a3,d4]/2", B: "e2@2 ~@2 e2@2 e2@2 e2 e2@2 e2@3 ~ e2@2 e2@2 e2@2 e2@2 e2@2 ~ e2@2 e2@2 e2@2",
  C: "e2@2 e2@2 ~@2 e2@2 e2 e2@2 e2@2 e2@2 ~@2 e2@2 e2@2 e2@2 e2 e2@2 ~@2 e2@2 e2@2",
  D: "e2@2 e2@2 e2@2 ~@2 e2 e2@2 e2@2 e2@2 e2@2 ~@2 e2@2 e2@2 e2 e2@2 e2@2 ~@2 e2@2",
  E: "e2@2 e2@2 e2@2 e2@2 ~ e2@2 e2@2 e2@2 e2@2 e2@2 ~@13", F: "~@28 c3 ~ c3 ~", G: "c3 ~@4 f2@26 ~",
  H: "[~@9 c3!2 c3@2 ~@2 c3@2 ~@6 [c3,g3]@33 ~@8]/2", I: "~@15 e2 ~ f#2 ~ g2 ~ a2 ~ b2 c3 ~ b2 ~ c3 ~ d3 ~",
  J: "e3 ~ f#3 ~ g3 ~ [a2,e3,a3]@4 ~@22", K: "~@26 e5@3 ~@3", L: "f5@3 ~@3 e5@3 ~@2 d5@3 ~@3 e5@3 ~@3 f5@3 ~@2 e5@3 ~",
  M: "[~@2 d5@3 ~@3 c5@3 ~@2 [e2,b2]@45 ~@6]/2", N: "[~@8 [c#3,f#3]@21 ~ [c#3,f3]@21 ~@2 [e2,b2]@43]/3",
  O: "[~@2 [b2,f#3]@45 [c3,c4]@11 ~ [c#3,c#4]@10 ~ [c#3,c#4]@10 ~ [d3,d4]@35 ~@11 f#4@11 b4@10 ~ [e3,g#4]@20 ~@2 f#4@10 ~@2 b4@9, ~@127 d3@22 ~@43]/6", // B5 C C# D E
  P: "[~@2 g#4@36 ~ f#4@3 ~@3 f4@2 c#4@14 ~ g#3@7 ~ c#4@12 ~@3 f4@4 ~ f#4 ~@2 g#4@21 ~ g#5@13]/4",
  Q: "~@2 f#5@2 ~@3 f5 ~@2 c#5@14 g#4@6 ~@2",
  R: "[c#5@14 ~ g#4@6 ~@2 g#4@2 ~@2 g#4@2 ~@2 a#4@2 ~ b4@2 ~@2 b4@2 ~@2 a#4@2 ~ b4@2 ~@2 b4@2 ~@2 a#4@2 ~@2 b4@2 ~@2 b4@2 ~]/2",
  S: "[c#5@2 ~@2 c#5@2 ~@2 c#5@2 ~@2 c5@2 ~@2 c#5@2 ~ c#5@2 ~@2 d#5@2 ~@2 c#5@2 ~@2 c#5@2 ~ c5@2 ~@2 c#5@2 ~@2 c#5@2 ~ d#5@2 ~@17]/2",
  T: "[~@21 [d3,f#3,a3,d4]@64 ~@11]/3", // D
  U: "[~@20 g#4@18 ~@2 a4@2 ~ b4@2 ~ a4@11 ~@2 d5@11 ~@2 g#4@17 ~@2 a4@2 ~@2 b4@2 ~ c#5@78 ~@16]/6",
})).s("gm_distortion_guitar").gain(0.64)

// bass · electric bass finger · "Bass (finger)"
const bass = note(`<
  ~ A B@2 ~ A B@2 ~@2 C@2 D@2 ~@7 E F G F G F G H G I J K L@2 M F G F G H G I J N L@2 M O P Q B@2 Q@2 B@2 ~ C@3 D@2 ~@7
  E F G F G F G H G I J N L@2 R S T U V W X@3 Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ@3 AR@2 AS@3 AT AU
  AV AW@3 AX@2 AY AZ BA BB BC@2 BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU@2 ~ BV C@3 BW@2 BX@8 BY@3 BZ@5
  CA@4 CB@2 CC@3 CD@2 CE@7 CF@2 CG@7 CH@2 CI@5 ~ CJ
>`.pickRestart({
  A: "g2", B: "b1/2", C: "c3!32", D: "d2/2", E: "b2@8 d#4 c#4 ~ b3 ~ g#3 f#3 ~", F: "a2 g2 b2 a2",
  G: "e3@4 d3@4 f#3 e3 ~ d3 ~ b2 g2 ~", H: "a2@4 g2@4 b2@3 ~ a2@4", I: "a1 b1 c2 d2",
  J: "e2@4 f#2@4 g2 a2 ~ b2 ~ c3 d3@2", K: "~@6 d3@2 d3@5 ~ d2@2 d2@6 d3@2 d3@6 d2@2, d2@13 ~@19",
  L: "~@3 d3 d3@3 d2!2 g2 a2 b2@2 a2 g2@2, d2@3 ~@5", M: "~@3 d3 d3@3 d2 d2@8, d2@3 ~@5",
  N: "~@3 d3 d3@3 d2 d2@3 d3 d3@3 d2, d2@13 ~@19", O: "d2@3 d3 d3@3 d2 d2@8",
  P: "~ c2 ~ c2!3 ~ c2!3 ~ c2!3 ~ c2!3 ~ c2!3 ~ c2!3 ~ c2!3 ~ c2",
  Q: "c2!2 ~ c2!3 ~ c2!3 ~ c2!3 ~ c2!3 ~ c2!3 ~ c2!3 ~ c2!3 ~ c2", R: "~@3 d3 d3@3 d2 d2@4 ~@4, d2@3 ~@5",
  S: "e1@2 ~@2 e1@2 e1@2 e1 e1@2 e1@2 ~@2 e1@2 e1@2 e1@2 e1@2 e1@2 ~ e1@2 e1@2 e1@2",
  T: "e1@2 e1@2 ~@2 e1@2 e1 e1@2 e1@2 e1@2 ~@2 e1@2 ~@2 e1@2 e1 e1@2 ~@2 e1@2 e1@2",
  U: "e1@2 e1@2 e1@2 ~@2 e1 e1@2 e1@2 e1@2 e1@2 ~@2 e1@2 e1@2 e1 e1@2 e1@2 ~@2 e1@2",
  V: "e1@2 e1@2 e1@2 e1@2 ~ e1@2 e1@2 e1@2 e1@2 e1@2 ~@13", W: "~@30 c2 ~",
  X: "[c2 ~@3 f2@34 ~@5 c2@2 ~@2 c2@2 ~@5 [c2,g2]@33 ~@9]/3", Y: "~@15 e2 ~ f#2 ~ g2 ~ a2 ~ b2 c3 ~ b2 ~ c3 ~ d3 ~",
  Z: "e3 ~ f#3 ~ g3 ~ a3@2 ~@24", AA: "~@19 e1@2 ~@2 e1@3 e1 ~ e1 ~ e2 ~",
  AB: "~@2 e2@3 ~ e2 ~ e2 e1@2 ~@2 e1@3 ~ e1 ~ e1 ~ e2 ~@3 e2@3 e2 ~ e2 ~",
  AC: "e1@2 ~@2 e1@3 ~ e1!2 ~ e2 ~@3 e2@3 ~ e2 ~ e2 ~ e1@2 ~ e1@3 ~ e1 ~",
  AD: "e1 ~ e2 ~@3 e2@3 e2 ~ e2 ~ e1@11 ~ g2@3 g2@3 ~", AE: "~@4 e1 ~@3 e1 ~ e1!2 ~ e1 ~ g2@3 ~ d2@3 ~@4 e2 ~@3 e2 ~",
  AF: "e2 ~ e2 ~ e2@2 e2@2 ~ e3@3 ~ a2 ~ b2@2 e2 ~@3 e2 ~ e2 ~ e2 e2@2 e2@2 ~@2",
  AG: "e3@3 ~ a2 ~ b2@2 e2 ~@2 e2 ~ e2 ~ e2 ~ e2@2 e2@2 ~ e3@3 ~ a2 ~ b2@2 e2 ~",
  AH: "~@2 e2 ~ e2 ~ e2 ~ e2@2 e2@2 ~ e3@3 ~ a2 ~ b2@2 e2 ~@3 e2!2 ~ e2 ~ e2@2",
  AI: "e2@2 ~@2 d2@6 ~ e2 ~@3 e2 ~ e2 ~ e2 ~ e2@2 e2@2 ~ d2@3 ~@3",
  AJ: "e2@2 d2 ~@3 d2 ~ d2 ~ d2 d2@2 d2@2 ~@2 d3@6 ~@2 d2 ~@2 d2 ~ d2 ~",
  AK: "d2 ~ d2@2 d2@2 ~ d3@3 ~@5 e3 ~ d3 ~ a2 ~ e3 ~ d3 ~ a2 e3 ~ d3 ~ a2 ~",
  AL: "e3 ~ d3 ~ a2 ~ e3 ~ d3 ~ a2 e3 ~ d3 ~ a2 ~ e3 ~ e3 ~ e3 ~ e3 d3 ~ a2 ~ e2 ~@3",
  AM: "e2 ~ e2 ~ e2 ~ e2@2 e2@2 ~ e3@3 ~ a2 ~ b2@2 e2 ~@3 e2 ~ e2!2 ~ e2@2 e2@2",
  AN: "~@2 e3@3 ~ a2 b2@2 ~ e2 ~@2 e2 ~ e2 ~ e2 ~ e2@2 e2@2 ~ d2@6 ~@2",
  AO: "e2 ~@3 e2 ~ e2 ~ e2 ~ e2 e2@2 ~@2 d2@3 ~@3 e2@2 c#2 ~@2 c#2 ~ c#2 ~ c#2 ~",
  AP: "c#2@2 c#2@2 ~@2 c#3@6 ~ c#2 ~@3 c#2 ~ c#2 ~ c#2 ~ c#2@2 c#2@2 ~ c#3@3 ~",
  AQ: "[~@4 f#2@10 ~ g#2@10 ~ f#2@10 ~@2 g#2@10 ~ c#2@10 ~ d#2@11 ~ c#2@2 ~ g#3@2 ~@4 g#3@2 ~@4 g#3@3 ~@2 b2@2 c#3@2]/3",
  AR: "[b2 ~ c#3 ~ b2 ~ c#3 ~ b2@2 c#3@3 b2@4 ~@2 g#2@2 c#2@15 c#3@3 ~@4 f#2@14 ~@2 f#3@5, ~@21 f2 ~@10]/2",
  AS: "[~@2 f#2@6 f#3@5 f#2@5 ~ f#3@4 ~@2 f#2@10 ~ g#2@10 ~ f#2@10 ~@2 g#2@10 ~ c#2@10 ~ d#2@11 c#2@3 ~]/3",
  AT: "g#3@2 ~@4 g#3@2 ~@3 g#3@3 ~@3 b2@2 c#3@2 b2 ~ c#3 ~ b2 ~ c#3 b2@2 c#3@2",
  AU: "~@2 b2@4 ~@2 g#2@2 c#2@15 c#3@3 ~@2 f2@2", AV: "f#2@14 ~ f#3@6 ~@2 f#2@8 ~",
  AW: "[~@2 f#3@2 ~@2 c#3@2 ~@2 f#2@2 ~ d#2@11 ~ c#2@11 g#2@11 f#2@11 ~ d2@11 f#2@5 ~ d2@5 d3@11 a2@4]/3",
  AX: "[~@2 d3@6 c#3@11 g#2@11 ~ c#2@22 e2@7 ~@2 e2@2]/2", AY: "e3@10 b2@2 e2@7 b2 ~ e2@2 e3@5 e2@4",
  AZ: "~@2 b2@6 ~@5 b2@8 ~@4 b2@7", BA: "~@4 b2@7 ~@4 g#2@3 ~ f#2@3 ~ e2@2 ~@2 g#2@3 f#2@2",
  BB: "~@2 e2@2 ~@2 g#2@4 f#2@2 ~ e2@2 ~@2 d2@10 ~ d3@4",
  BC: "[~@2 f#2 ~ g2@2 a2@2 d2@11 d3@6 ~@5 d3@11 ~ d4@5 f#3@2 g3@2 a3@2 d3@11]/2",
  BD: "d4@7 ~@5 d3@5 f#3@6 ~@4 d4@2 ~ c#4@2",
  BE: "~@2 c#2 ~@3 c#2 ~ c#2 ~ c#2 ~ c#2!2 ~@3 c#2 ~ f2 ~ f#2 ~ g#2 ~ c#3 ~@3 c#3!2 ~",
  BF: "c#3 ~ c#3 ~ c#3 ~@3 c#3 ~@4 c#3 ~ f#2@2 ~@2 f#2 ~ f#2 ~@3 f#2 ~ f#2 ~@2 f#2 ~",
  BG: "a#2 ~ b2 ~ c#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3!2 ~ f#3 ~ f#3 ~@3 f#3@2 ~@2 f#3 ~@3 c#2@2 ~",
  BH: "c#2 ~ c#2 ~@3 c#2 ~ c#2 ~@3 c#2 f2 ~ f#2 ~ g#2 ~ c#3 ~@3 c#3 ~ c#3 ~@3 c#3!2 ~",
  BI: "~@2 c#3@2 ~@2 c#3 ~@3 f#2 ~@2 f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~@3 f#2 ~ a#2 ~ b2 c#3 ~",
  BJ: "f#3 ~@3 f#3 ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~@2 f#3 ~@3 f#3 ~@3 c#2@9", BK: "~@2 d#2@11 e2@19",
  BL: "~@4 f2@4 c#2@2 ~@2 f2@2 ~ a#2@3 ~ f2@3 ~ a#2@3 ~ f#2@3 c#2@2",
  BM: "~@2 f#2@3 ~ g#2@3 ~ f#2@3 c#3@2 ~@2 g#2 ~ g#2 ~ g#2 ~ g#2 ~ f#2 ~ g#2 ~ c#2@3",
  BN: "c#2 ~ e2 ~ g#2 ~ c#3 ~ g#2 ~ g#2 ~ g#2!2 ~ f#2 ~ g#2 ~ c#2@3 ~ c#2 ~ e2 ~ g#2 ~ c#3 g#2 ~",
  BO: "g#2 ~ g#2 ~ g#2 ~ f#2 ~ g#2 ~ c#2@3 c#2 ~ e2 ~ g#2 ~ c#3 ~ g#2 ~ g#2 ~ g#2 ~ g#2 ~ f#2 g#2 ~",
  BP: "c#2@3 ~ c#2 ~ e2 ~ g#2 ~ c#3 ~ b2!2 ~ b2 ~ b2 ~ a2 ~ b2 ~ e2@3 ~ e2 ~ g2 b2 ~",
  BQ: "e3 ~ b2 ~ b2 ~ b2 ~ b2 ~ a2 ~ b2 ~ e2@3 e2 ~ g2 ~ b2 ~ e3 ~ b2 ~ b2 ~ b2!2 ~",
  BR: "a2 ~ b2 ~ e2@3 ~ e2 ~ g2 ~ b2 ~ e3 b2 ~ b2 ~ b2 ~ b2 ~ a2 ~ b2 ~ [e1,e2]@5", // E
  BS: "~@6 e2 ~ e2 ~ e2 ~ e2@11 ~@6 a2 ~ a2", BT: "~ a2 ~ a2@3 ~@3 b2 ~ b2 ~ b2 ~ b2@5 ~ e3@3 ~@8",
  BU: "[~ [e1,e2]@43 ~@20]/2", BV: "~@21 c3!11", BW: "[c3!21 d2@43]/2",
  BX: "[~@5 d3@2 g3@2 ~@2 a3@2 ~@2 d4@2 d3@3 ~ a2@8 g2@8 b2@8 a2@8 e3@8 d3@8 f#3@2 e3@2 ~@2 d3@2 ~@2 b2@2 g2@2 ~@2 a2@8 g2@8 b2@8 a2@8 e3@8 d3@8 f#3@2 e3@2 ~@2 d3@2 ~@2 b2@2 g2@2 ~@2 a2@8 g2@8 b2@8 a2@8 e3@8 d3@8 f#3@2 e3@2 ~@2 d3@2 ~@2 b2@2 g2@2 ~@2 a2@8 g2@8 b2@6 ~@2 a2@8 e3@8 d3@3]/8",
  BY: "[~@5 f#3@2 e3@2 ~@2 d3@2 ~@2 b2@2 g2@2 ~@8 d3@2 d3@6 d2@2 d2@6 d3@2 d3@6 d2@2 ~@6 d3@2 d3@6 d2@2 d2@2 g2@2 a2@2 b2@4 a2@2 g2@4 ~@6 d3@2 d3@3, ~@21 d2@13 ~@19 d2@12 ~@20 d2@11]/3",
  BZ: "[~@3 d2@2 d2@2 g2@2 a2@2 b2@4 a2@2 g2@4 ~@6 d3@2 d3@6 d2 ~ d2@15 ~@7 d3@2 d3@6 d2 ~ d2@16 d#1@75, ~@21 d2@12 ~@20 d2@12 ~@95]/5",
  CA: "[~@6 d1@53 ~ c#1@53 ~@9 e3@5 ~, ~@115 e2@12 ~, ~@118 b2@9 ~]/4",
  CB: "[e3@6 ~ e3@3 e3@3 ~ e3@6 e3@3 ~ e3@3 e3@3 ~ e3@3 e3@6 ~ b2@11 ~@2 b2@10]/2",
  CC: "[~@4 b2@10 ~@3 b2@11 ~@3 g#2@4 f#2@4 ~ e2@3 ~ g#2@4 ~ f#2@4 e2@4 ~ g#2@4 f#2@4 ~ e2@4 d2@13 d3@12]/3",
  CD: "[~ d2@13 a1@7 b1@6 d2@13 d3@13 d2@11]/2",
  CE: "[~@3 a1@13 d2@13 d3@13 d2@13 a1@13 d2@13 d3@13 d2@13 a1@13 d2@13 d3@13 d2@13 a1@13 d2@13 d3@13 d2@13 a1@6 ~ b1@6]/7",
  CF: "[d2@13 d3@13 ~ d2@13 a1@13 d2@11]/2",
  CG: "[~@2 d3@13 d2@13 a1@13 d2@13 d3@13 d2@13 a1@13 d2@13 d3@13 d2@13 a1@13 d2@13 d4@13 d2@9 ~ d2@3 ~ b2@3 a2@3 b2@3 d3@3 ~ d2@13 d4@13]/7",
  CH: "[d2@9 d2@3 ~ b2@3 a2@3 b2@3 d3@3 ~ d2@13 d4@13 d2@9 ~ d2@2]/2",
  CI: "[~ b2@3 a2@3 b2@3 ~ d3@3 d2@13 d4@13 d2@9 ~ d2@3 b2@3 ~ a2@3 b2@3 d3@3 f#1@78 ~@16]/5",
  CJ: "~@5 f#1!10 ~ f#1!11 ~ f#1!3 ~",
})).s("gm_electric_bass_finger").gain(0.45)

// bass · electric bass finger · "Bass (finger)" · soft notes
const bass_soft = note("<~@14 A B C D A B E ~@42 A B C D A F E ~@138 G H I>".pickRestart({
  A: "e2 ~@2 e2!2 ~@2 e2!2 ~@2 b2!2 a2 f#2@2", B: "b1 ~@2 b1!2 ~@2 b1!2 ~@2 b2!2 a2 b2@2",
  C: "e2@2 ~ e2!2 ~@2 e2 f#2 ~@2 f#2!2 ~ d#2 e2", D: "f#2 ~@2 f#2!2 ~@2 f#2 b2 a2 ~ b2 ~ a2 f#2@2",
  E: "e2 ~@2 e2!2 ~@2 e2 f#2 ~@2 f#2!2 ~ e2 f#2", F: "b1@2 ~@4 b1@2 b1@2 ~@4 b1@2 b1@2 ~@4 b2@2 b2@2 a2 ~ b2@4",
  G: "~@18 f#1!11 ~ f#1!2", H: "f#1!10 ~ f#1!11 ~ f#1!9", I: "f#1!2 ~ f#1!2 ~@27",
})).s("gm_electric_bass_finger").gain(0.3)

// chords · electric guitar clean · "Electric Guitar (clean)"
const electric_guitar_clean = note(`<
  A@2 ~@2 B@2 ~@2 A@4 ~@11 C@3 D E F G H I@7 D E F G H J@6 ~@8 K@2 L@2 ~@11 C@3 D E F G H M@5 ~@26 N O@2 ~@3 P@2 ~@23 Q
  R@2 S T U ~ V@3 W@6 ~@3 X@5 Y@7 ~@38
>`.pickRestart({
  A: "~ g4 ~@3 g4 ~@3 g4 ~@3 g4 b4@2, e4@7 ~ e4@7 ~ e4@7 ~ e4@7 ~, ~ b4@2 b4@2 b4@2 ~",
// … 312 more lines

More by Genesis