Strudelify

Let's Dance

David Bowie

KeyF♯ majorTempo158 bpm
0:00/0:00
// Let's Dance — David Bowie
// 158 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 90 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Muted Gt..
setcpm(158/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 · acoustic bass · "Acoustic Bs."
const bass = note(`<
  ~@6 A B A C D E F G C H C I F I J K A B A C D E F G C H C I F I J K ~@3 L M N O P Q R Q S T@2 U K A B A C D E F G C H
  C I F I J K A B A C D E F G C H C I F I F I F I F V
>`.pickRestart({
  A: "~@10 c#2 ~ c#2@2 ~@2", B: "f#2@3 ~@13", C: "b1@3 ~ d#2@3 ~ f#2@3 ~ g#2@3 ~",
  D: "b1@3 ~ g#2@3 ~ f#2@2 ~@2 g#2@2 ~@2", E: "f#1@3 ~ a#1@3 ~ c#2@3 ~ d#2@2 ~@2", F: "f#1@3 ~ d#2@3 ~ c#2@3 ~ d#2@3 ~",
  G: "c#2@3 ~ f2@3 ~ g#2@3 ~ a#2@3 ~", H: "c#2@3 ~ f2@3 ~ f#2@3 ~ g#2@3 ~", I: "f#1@3 ~ a#1@3 ~ c#2@3 ~ d#2@3 ~",
  J: "f#1@3 ~ d#2@4 c#2@2 c#2@2 c#2@2 c#2@2", K: "f#1 ~@7", L: "b1@4 g#2@4 f#2@4 g#2@3 ~",
  M: "b1@4 d#2@4 f#2@3 ~ g#2@3 ~", N: "f#1@4 d#2@3 ~ c#2@3 ~ d#2@4", O: "f#1@4 d#2@4 c#2@4 d#2@3 ~",
  P: "c#2@4 f2@3 ~ g#2@4 a#2@3 ~", Q: "b1@4 d#2@4 f#2@4 g#2@3 ~", R: "c#2@4 f2@3 ~ g#2@4 a#2@2 g#2@2",
  S: "f#1@4 d#2@3 ~ c#2@4 d#2@4", T: "f#1 d#2 c#2 d#2", U: "f#1@2 d#2@2 c#2!4", V: "f#1@13 ~@3",
})).s("gm_acoustic_bass").gain(0.48).pan(0.4)

// chords · rock organ · "Organ 3"
const rock_organ = note(`<
  ~@6 A B C D E F G H I H J K L M N B A B C D E F G H I H J K L M N O P Q R S T@2 U V W X Y Z AA AB AC B A B C AD E F AE
  H I H J K L M N B A B C AF E F G H I H J K L K L K L K L AG
>`.pickRestart({
  A: "~@10 [c#4,c#5] ~ [c#4,c#5]@2 ~@2", B: "[f#4,f#5] ~@7", C: "~@10 [f#4,f#5] ~ [f#4,f#5]@3 ~",
  D: "~@4 [f#5,b5,d#6] ~ [f#5,b5,d#6] ~ [f#5,b5,d#6] ~ [f#5,d#6]@2 ~@2 [f#5,b5,d#6] ~, ~@10 b5 ~@5", // B D#m B
  E: "[f#5,b5,d#6] ~ [f#5,b5] ~ [g#5,b5] ~ [f#5,b5,d#6]@2 ~@8, ~ d#6 e6 ~@5", // B B5 G#m B
  F: "f#4@3 ~ [c#5,f#5] ~ [c#5,f#5] ~ [c#5,f#5] ~ [c#5,f#5] ~@3 [c#5,f#5,a#5] ~, ~@2 a#5!4 ~@2", // F#5 F#
  G: "[c#5,f#5,a#5] ~ [c#5,f#5,a#5] ~ [d#5,f#5,b5] ~ [c#5,f#5,a#5]@2 ~@2 [c#5,f#5] ~ [d#5,f#5,b5] ~ [c#5,f#5,a#5] ~, ~@5 a#5 ~@2", // F# B F# F#5 B F#
  H: "[f5,g#5,c#6]@3 ~ [f5,g#5,c#6] ~ [f5,g#5,c#6]@3 ~ [f5,g#5,c#6] ~ [f5,g#5,c#6] ~ [f5,g#5,c#6] ~", // C#
  I: "[d#5,f#5,b5]@3 ~ [d#5,f#5,b5] ~ [d#5,f#5,b5]@3 ~ [d#5,f#5,b5] ~ [d#5,f#5,b5] ~ [d#5,f#5,b5] ~", // B
  J: "[d#5,f#5,b5]@3 ~ [d#5,f#5,b5] ~ [d#5,f#5,b5]@7 ~@3", // B
  K: "f#4@2 ~@2 [c#5,f#5,a#5] ~ [c#5,f#5,a#5] ~ [c#5,f#5,a#5] ~ [c#5,f#5,a#5]@2 ~@2 [c#5,f#5,a#5] ~", // F#
  L: "[c#5,f#5,a#5] ~ [c#5,f#5,a#5] ~ [d#5,f#5,b5] ~ [c#5,f#5,a#5]@2 ~@8", // F# B F#
  M: "f#4@2 ~@2 [c#5,f#5,a#5] ~ [c#5,f#5,a#5] ~ [c#5,f#5,a#5] ~ [c#5,f#5] ~@3 [c#5,f#5,a#5] ~, ~@5 a#5 ~@2", // F# F#5 F#
  N: "[c#5,f#5,a#5] ~ [c#5,f#5,a#5] ~ [d#5,f#5,b5] ~ [c#5,f#5] ~@3 c#5 ~ c#5 ~ c#5 ~, ~@3 a#5 ~@4", // F# B F#5
  O: "[c5,c#5,f#5] ~ [c#5,f#5] ~ [c#5,f#5] ~ [c#5,f#5] ~ [c#5,f#5] ~ [c#5,f#5] ~ [c#5,f#5] ~ [c#5,f#5] ~", // F# F#5
  P: "[f5,f#5,a#5] ~ [f#5,a#5] ~ [f5,f#5,a#5] ~ [f#5,a#5] ~ [f5,f#5,a#5] ~ [f#5,a#5] ~ [f5,f#5,a#5] ~ [f#5,a#5] ~", // F#maj7 F# F#maj7 F# F#maj7 F# F#maj7 F#
  Q: "[a5,a#5,c#6] ~ [a#5,c#6] ~ [a5,a#5,c#6] ~ [a#5,c#6] ~ [a5,a#5,c#6] ~ [a#5,c#6] ~ [a5,a#5,c#6] ~ [a#5,c#6] ~", // A A#m A A#m A A#m A A#m
  R: "[c6,c#6,e6] ~ [c#6,e6] ~ [c6,c#6] ~ [c#6,e6] ~ [c6,c#6] ~ [c#6,e6] ~ [c6,c#6,e6] ~ [c#6,e6] ~, ~@2 e6 ~ e6 ~@3", // C C#m C#maj7 C#m C#maj7 C#m C C#m
  S: "[f#5,c#6,f#6]@15 ~, c6 ~@15", // F#5
  T: "[a5 ~ a5 ~ [c6,c#6,e6] ~ [c#6,e6]@3 ~ [c6,e6] ~ [c6,e6] ~ [f#5,c#6,e6]@5 ~ [f#5,c#6,e6]@3 ~ [g#5,a5] ~ a5 f#5 f#5@2 f#5@2, c#6@2 ~@8 c#6@2 c#6@2 c6 ~@5 c6 ~@3 c#6@2 ~@6, ~ a#5@2 f#5@2 ~@20 a#5@2 ~@5]/2", // C C#m C F#7 Amaj7
  U: "~@10 f#5 ~ f#5@2 f#5 ~",
  V: "[f5,a#5,c#6]@2 ~@2 [f5,c#6] ~ [f5,a#5,c#6]@2 ~@2 [f5,a#5,c#6]@2 ~@2 [f5,c#6] ~, a5 ~@3 a#5@2 a5 ~@7 a#5@2", // A#m C# A#m C#
  W: "[g#5,b5] [d#5,g#5,b5] ~ [d#5,g#5,b5] ~@2 [d#5,g#5,b5] ~, d#5 ~@15", // G#m
  X: "[f5,a#5,c#6] ~ [a#5,c#6] ~ [a#5,c#6] [f5,a#5,c#6] ~@2, ~@4 f5 ~@3 f5 ~@7", // A#m
  Y: "[d#5,f#5,b5]@2 ~@2 [d#5,f#5,b5] ~@3 b5@2 b5 [a5,a#5] ~@2 f#5@2, ~@5 c#6 ~@2, ~@11 f#5@2 ~@3", // B A#maj7
  Z: "~@4 [c#5,f#5] ~ [c#5,f#5,a#5] ~ [c#5,f#5] ~ [c#5,f#5] ~@3 [c#5,f#5,a#5] ~, ~@2 a#5 ~ a#5!2 ~@2", // F#5 F# F#5 F#
  AA: "[c#5,f#5,a#5] ~ [c#5,f#5] ~ [d#5,f#5,b5] ~ [c#5,f#5,a#5] ~@3 [c#5,a#5,c#6]@4 [c#5,f#5,c#6] ~, ~@2 a#5@2 ~@6 a5 ~@5", // F# F#5 B F# F#5
  AB: "[c#5,a#5,c#6]@2 ~@2 [c#5,f#5,a#5]@2 [c#5,f#5,a#5] ~ [f#5,a#5]@2 [c#5,f#5,a#5] ~@3 [c#5,f#5] ~, a5 ~@7 c#5 ~@5 a#5@2", // F# F#5
  AC: "[c#5,f#5] ~ [c#5,f#5] ~ [d#5,b5] ~ [f#5,a#5] ~@3 c#5@2 c#5@2 c#5 ~, a#5!2 f#5 c#5 ~@4", // F#5 G#m F#
  AD: "~@4 [f#5,b5,d#6] ~ [f#5,b5,d#6] ~ [f#5,b5] ~ [f#5,d#6]@2 ~@2 [f#5,b5,d#6] ~, ~@8 d#6@2 b5 ~@5", // B B5 D#m B
  AE: "[c#5,f#5] ~ [c#5,f#5,a#5] ~ [d#5,f#5,b5] ~ [c#5,f#5,a#5]@2 ~@2 [c#5,f#5] ~ [d#5,f#5,b5] ~ [c#5,f#5,a#5] ~, a#5 ~@4 a#5 ~@2", // F#5 F# B F# F#5 B F#
  AF: "~@4 [f#5,b5,d#6] ~ [f#5,b5,d#6] ~ [f#5,b5,d#6] ~ [f#5,b5,d#6]@2 ~@2 [f#5,b5,d#6] ~", // B
  AG: "[c#5,f#5,a#5,c#6], a5 ~@15", // F#
})).s("gm_rock_organ").gain(0.36).pan(0.6)

// chords · drawbar organ · "Organ 1"
const drawbar_organ = note(`<
  ~@6 A B C D E F G H I H J K L M N B A B C O E F P H I H J K L M N Q R S T U V@2 W X Y Z AA AB AC AD AE B A B C O E F P
  H I H J K L M N B A B C AF E F P H I H J K L K L K L K L AG
>`.pickRestart({
  A: "~@10 [c#5,c#6] ~ [c#5,c#6]@2 ~@2", B: "[f#5,f#6] ~@7", C: "~@10 [f#5,f#6] ~ [f#5,f#6]@3 ~",
  D: "~@4 [f#6,b6,d#7] ~ [f#6,b6,d#7] ~ [f#6,b6] ~ [f#6,d#7]@2 ~@2 [f#6,b6,d#7] ~, ~@8 d#7@2 b6 ~@5", // B B5 D#m B
  E: "[f#6,b6,d#7] ~ [f#6,b6] ~ [g#6,b6] ~ [f#6,b6,d#7]@2 ~@8, ~ d#7 e7 ~@5", // B B5 G#m B
  F: "f#5@3 ~ [c#6,f#6] ~ [c#6,f#6] ~ [c#6,f#6] ~ [c#6,f#6] ~@3 [c#6,f#6,a#6] ~, ~@2 a#6!4 ~@2", // F#5 F#
  G: "[c#6,f#6] ~ [c#6,f#6,a#6] ~ [d#6,f#6,b6] ~ [c#6,f#6,a#6]@2 ~@2 [c#6,f#6] ~ [d#6,f#6,b6] ~ [c#6,f#6,a#6] ~, a#6 ~@4 a#6 ~@2", // F#5 F# B F# F#5 B F#
  H: "[f6,g#6,c#7]@3 ~ [f6,g#6,c#7] ~ [f6,g#6,c#7]@3 ~ [f6,g#6,c#7] ~ [f6,g#6,c#7] ~ [f6,g#6,c#7] ~", // C#
  I: "[d#6,f#6,b6]@3 ~ [d#6,f#6,b6] ~ [d#6,f#6,b6]@3 ~ [d#6,f#6,b6] ~ [d#6,f#6,b6] ~ [d#6,f#6,b6] ~", // B
  J: "[d#6,f#6,b6]@3 ~ [d#6,f#6,b6] ~ [d#6,f#6,b6]@7 ~@3", // B
  K: "f#5@2 ~@2 [c#6,f#6,a#6] ~ [c#6,f#6,a#6] ~ [c#6,f#6,a#6] ~ [c#6,f#6,a#6]@2 ~@2 [c#6,f#6,a#6] ~", // F#
  L: "[c#6,f#6,a#6] ~ [c#6,f#6,a#6] ~ [d#6,f#6,b6] ~ [c#6,f#6,a#6]@2 ~@8", // F# B F#
  M: "f#5@2 ~@2 [c#6,f#6,a#6] ~ [c#6,f#6,a#6] ~ [c#6,f#6,a#6] ~ [c#6,f#6] ~@3 [c#6,f#6,a#6] ~, ~@5 a#6 ~@2", // F# F#5 F#
  N: "[c#6,f#6,a#6] ~ [c#6,f#6,a#6] ~ [d#6,f#6,b6] ~ [c#6,f#6] ~@3 c#6 ~ c#6 ~ c#6 ~, ~@3 a#6 ~@4", // F# B F#5
  O: "~@4 [f#6,b6,d#7] ~ [f#6,b6,d#7] ~ [f#6,b6,d#7] ~ [f#6,d#7]@2 ~@2 [f#6,b6,d#7] ~, ~@10 b6 ~@5", // B D#m B
  P: "[c#6,f#6,a#6] ~ [c#6,f#6,a#6] ~ [d#6,f#6,b6] ~ [c#6,f#6,a#6]@2 ~@2 [c#6,f#6] ~ [d#6,f#6,b6] ~ [c#6,f#6,a#6] ~, ~@5 a#6 ~@2", // F# B F# F#5 B F#
  Q: "[c#6,f#6]@2 [c#6,f#6] ~ [c#6,f#6] ~ [c#6,f#6] ~ [c#6,f#6] ~ [c#6,f#6] ~ [c#6,f#6] ~ [c#6,f#6] ~, c6 ~@15", // F#5
  R: "[f6,f#6,a#6] ~ [f#6,a#6] ~ [f6,f#6,a#6] ~ [f#6,a#6] ~ [f6,f#6,a#6] ~ [f#6,a#6] ~ [f6,f#6,a#6] ~ [f#6,a#6] ~", // F#maj7 F# F#maj7 F# F#maj7 F# F#maj7 F#
  S: "[a6,a#6,c#7] ~ [a#6,c#7] ~ [a6,a#6,c#7] ~ [a#6,c#7] ~ [a6,a#6,c#7] ~ [a#6,c#7] ~ [a6,a#6,c#7] ~ [a#6,c#7] ~", // A A#m A A#m A A#m A A#m
  T: "[c7,c#7,e7] ~ [c#7,e7] ~ [c7,c#7] ~ [c#7,e7] ~ [c7,c#7] ~ [c#7,e7] ~ [c7,c#7,e7] ~ [c#7,e7] ~, ~@2 e7 ~ e7 ~@3", // C C#m C#maj7 C#m C#maj7 C#m C C#m
  U: "[f#6,c#7,f#7]@15 ~, c7 ~@15", // F#5
  V: "[a6 ~ a6 ~ [c7,c#7,e7] ~ [c#7,e7]@3 ~ [c7,e7] ~ [c7,e7] ~ [f#6,c#7,e7]@5 ~ [f#6,c#7,e7]@3 ~ [g#6,a6] ~ a6 f#6!2 ~ f#6@2, c#7@2 ~@8 c#7@2 c#7@2 c7 ~@5 c7 ~@3 c#7@2 ~@6, ~ a#6@2 f#6@2 ~@20 a#6@2 ~@5]/2", // C C#m C F#7 Amaj7
  W: "~@10 f#6 ~ f#6@2 f#6 ~",
  X: "[f6,a#6,c#7]@2 ~@2 [f6,c#7] ~ [f6,a#6,c#7]@2 ~@2 [f6,a#6,c#7]@2 ~@2 [f6,c#7] ~, a6 ~@3 a#6@2 a6 ~@7 a#6@2", // A#m C# A#m C#
  Y: "[g#6,b6] [d#6,g#6,b6] ~ [d#6,g#6,b6] ~@2 [d#6,g#6,b6] ~, d#6 ~@15", // G#m
  Z: "[f6,a#6,c#7] ~ [a#6,c#7] ~ [a#6,c#7] [f6,a#6,c#7] ~@2, ~@4 f6 ~@3 f6 ~@7", // A#m
  AA: "[d#6,f#6,b6]@2 ~@2 [d#6,f#6,b6] ~@3 b6@2 [b6,c#7] [a6,a#6] ~@2 f#6@2, ~@11 f#6@2 ~@3", // B Bsus2 A#maj7
  AB: "~@4 [c#6,f#6] ~ [c#6,f#6,a#6] ~ [c#6,f#6] ~ [c#6,f#6] ~@3 [c#6,f#6,a#6] ~, ~@2 a#6 ~ a#6!2 ~@2", // F#5 F# F#5 F#
  AC: "[c#6,f#6,a#6] ~ [c#6,f#6] ~ [d#6,f#6,b6] ~ [c#6,f#6,a#6] ~@3 [c#6,a#6,c#7]@4 [c#6,f#6,c#7] ~, ~@2 a#6@2 ~@6 a6 ~@5", // F# F#5 B F# F#5
  AD: "[c#6,a#6,c#7]@2 ~@2 [c#6,f#6,a#6]@2 [c#6,f#6,a#6] ~ [f#6,a#6]@2 [c#6,f#6,a#6] ~@3 [c#6,f#6] ~, a6 ~@7 c#6 ~@5 a#6@2", // F# F#5
  AE: "[c#6,f#6] ~ [c#6,f#6] ~ [d#6,b6] ~ [c#6,f#6,a#6] ~@3 c#6@2 c#6@2 c#6 ~, a#6!2 f#6 ~@5", // F#5 G#m F#
  AF: "~@4 [f#6,b6] ~ [f#6,b6,d#7] ~ [f#6,b6,d#7] ~ [f#6,d#7]@2 ~@2 [f#6,b6,d#7] ~, ~@4 d#7@2 ~@4 b6 ~@5", // B5 B D#m B
  AG: "[c#6,f#6,a#6,c#7], a6 ~@15", // F#
})).s("gm_drawbar_organ").gain(0.39).pan(0.3)

// chords · electric guitar clean · "Clean Gt."
const electric_guitar_clean = note(`<
  ~@7 A ~ B C D@2 E B E B D@3 F G ~ A ~ B C D@2 E B H I J@3 K ~@4 I L M J H I H I J@3 K N ~ O ~ I L J P H I H I J@3 Q N
  ~ O ~ R L J@2 H I H I J@8 S
>`.pickRestart({
  A: "[f#3,c#4,f#4] ~@7", // F#5
  B: "[b3,f#4,b4] ~ [b3,f#4,b4] ~ [b3,g#4,b4] ~ [b3,f#4,b4] ~ [b3,f#4,b4] ~ [b3,f#4,b4] ~ [b3,g#4,b4] ~ [b3,f#4,b4] ~", // B5 E B5 E B5
  C: "[b3,f#4,b4] ~ [b3,f#4,b4] ~ [b3,f#4,g#4,b4]@2 [b3,f#4,b4] ~ [b3,f#4,b4] ~ [b3,f#4,b4] ~ [b3,f#4,g#4,b4] ~ [b3,f#4,b4] ~", // B5 G#m7 B5 G#m7 B5
  D: "[f#3,c#4,f#4] ~ [f#3,c#4,f#4] ~ [f#3,d#4,f#4] ~ [f#3,c#4,f#4] ~ [f#3,c#4,f#4] ~ [f#3,c#4,f#4] ~ [f#3,d#4,f#4] ~ [f#3,c#4,f#4] ~", // F#5 D#m F#5 D#m F#5
  E: "[c#4,g#4,c#5] ~ [c#4,g#4,c#5] ~ [c#4,a#4,c#5] ~ [c#4,g#4,c#5] ~ [c#4,g#4,c#5] ~ [c#4,g#4,c#5] ~ [c#4,a#4,c#5] ~ [c#4,g#4,c#5] ~", // C#5 F# C#5 F# C#5
  F: "[f#3,c#4,f#4] ~ [f#3,c#4,f#4] ~ [f#3,d#4,f#4] ~ [f#3,c#4,f#4] ~ [f#3,c#4,f#4] ~ [f#3,c#4,f#4] ~ [f#3,c#4,f#4]@2 [f#3,c#4,f#4] ~", // F#5 D#m F#5
  G: "[f#3,c#4,f#4]@3 ~@13", // F#5
  H: "[c#3,g#3,c#4] ~ [c#3,g#3,c#4] ~ [c#3,a#3,c#4] ~ [c#3,g#3,c#4] ~ [c#3,g#3,c#4] ~ [c#3,g#3,c#4] ~ [c#3,a#3,c#4] ~ [c#3,g#3,c#4] ~", // C#5 F# C#5 F# C#5
  I: "[b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,g#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,g#3,b3] ~ [b2,f#3,b3] ~", // B5 E B5 E B5
  J: "[f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,d#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,d#3,f#3] ~ [f#2,c#3,f#3] ~", // F#5 D#m F#5 D#m F#5
  K: "[f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,d#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,c#3,f#3]@2 [f#2,c#3,f#3] ~", // F#5 D#m F#5
  L: "[b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,g#3,b3]@2 [b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,g#3,b3] ~ [b2,f#3,b3] ~", // B5 G#m7 B5 G#m7 B5
  M: "[f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,d#3,f#3]@2 [f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,d#3,f#3] ~ [f#2,c#3,f#3] ~", // F#5 D#m F#5 D#m F#5
  N: "[f#2,c#3,f#3]@3 ~@13", O: "[f#2,c#3,f#3] ~@7",
  P: "[f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,d#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,d#3,f#3]@2 [f#2,c#3,f#3] ~", // F#5 D#m F#5 D#m F#5
  Q: "[f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,d#3,f#3]@2 [f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,c#3,f#3]@2 [f#2,c#3,f#3] ~", // F#5 D#m F#5
  R: "[b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,g#3,b3]@2 [b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,g#3,b3] ~ [b2,f#3,b3] ~", // B5 E B5 E B5
  S: "[f#2,c#3,f#3]", // F#5
})).s("gm_electric_guitar_clean").gain(0.3).pan(0.3)

// chords · electric guitar muted · "Muted Gt."
const electric_guitar_muted = note(`<
  ~@9 A ~ B C D A D A E@2 B F ~@4 A ~ B C D G D A E@3 F ~@4 A ~ B C D A D H E@2 B F ~@4 A ~ B C D A D A E@2 B F ~@4 A ~
  B C D H D A E@8 ~
>`.pickRestart({
  A: "~@4 f#3 ~@7 f#3 ~@3", B: "~@4 c#3 ~@7 c#3 ~@3", C: "~@4 c#3@2 ~@6 c#3 ~@3", D: "~@4 g#3 ~@7 g#3 ~@3",
  E: "~@4 c#3 ~@7 c#3@2 ~@2", F: "~@2 c#3 ~@5", G: "~@4 f#3 ~@7 f#3@2 ~@2", H: "~@4 f#3@2 ~@6 f#3 ~@3",
})).s("gm_electric_guitar_muted").gain(0.33).pan(0.7)

// drums · kick
const kick = s("bd").struct("<~ A@8 B@12 A@4 B@12 ~@4 B@12 A@4 B@12 A@4 B@16 C>".pickRestart({
  A: "x!2", B: "x ~@2 x!2 ~@3", C: "x",
})).gain(0.66)

// drums · snare
const snare = s("sd").struct("<~@8 A B@12 ~@3 A B@12 ~@3 C B@12 ~@3 A B@12 ~@3 A B@16 D>".pickRestart({
  A: "~@5 x!3", B: "~ x!3 ~ x!3", C: "x!2 ~@2", D: "x",
})).gain(0.33)

// drums · low tom
const low_tom = s("lt").struct("<~ A@8 ~@12 A@4 ~@28 A@4 ~@12 A@4 ~@17>".pickRestart({
  A: "x!8",
})).gain(0.46)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~ A@8 B@12 A@4 B@12 C@4 B@12 A@4 B@12 A@4 B@16 D>".pickRestart({
  A: "x!4", B: "x!8", C: "~ x ~ x", D: "x",
})).gain(0.39)

// drums · mid tom
const mid_tom = s("mt").struct("<~ A@8 ~@12 A@4 ~@15 B ~@12 A@4 ~@12 A@4 ~@17>".pickRestart({
  A: "x!2", B: "~@8 x!8",
})).gain(0.39)

// drums · crash
const crash = s("cr").struct("<~@89 x>").gain(0.39)

// drums · ride
const ride = s("rd").struct("<~@41 [x!4]!12 ~@37>").gain(0.46)

// drums · shaker
const shaker = s("sh").struct("<[x!3 ~ x ~@3] ~@89>").gain(0.39)

stack(
  bass, rock_organ, drawbar_organ, electric_guitar_clean, electric_guitar_muted, kick, snare, low_tom, pedal_hat,
  mid_tom, crash, ride, shaker
)

More by David Bowie