Strudelify

World in Your Hands

Culture Beat

KeyD minorTempo120 bpm
0:00/0:00
// World in Your Hands — Culture Beat
// 120 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 110 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · fretless bass · "FRETLESS"
const bass = note("<~@9 A@7 ~ A@35 ~ A@4 ~@2 A@6 ~@20 A@24 ~>".pickRestart({
  A: "d2!16",
})).s("gm_fretless_bass").gain(0.54)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  ~ A@2 B@2 A@2 B@2 A@2 B@2 A@2 C ~@9 A@2 B@2 A@2 C ~@5 D@2 E@2 D@2 E@2 D@2 E@2 D@2 F ~@17 A@2 B@2 A@2 B@2 A@2 B@2 A@2
  B@2 D@2 E@2 D@2 E@2 D@2 E@2 D@2 E@2 D@2 E@2 D@2 E@2 ~
>`.pickRestart({
  A: "[g4,bb4,d5]/2", B: "[f4,a4,d5]/2", C: "[f4,a4,d5]", D: "[bb5@7 c6, [g4,bb4,d5]]/2", E: "[f4,a4,d5,a5]/2",
  F: "[f4,a4,d5,a5]", // Dm
})).s("gm_string_ensemble_2").gain(0.24)

// other · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth = note(`<
  ~@9 A B A B A B A C ~@16 A B A B A B A B A B A B A B A B A B A C ~@40 A B A B A B A B A B A B A B A B D
>`.pickRestart({
  A: "[d5,d6]!5 ~ [d5,d6]!2 ~ [d5,d6]!2 [eb5,eb6] [d5,d6] [eb5,eb6] [d5,d6] [eb5,eb6]", // D Eb D Eb D Eb
  B: "[d5,d6]!5 ~ [d5,d6]!2 ~ [d5,d6]!2 [c5,c6] [d5,d6] [c5,c6] [d5,d6] [c5,c6]", // D C D C D C
  C: "~ [d5,d6] [eb5,eb6] ~ [d5,d6] [eb5,eb6] ~ [d5,d6] [eb5,eb6] ~ [d5,d6] [eb5,eb6] ~ d5 eb5 ~", // D Eb D Eb D Eb D Eb
  D: "d5 ~ c5 d5 ~ c5 d5 ~ c5 d5 ~ c5 d5 ~ c5 d5",
})).s("gm_lead_2_sawtooth").gain(0.42)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@69 A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D ~
>`.pickRestart({
  A: "g4 ~@5 g4 ~@5 g4 ~@3", B: "~@2 g4 ~@5 g4 ~@5 g4 ~", C: "d4 ~@5 d4 ~@5 d4 ~@3", D: "~@2 d4 ~@5 d4 ~@5 d4 ~",
})).s("gm_string_ensemble_1").gain(0.54)

// chords · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft = note(`<
  ~@69 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 B@2 A@2 B@2 ~@5
>`.pickRestart({
  A: "eb2/2", B: "[bb1@31 ~]/2",
})).s("gm_string_ensemble_1").gain(0.3)

// drums · rim
const rim = s("rim").struct("<~@16 A B@15 ~ B@19 A B@16 ~@8 C@16 D@16 ~>".pickRestart({
  A: "~@7 x", B: "~ x ~ x ~ x ~ x", C: "x ~@6 x ~@4 x ~@2 x", D: "x ~ x ~@3 x!2 ~@2 x ~ x ~ x!2",
})).gain(0.48)

// drums · rim · soft notes
const rim_soft = s("rim").struct("<~@77 [~@6 x ~@2 x ~@4 x ~]!32 ~>").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~@16 A B@15 C B@19 A B@12 C@4 ~@12 C@12 B@12 ~@5>".pickRestart({
  A: "~@7 x ~@8", B: "x ~@2 x ~@2 x!3 ~@2 x ~@2 x!2", C: "x ~@5 x!2 ~ x ~ x ~@2 x ~",
})).gain(0.6)

// drums · clap
const clap = s("cp").struct("<~@16 [~@3 x] ~@35 [~@3 x] ~@57>").gain(0.3)

// drums · snare
const snare = s("sd").struct("<~@17 A@15 ~ A@19 ~ A@12 ~@27 B A@12 ~@5>".pickRestart({
  A: "~@4 x ~@4 x ~@2 x ~@3", B: "x!4 ~@3 x!9",
})).gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<~@13 A@3 B A@15 B A@19 B A@16 B ~@7 A@32 B>".pickRestart({
  A: "x!16", B: "x",
})).gain(0.42)

// drums · crash
const crash = s("cr").struct(`<
  ~@17 A B A B A B A B A B A B A B A ~ A B A B A B A B A B A B A B A B A B A ~ A B A B A B A B A B A B A B A B ~@8 C B C
  B C B C B C B C B C B C B A B A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "x ~@2 x", B: "~@3 x", C: "x",
})).gain(0.3)

// drums · tambourine
const tambourine = s("tb").struct("<~@5 [x!16]!11 ~@17 [x!16]!19 ~@21 [x!16]!32 ~@5>").gain(0.3)

// drums · agogo bells
const agogo_bells = s("agogo:4").struct("<~@17 [x!16]!15 ~@21 [x!16]!12 ~@45>").gain(1.15)

// drums · claves
const claves = s("clave:2").struct("<~@17 A@15 ~ A@19 ~ A@12 ~@28 A@12 ~@5>".pickRestart({
  A: "~ x ~@3 x ~@2",
})).gain(1.76)

stack(
  bass, string_ensemble_2, lead_2_sawtooth, string_ensemble_1, string_ensemble_1_soft, rim, rim_soft, kick, clap, snare,
  hihat, crash, tambourine, agogo_bells, claves
)

More by Culture Beat