Strudelify

Don't Bring Me Down

The Animals

KeyC majorTempo115 bpm
0:00/0:00
// Don't Bring Me Down — The Animals
// 115 bpm, 4/4, key C 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(115/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 · rock organ · "ORGAN 3"
const rock_organ = note(`<
  A B C D E F@2 G@2 F@2 H@2 I@2 J@4 K@2 L@2 M@2 N@2 O@2 P@2 Q@2 R@2 S@2 R@2 T@2 L@2 M@2 N@2 O@2 P@2 U A B C D E F@2 G@2
  F@2 V W I@2 J@4 K@2 L@2 M@2 N@2 O@2 P@2 X@2 Y@2 Z@2 AA@2 AB@2 AC
>`.pickRestart({
  A: "~@14 g4 ~", B: "[a#4,c5] ~ [g4,a#4,c5]@2 ~@2 g4 ~ [g4,a#4,c5] ~ [g4,a#4,c5]@2 ~@2 g4 ~, g4 ~@7",
  C: "[g4,a#4,d5] ~ [g4,a#4,d5]@2 ~@2 g4 ~ [g4,a#4,d5] ~ [g4,a#4,d5]@2 ~@2 g4 ~", // Gm
  D: "[g4,c5,e5] ~ [g4,a#4,c5,e5]@2 ~@2 g4 ~ [g4,a#4,e5] ~ [g4,a#4,c5,e5]@2 ~@2 g4 ~, a#4 ~@3 c5 ~@3", // C C7 Edim C7
  E: "[g4,d5,f5] ~ [g4,a#4,d5,f5]@2 ~@2 g4 ~ [g4,d5,f5] ~ [g4,a#4,d5,f5]@2 ~@4, a#4 ~@3 a#4 ~@3", // G7 Gm7 G7 Gm7
  F: "[[g4,c5,e5]@10 g4@2 [c5,e5] ~ [a#4,d5]@7 ~ [a4,c5]@4 g4@4 f4 ~]/2", // C A# Am
  G: "[[c5,e5]@6 ~@2 c5@2 e5 ~ c6 ~ [g5,a#5]@7 ~ [f5,a5]@4 g5@4 f5 ~, g4@2 ~ g4@2 ~@11]/2", H: "[d4,g4]/2",
  I: "[[e5,g5]@9 ~ e5@2 c6@2 [g5,a#5]@7 ~ [f5,a5]@4 g5@4 f5 ~]/2", // Em Gm F
  J: "[[e5,g5]@10 c5@2 c6@2 [g5,a#5]@7 ~ [f5,a5]@4 g5@4 f5 ~]/2", // Em Gm F
  K: "[[e5,g5]@10 c5@2 c6@2 [g5,a#5]@7 ~ [f5,a5]@4 g5@3 f5 ~@2]/2", L: "[[c5,d5,g5]@31 ~]/2", M: "[b4,d5,g5]/2",
  N: "[[c5,e5,g5]@10 ~@2 c6@2 a#5@9 ~ [f5,a5]@3 ~ [f5,a5]@3 ~, ~@12 g5@11 ~@9, ~@12 f5 ~@19]/2", // C F
  O: "[[c5,e5,g5]@11 ~ c6@2 a#5@9 ~ [f5,a5]@3 ~ [f5,a5]@3 ~, ~@12 g5@11 ~@9]/2", // C F
  P: "[[c5,e5,g5]@10 ~@2 c6@2 a#5@9 ~ [f5,a5]@3 ~ [f5,a5]@3 ~, ~@12 g5@11 ~@9]/2", Q: "[d5,g5,b5]/2",
  R: "[[c5,e5]@10 ~@2 c6@2 a#5@9 ~ [f5,a5]@3 ~ [f5,a5]@3 ~, ~@12 f5@11 ~@9]/2", // C F
  S: "[[c5,e5]@10 ~@2 c6@2 a#5@9 ~ [f5,a5]@3 ~ [f5,a5]@3 ~, g5 ~@11 f5@11 ~@9]/2", // C F
  T: "[[c5,e5]@10 ~@2 c6@2 a#5@8 ~@2 [f5,a5]@3 ~ [f5,a5]@2 ~@2, ~@12 f5@11 ~@9]/2", U: "[g4,e5] ~@7, c5 ~@15",
  V: "[c5,d5,g5]@3 ~ [c5,d5,g5]@3 ~ [c5,d5,g5]@3 ~ [c5,d5,g5]@3 ~", // Csus2
  W: "[c5,d5,g5]@3 ~ [c5,d5,g5]@3 ~ [b4,d5,g5]@3 ~ [b4,d5,g5]@4", // Csus2 G
  X: "[c5@12 c6@2 a#5@9 ~ [f5,a5]@3 ~ [f5,a5]@3 ~, e5@10 ~@2 g5@11 ~@9]/2", // F
  Y: "[[e5,g5]@9 ~ e5 ~ [e5,c6] ~ [g5,a#5]@9 ~ [f5,a5]@3 ~ [f5,a5]@3 ~]/2", // Em C Gm F
  Z: "[[e5,g5]@10 c5@2 [e5,c6] ~ [f5,a#5]@4 [f5,a#5]@3 ~ [f5,a#5] ~ [f5,a5]@3 ~ [f5,a5]@3 ~]/2", // Em C A#5 F
  AA: "[[e5,g5]@8 c5@2 [e5,g5] ~ [f5,g5,c6] ~ [g5,a#5]@8 f5 ~ [f5,a5] ~ [f5,a5]@3 ~ [f5,a5] ~]/2", // Em Fsus2 Gm F
  AB: "[[e5,g5]@6 c5@2 [e5,g5]@2 c5 ~ [f5,g5,c6] ~ [g5,a#5]@8 f5 ~ [f5,a5]@2 ~ [f5,a5]@2 ~ [f5,a5] ~]/2", // Em Fsus2 Gm F
  AC: "[e5,g5]@7 ~", // Em
})).s("gm_rock_organ").gain(0.38).pan(0.2)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  A B@4 C ~@6 A D E D E D E D E F G@3 B H I H I J G@2 D E D E D E D K F G@3 B H I H I J L A B@5 H B H B J G@2 D E D E D
  E D K F G@3 B H I H I M I M I M N O P O N Q R
>`.pickRestart({
  A: "~@14 g2 ~", B: "c3 ~ c3 ~@3 g2 ~ c3 ~ c3 ~@3 g2 ~", C: "c3 ~@15", D: "c3 ~ c3 ~@3 g2 ~ c3 ~ c3 ~@3 c3 ~",
  E: "f2 ~ f2 ~@3 c3 ~ f2 ~ f2 ~@3 g2 ~", F: "g2 ~ g2@2 ~@2 d2 ~ g2 ~ g2 ~@3 d2 ~",
  G: "g2 ~ g2 ~@3 d2 ~ g2 ~ g2 ~@3 d2 ~", H: "a#2 ~ a#2 ~@3 f2 ~ a#2 ~ a#2 ~@3 g2 ~",
  I: "c3 ~ c3 ~@3 g2 ~ c3 ~ c3 ~@3 f2 ~", J: "a#2 ~ a#2 ~@3 f2 ~ a#2 ~ a#2 ~@3 d2 ~",
  K: "f2 ~ f2 ~@3 c3 ~ f2 ~ f2 ~@3 d2 ~", L: "g2 ~@15", M: "a#2@2 f2 ~ a#2@2 f2 ~ a#2@2 f2 ~ a#2@2 f2 ~",
  N: "c3 ~ g2 ~ c3 ~ g2 ~ c3 ~ g2 ~ c3 ~ f2 ~", O: "a#2 ~ f2 ~ a#2 ~ f2 ~ a#2 ~ f2 ~ a#2 ~ f2 ~",
  P: "c3 ~ g2 ~ c3 ~ g2 ~ c3 ~ g2 ~ c3 ~ g2 ~", Q: "a#2 ~ f2 ~ a#2 ~ f2 ~ a#2 ~ f2 ~ a#2@2 f2 ~", R: "c3@3 ~",
})).s("gm_acoustic_bass").gain(0.38)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  ~@5 A B A B A B C@2 ~@12 D E D E D F ~@2 G@2 H@2 I@2 J@6 D E D E D F ~@6 A B A B A B C@2 G@2 I@2 K@2 L@2 M@2 N@2 D E D
  E D E D E D E D O D E D E P
>`.pickRestart({
  A: "[c3,g3,c4]", B: "[a#2,f3,a#3] [f3,a3], ~@4 f2@3 ~", C: "[g2,d3,g3]/2", D: "[c3,g3]", E: "[a#2,f3]",
  F: "[a#2,f3]@7 ~", G: "[~@10 g2 ~ c3@2 a#2@8 a2@4 g2@2 ~@2 f2 ~]/2",
  H: "[g2@8 ~@2 g2 ~ c3 ~ a#2@8 a2@4 g2@3 ~ f2 ~]/2", I: "[g2@9 ~ g2 ~ c3@2 a#2@8 a2@4 g2@2 ~@2 f2 ~]/2",
  J: "[g2@8 ~@2 g2 ~ c3@2 a#2@8 a2@4 g2@2 ~@2 f2 ~ [g2,f3,a3]@30 ~@2 [g3,b3]@31 ~, ~@31 d3@30 ~@2 d3@31 ~@2]/6", // Dm G
  K: "[g2@8 ~@2 g2 ~ c3@2 a#2@8 a2@4 g2@4 f2 ~]/2", L: "[g2@9 ~ g2 ~ c3@2 a#2@8 a2@4 g2@4 f2 ~]/2",
  M: "[~ a3@30 ~, [g2,d3,f3]@15 ~]/2", N: "[d3,g3,b3]/2", O: "[a#2,f3]@15 ~", P: "[c3,g3]@13 ~@3",
})).s("gm_overdriven_guitar").gain(0.21).pan(0.7)

// chords · piano · "A.PIANO 1" · Gm F Em Gm F Em D# F …
const piano = note(`<
  ~@51
  [~@2 c5 ~ [g5,a#5] ~ [f5,a5] ~ [e5,g5] d5 c5 ~ [g4,a#4] ~ [f4,a4] ~]
  [[e4,g4]@2 c4 ~ [d#4,g4]@2 c4 ~ [f4,a4]@2 c4 ~ g3@3 ~]
  [[c2,c3]@3 ~@13]
  ~@40
>`).s("gm_piano").gain(0.44).pan(0.7)

// drums · kick
const kick = s("bd").struct("<~ A@4 B@7 C A@38 D ~ A@4 B@7 C A@11 C A@16 D>".pickRestart({
  A: "x!2 ~@2 x!2 ~@2", B: "~@4 x!4", C: "x!2", D: "x",
})).gain(0.44)

// drums · rim
const rim = s("rim").struct("<~ A@4 ~@8 A@11 ~ A@19 ~ A@6 ~@2 A@4 ~@8 A@11 ~ A@13 ~ A@2 ~>".pickRestart({
  A: "~ x ~ x",
})).gain(0.38)

// drums · snare
const snare = s("sd").struct("<~ A@4 B@7 C A@11 D B@6 E A@12 D B@6 F ~ A@4 B@7 C A@11 C B@12 E D B@2 F>".pickRestart({
  A: "~ x ~ x", B: "x!4", C: "~ x!15", D: "~@4 x ~@6 x!5", E: "x!2 ~ x", F: "x",
})).gain(0.49)

// drums · hihat
const hihat = s("hh").struct("<~ A@4 B@6 C D A@11 D A@19 D A@6 E ~ A@4 B@6 C D A@11 D A@13 D A@2 E>".pickRestart({
  A: "x!8", B: "x!4", C: "x!3 ~", D: "x!2", E: "x",
})).gain(0.27)

// drums · open hat
const open_hat = s("oh").struct("<~@11 [~@3 x] ~@51 [~@3 x] ~@30>").gain(0.49)

stack(rock_organ, bass, overdriven_guitar, piano, kick, rim, snare, hihat, open_hat)

More by The Animals