Strudelify
Let's Dance cover art

1983 · Let's Dance

Let's Dance

David Bowie

KeyE♭ majorTempo113 bpm
0:00/0:00
// Let's Dance — BOWIE DAVID
// 113 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 121 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(113/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 · synth bass 1
const bass = note(`<
  ~@2 A@3 B C D E F G H I J C D E F K H I L C D E F G H I J M@2 N O P@2 Q@2 R S T A@3 B C D E F G H I L C D U F K H I L
  C D U F G H I V M@2 N W X Y Z@2 R S T A@3 B C D ~@5 AA@3 AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU
  AV@4 AW AX@2
>`.pickRestart({
  A: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~",
  B: "eb2@2 ~@2 eb2@2 ~@2 eb2@2 ~@2 eb2@2 ~@2 eb2@2 ~@2 eb2@2 ~@2 eb2@7 ~", C: "bb1@4 ~@4 ab1@4 ~@4 g1@5 ~@3 f1@5 ~@3",
  D: "bb1@4 ~@2 bb1 ~ ab1@3 ~ a1@3 ~ bb1@3 ~@13", E: "bb1@3 ~@3 bb1 ~ ab1@3 ~ a1@4 bb1@4 ~@12",
  F: "eb2@4 ~@4 db2@5 ~@3 c2@4 ~@4 bb1@7 ~", G: "gb1@3 ~@3 gb1 ~ gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@10 b1@2 db2@2",
  H: "gb1@3 ~@3 gb1 ~ gb1@2 ~@2 gb1@2 ~@2 gb1@3 ~@13", I: "bb1@4 ~@4 ab1@5 ~@3 g1@5 ~@3 f1@5 ~@3",
  J: "bb1@3 ~@3 bb1@2 ab1@3 ~ a1@3 ~ bb1@3 ~@5 bb1@7 ~", K: "gb1@3 ~@3 gb1 ~ gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@14",
  L: "bb1@3 ~@3 bb1@2 ab1@3 ~ a1@3 ~ bb1@3 ~@13", M: "[ab1@55 ~@9]/2", N: "db2@15 ~ eb2@15 ~",
  O: "db2@15 ~ eb2@10 db2@2 c2@2 bb1@2", P: "[ab1@29 ~ bb1@2]/2", Q: "[eb2@28 ~@2 c2 bb1]/2", R: "ab1@23 ~ bb1@4 c2@4",
  S: "f1@31 ~", T: "db2@31 ~", U: "bb1@3 ~@3 bb1 ~ ab1@3 ~ a1@4 bb1@4 ~@8 c2 ~ db2@2",
  V: "bb1@3 ~@3 bb1@2 ab1@3 ~ a1@3 ~ bb1@3 ~@9 eb2@2 c2@2", W: "db2@15 ~ eb2@10 ~@2 c2@2 bb1@2", X: "ab1@31 ~",
  Y: "ab2@29 ~@3", Z: "[eb2@7 ~]/2",
  AA: "[~@22 bb2@7 ~ bb1@4 ~@4 ab1@4 ~@4 g1@5 ~@3 f1@5 ~@3 bb1@4 ~ bb1 ~ ab1@3 ~ a1@3 ~ bb1@3 ~@13 bb1@3]/3",
  AB: "~@3 bb1 ~ ab1@3 ~ a1@4 bb1@4 ~@12 eb2@3", AC: "~@5 db2@5 ~@3 c2@4 ~@4 bb1@7 ~ gb1@3",
  AD: "~@3 gb1 ~ gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@9 b1@2 db2@2 gb1@3 ~",
  AE: "~@2 gb1 ~ gb1@2 ~@2 gb1@2 ~@2 gb1@3 ~@13 bb1@3 ~", AF: "~@2 bb1@2 ab1@3 ~ a1@3 ~ bb1@3 ~@13 bb1@3 ~",
  AG: "~@2 bb1@2 ab1@3 ~ a1@3 ~ bb1@3 ~@5 bb1@7 ~ bb1@4", AH: "~@3 ab1@4 ~@4 g1@5 ~@3 f1@5 ~@3 bb1@4 ~",
  AI: "~ bb1 ~ ab1@3 ~ a1@3 ~ bb1@3 ~@13 bb1@3 ~@2", AJ: "~ bb1 ~ ab1@3 ~ a1@4 bb1@4 ~@8 c2@2 db2@2 eb2@4 ~",
  AK: "~@3 db2@5 ~@3 c2@4 ~@3 bb1@7 ~ gb1@3 ~@3", AL: "gb1 ~ gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@10 b1@2 db2@2 gb1@3 ~@3",
  AM: "gb1 ~ gb1@2 ~@2 gb1@2 ~@2 gb1@3 ~@13 bb1@4 ~@2", AN: "~@2 ab1@5 ~@3 g1@5 ~@3 f1@5 ~@3 bb1@3 ~@3",
  AO: "~ ab1@3 ~@2 a1@3 bb1@14 ~@2 bb1@4 ~@3, bb1 ~@15", AP: "~ ab1@4 ~@4 g1@5 ~@3 f1@5 ~@3 bb1@4 ~@2 bb1",
  AQ: "~ ab1@3 ~ a1@3 ~ bb1@3 ~@13 bb1@3 ~@3 bb1", AR: "~ ab1@3 ~ a1@4 bb1@4 ~@7 c2@2 ~@2 eb2@4 ~@4, ~@23 db2@2 ~@7",
  AS: "db2@5 ~@3 c2@4 ~@4 bb1@7 ~ gb1@3 ~@3 gb1 ~", AT: "gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@10 b1@2 db2@2 gb1@3 ~@3 gb1 ~",
  AU: "gb1@2 ~@2 gb1@2 ~@2 gb1@3 ~@13 bb1@4 ~@4",
  AV: "[ab1@5 ~@2 g1@5 ~@3 f1@5 ~@3 bb1@3 ~@3 bb1@2 ab1@3 ~ a1@3 ~ bb1@3 ~@5 [bb2,eb3]@8 eb2@2 ~@2 eb2@2 ~@2 eb2@2 ~@2 eb2@2 ~@2 eb2@2 ~@2 eb2@2 ~@2 eb2@2 ~@2 eb2@2 ~@2 eb2@2 ~@2 eb2@2 ~@2 eb2@2 ~@2 eb2@2 ~@2 eb2@2 ~@2 eb2@2 ~@2 eb2@2 ~ eb2@2 ~@3 eb2@2 ~ eb2@2 ~@2 eb2@2]/4", // Eb5
  AW: "~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2",
  AX: "[~@2 eb2@2 ~@2 eb2@2 ~@2 eb2@2 ~@2 eb2@7 ~ bb1@4 ~@4 ab1@4 ~@30]/2",
})).s("gm_synth_bass_1").gain(0.45)

// chords · percussive organ
const percussive_organ = note(`<
  ~@2 A B C D E ~ F ~ G ~ F ~@17 H@2 I@2 J@2 K L M N O A B C D E ~ F ~ G ~ F ~@17 H@2 I@2 J@2 K L M N O A B C D E ~@6
  P@2 Q@2 R@2 S@2 T@2 U@2 V@2 W@2 X@2 Y@2 Z@2 AA@2 AB@5 ~
>`.pickRestart({
  A: "[bb4,db5,eb5,g5]@31 ~", B: "[db5,eb5,g5,bb5]@31 ~", C: "[eb5,g5,bb5,db6]@31 ~", D: "[g5,bb5,db6,eb6]@31 ~",
  E: "[f5,bb5,eb6]@7 ~", F: "[bb5,db6,f6]@7 ~", G: "[bb5,eb6,gb6]@7 ~", H: "[c6,eb6,ab6]/2",
  I: "[ab5,db6,f6]@15 ~ [g5,bb5,eb6]@15 ~", J: "[[c6,eb6,ab6]@63 ~]/2", K: "[db5,f5,ab5]@15 ~ [eb5,g5,bb5]@15 ~",
  L: "[f5,ab5,db6]@15 ~ [g5,bb5,eb6]@15 ~", M: "[c6,eb6,ab6]@31 ~", N: "[ab5,c6,f6]@31 ~", O: "[f5,ab5,db6]@31 ~",
  P: "[~@15 [f5,bb5,eb6]@14 ~@3]/2", Q: "[~@29 [bb5,db6,f6]@28 ~@7]/2", R: "[~@29 [bb5,eb6]@28 ~@7, ~@7 gb6@7 ~@2]/2",
  S: "[~@7 [bb5,db6,f6]@7 ~@2]/2", T: "[~@7 [bb5,eb6]@7 ~@2, ~@27 f5@28 ~@9]/2", U: "[~@27 [bb5,db6,f6]@28 ~@9]/2",
  V: "[~@13 [bb5,eb6,gb6]@14 ~@5]/2", W: "[~@13 [bb5,db6,f6]@14 ~@5]/2", X: "[~@25 [f5,bb5,eb6]@28 ~@11]/2",
  Y: "[~@25 [bb5,db6,f6]@28 ~@11]/2", Z: "[~@6 [bb5,eb6,gb6]@7 ~@3]/2", AA: "[~@6 [bb5,db6,f6]@7 ~@3]/2",
  AB: "[~@23 [bb4,db5,eb5,g5]@31 ~ [db5,eb5,g5,bb5]@31 [eb5,g5,bb5,db6]@31 ~ [g5,bb5,db6,eb6]@31 ~ [c6,eb6]@6 ~@4, ~@150 f5 ~@9]/5", // Eb7 Cm
})).s("gm_percussive_organ").gain(0.25)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@2 A@4 B ~ C ~ D ~ E ~ B ~ C ~ D ~ E ~ B ~ C ~ D ~ F ~ G@2 H@2 G@2 I@2 J K L A@4 B ~ C ~ D ~ F ~ B ~ M ~ D ~ E ~ B ~
  M ~ D ~ E ~ G@2 H@2 G@2 I@2 J K L A@4 B ~@6 N O P Q R S T U V W X Y Z AA AB AC AD AE AF@2 AG AH AI AJ AK@3 AL AM ~
>`.pickRestart({
  A: "[g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~", // Eb7
  B: "[ab4,bb4,eb5] ~@5 [ab4,bb4,eb5] ~@9 [ab4,bb4,eb5] ~@7 [ab4,bb4,eb5] ~@7", // Absus2
  C: "[f4,bb4,db5] ~@2 [f4,bb4,db5] ~@4 [f4,bb4,db5] ~@3 [f4,bb4,db5] ~@3", // Bbm
  D: "[gb4,bb4,eb5] ~@5 [gb4,bb4,eb5] ~@9 [gb4,bb4,eb5] ~@7 [gb4,bb4,eb5] ~@7", // Ebm
  E: "[f4,bb4,db5]@2 ~@4 [f4,bb4,db5]@2 ~@8 [f4,bb4,db5] ~@7 [f4,bb4,db5] ~@7", // Bbm
  F: "[f4,bb4,db5]@2 ~@4 [f4,bb4,db5] ~@9 [f4,bb4,db5] ~@7 [f4,bb4,db5] ~@7", G: "[[c4,eb4,ab4]@7 ~]/2",
  H: "[ab3,db4,f4]@15 ~ [bb3,eb4,g4]@15 ~", I: "[[ab3,db4,f4]@55 ~@9]/2", J: "[c4,eb4,ab4]@31 ~", K: "[ab3,c4,f4]@31 ~",
  L: "[f3,ab3,db4]@31 ~", M: "[f4,bb4,db5] ~@5 [f4,bb4,db5]@2 ~@8 [f4,bb4,db5]@2 ~@6 [f4,bb4,db5]@2 ~@6",
  N: "~@30 [ab4,bb4,eb5] ~", O: "~@4 [ab4,bb4,eb5] ~@8 eb5 [ab4,bb4] ~@6 [bb4,eb5] ab4 ~@9", P: "~@29 [f4,bb4,db5] ~@2",
  Q: "~@3 [f4,bb4,db5]@2 ~@8 [f4,bb4,db5]@2 ~@6 [f4,bb4,db5]@2 ~@9", R: "~@29 [gb4,bb4,eb5] ~@2",
  S: "~@3 [gb4,bb4,eb5] ~@8 gb4 [bb4,eb5] ~@6 [gb4,bb4,eb5] ~@11", T: "~@14 [f4,bb4,db5] ~",
  U: "~@2 [f4,bb4,db5] ~@9 [f4,bb4,db5] ~@7 [f4,bb4,db5] ~@11", V: "~@27 [ab4,eb5] bb4 ~@3",
  W: "~ [ab4,bb4,eb5] ~@9 [ab4,bb4,eb5] ~@7 [ab4,bb4,eb5] ~@12", X: "~@27 [f4,bb4,db5] ~@4",
  Y: "~ [f4,bb4,db5]@2 ~@8 [f4,bb4,db5]@2 ~@6 [f4,bb4,db5]@2 ~@11", Z: "~@26 [gb4,bb4,eb5] ~@5",
  AA: "[gb4,bb4,eb5] ~@9 [gb4,bb4,eb5] ~@7 [gb4,bb4,eb5] ~@13", AB: "~@13 [f4,bb4,db5] ~@2",
  AC: "[f4,bb4,db5] ~@9 [f4,bb4,db5] ~@7 [f4,bb4,db5] ~@13", AD: "~@25 [ab4,bb4,eb5] ~@5 [ab4,bb4,eb5]",
  AE: "~@9 [ab4,bb4,eb5] ~@7 [ab4,bb4,eb5] ~@14", // Absus2
  AF: "[~@25 [f4,bb4,db5] ~@5 [f4,bb4,db5]@2 ~@8 [f4,bb4,db5]@2 ~@5 f4 [bb4,db5]@2 ~@13]/2", // Bbm
  AG: "~@24 [gb4,bb4,eb5] ~@5 [gb4,bb4,eb5] ~", AH: "~@8 [gb4,bb4,eb5] ~@7 [gb4,bb4,eb5] ~@15",
  AI: "~@23 f4 [bb4,db5]@2 ~@3 [bb4,db5] f4 ~", AJ: "~@7 bb4 [f4,db5] ~@6 [f4,bb4,db5] ~@16",
  AK: "[~@23 [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ db4@3 ~ eb4@3 [g3,db4,eb4]@3 ~@2 db4@3 [g3,db4,eb4]@2, ~@78 [g3,eb4]@3 ~ [g3,db4]@3 ~@5 [g3,eb4]@3 ~@3]/3", // Eb7 Cm Gdim Cm
  AL: "~@2 [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ [g3,db4,eb4]@2", // Eb7
  AM: "~@2 [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ [g3,db4,eb4]@3 ~ [c4,ab4]@4 ~@2 [ab4,bb4,eb5] ~@3, ~@22 [bb4,eb5] ~@9", // Eb7 Fm Absus2 Eb5
})).s("gm_electric_guitar_jazz").gain(0.3).pan(0.2)

// chords · electric guitar jazz
const electric_guitar_jazz_2 = note(`<
  ~@6 A ~ B ~ C ~ D ~ A ~ B ~ C ~ E ~ A ~ B ~ C ~ D ~@16 A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~@16 A ~@7 F ~ G
  ~ H ~ I J K L M N O P Q R S T U V W X Y ~@4 Z ~
>`.pickRestart({
  A: "~@4 [ab4,bb4,eb5] ~@5 [ab4,bb4,eb5] ~@3 [ab4,bb4,eb5] ~@5 [ab4,bb4,eb5] ~@7 [ab4,bb4,eb5] ~@3", // Absus2
  B: "~@4 [f4,bb4,db5] ~@5 [f4,bb4,db5]@2 ~@2 [f4,bb4,db5] ~@5 [f4,bb4,db5]@2 ~@6 [f4,bb4,db5]@2 ~@2", // Bbm
  C: "~@4 [gb4,bb4,eb5] ~@5 [gb4,bb4,eb5] ~@3 [gb4,bb4,eb5] ~@5 [gb4,bb4,eb5] ~@7 [gb4,bb4,eb5] ~@3", // Ebm
  D: "~@4 [f4,bb4,db5] ~@5 [f4,bb4,db5]@2 ~@2 [f4,bb4,db5] ~@5 [f4,bb4,db5] ~@7 [f4,bb4,db5] ~@3", // Bbm
  E: "~@4 [f4,bb4,db5] ~@5 [f4,bb4,db5] ~@3 [f4,bb4,db5] ~@5 [f4,bb4,db5] ~@7 [f4,bb4,db5] ~@3", // Bbm
  F: "~@2 [ab4,bb4,eb5] ~@5 [ab4,bb4,eb5] ~@3 [ab4,bb4,eb5] ~@4 eb5 [ab4,bb4] ~@6 [ab4,eb5] bb4 ~@5", // Absus2 Ab5
  G: "~ [f4,bb4,db5] ~@5 [f4,bb4,db5]@2 ~@2 [f4,bb4,db5] ~@5 [f4,bb4,db5]@2 ~@6 [f4,bb4,db5]@2 ~@5", // Bbm
  H: "~ [gb4,bb4,eb5] ~@5 [gb4,bb4,eb5] ~@2 [gb4,bb4] eb5 ~@4 [gb4,bb4,eb5] ~@7 [gb4,bb4,eb5] ~@7", // Ebm Gb Ebm
  I: "[f4,bb4,db5] ~@5 [f4,bb4,db5] ~@3 [f4,bb4,db5] ~@5 [f4,bb4,db5] ~@7 [f4,bb4,db5] ~@7", J: "~@31 [ab4,bb4,eb5]",
  K: "~@5 [ab4,bb4,eb5] ~@3 [ab4,bb4,eb5] ~@5 [ab4,bb4,eb5] ~@7 [ab4,bb4,eb5] ~@8", L: "~@31 [f4,bb4,db5]",
  M: "~@5 [f4,bb4,db5]@2 ~@2 [f4,bb4,db5] ~@5 [f4,bb4,db5]@2 ~@6 [f4,bb4,db5]@2 ~@7", N: "~@30 [gb4,bb4,eb5] ~",
  O: "~@4 [gb4,bb4,eb5] ~@3 [gb4,bb4,eb5] ~@5 [gb4,bb4,eb5] ~@7 [gb4,bb4,eb5] ~@9", P: "~@30 [f4,bb4,db5] ~",
  Q: "~@4 [f4,bb4,db5] ~@3 [f4,bb4,db5] ~@5 [f4,bb4,db5] ~@6 [f4,db5] bb4 ~@9", R: "~@29 [ab4,bb4,eb5] ~@2",
  S: "~@3 [ab4,bb4,eb5] ~@3 [ab4,bb4,eb5] ~@5 [ab4,bb4,eb5] ~@7 [ab4,bb4,eb5] ~@10", T: "~@29 [f4,bb4,db5] ~@2",
  U: "~@3 [f4,bb4,db5]@2 ~@2 [f4,bb4,db5] ~@5 bb4@2 ~@5 [f4,bb4,db5]@2 ~@10, ~@6 [f4,db5] ~@9", // Bbm Db
  V: "~@28 [gb4,bb4,eb5] ~@3", W: "~@2 [gb4,bb4,eb5] ~@3 [gb4,bb4,eb5] ~@5 [gb4,bb4,eb5] ~@7 [gb4,bb4,eb5] ~@11",
  X: "~@28 [f4,bb4,db5] ~@3", Y: "~ [f4,bb4,db5] ~@3 [f4,bb4,db5] ~@5 [f4,bb4,db5] ~@7 [f4,bb4,db5] ~@12",
  Z: "~@26 [ab4,bb4,eb5] ~@5", // Absus2
})).s("gm_electric_guitar_jazz").gain(0.25).pan(0.8)

// other · overdriven guitar
const overdriven_guitar = note("<~@49 A@4 ~@47 B@2 C@2 D E F@4 G H@2 I@3 ~@5>".pickRestart({
  A: "[~@11 ab4 bb4@112 ~@4]/4",
  B: "[~@23 eb4@2 f4@2 eb4@8 db4@7 ~ bb3@2 ab3@2 f3@3 ~@2 e3@2 ~ db3@2 ~@7, ~@51 eb3@2 ~ eb3@2 ~@8]/2",
  C: "[~@22 ab4 bb4@26 e4 eb4@4 db4@2 ~@2 bb3@2 ~@4]/2", D: "~@13 [ab4,db5]@2 ~",
  E: "~@2 f4@7 ~@2 e4@2 ~ db4@2 ~@16, ~@5 bb4@2 ~@9, ~@10 eb4@2 ~ eb4@2 ~@17",
  F: "[~@14 f5@4 eb5@6 db5@2 bb4@13 ~@6 [db5,f5]@9 ~@3 [ab4,db5,f5]@27 ~@9 f5@11 ~ f5@15 ~ db5@2 bb4@5]/4", // Db
  G: "~ bb4@7 ~@3 db4@3 ~@14 f5@4, ~@9 f4@2 ~@21, ~@5 eb4 ~@10",
  H: "[eb5@4 db5@4 eb5@12 db5@4 f5@12 eb5@8 f5@8 eb5@11 ~]/2",
  I: "[f5@7 ~ db5@2 bb4@5 ~ bb4@7 ~ db5@15 ~@20 f5@4 eb5@4 db5@4 eb5@12 db5@4 ~@9]/3",
})).s("gm_overdriven_guitar").gain(0.54).pan(0.6)

// chords · alto sax
const alto_sax = note(`<
  ~@2 A B C D E ~ F ~ G ~ H ~@4 I ~@3 J ~@3 I ~@3 K ~@2 L@2 ~@2 M N ~@3 A B C D E ~ F ~ O ~ H ~@3 I@2 ~@2 I J ~@2 I@2
  ~@2 J I ~@2 L@2 ~@2 M N ~@3 A B C D ~ P@2 Q@2 R S ~@3 T@2 ~@2 U V W X Y Z AA AB AC@3 AD@2 AE AF AG AH@4 AI AJ ~
>`.pickRestart({
  A: "[g3,bb3] ~ [g3,bb3] ~ [g3,bb3] ~ [g3,bb3] ~ [g3,bb3] ~ [g3,bb3] ~ [g3,bb3] ~ [g3,bb3] ~", // Gm
  B: "[bb3,db4] ~ [bb3,db4] ~ [bb3,db4] ~ [bb3,db4] ~ [bb3,db4] ~ [bb3,db4] ~ [bb3,db4] ~ [bb3,db4] ~", // Bbm
  C: "[db4,g4] ~ [db4,g4] ~ [db4,g4] ~ [db4,g4] ~ [db4,g4] ~ [db4,g4] ~ [db4,g4] ~ [db4,g4] ~", // Dbdim
  D: "[g4,bb4] ~ [g4,bb4] ~ [g4,bb4] ~ [g4,bb4] ~ [g4,bb4] ~ [g4,bb4] ~ [g4,bb4] ~ [g4,bb4] ~", // Gm
  E: "[f4,ab4] ~@5 [f4,ab4]@2 ~@8 [f4,ab4]@2 ~@14", F: "g4 ~@2 [f4,g4] ~@4 [f4,g4] ~@7, f4 ~@31",
  G: "[gb4,bb4] ~@2 gb4 ~@4 [gb4,bb4] ~@7, ~@6 bb4 ~@25", H: "[f4,bb4] ~@2 [f4,bb4] ~@4 [f4,bb4] ~@7",
  I: "~@4 bb3@4 db4@4 bb3@3 ~ eb4@4 bb3@3 ~ db4@3 ~ bb3@3 ~",
  J: "~@4 bb3@4 db4@4 bb3@3 ~ eb4@3 ~ bb3@3 ~ db4@3 ~ bb3@3 ~",
  K: "~@4 bb3@3 ~ db4@4 bb3@3 ~ eb4@3 ~ bb3@3 ~ db4@3 ~ bb3@3 ~", L: "~@6 eb3 ~ eb3@2 eb3 ~@5",
  M: "eb3@4 eb3@3 ~@5 eb3@2 ~@2 eb3@4 eb3@2 ~@6 eb3@2 ~@2", N: "eb3@2 eb3 ~@3 eb3 ~ eb3@2 eb3 ~@5",
  O: "[bb4,db5] ~@2 bb4 ~@4 [bb4,db5] ~@7, ~@6 db5 ~@25", // Bbm
  P: "[~@31 g4@2 ~@4 f4@2 ~@8 [f4,g4]@2 ~@15, ~@31 f4 ~@5 g4 ~@26]/2", // Fsus2
  Q: "[~@31 [bb4,eb5]@2 ~@4 bb4@2 ~@8 [bb4,eb5]@2 ~@15, ~@37 eb5 ~@26]/2", R: "~@15 [f4,bb4]",
  S: "~@2 [f4,bb4] ~@4 [f4,bb4] ~@8", T: "~ bb3@4 db4@4 bb3@3 ~ eb4@3 ~ bb3@3 ~ db4@3 ~ bb3@3 ~@4",
  U: "bb3@4 db4@4 bb3@3 ~ eb4@3 ~ bb3@3 ~ db4@3 ~ bb3@3 ~@5",
  V: "bb3@4 db4@4 bb3@3 ~ eb4@3 ~ bb3@3 ~ db4@3 ~ bb3@3 ~ [f4,ab4] ~@3", W: "~ [f4,ab4]@2 ~@8 [f4,ab4]@2 ~@19",
  X: "~@27 g4@2 ~@3, ~@27 f4 ~@4", Y: "~ f4@2 ~@8 [f4,g4]@2 ~@19, ~ g4 ~@30", Z: "~@13 [gb4,bb4] ~@2",
  AA: "gb4 ~@4 [gb4,bb4] ~@10, bb4 ~@31", AB: "~@13 [f4,bb4] ~@2",
  AC: "[[f4,bb4]@2 ~@8 [f4,bb4]@2 ~@18 bb3@3 db4@4 ~ bb3@3 eb4@3 ~ bb3@3 ~ db4@3 ~ bb3@3 ~ [f4,ab4] ~@5 [f4,ab4]@2 ~@8 [f4,ab4]@2 ~@18 bb3@3]/3", // Bb5 Fm
  AD: "[~ db4@4 bb3@3 ~ eb4@3 ~ bb3@3 ~ db4@3 ~ bb3@3 ~ g4@2 ~@4 f4@2 ~@8 [f4,g4]@2 ~@17 bb3@4, ~@25 f4 ~@5 g4 ~@32]/2", // Fsus2
  AE: "db4@4 bb3@3 ~ eb4@3 ~ bb3@3 ~ db4@3 ~ bb3@3 ~ [gb4,bb4]@2 ~@4 gb4@2, ~@30 bb4 ~", AF: "~@4 [gb4,bb4] ~@9 bb3@2",
  AG: "db4@4 bb3@3 ~ eb4@3 ~ bb3@3 ~ db4@3 ~ bb3@3 ~ [f4,bb4]@2 ~@4 [f4,bb4]@2", // Bb5
  AH: "[~@7 [f4,bb4]@2 ~@18 bb3@4 db4@4 bb3@3 ~ eb4@3 ~ bb3@3 ~ db4@3 ~ bb3@3 ~ [g3,bb3]@2 ~@2 [g3,bb3]@2 ~@2 [g3,bb3]@2 ~@2 [g3,bb3]@2 ~@2 [g3,bb3]@2 ~@2 [g3,bb3]@2 ~@2 [g3,bb3]@2 ~@2 [g3,bb3]@2 ~@2 [bb3,db4]@2 ~@2 [bb3,db4]@2 ~@2 [bb3,db4]@2 ~@2 [bb3,db4]@2 ~@2 [bb3,db4]@2 ~@2 [bb3,db4]@2 ~@2 [bb3,db4]@2 ~ [bb3,db4]@2 ~@3 [db4,g4]@2 ~ [db4,g4]@2 ~@2 [db4,g4]@2]/4", // Bb5 Gm Bbm Dbdim
  AI: "~ [db4,g4] ~ [db4,g4] ~ [db4,g4] ~ [db4,g4] ~ [db4,g4] ~ [g4,bb4] ~ [g4,bb4] ~ [g4,bb4]", // Dbdim Gm
  AJ: "~@2 [g4,bb4]@2 ~@2 [g4,bb4]@2 ~@2 [g4,bb4]@2 ~@2 [g4,bb4]@2 ~@2 [g4,bb4]@2 ~@2 [f4,ab4] ~@5 [f4,ab4]@2 ~@2", // Gm Fm
})).s("gm_alto_sax").gain(0.57).pan(0.7)

// other · tenor sax
const tenor_sax = note(`<
  ~@2 A@4 B ~ B ~ C ~ B ~@4 D ~@3 E ~@3 D ~@3 F ~@2 G@2 ~@2 H I ~@3 A@4 B ~ B ~ C ~ B ~@3 D@2 ~@2 D E ~@2 D@2 ~@2 E D
  ~@2 G@2 ~@2 H I ~@3 A@4 ~ J@2 K@2 L M ~@3 N@2 ~@2 O P Q R Q S T U V@3 W@2 X Y Z AA@4 AB AC ~
>`.pickRestart({
  A: "eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~", B: "bb2 ~@2 bb2 ~@4 bb2 ~@7", C: "gb3 ~@2 gb3 ~@4 gb3 ~@7",
  D: "~@4 bb2@4 db3@4 bb2@3 ~ eb3@4 bb2@3 ~ db3@3 ~ bb2@3 ~",
  E: "~@4 bb2@4 db3@4 bb2@3 ~ eb3@3 ~ bb2@3 ~ db3@3 ~ bb2@3 ~",
  F: "~@4 bb2@3 ~ db3@4 bb2@3 ~ eb3@3 ~ bb2@3 ~ db3@3 ~ bb2@3 ~", G: "~@6 eb2 ~ eb2@2 eb2 ~@5",
  H: "eb2@4 eb2@3 ~@5 eb2@2 ~@2 eb2@4 eb2@2 ~@6 eb2@2 ~@2", I: "eb2@2 eb2 ~@3 eb2 ~ eb2@2 eb2 ~@5",
  J: "[~@31 bb2@2 ~@4 bb2@2 ~@8 bb2@2 ~@15]/2", K: "[~@31 gb3@2 ~@4 gb3@2 ~@8 gb3@2 ~@15]/2", L: "~@15 bb2",
  M: "~@2 bb2 ~@4 bb2 ~@8", N: "~ bb2@4 db3@4 bb2@3 ~ eb3@3 ~ bb2@3 ~ db3@3 ~ bb2@3 ~@4",
  O: "bb2@4 db3@4 bb2@3 ~ eb3@3 ~ bb2@3 ~ db3@3 ~ bb2@3 ~@5",
  P: "bb2@4 db3@4 bb2@3 ~ eb3@3 ~ bb2@3 ~ db3@3 ~ bb2@3 ~ bb2@2 ~@2", Q: "~ bb2@2 ~@8 bb2@2 ~@19", R: "~@27 bb2@2 ~@3",
  S: "~@13 gb3 ~@2", T: "gb3 ~@4 gb3 ~@10", U: "~@13 bb2 ~@2",
  V: "[bb2@2 ~@8 bb2@2 ~@18 bb2@3 db3@4 ~ bb2@3 eb3@3 ~ bb2@3 ~ db3@3 ~ bb2@3 ~ bb2@2 ~@4 bb2@2 ~@8 bb2@2 ~@18 bb2@3]/3",
  W: "[~ db3@4 bb2@3 ~ eb3@3 ~ bb2@3 ~ db3@3 ~ bb2@3 ~ bb2@2 ~@4 bb2@2 ~@8 bb2@2 ~@17 bb2@4]/2",
  X: "db3@4 bb2@3 ~ eb3@3 ~ bb2@3 ~ db3@3 ~ bb2@3 ~ gb3@2 ~@4 gb3@2", Y: "~@4 gb3 ~@9 bb2@2",
  Z: "db3@4 bb2@3 ~ eb3@3 ~ bb2@3 ~ db3@3 ~ bb2@3 ~ bb2@2 ~@4 bb2@2",
  AA: "[~@7 bb2@2 ~@18 bb2@4 db3@4 bb2@3 ~ eb3@3 ~ bb2@3 ~ db3@3 ~ bb2@3 ~ eb3@2 ~@2 eb3@2 ~@2 eb3@2 ~@2 eb3@2 ~@2 eb3@2 ~@2 eb3@2 ~@2 eb3@2 ~@2 eb3@2 ~@2 eb3@2 ~@2 eb3@2 ~@2 eb3@2 ~@2 eb3@2 ~@2 eb3@2 ~@2 eb3@2 ~@2 eb3@2 ~ eb3@2 ~@3 eb3@2 ~ eb3@2 ~@2 eb3@2]/4",
  AB: "~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3", AC: "~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ eb3 ~ bb2 ~@2 bb2 ~",
})).s("gm_tenor_sax").gain(0.57).pan(0.8)

// other · woodblock
const woodblock = note(`<
  ~@7 A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~@16 A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~@52
>`.pickRestart({
  A: "~@4 d6 ~ d6 ~ bb6 ~ bb6 ~@3 bb6 ~@17", B: "~@4 bb6 ~ bb6 ~ bb6 ~ d6 ~ bb6 ~ d6 ~@17",
})).s("gm_woodblock").gain(0.35).pan(0.9)

// other · woodblock · soft notes
const woodblock_soft = note(`<
  ~@7 A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~@16 A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~@52
>`.pickRestart({
  A: "~@12 d6 ~ d6 ~ bb6 ~ bb6 ~@3 bb6 ~@9", B: "~@14 bb6 ~ bb6 ~ d6 ~ bb6 ~ d6 ~@9",
})).s("gm_woodblock").gain(0.2).pan(0.9)

// other · tenor sax
const tenor_sax_2 = note(`<
  ~@15 A@2 ~ B C D ~ E F G ~@2 H I ~ J K L ~ M N O P Q R S T U V W X Y ~@6 Z@3 ~ AA@2 ~@2 AB AC ~@3 AD AE ~ AF AG AH ~
  AI AJ AK AL Q R AM AN AO AP W AQ@2 ~@6 AR@3 ~ AS AT AU AV ~@13 AW AX@2 ~@5
// … 141 more lines

More by David Bowie