Strudelify

Fogbound Lake

Arata Ilyoshi

KeyG majorTempo83 bpm
0:00/0:00
// Fogbound Lake — Arata Ilyoshi
// 82.5 bpm, 6/8, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Piano" named as a piano, played on piano (its pizzicato strings patch is not one); ch 2 "Piano" named as a piano, played on piano (its tremolo strings patch is not one); ch 3 "Piano" named as a piano, played on piano (its string ensemble 1 patch is not one); ch 4 "Trumpet" named as a brass, played on trumpet (its pizzicato strings patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 9 "Flute" flute (copy of ch 6 "Harp" orchestral harp)
// note: Transcription provider: pdmx. https://musescore.com/score/4478226; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 85 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(82.5/3)

// 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@3 ~ B@3 ~ A@3 ~ B@3 ~ C@5 D@8 E F G H I@3 J@8 K@5 ~@3 B@3 ~ C@5 D@8 E F L@8 M@2 ~@4
>`.pickRestart({
  A: "[~ e5@4 ~, b5@2 ~, ~ e5@2 ~@15, ~ d5@6 ~@2]/3", B: "[~ a4@4 ~, a5@2 ~, ~ d5@12 ~@5, ~ e5@6 ~@2]/3",
  C: "[~@10 a5@2 ~@6 b5@6 ~@3 e5@3, b5@3 [a5,b5,e6] [c6,d6] [b5,e6]@2 e5@5 b5@3, ~ e5@2 e5@10 d5@12 e5 d5@4, ~ d5@5 [a5,c6,d6,g6]@3 [e6,f#6]@6, ~@8 g5@7 a4@12 ~@3]/5", // Asus2 Csus2 E5 Am7 Esus2
  D: "[~@4 a5@2 ~@6 b5@6 ~@10 a5@2 ~@6 b5@6 ~@3 e5@3, [a5,b5,e6]@2 [b5,e6]@2 e5@5 b5@3 [a5,b5,e6] [c6,d6] [b5,e6]@2 e5@5 b5@3, ~@2 g5@7 a4@11 d5@10 [a5,c6,d6,g6]@6 [e6,f#6]@12, ~@2 [c6,d6]@4 [a5,c6,d6,g6]@6 [e6,f#6]@12 ~@2 g5@7 a4@11 d5@4, ~@7 d5@12 e5@2 e5@10 d5@12 e5@2 ~@3]/8", // Asus2 E5 Asus2 Csus2 E5 Am7 Esus2 Csus2 …
  E: "~@2 [a5,b5,e6], [a5,b5,e6]@2 ~, ~ [g5,c6,d6]@2", F: "~ a4, [a5,c6,d6,g6], ~ d5@5, ~ e5@2",
  G: "[d6,f#6]@6 ~@5 a5, [b5,e6]@5 g5, ~ [d6,f#6,a6], ~@2 e5, ~@3 f#5", // D E5 D
  H: "~@11 g3, [c5,e5,b5]@6 f#5 c4 [d4,d5] a3 [c4,f#5]@2, g5 a5@2, ~ c4@2 a3@3 g4@6, ~@2 d4@2 c4 [g3,g5]@7", // Cmaj7 D Cdim G
  I: "[~@35 [f#3,a5], e5@4 c4 g3@2 c4 e5@3 a5 b4@21 [a3,f#5] [d4,g5]@2, g4@3 a3@3 b4@2 d4 [a3,f#5] c4@7 f#3 [a4,f#5] d4 d5@16, ~ c4 b4@2 a4@6 g5 g3@17 d4 f#3 [a4,b5]@6, ~@2 d4@4 g4@6 [d5,f#5,b5] d4 e4 a3 [d4,a5] g5@3 e4 a3 [d4,f#5] f#3 [a4,e5] d4 [e4,b5] a3 a5@3 d4 [e4,e5]@4]/3", // F#m D G5 D Asus2 Bm D5 D …
  J: "[~@36 d4 ~@58 [f#3,a5], [c5,b5]@10 c4 g3 [g4,e5] c4 [d4,b4] a3 a4@6 b4 g3@19 a4@6 [e5,g5] c4 d4 a3 a5@4 d4 a3 [c4,f#5] g3 [g4,e5] c4 [d4,b4] a3 a4@6 g5 g3@17 d4 f#3 [a4,b5]@3 [a3,f#5] [d4,g5]@2, e5@5 g3 [g4,f#5] c4 [d4,d5] a3 f#5@13 d5 [e4,f#4,b4,e5] d4 e4 a3 g5@6 d4 f#3 [f#4,b4]@11 a5 [c5,b5]@18 b4 c4 e5@3 a5 b4@24, g5@3 a3 c4 g5@11 c4 g3 g4@10 d4 f#3 [a4,f#5] d4 [e4,e5] a3 d5@10 e5 [a3,f#5] [d4,g5] f#3@17 c4 g3 g4@6 [d5,f#5,b5] d4 e4 a3 [d4,a5] [f#3,g5] [a4,f#5] d4 d5@16, ~ c4 d4@2 a5@14 b4 c4 d4 a3 c4@14 a4 d4 e4 a3 d4 f#3@2 d4 e4@8 c4 [g3,g5] [g4,f#5] c4 d5@12 d4 [a3,f#5] c4@10 e4 a3 [d4,f#5] f#3 [a4,e5] d4 [e4,b5] a3 a5@3 d4 [e4,e5]@4]/8", // F#m Cmaj7 C G Em Cdim C G …
  K: "[~@9 e5, [c5,b5]@8 d4 a3 f#5@12 g4@2 e4 d4 e4 a3 d4 f#3 a4 d4 e4 a3 d4 f#3 [e4,a4] d4 e4@2 g4@6 d4 f#3 b5@2 e5@2 d5@8, e5@5 g3 [g4,f#5] c4 d5@10 g4 c4 [d4,a4] a3 c4@20 [f#4,a4]@18, g5@3 a3 c4 g5@7 g4 c4 [d4,b4] a3 [c4,a4] g3 b4@21 a3 d4 f#3@2 d4 e4@16, ~ c4 d4@2 a5@6 c4 g3 e5@11 g3@22 a3@15]/5", // Cmaj7 A5 Gmaj7 D5 F#m G F
  L: "[[d6,f#6]@6 ~@89 f#3, e6@12 g5 c4 d4 a3 a5@12 c4 g3 g4@6 [d5,f#5,b5] d4 e4 a3 [d4,a5] [f#3,g5] [a4,f#5] d4 d5@15 a5 [c5,b5]@8 d4 a3 f#5@13 g3 e4 d4 e4 a3 d4 f#3 a4 d4 e4 a3 d4@2, b5@9 f#5@3 e5@4 c4 g5@3 d4 a3 [c4,f#5] g3 [g4,e5] c4 [d4,b4] a3 a4@6 g5 g3@17 d4 f#3 a4@6 [e5,g5] c4 d4 a3 a5@6 c4 g3 e5@24, ~@6 [d6,f#6,a6]@11 g3 [g4,f#5] c4 d5@10 b4 c4 e5@3 a5 b4@19 d4 e4@8 c4 g5@7 g4 c4 [d4,b4] a3 [c4,a4] g3 b4@18, ~@8 e5@2 g5 a5 [c5,b5]@20 d4 [a3,f#5] c4@10 e4 a3 [d4,f#5] f#3 [a4,e5] d4 [e4,b5] a3 a5@2 b5@2 e5 [a3,f#5] [d4,g5] f#3@6 g3 [g4,f#5] c4 d5@10 g4 c4 [d4,a4] a3 [c4,g4]@14]/8", // D Bm D5 Gmaj7 D Cmaj7 Cdim C …
  M: "[~@3 e5, a4@4 d4 f#3@4 a3 d4 f#3 b5@2 e5@2 d5@8, e4 e4@2 [f#4,a4]@9, ~ d4@2 a3@4 d4 e4@16, ~ g4@5]/2", // F#m
})).s("gm_piano").gain(0.45)

// chords · piano
const piano_2 = note("<A@7 B@8 C@6 D@8 E@8 F@8 G@7 H@3 C@6 D@8 E@8 G@7 ~>".pickRestart({
  A: "[~@83 a3, b4@5 b3@5 e4@2 b4@5 b3@5 e4@2 b4@5 b3@5 e4@2 b4@5 b3@5 e4@3 d4@2 b3@4 d4 e4@4 a4@4 d4@2 a4@5 a3@5 d4@2 a4@6, ~ e4@2 d4@5 a4@5 e4@2 d4@5 a4@5 e4@2 d4@5 a4@5 e4@2 d4@5 a4@3 b3@3 e4@4 a4@4 d4 a3@4 b3@5 e4@5 d4@2 b3@5 e4@4, ~@2 a4@5 e4@2 d4@5 a4@5 e4@2 d4@5 a4@5 e4@2 d4@5 a4@5 e4@2 d4@3 a4@4 d4 a3@4 b3@4 d4 e4@5 d4@2 b3@5 e4@5 d4@2 b3@3, ~@4 e4@2 b4@5 b3@5 e4@2 b4@5 b3@5 e4@2 b4@5 b3@5 e4@2 b4@23 a3@5 d4@2 a4@5 a3@5 d4@2]/7",
  B: "[~@95 a3, a4@5 a3@5 d4@3 e4 a4@4 b4@4 e4 b3@4 d4@4 e4 a4@5 e4@2 d4@5 a4@5 e4@2 d4@5 a4@3 b3@3 e4@4 a4@4 d4 a3@4 b3@5 e4@5 d4@2 b3@5 e4@4, ~ d4@2 b3@5 e4@3 a3@22 d4@5 a4@5 e4@2 d4@5 a4@5 e4@2 d4@3 a4@4 d4 a3@4 b3@4 d4 e4@5 d4@2 b3@5 e4@5 d4@2 b3@3, ~@2 e4@5 d4@2 b3@6 d4@4 e4 a4@4 b4@4 e4 b3@5 e4@2 b4@5 b3@5 e4@2 b4@5 b3@5 e4@3 d4@2 b3@4 d4 e4@4 a4@4 d4@2 a4@5 a3@5 d4@2 a4@6, ~@4 d4@2 a4@6 b4@4 e4 b3@4 d4@4 e4 a4@4 b4@5 b3@5 e4@2 b4@5 b3@5 e4@2 b4@23 a3@5 d4@2 a4@5 a3@5 d4@2]/8",
  C: "[~@71 g3, a4@5 a3@5 d4 a3 g4 c4 d4 a3 c4 g3 g4 c4 d4 a3 c4 g3 g4 c4 d4@2 c4 g3@5 c4@21 d4 e4@11 c4 d4 a3 c4@2, ~ d4@2 b3@5 e4@22 g4@19 d4 e4@2 d4 a3@4 b3@15, ~@2 e4@5 d4@2 b3@22 c4@2 a3@3 a4 d4 e4 b3 d4 a3 a4 d4 e4 b3 d4 a3 a4@3 b3@3 a4@18, ~@4 d4@2 a4@21 a3@5 d4@3 g3@23 d4 a3 g4 c4 d4 a3 c4 g3 g4@6]/6",
  D: "[~@95 g3, g4@5 g3@5 c4@21 d4 e4@20 c4 g3@5 c4@21 d4 e4@11 c4 d4 a3 c4@2, ~ c4@2 a3@5 d4@3 g3@22 b3@22 c4@2 a3@3 a4 d4 e4 b3 d4 a3 a4 d4 e4 b3 d4 a3 a4 d4 e4@2 d4 a3@4 b3@15, ~@2 d4@5 c4@2 a3@3 a4 d4 e4 b3 d4 a3 a4 d4 e4 b3 d4 a3 a4 d4 e4@2 d4 a3@5 d4 a3 g4 c4 d4 a3 c4 g3 g4 c4 d4 a3 c4 g3 g4 c4 d4@4 g4@21 b3@3 a4@18, ~@4 c4@2 g4@21 b3@3 a4@21 a3@5 d4@3 g3@23 d4 a3 g4 c4 d4 a3 c4 g3 g4@6]/8",
  E: "[~@95 g3, g4@5 g3@5 c4@21 d4 e4@20 c4 g3@4 a3@4 d4 e4 a3 d4 f#3 a4 d4 e4 a3 d4 f#3 a4 d4 e4@2 d4 f#3@4 a3@4 c4 d4 a3 c4 g3 g4 c4 d4 a3 c4@2, ~ c4@2 a3@5 d4@3 g3@22 a3@4 c4 d4 a3 c4 g3 g4 c4 d4 a3 c4 g3 g4 c4 d4@4 g4@21 a3@3 a4@18, ~@2 d4@5 c4@2 a3@3 a4 d4 e4 a3 d4 f#3 a4 d4 e4 a3 d4 f#3 a4 d4 e4@2 d4 f#3@5 d4 f#3@23 c4@21 d4 e4@16, ~@4 c4@2 g4@21 a3@3 a4@21 a3@4 c4 d4@3 g3@23 d4 f#3@13]/8",
  F: "[~@95 g3, g4@5 g3@5 c4@21 d4 e4@20 c4 g3@4 a3@4 d4 e4 a3 d4 f#3 a4 d4 e4 a3 d4 f#3 a4 d4 e4@2 d4 f#3@4 a3@4 c4 d4 a3 c4 g3 g4 c4 d4 a3 c4@2, ~ c4@2 a3@5 d4@3 g3@22 a3@4 c4 d4 a3 c4 g3 g4 c4 d4 a3 c4 g3 g4 c4 d4@4 g4@21 a3@3 a4@18, ~@2 d4@5 c4@2 a3@4 d4 e4 a3 d4 f#3 a4 d4 e4 a3 d4 f#3 a4 d4 e4@2 d4 f#3@5 d4 f#3@23 c4@21 d4 e4@16, ~@4 c4@2 g4@21 a3@3 a4@21 a3@4 c4 d4@3 g3@23 d4 f#3@13]/8",
  G: "[~@83 b3, g4@5 g3@5 c4@21 d4 e4@3 f#3@22 d4@5 a4@5 e4@2 d4@5 a4@5 e4@2 d4@3, ~ c4@2 a3@5 d4@3 g3@22 a3@21 b4@5 b3@5 e4@2 b4@5 b3@5 e4@2 b4@6, ~@2 d4@5 c4@2 a3@4 d4 e4 a3 d4 f#3 a4 d4 e4 a3 d4 f#3 a4 d4 e4@2 d4 f#3@5 d4@3 e4 a4@2 e4 b3@2 e4 a4@2 e4 b3@2 e4 a4@2 e4 b3@5 e4@2 b4@5 b3@5 e4@2 b4@5 b3@5 e4@2, ~@4 c4@2 g4@21 a3@3 a4@6 b4@3 d4@3 b4@3 d4@3 b4@3 d4@4 e4 a4@5 e4@2 d4@5 a4@5 e4@2 d4@5 a4@4]/7",
  H: "[~@35 a3, a4@5 a3@5 d4@2 a4@5 a3@5 d4@2 a4@5 a3@5 d4@2, ~ d4@2 b3@5 e4@5 d4@2 b3@5 e4@5 d4@2 b3@5 e4@4, ~@2 e4@5 d4@2 b3@5 e4@5 d4@2 b3@5 e4@5 d4@2 b3@3, ~@4 d4@2 a4@5 a3@5 d4@2 a4@5 a3@5 d4@2 a4@6]/3",
})).s("gm_piano").gain(0.3)

// chords · piano
const piano_3 = note(`<
  A@4 B@4 A@4 B@4 C@2 D@2 C@2 D@2 C@2 D@2 C@2 E@2 F@2 G H F@2 G I F@2 G H F@2 G J A@4 B@4 C@2 D@2 C@2 D@2 C@2 D@2 C@2
  E@2 F@2 G H F@2 G J A@4 ~
>`.pickRestart({
  A: "[[a2,e3,b3]@91 ~@5]/4", B: "[[g2,d3,a3]@91 ~@5]/4", C: "[[f2,c3,g3]@23 ~]/2", D: "[[e2,b2,f#3]@23 ~]/2",
  E: "[[e2,b2,d3,f#3]@23 ~]/2", F: "[[c2,g2,c3,e3,g3,e4]@3 [g3,g4]]/2", G: "[d2,a2,d3,f#3,a3,f#4]", H: "[d3,d4]",
  I: "[b1,b2,d3,d4]", J: "[b1,b2,d3,d4] [b2,b3]",
})).s("gm_piano").gain(0.3)

// other · trumpet
const trumpet = note("<~@31 A B C B D B E F G B C B D B H I J ~@23 A B C B D B H I J ~@5>".pickRestart({
  A: "~@8 e4 f#4 g4 a4", B: "b4@4 a4 g4 f#4@2 d4@2 f#4@2", C: "e4@2 b3@2 a3@2 b3@2 e4 f#4 g4 a4",
  D: "e4@2 b4@2 a4@2 b4@2 e4 f#4 g4 a4", E: "e4@2 b3@2 a3@2 b3@4 b3 d4", F: "e4@2 g4 f#4 e4 d4",
  G: "[d3,f#3,b3]@8 e4 f#4 g4 a4", H: "e4 b3 a3 b3 a3 g3", I: "e3", J: "e3@2 g3 f#3 e3 d3",
})).s("gm_trumpet").gain(0.3)

// other · piccolo
const piccolo = note("<~@31 A B C B D B E F G B C B D B H I J ~@23 A B C B D B H I J ~@5>".pickRestart({
  A: "~@8 f#6!2 g6 a6", B: "b6@4 a6 g6 f#6@2 d6@2 f#6@2", C: "e6@2 b5@2 a5@2 b5@2 e6 f#6 g6 a6",
  D: "e6@2 b6@2 a6@2 b6@2 e6 f#6 g6 a6", E: "e6@2 b5@2 a5@2 b5@4 b5 d6", F: "e6@2 g6 f#6 e6 d6",
  G: "[d5,f#5,b5]@8 e6 f#6 g6 a6", H: "e6 b5 a5 b5 a5 g5", I: "e5", J: "e5@2 g5 f#5 e5 d5",
})).s("gm_piccolo").gain(0.45)

// other · pan flute
const pan_flute = note("<~@31 A B C B D B E F G B C B D B H I J ~@23 A B C B D B H I J ~@5>".pickRestart({
  A: "~@8 e5 f#5 g5 a5", B: "b5@4 a5 g5 f#5@2 d5@2 f#5@2", C: "e5@2 b4@2 a4@2 b4@2 e5 f#5 g5 a5",
  D: "e5@2 b5@2 a5@2 b5@2 e5 f#5 g5 a5", E: "e5@2 b4@2 a4@2 b4@4 b4 d5", F: "e5@2 g5 f#5 e5 d5",
  G: "[d4,f#4,b4]@8 e5 f#5 g5 a5", H: "e5 b4 a4 b4 a4 g4", I: "e4", J: "e4@2 g4 f#4 e4 d4",
})).s("gm_pan_flute").gain(0.45)

// chords · string ensemble 1 · "Violins"
const string_ensemble_1 = note("<~@32 A@2 B C A@2 B D A@2 B C A@2 B E ~@24 A@2 B C A@2 B E ~@5>".pickRestart({
  A: "[[c4,g4,e5]@3 g5]/2", B: "[d4,a4,f#5]", C: "d5", D: "[b3,d5]", E: "[b3,d5] b4",
})).s("gm_string_ensemble_1").gain(0.45)

// chords · string ensemble 1 · "Violas"
const string_ensemble_1_2 = note("<~@32 A@2 B C A@2 B D A@2 B C A@2 B E ~@24 A@2 B C A@2 B E ~@5>".pickRestart({
  A: "[[c3,g3,e4]@3 g4]/2", B: "[d3,a3,f#4]", C: "d4", D: "[b2,d4]", E: "[b2,d4] b3",
})).s("gm_string_ensemble_1").gain(0.45)

// drums · kick
const kick = s("bd").struct("<~@32 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@25 A ~ A ~ A ~ A ~@6>".pickRestart({
  A: "x",
})).gain(0.5)

// drums · crash
const crash = s("cr").struct("<~@32 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@25 A ~ A ~ A ~ A ~@6>".pickRestart({
  A: "x",
})).gain(0.45)

stack(piano, piano_2, piano_3, trumpet, piccolo, pan_flute, string_ensemble_1, string_ensemble_1_2, kick, crash)