Strudelify
Dance to the Music cover art

1968 · Dance To The Music

Dance to the Music

Sly

KeyG majorTempo126 bpm
0:00/0:00
// Dance to the Music — Sly
// 126 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 94 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(126/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 · electric bass finger · "El Bass"
const bass = note(`<
  A B C D E F G H I ~@4 J K L M D K L M J K L M N ~@14 O P Q R S R K R M T Q R S R K R U V W@2 X R Y L Z R Y AA AB R Y L
  AC N ~@3 R Y L Z R Y L Z R Y L Z R Y L Z AD
>`.pickRestart({
  A: "~@10 e1@2 f1 ~ f#1 ~", B: "g1@2 ~@2 g1@3 ~ g1 ~ g1 ~ g1 ~ g1@2", C: "~@2 g1 ~ g1@2 ~@2 g1 ~ e1@2 f1@2 e1 ~",
  D: "g1 ~ g1 ~ g1@3 ~ g1 ~ g1@2 ~@2 g1@2", E: "~@2 g1 ~ g1@2 g1 ~ g1 ~ e1@2 f1@2 e1 ~",
  F: "g1 ~ g1 ~ g1@2 g1 ~ g1 ~ g1@2 ~@2 g1@2", G: "~@2 g1 ~ g1 ~ g1 ~ g1 ~ e1@2 f1@2 e1@2",
  H: "g1 ~ g1 ~ g1@3 ~ g1 ~ g1 ~ g1 ~ g1@2", I: "~@2 g1 ~ g1@3 ~ g1 ~ e1@2 f1@2 e1 ~",
  J: "g1@2 ~@2 g1@3 ~ g1 ~ g1@2 ~@2 g1@2", K: "~@2 g1 ~ g1@2 ~@2 g1 ~ e1@2 f1@2 e1@2",
  L: "g1 ~ g1 ~ g1@2 ~@2 g1 ~ g1@2 ~@2 g1@2", M: "~@2 g1 ~ g1@2 ~@2 g1 ~ e1@2 f1@2 f#1 ~", N: "g1 ~@15",
  O: "~@5 e1 f1 f#1", P: "g1 ~@3 g1 ~@3 g1 ~ g1 ~ g1 ~ g1@2", Q: "~@2 g1 ~ g1 ~@3 g1 ~ e1@2 f1@2 e1@2",
  R: "g1 ~ g1 ~ g1 ~@3 g1 ~ g1@2 ~@2 g1@2", S: "~@2 g1 ~ g1 ~@3 g1 ~ e1@2 f1@2 f#1 ~",
  T: "g1@2 ~@2 g1 ~@3 g1 ~ g1 ~ g1 ~ g1@2", U: "g1@2 ~@2 g1!2 ~ g1 b1!2 ~ b1 d2!2 ~ d2",
  V: "d#2@2 ~@2 d#2@2 ~@2 d#2 ~ d#2@2 ~@2 d#2 ~", W: "d#2 ~@3 d#2 ~@3 d#2 ~ d#2@2 ~@2 d#2 ~",
  X: "d#2 ~@3 d#2 ~@3 d#2 ~ d#2@2 d#2 ~ f1 ~", Y: "~@2 g1 ~ g1@2 ~@2 g1 ~ g1@2 ~@2 f1@2",
  Z: "~@2 g1 ~ e1 ~ e1 ~ f1@2 f1 ~ f#1 ~ f#1 ~", AA: "g1 ~ g1 ~ g1@2 ~@2 g1 ~ g1@2 ~@2 g1 ~",
  AB: "c2@4 g1 ~ g1 ~ g1 ~ g1@2 f#1 ~ f#1 ~", AC: "c2@4 e1 ~ e1@2 f1 ~ f1@2 f#1 ~ f#1 ~", AD: "g1 ~@7",
})).s("gm_electric_bass_finger").gain(0.5)

// chords · rock organ · "R Organ"
const rock_organ = note("<~ A@3 B C D@2 E ~@39 F G H I@2 ~@4 J@2 K@2 L M L M N@8 ~@4 N@16 O>".pickRestart({
  A: "[b5@15 ~ c6@13 ~ [f5,b5,d6,g6]@17 ~, [f5,d6,g6]@29 ~@19]/3", B: "[f5,a5,c6]@13 ~@3", C: "[f5,b5,d6,g6]@15 ~",
  D: "[[f5,a5,c6]@6 ~ [f5,b5,d6,g6]@9, ~@14 g5 ~@17]/2", E: "[a5,f6]@3 [g5,e6], c6",
  F: "~@9 f5 g5 f5 [g5,a#5,d6] [f5,b5] [g5,c6,e6] f5", G: "[g5,a5,d6,f6]",
  H: "~@2 [g5,a5,d6,f6]@2 ~ [f5,g5,e6] ~@2 [a#5,d6] b5 [f5,g5,c6,e6]@3 ~ [f5,g5,c6,e6] ~, ~@5 c6@2 [f5,g5]@2 ~@7", // Dm C A# C Fsus2
  I: "[a#5 b5@11 ~@2 [f5,g5,a5,c6]@16 ~@2, [f5,g5,d6]@13 ~@19]/2", J: "[[g4,c#5,d#5]@31 ~]/2",
  K: "[[g4,c#5,d#5]@15 ~]/2", L: "~@4 [f5,g5,b5] ~@7 [f5,g5,b5] ~@3", M: "~@4 [f5,g5,c6] ~@7 [f5,g5,c6] ~@3",
  N: "[f4,b4,e5]@7 ~ [f4,c5,e5]@7 ~", O: "[g4,g5] ~@7",
})).s("gm_rock_organ").gain(0.25)

// chords · electric guitar clean · "Lead Gtr"
const electric_guitar_clean = note(`<
  ~@13 A B A B A B A B A B A B ~@7 C D E F G ~@3 H I@2 J@2 K L M N O P Q R S T M U V@4 W X Y Z W X Y Z W X Y Z ~@4 V@16
  ~
>`.pickRestart({
  A: "~@4 [d4,g4,b4] ~@7 [d4,g4,b4] ~@3", B: "~@4 [e4,g4,c5] ~@7 [e4,g4,c5] ~@3", C: "~@4 d5@7 ~ d5@2 a#4 ~",
  D: "c5 ~ c5@11 ~@3", E: "c5@2 a#4 g4 f4 d4 c#4 c4 a#3 g3 f3 d3 c#3 c3 a#2 g2", F: "a#2 [a2,b2] g3 f3@9 ~@2 f4 d4",
  G: "f4 d4 f4 d4 c#4 c4 a#3 ~ f4 ~ f4 d4 [c#4,d4] c4 a#3 g3", H: "~@10 e1@2 f1@2 f#1 ~",
  I: "[g1 ~@3 g1 ~@5 g1 ~@15 e1@2 f1 ~ e1 ~, ~@3 g3@4 ~, ~@7 e4@7 ~@2]/2",
  J: "[g1 ~@3 g1 ~@21 e1 ~ f1@2 f#1 ~, ~@3 g3@4 ~, ~@7 e4@7 ~@2]/2", K: "g1 ~@3 g1 ~@5 g1 ~@3 g1@2",
  L: "~@4 g1 ~@5 e1 ~ f1 ~ e1 ~", M: "g1 ~@3 g1 ~@5 g1 ~ g2 ~ g1 ~", N: "f2@4 g1 ~@3 g1 ~@7",
  O: "g1 ~@3 g1 ~@3 g1 ~ g1 ~ g2 g1 ~ g1", P: "f2@4 g2 ~@5 e1 ~ f1 ~ e1 ~", Q: "g1 ~@3 g1 ~@2 g1 ~ g1 g2 g1 f2@2 g2 ~",
  R: "g1 ~@3 g1 ~@3 g1 ~ e1 ~ f1 ~ e1 ~", S: "~@4 g1 ~@3 g1 ~ g1 ~@2 g1 g2 g1",
  T: "f2@2 g2 ~ g1 ~@3 g1 ~ e1 ~ f1 ~ e1 ~", U: "f2@2 g2 ~ g3@2 ~ g3 b3!2 ~ b3 d4!2 ~ d4",
  V: "~@4 [c#4,d#4,a#4] ~@7 [c#4,d#4,a#4] ~@3", W: "g2 f2@15", X: "g1 ~ g1 ~@11 g1 ~", Y: "g2 f2@13 ~@2",
  Z: "g1 ~ g1 ~@13",
})).s("gm_electric_guitar_clean").gain(0.45)

// other · brass section · "Brass"
const brass_section = note(`<
  ~@13 A B A C A B A B ~@35 D E@4 ~@4 F G F H F H F H ~@4 F G F H F G F H F G F H F G F H I
>`.pickRestart({
  A: "~@3 g1@3 ~@2", B: "~@4 g1 ~ g1@7 ~@3", C: "~@4 g1 ~ g1@6 ~@4", D: "~@4 g4!2 ~ g4 b4!2 ~ b4 d5!2 ~ d5",
  E: "[[d#5,g5]@63 ~]/4", F: "a#4 a4 ~ a4@3 g4 ~ e4 g4 ~ g4@3 e4 ~", G: "a4 g4@11 ~@4", H: "a4 g4@13 ~@2",
  I: "[b4,e5,g5] ~@7, f4 ~@15", // Em
})).s("gm_brass_section").gain(0.45)

// chords · electric guitar muted · "Guitar"
const electric_guitar_muted = note("<~@9 A B C D ~@60 A B C D ~@17>".pickRestart({
  A: "[d3,b3]@2 d3!2 [d3,b3] ~@3 d3 ~ [f3,a3] ~@3 [e3,g3]@2", // G F Em
  B: "~@2 [c3,e3] ~ [e3,g3] ~@5 [c3,e3] ~ [e3,g3] ~ [d#3,a3] ~", // C Em C Em D#dim
  C: "[d3,b3]@2 ~ d3 [d3,b3] ~@3 [d3,b3] ~ [f3,a3] ~@3 [e3,g3]@2", D: "~@2 c3 ~ g3 ~@11",
})).s("gm_electric_guitar_muted").gain(0.29)

// other · overdriven guitar · "Ld Guit"
const overdriven_guitar = note(`<
  ~@13 A@2 B C D@2 E C F G H I ~@4 J K L ~@5 M N O P Q R S T U V W ~@5 X Y Z AA ~ AB AC@2 X AD AE@2 ~@7 AF ~@4 D@4 AG@2
  AH@2 AI@2 D@2 AJ@2 AH@2 ~
>`.pickRestart({
  A: "[g4@7 ~ g4@4 e4 ~ g4@4 e4 ~@13]/2", B: "g4@6 ~@2 g4@3 ~ e4 ~ g4@2", C: "~@2 e4 ~@13",
  D: "[g4@6 ~@2 g4@4 e4 ~ g4@4 e4 ~@13]/2", E: "g4@6 ~@2 g4@4 e4 ~ g4@2", F: "f4 ~ g4@2 f4 ~ g4@6 f4 ~ a#4@2",
  G: "~@2 e4 ~@11 f4 ~", H: "[f4,g4] ~ g4 ~ e4 ~ g4@2 e4 ~ g4@2 e4 ~ a#4 ~", I: "~@2 e4 ~ g4@2 a#4@8 ~@2",
  J: "f4 ~ g4@2 f4 ~ g4@2 f4 ~ g4@2 f4 ~ a#4@2", K: "~@2 g4 ~@7 f4 ~ g4 ~ f4 ~", L: "a#4@2 ~@2 e4 ~@3 g4 ~@3 g4@2 e4 ~",
  M: "g2@3 ~ g2 ~ g2 ~ a#2 ~ c3@2 a#2 ~ d3@2", N: "~@2 g3@7 ~ f3 ~ g3 ~ g3 ~", O: "a#3@4 ~@2 e3 ~ g3 ~ g3@4 d3@2",
  P: "~@5 e1 f1 f#1", Q: "g1 ~@3 g1 ~@3 g1 ~ g1 ~ g1 ~ g1 ~", R: "g1 ~ g1 ~ g1@2 ~@2 g1 ~ e1 ~ f1@2 e1 ~",
  S: "g1 ~ g1 ~ g1 ~@3 g1 ~ g1 ~@3 g1 ~", T: "~@7 f4", U: "g4 ~ g4@2 f4 ~ g4@2 f4 ~ g4@2 f4 ~ a#4@2",
  V: "~@2 e4 ~@7 f4 ~ g4 ~ f4 ~", W: "a#4@3 ~@3 e4 ~ g4@3 ~ g4 ~ e4@2", X: "f4 ~ g4@2 f4 ~ g4@4 f4 ~ g4@2 f4 ~",
  Y: "a#4@3 ~ e4@2 ~@10", Z: "g4 ~ g4 ~ g4@2 f4 ~ g4@2 ~@2 g4 ~ a#4 ~", AA: "~@4 d5@5 ~ d5@6", AB: "~@14 g#5 a5",
  AC: "[a#5@3 ~]/2", AD: "g4@2 ~@2 g4@3 ~ e4@2 g4 ~@5", AE: "[~@4 d5 ~@3 d5 ~@3 g5@18 ~@2]/2",
  AF: "a#4 ~ a#4 ~ a#4 ~ a4 ~ g4@4 e4@3 ~", AG: "[g4@6 ~@2 g4@4 e4 ~ g4@4 e4 ~@3 d5@9 ~]/2",
  AH: "[g4@5 ~@3 g4@4 e4 ~ g4@4 e4 ~@13]/2", AI: "[g4@6 ~@2 g4@3 ~ e4 ~ g4@4 e4 ~@13]/2",
  AJ: "[g4@6 ~@2 g4@4 f4 ~ g4@4 f4 ~@13]/2",
})).s("gm_overdriven_guitar").gain(0.25)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B A C ~ B ~ B ~@4 A B A C ~ B ~ B A B A C D@35 E D@3 E D@7 E ~@4 D@16 A
>`.pickRestart({
  A: "x", B: "~@7 x", C: "~@5 x ~ x", D: "x ~@4 x ~ x", E: "x!4",
})).gain(0.54)

// drums · clap
const clap = s("cp").struct("<~@25 [x ~ x ~ x!3 ~]!48 ~@4 [x ~ x ~ x!3 ~]!16 ~>").gain(0.54)

// drums · snare
const snare = s("sd").struct("<~ A@8 ~@3 B A@47 C A@3 D A@7 D ~@3 B A@16 E>".pickRestart({
  A: "x!4", B: "~@7 x!9", C: "x ~ x!14", D: "x!16", E: "x",
})).gain(0.6)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A B@2 C A B@3 ~@4 A B@2 C A B@3 A B@2 C A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@2 D A B@2 ~ A B@3 A B@2
  ~@5 A B@3 A B@3 A B@3 A B@3 ~
>`.pickRestart({
  A: "~@2 x!6", B: "x!8", C: "x ~ x!6", D: "x",
})).gain(0.48)

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

// drums · tambourine
const tambourine = s("tb").struct("<~@9 [x!16]!4 ~@12 [x!16]!68 ~>").gain(0.42)

stack(
  bass, rock_organ, electric_guitar_clean, brass_section, electric_guitar_muted, overdriven_guitar, kick, clap, snare,
  open_hat, crash, tambourine
)

More by Sly