Strudelify

Bodhisattva

Steely Dan

KeyF majorTempo110 bpm
0:00/0:00
// Bodhisattva — Steely Dan
// 110 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 145 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(110/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 · piano
const piano = note(`<
  ~@4 A@2 B@2 C D E F G H I J K L J M N O P ~@2 Q R S M T M U V W M@3 X M Y Z AA S AB ~ M@2 T M AC AD AE AF M@3 T AG AH
  AI AJ AK ~ M@2 T AL AM AN AO M AP AQ AR ~@2 AS AT AS AR ~@2 AU AV AW AX M@3 AY AZ BA BB M@2 BC ~ M@2 BD M AM Z BE BF M
  BG T BH BI AN BE BJ BK BL BM ~@29
>`.pickRestart({
  A: "[[a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@39 ~@4]/2", B: "[[a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@42 ~]/2",
  C: "[g3,c4,f4,a4]@4 ~ [a3,d4,g4,b4]@3 ~ [g3,c4,f4,a4]@3 ~@2 [a3,d4,g4,b4]@2 ~@2 [a3,d4,g4,b4]@2 ~ [g3,c4,f4] ~@2, ~@21 a4@2 ~", // F G F G Csus4
  D: "[g3,c4,f4,a4]@3 ~@2 [a3,d4,g4,b4]@3 ~ [g3,c4,f4,a4]@3 ~@2 [a3,d4,g4,b4]@2 ~@2 [a3,d4,g4,b4]@3 [g3,c4,f4,a4] ~@2", // F G F G F
  E: "[g3,c4,f4,a4]@3 ~@2 [a3,d4,g4,b4]@3 ~ [g3,c4,f4,a4]@3 ~@2 [a3,d4,g4,b4]@2 ~@2 [a3,d4,g4,b4]@2 ~ [g3,c4,f4,a4]@2 ~", // F G F G F
  F: "~@3 [a3,d4,g4,b4]@2 ~@3 [c4,f4,a4]@2 ~@2 [a3,d4,g4,b4]@2 ~@3 [g3,c4,f4,a4]@4 ~@2 [a3,d4], ~@7 g3@2 ~@15", // G F G F D5
  G: "[g4,b4] ~@4 [g3,c4,f4,a4]@6 ~ [a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@6 ~", // G F G F
  H: "[a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@6 ~ d4 [a3,g4,b4] ~@3 [g3,c4,f4,a4]@6 ~", // G F Em F
  I: "g4 [a3,d4,a4,b4] ~@3 [g3,c4,f4,a4]@6 ~ [a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@6 ~", // Bm7 F G F
  J: "[a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@6 ~ [d4,g4,b4] a3 ~@3 [g3,c4,f4,a4]@6 ~", // G F G F
  K: "g4 [a3,d4,b4] ~@3 [g3,c4,f4,a4]@6 ~@2 [a3,d4,g4,b4] ~@3 [g3,c4,f4,a4]@6 ~", // Bm7 F G F
  L: "[a3,d4,g4,b4] ~@4 f4@6 ~ [a3,d4,g4,b4] ~@4 [f4,a4]@6 ~, ~@2 [g3,c4,a4]@3 ~@3 [g3,c4]@3 ~", // G F Am7 C5
  M: "[a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@6 ~ [a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@6 ~", // G F G F
  N: "[a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@6 ~ [a3,d4,g4,b4] ~@4 [f4,a4]@6 ~, ~@8 [g3,c4]@3 ~", // G F G F C5
  O: "[a3,d4,g4,b4] ~@4 [f4,a4]@6 ~ [a3,d4,g4,b4] ~@4 [g3,f4,a4]@6 ~, ~@4 [g3,c4]@7 ~@5 c4@6 ~@2", // G F G Dm C5
  P: "[a3,d4,g4,b4] ~@3 [g3,c4,f4,a4]@7 [a3,d4,g4,b4] a4 ~@11", // G F G
  Q: "~@13 eb1 [e1,f1,gb1,g1,ab1,a1] [bb1,b1,c2,db2] [d2,eb2,e2] [f2,gb2,g2,ab2] [a2,bb2,b2] [c3,db3,d3,eb3] [e3,f3] [g3,a3] [b3,c4] [db4,d4,eb4]", // Fmaj7 Gsus2 Cmaj7
  R: "[e4,f4,gb4] [g4,ab4,a4] [bb4,b4] [c5,db5] [d5,eb5,e5] f5 [g5,a5] b5 [c6,d6] [e6,f6] g6 ~ [g5,g6]@2 ~@10", // Bmaj7 Dbmaj7 Gsus2 Csus2 Fmaj7 G
  S: "[a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@6 ~ [a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@7", // G F G F
  T: "[bb3,e4,g4] ~@4 [c4,f4,a4]@6 ~ [bb3,e4,g4] ~@4 [c4,f4,a4]@6 ~", // Edim F Edim F
  U: "[g3,d4,g4] ~@4 [g3,d4,g4]@6 ~ [g3,db4,f4,g4] ~@4 [g3,db4,f4,g4]@6 ~", // G5 Gm7b5
  V: "[g3,c4,f4,g4] ~@4 [g3,c4,f4,g4]@6 ~ [ab3,d4,f4] ~@4 [ab3,d4,f4]@6 ~", // Csus4 Ddim
  W: "[g3,d4,g4] ~@4 [g3,d4,g4]@5 ~@2 [g3,c4,g4] ~@4 [g3,c4,g4]@6 ~", // G5 C5
  X: "[bb3,e4,g4,bb4] ~@4 [g3,c4,f4,a4]@5 ~@2 [bb3,e4,g4,bb4] ~@4 [g3,c4,f4,a4]@6 ~", // Edim F Edim F
  Y: "[g3,d4,g4] ~@4 [g3,d4,g4]@6 ~ [g3,db4,f4,g4] ~@4 [g3,db4,f4,g4]@5 ~@2", // G5 Gm7b5
  Z: "[g3,c4,f4,g4] ~@4 [g3,c4,f4,g4]@5 ~@2 [ab3,d4,f4] ~@4 [ab3,d4,f4]@5 ~@2", // Csus4 Ddim
  AA: "[g3,d4,g4] ~@4 [g3,d4,g4]@5 ~@2 [g3,c4,f4,g4] ~@4 [g3,c4,f4,g4]@6 ~", AB: "[a3,d4,g4,a4,b4] ~@23",
  AC: "[g3,d4,g4] ~@4 [g3,d4,g4]@6 ~ [db4,f4,g4] g3 ~@3 [g3,db4,f4,g4]@6 ~", // G5 Gm7b5
  AD: "[g3,c4,f4,g4] ~@4 [g3,c4,f4,g4]@6 ~ [d4,f4] ~@4 [ab3,d4,f4]@6 ~, ~@6 ab3 ~@5", // Csus4 Dm Ddim
  AE: "[g3,d4,f4,g4] ~@4 [g3,d4,f4,g4]@5 ~@2 [g3,c4]@2 ~@3 [g3,c4,g4]@5 ~@2, ~@12 g4 ~@11", // G7 C5
  AF: "[a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@5 ~@2 [a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@6 ~", // G F G F
  AG: "[a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@6 ~ [a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@5 ~ [g3,d4,g4]", // G F G F G5
  AH: "~@11 [g3,db4,g4]@2 ~@10 [g3,c4,g4]", AI: "~@12 [ab3,d4] ~@10 [g3,d4,g4], ~@6 f4 ~@5",
  AJ: "~@11 [g3,c4] ~@12, ~@11 g4@2 ~@11", AK: "[g4,b4] ~@11, [g3,d4] ~@23",
  AL: "[a3,d4,b4] ~@4 [g3,c4,f4,a4]@6 ~ [a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@6 ~, g4 ~@11", // Bm7 F G F
  AM: "[g3,d4,g4] ~@4 [g3,d4,g4]@6 ~ [g3,db4,g4] ~@4 [g3,db4,g4]@5 ~@2", // G5 Gdim
  AN: "[g3,c4,g4] ~@4 [g3,c4,g4]@6 ~ [ab3,d4,f4] ~@4 [ab3,d4,f4]@5 ~@2", // C5 Ddim
  AO: "[g3,d4,g4] ~@4 [g3,d4,g4]@5 ~@2 [g3,c4,g4]@2 ~@3 [g3,c4,g4]@6 ~", // G5 C5
  AP: "[a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@6 ~ [a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@5 ~@2, ~@17 b3 ~@6", // G F G F
  AQ: "[b3,d5] [c4,e5] [d4,f5] ~ [d4,f5] [c4,e5] d5 [c4,e5] [d4,f5] g5 [d4,f5] [c4,e5] d5 [c4,e5] [d4,f5] g5 [d4,f5] [c4,e5] d5 [c4,e5] [d4,f5] g5 [d4,f5] [c4,e5], ~@3 [e4,g5]@2 ~ b3@2 ~ e4@2 ~ b3@2 ~ e4@2 ~ b3@2 ~ e4@2 ~", // Bm C Dm C Dm C Dm C …
  AR: "[b3,d5] ~@11", // Bm
  AS: "[bb3,d5] [c4,e5] [d4,f5] ~ [d4,f5] [c4,e5] d5 [c4,e5] [d4,f5] g5 [d4,f5] [c4,e5] d5 [c4,e5] [d4,f5] g5 [d4,f5] [c4,e5] d5 [c4,e5] [d4,f5] g5 [d4,f5] [c4,e5], ~@3 [e4,g5]@2 ~ bb3@2 ~ e4@2 ~ bb3@2 ~ e4@2 ~ bb3@2 ~ e4@2 ~", // Bb C Dm C Dm C Dm C …
  AT: "b3 ~@11, d5 ~@23", AU: "~@13 d4 [g3,eb4] d4 eb4 d4 eb4 d4 eb4 d4 eb4 ~",
  AV: "[g3,c4,f4,a4]@3 ~@2 [a3,d4,g4,b4]@3 ~ [g3,c4,f4,a4]@3 ~@2 [a3,d4,g4,b4]@2 ~@2 [a3,d4,g4,b4]@2 ~ [g3,c4,f4,a4]@3", // F G F G F
  AW: "~@3 [a3,d4,g4,b4]@2 ~@3 [g3,c4,f4,a4]@2 ~@2 [a3,d4,g4,b4]@2 ~@3 [g3,c4,f4,a4]@4 ~@3", // G F G F
  AX: "[a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@5 ~@2 [a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@5 ~@2", // G F G F
  AY: "[a3,d4,g4,b4,d5] ~@4 [g3,c4,f4,a4,c5]@6 ~ [a3,g4,b4,d5] ~@4 [g3,c4,f4,a4,c5]@5 ~@2, ~@6 d4 ~@5", // G F G F
  AZ: "[a3,d4,g4,b4,d5] ~@4 [g3,c4,f4,a4,c5]@6 ~ [a3,d4,g4,b4,d5] ~@4 [g3,c4,f4,a4,c5]@5 ~@2", // G F G F
  BA: "[a3,d4,g4,b4,d5] ~@4 [g3,c4,f4,a4,c5]@5 ~@2 [a3,d4,g4,b4,d5] ~@4 [g3,c4,f4,a4,c5]@5 ~@2", // G F G F
  BB: "[a3,d4,g4,b4,d5] ~@4 [g3,c4,f4,a4,c5]@5 ~@2 [a3,d4,g4,b4,d5] ~@4 [g3,c4,f4,a4,c5]@6 ~", // G F G F
  BC: "[a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@7 [d4,g4,b4] ~@11", // G F G
  BD: "[bb3,e4]@2 ~@3 [c4,f4,a4]@6 ~ [bb3,e4,g4] ~@4 [c4,f4,a4]@6 ~, g4 ~@23", // Bbdim F Edim F
  BE: "[g3,d4,g4] ~@4 [g3,d4,g4]@5 ~@2 [g3,c4,f4,g4] ~@4 [g3,c4,f4,g4]@5 ~@2", // G5 Csus4
  BF: "[d4,g4,b4] ~@4 [g3,c4,f4,a4]@6 ~ [a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@6 ~, a3 ~@11", // G F G F
  BG: "[a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@6 ~ [a3,d4,g4,b4] ~@4 [g3,f4,a4]@7, ~@8 c4@3 ~", // G F G Dm
  BH: "[g3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@6 ~ [g3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@6 ~", // G F G F
  BI: "[g3,g4] ~@4 [g3,d4,g4]@6 ~ [g3,db4,g4] ~@4 [g3,db4,g4]@6 ~, d4 ~@11", // G G5 Gdim
  BJ: "[a3,b4]@2 ~@3 [g3,c4,f4,a4]@6 ~ [d4,g4,b4] ~@4 [g3,c4,f4,a4]@6 ~, [d4,g4] ~@11 a3@2 ~@10", // Asus2 F G F G5
  BK: "[a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@6 ~ [a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@5 ~@2", // G F G F
  BL: "[a3,g4,b4] ~@4 [g3,c4,f4,a4,c5]@5 ~@2 [a3,d4,b4,d5]@2 ~@3 [g3,c4,f4,a4,c5]@6 ~, [d4,d5]@2 ~@10 g4 ~@11", // Em F Bm7 F D
  BM: "[a3,d4,d5]@2 ~@3 [g3,c4,f4,a4,c5]@6 ~ [a3,d4,g4,b4]@2 ~@3 [g3,c4,f4,a4,c5]@7, [g4,b4] ~@11 d5 ~@11", // D5 F G F G
})).s("gm_piano").gain(0.47).pan(0.8)

// other · electric guitar clean
const electric_guitar_clean = note(`<
  ~@4 A@4 B@14 C D@2 E@2 F@2 G F H I J F@3 G F H I J F K L F@2 G F H I J F@4 G M@4 N ~ F@2 G F H I J F@2 O ~@12 B@10 P Q
  F@2 G F H I J F@3 G F H I J F@4 ~@29
>`.pickRestart({
  A: "[[g3,b3,d4,g4]@2 ~@3 [f3,a3,c4,f4]@43]/2", B: "[g2,d3]@2 ~@3 [f2,c3]@7 [g2,d3]@2 ~@3 [f2,c3]@7",
  C: "[g2,d3]@2 ~@3 [g2,d3] [f2,c3]@3 [f2,c3]@3 [g2,d3]@2 ~@3 a2@2 ~ c3 a2@3", D: "[[g2,d3]@41 a2@2 ~ c3 d3@3]/2",
  E: "[[g2,d3]@18 [e4,f4,a4,d5] ~@5]/2", F: "g2@3 ~@2 a2@2 ~ c3 d3@2 ~ g2@3 ~@2 a2@2 ~ c3 d3@2 ~",
  G: "c3@3 ~@2 d3@2 ~ f3 g3@2 ~ c3@3 ~@2 d3@2 ~ f3 g3@2 ~", H: "eb3@3 ~@2 f3@2 ~ ab3 db3@2 ~ a2@3 ~@2 a3@3 f3 eb3@2 ~",
  I: "d3@3 ~@2 e3@2 ~ e3 b2@2 ~ f3@3 ~@2 e3@2 ~ e3 db3@2 ~",
  J: "eb3@3 ~@2 f3@2 ~ ab3 db3@2 ~ f3@3 ~@2 g3@2 ~ bb3 eb3@2 ~", K: "g2@2 ~@3 a2@2 ~ c3 d3@2 ~ g2@2 ~@3 a2@2 ~ c3 d3@3",
  L: "g2!3 b2!3 d3!3 e3!3 f3!3 e3!3 d3!3 b2!2 ~",
  M: "[g2@3 ~@2 a2@2 ~ c3 d3@2 ~ g2@3 ~@2 a2@2 ~ c3 d3@2 eb3@2 ~@10 a2@2 ~@10 d3@2 ~@11 c3@2 ~@9 eb3@2 ~@10 [c3,f3]@2 ~@11]/4", // F5
  N: "[d3,g3] ~@11", O: "g2 ~@7", P: "[g2,d3]@2 ~@3 [g2,d3] [f2,c3]@3 [f2,c3]@3 [g2,d3]@2 ~@10", Q: "bb3@13 ~@11",
})).s("gm_electric_guitar_clean").gain(0.45)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@4 A@4 B@14 C D@2 E@2 F@2 G F H I J K F L G L H I J K M ~ N@2 O P H I J N@2 Q@2 R S@4 T ~ U@2 O V H I J V@2 ~ W ~ W ~
  X ~ Y@4 Z AA B@4 AB B@3 AC AD AE AF F@2 G F H I J K F AG AH AI H I J AJ@4 ~@4 AK AL AK AL AK AL AK AL AK AL AK AL AK
  AL AK AL AM@5 AN AO AP@2
>`.pickRestart({
  A: "[[g2,d3]@2 ~@3 [f2,c3]@43]/2", // G5 F5
  B: "[g2,d3]@2 ~@3 [f2,c3]@2 ~@2 [c4,f4]@2 ~ [g2,d3]@2 ~@3 [f2,c3]@2 ~@2 [c4,f4]@2 ~, ~@4 f3 ~@5 f3 ~", // G5 F5 G5 F5
  C: "[g2,d3]@2 ~@3 [g2,d3] [f2,c3]@3 [f2,c3]@3 [g2,d3]@2 ~@10", D: "[[g2,d3]@47 ~]/2",
  E: "[[g2,d3]@35 ~ [g2,d3] ~@11]/2", F: "g3 ~@4 f3@2 ~ f3!2 ~@2 g3 ~@4 f3@2 ~ f3!2 ~@2",
  G: "g3 ~@4 e3@2 ~ e3!2 ~@2 g3 ~@4 e3@2 ~ e3!2 ~@2", H: "eb3@3 ~@2 f3@2 ~ ab3 db3@2 ~ a2@3 ~@2 a3@3 f3 eb3@2 ~",
  I: "d3@3 ~@2 e3@2 ~ e3 b2@2 ~ f3@3 ~@2 e3@2 ~ e3 db3@2 ~",
  J: "eb3@3 ~@2 f3@2 ~ ab3 db3@2 ~ f3@3 ~@2 g3@2 ~ bb3 eb3@2 ~", K: "g2@3 ~@2 f3@2 ~ f3!2 ~@2 g3 ~@4 f3@2 ~ f3!2 ~@2",
  L: "g3 ~@4 f3@2 ~ f3 [d4,g4]@2 ~ g3 ~@4 f3@2 ~ f3 [d4,g4]@2 ~", M: "g3 ~@11",
  N: "d3 ~@4 f3@2 ~ f3 e3@2 ~ d3 ~@4 f3@2 ~ f3 e3@2 ~", O: "c3@2 ~@3 e3@2 ~ g3 a3@2 ~ c3@2 ~@3 e3@2 ~ g3 a3@2 ~",
  P: "d3@2 ~@3 f3@2 ~ f3 e3@2 ~ d3 ~@4 f3@2 ~ f3 e3@2 ~", Q: "~@3 [d4,g4] ~@5 [d4,g4] ~@5 [d4,g4] ~@5 [d4,g4] ~@2",
  R: "~@3 [g4,c5] ~@5 [g4,c5] ~@5 [g4,c5] ~@5 [g4,c5] ~@2", // C5
  S: "[~@3 [d4,g4] ~@5 [d4,g4] ~@5 [d4,g4] ~@5 [d4,g4] ~ eb3@2 ~@10 a2@2 ~@10 d3@2 ~@11 c3@2 ~@9 eb3@2 ~@10 [c3,f3]@2 ~@11]/4", // G5 F5
  T: "[d3,g3]@2 gb3 [e3,f3] [bb2,d3] [c3,db3] [bb2,b2] [ab2,a2] g2 ~@15", // G5 Fmaj7 Bb Dbmaj7 Bmaj7 Amaj7
  U: "g3 ~@4 f3@3 f3 [c4,f4] ~@2 g3 ~@4 f3@3 f3 [c4,f4] ~@2", V: "d3 ~@4 g2 f3@2 f3 e3@3 d3 ~@4 g2 f3@2 f3 e3@3",
  W: "[d3,g3]@2 ~@3 [d3,g3]@2 ~ [d3,g3]!2 ~ [d3,g3]!2 ~ [d3,g3]!2 ~ [d3,g3]!2 ~ [d3,g3]!2 ~@2", // G5
  X: "[c3,g3]@2 ~@3 [c3,g3]@2 ~ [c3,g3]!2 ~ [c3,g3]!2 ~ [c3,g3]!2 ~ [c3,g3]!2 ~ [c3,g3]!2 ~@2", // C5
  Y: "[[d3,g3]@2 ~@3 [d3,g3]@2 ~ [d3,g3]!2 ~ [d3,g3]!2 ~ [d3,g3]!2 ~ [d3,g3]!2 ~ [d3,g3]!2 ~ eb3@12 a2@12 d3@13 [c3,d3]@11 [bb2,eb3]@12 [c3,f3]@6 gb4 [g4,ab4] [a4,bb4] [b4,c5] [db5,d5] [eb5,e5] f5]/4", // G5 Csus2 Eb5 F5 Abmaj7 Bbmaj7 Cmaj7 Dmaj7 …
  Z: "~@14 [c3,f3]@2 ~ [c3,f3] [c3,f3]@2 [c3,f3] [c3,f3]@3", // F5
  AA: "[d3,g3]@2 [d3,g3] [d3,g3]@2 [c3,f3]@2 ~ [c3,f3] [c3,f3]@2 [c3,f3] [d3,g3]@2 [d3,g3] [d3,g3]@2 [c3,f3]@2 ~ [c3,f3] [c3,f3]@2 [c3,f3]", // G5 F5 G5 F5
  AB: "[d3,d4]@2 ~@3 [f2,c3]@2 ~@2 [c4,f4]@2 ~ [g2,d3]@2 ~@3 [f2,c3]@2 ~@2 [c4,f4]@2 ~, ~@4 f3 ~@5 f3 ~", // D F5 G5 F5
  AC: "[g2,d3]@2 ~@3 [f2,c3]@7 [g2,d3]@2 ~@3 [f2,c3]@7", // G5 F5 G5 F5
  AD: "[g2,d3]@2 ~@3 [f2,c3]@7 [d3,g3]@2 [d3,g3] ~@2 [c3,f3]@2 ~ [c3,f3] ~@3", // G5 F5 G5 F5
  AE: "[g2,d3]@5 [g2,d3] [f2,c3]@3 [f2,c3]@3 [g2,d3]@2 ~@10", AF: "~@4 g2 ~@3",
  AG: "g3@3 [d4,g4]@2 f3 ~@3 [c4,f4]@2 ~ g3@3 [d4,g4]@2 f3 ~@2 f3 [c4,f4]@2 ~, ~@4 f3 ~@7", // G5 F5 G5 F5
  AH: "c3@2 ~@3 eb3 e3@2 g3 a3@2 ~ c3@2 ~@3 eb3 e3@2 g3 a3@2 ~",
  AI: "g3 ~ g3 [d4,g4]@2 ~@3 g3 g3@2 [d4,g4]@2 ~ [d4,g4] ~@2 [d4,g4] ~@2 [d4,g4] ~@3", // G5
  AJ: "g2@3 ~@2 a2@2 ~ c3 d3@2 ~ g2@3 ~@2 a2@2 ~ c3 d3@2 ~", AK: "eb3 a2", AL: "d3 bb2",
  AM: "[[eb2,bb2,eb3] [f2,c3,f3]]/5", AN: "[g2,d3,g3]!12 [a2,e3,a3]!4 [bb2,f3,bb3]!4 [c3,g3,c4]!4",
  AO: "[bb2,f3,bb3]!4 [a2,e3,a3] [a2,e3] [a2,e3,a3]!2 [g2,d3,g3]!4 [f2,c3,f3] [f2,c3] [f2,c3,f3]!2 [g2,d3,g3]!8", // Bb5 A5 G5 F5 G5
  AP: "[[g2,d3,g3]@29 ~@19]/2", // G5
})).s("gm_distortion_guitar").gain(0.19).pan(0.2)

// other · overdriven guitar
const overdriven_guitar = note("<~@11 A B C B C B D B E F@2 G ~@61 A B H B H B I B J F@2 G ~@49>".pickRestart({
  A: "~@20 b3 c4@2 ~", B: "c4@6 c4@2 b3 c4 b3 a3", C: "g3@19 ~ b3 c4@2 ~", D: "g3 a3 g3 f3@17 b3 c4@2 ~",
  E: "g3 a3 g3 f3@17 b3 c4@2 d4",
  F: "[~@2 c4 ~@2 d4@2 ~ e4 ~@2 f4@2 ~ e4 ~@2 f4@2 ~ g4 ~@2 a4@2 ~ g4 f4@2 d4@16 ~@3]/2", G: "g4 f4 e4 d4@3 ~@6",
  H: "g3@8 e3@12 b3 c4@2 ~", I: "g3 a3 g3 f3@5 e3@12 b3 c4@2 ~", J: "g3 a3 g3 f3@5 e3@12 b3 c4@2 d4",
})).s("gm_overdriven_guitar").gain(0.42).pan(0.6)

// other · distortion guitar
const distortion_guitar_2 = note("<~@11 A B C B C B D B E F@2 G ~@61 A B H B H B I B J F@2 G ~@49>".pickRestart({
  A: "~@20 d4 e4@2 ~", B: "e4@6 e4@2 d4 e4 d4 c4", C: "b3@19 ~ d4 e4@2 ~", D: "b3 c4 b3 a3@17 d4 e4@2 ~",
  E: "b3 c4 b3 a3@17 d4 e4@2 f4",
  F: "[~@2 e4 ~@2 f4@2 ~ g4 ~@2 a4@2 ~ g4 ~@2 a4@2 ~ b4 ~@2 c5@2 ~ b4 a4@2 f4@16 ~@3]/2", G: "b4 a4 g4 f4@3 ~@6",
  H: "b3@8 ab3@12 d4 e4@2 ~", I: "b3 c4 b3 a3@5 ab3@12 d4 e4@2 ~", J: "b3 c4 b3 a3@5 ab3@12 d4 e4@2 f4",
})).s("gm_distortion_guitar").gain(0.42).pan(0.6)

// other · overdriven guitar
const overdriven_guitar_2 = note("<~@15 A B C B D E@2 F ~@65 A B G B H E@2 F ~@49>".pickRestart({
  A: "~@20 f4 g4@2 ~", B: "g4@6 g4@2 f4 g4 f4 e4", C: "d4 e4 d4 c4@17 f4 g4@2 ~", D: "d4 e4 d4 c4@17 f4 g4@2 a4",
  E: "[~@2 g4 ~@2 a4@2 ~ b4 ~@2 c5@2 ~ b4 ~@2 c5@2 ~ d5 ~@2 e5@2 ~ d5 c5@2 a4@16 ~@3]/2", F: "d5 c5 b4 a4@3 ~@6",
  G: "d4 e4 d4 c4@5 b3@12 f4 g4@2 ~", H: "d4 e4 d4 c4@5 b3@12 f4 g4@2 a4",
})).s("gm_overdriven_guitar").gain(0.42).pan(0.6)

// chords · sitar
const sitar = note("<~@23 A@2 B@2 ~@118>".pickRestart({
  A: "[~@10 d3@9 ~@5, ~@3 d5@2 g4@2 c4@2 f3@9 ~@6, ~@7 c5@4 f4@4 b3@4 e3@18 ~@11, ~@4 b4@2 e4@2 a3@9 ~@7, ~@9 a4@4 d4@4 g3@18 ~@13]/2",
  B: "[~@19 d5@18 ~@11, ~@3 d3@2 b3@2 f4@2 c5@9 ~@6, ~@7 e3@4 c4@4 g4@18 ~@15, ~@4 f3@2 d4@2 a4@9 ~@7, ~@9 [g3,a3]@4 e4@4 b4@18 ~@13]/2", // Gsus2
})).s("gm_sitar").gain(0.28)

// bass · fretless bass
const bass = note(`<
  ~@4 A@4 B@3 C D E D E D E D E D E F G@2 H@2 I@2 J I K L M I@3 J I K L M I N ~ I@2 J I O L M I@4 J P@4 N ~ I@2 J I O L
  M I@2 Q R S T U V W X@4 B@2 D E D E D E D E D E Y Z I@2 J I AA L M I@3 J I O L M I@4 AB AC AB AD AE AF AE AF AE AF AE
  AF AE AF AE AF AE AF AE AF AG@5 AH AI AJ AK
>`.pickRestart({
  A: "[g1@5 f1@43]/2", B: "g1@5 f1@7 g1@5 f1@7", C: "g1@5 f1@7 g1@5 f1@2 ~ f1 f1@3",
  D: "g1@5 f1@2 ~ f1 f1@3 g1@5 f1@3 f1 f1@3", E: "g1@5 f1@2 ~ f1 f1@3 g1@5 f1@2 ~ f1 f1@3",
  F: "g1@4 g1@2 f1@3 f1@3 g1@2 ~@3 a1@2 ~ c2 a1@3", G: "[g1@41 a1@2 ~ c2 d2@3]/2", H: "[g1@18 g1 ~@5]/2",
  I: "g1@3 ~@2 a1@2 ~ c2 d2@2 ~ g1@3 ~@2 a1@2 ~ c2 d2@2 ~", J: "c2@3 ~@2 d2@2 ~ f2 g2@2 ~ c2@3 ~@2 d2@2 ~ f2 g2@2 ~",
  K: "eb2@3 ~@2 f2@2 ~ ab2 db2@2 ~ a1@3 ~@2 b1@2 ~ d2 b1@2 ~",
  L: "d2@3 ~@2 e2@2 ~ e2 b1@2 ~ f2@3 ~@2 e2@2 ~ e2 db2@2 ~",
  M: "eb2@3 ~@2 f2@2 ~ ab2 db2@2 ~ f2@3 ~@2 g2@2 ~ bb2 eb2@2 ~", N: "g2 ~@11",
  O: "eb2@3 ~@2 f2@2 ~ ab2 db2@2 ~ a2@3 ~@2 ab2@2 ~ ab2 eb2@2 ~",
  P: "[g1@3 ~@2 a1@2 ~ c2 d2@2 ~ g1@3 ~@2 a1@2 ~ c2 d2@2 eb2@2 ~@10 a1@2 ~@10 d2@2 ~@11 c2@2 ~@9 eb2@2 ~@10 f2@2 ~@11]/4",
  Q: "g1 a1 bb1 c2 d2 e2 f2 gb2", R: "g2 f2 e2 eb2 d2 c2 b1 c2", S: "g1 e1 f1 gb1 g1 b1 e2 d2",
  T: "g2 b1 d2 e2 f2 gb2 g2 b1", U: "c2 d2 eb2 e2 g2 a2 bb2 a2", V: "g2@3 f2@3 eb2@3 e2@3 c2@2 c2 bb1@3 a1@3 bb1@3",
  W: "g1 b1 d2 e2 f2 e2 f2 gb2",
  X: "[g2@2 g2 b1@3 c2@3 db2@3 d2@3 gb1@3 g1@3 a1@2 eb2@12 a1@12 d2@13 bb1@11 eb2@12 f2@13]/4",
  Y: "g1@4 g1@2 f1@3 f1@3 g1@2 ~@10", Z: "f2@6 a1 ~@5", AA: "eb2@3 ~@2 f2@2 ~ ab2 gb2@2 ~ a2@2 ~@3 a2@2 ~ a2 e2@2 ~",
  AB: "eb2@4 a1@3 a1", AC: "d2@4 bb1@3 bb1", AD: "d2@3 d2 bb1!4", AE: "eb2!4 a1!4", AF: "d2!4 bb1!4",
  AG: "[eb2@3 eb2 ~@2 eb3@3 ~@48 [c3,f3]@3, ~@8 eb2@12 bb2@6 bb2@5 bb2@3 bb2@3 bb2@3 bb2@3 bb2@3 bb2@3 bb2@3 bb2@3 bb2@3 bb2@6 ~@56, ~@10 bb2@8 eb3@6 eb3@6 eb3@3 eb3@3 eb3@3 eb3@3 eb3@3 eb3@3 eb3@3 eb3@3 eb3@3 eb3@5 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 ~@6, ~@22 eb2@6 eb2@4 eb2@3 eb2@3 eb2@3 eb2@3 eb2@3 eb2@3 eb2@3 eb2@3 eb2@3 eb2@6 ~@55, ~@60 [c3,f3] f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 ~@5]/5", // F5
  AH: "g2!12 a2!4 bb2!4 c3!4", AI: "bb2!4 a2!4 g2!4 f2!4 g2!8", AJ: "g2!24", AK: "g2@5 ~@19",
})).s("gm_fretless_bass").gain(0.38)

// other · melodic tom
const melodic_tom = note("<~@62 [~@6 g4 ~@2 e4 ~@5 c4 ~@4 e4 ~@3] ~@19 [~@18 e4 ~@5] ~@62>")
  .s("gm_melodic_tom").gain(0.75)

// chords · flute
const flute = note(`<
  ~@39 A B C ~@30 D E D E F ~@2 G@3 H ~@26 A B C ~@8 I B I B I B I B J K@3 L M@3 N@5 ~@4
>`.pickRestart({
  A: "~ [g4,bb4,d5] [f4,a4,db5]@2", B: "[f4,a4,c5] [a4,c5,d5]", C: "[g4,bb4,d5] [a4,c5,d5]",
  D: "[d4,g4,b4,d5] [e4,a4,c5,e5] [f4,bb4,d5,f5] [g4,c5,e5,g5] [f4,bb4,d5,f5] [e4,a4,c5,e5] [d4,g4,b4,d5] [e4,a4,c5,e5] [f4,bb4,d5,f5] [g4,c5,e5,g5] [f4,bb4,d5,f5] [e4,a4,c5,e5] [d4,g4,b4,d5] [e4,a4,c5,e5] [f4,bb4,d5,f5] [g4,c5,e5,g5] [f4,bb4,d5,f5] [e4,a4,c5,e5] [d4,g4,b4,d5] [e4,a4,c5,e5] [f4,bb4,d5,f5] [g4,c5,e5,g5] [f4,bb4,d5,f5] [e4,a4,c5,e5]", // G Am Bb C Bb Am G Am …
  E: "[d4,g4,b4,d5] ~@4 [d4,g4,b4,d5] ~@18", // G
  F: "[d4,g4,bb4,d5] [e4,a4,c5,e5] [f4,bb4,d5,f5] [g4,c5,e5,g5] [f4,bb4,d5,f5] [e4,a4,c5,e5] [d4,g4,bb4,d5] [e4,a4,c5,e5] [f4,bb4,d5,f5] [g4,c5,e5,g5] [f4,bb4,d5,f5] [e4,a4,c5,e5] [d4,g4,bb4,d5] [e4,a4,c5,e5] [f4,bb4,d5,f5] [g4,c5,e5,g5] [f4,bb4,d5,f5] [e4,a4,c5,e5] [d4,g4,bb4,d5] [e4,a4,c5,e5] [f4,bb4,d5,f5] [g4,c5,e5,g5] [f4,bb4,d5,f5] [e4,a4,c5,e5]", // Gm Am Bb C Bb Am Gm Am …
  G: "[~@23 [bb4,d5]@11 [a4,db5]@13 [g4,c5]@13 [c5,d5]@11 ~]/3", // Bb A C5 Csus2
  H: "[bb4,d5]@11 ~ [bb4,d5] eb5 d5 eb5 ~ d5 eb5 d5 eb5 d5 eb5 d5, ~@7 c5@5", I: "[g4,bb4,d5] [f4,a4,db5]",
// … 92 more lines

More by Steely Dan