Strudelify

Get Away

Maxx

KeyD minorTempo130 bpm
0:00/0:00
// Get Away — Maxx
// 130 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 124 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/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 · synth bass 2 · "SYN BASS 2"
const bass = note(`<
  ~@4 A B A B 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 ~ A B A B 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 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 B A B
  A B A C
>`.pickRestart({
  A: "d1@2 d2!2 d1@2 d2!2 d1@2 d2!2 d1@2 d2!2", B: "bb0@2 bb1!2 bb0@2 bb1!2 c1@2 c2!2 c1@2 c2!2",
  C: "bb0@2 bb1!2 bb0@2 bb1 ~@9",
})).s("gm_synth_bass_2").gain(0.46)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note("<~@20 A@6 B ~@9 A@6 B ~@17 A@6 B ~@57>".pickRestart({
  A: "[a4@2 bb4 [c4,e4,g4], [d4,f4]@3 ~]/2", B: "[d4,f4,a4]",
})).s("gm_synth_strings_1").gain(0.06)

// other · lead 1 square · "SQUAREWAVE"
const lead_1_square = note(`<
  A B A B A B A B A B A B A B A B A B A B ~@8 A B A B A B A B ~@16 A B A B A B A B ~@16 A B A B A B A B ~@14 A B A B A B
  A B A B A B A B A B A B A B A B A B A C
>`.pickRestart({
  A: "d5 ~ d6 ~ d5 ~ d6 d5 ~ d5 d6 ~ d5 ~ d6 ~", B: "bb4 ~ bb5 ~ bb4 ~ bb5 c5 ~ c5 c6 ~ c5 ~ c6 ~",
  C: "bb4 ~ bb5 ~ bb4 ~ bb5 ~@9",
})).s("gm_lead_1_square").gain(0.18)

// other · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth = note(`<
  ~@8 A B A B A B A B A B A B ~@8 A B A B A B A B ~@8 A B A B A B A B A B A B A B A B ~@8 A B A B A B A B A B A B A B A
  B ~@14 A B A B A B A B A B A B A B A B A B A B A B A B A C
>`.pickRestart({
  A: "d2@2 d3!2 d2@2 d3!2 d2@2 d3!2 d2@2 d3!2", B: "bb1@2 bb2!2 bb1@2 bb2!2 c2@2 c3!2 c2@2 c3!2",
  C: "bb1@2 bb2!2 bb1@2 bb2 ~@9",
})).s("gm_lead_2_sawtooth").gain(0.06).pan(1)

// other · pan flute
const pan_flute = note(`<
  A B A B A B A B A B A B A B A B A B A B ~@8 A B A B A B A B ~@16 A B A B A B A B ~@16 A B A B A B A B ~@14 A B A B A B
  A B A B A B A B A B A B A B A B A B A C
>`.pickRestart({
  A: "d5 ~@3 d5 ~@2 d5 ~ d5 ~@2 d5 ~@3", B: "bb4 ~@3 bb4 ~@2 c5 ~ c5 ~@2 c5 ~@3", C: "bb4 ~@3 bb4 ~@11",
})).s("gm_pan_flute").gain(0.49)

// other · orchestra hit · "ORCH.HIT"
const orchestra_hit = note("<~@84 A B A B A B A B C D C D C ~@27>".pickRestart({
  A: "d4 ~@15", B: "bb3 ~@7 c4 ~@7", C: "[a4,a5] ~@3 [a4,a5] ~@3 [a4,a5] ~@3 [a4,a5] ~ [g4,g5] ~",
  D: "[a4,a5] ~@3 [a4,a5] ~@3 [a4,a5] ~@3 [a4,a5] ~ [bb4,bb5] ~", // A Bb
})).s("gm_orchestra_hit").gain(0.12)

// drums · kick
const kick = s("bd").struct("<~@12 A@15 B A@15 B A@23 B A@16 C@4 A@9 ~ A@25 D>".pickRestart({
  A: "x!4", B: "x ~@2 x ~@2 x ~ x!5 ~ x ~", C: "x!2", D: "x!2 ~@2",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct("<~@11 A ~@7 A ~@15 A ~@15 B ~@7 A ~@15 B ~@7 A ~@7 A ~@4 C ~@8 A ~@18>".pickRestart({
  A: "x!2 ~ x!2 ~ x!2 ~ x!7", B: "x!2 ~ x!2 ~ x!2 ~@2 x!3 ~ x ~", C: "x ~ x ~ x ~ x!2",
})).gain(0.64)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@92 [x ~ x ~ x ~ x!2]!4 ~@28>").gain(0.4)

// drums · china
const china = s("cr").struct("<~@84 A B A B A B A@2 ~@5 A ~@26>".pickRestart({
  A: "x", B: "x!2",
})).gain(0.56)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@12 A@15 ~ A@15 ~ A@23 ~ A@24 ~@2 A@29 B>".pickRestart({
  A: "~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2", B: "~@2 x!2 ~@2 x ~@9",
})).gain(2.03)

// drums · shaker
const shaker = s("sh").struct("<~@12 A@15 ~ A@15 ~ A@23 ~ A@55 B>".pickRestart({
  A: "x!4", B: "x!2 ~@2",
})).gain(0.24)

// drums · jingle bells
const jingle_bells = s("sleighbells:4").struct("<~@12 A@15 B A@15 B A@23 B A@55 C>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "x!16", C: "~ x ~ x ~@4",
})).gain(1.04)

stack(
  bass, synth_strings_1, lead_1_square, lead_2_sawtooth, pan_flute, orchestra_hit, kick, snare, snare_soft, china,
  cabasa, shaker, jingle_bells
)

More by Maxx