Strudelify

Pyke the Bloodharbor Ripper

Edouard BrenneisenRiot Games

KeyF majorTempo152 bpm
0:00/0:00
// Pyke the Bloodharbor Ripper — Edouard BrenneisenRiot Games
// 152 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 14 "Piano" named as a piano, played on piano (its pizzicato strings patch is not one); ch 8 "Piano" named as a piano, played on piano (its pizzicato strings patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5946422; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 51 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(152/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 · piano
const piano = note(`<
  ~ A B A C A B A D A B A C A B A D E F E G A B A H E F E G A B A H I@2 J@2 K@2 L@2 I@2 M@2 N@2 O P ~@2
>`.pickRestart({
  A: "~@3 g4, d4, ~ f4@3, ~ e4", B: "~@3 ab4, d4, ~ f4@3, ~ e4", C: "~@3 a3, e4, ~ f4@3, ~ db4",
  D: "~@3 a4, db5, ~ bb4@3, ~ g4", E: "[a3,d4]!2 ~@2 [a3,f4]!2 ~@2", F: "[bb3,d4,e4] [a3,d4,g4]",
  G: "[bb3,d4,e4] [bb3,eb4,ab4]", H: "~@3 d4, e4, ~ f4@3, ~ db4", I: "[[a3,a4]@23 ~ [g3,g4]@4 [e3,e4]@2 [f3,f4]@2]/2",
  J: "[[db3,db4]@23 ~ [f3,f4]@8]/2", K: "[[e3,e4]@23 ~ [e3,e4]@4 [d3,d4]@2 [bb2,bb3]@2]/2",
  L: "[[a2,a3]@23 ~ [g3,g4]@8]/2", M: "[[bb3,bb4]@11 ~ [a3,a4]@11 ~ [g3,g4]@8]/2",
  N: "[[f3,f4]@19 ~ [e3,e4]@8 [d3,d4]@4]/2", O: "[g3,g4]@15 ~", P: "[f3,f4] [e3,e4]",
})).s("gm_piano").gain(0.4)

// chords · piano
const piano_2 = note("<~ A B A C A B A D A B A C A B A D E F E F G H G I E F E F G H G I ~@18>".pickRestart({
  A: "~@3 g4, d4, ~ f4@3, ~ e4", B: "~@3 ab4, d4, ~ f4@3, ~ e4", C: "~@3 a3, e4, ~ f4@3, ~ db4",
  D: "~@3 a4, db5, ~ bb4@3, ~ g4", E: "[d2,d3]!2 ~@2 [d2,d3]!2 ~@2", F: "[d2,d3]@4 [d2,d3]!4",
  G: "~@3 g3, d3, ~ f3@3, ~ e3", H: "~@3 ab3, d3, ~ f3@3, ~ e3", I: "~@3 d3, e3, ~ f3@3, ~ db3",
})).s("gm_piano").gain(0.4)

// chords · piano · soft notes
const piano_soft = note("<~ A B A C A B A D A B A C A B A D ~@34>".pickRestart({
  A: "~@3 g3, d3, ~ f3@3, ~ e3", B: "~@3 ab3, d3, ~ f3@3, ~ e3", C: "~@3 a2, e3, ~ f3@3, ~ db3",
  D: "~@3 a3, db4, ~ bb3@3, ~ g3",
})).s("gm_piano").gain(0.2)

// other · pizzicato strings · "Violín"
const pizzicato_strings = note(`<
  ~@13 A B A C D E D F ~@2 G ~ D E D F ~ H I J K@2 L@2 M@2 N@2 K@2 O@2 P@2 Q R S@2
>`.pickRestart({
  A: "d4 f4 e4 d4 f4 d4 e4 d4 e4 f4 e4 d4 g4 f4 e4 f4", B: "d4 f4 e4 d4 f4 d4 e4 d4 e4 f4 e4 d4 ab4 f4 e4 f4",
  C: "db5 ~@3 bb4 ~@3 g4 ~@3 a4 ~@3", D: "d4 ~ d4 ~@5 f4 ~ f4 ~@5", E: "e4@5 ~@3 g4@8", F: "e4@5 ~@3 ab4@8", G: "c6",
  H: "~@14 d4 ~", I: "d5@3 ~@3 d5 ~ c5@3 ~@3 a4 ~", J: "bb4@3 ~@3 g4 ~ ab4@8", K: "[a4@12 g4@2 e4 f4]/2",
  L: "[db4@3 f4]/2", M: "[e4@12 e4@2 d4 bb3]/2", N: "[a3@3 g4]/2", O: "[bb4@3 a4@3 g4@2]/2", P: "[f4@5 e4@2 d4]/2",
  Q: "g4", R: "f4 e4", S: "[ab4@2 a4@5 ~]/2",
})).s("gm_pizzicato_strings").gain(0.45)

// other · tremolo strings · "Violín"
const tremolo_strings = note(`<
  ~@13 A B A C D E D F ~@2 G@2 D E D F ~ H I J K@2 L@2 M@2 N O P@2 Q R S T S U ~@2
>`.pickRestart({
  A: "d4 f4 e4 d4 f4 d4 e4 d4 e4 f4 e4 d4 g4 f4 e4 f4", B: "d4 f4 e4 d4 f4 d4 e4 d4 e4 f4 e4 d4 ab4 f4 e4 f4",
  C: "db5 f4 e4 db4 bb4 g4 f4 e4 g4 f4 e4 db4 a4 g4 f4 e4", D: "d4 ~ d4 ~@5 f4 ~ f4 ~@5", E: "d4@5 ~@3 d4@8",
  F: "d4@5 ~@3 eb4@8", G: "b5/2", H: "~@14 d4 ~", I: "d5@3 ~@3 d5 ~ c5@3 ~@3 a4 ~", J: "bb4@3 ~@3 g4 ~ ab4@8",
  K: "d5 ~@3 d5 ~@3 d5 ~@3 d5 ~@3", L: "db5 ~@3 db5 ~@3 db5 ~@3 db5 ~@3", M: "c5 ~@3 c5 ~@3 c5 ~@3 c5 ~@3",
  N: "b4 ~@3 b4 ~@3 bb4 ~ c5 ~ d5 ~@3", O: "d5 ~@3 d5 ~@3 c5 ~@3 c5 ~@3", P: "c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~",
  Q: "bb4 ~ bb4 ~ bb4 ~ bb4 ~ bb4 ~ bb4 ~ a4 ~ a4 ~", R: "a4 ~ a4 ~ a4 ~ a4 ~ g4 ~ g4 ~ g4 ~ g4 ~",
  S: "f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~", T: "f4 ~ f4 ~ e4 ~ e4 ~ e4 ~ e4 ~ d4 ~ d4 ~",
  U: "f4 ~ f4 ~ f4 ~ f4 ~ e4 ~ e4 ~ e4 ~ e4 ~",
})).s("gm_tremolo_strings").gain(0.45)

// other · tremolo strings · "Violín"
const tremolo_strings_2 = note(`<
  ~@17 A B A B ~@2 C ~ A D A B ~ E F G H@2 I@2 H@2 J K L@2 M N O P O Q ~@2
>`.pickRestart({
  A: "d4 ~ d4 ~@5 f4 ~ f4 ~@5", B: "bb3@5 ~@3 bb3@8", C: "a5", D: "bb3@5 ~@3 a3@8", E: "~@14 d4 ~",
  F: "d4@3 ~@3 d4 ~ c4@3 ~@3 a3 ~", G: "bb3@3 ~@3 g3 ~ ab3@8", H: "a4 ~@3 a4 ~@3 a4 ~@3 a4 ~@3",
  I: "ab4 ~@3 ab4 ~@3 ab4 ~@3 ab4 ~@3", J: "c5 ~@3 c5 ~@3 bb4 ~ c5 ~ d5 ~@3", K: "a4 ~@3 a4 ~@3 g4 ~@3 g4 ~@3",
  L: "a4 ~ a4 ~ a4 ~ a4 ~ a4 ~ a4 ~ a4 ~ a4 ~", M: "f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ e4 ~ e4 ~",
  N: "e4 ~ e4 ~ e4 ~ e4 ~ d4 ~ d4 ~ d4 ~ d4 ~", O: "c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~",
  P: "c4 ~ c4 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ a3 ~ a3 ~", Q: "c4 ~ c4 ~ c4 ~@11",
})).s("gm_tremolo_strings").gain(0.4)

// other · tremolo strings · "Violín" · soft notes
const tremolo_strings_soft = note("<~@9 A@8 ~@31 B ~@2>".pickRestart({
  A: "[a5,d6]/8", B: "~@6 c4 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~",
})).s("gm_tremolo_strings").gain(0.1)

// other · tremolo strings
const tremolo_strings_3 = note(`<
  ~@17 A B A B C D C E A B A B C D C E F@2 G@2 H@2 I@2 F@2 J@2 K@2 L M N@2
>`.pickRestart({
  A: "a3 ~ a3 ~@5 a3 ~ a3 ~@5", B: "a3@11 ~@5", C: "d3 f3 e3 g3", D: "d3 f3 e3 ab3", E: "e3 f3 db3 e3",
  F: "[a3@12 g3@2 e3 f3]/2", G: "[db3@3 f3]/2", H: "[e3@12 e4@2 d4 bb3]/2", I: "[a3@3 g3]/2", J: "[bb3@3 a3@3 g3@2]/2",
  K: "[f3@5 e3@2 d3]/2", L: "g3", M: "f3 e3", N: "[ab3@2 a3@5 ~]/2",
})).s("gm_tremolo_strings").gain(0.4)

// other · cello · "Violonchelo"
const cello = note("<~@9 A@8 B C B C D@4 B C B C D@4 E@2 F@2 G@2 H@2 I@2 J@2 K@2 L M N@2>".pickRestart({
  A: "d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~", B: "d3 ~ d3 ~@5 d3 ~ d3 ~@5", C: "d3@5 ~@3 d3 ~ d3 ~ d3 ~ d3 ~",
  D: "d3/4", E: "[a3@12 g3@2 e3 f3]/2", F: "[db3@3 f3]/2", G: "[e3@12 e3@2 d3 bb2]/2", H: "[a2@3 g2]/2",
  I: "[a2@12 g2@2 e2 f2]/2", J: "[bb2@3 a2@3 g2@2]/2", K: "[f2@5 e2@2 d2]/2", L: "g2", M: "f2 e2",
  N: "[ab2@2 a2@5 ~]/2",
})).s("gm_cello").gain(0.4)

// other · cello · "Violonchelo" · soft notes
const cello_soft = note("<~ [d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~]!8 ~@42>").s("gm_cello").gain(0.25)

// bass · acoustic bass · "Violonchelo"
const bass = note("<~@17 A B A B ~@4 A B A B ~@4 C D E F G H I J G H K L I M N O ~@2>".pickRestart({
  A: "d3 ~ d3 ~@5 d3 ~ d3 ~@5", B: "d3@5 ~@3 d3 ~ d3 ~ d3 ~ d3 ~", C: "d3@2 ~@2 d3@2 ~@2 d3@2 ~@2 d3 ~ d3 ~",
  D: "d3 ~ d3 ~ d3 ~ d3 ~", E: "db3@2 ~@2 db3@2 ~@2 db3@2 ~@2 db3 ~ db3 ~", F: "db3 ~ db3 ~ db3 ~ db3 ~",
  G: "a2@2 ~@2 a2@2 ~@2 a2@2 ~@2 a2 ~ a2 ~", H: "a2 ~ a2 ~ a2 ~ a2 ~", I: "f2@2 ~@2 f2@2 ~@2 f2@2 ~@2 f2 ~ f2 ~",
  J: "f2 ~ f2 ~ e2 ~ e2 ~", K: "bb2@2 ~@2 bb2@2 ~@2 bb2@2 ~@2 bb2 ~ bb2 ~", L: "bb2 ~ bb2 ~ bb2 ~ bb2 ~",
  M: "f2 ~ f2 ~ f2 ~ f2 ~", N: "e2@2 ~@2 e2@2 ~@2 e2@2 ~@2 e2 ~ e2 ~", O: "e2 ~ e2 ~@5",
})).s("gm_acoustic_bass").gain(0.45)

// bass · acoustic bass · "Violonchelo" · soft notes
const bass_soft = note("<A@8 ~ B@8 ~@4 C@4 ~@4 C@4 ~@15 D ~@2>".pickRestart({
  A: "[~@3 d3@29]/8", B: "d3/8", C: "d3/4", D: "~@4 eb2 ~ eb2 ~",
})).s("gm_acoustic_bass").gain(0.25)

// other · cello · "Violonchelo"
const cello_2 = note("<A@8 ~ B@8 C D C D E@4 C D C D E@4 F G H I J K L M J K N O L P Q R ~@2>".pickRestart({
  A: "[~@3 a2@29]/8", B: "a2/8", C: "a2 ~ a2 ~@5 a2 ~ a2 ~@5", D: "a2@5 ~@3 a2 ~ a2 ~ a2 ~ a2 ~", E: "a2/4",
  F: "a2@2 ~@2 a2@2 ~@2 a2@2 ~@2 a2 ~ a2 ~", G: "a2 ~ a2 ~ a2 ~ a2 ~", H: "ab2@2 ~@2 ab2@2 ~@2 ab2@2 ~@2 ab2 ~ ab2 ~",
  I: "ab2 ~ ab2 ~ ab2 ~ ab2 ~", J: "e2@2 ~@2 e2@2 ~@2 e2@2 ~@2 e2 ~ e2 ~", K: "e2 ~ e2 ~ e2 ~ e2 ~",
  L: "c3@2 ~@2 c3@2 ~@2 c3@2 ~@2 c3 ~ c3 ~", M: "c3 ~ c3 ~ b2 ~ b2 ~", N: "f2@2 ~@2 f2@2 ~@2 f2@2 ~@2 f2 ~ f2 ~",
  O: "f2 ~ f2 ~ f2 ~ f2 ~", P: "c3 ~ c3 ~ c3 ~ c3 ~", Q: "b2@2 ~@2 b2@2 ~@2 b2@2 ~@2 b2 ~ b2 ~",
  R: "b2 ~ b2 ~ bb2 ~ bb2 ~",
})).s("gm_cello").gain(0.4)

// bass · cello · "Violonchelo"
const bass_2 = note("<~@8 A ~@8 B C B C ~@4 B C B C ~@22>".pickRestart({
  A: "~@8 d3 c3 bb2 ab2 g2 gb2 f2 e2", B: "d2 ~ d2 ~@5 d2 ~ d2 ~@5", C: "d2@5 ~@3 d2 ~ d2 ~ d2 ~ d2 ~",
})).s("gm_cello").gain(0.45)

// bass · cello · "Violonchelo" · soft notes
const bass_soft_2 = note("<A@8 ~ B@8 ~@4 C@4 ~@4 C@4 D@2 E@2 F@2 G@2 F@2 H@2 G@2 I@2 ~@2>".pickRestart({
  A: "[~@3 d2@29]/8", B: "d2/8", C: "d2/4", D: "d2/2", E: "db2/2", F: "a2/2", G: "f2/2", H: "bb2/2", I: "e2/2",
})).s("gm_cello").gain(0.25)

// other · contrabass · "Contrabajo"
const contrabass = note("<A@8 ~ B@8 C@16 D@2 E@2 F@2 G@2 F@2 H@2 G@2 I@2 ~@2>".pickRestart({
  A: "[~@3 d1@29]/8", B: "d1/8", C: "d1/4", D: "d1/2", E: "db1/2", F: "a1/2", G: "f1/2", H: "bb1/2", I: "e1/2",
})).s("gm_contrabass").gain(0.25)

// drums · kick
const kick = s("bd").struct("<~@13 A@4 B C B C@2 ~@3 B C B C@2 D E C@18 ~>".pickRestart({
  A: "x!4", B: "x!2 ~@2 x!2 ~@2", C: "x", D: "~@7 x", E: "x ~@6 x",
})).gain(0.35)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~ x ~@3 [x ~@2 x ~@4] ~@3 x!4 ~@38>").gain(0.2)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@13 A@2 B C D E D F ~@4 D E D F ~@4 G H G H G H G H G H G H G H G I J ~
>`.pickRestart({
  A: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", B: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x!2", C: "x!8", D: "x!2 ~@2 x!2 ~@2",
  E: "~@8 x ~ x ~ x ~ x!2", F: "~@4 x!4", G: "x ~@3 x ~ x!2", H: "x ~@7 x ~@3 x!4", I: "x ~@7 x!2 ~ x!3 ~ x", J: "x",
})).gain(0.4)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct(`<
  ~@9
  [x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2]!2
  [x ~ x ~ x ~ x ~ x ~ x!3 ~ x!2]
  [x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2]
  ~@38
>`).gain(0.15)

// drums · tambourine
const tambourine = s("tb").struct("<~@9 A@2 B A@3 B A C@4 ~@4 C@4 ~@4 C@16 ~@2>".pickRestart({
  A: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", B: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x!2", C: "x!8",
})).gain(0.05)

stack(
  piano, piano_2, piano_soft, pizzicato_strings, tremolo_strings, tremolo_strings_2, tremolo_strings_soft,
  tremolo_strings_3, cello, cello_soft, bass, bass_soft, cello_2, bass_2, bass_soft_2, contrabass, kick, kick_soft,
  low_tom, low_tom_soft, tambourine
)