Strudelify

Anything

Culture Beat

KeyA minorTempo143 bpm
0:00/0:00
// Anything — Culture Beat
// 143 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 189 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(143/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · synth bass 2 · "SYN BASS 2"
const bass = note(`<
  ~@8 A B C D E F C D A B C D E F C D A B C D E F C ~ A B C D E F C G A B C D E F C G A B C D E F C ~ A B C D E F C G A
  B C D E F C G A B C D E F C ~ A B C D E F C D A B C D E F C D A B C D E F C ~ A B C D E F C D A B C D E F C D A B C D
  E F C D A B C D E F C ~@13 A B C D E F C G A B C D E F C D A B C D E F C D A B C D E F C D A B C D E F C ~@2
>`.pickRestart({
  A: "a1 a2 a1 a2 a1 a2 a1 a2", B: "a1@2 a2@2 a1@2 a2@2 a1@2 a2@2 a1@2 a2!2", C: "f1 f2 f1 f2 f1 f2 f1 f2",
  D: "f1@2 f2@2 f1@2 f2@2 f1@2 f2@2 f1@2 f2!2", E: "a1@2 a2@2 a1 ~ a2@2 a1@2 a2@2 a1@2 a2@2",
  F: "a1@2 a2@2 a1 ~ a2@2 a1@2 a2@2 a1@2 a2!2", G: "f1@2 f2@2 f1 ~ f2@2 f1@2 f2@2 f1@2 f2!2",
})).s("gm_synth_bass_2").gain(0.4)

// other · pad halo · "HALO PAD"
const pad_halo = note(`<
  ~@88 A@2 B@2 A@2 B@2 A@2 B@2 A@2 C@2 ~@52 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 D@2 ~
>`.pickRestart({
  A: "[a3@7 c4]/2", B: "[c4@7 g3]/2", C: "[[c4,a4]@7 ~]/2", D: "[c4@7 ~]/2",
})).s("gm_pad_halo").gain(0.18)

// other · pad halo · "HALO PAD" · soft notes
const pad_halo_soft = note(`<
  ~@104 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 C@2 D@4 ~@49
>`.pickRestart({
  A: "[a3@7 c4]/2", B: "[c4@7 g3]/2", C: "c4/2", D: "a3/2",
})).s("gm_pad_halo").gain(0.05)

// other · vibraphone
const vibraphone = note(`<
  ~@39 A B C D E F G H I J C H K L M N O ~@23 P ~@7 A B C D E B C D E Q C H R S T N O ~@51 U B C D E B C D E Q C H R S T
  N U B C D E B C D E Q C H R S T N O ~
>`.pickRestart({
  A: "~@14 g4 ~", B: "g4@2 a4@2 a4@3 ~ g4@3 ~ g4@2 g4@2", C: "f#4 ~ f#4@3 ~ g4@5 ~ g4 ~ g4 ~",
  D: "a4@3 ~ a4@3 ~ g4@3 ~ g4 ~ g4 ~", E: "f#4 ~ f#4@2 f#4 ~ g4@6 g4 ~ g4 ~", F: "a4@2 ~@2 a4@3 ~ c5@2 ~@2 c5@2 c5 ~",
  G: "f#4 ~ f#4@2 f#4 ~ g4@3 ~@3 g4 ~ g4@2", H: "a4@3 ~ a4@3 ~ c5@3 ~ c5 ~ c5 ~", I: "f#4 ~ f#4@3 ~ g4@4 ~@2 g4 ~ g4 ~",
  J: "a4@3 ~ a4@3 ~ c5@3 ~ c5@2 c5@2", K: "f#4 ~ f#4@2 f#4 ~ g4@4 ~@6", L: "a4@2 ~@2 a4@3 ~ c5@2 ~@2 c5@2 ~@2",
  M: "f#4@2 ~@2 f#4 ~ g4@3 ~@3 g4 ~ g4@2", N: "a4@3 ~ a4@3 ~ c5@6 ~@2", O: "g4@2 f#4@2 g4@2 f#4@2 g4@2 a4@5 ~",
  P: "a4!6 a4@2 a4!2 a4@4 ~@2", Q: "a4@2 ~@2 a4@3 ~ c5@3 ~ c5@2 c5@2", R: "f#4 ~ f#4@2 f#4 ~ g4@6 ~@4",
  S: "a4@2 ~@2 a4@3 ~ c5@3 ~ c5@2 ~@2", T: "f#4@3 ~ f#4@3 ~ g4@3 ~ g4 ~ g4 ~", U: "~@7 g4",
})).s("gm_vibraphone").gain(0.22)

// other · pad poly · "POLYSYNTH"
const pad_poly = note(`<
  ~@112 A B A B A B A B A B A B A B A B A B A B A B A C D ~@19 E F G H E F G H E F G H E F G H E F G H E F G H E F G H E
  F G ~@2
>`.pickRestart({
  A: "a3 e4 a3!2 e4 a3!2 d4 a3!2 d4 a3 d4 a3 d4 a3", B: "a3 c4 a3!2 c4 a3!2 b3 a3!2 b3 a3 g3 a3 g3 a3",
  C: "a3 c4 a3 [a3,c4]!4 [a3,b3] [a3,c4] [a3,b3]!3 [g3,a3,b3] a3 [g3,b3] a3", D: "g3 a3 g3 a3 ~@12",
  E: "a2 a3 a2 a3 a2 a3 a2 a3", F: "a2 a3 a2 a3 a2 a3 c3 c4", G: "f2 f3 f2 f3 f2 f3 f2 f3",
  H: "f2 f3 f2 f3 f2 f3 g2 g3",
})).s("gm_pad_poly").gain(0.16)

// other · whistle
const whistle = note("<~@16 A@15 ~ A@23 ~ A@23 ~ A@23 ~ A@31 ~ A@4 ~@8 A@7 ~ A@24 ~@9>".pickRestart({
  A: "f#7 ~@7",
})).s("gm_whistle").gain(0.15).pan(0.7)

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

// drums · rim
const rim = s("rim").struct("<~@16 A@15 ~ A@23 ~ A@23 ~ A@23 ~ A@31 ~ A@4 ~@8 A@7 ~ A@24 ~@9>".pickRestart({
  A: "~ x ~ x",
})).gain(0.36)

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

// drums · clap
const clap = s("cp").struct(`<
  ~@80 A B A C A B A C A B A C A B A C A B A C A B A ~ D E D F D E D F D E D F D E D F D E D F D E D F D E D F D E D ~ D
  E D F D E D ~@13 A B A C A B A C A B A C A B A C A B A C A B A C ~@9
>`.pickRestart({
  A: "x ~ x ~ x ~@2 x ~ x!2 ~ x ~@3", B: "x ~ x ~ x ~@2 x ~ x!2 ~ x ~ x!2", C: "x ~ x ~ x ~ x!2 ~ x!2 ~ x ~ x!2",
  D: "x ~ x ~ x ~@2 x ~@2 x ~ x ~@3", E: "x ~ x ~ x ~@2 x ~@2 x ~ x ~ x ~", F: "x ~ x ~ x ~ x!2 ~ x!2 ~ x ~ x ~",
})).gain(0.26)

// drums · clap · soft notes
const clap_soft = s("cp").struct(`<
  ~@104 A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A ~ A B A C A B A ~@46
>`.pickRestart({
  A: "~@9 x ~@6", B: "~@9 x ~@5 x", C: "~@15 x",
})).gain(0.1)

// drums · hihat
const hihat = s("hh").struct("<~@8 A@16 B@7 ~ B@23 ~ B@23 ~ B@23 ~ B@31 ~ B@19 ~ B@23 A C@8 ~>".pickRestart({
  A: "x!2 ~ x!3 ~ x!3 ~ x!3 ~ x", B: "~ x ~ x ~ x ~ x!3 ~ x ~ x ~ x", C: "x!16",
})).gain(0.26)

// drums · open hat
const open_hat = s("oh").struct("<~@8 A@23 ~ A@23 ~ A@23 ~ A@23 ~ A@31 ~ A@19 ~ A@24 ~@9>".pickRestart({
  A: "~ x ~ x ~ x ~ x",
})).gain(0.31)

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

// drums · tambourine
const tambourine = s("tb").struct("<~@24 A@7 ~ A@23 ~ A@23 ~ A@23 ~@33 A@19 ~ A@24 ~@9>".pickRestart({
  A: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2",
})).gain(0.31)

stack(
  bass, pad_halo, pad_halo_soft, vibraphone, pad_poly, whistle, kick, rim, snare, clap, clap_soft, hihat, open_hat,
  crash, tambourine
)

More by Culture Beat