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: edit a riff to change every repeat.

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

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