Strudelify

We Gotta Get Out Of This Place

The Animals

KeyC majorTempo125 bpm
0:00/0:00
// We Gotta Get Out Of This Place — The Animals
// 125 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 99 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(125/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 · drawbar organ · "ORGAN 1"
const drawbar_organ = note(`<
  ~@12 A@4 B@2 C D E F G H@5 I@6 J@2 K L M N O P ~@2 Q R S T U V@3 B@2 C D E F W X@5 Y@4 Z@2 J@2 K L M N O P ~@2 AA R
  AB@2 K L M N O P ~@2 AA R AB@2 AC@3
>`.pickRestart({
  A: "[~@29 d4@2 ~ e4@23 ~ [c4,e4]@3 ~ f4@3 ~, [g3,a#3,c4]@55 ~@5 c4 ~@3]/4", B: "[e4@23 ~ e4@3 ~ f4@2 ~@2]/2",
  C: "[g3,a#3,c4,e4]@8 [c4,e4]@3 ~ [c4,f4]@3 ~, ~@8 [g3,a#3]@7 ~", // C7 C F5 Gm
  D: "[c4,f4,a4]@2 ~ [c4,g4]@2 f4@2 ~ [c4,e4]@3 ~ [a#3,c4,f4]@3 ~, ~@5 c4 ~@10", E: "[e4,g4]@7 ~, c4",
  F: "~@9 f4@3 [c4,g4]@3 ~, [c4,e4]@12 e4 ~@3", G: "[c4,e4]@12 [c4,f4]@3 ~",
  H: "[~@4 e4@3 ~ a#4@3 ~ a4@3 ~ [c4,g4]@10 c4@2 f4@2 c4 ~@3 a#3@3 ~@3 a#4@3 ~ a4@2 ~@6 c4@4 ~@2 c4@2 f4@2 ~@4 a#3@3 ~ a#3@2 [e4,a#4]@2 a#3@2 [e4,a4]@4, a#3@7 ~ e4@19 ~ g4@10 a#3@5 ~@5 g4@22 ~@2 g4 ~@7, ~@30 e4@9 ~ e4@13 ~@3 e4@4 ~@2 e4@9 ~@9]/5", // C5 Edim A5
  I: "[c4@3 ~ c4@4 ~@4 f4@2 ~@4 c4@2 ~@4 a#4@3 ~ a4@3 ~@5 c4@4 ~@4 f4@2 ~@4 a#3@3 ~ a#3@2 a#4@3 ~ a4@4 a4 ~@3 c4@4 e4@2 c4@2 f4@2 ~@4 a#3@4 a#3@2 a#4@2 a#3@2 a4@3 ~, g4@21 ~@19 g4@15 ~@9 g4@19 ~@13, e4@6 ~@2 e4@4 ~@2 e4@23 ~@3 e4@4 ~@2 e4@13 ~ e4@9 ~@9 e4@18, ~@10 c4@5 ~@7 a#3@7 ~@13 c4@4 ~@50]/6",
  J: "[[c4,e4,g4]@7 ~ [e4,g4]@7 ~ [e4,g4,c5]@16, ~@15 c4@2 ~@15]/2", K: "[f4,a4]@4 ~@2 [c4,f4,a4]@8 d4 ~, c4 ~@7",
  L: "[d4,g4] ~@3 d4 ~@7 c5@3 ~, a#4@2 ~ [e4,g4]@5", // G5 Em
  M: "[f4,a4]@4 [c4,f4,g4] ~ [f4,a4]@6 g4@2 ~@2, c4 ~@5 c4 ~@5 f4 ~@3", // F Csus4 F
  N: "~@2 [g4,b4]@2 d4 ~ [e4,g4]@4 c5@2 g4@2 e4 ~", O: "[f4,a4]@4 c4 ~ [f4,a4]@6 ~@2 d4 ~, c4 ~@5 c4 ~@9",
  P: "[d4,f4,a#4]@4 d4 ~ [e4,g4,c5]@7 ~ d4 ~", Q: "[a4,c5,f5]@6 [g4,a#4,d#5]@9 ~", R: "[d4,f4]@5 ~ [e4,g4,c5]@9 ~",
  S: "[a4,c5,f5]@5 ~ [g4,a#4,d#5]@9 ~", T: "[d4,f4,a#4]@5 ~ [e4,g4,c5]@8 ~@2", U: "[g3,a#3,c4]",
  V: "[~@13 d4@2 ~ e4@23 ~ [c4,e4]@3 ~ f4@3 ~, [g3,a#3,c4]@39 ~@5 c4 ~@3]/3", W: "[c4,e4]@12 f4@3 ~",
  X: "[~@4 e4@3 ~ a#4@3 ~ a4@3 ~ [c4,g4]@10 c4@2 f4@2 c4 ~@3 a#3@3 ~@3 a#4@3 ~ a4@2 ~@6 c4@4 ~@2 c4@2 f4@2 ~@4 a#3@3 ~ a#3@2 [e4,a#4]@2 a#3@2 a4@3 ~, a#3@7 ~ e4@19 ~ g4@10 a#3@5 ~@5 g4@22 ~@2 g4 ~@7, ~@30 e4@9 ~ e4@12 ~@4 e4@4 ~@2 e4@9 ~@9]/5", // C5 Edim
  Y: "[c4@3 ~ c4@4 ~@4 f4@2 ~@4 c4@2 ~@4 a#4@3 ~ a4@3 ~@5 c4@4 ~@4 f4@2 ~@4 a#3@3 ~ a#3@2 a#4@3 ~ a4@4, g4@21 ~@19 g4@15 ~@9, e4@6 ~@2 e4@4 ~@2 e4@23 ~@3 e4@4 ~@2 e4@13 ~@5, ~@10 c4@5 ~@7 a#3@7 ~@13 c4@4 ~@18]/4",
  Z: "[a4 ~@3 c4@4 e4@2 c4@2 f4@2 ~@4 a#3@4 a#3@2 a#4@2 a#3@2 a4@3 ~, g4@19 ~@13, ~@7 e4@9]/2",
  AA: "[f4,a4,c5]@6 [d#4,g4,a#4]@9 ~", // F D#
  AB: "[[f4,a4,c5]@5 ~ [d#4,g4]@9 ~ [d4,f4]@6 [e4,g4,c5]@8 ~@2, ~@6 a#4@15 ~@11]/2", // F D# Dm C
  AC: "[[f4,a4,c5]@5 ~ [d#4,g4]@9 ~ [d4,f4]@6 [e4,g4,c5]@16 ~@10, ~@2 a#4@5 ~@9]/3", // F D# Dm C
})).s("gm_drawbar_organ").gain(0.27).pan(0.7)

// chords · drawbar organ · "ORGAN 1" · soft notes
const drawbar_organ_soft = note(`<
  ~@15 A@3 ~ B C ~@2 D ~ E ~@4 F G ~@2 H ~ I J ~ K ~@5 L ~@5 A@3 ~ B C ~ M D ~ E ~ N ~@2 F O@2 ~ H ~ I J ~ K ~@5 L ~@2 I
  J ~ K ~@5 L ~@5
>`.pickRestart({
  A: "[~@8 [g3,a#3]@4 a#3@3 ~ [a#3,c4]@16 ~ c4@7 c4@3 ~@5, ~@6 g3@17 ~, ~@11 a#3@4 ~]/3", B: "g3, a#3@11 ~@5",
  C: "g3 ~@15", D: "~@8 a#3@3 ~ a#3@2 ~@2", E: "~@12 a#3@3 ~", F: "g4@7 ~@9", G: "~@10 a#3@3 ~@3", H: "~@3 c4 ~@4",
  I: "~@4 c4 ~@11", J: "~ f4@4 ~@11", K: "~@10 e4@3 ~@3", L: "a#4@5 ~@11", M: "~@12 c4 ~@3", N: "~@3 e4",
  O: "[~@10 a#3@2 e4@9 ~@11]/2",
})).s("gm_drawbar_organ").gain(0.11).pan(0.7)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  A@36 B C B D B E F@2 G H G H A@24 B C B D B E F@2 G H G H B C B D B E F@2 G H G H G I@2
>`.pickRestart({
  A: "c2@3 ~ g2@2 c2 ~ a#2 ~ a2 ~ g2 ~ f2 ~", B: "f2@3 ~ f2 ~ f2@3 ~ f2 ~ f2 ~ f2 ~",
  C: "a#1@2 a#1 ~ a#1 ~ c2@3 ~ c2 ~ c2 ~ c2 ~", D: "g2@3 ~ g2 ~ c2@3 ~ c2 ~ c2 ~ c2 ~",
  E: "a#1 ~ a#1 ~ a#1 ~ c2@3 ~ c2@2 ~@2 c2 ~", F: "[d2@27 ~@5]/2", G: "f2@4 ~@2 d#2@5 ~@5", H: "a#1@5 ~ c2@7 ~@3",
  I: "[a#1@5 ~ c2@16 ~@10]/2",
})).s("gm_acoustic_bass").gain(0.38)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~@11 A B A C A D A E F G H I J G J K H I H G J L J M ~ N O@2 P Q R@3 S T S U B A C A D A E V G W I X I Y K X I X G Y L
  Y M ~ N O@2 P Q R@3 S T S U N O@2 P Q R@3 S T S U S Z@2
>`.pickRestart({
  A: "~@4 [g2,e3] ~ [a#2,f3] ~", B: "[c3,g3]@9 ~@7", C: "[c3,g3]@5 ~@3", D: "[c3,g3]@11 ~@5", E: "[c3,g3]",
  F: "~@8 [e4,g4]@2 ~@2 [d4,f4,a#4]@3 ~", G: "[e4,g4,c5]@9 ~@7", H: "~@8 [e4,g4]@3 ~ [d4,f4,a#4]@2 ~@2",
  I: "[e4,g4,c5] ~", J: "~@8 [e4,g4]@3 ~ [d4,f4,a#4]@3 ~", K: "[e4,g4,c5]@3 ~@5", L: "[e4,g4,c5]@5 ~@3",
  M: "[e4,g4,c5]@3 ~", N: "[a3,c4,f4]@2 f3 [a3,c4,f4]@3 f3@2",
  O: "[d4@4 f3 ~ [c4,e4]@6 g3@2 e4 ~ [a3,f4]@4 f3@2 [a3,c4,f4]@6 f3 ~ g3@2, ~@6 g3@5 ~@3 c4@6 ~@12]/2", // C Dm F
  P: "[b3,d4,g4]@4 ~@8 g3@2 e4 ~, ~@2 g3@3 ~@3, ~@3 [c4,e4]@4 ~", Q: "[a3,c4,f4]@5 ~ [a3,c4,f4]@7 ~ f3@2",
  R: "[d4@4 f3 ~ [c4,e4]@5 ~ c4 ~@3 [d4,f4]@28 ~@4, ~@6 g3@6 ~@3 a3@29 ~@4, ~@8 a4@11 ~@5]/3", // C Dm
  S: "[f3,c4]@4 ~@2 [d#3,a#3]@5 ~@5", T: "[a#2,f3]@2 ~ [c3,g3]@3 ~@2", U: "[a#2,f3]@3 ~@3 [c3,g3]@6 ~@4",
  V: "~@8 [e4,g4,c5]@2 ~@2 [d4,f4,a#4]@3 ~", W: "~@4 [e4,g4,c5] ~ [d4,f4,a#4] ~",
  X: "~@8 [e4,g4,c5]@3 ~ [d4,f4,a#4]@2 ~@2", Y: "~@8 [e4,g4,c5]@3 ~ [d4,f4,a#4]@3 ~",
  Z: "[[a#2,f3]@5 ~ [c3,g3]@16 ~@10]/2", // A#5 C5
})).s("gm_electric_guitar_clean").gain(0.33).pan(0.3)

// chords · electric guitar clean · "CLEAN GTR" · soft notes
const electric_guitar_clean_2 = note("<~@36 A B ~@2 C D ~@30 A B ~@2 C D ~@6 A B ~@2 C D ~@9>".pickRestart({
  A: "f3 ~@13 [c4,f4] ~", B: "a#3@5 ~@11", C: "~@4 f3@3 ~@9", D: "a#3@5 ~@7 e4 ~@3",
})).s("gm_electric_guitar_clean").gain(0.16).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~@12 A@23 B C D C D C D E ~@5 A@23 B C D C D C D E ~@5 C D C D C D E ~ F@6 ~
>`.pickRestart({
  A: "x!4", B: "x ~ x ~ x!2 ~@2", C: "x ~@2 x!3 ~ x", D: "x ~@2 x ~ x ~ x", E: "x", F: "x ~@2 x ~@4",
})).gain(0.44)

// drums · snare
const snare = s("sd").struct(`<
  ~@12 A@7 B C D C D C D C D A E A E A E A F G@6 ~@2 H@4 A@7 B C D C D C D C D A E A E A E A F G@6 ~@2 H@3 I G@6 ~@2 H@6
  ~
>`.pickRestart({
  A: "x!4", B: "x ~@8 x!3 ~ x!3", C: "~ x!3", D: "x ~@3 x ~ x!2 ~ x!3 ~ x!3", E: "x!2 ~@2", F: "x ~@3 x ~@7 x!4",
  G: "~ x ~ x", H: "x ~@2 x ~@4", I: "x ~@5 x!3 ~ x ~ x!4",
})).gain(0.38)

// drums · low tom
const low_tom = s("lt").struct("<~@21 A ~ A ~ A ~ A ~ B ~ B ~ B ~@23 A ~ A ~ A ~ A ~ B ~ B ~ B ~@29>".pickRestart({
  A: "~@3 x", B: "~@14 x!2",
})).gain(0.44)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@10 A@2 ~@32 A@4 ~@32 A@4 ~@8 A@5 B ~>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.44)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@19 A ~ B ~ B ~ B ~ B ~ C ~ C ~ C ~@21 A ~ B ~ B ~ B ~ B ~ C ~ C ~ C ~@29
>`.pickRestart({
  A: "~@6 x!3 ~@7", B: "~ x", C: "~@10 x!4 ~@2",
})).gain(0.44)

// drums · open hat
const open_hat = s("oh").struct("<~@35 [~@5 x ~@2] ~@35 [~@5 x ~@2] ~@27>").gain(0.49)

// drums · high tom
const high_tom = s("ht").struct("<~@29 A ~ A ~ A ~@10 B@4 ~@17 A ~ A ~ A ~@10 B@3 C ~@15>".pickRestart({
  A: "~@8 x!2 ~@6", B: "x!8", C: "x!3 ~@5",
})).gain(0.38)

// drums · crash
const crash = s("cr").struct(`<
  ~@19 A B A B A B A B A B A B A B A B A B ~@5 B ~@12 A B A B A B A B A B A B A B A B A B ~@5 B ~@5 B ~@5 B ~@6 C ~
>`.pickRestart({
  A: "~ x ~@2", B: "x", C: "x ~@2 x ~@4",
})).gain(0.44)

// drums · ride
const ride = s("rd").struct(`<
  ~@2 A@2 B@8 C@7 D E D E D E D E D E F E F E F E G E C@5 ~@6 C@7 D E D E D E D E D E F E F E F E G E C@5 ~@6 E C@5 ~@2
  C@5 ~@2
>`.pickRestart({
  A: "x", B: "x ~ x!2", C: "x!8", D: "x!2 ~@6", E: "~ x!7", F: "x!2 ~ x ~@4", G: "x!2 ~ x!2 ~@3",
})).gain(0.33)

stack(
  drawbar_organ, drawbar_organ_soft, bass, electric_guitar_clean, electric_guitar_clean_2, kick, snare, low_tom,
  pedal_hat, mid_tom, open_hat, high_tom, crash, ride
)

More by The Animals