Strudelify
Bodhisattva cover art

Countdown To Ecstasy

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, A@4 for four bars: edit a riff to change every repeat.

// chords · piano
const piano = note(`<
  ~@4 A@2 B@2 C@2 D E F G H G I J G@2 K J L ~@2 M N G@2 O G P Q R G@3 S G P Q T G U ~ G@2 O G V Q W G@4 O X Y Z AA AB ~
  G@2 O G AC AD R G AE AF AG ~@2 AH AG AH AG ~@2 AI AJ AK G@4 AL AM@2 AL G@2 AN ~ G@2 O G AC Q T G@2 AO O AP AC AD T G@2
  AL AQ ~@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]@2 ~ [g3,c4,f4,a4]@2 ~", // F G F G F
  E: "~@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
  F: "[g4,b4] ~@4 [g3,c4,f4,a4]@6 ~ [a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@6 ~", // G F G F
  G: "[a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@6 ~ [a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@6 ~", // G F G F
  H: "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
  I: "[a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@6 ~ [d4,g4,b4] a3 ~@3 [g3,c4,f4,a4]@6 ~", // G F G F
  J: "[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
  K: "[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
  L: "[a3,d4,g4,b4] ~@3 [g3,c4,f4,a4]@7 [a3,d4,g4,b4] a4 ~@11", // G F G
  M: "~@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
  N: "[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
  O: "[bb3,e4,g4] ~@4 [c4,f4,a4]@6 ~ [bb3,e4,g4] ~@4 [c4,f4,a4]@6 ~", // Edim F Edim F
  P: "[g3,d4,g4] ~@4 [g3,d4,g4]@6 ~ [g3,db4,f4,g4] ~@4 [g3,db4,f4,g4]@6 ~", // G5 Gm7b5
  Q: "[g3,c4,f4,g4] ~@4 [g3,c4,f4,g4]@5 ~@2 [ab3,d4,f4] ~@4 [ab3,d4,f4]@5 ~@2", // Csus4 Ddim
  R: "[g3,d4,g4] ~@4 [g3,d4,g4]@5 ~@2 [g3,c4,g4] ~@4 [g3,c4,g4]@6 ~", // G5 C5
  S: "[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
  T: "[g3,d4,g4] ~@4 [g3,d4,g4]@5 ~@2 [g3,c4,f4,g4] ~@4 [g3,c4,f4,g4]@5 ~@2", U: "[a3,d4,g4,a4,b4] ~@23",
  V: "[g3,d4,g4] ~@4 [g3,d4,g4]@6 ~ [db4,f4,g4] g3 ~@3 [g3,db4,f4,g4]@6 ~", // G5 Gm7b5
  W: "[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
  X: "[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
  Y: "~@11 [g3,db4,g4]@2 ~@10 [g3,c4,g4]", Z: "~@12 [ab3,d4] ~@10 [g3,d4,g4], ~@6 f4 ~@5",
  AA: "~@11 [g3,c4] ~@12, ~@11 g4@2 ~@11", AB: "[g4,b4] ~@11, [g3,d4] ~@23",
  AC: "[g3,d4,g4] ~@4 [g3,d4,g4]@6 ~ [g3,db4,g4] ~@4 [g3,db4,g4]@5 ~@2", // G5 Gdim
  AD: "[g3,c4,g4] ~@4 [g3,c4,g4]@6 ~ [ab3,d4,f4] ~@4 [ab3,d4,f4]@5 ~@2", // C5 Ddim
  AE: "[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
  AF: "[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 …
  AG: "[b3,d5] ~@11", // Bm
  AH: "[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 …
  AI: "~@13 d4 [g3,eb4] d4 eb4 d4 eb4 d4 eb4 d4 eb4 ~", // Cm
  AJ: "[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
  AK: "~@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
  AL: "[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
  AM: "[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
  AN: "[a3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@7 [d4,g4,b4] ~@11", // G F G
  AO: "[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
  AP: "[g3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@6 ~ [g3,d4,g4,b4] ~@4 [g3,c4,f4,a4]@6 ~", // G F G F
  AQ: "[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@10 E F@2 G@2 H@2 I H J K L H@3 I H J K L H M ~ H@2 I H N K L H@4 I O@4 M ~ H@2 I H N K L H@2 P Q R S T
  U V W@4 B@2 D X D X D X D X D X Y Z H@2 I H AA K L H@3 I H N K L H@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@4 g1@2 f1@3 f1@3 g1@2 ~@3 a1@2 ~ c2 a1@3",
  F: "[g1@41 a1@2 ~ c2 d2@3]/2", G: "[g1@18 g1 ~@5]/2", H: "g1@3 ~@2 a1@2 ~ c2 d2@2 ~ g1@3 ~@2 a1@2 ~ c2 d2@2 ~",
  I: "c2@3 ~@2 d2@2 ~ f2 g2@2 ~ c2@3 ~@2 d2@2 ~ f2 g2@2 ~", J: "eb2@3 ~@2 f2@2 ~ ab2 db2@2 ~ a1@3 ~@2 b1@2 ~ d2 b1@2 ~",
  K: "d2@3 ~@2 e2@2 ~ e2 b1@2 ~ f2@3 ~@2 e2@2 ~ e2 db2@2 ~",
  L: "eb2@3 ~@2 f2@2 ~ ab2 db2@2 ~ f2@3 ~@2 g2@2 ~ bb2 eb2@2 ~", M: "g2 ~@11",
  N: "eb2@3 ~@2 f2@2 ~ ab2 db2@2 ~ a2@3 ~@2 ab2@2 ~ ab2 eb2@2 ~",
  O: "[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",
  P: "g1 a1 bb1 c2 d2 e2 f2 gb2", Q: "g2 f2 e2 eb2 d2 c2 b1 c2", R: "g1 e1 f1 gb1 g1 b1 e2 d2",
  S: "g2 b1 d2 e2 f2 gb2 g2 b1", T: "c2 d2 eb2 e2 g2 a2 bb2 a2", U: "g2@3 f2@3 eb2@3 e2@3 c2@2 c2 bb1@3 a1@3 bb1@3",
  V: "g1 b1 d2 e2 f2 e2 f2 gb2",
  W: "[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",
  X: "g1@5 f1@2 ~ f1 f1@3 g1@5 f1@2 ~ f1 f1@3", 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]",
  J: "[g4,bb4,d5]@12 ~ e5@11, ~ [f4,a4,db5]", // Gm Faug
  K: "[~ f5@11 ~ g5@10 ~ [g4,bb4,d5]@12 [f4,a4,db5]@12 [f4,a4,c5]@12 [a4,c5,d5]@12, [f4,a4,c5]@12 [a4,c5,d5]@11 g5@47 ~@2]/3", // Gm Faug F D7 F D7
  L: "[g4,bb4,d5,g5] [f4,a4,db5,a5]", // Gm Faug
  M: "[[f4,a4,c5,bb5]@12 ~@24 [f4,a4,db5]@12 [f4,a4,c5]@12 ~@6 [eb6,e6] f6@4 e6, ~ [a4,c5,d5] [g4,bb4,d5] ~@2 [a4,c5,d5], ~@13 c6@12 d6@41 ~@6]/3", // F Faug F Emaj7 D7 Gm D7
  N: "[eb6 d6@51 ~ bb5 g5@5 f5 g5@4 d5@5 c5 d5@50, ~@26 c6 ~@33]/5",
})).s("gm_flute").gain(0.22).pan(0.2)

// other · flute
const flute_2 = note("<~@79 A@3 B C ~@44 D E D E F G H I J@5 ~@4>".pickRestart({
  A: "[~@23 d5@12 db5@12 c5@13 d5@12]/3",
  B: "d5 eb5 d5 eb5 d5 eb5 d5 eb5 d5 eb5 d5 eb5 d5 eb5 d5 eb5 d5 eb5 d5 eb5 d5 eb5 d5 eb5", C: "d5 ~@23", D: "bb4 a4",
  E: "g4@10 bb4 b4 c5@12", F: "bb4 c5", G: "d5@10 eb5 e5 f5@10 e5 eb5", H: "d5 e5", I: "f5 g5",
  J: "bb5 g5 bb5 g5 bb5 g5 bb5 g5 bb5 g5 bb5 g5 bb5 g5 bb5 g5 bb5 g5 bb5 g5 bb5 g5 bb5 g5",
})).s("gm_flute").gain(0.22).pan(0.7)

// bass · lead 5 charang
const bass_2 = note("<~@79 A@4 ~@62>".pickRestart({
  A: "[~@23 eb2@12 a1@12 d2@11 ~@13 eb2@12 f2@13, ~@60 bb1@13 ~@23]/4",
})).s("gm_lead_5_charang").gain(0.75)

// drums · kick
// … 71 more lines

More by Steely Dan