Strudelify

Wild Flower

The Cult

KeyB majorTempo135 bpm
0:00/0:00
// Wild Flower — The Cult
// 135 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 119 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 30.
setcpm(135/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 · distortion guitar
const distortion_guitar = note(`<
  A B C D E F@3 G H I J K@3 L@3 M N O@5 P@2 Q R P@2 Q R P@6 S Q P@2 S Q P@2 S T P@2 S U P@2 Q R P@2 Q R P@2 Q R P@2 Q V
  W@8 P@4 X ~ X ~ P@7 Y P@2 Q R P@2 Q R P@2 Q R P@2 Q R P@2 Q R P@2 Q R Z@2
>`.pickRestart({
  A: "~ [b2,f#3,b3]@4 a2@2 [b2,f#3,b3]@2 ~@3 [b2,f#3,b3]@2 ~@2", B: "~ [b2,f#3,b3]@2 a2 [b2,f#3,b3] ~ [b2,f#3,b3] ~",
  C: "~@2 [b2,f#3,b3]@4 ~ a2@2 [b2,f#3,b3]@2 ~@2 [b2,f#3,b3]@2 ~", // B5
  D: "~@3 [b2,f#3,b3]@4 a2@2 [b2,f#3,b3]@2 ~@2 [b2,f#3,b3]@2 ~", E: "~@2 [b2,f#3,b3]@2 a2 [b2,f#3,b3] ~ [b2,f#3,b3]",
  F: "[~@4 [b2,f#3,b3]@4 a2@2 ~ [b2,f#3,b3]@2 ~@2 [b2,f#3,b3]@2 ~@4 [b2,f#3,b3]@4 a2@2 [b2,f#3,b3]@2 ~@2 [b2,f#3,b3]@2 ~@5 [b2,f#3,b3]@4 a2@2 [b2,f#3,b3]@2 ~@2]/3", // B5
  G: "[b2,f#3,b3] ~@2 [b2,f#3,b3]@2 a2 [b2,f#3,b3] ~", H: "~ [b2,f#3,b3]@2 ~@4 [b2,f#3,b3]@4 a2@2 [b2,f#3,b3]@2 ~",
  I: "~ [b2,f#3,b3]@2 ~@4 [d3,a3,d4]@4 ~ a2@2 [d3,a3,d4]@2", J: "~ [d3,a3,d4] ~@2 [e2,b2,e3]@2 e2 [e2,b2,e3]",
  K: "[~@2 [e2,b2,e3]@2 ~@5 [b2,f#3,b3]@4 a2@2 [b2,f#3,b3]@2 ~@2 [b2,f#3,b3]@2 ~@4 [b2,f#3,b3]@4 a2@2 [b2,f#3,b3]@2 ~@3 [b2,f#3,b3]@2 ~@4 [d3,a3,d4]@4 a2@2]/3", // E5 B5 D5
  L: "[[d3,a3,d4]@2 ~@2 [d3,a3,d4]@2 ~@4 [e2,b2,e3]@4 ~ e2@2 [e2,b2,e3]@2 ~@2 [e2,b2,e3]@2 ~@4 [b2,f#3,b3]@4 a2@2 [b2,f#3,b3]@2 ~@2 [b2,f#3,b3]@2 ~@5 [b2,f#3,b3]@4]/3", // D5 E5 B5
  M: "a2 [b2,f#3,b3] ~ [b2,f#3,b3] ~@2 [d3,a3,d4]@2", N: "a2@2 ~ [d3,a3,d4]@2 ~@2 [d3,a3,d4]@2 ~@4 [e3,b3,e4]@3",
  O: "[~ a2@2 [e3,b3,e4]@2 ~@2 [e3,b3,e4]@2 ~@5 [b2,f#3,b3]@4 a2@2 [b2,f#3,b3]@2 ~@2 [b2,f#3,b3]@2 ~@4 [b2,f#3,b3]@4 a2@2 [b2,f#3,b3]@2 ~@3 [b2,f#3,b3]@2 ~@4 [d3,a3,d4]@4 a2@2 [d3,a3,d4]@2 ~@2 [d3,a3,d4]@2 ~@4 [e3,b3,e4]@17]/5", // E5 B5 D5 E5
  P: "[b2,f#3,b3]@2 a2 [b2,f#3,b3] ~ [b2,f#3,b3] ~@2", Q: "[e2,b2,e3]@2 e2 [e2,b2,e3] ~ [e2,b2,e3] ~@2",
  R: "[a2,e3,a3]@2 e2 [a2,e3,a3] ~ [a2,e3,a3] ~@2", S: "[d3,a3,d4]@2 a2 [d3,a3,d4] ~ [d3,a3,d4] ~@2",
  T: "[e3,b3,e4]@2 a2 [e3,b3,e4] ~ [e3,b3,e4] ~@2", U: "[e3,b3,e4]", V: "[a2,e3,a3]",
  W: "[f#2,c#3,f#3]@2 e2 [f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~@2", X: "~ [f#2,c#3] ~@6", Y: "[b2,f#3,b3] ~@7",
  Z: "[b2,f#3,b3]/2", // B5
})).s("gm_distortion_guitar").gain(0.37).pan(0)

// bass · fretless bass
const bass = note(`<
  ~@4 A B@3 C D E F G@3 H@3 I J K L M@3 L@2 N O L@2 N O P@6 Q R P@2 Q R P@2 Q S L@2 T U L@2 N O L@2 N O L@2 N O L@2 N V
  W@8 L@4 X ~ X ~ P@7 Y L@2 N O L@2 N O L@2 N O L@2 N O L@2 N O L@2 N O Z ~
>`.pickRestart({
  A: "~@2 b1@2 a1 b1 ~ b1", B: "[~@4 b1@4 a1@2 ~ b1@2 ~@2 b1@2 ~@4 b1@4 a1@2 b1@2 ~@2 b1@2 ~@5 b1@4 a1@2 b1@2 ~@2]/3",
  C: "b1 ~@2 b1@2 a1 b1 ~", D: "~ b1@2 ~@4 b1@4 a1@2 b1@2 ~", E: "~ b1@2 ~@4 d2@4 ~ a1@2 d2@2", F: "~ d2 ~@2 e1@2 e1!2",
  G: "[~@2 e1@2 ~@5 b1@4 a1@2 b1@2 ~@2 b1@2 ~@4 b1@4 a1@2 b1@2 ~@3 b1@2 ~@4 d2@4 a1@2]/3",
  H: "[d2@2 ~@2 d2@2 ~@4 e1@4 ~ e1@2 e1@2 ~@2 e1@2 ~@4 b1@4 a1@2 b1@2 ~@2 b1@2 ~@5 b1@4]/3", I: "a1 b1 ~ b1 ~@2 d2@2",
  J: "a1@2 ~ d2@2 ~@2 d2@2 ~@4 e2@3", K: "~ a1@2 e2@2 ~@2 e2@2 ~@5 b1@2", L: "b1!8",
  M: "[b1@2 b1@2 b1@2 b1@2 ~ b1@2 b1@2 b1@2 d2@2 d2@2 d2@2 d2@2 d2@2 d2@2 d2@2 d2@2 e2@17]/3", N: "e1!8", O: "a1!8",
  P: "b1@2 a1 b1 ~ b1 ~@2", Q: "d2@2 a1 d2 ~ d2 ~@2", R: "e1@2 e1!2 ~ e1 ~@2", S: "e2@2 a1 e2 ~ e2 ~@2", T: "d2!8",
  U: "e2", V: "a1", W: "f#1!8", X: "~ f#1 ~@6", Y: "b1 ~@7", Z: "b1",
})).s("gm_fretless_bass").gain(0.49)

// chords · distortion guitar · B5
const distortion_guitar_2 = note(`<
  ~@21
  [[b2,f#3]@2 [b2,f#3] ~@3 [b2,f#3] ~@3 [b2,f#3] ~ [b2,f#3]@2 ~@2]
  [[b2,f#3]@2 [b2,f#3] ~@3 [b2,f#3] ~@4 [b2,f#3] ~ [b2,f#3]@2 [b2,f#3]]
  [~ [b2,f#3]@2 [b2,f#3] ~ [b2,f#3]@2 [b2,f#3] ~ [b2,f#3]@2 [b2,f#3] ~ [b2,f#3]@2 ~]
  ~@25
  [~@2 [b2,f#3] ~ [b2,f#3] ~@3 [b2,f#3] ~@3 [b2,f#3] ~ [b2,f#3] ~]!2
  [[b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~]
  ~@67
>`).s("gm_distortion_guitar").gain(0.37).pan(1)

// other · overdriven guitar
const overdriven_guitar = note("<~@69 A B@2 C@6 D@2 E@2 F G ~@35>".pickRestart({
  A: "a4@2 a4 f#4 a4!2 f#4 a4", B: "[a4 f#4 a4!2 f#4 a4!2 f#4@2 a4 f#4 a4 f#4!2 e5 d#5]/2",
  C: "[[a4,c#5]@4 f#4@2 [a4,c#5]@2 [f#4,a4]@12 [a4,d#5]@6 f#4@4 [a4,d#5]@6 f#4@2 [a4,d#5]@2 [a4,d#5]@2 f#4@2 d#5@8 e5 d#5 c#5@2 b4@2 c#5@2 f#4@2 f#4@4 a4@2 f#4@2 a4@2 d#5@2 c#5@8 a5 ~ a5 g5 f#5@2 a5 ~ a5 g5 f#5@2 a5 ~]/6", // A F#m Adim
  D: "[a5 g5 f#5@2 a5 ~ a5 g5 f#5@2 b5@2 b5@6 a5 ~ a5 g5 f#5@2 a5 ~ a5 g5 f#5@2 d5 e5]/2",
  E: "[d5 ~ e5 ~ e5@2 d5 ~ f#4 ~ a4@8 a4@2 a4@2 f#4@2 c#5@2 c#5@2 f#4@2 a4@2, ~@9 c#5@2 ~@5]/2",
  F: "~ a5!2 f#5 c#6!2 f#5 a5", G: "~ a4!2 f#4 c#5!2 f#4 a4, ~ c#5@2 ~@5",
})).s("gm_overdriven_guitar").gain(0.42).pan(1)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A B C D E F G H I J K@2 L M N O P D Q R ~ S T U@3 S@2 U S T@3 S T S@3 T S@3 T S@3 T S V S T U@13 W U T@2 X T@3 Y
  T@4 ~@4 Z T@5 X W U@15 AA U@8 W ~
>`.pickRestart({
  A: "x ~ x ~@4 x", B: "~@6 x ~@8 x", C: "~@7 x ~@7 x", D: "~ x", E: "x ~@2 x ~@4", F: "x ~@8 x ~@6",
  G: "~ x ~@5 x ~@8", H: "~ x ~@2 x ~@3", I: "~@2 x ~@6 x ~@6", J: "~@3 x ~@7 x ~@4", K: "~@2 x ~@2 x ~@2",
  L: "~@5 x ~@5 x ~@4", M: "~@5 x ~@8 x ~", N: "~@3 x ~@2 x ~", O: "~@7 x ~@5 x ~@2", P: "~@7 x ~@6 x ~",
  Q: "x ~@7 x ~@6 x", R: "~ x ~@7 x ~@5 x", S: "x ~@4 x ~@2", T: "~ x ~@3 x ~@2", U: "x!2 ~@3 x ~@2", V: "x!2 ~@14",
  W: "x", X: "~ x ~@3 x!2 ~", Y: "~ x ~ x!2 ~@3", Z: "x ~ x ~@2 x ~@2", AA: "x!2 ~@6",
})).gain(0.64)

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

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@81 [~@3 x ~ x ~ x] [~ x ~ x ~ x ~ x] [~@3 x ~ x ~ x] [~ x ~ x ~ x ~@2] ~@34>")
  .gain(0.64)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@4 A B C D E F G H I C J K L M H N O E K L ~ H@27 ~ H@15 ~ H@4 A P A H Q H@3 ~@4 A H@6 ~ H@15 R H@8 ~@2
>`.pickRestart({
  A: "~@3 x ~ x ~ x", B: "~@2 x ~@3 x ~@3 x ~@4 x", C: "~@3 x ~@3 x ~@3 x ~@3 x", D: "~@3 x ~@4 x ~@3 x ~@3", E: "x!4",
  F: "x ~@4 x ~@3 x ~@3 x ~@2", G: "~ x ~@3 x ~@3 x ~@4 x ~", H: "~ x ~ x ~ x ~ x", I: "~@2 x ~@3 x ~@4 x ~@3 x",
  J: "~ x!3", K: "x ~@3 x ~@3 x ~@4 x ~@2", L: "~ x ~@3 x ~@3 x ~@3 x ~@2", M: "~ x ~@3 x ~@4 x ~@3 x ~",
  N: "~@2 x ~@4 x ~@3 x ~@3 x", O: "~@3 x ~@3 x ~@3 x ~@4", P: "~ x ~ x ~ x ~@2", Q: "~@5 x ~ x", R: "~ x ~ x ~@4",
})).gain(0.64)

// drums · high tom
const high_tom = s("ht").struct("<~@52 [~ x ~@6] ~@66>").gain(0.64)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@3 B ~ C D E ~ F@2 G ~ H I J ~ K@2 ~ L M@7 N ~@3 N ~ N@3 ~ N@3 ~ N@3 ~ N ~ L M@14 N@2 ~@3 O ~ O ~ P ~@7 N ~@6 N
  M@24 N ~
>`.pickRestart({
  A: "~ x ~@2", B: "~@3 x ~@4", C: "~@7 x ~@8", D: "~ x", E: "~@9 x ~@6", F: "~@5 x ~@2", G: "~@11 x ~@4", H: "~@3 x",
  I: "~@13 x ~@2", J: "~@7 x", K: "~@15 x", L: "x ~ x ~ x!3 ~ x!3 ~ x!3 ~", M: "x!3 ~ x!3 ~ x!3 ~ x!3 ~", N: "x",
  O: "~ x ~@6", P: "~ x ~ x ~@4",
})).gain(0.4)

stack(
  distortion_guitar, bass, distortion_guitar_2, overdriven_guitar, kick, snare, pedal_hat, open_hat, high_tom, crash
)

More by The Cult