Strudelify

Seven Stones

Genesis

KeyE♭ majorTempo140 bpm
0:00/0:00
// Seven Stones — Genesis
// 140 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 180 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(140/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 · rock organ · "hamm1"
const rock_organ = note(`<
  A@5 B@2 C@2 D@2 E@2 F@6 G@5 H@2 I@2 J@2 K@6 L@4 M@8 N O@2 P Q R@2 S@7 T U V U V W X Y@2 Z@2 AA@3 ~@16 AB@2 AC@7 AD@4
  AE@2 AF@7 AG@3 AH@4 AI@8 AJ@8 AK AL AM AN AO@7 AP@7 AQ@2 AR AS AT@2 AU@7 ~@12
>`.pickRestart({
  A: "[~ [g5,b5]@12 [gb5,a5]@13 [e5,g5]@12 [gb5,a5]@13 [e5,g5]@12 [d5,gb5]@13 b4@13 gb5@12 [c5,e5]@13 [d5,gb5]@6, ~@76 d5@25 ~@19]/5", // G Gbm Em Gbm Em D C D
  B: "[[e5,g5]@6 [d5,gb5]@13 [e5,g5]@12 [c5,e5,c6]@13 [b4,d5,b5]@4]/2", // Em D Em C Bm
  C: "[~@2 [g4,b4,g5]@6 [c5,e5,c6]@13 [a4,d5,a5]@12 [f5,a5]@13 [e5,g5]@2, ~@11 c6@5]/2", // G C D5 F Em
  D: "[~@5 [d5,eb5,g5,bb5]@19]/2", E: "[~@13 [f4,d5]@23 ~@2 [g4,c5,eb5]@10, ~@13 bb4@35]/2",
  F: "[~@15 [f4,ab4,c5]@49 ~ g4@23 ~@27 g4@29, ~@5 eb5@29 d5@14, ~@65 bb4@79, ~@15 f4@4 ~@5]/6", // Fm
  G: "[~@21 d5@24 ~@26 [eb4,g4,bb4]@24 ~ [g4,bb4]@24, ~@21 f4@47 ~@27 eb4@23 ~@2, ~@7 a4@15 ~@18, ~@45 c5@49 ~@26]/5", // Eb Gm
  H: "[~@2 c5@12 bb4@11 ~@14 bb4@9, ~ [db4,f4]@23, ~@25 ab4@16 ~@7]/2", // Db
  I: "[~@4 c5@24 ~ [g4,bb4]@19, ~@3 ab4@25 ~@20, ~ eb4@11]/2", J: "[~@6 [f4,d5]@23 ~@2 [g4,c5,eb5]@17, ~ bb4@7]/2",
  K: "[~@8 [f4,ab4,c5]@49 ~ g4@23 ~@28 g4@35, ~@8 eb5@87 d5@49, ~@29 bb4@43, ~@83 f4@24 ~@37]/6", // Fm
  L: "[~@14 d5@24 ~@26 [eb4,g4,bb4]@24 ~ [eb4,g4,bb4]@7, ~@14 f4@47 ~@35, ~@14 a4@45 ~@37, ~@39 c5@49 ~@8]/4", // Eb
  M: "[~@19 c5@12 bb4@12 ~@14 bb4@11 ~ c5@24 ~ [g4,bb4]@24 ~ g5@23 ~ gb5@24 [g4,bb4,d5]@22 ~@2 [eb4,g4,c5], ~@19 f4@50 eb4@49 ~@74, ~@19 db4@47 ~@126, ~@43 ab4@16 ~@9 ab4@25 ~@26 [a4,d5]@48 ~@25]/8", // Gm Cm D5
  N: "~@11 [f4,a4,c5]@11 ~@2", O: "[[c4,e4,g4]@14 ~@4 [eb4,g4,c5]@29 ~]/2", P: "[g4,bb4,d5]@7 ~",
  Q: "[eb4,g4,bb4]@5 ~ [f4,g4,c5]@4 ~@2", R: "[f4@25 ~@12 eb5@11, bb4, db5@37 ~@11, ~@25 [eb4,g4]@23]/2",
  S: "[~ db5@13 c5@12 bb4@11 a4@12 ~ f5@23 gb5@24 f5@24 [c5,eb5]@24 [db5,e5]@23, ~ [eb4,ab4]@24 ~ [c4,f4,c5]@24 db5@71 ~@47, ~@50 bb4@47 ab4@71]/7", // Cm Dbm Ab5 F5
  T: "~ [a4,eb5,gb5]@23", U: "~ [a4,d5,gb5]@23", V: "~ [ab4,db5,e5]@23", W: "[a4,db5,e5]@23 ~",
  X: "~ f4@22 ~, [a4,c5]@11 ~", Y: "[g4,c5,eb5]@8 ~ [ab4,c5,f5]@2 ~",
  Z: "[[e4,g4,c5]@12 [d4,b4]@11 ~ [e4,c5]@11 ~ [d4,gb4,a4]@11 ~, ~ g4@2 ~]/2", // C G C D
  AA: "[[f4,a4]@12 e4@11 ~ [eb4,bb4,d5]@47 ~, c5@23 ~@49, ~@12 g4@59 ~]/3", // F Ebmaj7
  AB: "[~@16 [f4,d5]@23 ~@2 [g4,c5,eb5]@7, ~ bb4@2]/2", // Dm Cm
  AC: "[~@18 [ab4,c5]@49 ~ g4@22 ~@28 g4@49 ~, ~@18 eb5@87 d5@62 ~, ~@18 f4@47 ~@3 bb4@98 ~@2, ~@31 f4@8 ~@17]/7", // Ab
  AD: "[d5@24 ~@26 [g4,bb4]@23 ~ [eb4,g4,bb4]@22, f4@47 ~@2 eb4@24 ~@23, a4@15 ~@17, ~@24 c5@49 ~@23]/4", // Gm Eb
  AE: "[~@4 c5@12 bb4@11 ~@14 bb4@7, ~ [db4,f4]@11, ~@27 ab4@16 ~@5]/2", // Db
  AF: "[~@5 [ab4,c5]@25 [g4,bb4]@24 ~ g5@24 ~ gb5@24 [g4,bb4,d5]@22 ~@2 [eb4,g4,c5]@11 ~ [f4,a4,c5]@11 ~ [c4,e4,g4]@14 ~@2, ~@5 eb4@48 ~@2 [a4,d5]@49 ~@64]/7", // Ab Gm Cm F C D5
  AG: "[~@2 [eb4,g4,c5]@26 ~@4 [g4,bb4,d5]@21 ~@3 [eb4,g4,bb4]@10 ~@2 [f4,g4,c5]@4]/3", // Cm Gm Eb Fsus2
  AH: "[~@8 [db5,f5]@48 db5@11 ~ c5@13 db5@12 c5@3, ~ ab4@11, ~@7 eb5@5]/4", // Db
  AI: "[~@9 f5@25 gb5@24 f5@24 [c5,eb5]@24 ~ db5@24 [a4,eb5,gb5]@22 ~@2 [a4,gb5]@22 ~@3 [ab4,db5]@12, ~@9 db5@72 ~@26 e5@22 ~@26 d5@24 ~@13, ~@29 ab4@36 ~@31]/8", // Cm Ebdim D Db5
  AJ: "[~@12 [d5,gb5]@24 [ab4,db5,e5]@23 ~@2 [a4,db5,e5]@24 [f4,a4,c5]@22 ~@2 [g4,c5,eb5]@16 ~@2 [ab4,c5,f5]@4 ~@2 [g4,c5,eb5]@16 ~@2 [ab4,c5,f5]@4 ~@2 [gb4,b4,eb5]@16 ~@2 [ab4,db5,f5]@5 ~ [gb4,b4,eb5]@11, ~@6 a4@11 ~@79]/8", // D Dbm A F Cm Fm Cm Fm …
  AK: "~ [ab4,db5,f5]@11 ~ [a4,db5,gb5]@11", AL: "~ [ab4,db5,f5]@11 ~ [db5,gb5]@11, ~@13 a4@9 ~@2",
  AM: "~ [db5,f5,ab5]@11 ~ [db5,gb5,a5]@11", AN: "~ [f5,ab5]@11 ~ [db5,gb5,a5]@10 ~, db5 ~",
  AO: "[~ [f5,ab5,db6]@9 ~@3 db5@24 d5@24 ~ db5@24 [ab4,b4]@24 a4@24 [f4,b4,d5]@23 ~ [f4,bb4,d5]@10, ~@13 a4@72 ~@25 c5@22 ~@36, ~@13 gb4@47 ~@2 e4@71 ~@35]/7", // Db Abm Bdim Bb
  AP: "[~@14 [e4,a4]@25 [bb4,d5]@24 [e4,a4,c5]@23 ~ [f4,a4,c5]@24 [db4,f4,ab4]@23 ~ [eb4,ab4,b4]@33, ~@14 c5@23 ~@2 f4@22 ~@107]/7", // A5 Bb Am F Db Abm
  AQ: "[~@3 [e4,ab4,db5]@11 ~ [eb4,ab4,b4]@33]/2", AR: "~@2 [e4,bb4,db5]@5 ~ [eb4,ab4,b4]@4", AS: "~@2 [db4,ab4,bb4]",
  AT: "[~ [e4,g4,b4,db5]@2]/2", // Dbm7b5
  AU: "[~@17 [eb4,gb4]@47 ~@2 [b3,eb4,f4,ab4]@49 [a3,db4,e4,ab4]@51 ~@2, ~@17 b4@98 ~@53, ~@17 gb3@49 ~@102]/7", // Ebm Fm7b5 Amaj7
})).s("gm_rock_organ").gain(0.18).pan(0.9)

// chords · rock organ · "hamm1" · soft notes
const rock_organ_soft = note("<~@76 A@2 B@6 C@6 D@3 ~@28 E@3 ~@4 F@2 ~@37 G@2 ~@11>".pickRestart({
  A: "[~ [f4,d5]@25 [g4,c5,eb5]@22, ~ bb4@47]/2", // Dm Cm
  B: "[~@3 [ab4,c5]@49 ~ g4@22 ~@28 g4@41, ~ eb5@29 d5@18, ~@3 f4@47 ~@3 bb4@91, ~@13 f4@4 ~@7]/6", // Ab
  C: "[~@9 d5@24 ~@26 [g4,bb4]@24 ~ [eb4,g4,bb4]@25 c5@12 bb4@12 ab4@11, ~@9 f4@47 ~@2 eb4@24 ~@27 [db4,f4]@35, ~ a4@5 ~@10, ~@34 c5@49 ~@61]/6", // Gm Eb Db
  D: "[~@2 bb4@11 ~ [ab4,c5]@25 [g4,bb4]@25 ~@8, ~@7 eb4@24 ~@5]/3", E: "[~@9 bb4@47 ~@16]/3", F: "[~@12 e5@23 ~@13]/2",
  G: "[~@11 [a3,db4,gb4]@13]/2", // Gbm
})).s("gm_rock_organ").gain(0.04).pan(0.9)

// chords · rock organ · "HAMM1HI"
const rock_organ_2 = note(`<
  A@5 B@2 C@2 D@2 E@2 F@6 G@5 H@2 I@2 J@2 K@6 L@4 M@8 N O@2 P Q R@2 S@7 T U V U V W X Y@2 Z@2 AA@3 ~@16 AB@2 AC@7 AD@4
  AE@2 AF@7 AG@3 AH@4 AI@8 AJ@8 AK AL AM AN AO@7 AP@7 AQ@2 AR AS AT@2 AU@7 ~@12
>`.pickRestart({
  A: "[~ [g6,b6]@12 [gb6,a6]@13 [e6,g6]@12 [gb6,a6]@13 [e6,g6]@12 [d6,gb6]@13 b5@13 gb6@12 [c6,e6]@13 [d6,gb6]@6, ~@76 d6@25 ~@19]/5", // G Gbm Em Gbm Em D C D
  B: "[[e6,g6]@6 [d6,gb6]@13 [e6,g6]@12 [c6,e6,c7]@13 [b5,d6,b6]@4]/2", // Em D Em C Bm
  C: "[~@2 [g5,b5,g6]@6 [c6,e6,c7]@13 [a5,d6,a6]@12 [f6,a6]@13 [e6,g6]@2, ~@11 c7@5]/2", // G C D5 F Em
  D: "[~@5 [d6,eb6,g6,bb6]@19]/2", E: "[~@13 [f5,d6]@23 ~@2 [g5,c6,eb6]@10, ~@13 bb5@35]/2",
  F: "[~@15 [f5,ab5,c6]@49 ~ g5@23 ~@27 g5@29, ~@5 eb6@29 d6@14, ~@65 bb5@79, ~@15 f5@4 ~@5]/6", // Fm
  G: "[~@21 d6@24 ~@26 [eb5,g5,bb5]@24 ~ [g5,bb5]@24, ~@21 f5@47 ~@27 eb5@23 ~@2, ~@7 a5@15 ~@18, ~@45 c6@49 ~@26]/5", // Eb Gm
  H: "[~@2 c6@12 bb5@11 ~@14 bb5@9, ~ [db5,f5]@23, ~@25 ab5@16 ~@7]/2", // Db
  I: "[~@4 c6@24 ~ [g5,bb5]@19, ~@3 ab5@25 ~@20, ~ eb5@11]/2", J: "[~@6 [f5,d6]@23 ~@2 [g5,c6,eb6]@17, ~ bb5@7]/2",
  K: "[~@8 [f5,ab5,c6]@49 ~ g5@23 ~@28 g5@35, ~@8 eb6@87 d6@49, ~@29 bb5@43, ~@83 f5@24 ~@37]/6", // Fm
  L: "[~@14 d6@24 ~@26 [eb5,g5,bb5]@24 ~ [eb5,g5,bb5]@7, ~@14 f5@47 ~@35, ~@14 a5@45 ~@37, ~@39 c6@49 ~@8]/4", // Eb
  M: "[~@19 c6@12 bb5@12 ~@14 bb5@11 ~ c6@24 ~ [g5,bb5]@24 ~ g6@23 ~ gb6@24 [g5,bb5,d6]@22 ~@2 [eb5,g5,c6], ~@19 f5@50 eb5@49 ~@74, ~@19 db5@47 ~@126, ~@43 ab5@16 ~@9 ab5@25 ~@26 [a5,d6]@48 ~@25]/8", // Gm Cm D5
  N: "~@11 [f5,a5,c6]@11 ~@2", O: "[[c5,e5,g5]@14 ~@4 [eb5,g5,c6]@29 ~]/2", P: "[g5,bb5,d6]@7 ~",
  Q: "[eb5,g5,bb5]@5 ~ [f5,g5,c6]@4 ~@2", R: "[f5@25 ~@12 eb6@11, bb5, db6@37 ~@11, ~@25 [eb5,g5]@23]/2",
  S: "[~ db6@13 c6@12 bb5@11 a5@12 ~ f6@23 gb6@24 f6@24 [c6,eb6]@24 [db6,e6]@23, ~ [eb5,ab5]@24 ~ [c5,f5,c6]@24 db6@71 ~@47, ~@50 bb5@47 ab5@71]/7", // Cm Dbm Ab5 F5
  T: "~ [a5,eb6,gb6]@23", U: "~ [a5,d6,gb6]@23", V: "~ [ab5,db6,e6]@23", W: "[a5,db6,e6]@23 ~",
  X: "~ f5@22 ~, [a5,c6]@11 ~", Y: "[g5,c6,eb6]@8 ~ [ab5,c6,f6]@2 ~",
  Z: "[[e5,g5,c6]@12 [d5,b5]@11 ~ [e5,c6]@11 ~ [d5,gb5,a5]@11 ~, ~ g5@2 ~]/2", // C G C D
  AA: "[[f5,a5]@12 e5@11 ~ [eb5,bb5,d6]@47 ~, c6@23 ~@49, ~@12 g5@59 ~]/3", // F Ebmaj7
  AB: "[~@16 [f5,d6]@23 ~@2 [g5,c6,eb6]@7, ~ bb5@2]/2", // Dm Cm
  AC: "[~@18 [ab5,c6]@49 ~ g5@22 ~@28 g5@49 ~, ~@18 eb6@87 d6@62 ~, ~@18 f5@47 ~@3 bb5@98 ~@2, ~@31 f5@8 ~@17]/7", // Ab
  AD: "[d6@24 ~@26 [g5,bb5]@23 ~ [eb5,g5,bb5]@22, f5@47 ~@2 eb5@24 ~@23, a5@15 ~@17, ~@24 c6@49 ~@23]/4", // Gm Eb
  AE: "[~@4 c6@12 bb5@11 ~@14 bb5@7, ~ [db5,f5]@11, ~@27 ab5@16 ~@5]/2", // Db
  AF: "[~@5 [ab5,c6]@25 [g5,bb5]@24 ~ g6@24 ~ gb6@24 [g5,bb5,d6]@22 ~@2 [eb5,g5,c6]@11 ~ [f5,a5,c6]@11 ~ [c5,e5,g5]@14 ~@2, ~@5 eb5@48 ~@2 [a5,d6]@49 ~@64]/7", // Ab Gm Cm F C D5
  AG: "[~@2 [eb5,g5,c6]@26 ~@4 [g5,bb5,d6]@21 ~@3 [eb5,g5,bb5]@10 ~@2 [f5,g5,c6]@4]/3", // Cm Gm Eb Fsus2
  AH: "[~@8 [db6,f6]@48 db6@11 ~ c6@13 db6@12 c6@3, ~ ab5@11, ~@7 eb6@5]/4", // Db
  AI: "[~@9 f6@25 gb6@24 f6@24 [c6,eb6]@24 ~ db6@24 [a5,eb6,gb6]@22 ~@2 [a5,gb6]@22 ~@3 [ab5,db6]@12, ~@9 db6@72 ~@26 e6@22 ~@26 d6@24 ~@13, ~@29 ab5@36 ~@31]/8", // Cm Ebdim D Db5
  AJ: "[~@12 [d6,gb6]@24 [ab5,db6,e6]@23 ~@2 [a5,db6,e6]@24 [f5,a5,c6]@22 ~@2 [g5,c6,eb6]@16 ~@2 [ab5,c6,f6]@4 ~@2 [g5,c6,eb6]@16 ~@2 [ab5,c6,f6]@4 ~@2 [gb5,b5,eb6]@16 ~@2 [ab5,db6,f6]@5 ~ [gb5,b5,eb6]@11, ~@6 a5@11 ~@79]/8", // D Dbm A F Cm Fm Cm Fm …
  AK: "~ [ab5,db6,f6]@11 ~ [a5,db6,gb6]@11", AL: "~ [ab5,db6,f6]@11 ~ [db6,gb6]@11, ~@13 a5@9 ~@2",
  AM: "~ [db6,f6,ab6]@11 ~ [db6,gb6,a6]@11", AN: "~ [f6,ab6]@11 ~ [db6,gb6,a6]@10 ~, db6 ~",
  AO: "[~ [f6,ab6,db7]@9 ~@3 db6@24 d6@24 ~ db6@24 [ab5,b5]@24 a5@24 [f5,b5,d6]@23 ~ [f5,bb5,d6]@10, ~@13 a5@72 ~@25 c6@22 ~@36, ~@13 gb5@47 ~@2 e5@71 ~@35]/7", // Db Abm Bdim Bb
  AP: "[~@14 [e5,a5]@25 [bb5,d6]@24 [e5,a5,c6]@23 ~ [f5,a5,c6]@24 [db5,f5,ab5]@23 ~ [eb5,ab5,b5]@33, ~@14 c6@23 ~@2 f5@22 ~@107]/7", // A5 Bb Am F Db Abm
  AQ: "[~@3 [e5,ab5,db6]@11 ~ [eb5,ab5,b5]@33]/2", AR: "~@2 [e5,bb5,db6]@5 ~ [eb5,ab5,b5]@4", AS: "~@2 [db5,ab5,bb5]",
  AT: "[~ [e5,g5,b5,db6]@2]/2", // Dbm7b5
  AU: "[~@17 [eb5,gb5]@47 ~@2 [b4,eb5,f5,ab5]@49 [a4,db5,e5,ab5]@51 ~@2, ~@17 b5@98 ~@53, ~@17 gb4@49 ~@102]/7", // Ebm Fm7b5 Amaj7
})).s("gm_rock_organ").gain(0.11).pan(0.9)

// chords · rock organ · "HAMM1HI" · soft notes
const rock_organ_soft_2 = note("<~@76 A@2 B@6 C@6 D@3 ~@28 E@3 ~@4 F@2 ~@37 G@2 ~@11>".pickRestart({
  A: "[~ [f5,d6]@25 [g5,c6,eb6]@22, ~ bb5@47]/2", // Dm Cm
  B: "[~@3 [ab5,c6]@49 ~ g5@22 ~@28 g5@41, ~ eb6@29 d6@18, ~@3 f5@47 ~@3 bb5@91, ~@13 f5@4 ~@7]/6", // Ab
  C: "[~@9 d6@24 ~@26 [g5,bb5]@24 ~ [eb5,g5,bb5]@25 c6@12 bb5@12 ab5@11, ~@9 f5@47 ~@2 eb5@24 ~@27 [db5,f5]@35, ~ a5@5 ~@10, ~@34 c6@49 ~@61]/6", // Gm Eb Db
  D: "[~@2 bb5@11 ~ [ab5,c6]@25 [g5,bb5]@25 ~@8, ~@7 eb5@24 ~@5]/3", E: "[~@9 bb5@47 ~@16]/3", F: "[~@12 e6@23 ~@13]/2",
  G: "[~@11 [a4,db5,gb5]@13]/2", // Gbm
})).s("gm_rock_organ").gain(0.02).pan(0.9)

// other · ocarina · "HAMM2"
const ocarina = note(`<
  ~@15 A@2 ~@2 B@4 C D@5 E@3 F@2 G@2 H@2 I@7 J@2 ~@29 K L M N O@3 P@2 Q R@2 S T@3 U ~ V W X@5 Y Z AA AB AC@3 AD ~ AE@2
  ~@55 AF@2 AG AH AI@2 AJ AK@2 AL@4
>`.pickRestart({
  A: "[~@4 d5@6 ~ c5@6 bb4@17 ~@14]/2", B: "[~@2 g4@7 bb4@6 c5@6 d5@23 ~@2 c5@24 ~ c5@25]/4", C: "bb4",
  D: "[~@2 c5@12 bb4@12 ab4@13 bb4@12 ~ ab4@25 g4@24 ~ f5@6 bb4@6 c5@6]/5",
  E: "[~ d5@6 g4@12 g5@13 f5@24 ~ ab5 ~@2 g5 ~@2 ab5 ~@2 bb5 ~@3 c6@2]/3",
  F: "[~ bb5 ~@2 c6 ~@2 d6 ~@2 eb6@12 ~ d6@6 eb6@6 d6@6 d5@6 ~]/2", G: "[eb5@6 d5@6 d5@25 g5@6 ~ bb5@4]/2",
  H: "[~@2 a5@6 g5@6 d5@19 f5 ~@2 g5 ~@2 a5@9]/2",
  I: "[~@10 a5 ~@2 bb5 ~@3 c6@16 ~@2 c6 ~@3 d6 ~ eb6@17 ~@2 c6 ~@2 eb6 ~@3 f6@50 eb6@25 bb5@23 ~@3]/7",
  J: "[~@23 [a4,d5,gb5]@22 ~@3]/2", K: "~ bb5@11 ~@2 f5 ~@2 g5 ~@2 bb5@2 ~@2", L: "~@2 c6@13 g6@9",
  M: "~@3 f6@2 ~ g6 ~@2 ab6 ~@3 bb6 ~@2 c7 ~@2 bb6 ~@2 ab6 ~", N: "~ g6 ~@2 f6@2 ~@4 eb6@2 ~@4 d6@5 ~@2 eb6",
  O: "[~@5 eb6@12 ~ bb5@9 ~@3 d6@11 ~ d6@11 ~@2 bb5@11 ~ a5@5]/3",
  P: "[~@2 g5@6 d5@19 ~@6 f6@5 ~ d6@2 ~ f6@2 ~ a6@2 ~]/2", Q: "~@3 g6@2 ~@2 f6@2 ~ a6@2 ~@4 f6@2 ~@4 c6@2",
  R: "[~@4 f6@2 ~@5 eb6@4 ~@2 c6 ~@2 eb6 ~@2 g6@2 ~@4 f6 ~@2 eb6 ~@3 g6@2 ~@4 eb6@2 ~@4]/2",
  S: "g6@2 ~@4 bb6 ~@6 bb6@11", T: "[~ f6@6 ~@7 ab6@12 c6@9 ~@3 eb6@17 ~@2 c6@2 ~@4 g5@9]/3",
  U: "~@4 eb5@3 ~@3 f5@2 ~ eb5 ~@2 d5@6 ~@2", V: "~@6 g6@9 ~@3 f6@2 ~ g6 ~@2",
  W: "ab6 ~@3 bb6 ~@2 c7@2 ~ bb6@3 ab6@2 ~ g6 ~@2 f6@5",
  X: "[~ eb6@6 d6@6 ~ eb6 ~@5 eb6@12 ~ bb5@9 ~@3 d6@11 ~ a6@13 g6@12 ~ gb6@11 g6@20 ~@6]/5",
  Y: "f6@3 a5 ~@2 d6@2 ~ f6@2 ~ a6@2 ~ a5@2 ~ g6@2 ~@2 f6@2", Z: "~ a6@2 ~@4 f6@2 ~@4 c6@2 ~@4 f6@2 ~@3",
  AA: "~@2 eb6@2 g5@2 ~@2 c6 ~@2 eb6 ~@2 g6@2 ~ g5@2 ~ f6 ~@2 eb6", AB: "~@3 g6@2 ~@4 eb6@2 ~@4 g6@2 ~@4 bb6 ~@2",
  AC: "[~@4 bb6@12 f6@12 ab6@12 ~ c6@9 ~@3 eb6@17 ~@2]/3", AD: "c6 ~@11", AE: "[~@4 [a4,d5,gb5]@11 ~@9]/2",
  AF: "[~@22 [gb4,a4]@7 ~@6 [gb4,a4]@7 ~@6]/2", AG: "[f4,a4]@7 ~@7 [f4,a4]@8 ~@2", AH: "~@3 [e4,a4]@8 ~@6 [e4,a4]@7",
  AI: "[~@7 [eb4,a4]@8 ~@6 [eb4,a4]@8 ~@6 [eb4,ab4]@8 ~@5]/2", AJ: "~ [eb4,ab4]@8 ~@6 [d4,ab4]@8 ~",
  AK: "[~@6 [d4,ab4]@8 ~@7 [d4,g4]@8 ~@7 [d4,g4]@8 ~@4]/2", AL: "[~@3 [db4,g4]@27 ~@4 [b3,gb4]@62]/4",
})).s("gm_ocarina").gain(0.26).pan(0.3)

// bass · electric bass finger · "bass"
const bass = note(`<
  ~@4 A@8 B@5 C@6 D E F@2 G H I J@5 K@7 L@7 M@2 N O P Q R S@4 T U V W U W U X Y Z AA AB AC AD AE@3 AF AG@2 AH AI@2 AJ AK
  AL AM@2 AN AO@3 AP@2 AQ AR AS@3 AT@2 AU AV AW@2 AX@3 AY@3 AZ@3 BA@5 BB@3 ~@10 BC BD ~ BE BF BG BH BI BJ BK@8 BL@3 ~
  BM@2 BN@2 BO@3 BP@2 BQ@4 ~@14
>`.pickRestart({
  A: "[~@5 a2@25 d2@24 ~ c2@13 d2@12 e2@13 gb2@12 f2@12 ~ e2@12 eb2@50 ~ bb1@11]/8",
  B: "[~@7 f1@6 c2@17 ~@21 f2@30 ~@8 d4@3 eb4@3 d4@3 c4@5 ~@8 g3@3 c3@6, ~@38 f1@38 ~@10 eb3@19 ~@9 f3@4 ~@2]/5",
  C: "[~@6 c4@3 ~@4 d2@5 ~ g1@12 ~ bb1@4 ~@2 c2@4 ~@2 d2@23 ~@2 bb2@13 a2@12 g2@13 f2@12 eb2@6 d2@7 c2@6 bb1@5 ~, ~ bb2@3 ~@44, ~@3 d4@2 ~@43]/6",
  D: "[c2,g2]@23 ~", E: "~@2 db2@4 ~@2 db2@6 bb2@5 ~ bb1@3 ~, ~ c3@8 ~@15",
  F: "[~@3 ab1@4 ~@2 bb1@12 eb3@6 ~ c3@6 eb2@12 eb2@2]/2", G: "~@2 f2@2 ~ f2@3 g2@3 eb2@2 ~@4 eb2@6 ~",
  H: "~@6 bb1@17 ~", I: "~ f1@6 c2@17",
  J: "[~@20 f2@30 ~@8 d4@3 eb4@3 d4@3 c4@5 ~@8 g3@3 c3@8 ~@5 c4@3 ~@3 d2@5 ~ g1@12, ~@8 f1@38 ~@9 eb3@19 ~@9 f3@4 ~@6 bb2@9 ~@18, ~@33 d4@2 ~@5]/5",
  K: "[~ bb1@4 ~@2 c2@4 ~@2 d2@23 ~@2 bb2@13 a2@12 g2@13 f2@12 eb2@6 ~ d2@6 c2@6 bb1@5 ~@2 [c2,g2]@23 ~@2 db2@4 ~@2 db2@6 bb2@5 ~ bb1@3 ~@4 ab1@4, ~@139 c3@8 ~@21]/7", // C5
  L: "[~@2 bb1@13 eb3@6 c3@6 eb2@12 ~ eb2@3 f2@2 ~ f2@3 g2@3 eb2@2 ~@4 eb2@6 ~@7 d2@23 ~ d2@6 e2@6 gb2@5 ~ d2@4 ~@2 [g1,g2]@22 ~@3 f1@11 ~ [f1,f2]@11 ~, ~@143 f2@11 ~@14]/7", // G F
  M: "[c2@16 ~@11 c3@3 eb3@3 f3@6 [eb3,c4]@7 ~@2, ~@18 eb2@23 ~@7, ~@5 c4 ~@2]/2", N: "[g1,g2]@23 ~",
  O: "[f1,f2]@11 ~ [f1,f2]@9 ~@3", P: "db2@11 ~@2 eb2@11", Q: "~ f2@11 f2@11 ~", R: "~ ab2@5 ~ bb2@5 ~ c3@6 db3@5",
  S: "[~ eb3@6 f3@5 ~@2 f3@6 g3@6 bb1@24 gb1@23 db1@23]/4", T: "~ ab1@23", U: "~ db1@23", V: "~ gb1@23", W: "~ d1@23",
  X: "~ a1@11 g1@11 ~", Y: "f1@23 ~", Z: "c1@3 c1", AA: "c2@18 c1@5 ~", AB: "c1@6 d1@5 ~", AC: "e1@11 ~ gb1@12",
  AD: "f1@11 ~ e1@11 ~", AE: "[eb1@49 [bb1,bb2]@23]/3", AF: "~@15 d3@3 ~@3 bb2@2 ~",
  AG: "[~@3 f2@3 ~@3 f3@19 f3@2 ~@8 d3@3 ~@7]/2", AH: "~@5 bb2@17 ~@2",
  AI: "[f2@3 d3@3 bb2@11 ~ a2@11 ~@2 f2@3 ~@3 bb2@3 c3@3 d3@2 ~@3]/2", AJ: "~@2 c3@3 bb2@3 c3@3 ~@3 g2@2 ~@4 f2@3 ~",
  AK: "~@3 bb2@2 ~@4 c3@3 d3@5 ~ d3@3 f3@3", AL: "~@3 a3 ~@6 g2@14", AM: "[~@11 f2@3 g2@2 ~@4 bb2@3 c3@2 ~@5 c2@18]/2",
  AN: "~@19 c2@5", AO: "[~@7 bb1@5 ~ ab1@2 ~@5 bb1@6 ~@6 eb3@5 ~@8 eb2@12 c3@3 eb3@3 bb2@3 c3@3 ~@3]/3",
  AP: "[~@4 eb2@9 ~@3 [bb1,bb2]@23 ~@9]/2", AQ: "~@6 d3@3 ~@3 bb2@2 ~@4 f2@3 ~@3", AR: "f3@19 f3@2 ~@3",
  AS: "[~@5 d3@3 ~@12 bb2@17 ~@2 f2@3 d3@3 bb2@11 ~ a2@11 ~@2 f2@2]/3",
  AT: "[~@4 bb2@3 c3@3 d3@2 ~@5 c3@3 bb2@3 c3@3 ~@3 g2@2 ~@4 f2@3 ~@4 bb2@2 ~@4]/2",
  AU: "d3@3 f3@3 ~@3 d3@3 f3@3 ~@3 a3 ~@5", AV: "~ g2@15 ~@8", AW: "[~@2 f2@3 g2@2 ~@4 bb2@3 c3@2 ~@5 c2@19 ~@8]/2",
  AX: "[~@10 c2@6 ~@6 bb1@5 ~ ab3 ~@6 ab3@5 ~@7 eb3@5 ~@8 eb2@12]/3",
  AY: "[c3@3 eb3@3 g2@3 bb2@3 ~@7 eb2@9 ~@3 d2@23 ~@2 d2@6 e2@6 gb2@4]/3",
  AZ: "[~@2 d2@4 ~@2 [g1,g2]@22 ~@2 [f1,f2]@11 ~ [f1,f2]@11 ~ c2@16]/3", // G F
  BA: "[~@11 c3@3 eb3@3 f3@6 [eb3,bb3]@8 ~ [g1,g2]@23 ~ [f1,f2]@11 ~ [f1,f2]@9 ~@3 ab2@12 ~@6 bb2@11 ~ ab2@10, ~@2 eb2@23 ~@55 ab1@21 ~@19, ~@14 c4@6 ~@72 ab2@9 ~@19]/5", // Eb5 G F
  BB: "[~@7 db3@4 ~@4 db3@3 ~@6, ~@3 db3@16 ~@53, ~@9 db2@23 ~ db2@23 ~@16]/3", BC: "~@11 c2",
  BD: "~ [g3,c4]@4 ~@2 [g3,c4]@5 ~@12", BE: "~@13 [b1,b2]@10 ~", BF: "~ [b1,b2]@11 ~ [b1,b2]@11",
  BG: "~ [b1,b2]@12 [gb1,gb2]@11", BH: "~ [ab1,ab2]@12 [a1,a2]@11", BI: "~ [db2,db3]@11 ~ db3@6 a2@5",
  BJ: "~ b2@6 db3@6 a2@6 gb3@5",
  BK: "[~ ab3@6 b3@4 ~@14 gb2@12 ~@13 d3@11 ~@13 a2@12 ~@12 e3@12 ~@12 a2@11 ~@13 d3@11 ~@13 bb2@12 a1@10, ~@13 gb1@23 ~ d2@24 ~ a1@19 ~@5 e2@22 ~@2 a1@23 ~ d2@22 ~@2 bb1@23 ~@11]/8",
  BL: "[~@2 a3@5 e3@4 c3@4 ~@9 bb2 ~@2 bb2@12 ~@12 a2@11 ~@10, ~@15 bb1@11 ~@13 a1@22 ~@11]/3",
  BM: "[~@5 ab1@4 ab2@3 ab1 db3 eb3@2]/2", BN: "[ab2@3 db3@11 ~@2 ab1@12 ab2@6 ab1@6 ab2@3 bb2@5]/2",
  BO: "[~ ab1@3 ab2@12 eb3@23 ~ db3@12 ab2@10 ~@10]/3", BP: "[~@5 g2@15 ~@4]/2", BQ: "[~@17 b2@3 gb2@13 b2@58 ~@5]/4",
})).s("gm_electric_bass_finger").gain(0.72).pan(0.6)

// bass · electric bass finger · "bass" · soft notes
const bass_soft = note(`<
  ~@46 A ~@30 B ~ C@2 ~ D E@2 F@2 ~@4 G ~ H@2 I J ~@2 K L M N ~@3 O ~ P ~ Q ~@6 R ~@23 S ~@38
>`.pickRestart({
  A: "~@11 e2 ~@12", B: "~@8 d3@3 ~ eb3@3 ~@3 c3@3 ~@3", C: "[~@7 g3@2 ~@8 f3@3 ~@3 c3@3 d3@2 ~@20]/2",
  D: "~@10 g2@3 ~@11", E: "[~@11 bb2@3 ~@9 g2@3 ~@7 a2@9 ~@6]/2", F: "[~@5 d3@8 ~@11]/2", G: "~@11 eb2",
  H: "[~@23 d3@3 ~ eb3@3 ~@3 c3@3 ~@12]/2", I: "~@11 g3", J: "~@8 f3@3 ~@3 c3@3 d3@2 ~@5", K: "~ g2@3 ~@20",
  L: "~@2 bb2@3 ~@9 g2@3 ~@7", M: "a2@3 ~@5", N: "~ d3@16 ~@7", O: "~@6 ab3 ~ ab3!2 ~@14", P: "~@13 eb2@2 ~@9",
  Q: "~@20 e2 ~@3", R: "~@17 f2@3 ~@4", S: "~@10 eb7 ~@13",
})).s("gm_electric_bass_finger").gain(0.48).pan(0.6)

// chords · electric guitar jazz · "CLEANGTR"
const electric_guitar_jazz = note(`<
  ~@11 A B@6 C@6 D E F@3 G@5 H I J K@8 L@6 M N O P Q R@2 S T U V W X Y Z AA ~@9 AB AC AD@2 AE AF@3 AG@2 AH AI@3 AJ@6
  AK@5 AL@2 AM AN AO AP AQ@7 AR AS@7 AT@7 AU@3 AV@2 ~@7 AW@5 AX@4 ~@30
>`.pickRestart({
  A: "~@19 [bb2,d4]@3 ~@2", // Bb
  B: "[~ [c3,eb4]@3 ~@3 [d3,f4]@4 ~@3 [c3,eb4]@22 ~@3 eb4@6 ab3@6 eb4@6 ab3@7 eb4@6 ~@6 eb4@7 ~@6 g4@17 ~@8 eb4@10 ~@2 [bb2,d4]@7 ~@6 bb3@5, ~@39 c3@41 ~@8 [eb3,eb4]@19 ~@7 c3@8 ~@22, ~@70 ab3@12 ~@5 bb3@19 ~@38]/6", // Cm Dm Cm Bb Eb
  C: "[~ d3@6 bb3@6 ~ d3@6 bb3@6 d3@7 bb3@6 d3@3 ~@3 a3@7 ~@6 a3@6 d3 ~@6 c4@10 ~@27 eb4@6 g3@4 ~@3 bb3@20 ~@3, ~@52 d3@11 ~@6 f3@12 ~@21 g3@8 ~@9 eb3@21 ~@4, ~@70 a2@19 ~@7 c3@25 ~@23, ~@70 a3@11 ~@14 eb4@6 ~@19 g3@20 ~@4]/6",
// … 289 more lines

More by Genesis