Strudelify
In-A-Gadda-Da-Vida cover art

1968 · In-A-Gadda-Da-Vida

In-A-Gadda-Da-Vida

Iron Butterfly

KeyD minorTempo118 bpm
0:00/0:00
// In-A-Gadda-Da-Vida — Iron Butterfly
// 118 bpm, 4/4, key D minor. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 7 "MIDI" overdriven guitar (copy of ch 5 "MIDI" distortion guitar)
// note: Full arrangement: all 150 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(118/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, A@4 for four bars: edit a riff to change every repeat.

// bass · fretless bass · "MIDI"
const bass = note(`<
  ~@4 A B A C A B A D A B E D F G A D F G H I J K L M A B A B N O P O P O Q R A S A T F U A V W X F I F X A D Y Z Y AA F
  U F AB P O P O P O Q AC A B A AD A B A AE AF AG AH AI AJ B A B P O P O P O Q AK F X F AL A AM A AN F X F AO F X F X Y
  AG Y Z A B A B P O AP O AQ O P O AR AS AT AU AV AW AV AX AY AZ BA BB BC BD BE BB BF A BG@3 BH
>`.pickRestart({
  A: "db2 ~ db2@2 b1@2 db2 ~@3 ab2 ~@3 g2 ~", B: "~@2 gb2 ~@3 db2@2 e2@4 db2@2 ~@2", C: "~@2 gb2 ~@3 db2@2 e2@4 gb2@4",
  D: "~@2 gb2 ~@3 db2@2 e2@8", E: "db2 ~ db2@2 b1@2 db2@2 ~@2 ab2 ~@3 g2 ~", F: "db2 ~ db2@2 b1@2 db2 ~@3 ab1 ~@3 g1 ~",
  G: "~ gb1 ~ db2 e2@2 db2 ~", H: "db2 ~ db2@2 b1@2 db2@2 ~@2 ab1@2 ~@2 g1 ~", I: "~@2 gb1@2 ~@2 db1@2 e1@7 ~",
  J: "gb2 ~ gb2@2 e2@2 gb2 ~@3 db3 ~@3 c3 ~", K: "~@2 b2 ~@3 gb2@2 a2@4 ~ gb2@2 ~",
  L: "gb2 ~ gb2@2 e2@2 gb2 ~@3 db2@2 ~@2 c2 ~", M: "~@2 b1 ~@3 gb1@2 a1@4 b1@4", N: "ab1@3 ab1!2 ~@11",
  O: "b1@8 gb1@7 ~", P: "ab1@2 ~ ab1!2 ~@11", Q: "ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~",
  R: "ab1@2 ab1 ~ ab1@2 ab1 ~ ab1 ~ ab1@2 b1@2 c2@2", S: "~@2 gb2 ~@3 db2 ~ e2@5 db2@2 ~",
  T: "~ e2 gb2 ab2 b2 db3 e3 gb3 e3@4 db3@3 ~", U: "~@2 gb1 ~@3 db2@2 e2@4 db2@2 ~@2",
  V: "~@2 gb2 ~@3 e2@3 gb2 e2 db2 b1 ab1 gb1 e1", W: "db1 ~ db1@2 b0@2 db1 ~@3 ab1 ~@3 g1 ~",
  X: "~@2 gb1 ~@3 db1@2 e1@4 db1@2 ~@2", Y: "gb1 ~ gb1@2 e1@2 gb1 ~@3 db2 ~@3 c2 ~",
  Z: "~@2 b1 ~@3 gb1@2 a1@4 gb1@2 ~@2", AA: "~@2 b1 ~@3 gb1@2 b1@4 a1@3 ~", AB: "~@2 gb1 ~@3 db1 ~ e1@6 gb1 g1",
  AC: "ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ b1 ~ c2 db2", AD: "~@2 gb2 ~@3 b1 db2 e2 gb2 e2@2 db2@4",
  AE: "~@2 gb2 ~@3 db2 ~ e2@3 ~ gb2@3 ~", AF: "gb1 ~ gb1 ~ e1@2 gb1@2 ~@2 db2 ~@3 c2 ~",
  AG: "~@2 b1 ~@3 gb1 ~ a1@4 gb1@2 ~@2", AH: "gb1 ~ gb1@2 e1 ~ gb1 ~@3 db2 ~@3 c2 ~",
  AI: "~@2 b1 ~@3 gb1 ~ b1@3 ~ a1@3 ~", AJ: "db2 ~ db2@2 b1 ~ db2 ~@3 ab2 ~@3 g2 ~",
  AK: "ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2@2 ab1@2 b1 ~ c2 ~", AL: "~@2 gb1 ~@3 db1 ~ e1@3 ~ e1@4",
  AM: "~@2 gb2 ~@3 db2 ~ e2@4 db2@2 ~@2", AN: "~@2 gb2 ab2 b2 db3 e3 gb3 gb3@3 e3 db3 b2 ab2 gb2",
  AO: "~@2 gb1@2 ~@2 e1 ~ e2@4 db2@2 ~@2", AP: "ab1@2 ~ ab1 ab1@2 ~@10", AQ: "ab1@2 ~ ab1!2 ~@9 ab1 bb1",
  AR: "ab1@15 ~", AS: "ab1@3 gb2@3 f2@4 gb2@4 ab1@2", AT: "ab1@3 ab1@3 ab1@4 ab1@4 gb1 g1",
  AU: "ab1 f1 ab1 f1 ab1 f2 eb2 f2", AV: "ab1 c2 eb2 f2 gb2 f2 eb2 c2", AW: "ab1 f1 ab1 f1 ab1 eb2!2 f2",
  AX: "ab1 gb1 ab1@2 ab1 f2 eb2 f2", AY: "ab1 c2 eb2 f2 gb2 f2 eb2 ab1",
  AZ: "ab1@2 f1@2 ab1@2 f1 ab1@2 f1 f2@2 eb2@2 f2@2", BA: "ab1@2 f1@2 ab1@2 f1 ab1@2 ab1 f2@2 eb2@2 f1@2",
  BB: "ab1@2 f1@2 ab1@2 f1 ab1@2 ab1 f2@2 eb2@2 f2@2", BC: "ab1@2 f1@2 ab1@2 f1 ab1@2 ab1 f2@2 eb2@2 c2@2",
  BD: "ab1 f1 ab1 f1 ab1 f2 eb2 f2, ~@10 ab1 ~@5", BE: "ab1@2 c2@2 eb2@2 f2@2 gb2@2 f2@2 eb2@2 f2 eb2",
  BF: "gb2 f2 eb2 ab1 eb2 c2 ab1 gb1 c2 ab1 gb1 eb1 gb1@2 ab1@2", BG: "[~@2 gb2 ~@3 db2@2 e2@4 gb1@36]/3",
  BH: "db2 ~@7",
})).s("gm_fretless_bass").gain(0.66)

// other · piano · "MIDI"
const piano = note(`<
  ~@4 A B C D C E C F C E C G H E C I J E C K L M N O P E C E ~@8 Q E C R P E S T C U V W X Y Z AA N AB AC AD AE E AF G
  ~@8 AG E AH AI AJ AK S AL AM AN AO AP AQ E AR AS ~@8 C E C AT AU AV AW AX C AY C AY AZ AY C BA AC BB AC BC AG BD C AY
  ~@9 BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU BV@3 BW
>`.pickRestart({
  A: "db3 ~ [db2,db3]@2 [b1,b2]@2 db2@2 ~@2 [ab1,ab2,ab3] ~@3 [g2,g3] ~, ~@6 db3 ~@7 g1@2", // Db B Ab G
  B: "~@2 [gb1,gb3] ~@3 db2@2 [e2,e3]@4 db3@2 ~@2, ~@2 gb2@2 ~@2 db3 ~@5 db2 ~@3", // Gb E
  C: "db3 ~ [db2,db3]@2 b1@2 [db2,db3] ~@3 [ab2,ab3] ~@3 [g2,g3] ~, ~@4 b2 ~@11", // Db Ab G
  D: "~@2 [gb2,gb3] ~@3 db2@2 [e2,e3]@4 gb3@4, ~@6 db3 ~@5 gb2@2 ~@2", // Gb E
  E: "~@2 [gb2,gb3] ~@3 db2@2 [e2,e3]@4 db3@2 ~@2, ~@6 db3 ~@5 db2 ~@3", // Gb E
  F: "~@2 gb2@2 ~@2 db2@2 [e2,e3]@7 ~, ~@2 gb3 ~@3 db3 ~@9", G: "~@2 [gb2,gb3] ~@3 [db2,db3]@2 [e2,e3]@7 ~",
  H: "[db3,e3,ab3,b3]@2 db2 ~ [b1,b2]@2 [db2,db3] ~@3 [ab2,ab3] ~@3 [g2,g3] ~", // Dbm7 B Db Ab G
  I: "~@2 [gb2,gb3] ~@3 [db2,db3]@2 e3@5 e2 [db3,bb3]@2, ~@8 e2@3 ~@3 gb3 ~", // Gb Db Gb
  J: "[db3,e3] ~ db2@2 [b1,b2]@2 [db2,db3] ~@3 [ab2,ab3] ~@3 [g2,g3] ~, ~@2 db3 ~@13", // Dbm B Db Ab G
  K: "~@2 [gb2,gb3] ~@3 [db3,f3,gb3,bb3] ~@5 db2 ~ db2@2, ~@5 db2@6 ~@5, ~@8 [b2,e3,ab3]@7 ~", // Gb Gbmaj7 E
  L: "gb3 ~ gb3@2 [e2,e3]@2 [gb2,gb3] ~@3 [db2,db4] ~@3 [c2,c4] ~, ~@2 gb2 ~@13", // E Gb Db C
  M: "~@2 [b1,b3] ~@3 [gb3,b3,eb4] ~ [gb2,db4]@2 ~@2 [gb2,gb3] ~ e2@2, ~@5 gb1@2 ~ [gb3,a3] ~@5 e3 ~", // B Gb5 Gb Gbm
  N: "gb3 ~ [gb2,gb3]@2 e2@2 [gb2,gb3] ~@3 [db2,db3] ~@3 [c2,c3] ~, ~@4 e3 ~@11", // Gb Db C
  O: "~@2 [b1,b2] ~@3 gb1@2 [a1,a2]@4 [b1,b2]@2 ~@2, ~@6 gb2 ~@9", // B A B
  P: "db3 ~ [db2,db3]@2 [b1,b2]@2 [db2,db3] ~@3 [ab2,ab3] ~@3 [g2,g3] ~", // Db B Db Ab G
  Q: "~@2 [db2,db3]@2 b1@2 [db2,db3] ~@3 [ab2,ab3] ~@3 [g2,g3] ~, ~@4 b2 ~@11", // Db Ab G
  R: "~@2 gb3 ~@2 db2 [db4,f4,bb4] gb4 [b3,e4,ab4]@3 ab3 db3 ~ b2@2, ~@13 b1@2 ~", // Bbm E
  S: "[db2,db3] ~ db2@2 [b1,b2]@2 [db2,db3] ~@3 [ab2,ab3] ~@3 [g2,g3] ~, ~@2 db3 ~@13", // Db B Db Ab G
  T: "~@2 [gb2,gb3] ~@3 [db2,db3]@2 [e2,e3]@4 ~@4", // Gb Db E
  U: "~@2 [gb2,gb3] ~@3 db2@2 [e2,e3]@3 ~@3 [db3,f3] ~, ~@6 db3 ~@6 db2@2 ~, ~@7 bb3", // Gb E Db
  V: "[e3,ab3]@2 ~@2 [b1,b2] ~ [db2,db3] ~@3 ab2 ~@3 [g2,g3] ~", // E B Db G
  W: "~@2 [gb2,gb3] ~@3 db2@2 [e2,e3]@4 ~ e2 [db3,f3] gb3, ~@6 db3 ~@7 bb3@2", // Gb E Db
  X: "[e3,ab3] ~ [db2,db3] ~ [b1,b2]@2 [db2,db3] ~@3 [ab2,ab3] ~@3 [g2,g3] ~", // E Db B Db Ab G
  Y: "~@2 [gb2,gb3] ~@3 [db2,db3]@2 [e2,e3]@3 ~@3 [db4,f4,bb4] gb4, ~@13 db2@2 ~", // Gb Db E Bbm
  Z: "[e4,ab4] ~@3 b1@2 [db2,db3] ~@3 [ab2,ab3] ~@3 [g2,g3] ~, b3@2 ~@2 b2 ~@11", // E Db Ab G
  AA: "~@2 [gb2,gb3] ~@3 db2@2 [e2,e3]@4 f3@3 ~, ~@6 db3 ~@5 f2 ~@3", // Gb E
  AB: "~@2 [b1,b2] ~@3 gb1@2 [a1,a2]@4 [gb1,gb2] ~@3, ~@6 gb2 ~@9", // B A Gb
  AC: "gb3 ~ gb3@2 [e2,e3]@2 [gb2,gb3] ~@3 [db3,db4] ~@3 [c3,c4] ~, ~@2 gb2 ~@13", // E Gb Db C
  AD: "~@2 [b2,b3] ~@3 gb2@2 [b2,gb3,b3,eb4]@4 [a2,e3,a3,db4]@3 ~", // B A
  AE: "db4 ~ [db2,db4]@2 [b1,b3]@2 [db2,db4] ~@3 [ab2,ab3] ~@3 [g2,g3] ~", // Db B Db Ab G
  AF: "db3 ~ [db2,db3]@2 b2@2 [db2,db3] ~@3 [ab2,ab3] ~@3 [g2,g3] ~, ~@4 b1 ~@11", // Db Ab G
  AG: "db4 ~ [db3,db4] ~ [b2,b3]@2 [db3,db4] ~@3 [ab2,ab3] ~@3 [g2,g3] ~", // Db B Db Ab G
  AH: "db3 ~ [db2,db3] ~ [b1,b2] ~ [db2,db3] ~@3 [ab2,ab3] ~@3 [g2,g3] ~", // Db B Db Ab G
  AI: "~@2 [gb3,gb4] ~@3 [b1,b2] [db2,db3] [e2,e3] [gb2,gb3] [e2,e3]@2 [db2,db3]@4", // Gb B Db E Gb E Db
  AJ: "db3 ~ [db2,db3] ~ b2@2 [db2,db3] ~@3 [ab2,ab3] ~@3 [g2,g3] ~, ~@4 b1 ~@11", // Db Ab G
  AK: "~@2 [gb2,gb3] ~@3 db2@2 e2@4 [db2,db3] ~@3, ~@6 db3 ~ e3@2 ~@6", // Gb Db
  AL: "~@2 [gb2,gb3] ~@3 db2@2 [e2,e3,ab3,b3]@4 [gb2,db3,gb3,bb3]@3 ~", // Gb E Gb
  AM: "[ab3,db4,e4] ~ [gb2,ab3,db4,e4] ~ [gb2,gb3,b3,eb4] ~ [gb2,gb3,bb3,db4] ~@7 [c3,c4] ~", // Dbm B Gb C
  AN: "~@2 [b2,b3] ~@3 [gb2,gb3]@2 [a2,a3]@4 [gb2,gb3] ~@3", // B Gb A Gb
  AO: "[gb3,db4,e4] ~ [gb2,gb3,db4,e4] ~ [gb2,b3,eb4] ~ [gb2,bb3,db4] ~@3 [db3,db4] ~@3 [c3,c4] ~, ~@2 gb3 ~@5", // Gb7 B Gb Db C
  AP: "~@2 [b2,b3] ~@3 gb2@2 [b2,b3]@4 [a2,a3] ~@3, ~@6 gb3 ~@9", // B A
  AQ: "[ab3,db4] ~ [db2,ab3,db4] ~ b1@2 [db2,db3] ~@3 [ab2,ab3] ~@3 [g2,g3] ~, ~@4 db3 ~@11", // Db5 Db Ab G
  AR: "[db3,db4] ~ [db3,db4] ~ [b2,gb3,b3] ~ [db2,e3,ab3,db4] ~@3 [ab2,ab3] ~@3 [g2,g3] ~, ~ db2 b1 ~@5", // Db B5 Dbm Ab G
  AS: "~@2 [gb2,gb3] ~@3 [db3,bb3] ~ [db3,e3,ab3]@3 ~ [db3,ab3,db4]@2 ~@2, ~@5 db2@2 ~ db2@7 ~", // Gb Dbm Db5
  AT: "~@2 [gb2,gb3]@2 ~@2 db2@2 g4 ab4@3 [e2,db4,gb4,bb4]@4, ~@8 [gb2,b4]@3 ~@5", // Gb Gb7 B5
  AU: "~@2 db2@2 b1@2 [db2,db3] ~@3 [ab2,ab3] ~@3 [g2,g3] ~, ~@4 b2 ~@11", // Db Ab G
  AV: "~@2 [gb2,gb3] ~@3 [db2,db3]@2 e2@2 [db3,db4] ~ e2 ~ e2@2, ~@13 [db3,gb3,bb3,db4]@3", // Gb Db Gb
  AW: "[ab3,db4] ~ db3 ~ [b1,b2]@2 [db2,db3] ~@3 [ab2,db3] ~@2 ab3 ~ db3, ~@5 ab3 ~@2", // Db5 B Db Db5
  AX: "[e4,g4] [db3,ab4] [db4,gb4,bb4] ~ [b3,e4,ab4] ~ [bb3,db4,gb4] db3 [ab3,b3,e4] ~ [g3,db4] db3 ~ db3 e3 db3, b4 ~@5 [gb3,db4] ~", // Em Db5 Gb E Gb E Gdim Gb5
  AY: "~@2 [gb2,gb3] ~@3 db2@2 [e2,e3]@4 [db2,db3]@2 ~@2, ~@6 db3 ~@9", // Gb E Db
  AZ: "[db3,db4] ~ [db2,db4]@2 [b1,b3]@2 [db2,db4] ~@3 [ab2,ab3] ~@3 [g2,g3] ~, ~@2 db3 ~ b2 ~ db3@2 ~@8", // Db B Db Ab G
  BA: "~@2 gb3@3 db3 ~@2 [ab3,b3]@2 gb3@2 b3 ~ db3 ~, ~@2 gb2 ~@4 db2@4 ~@5, ~@8 [e3,g3] ~ db4 ~ [ab3,db4,e4]@4", // Abm Em Dbm
  BB: "~@2 [b2,b3] ~@3 [gb3,eb4] ~ a3 bb3@2 ~ gb3@3 ~, ~@6 b3@2 [gb3,db4]@3 ~@5", // B Ebm Gb5
  BC: "~@2 [b2,b3] ~@3 gb2@2 [a2,a3]@4 gb3@2 ab2 ~, ~@6 gb3 ~@5 gb2 ~@3", // B A
  BD: "~@2 [gb2,gb3] ~@2 db2 [db4,f4,bb4] ~ [b3,e4,ab4] ~ db4 b3 db4 ~ ab2 ~, ~@3 db3 ~@4", // Gb Bbm E
  BE: "[ab5,eb6,gb6,ab6]@2 ~ eb6@2 ~ [eb6,gb6,ab6]@3 ~ eb6@3 ~ [db6,f6]@2, ~@14 ab6 ~", BF: "ab6@2 ~@4 ab6@6 ~@2 f6 ~",
  BG: "[eb6,ab6]@2 ~ ab6@2 ~ [gb6,ab6]@3 ~ [eb6,ab6]@3 ~ db6 ~", // Ab5 Gbsus2 Ab5
  BH: "[eb6,ab6]@2 ~ [eb6,ab6]@2 ~ [eb6,ab6]@3 ~@5 [db6,f6,ab6] ~", // Ab5 Db
  BI: "[ab5,eb6,ab6]@3 ab5@2 ~ [c6,eb6,ab6]@3 ~ [eb6,ab6]@3 ~@3, ~@3 ab6 ~@12", // Ab5 Ab Ab5
  BJ: "ab6@2 ~ [eb6,ab6]@2 ~ ab6@2 ~@2 [ab5,eb6,gb6]@3 ~ [db6,f6,ab6] ~", // Ab5 Ab7 Db
  BK: "[c6,eb6]@2 ~ [c6,eb6,ab6]@2 ~ [c6,eb6,ab6]@3 ~ [c6,eb6]@3 ~ [db6,f6]@2, ~@14 ab6 ~", // Cm Ab Cm Db
  BL: "ab6@2 ~ [eb6,gb6,ab6]@2 ~@7 ab6 ~ db6@2", // Ab7
  BM: "[c6,eb6]@3 [eb6,ab6]@2 ~ [c6,eb6,ab6]@2 ~ [c6,eb6,ab6]@2 ~ [c6,eb6]@2 db6@2, ~@12 ab6 ~ ab5 ~", // Cm Ab5 Ab Cm
  BN: "ab6@2 ~ eb6@2 ~ [eb6,ab6]@2 ~ [eb6,ab6]@2 ~ [eb6,ab6] ~ [db6,f6]@2, ~@14 ab6 ~", // Ab5 Db
  BO: "[ab5,c6,eb6,ab6]@3 [eb6,ab6]@2 ~ [c6,eb6,ab6]@3 [ab5,c6,eb6,ab6]@3 ~@2 db6@2", // Ab Ab5 Ab
  BP: "[eb6,ab6]@2 ~ [eb6,ab6]@2 ~ [eb6,ab6]@3 [db6,f6,ab6]@3 [c6,eb6]@2 [ab5,db6,ab6] ~, ~@12 [ab5,ab6] ~ f6@2", // Ab5 Db Cm Db5 Ab
  BQ: "[ab5,c6,eb6,ab6]@3 ~@3 [ab5,ab6]@3 ~ [f6,ab6]@2 [c6,eb6]@2 db6 ~, ~@12 ab5 ~@3", // Ab Fm Cm
  BR: "[eb6,ab6]@3 eb6@2 ~@4 [ab5,eb6]@2 ~ eb6 ~ [ab5,db6] ~", // Ab5 Db5
  BS: "[ab5,c6,eb6]@2 ~ [ab5,eb6,ab6]@2 ~ [ab5,c6,eb6,ab6]@3 ~ [f6,ab6]@2 eb6 ~@3, ~@10 db6 ~@5", // Ab Ab5 Ab Fm
  BT: "[eb6,ab6]@2 ~ eb6@2 ~ [gb6,ab6]@3 ~ [f6,ab6]@2 [ab5,c6,eb6]@3 ~, ~@10 [ab5,db6] ~@5", // Ab5 Gbsus2 Fm Ab Db5
  BU: "db3 ~ [db2,db3]@2 b1@2 [db2,db3] ~@3 [ab1,ab2,ab3] ~@3 [g1,g2,g3] ~, ~@4 b2 ~@11", // Db Ab G
  BV: "[~@2 [gb1,gb2,gb3] ~@3 [db2,db3] ~ [e1,e3] ~@3 [gb2,e3,ab3,db4]@33 ~@3, ~@3 db1 ~@20]/3", // Gb Db E Dbm
  BW: "[db1,db3,ab3,db4] ~@7", // Db5
})).s("gm_piano").gain(0.59).pan(0.3)

// other · piano · "MIDI" · soft notes
const piano_soft = note(`<
  ~@43 A ~@6 B ~@28 C ~@7 D ~@12 E ~@10 F ~@5 G ~@11 H I J K L M N O P Q R S T U V W ~@5
>`.pickRestart({
  A: "~@12 db2 ~@3", B: "~@2 db3 ~@8 ab3 ~@4", C: "~@6 db3 ~@9", D: "~@6 gb3 ~@9", E: "~@2 db3 ~@13", F: "~@10 b3 ~@5",
  G: "~@7 gb4 ~@8", H: "~@3 [ab5,gb6,ab6]@2 ~@5 [gb6,ab6]@3 ~ ab5 ~, ~@3 ab5@3 ~@2",
  I: "[ab5,eb6,gb6]@2 ~ [ab5,eb6,gb6,ab6]@2 ~ ab5@3 ~ ab5@2 ~@2 [ab5,ab6] ~, ~@3 [eb6,gb6]@3 ~ db6", // Ab7 Ab Ebm
  J: "[ab5,gb6]@2 ~ [ab5,eb6,gb6]@2 ~ [ab5,eb6]@3 ~ [ab5,gb6]@2 ~@2 [ab5,ab6] ~, ~@7 f6", // Ab7 Ab5 Ab7 Ab
  K: "[ab5,gb6]@2 ~ [ab5,gb6]@2 ~ [ab5,gb6]@3 [ab5,eb6,gb6,ab6]@4 ab5@2 ~", // Ab7
  L: "c6@2 ~ [c6,eb6]@2 ~ ab5@3 ~ [ab5,c6]@3 ~ [db6,f6]@2, ~@14 [ab5,ab6] ~", // Cm Ab Db Ab
  M: "[ab5,eb6,gb6]@2 ~ [ab5,gb6]@2 ~ [ab5,eb6,gb6]@3 ~ ab6@2 ~@2 ab5 ~", // Ab7
  N: "[gb5,ab6]@2 ~ gb5@2 ~ gb5@3 ~ [gb5,ab6]@3 ~ ab5@2", // Gbsus2
  O: "[ab5,eb6,gb6]@2 ~ ab5@2 ~ [ab5,eb6,gb6,ab6]@2 ~ [ab5,eb6,gb6]@2 ~ [ab5,eb6,gb6] ~ [ab5,ab6] ~, ~@9 ab6 ~@4 f6@2", // Ab7 Ab
  P: "[gb5,ab6]@2 ~ [gb5,c6]@2 ~ gb5@2 ~ gb5@2 ~ gb5 ~ [f6,ab6] ~", // Gbsus2 Gbdim Fm
  Q: "[ab5,eb6,gb6]@2 ~ [ab5,gb6,ab6]@2 ~ [ab5,gb6]@2 ~ [ab5,gb6]@2 ~ [ab5,gb6] ~ gb5 ~", // Ab7
  R: "gb5@2 ~ [gb5,ab5,c6]@2 ~ [gb5,ab5]@2 ~ gb5@2 ~@2 ab6 [ab5,f6,ab6] ~", // Ab7 Gbsus2 Db
  S: "[ab5,gb6]@2 ~ [ab5,gb6]@2 ~ [ab5,gb6]@2 ~ ab5@2 ~@5", // Ab7
  T: "gb5@2 ~ [gb5,ab5,c6,eb6,ab6]@2 ~ [gb5,c6,eb6]@4 [ab5,db6] ~@3 [ab5,f6,ab6] ~", // Ab7 Cdim Db5 Db
  U: "[ab5,gb6]@3 [ab5,gb6,ab6]@2 ~ [ab5,eb6,gb6,ab6]@2 ~ [gb6,ab6]@2 ~ [ab5,gb6,ab6] ~ ab6@2", // Ab7 Gbsus2 Ab7
  V: "ab6@2 ~ c6@2 ~@5 ab5 ~ [ab5,c6] ~ [ab5,db6,f6,ab6] ~", // Ab Db
  W: "[ab5,gb6]@2 ~ [ab5,gb6,ab6]@2 ~ [ab5,eb6]@3 ~@3 ab6@3 ~", // Ab7 Ab5
})).s("gm_piano").gain(0.33).pan(0.3)

// chords · distortion guitar · "MIDI"
const distortion_guitar = note(`<
  A B A C D E A F A E A G A E A H A I A H A J A I K L M N A J A J O P O P O P Q R A E A H A E A H A E A H A E S H T L U
  V A W A X O P Y Z O P Q AA@2 AB AC AD AE AF AG AH AI AJ AK AL AM AN@2 AO AP@2 AQ@2 AR AS AT AU A AV A AW A E A AX A AV
  A AX A AY A J T L T L A AV A E Y P O P O P O P AZ BA BB BC BD BE BF BE BD BC BD BE BD BG BF BE BD D BH@3 BI
>`.pickRestart({
  A: "[db3,ab3,db4]@2 [db3,ab3,db4]@2 [b2,gb3,b3]@2 [db3,ab3,db4] ~@3 ab3 ~@3 g3 ~", // Db5 B5 Db5
  B: "~@2 gb3 ~@3 db3@2 e3@4 db3@2 ~@2", C: "~@2 gb3 ~@3 gb4@2 e4@6 ~@2",
  D: "[db3,ab3,db4]@2 [db3,ab3,db4]@2 [b2,gb3,b3]@2 [db3,gb3,ab3,db4] ~@3 ab3 ~@3 g3 ~", // Db5 B5 Dbsus4
  E: "~@2 gb3 ~@3 db3 ~ e3@4 db3@4", F: "~@2 gb3 ~@3 gb4@2 e4@4 db4@2 ~@2", G: "~@2 gb3 ~@3 gb4@2 e4@8",
  H: "~@2 gb3 ~@3 e4@2 e4@8", I: "~@2 gb3 ~@3 [db4,gb4]@2 [b3,e4]@4 db4@4", J: "~@2 gb3 ~@3 db3@2 e3@4 db3@4",
  K: "[gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [e2,b2,e3] ~ [gb2,db3,gb3]@2 ~@2 db4 ~@3 c4 ~", L: "~@2 b3 ~@3 gb3 ~ a3@4 gb3@4",
  M: "[gb2,db3,gb3]!2 [e2,b2,e3] [gb2,db3,gb3] ~ db3 ~ c3", N: "~ b2 ~ gb2 a2@2 b2@2",
  O: "[ab2,eb3,ab3]@3 [ab2,eb3,ab3]!2 ~@11", P: "[b2,gb3,b3] [gb2,db3,gb3]", Q: "[ab2,eb3,ab3]!8",
  R: "[ab2,eb3,ab3]!7 [eb3,ab3]", S: "[db3,ab3,db4]@2 [db3,ab3,db4]@2 [b2,gb3,b3]@2 [db3,ab3,db4]@2 ~@2 ab3 ~@3 g3 ~",
  T: "[gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [e2,b2,e3]@2 [gb2,db3,gb3] ~@3 db4 ~@3 c4 ~", // Gb5 E5 Gb5
  U: "[gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [e2,b2,e3]@2 [gb2,db3,gb3]@2 ~@2 db3 ~@3 c3 ~", V: "~@2 b2 ~@3 gb2@2 b2@4 a2@4",
  W: "~@2 gb3 ~@3 [db4,gb4,bb4]@2 [b3,e4,ab4]@4 db4@4", X: "~@2 gb3 ~@3 [db4,gb4,bb4]@2 [b3,e4,ab4]@8",
  Y: "[ab2,eb3,ab3]@3 [ab2,eb3,ab3] [ab2,eb3,ab3]@2 ~@10", Z: "[b2,gb3,b3] [db3,gb3], ~@4 gb2@3 ~",
  AA: "[[ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2 ~@2 ab4@7 ~ ab4@8, ~@14 [ab2,eb3,ab3]@5 ~@13]/2", // Ab5
  AB: "~@2 gb4@2 ab4@6 ~ ab4@3 gb4@2", AC: "ab4@5 ~ ab4@8 ~@2", AD: "~@2 f4@5 ~ f4@2 eb4@2 f4@2 eb4@2",
  AE: "db4@3 ab3@5", AF: "~@2 ab3 bb3 db4 eb4 f4 db4 eb4@3 db4 bb3 db4 bb3 ab3",
  AG: "f3 gb3 ab3 f3 eb3 [bb2,db3] db3@2 db3@8", AH: "~@8 b4@4 b4@3 ~", AI: "b4@2 ab4 ~ gb4 e4 gb4@6 e4 db4 e4 gb4",
  AJ: "gb4@3 e4 db4@6 e4@2 db4@4", AK: "~@2 b4@2 db5 b4 db5@2", AL: "db5!2 b4@2 db5@2 b4 ab4 ab4@2 gb4@2 e4@2 db4@2",
  AM: "eb4@2 db4@2 gb3@2 f3@9 ~", AN: "[db5 bb4 db5 bb4 db5 eb5@4 ab5 eb5@2 db5@3 b4]/2",
  AO: "ab4@2 b4@2 ab4 gb4@3 f4@2 db4@2 b3@2 db4@2", AP: "[~@2 db4@2 e4@2 gb4 ~ ab4@3 b4 ab4@9 ~ b4@7 b4 ~ ab4]/2",
  AQ: "[gb5 ~ eb5@2 b4@3 db5@2 ab4 db5@2 b4@8 ab4@3 b4@2 ab4@2 b4 ab4@2 b4 ~]/2", AR: "ab4@2 b4 ab4@2 b4 c4@9 ~",
  AS: "~@4 db5 ~ db5 ~@2 db5@3 db5@3 b4", AT: "gb5 eb5 db5 b4 eb5 db5 b4 ab4 db5 ab4 b4 ab4 gb4 eb4 db4 b3",
  AU: "db4 b3 ab3 gb3 ab3 gb3 eb3 gb3 ab3 b3 db4 e4 gb4@2 e4 db4", AV: "~@2 gb3 ~@3 [b3,e4,ab4]@2 [b3,e4,ab4]@4 db4@4",
  AW: "~@2 gb3 ~@3 [b3,e4,ab4]@2 [b3,e4,ab4]@8", AX: "~@2 gb3 ~@3 db3@2 e3@8", AY: "~@2 gb3 ~@3 e4@2 e4@4 db4@4",
  AZ: "[ab2,eb3,ab3]", // Ab5
  BA: "[ab2,eb3,ab3]@3 [ab2,f3,ab3]@2 [ab2,eb3,ab3]@4 [ab2,f3,ab3]@3 [ab2,eb3] ~ [ab2,f3]@2, ~@6 ab3 ~", // Ab5 Db Ab5 Db Ab5 Db
  BB: "[ab2,eb3,ab3]@3 [ab2,f3,ab3]@3 [ab2,eb3,ab3]@3 [ab2,f3,ab3]@3 [ab2,eb3,ab3]@2 ab2@2", // Ab5 Db Ab5 Db Ab5
  BC: "[ab2,eb3,ab3]@3 [ab2,f3,ab3]@3 [ab2,eb3,ab3]@3 [ab2,f3,ab3]@3 [ab2,eb3] ~ [ab2,f3]@2, ~@6 ab3 ~", // Ab5 Db Ab5 Db Ab5 Db
  BD: "[ab2,eb3,ab3]@3 [ab2,f3,ab3]@3 [ab2,eb3,ab3]@3 [ab2,f3,ab3]@3 [ab2,eb3,ab3]@4", // Ab5 Db Ab5 Db Ab5
  BE: "[ab2,eb3,ab3]@3 [ab2,f3,ab3]@3 [ab2,eb3,ab3]@3 [ab2,f3,ab3]@3 [ab2,eb3,ab3]@2 [ab2,f3,ab3]@2", // Ab5 Db Ab5 Db Ab5 Db
  BF: "[ab2,eb3,ab3]@3 [ab2,f3,ab3]@3 [ab2,eb3,ab3]@3 [ab2,f3,ab3]@3 [ab2,eb3,f3,ab3]@4", // Ab5 Db Ab5 Db Fm7
  BG: "[ab2,eb3,ab3]@3 [ab2,f3,ab3]@3 [ab2,eb3,f3,ab3]@3 [ab2,f3,ab3]@3 [ab2,eb3,ab3]@2 [ab2,f3,ab3]@2", // Ab5 Db Fm7 Db Ab5 Db
  BH: "[~@2 gb3 ~@3 db3@2 e3@4 [gb2,db3]@35 ~]/3", BI: "[db3,ab3,db4] ~@7",
})).s("gm_distortion_guitar").gain(0.52).pan(0.6)

// chords · rock organ · "MIDI"
const rock_organ = note(`<
  ~@32 A B C D E F G@2 ~@24 C D H D I J K L ~@16 C M N D O D P@2 ~@24 Q D R D S J R T U V@8 ~@13
>`.pickRestart({
  A: "[ab5,eb6,gb6,ab6]@2 ~ [ab5,eb6,gb6,ab6]!2 ~@11, d6 ~@15", B: "b5@8 [bb5,db6]@7 ~, gb6@15 ~, d6 ~@15",
  C: "[ab5,eb6,gb6,ab6]@2 ~ [ab5,eb6,gb6,ab6] [ab5,eb6,gb6,ab6]@2 ~@10", // Ab7
  D: "[b5,eb6]@7 ~ [bb5,db6]@6 ~@2, [gb5,gb6]@7 ~", // B Bbm Gb
  E: "d6 eb6@2 [ab5,eb6,gb6,ab6] [ab5,eb6,gb6]@2 ~@10, [ab5,gb6,ab6]@2 ~@2 ab6 ~@11", // Ab7
  F: "[gb5,b5,eb6,gb6]@7 ~ [gb5,bb5,db6]@7 ~, ~@8 e6 ~@7", // B Gb
  G: "[d6 eb6@15 ~@2 [eb6,ab6]@2 [ab5,ab6] ~ [ab5,eb6,ab6] ~ [ab5,eb6,ab6] ~ [ab5,eb6,ab6] ~ [ab5,eb6,ab6] ~ [ab5,eb6,ab6] ~, [ab5,ab6]@18 ab5 ~ eb6@2 ~@10]/2", // Ab5 Ab Ab5 Ab
// … 92 more lines