Strudelify

Toss a Coin to your Witcher

Sonya Belousova & Giona Ostinelli

KeyE♭ majorTempo105 bpm
0:00/0:00
// Toss a Coin to your Witcher — Sonya Belousova & Giona Ostinelli
// 105 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/5970756; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 64 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(105/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · "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.

// other · flute
const flute = note("<~@23 A B@3 C D E@3 F G H@2 I J ~@4 K L M N O P Q@3 P R S T@2 Q@3 P U@2 V W>".pickRestart({
  A: "c5 eb5 g5@2 f5 eb5 f5 g5",
  B: "[~@4 g5@3 f5@3 eb5@3 d5@3 eb5@6 c5@6 g5@3 f5@3 eb5@3 ~ d5@3 eb5@6 c5@6 bb4@3 c5@3 eb5@9 ~@4]/3",
  C: "~ c5 eb5 g5@2 f5 eb5 f5", D: "g5@3 ~@3 g5@3 ~ bb5@3 g5@3 f5@3 g5@5", E: "[~ g5@22 b5@24 c6@23 ~@2]/3",
  F: "~@10 c5 ~ eb5@3 d5@3 c5@3 bb4@3", G: "c5@2 ~@2 eb5 f5 eb5 d5",
  H: "[c5@2 ~ c5 f5!2 g5 eb5@2 c5 ~ c5 f5 eb5 f5!2]/2", I: "g5@23 ~", J: "~@12 g5@11 ~", K: "~ eb5",
  L: "eb5@3 d5@3 c5@3 bb4@3 c5@10 c5 ~", M: "eb5@4 f5 ~ eb5 d5@4 ~ c5@6 ~@3 c5@3", N: "f5!2 g5 eb5@2 c5 ~@2",
  O: "bb4@2 b4 c5", P: "~@2 c5 eb5 g5@2 f5 eb5",
  Q: "[f5 g5@2 g5 f5 eb5 d5 eb5@2 c5 ~ g5 f5 eb5 d5 eb5@2 c5@2 bb4 c5 eb5@3]/3", R: "f5 g5@2 g5 bb5 g5 f5 g5",
  S: "g5 g5@7", T: "[b5@17 ~ b5@3 c6@6 ~@3 c5@3 eb5@3 g5@6 f5@3 eb5@3]/2", U: "[f5 g5@2 g5 bb5 g5 f5 g5@2 g5@7]/2",
  V: "b5@17 ~ b5@6", W: "c6@23 ~",
})).s("gm_flute").gain(0.4)

// other · flute · soft notes
const flute_soft = note("<A@6 B@8 ~@23 C ~@26>".pickRestart({
  A: "[~@7 c5@27 ~ c5@27 ~ c5@27 ~ bb4@27 ~ c5@25]/6",
  B: "[~@3 bb4@13 ~ b4@13 ~ c5@23 ~@2 c5@23 ~ c5@23 ~@2 bb4@23 ~@2 c5@23 ~@2 bb4@12 b4@12 ~@13]/8", C: "g5@11 ~@13",
})).s("gm_flute").gain(0.15)

// other · flute
const flute_2 = note("<~@22 A ~@7 B ~ C D@2 E D F@2 G H@2 I J K@2 L M N O P Q R S T@2 N O U Q R V W X>".pickRestart({
  A: "~@8 bb5@3 b5@3 ~ b5@3 ~@6", B: "~@11 d5@12 ~", C: "eb4@23 ~", D: "f4@23 ~", E: "d4@23 ~",
  F: "[~@6 b5 c6@2 ~@3 eb5 d5 c5 bb4]/2", G: "c5@11 ~ eb5@3 f5@3 eb5@3 d5@3",
  H: "[c5@2 c5!2 f5!2 g5 eb5@2 c5 ~ c5 f5 eb5 f5!2]/2", I: "g5@2 ~@2 eb5 d5 c5 bb4",
  J: "c5@10 c5 ~ eb5@4 f5 ~ eb5 d5@4 ~", K: "[c5@2 ~ c5 f5!2 g5 eb5@2 c5 ~ c5 bb5 g5 f5!2]/2", L: "g5@2 b5 c6",
  M: "c5@11 ~@4 b4@6 b4@3", N: "~ eb5@2 eb5 ~ f5@2 f5", O: "~ g5@2 f5 ~ f5@2 f5", P: "~ g5@2 g5 ~ c5 c6 g5",
  Q: "c5@11 ~@4 f5@6 f5@3", R: "~ eb5@2 f5 ~ f5@2 g5", S: "g5!8",
  T: "[d5@3 d5@3 d5@3 d5@3 d5@3 d5@3 b5@3 c6@14 ~@4 b4@6 b4@3]/2", U: "~@3 g5@6 g5@14 ~", V: "g5 g5@7", W: "b5",
  X: "c6@23 ~",
})).s("gm_flute").gain(0.3)

// other · flute · soft notes
const flute_soft_2 = note("<A@2 B C@2 D@2 E@7 F G H@3 I J K@2 ~@41>".pickRestart({
  A: "[~@21 eb5@5 d5@2 c5@5 bb4@2 c5@13]/2", B: "~ f5@5 g5@2 eb5@5 d5@2 c5@7 ~@2",
  C: "[~@2 c5@3 f5@3 ~ f5@3 g5@7 eb5@2 d5@2 c5@7 c5@4 f5@5 eb5@5 f5@3 ~]/2", D: "[~@13 f5@3 ~ g5@10 ~@21]/2",
  E: "[~@7 g4@23 ~@2 a4@23 ~ ab4@23 ~@2 g4@23 ~@2 c5@23 ~@2 g4@12 g4@12 c5@3 g5@3 c5@3 ~ f5@3]/7",
  F: "c5 f5 c5 f5 a4 g5 a4 f5", G: "a4@3 f5@3 ~ a4@3 f5@3 ab4@3 g5@3 ab4@3 f5@2",
  H: "[~ ab4@3 f5@3 ab4@3 f5@3 bb4@3 g5@3 ~ bb4@3 f5@3 bb4@3 f5@3 b4@3 g5@3 c5@3 g5@3 c5@3 f5@3 c5@3 ~ f5@3 c5@3 f5@3 a4@3 g5@3 a4@3]/3",
  I: "f5@3 a4@3 f5@3 a4@3 f5@3 ~ ab4@3 g5@3 ab4@2", J: "~ f5@3 ab4@3 f5@3 ab4@3 f5@3 bb4@3 g5@3 bb4@2",
  K: "[~ f5@3 ~ bb4@3 f5@3 bb4@3 f5@3 bb5@3 bb5@3 bb5@3 bb5@3 bb5@3 ~@16]/2",
})).s("gm_flute").gain(0.15)

// other · flute
const flute_3 = note(`<
  ~@14 A B C@2 D E F G@8 ~ H ~ I J K I L M N O P Q R S T U V W X Y L W X Z AA@2 AB@3 AC AD@2 AE L
>`.pickRestart({
  A: "eb5 d5 c5 bb4 c5@2 ~ c5", B: "eb5@3 f5@3 ~ eb5@3 d5@3 c5@6 ~@5",
  C: "[~ f5@3 f5@3 g5@3 eb5@6 c5@3 ~@4 c5@3 bb5@3 f5@3 eb5@3 g5@9 ~@4]/2",
  D: "~@2 eb5@5 d5@2 ~ bb4@5 c5@6 ~@3, ~@9 c5@2 ~@13", E: "~@3 eb5@3 f5@3 eb5@3 d5@3 ~ c5@6 ~@2",
  F: "~ c5@3 f5@3 f5@3 g5@3 eb5@3 c5@6 ~@2",
  G: "[~@5 f5@3 eb5@3 f5@3 f5@3 g5@23 ~@2 g4@12 g4@12 eb4@9 ~ f4@15 eb4@9 f4@15 ~ g4@23 ~ g4@12 ~ g4@12 g4@9 a4@12 ~@6]/8",
  H: "~@5 g4@3 b4@15 ~", I: "g4@23 ~", J: "a4@23 ~", K: "ab4@23 ~", L: "c5@23 ~", M: "d5@11 ~ d5@11 ~",
  N: "~@6 c5@6 eb5@11 ~", O: "c5@11 ~ eb5@11 ~", P: "c5!2 f5 eb5", Q: "c5@6 c5@6 f5@11 ~", R: "g5@23 ~", S: "c5 eb5",
  T: "c5 f5", U: "eb5 bb4", V: "~@2 b4 c5", W: "g4@11 ~ b4@11 ~", X: "bb4@11 ~ a4@11 ~", Y: "c5@11 ~ a4@11 ~",
  Z: "b4@11 ~ b4@11 ~", AA: "[b4!6 f4 g4@2 ~ c5 eb5 g5@2 f5 eb5]/2",
  AB: "[f5 g5@2 g5 f5 eb5 d5 eb5@2 c5 ~ g5 f5 eb5 d5 eb5@2 c5@2 bb4 c5 eb5@3]/3", AC: "~@2 c5 eb5 g5@2 f5 eb5",
  AD: "[f5 g5@2 g5 bb5 g5 f5 g5@2 g5@7]/2", AE: "b4",
})).s("gm_flute").gain(0.25)

// other · flute · soft notes
const flute_soft_3 = note("<A@6 B@8 ~@50>".pickRestart({
  A: "[~@7 g4@27 ~ a4@27 ~ ab4@27 ~ g4@27 ~ c5@25]/6",
  B: "[~@3 g4@13 ~ g4@13 ~ eb4@23 ~@2 f4@23 ~ f4@23 ~@2 d4@23 ~@2 f4@23 ~@2 d4@12 d4@12 ~@13]/8",
})).s("gm_flute").gain(0.15)

// other · flute · "Bass Flute"
const flute_4 = note(`<
  A@8 B C D@3 E F G H I@5 J@7 K@2 L M@2 N O P Q N O N R M S N O T U V W X U Y Z AA@2 V W AB U AC AD AE AF
>`.pickRestart({
  A: "[~@7 c4@28 c4@28 c4@28 bb3@28 c4@28 bb3@14 b3@14 ~@9 g3@3 eb4@5]/8", B: "d4@2 c4@3 bb3@3 c4@6 ~@3 c4@3 eb4@4",
  C: "~@2 eb4@6 bb3@3 ~ c4@3 ~@3 c4@3 f4@3, ~ f4@2 ~@21",
  D: "[f4@3 g4@3 eb4@6 c4@3 ~@3 c4@3 ~ f4@4 f4@2 f4@3 g4@28 eb4@3 c4@9 ~]/3", E: "~@11 c4@12 ~", F: "c4 a3",
  G: "a3@12 ~ ab3@11", H: "~ ab3@12 bb3@11",
  I: "[~@2 bb3@6 b3@6 c4@12 c4@12 ~ a3@12 a3@12 ~ ab3@12 ab3@12 bb3@12 ~ f3@12 d3@3 d3@3 d3]/5",
  J: "[~@2 d3@3 d3@3 d3@3 e3@3 ~ e3@3 c4@12 b3@9 f4@3 bb3@9 ~ eb4@3 a3@9 f4@3 c4@9 f4@3 a3@9 ~ f4@3 c4@9 g4@3 c4@9 b4@3 c4@12 ~ b3@9 f4@3 bb3@9 f4@3 ~ a3@9 g4@3 g3@2]/7",
  K: "[~@4 g3@3 ~@3 g3@3 ~@3 g3@3 ~@4 g3@25]/2", L: "~@16 g4@2 ~ g4@2 ~ eb4@2, ~@15 f4@2 ~ ab4@2 ~ f4@2 ~",
  M: "c4 g3 c4 g3 c4 g3 c4 g3", N: "ab3 eb3 ab3 eb3 ab3 eb3 ab3 eb3", O: "bb3 f3 bb3 f3 bb3 f3 bb3 f3", P: "d4!8",
  Q: "eb4!4 g4!4", R: "bb3 eb3 bb3 eb3 b3 g3 b3 g3", S: "c4 f3 c4 f3 c4 f3 c4 f3", T: "eb4 bb3 eb4 bb3 g3!2 c4!2",
  U: "c4@4 b3@3 f4", V: "bb3@3 eb4 a3@3 f4", W: "c4@3 f4 a3@3 f4", X: "c4@3 g4 c4@3 b4", Y: "bb3@3 f4 a3@3 g4",
  Z: "g4!8", AA: "[d4!6 b3 c4@5 b3@3 f4]/2", AB: "c4@3 g4 c4@3 b3", AC: "bb3@3 f4 a3@3 f4",
  AD: "g3 d4 g4 d4!2 g3 g4 g3", AE: "d4 g3 b3 c4 f4 d4 b3 eb3", AF: "c3",
})).s("gm_flute").gain(0.25)

stack(flute, flute_soft, flute_2, flute_soft_2, flute_3, flute_soft_3, flute_4)