Strudelify

It Takes Me Away

Marusha

KeyB♭ majorTempo154 bpm
0:00/0:00
// It Takes Me Away — Marusha
// 154 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 122 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(154/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(`<
  ~@8 A B C D A B C D A B C D A B C D ~@8 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 I E F G H E F G
  H ~@16 E F G H E F G H E F G H E F G H ~@4 E F G H E F G H E F G H ~@2
>`.pickRestart({
  A: "bb1@2 ~@2 bb1@2 ~@2 bb1 ~ bb1 ~ bb1@3 ~", B: "a1@3 ~ a1@2 ~@2 a1 ~ a1 ~ a1@3 ~",
  C: "g1@3 ~ g1@3 ~ g1 ~ g1 ~ g1@2 ~@2", D: "f1@3 ~ f1@2 ~@2 f1 ~ f1@2 f1@2 ~@2",
  E: "bb1@2 ~@2 bb1@2 ~ bb1 ~@2 bb1@2 ~ bb1 ~@2", F: "a1@2 ~@2 a1@2 ~ a1 ~@2 a1@2 ~ a1 ~@2",
  G: "g1@2 ~@2 g1@2 ~ g1 ~@2 g1@2 ~ g1 ~@2", H: "eb1@2 ~@2 eb1@2 ~ eb1 ~@2 eb1@2 ~ eb1 ~@2", I: "~@10 eb1@2 ~ eb1 ~@2",
})).s("gm_fretless_bass").gain(0.44)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  ~@24 A@16 ~@16 B C D E B C D E ~@8 A@16 F G H I F G H J F@2 H K F@2 H K A@16 ~@2
>`.pickRestart({
  A: "[[bb2,bb3,bb4,f5]@16 [a2,a3,a4]@15 [d5,f5] g2@15 ~ [eb2,eb3,g4,bb4,eb5]@16, [d4,d5]@32 d4 ~@14 eb4@16 ~, ~@16 f5 ~@14 [g3,g4,bb4]@16 ~@17]/4", // Bb5 A Dm Eb D Gm
  B: "[bb5,d6,f6] ~@7", C: "[a5,d6,f6] ~@7", D: "[g5,bb5,d6,f6] ~@7", E: "[g5,eb6] ~@7, bb5 ~@15", F: "[f5,f6]@15 ~",
  G: "[f5,f6]@7 ~", H: "[f5,f6]", I: "[f5,f6] [g5,g6]", J: "[f5,f6] [bb5,bb6]", K: "[g5,g6] [f5,f6] [g5,g6]@2",
})).s("gm_synth_strings_1").gain(0.08).pan(1)

// chords · harpsichord · "HARPSICHRD"
const harpsichord = note(`<
  ~@8 A B C D A B C D A B C D A B C D ~@64 A B C D A B C D A B C D A B C D A B C D ~@14
>`.pickRestart({
  A: "[bb3,d4,f4,bb4,d5,f5]", B: "[a3,a4,d5,f5], [d4,f4] ~@15", C: "[g3,bb3,d4,f4,g4,bb4,d5,f5]",
  D: "[g3,bb3,eb4,g4,bb4,eb5,g5]", // Eb
})).s("gm_harpsichord").gain(0.11).pan(0.6)

// other · celesta
const celesta = note(`<
  ~@24 A B C D A B C D A B C D A B C D ~@8 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 ~@20 A B C D A B C D A B C D ~ E
>`.pickRestart({
  A: "bb5 ~ d6 ~ f6 ~ f5 ~", B: "a5 ~ d6 ~ f6 ~ f5 ~", C: "g5 ~ d6 ~ f6 ~ d5 ~", D: "eb5 ~ g5 ~ eb6 ~ d6 ~",
  E: "bb5 ~@3",
})).s("gm_celesta").gain(0.05)

// chords · piano · "A.PIANO 2"
const piano = note(`<
  ~@32 A B C D A B C D A B C D A B C D A B C D A B C D E F G H E F G H A B C D A B C D ~@20 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 ~@2
>`.pickRestart({
  A: "bb2@2 [bb3,d4,f4]@2 bb2 [bb2,bb3,f4] ~ bb2 [bb3,d4,f4]@2 bb2 [bb3,d4,f4]@2 bb2 [bb3,d4,f4]@2, ~@5 d4@2 ~@9", // Bb Bb5 Bb
  B: "a2@2 [a3,d4,f4]@2 a2 [a3,d4,f4]@2 a2 [a3,d4,f4]@2 a2 [a3,d4,f4]@2 a2 [a3,d4,f4]@2", // Dm
  C: "g2@2 [bb3,d4,f4]@2 g2 [bb3,d4,f4]@2 g2 [bb3,d4,f4]@2 g2 [bb3,d4,f4]@2 g2 [bb3,d4,f4]@2", // Bb
  D: "eb2@2 [g3,bb3,eb4]@2 eb2 [g3,bb3,eb4]@2 eb2 [g3,bb3,eb4]@2 eb2 [g3,bb3,eb4]@2 eb2 [g3,bb3,eb4]@2", // Eb
  E: "~@8 [bb3,d4,f4] bb2 ~ [bb3,d4,f4] bb2@2 [bb3,d4,f4] ~", F: "~@8 [a3,d4,f4] a2 ~ [a3,d4,f4] a2@2 [a3,d4,f4] ~",
  G: "~@8 [g3,bb3,d4,f4] g2 ~ [g3,bb3,d4,f4] g2@2 [g3,bb3,d4,f4] ~", // Gm7
  H: "~@8 [g3,bb3,eb4] eb2 ~ [g3,bb3,eb4] eb2 ~ [g3,bb3,eb4] ~", // Eb
})).s("gm_piano").gain(0.21)

// other · celesta
const celesta_2 = note(`<
  ~@24 A B C D A B C D ~@16 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 ~@20 A B C D
  A B C D A B C D ~ E
>`.pickRestart({
  A: "bb6 d7 f7 f6", B: "a6 d7 f7 f6", C: "g6 d7 f7 d6", D: "eb6@4 g6@4 eb7@4 d7@3 ~", E: "bb6 ~@15",
})).s("gm_celesta").gain(0.25)

// other · tenor sax
const tenor_sax = note("<~@76 [d6@13 ~ f6 ~]!11 [d6@13 ~@3] ~@34>").s("gm_tenor_sax").gain(0.34).pan(0.8)

// drums · kick
const kick = s("bd").struct("<A@24 ~@16 A@23 ~ A@8 ~@16 A@7 ~ A@8 ~@4 A@8 ~@6>".pickRestart({
  A: "x!2 ~ x!3 ~@2",
})).gain(0.56)

// drums · snare
const snare = s("sd").struct("<A@24 ~@16 A@23 ~ A@8 ~@16 A@7 ~ A@8 ~@4 A@8 ~@6>".pickRestart({
  A: "~@4 x ~@2 x ~ x ~@2 x ~ x ~",
})).gain(0.56)

// drums · clap
const clap = s("cp").struct("<~@36 A B ~ C ~@44 A B ~ C ~@34>".pickRestart({
  A: "x!16", B: "x!7 ~@9", C: "~@4 x!12",
})).gain(0.24)

// drums · clap · soft notes
const clap_soft = s("cp").struct("<~@37 A ~ B ~@45 A ~ B ~@34>".pickRestart({
  A: "~@7 x!9", B: "x!4 ~@12",
})).gain(0.08)

// drums · hihat
const hihat = s("hh").struct("<~@24 A B ~@5 C D E ~@6 F@23 ~ F@8 A B ~@18 F@3 ~ F@20 ~@6>".pickRestart({
  A: "x!2 ~ x!2 ~@2 x!3 ~@2 x!2 ~ x", B: "x!2 ~ x!3 ~ x!3 ~@2 x!2 ~ x", C: "~@12 x!2 ~ x",
  D: "x ~@2 x!3 ~@2 x!2 ~ x!3 ~ x", E: "x!2 ~ x!3 ~@2 x!2 ~ x ~@4", F: "x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2",
})).gain(0.32)

// drums · open hat
const open_hat = s("oh").struct("<~@24 A B ~@6 C D ~@6 E@23 ~ E@8 A B ~@18 E@3 ~ E@20 ~@6>".pickRestart({
  A: "~@5 x ~@5 x ~@4", B: "~@11 x ~@4", C: "~ x ~@5 x ~@8", D: "~@7 x ~@8", E: "~ x ~ x ~ x ~ x",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct("<~@38 [x!4]!2 x ~@45 [x!4]!2 x ~@33>").gain(0.48)

// drums · lt
const lt = s("lt").struct("<~@4 A@3 ~ A@16 ~@16 A@23 ~ A@8 ~@16 A@7 ~ A@20 ~@6>".pickRestart({
  A: "x!4",
})).gain(0.72)

stack(
  bass, synth_strings_1, harpsichord, celesta, piano, celesta_2, tenor_sax, kick, snare, clap, clap_soft, hihat,
  open_hat, crash, lt
)

More by Marusha