Strudelify

Diamond Dogs

David Bowie

KeyA majorTempo120 bpm
0:00/0:00
// Diamond Dogs — David Bowie
// 120 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 121 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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(`<
  A B C@2 D@2 E@2 F@2 G@2 H I J K L M N O P Q R S@2 T U@2 V@3 W X@3 Y Z@2 D@2 E@2 F@2 G@2 H I J K L M N O P Q R S@2 T
  U@2 V@3 W X@3 Y AA@5 AB@4 AC H I J K L M N O P Q R S@2 T U@2 V@3 W X@3 Y AD@5 AE@8 A@2 AF@2
>`.pickRestart({
  A: "[e3,c4]@3 [c#3,a3]@5", B: "[e3,c4]@3 [e3,a3]@5",
  C: "[[g3,a#3,d#4]@4 [f3,a#3,d4]@3 [f3,a3,c4]@5 ~@2 b3 a3, ~@7 [d3,g3]]/2", // D# A# F G5
  D: "[[e3,a3,c#4]@2 [e3,a3,c#4] [e3,a3,c#4]@2 b3 a3 [e3,a3,c#4]@2 [e3,a3,c#4] f#4 [e3,a3,c#4]@3 ~ b3]/2", // A
  E: "[[d3,g#3,b3]@2 [d3,g#3,b3] a3 [d3,g#3,b3]@2 a3 [d3,g#3,b3]@2 [e3,g#3,c#4]@3 ~@2 [d3,g#3,b3] a3]/2", // G#dim C#m G#dim
  F: "[[d3,f#3,c4]!2 [d3,f#3,c4]@2 c4 a3!2 [d3,f#3,c4]@2 [d3,f#3,c4]@2 [d3,f#3,c4]@3 ~@2, ~@4 [d3,f#3]@3 ~@9]/2", // D7 D
  G: "~ [a3,c#4,e4] [a3,c#4]!2 [c#3,e3,a3]!2 [c#3,e3,f#3]@2", H: "[e3,a3,c#4]!8",
  I: "[e3,a3,c#4]@2 [e3,a3,c#4] [e3,a3,c#4]@3 ~ a3", J: "[d3,g#3,b3] a3 [d3,g#3,b3] a3 [d3,g#3,b3]!4",
  K: "[d3,g#3,b3]@2 [d3,g#3,b3] [d3,g#3,b3]@3 ~ a3", L: "[d3,f#3,c4]!5 a3 f#3 a3",
  M: "[d3,f#3,c4]!3 c4 a3@2 ~@2, ~@3 [d3,f#3]@3 ~@2", // D7 D
  N: "[a3,c#4,e4]@2 [a3,c#4,e4]@2 c#4!2 [c#3,e3,a3]@4 [c#3,e3,a3]@2 [c#3,e3,f#3]@4", // A F#7
  O: "e4!2 [e3,a3,c#4]@4 [e3,a3,c#4]@2 a3!2 [c#3,e3,f#3]@2 [e3,a3,c#4]@2 [e3,a3,c#4]@2", // A F#7 A
  P: "[e3,g#3,b3]@4 ~ [e3,g#3,b3]!2 g#3", Q: "[e3,g#3,b3]!2 [e3,g#3,c#4]@4 [e3,g#3,b3]!2",
  R: "[g3,b3,d4]@4 ~ [g3,b3,d4] [d3,g3,c4] [d3,g3,b3]", // G Csus2 G
  S: "[[d3,g3,c4]!2 [d3,g3,c#4] [g3,b3,d4] [g3,b3] [d3,g3,b3]!2 [c#3,e3,a3]@5 ~@2 [a3,c#4,g4] [a3,c#4,e4]]/2", // Csus2 G A A7 A
  T: "[a3,c#4,f4]!3 [a3,c#4,e4]@3 ~@2", // Aaug A
  U: "[~@3 [a3,d4,f#4]!2 [a3,d4,e4] [a3,d4] [a3,d4,f#4]@2 [f#3,a3,d4]@2 [a3,d4,e4]@2 [a3,d4,f#4]@3]/2", // D Asus4 D5 D Asus4 D
  V: "[~ [a3,c#4,e4]!2 [a3,c#4] e4 d4 [e3,a3,c#4] [e3,a3,c#4]@3 ~@4 [e3,a3,c#4] [d#3,f#3,c#4]@2 [d#3,f#3,b3]@3 ~@3 b3, ~@2 [a3,c#4] ~@9]/3", // A D#m7 B A
  W: "[d3,f#3,c4]@2 [d3,f#3,b3]!2 [d3,f#3,a3]@2 [d3,f#3,a3] [c#3,e3,a3]", // D7 Bm D A
  X: "[[c#3,e3]!2 [c#3,e3,f#3]@2 [c#3,e3,a3]@3 [c#3,e3]@2 [c#3,e3] [c#3,e3,f#3]@2 [c#3,e3,a3]@2 f#4 [d#3,f#3,c#4]@2 [d#3,f#3,b3]@3 ~@3 [d#3,f#3,b3]]/3", // C#m F#7 A C#m F#7 A D#m7 B
  Y: "[d#3,f#3,c4]@2 [d#3,f#3,b3]!2 [d#3,f#3,a3]@2 [d#3,f#3,a3] [c#3,e3,a3]", // Cdim B D#dim A
  Z: "[[c#3,e3]!2 [c#3,e3,f#3]@2 [c#3,e3,a3]@3 [c#3,e3]@2 [c#3,e3] [c#3,e3,f#3]@2 [c#3,e3,a3]@2 ~ c#4]/2", // C#m F#7 A C#m F#7 A
  AA: "[[c#3,e3]!2 [c#3,e3,f#3]@2 [c#3,e3,a3]@3 [c#3,e3]@2 [c#3,e3] [c#3,e3,f#3]@2 a3 c4 [e3,a3,c#4] e4@2 c#4 ~@5 [b3,e4,g4]@3 [b3,e4,f#4]!2 [g#3,b3,e4]@2 [g#3,b3,e4] [a3,c#4,e4]@2 [a3,c#4]@3 [c#3,e3,a3]@3 [c#3,e3], ~@12 [c#3,e3]@2 ~ [g#3,b3]@3 ~@22]/5", // C#m F#7 A C#m F#7 A Em Bsus4 …
  AB: "[~ [c#3,e3] [c#3,e3,f#3]@2 a3 c4 [e3,a3,c#4] e4@2 c#4 b3@2 ~@4 g#4@2 [b3,e4,f#4]!2 [g#3,b3,e4]@2 [g#3,b3,e4] e4@2 c4 b3@2 [d3,f#3,a3]@2 f#3 a3, ~@4 [c#3,e3]@2 ~ g#3@5 ~@11 [f#3,a3]@5 ~@4, ~@7 b3@3 ~@5 [b3,e4,g4]@3 ~@14]/4", // C#m F#7 A Bsus4 E D C#m F#m …
  AC: "~ c4 b3@2 [d3,f#3,a3]@2 b3 a3, ~ [d3,f#3]@3 ~@2 [d3,f#3]@2", // D
  AD: "[[c#3,e3]!2 [c#3,e3,f#3]@2 [c#3,e3,a3]@3 [c#3,e3]@2 [c#3,e3] [c#3,e3,f#3]@2 a3 c4 [e3,a3,c#4] e4@2 c#4 ~@5 [e3,g3,c4]@3 b3 a3 [b2,e3,a3]@2 f#3 [c#3,e3,a3]@2 c4 [d3,f#3,b3]@2 [c#3,e3,a3]@2 [c#3,e3,f#3] [c#3,e3], ~@12 [c#3,e3]@2 ~ [g#3,b3]@3 ~@8 [e3,g3]@2 ~@12]/5", // C#m F#7 A C#m F#7 A C Esus4 …
  AE: "[[c#3,e3]!2 [c#3,e3,f#3]@2 a3 c4 [e3,a3,c#4] e4@2 c#4 ~@5 [e3,g3,c4]@3 b3 a3 [b2,e3,a3]@2 f#3 [c#3,e3,a3]@2 c4 [d3,f#3,b3]@2 [c#3,e3,a3]@2 [c#3,e3,f#3] [c#3,e3], ~@4 [c#3,e3]@2 ~ [g#3,b3]@3 ~@8 [e3,g3]@2 ~@12]/4", // C#m F#7 A C Esus4 A Bm A …
  AF: "[[g3,a#3,d#4]@4 [f3,a#3,d4]@3 [f3,a3,c4]@5 ~ [f3,a3,c4]!2 ~]/2", // D# A# F
})).s("gm_piano").gain(0.31)

stack(piano)

More by David Bowie