Strudelify

Gakkou Gurashi: Friend Shitai (edited)

Original Artist: Gaukuen Seikatsubu

KeyF majorTempo147 bpm
0:00/0:00
// Gakkou Gurashi: Friend Shitai (edited) — Original Artist: Gaukuen Seikatsubu
// 147 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/1181601; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 54 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(147/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · glockenspiel
const glockenspiel = note(`<
  ~@3 A B C D E F C D G@2 H I H J H I H K ~@8 L M L N ~@3 A B C D E O C D P@2 C D E F C D Q@2
>`.pickRestart({
  A: "g6!2 ~ g6 g6@4 [c7,c8]!2 ~ [c7,c8] [c7,c8]@4", B: "~@2 [c7,c8] ~ [bb6,bb7] ~ [a6,a7] ~ [g6,g7]@2 ~@2 [c7,c8]@4",
  C: "[c7,f7] c7 d7 [c7,f7]@2 c7 d7 f7", D: "[d7,g7] a7 g7 f7 [c7,a7]@2 ~ a7", E: "[f7,bb7] a7 g7 [c7,f7]@2 f7 d7 c7",
  F: "[c7,f7] c7 [f7,a7] [e7,g7]@2 ~@3", G: "[[f7,bb7] a7 g7 [c7,f7]@2 f7 g7 f7@2 c7 a6 f6 f7@2 ~@2]/2",
  H: "f7 c7 d7 f7@2 g7 a7 g7", I: "f7 c8 f7 ~", J: "f7@3 g7 g7@2 ~@2", K: "f7 bb7 c8 ~", L: "a7 ~",
  M: "g7@8 ~@2 a6 c7@2 d7@3", N: "g7 f7 d7 f7", O: "[c7,f7] c7 [f7,a7] [e7,g7]@2 c8!2 ~",
  P: "[[f7,bb7] a7 g7 [c7,f7]@2 f7 g7 f7@2 ~@3 bb6 b6 c7@2]/2", // Bb5 F5
  Q: "[[f7,bb7] a7 g7 [c7,f7]@2 f7 g7 f7@2 [c7,c8] [a6,a7] [f6,f7] [f7,f8]@4]/2", // Bb5 F5 C A F
})).s("gm_glockenspiel").gain(0.64)

// other · xylophone
const xylophone = note(`<
  ~@2 A B C ~@9 D E F G H I J ~@3 K L M N O ~@4 P Q A B C ~@3 R ~@3 S T U V W T U X@2
>`.pickRestart({
  A: "~@8 [e5,e6]!2 ~ [e5,e6] [e5,e6]@4", B: "[g5,g6]!2 ~ [g5,g6] [g5,g6]@4 [c6,c7]!2 ~ [c6,c7] [c6,c7]@4",
  C: "~@2 [c6,c7] ~ [bb5,bb6] ~ [a5,a6] ~ [g5,g6]@2 ~@2 [e6,f6] [c6,d6] [a5,bb5] [f5,g5]", D: "f6 c6 d6 f6@2 g6 a6 g6",
  E: "f6 ~@3", F: "~@3 [c5,c6] ~ [e5,e6] ~ [e5,e6]", G: "[f5,f6] ~@3", H: "~@10 [c5,c6] ~ [f5,f6] ~ [d5,d6] ~",
  I: "[c5,c6] ~@7", J: "f4 ~ bb4 ~ c5@4", K: "[d5,g5] ab5 [d5,g5] ab5 [c5,g5] f5 [a4,d5] c5",
  L: "~@2 [a4,d5]@2 d5@2 c5@2 d5@2 e5 f5@3 c5@2", M: "[a4,d5]@4 d5@2 c5@2 d5@2 e5 f5@4 ~",
  N: "~ [d5,f5] [d5,g5] [d5,f5] [e5,g5] [f5,ab5] [d5,g5] [c5,f5]", O: "[c5,f5] [a4,c5] [bb4,d5] [a4,f5]@2 ~@3",
  P: "g5 a5 g5 f5 d5@2 g5 a5", Q: "g5 f5 d5!2 a5@2 f5 g5", R: "~@5 [c6,c7]!2 ~",
  S: "~@2 [c6,c7] [bb5,bb6] [a5,a6]@2 [c6,c7]@2 [bb5,bb6]@2 [b5,b6]@2 [c6,c7]@4", T: "[c6,f6] c6 d6 [c6,f6]@2 c6 d6 f6",
  U: "[d6,g6] a6 g6 f6 [c6,a6]@2 ~ a6", V: "[f6,bb6] a6 g6 [c6,f6]@2 f6 d6 c6",
  W: "[c6,f6]@2 c6@2 [f6,a6]@2 [e6,g6]@2 [d7,e7] [bb6,c7] [g6,a6] [e6,f6] [c6,d6] [a5,bb5] [f5,g5] [d5,e5]", // F5 F Em Dsus2 Bbsus2 Gsus2 Fmaj7 Csus2 …
  X: "[[f6,bb6] a6 g6 [c6,f6]@2 f6 g6 f6@2 [c6,c7] [a5,a6] [f5,f6] [f5,f6]@4]/2", // Bb5 F5 C A F
})).s("gm_xylophone").gain(0.64)

// other · marimba
const marimba = note(`<
  A B C D E F G H I F G J@2 K L M N M L M O P Q R S ~@4 T U T U V W C D E F G H I F G X@2 F G H I F G Y@2
>`.pickRestart({
  A: "[d4,d5] d3 [d3,d4] d3 [f4,f5] f3 [f3,f4] f3", B: "[g4,g5] g3 [g3,g4] g3 [bb4,bb5] bb3 [bb3,bb4] bb3",
  C: "c3 e3 g3 c3 e3 g3 e3 g3 e3 g3 c4 e3 g3 c4 g3 c4", D: "g3 c4 e4 g3 c4 e4 c4 e4 c4 g4 c5 e4 g4 c5 g4 c5",
  E: "~@2 [c4,c5] ~ [g3,g4] ~ [c4,c5] ~ [e4,e5]@2 ~@2 [c4,c5]@4", F: "f4 f3 f4 f3 c4 c3 c4 c3",
  G: "d4 d3 d4 d3 a3 a2 a3 a2", H: "bb3 bb2 bb3 bb2 a3 a2 a3 a2", I: "g3 g2 g3 g2 [bb2,bb3] [b2,b3] [c3,c4]@2",
  J: "[[bb3,d4] [f3,bb3] [bb3,d4] [c4,f4]@2 [a3,c4] [g3,bb3] [f3,a3]@7 f3@2]/2", K: "f5 c5 d5 [c5,f5]@2 g5 a5 g5",
  L: "f5 ~ c6 ~ f5@2 ~@2", M: "[c5,f5] c5 d5 [c5,f5]@2 g5 a5 g5", N: "[c5,f5]@3 [e5,g5] [e5,g5]@2 ~@2",
  O: "[d5,f5] ~ [f5,bb5] ~ [e5,g5,c6]@2 ~@2", P: "~@2 [a4,d5]@2 d5@2 c5@2 d5@2 e5 f5@3 c5@2",
  Q: "[a4,d5]@4 d5@2 c5@2 d5@2 e5 f5@4 ~", R: "~ [bb4,f5]@2 [bb4,f5] [d5,f5]!2 [e5,g5] [d5,f5]",
  S: "[d5,g5] ab5 [d5,g5] ab5 [c5,g5] f5 [a4,d5] c5", T: "a3 e3 a3 c4 [a3,e4]@2 ~@2", U: "d3 a2 d3 f3 [d3,a3]@2 ~@2",
  V: "g4 a4 g4 f4 d4@2 g4 a4", W: "g4 f4 d4!2 a4@2 f4 g4",
  X: "[[bb3,d4] [f3,bb3] [bb3,d4] [c4,f4]@2 [a3,c4] [g3,bb3] [f3,a3]@2 [f3,f4] [g3,g4] [a3,a4] [bb3,bb4] [b3,b4] [c4,c5]@2]/2", // Bb Bb5 Bb F5 Am Gm F G …
  Y: "[[bb3,d4] [f3,bb3] [bb3,d4] [c4,f4]@2 [a3,c4] [g3,bb3] [f3,a3]@2 [c5,c6] [a4,a5] [f4,f5] [f4,f5]@4]/2", // Bb Bb5 Bb F5 Am Gm F C …
})).s("gm_marimba").gain(0.64)

stack(glockenspiel, xylophone, marimba)