Strudelify
Dancing in the Street cover art

Dancing In The Street E.P.

Dancing in the Street

David Bowie

KeyC majorTempo136 bpm
0:00/0:00
// Dancing in the Street — BOWIE DAVID
// 136 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 110 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(136/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 · slap bass 2 · "bass"
const bass = note(`<
  ~@9 A B C@2 D@10 E@4 F@2 G H I J K@2 L@2 M N O@2 P Q R S C@4 T@6 U@2 V ~@5 W ~ X ~ Y Z G H I J K@2 L@2 M N O@2 P Q R S
  U@2 AA@2 U@2 AA@2 U@2 AA@2 U@2 AA@2 U@2 AA@2 U@2 AA@2 AB
>`.pickRestart({
  A: "~@2 c3 ~@3 c3 ~@3 c3 ~@3 c3 ~", B: "~@2 c3 ~@3 a#2 ~@3 a#2 ~@3 a#2 ~",
  C: "[c3 ~ c3 ~@2 g2 a2 ~@2 f2 g2 a2 a#2 a2 g2 f2, ~@7 c3@3 ~@6]/2",
  D: "[c3 ~ c3 ~@2 g2 a2 ~@2 f2 g2 a2 a#2 a2 g2 c3, ~@7 c3@3 ~@6]/2",
  E: "[c3 ~ c3 ~@2 g2 a2 ~@2 f2 g2 a2 a#2 a2 g2 a#2, ~@7 c3@3 ~@6]/2",
  F: "[c3@2 ~@2 c3 ~@5 g2@2 a2@2 c3@4 c3@2 d3 ~ d3@2 d#3 ~ d#3@2 e3@2 e3 ~]/2", G: "f3@2 f2@2 f3@4 f2 ~ f2 ~ f3 ~ f3@2",
  H: "f2@3 ~ f3@3 ~ f2@2 c3@2 d#3@2 f3@2", I: "f2@4 f3@4 f2@2 f2 ~ f3@4", J: "f2 ~ a2@3 ~ a2@2 a#2@2 a#2@2 b2@2 f2@2",
  K: "[c3@3 ~ c3@3 ~@3 g2@2 a2@2 ~@4 f2@2 g2@2 a2@2 a#2@2 a2@2 g2@2 f2@2, ~@7 c3@3 ~@6]/2",
  L: "[c3@3 ~ c3@3 ~@3 g2@2 a2@2 ~@4 f2@2 g2@2 a2@2 a#2@2 a2@2 d3@2 d#3@2, ~@7 c3@3 ~@6]/2",
  M: "e3@2 ~@2 e3@3 ~ e3@2 b2@2 d3@2 d#3@2", N: "e3@3 ~ e3@2 e3@2 e3@2 d3@2 b2@2 e2@2",
  O: "[a2@3 ~ a2@6 e2@2 g2@2 a2@8 a2@2 c3@2 a2@2 c3 [c3,d3] a2@2]/2", P: "d3@3 ~ d3@4 ~@2 a2@2 c3@2 a2@2",
  Q: "d3@3 ~ d3@6 c3@2 a2@2 f#2@2", R: "g2@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g3 ~ g2 ~",
  S: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ a2 ~ b2 ~",
  T: "[c3@2 ~@2 c3@3 ~@3 g2@2 a2@2 ~@4 f2@2 g2@2 a2@2 a#2@2 a2@2 g2@2 c3@2, ~@7 c3@3 ~@6]/2",
  U: "[c3@2 ~@2 c3@3 ~@3 g2@2 a2@2 ~@4 f2@2 g2@2 a2@2 a#2@2 a2@2 g2@2 f2@2, ~@7 c3@3 ~@6]/2",
  V: "c3@3 ~ c3@2 a#2@2 ~@8", W: "~ c3@3", X: "d#3@2 ~@2 c3@3 ~ c3@3 ~ c3@2 c4 ~", Y: "~@8 c3@2 c3@2 c3@2 c3 ~",
  Z: "c3 ~ c3@2 d3@2 d3@2 d#3@2 d#3@2 e3@2 e3 ~",
  AA: "[c3@3 ~ c3@4 ~@2 g2@2 a2@2 ~@4 f2@2 g2@2 a2@2 a#2@2 a2@2 g2@2 f2@2, ~@7 c3@3 ~@6]/2", AB: "~@2 c3 ~@5",
})).s("gm_slap_bass_2").gain(0.56)

// chords · piano
const piano = note(`<
  ~@11 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A B C@4 D@4 E@2 F@2 G@2 H@2 A ~ A ~ A ~ A ~ A ~ A ~ I ~@10 J C@4 D@4 E@2 F@2 G@2
  H@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ K
>`.pickRestart({
  A: "~@2 [c4,e4,g4] ~@3 [c4,e4,g4] ~", B: "~@2 [a#3,e4,g4] ~ [a#3,e4,g4] ~ [a#3,e4,g4] ~",
  C: "~@2 [c4,f4,a4] ~@3 [c4,f4,a4] ~", D: "~@2 [a#3,e4,g4] ~@3 [a#3,e4,g4] ~", E: "~@2 [b3,e4,g#4] ~@3 [b3,e4,g#4] ~",
  F: "~@2 [c4,e4,a4] ~@3 [c4,e4,a4] ~", G: "~@2 [c4,f#4,a4] ~@3 [c4,f#4,a4] ~", H: "~@2 [b3,d4,f4] ~@3 [b3,d4,f4] ~",
  I: "~@2 [c4,e4,g4] ~@5", J: "~@8 [a#3,e4,g4]@2 [a#3,e4,g4]@2 [a#3,e4,g4]@2 [a#3,e4,g4] ~", K: "~@4 [c4,e4,g4] ~@11",
})).s("gm_piano").gain(0.56)

// chords · acoustic guitar steel · "guitar"
const acoustic_guitar_steel = note(`<
  ~@11 A B A C A C A C A C A C A D A D A E F@4 G@4 H@2 I@2 J@2 K@2 A B A B A C A C A C A B L ~@9 M N F@4 G@4 H@2 I@2 J@2
  K@2 A B A B A B A B A B A B A B A B A B A B A B A B O
>`.pickRestart({
  A: "~@4 [e4,g4,c5] ~ [e4,g4,c5] ~@5 [e4,g4,c5] ~ [e4,g4,c5] ~", B: "~ f2 g2 a2 a#2 a2 g2 f2",
  C: "~ f2 g2 a2 a#2 a2 g2 c3", D: "~ f2 g2 a2 a#2 a2 g2 a#2",
  E: "~@4 [e4,g4,a#4] ~@3 [e4,g4,a#4] ~ [e4,g4,a#4] ~ [e4,g4,a#4] ~ [e4,g4,a#4] ~", // Edim
  F: "~@4 [c4,f4,a4] ~ [c4,f4,a4] ~@5 [c4,f4,a4] ~ [c4,f4,a4] ~", // F
  G: "~@4 [c4,e4,g4] ~ [c4,e4,g4] ~@5 [c4,e4,g4] ~ [c4,e4,g4] ~", // C
  H: "~@4 [b3,e4,g#4] ~ [b3,e4,g#4] ~@5 [b3,e4,g#4] ~ [b3,e4,g#4] ~", // E
  I: "~@4 [c4,e4,a4] ~ [c4,e4,a4] ~@5 [c4,e4,a4] ~ [c4,e4,a4] ~", // Am
  J: "~@4 [c4,f#4,a4] ~ [c4,f#4,a4] ~@5 [c4,f#4,a4] ~ [c4,f#4,a4] ~", // F#dim
  K: "~@4 [d4,f4,g4] ~ [d4,f4,g4] ~@5 [d4,f4,g4] ~ [d4,f4,g4] ~", L: "~@4 [e4,g4,c5] ~ [e4,g4,c5] ~@9",
  M: "~@8 [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~", // C
  N: "[e4,g4,a#4] ~ [e4,g4,a#4] ~ [e4,g4,a#4] ~ [e4,g4,a#4] ~ [e4,g4,a#4] ~ [e4,g4,a#4] ~ [e4,g4,a#4] ~ [e4,g4,a#4] ~", // Edim
  O: "~@4 [c5,c6] ~@11", // C
})).s("gm_acoustic_guitar_steel").gain(0.48)

// bass · baritone sax
const bass_2 = note("<~@28 A B A B ~@4 C D@2 E@2 F@2 G@2 ~@23 A B A B ~@4 C D@2 E@2 F@2 G@2 ~@25>".pickRestart({
  A: "~@7 e2", B: "f2 ~@15", C: "~@6 d2 d#2", D: "e2/2", E: "[a2@15 ~]/2", F: "[d2@31 ~]/2", G: "g2/2",
})).s("gm_baritone_sax").gain(0.64)

// chords · string ensemble 1 · "strings"
const string_ensemble_1 = note("<~@4 A@7 ~@74 B@20 C@4 ~>".pickRestart({
  A: "[g4,c5,c6]/7", B: "[[a#3,g4]@20 ~@4 [a#3,g4]@2 [a3,f4]@3 ~ [g3,e4]@26 ~@2 [g3,e4]@3 [a3,f4]@3]/4",
  C: "[[a#3,g4]@20 ~@4 [a#3,g4]@2 [a3,f4]@3 ~ [g3,e4]@26 ~@8]/4", // D# Dm C
})).s("gm_string_ensemble_1").gain(0.4)

// other · whistle
const whistle = note("<~@2 c6 [~@4 c6 ~@3 c6 ~@3 c6 ~@3] ~@106>").s("gm_whistle").gain(0.08)

// drums · kick
const kick = s("bd").struct(`<
  ~@11 A B@10 A B@2 A C B C B A B C B A@2 C A@3 D A@2 E F A@4 B@7 G H I@2 H I H I H I H I H B A B C B A@2 C A@3 D A@2 J
  K A@4 L A@2 M A@2 L A N A@2 O P A@2 J P A@2 J Q
>`.pickRestart({
  A: "x ~@3 x!2 ~@2", B: "x!2", C: "x ~ x!2", D: "x ~@4 x ~ x", E: "x!2 ~ x!3 ~ x", F: "x", G: "x ~ x!2 ~@4", H: "x!4",
  I: "x ~ x ~ x ~ x!2", J: "x!8", K: "x!7 ~", L: "x!2 ~@2 x ~@3", M: "x ~@2 x!2 ~ x ~ x ~@2 x!2 ~ x ~",
  N: "x!3 ~ x ~@3", O: "x!5 ~ x!2", P: "x ~ x ~ x!2 ~@2", Q: "x!3 ~ x ~@11",
})).gain(0.48)

// drums · snare
const snare = s("sd").struct(`<
  ~@6 A@4 B C@3 D C@11 D C E C@3 F C@3 G C@7 H C@11 D C@10 I J C@3 F C@3 G C@6 K L C@3 D C@7 D C@3 M C@3 N C@3 N O
>`.pickRestart({
  A: "x!8", B: "x ~ x ~ x ~ x ~ x!3 ~ x!3 ~", C: "~ x ~ x", D: "~@4 x ~@7 x ~ x!2", E: "~@4 x ~@3 x ~ x!3 ~@3",
  F: "~@2 x ~@2 x!2 ~", G: "~@4 x ~@5 x!3 ~ x!2", H: "~@4 x!3 ~ x ~ x ~ x ~@3", I: "~@2 x ~ x!4",
  J: "x ~ x!3 ~ x ~ x!3 ~@5", K: "~@2 x ~@3 x!2", L: "x!6 ~@2", M: "~@2 x!3 ~@5 x!3 ~@3", N: "~@2 x!3 ~ x ~ x ~ x!6",
  O: "x!2 ~@2",
})).gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<A B ~ C@15 D C@9 D C@17 D C@5 E F G D C H A@11 C@15 D C@19 I C@3 I J>".pickRestart({
  A: "x!4", B: "x ~@2 x!2 ~ x ~ x ~@3 x ~@3", C: "x!8", D: "x!7 ~", E: "x!5 ~ x!2", F: "x!4 ~@2 x!2", G: "x!3 ~ x!4",
  H: "x!2 ~ x!2 ~ x ~", I: "x!5 ~ x ~", J: "x",
})).gain(0.48)

// drums · low tom
const low_tom = s("lt").struct("<~@44 [~@7 x] ~@12 [~@7 x]!10 ~ [~@15 x] ~@41>").gain(0.56)

// drums · open hat
const open_hat = s("oh").struct("<~@18 A ~@5 A ~@3 A ~@17 A ~@5 B C D A ~@28 A ~@19 E ~@3 E ~>".pickRestart({
  A: "~@7 x", B: "~@5 x ~@2", C: "~ x", D: "~@3 x ~@4", E: "~@5 x ~ x",
})).gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct("<~@3 A@7 B ~@33 C ~@12 D@10 ~ E ~@35 A ~@3 A ~>".pickRestart({
  A: "x!8", B: "x!4 ~@4", C: "~@2 x ~@10 x ~@2", D: "~@3 x", E: "~@7 x",
})).gain(0.56)

// drums · crash
const crash = s("cr").struct(`<
  ~@11 A ~@13 A ~@3 A ~@7 A ~@7 A ~@11 B ~@11 A ~@7 A ~@7 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 B
>`.pickRestart({
  A: "x", B: "~ x ~@2",
})).gain(0.64)

// drums · high tom
const high_tom = s("ht").struct("<~@28 A ~@15 B ~@12 C D E D E D E D E D F G ~@31 H ~@9>".pickRestart({
  A: "~@14 x!2", B: "~@2 x ~ x!3 ~", C: "~@10 x!2 ~@4", D: "x ~@7 x!4 ~@4", E: "x ~@8 x!3 ~@4", F: "x ~ x!6",
  G: "~@12 x!2 ~@2", H: "~@3 x ~@3 x",
})).gain(0.56)

// drums · tambourine
const tambourine = s("tb").struct("<~@4 A@6 B C@33 ~ C@39 ~ C@24 D>".pickRestart({
  A: "x!16", B: "x!9 ~@7", C: "x!4", D: "x!2 ~@2",
})).gain(0.64)

// drums · claves
const claves = s("clave:2").struct("<~@44 [x!2] ~@65>").gain(2.35)

stack(
  bass, piano, acoustic_guitar_steel, bass_2, string_ensemble_1, whistle, kick, snare, hihat, low_tom, open_hat,
  mid_tom, crash, high_tom, tambourine, claves
)

More by David Bowie