Strudelify

Mado Kara Mieru

Christopher Tin

KeyF majorTempo110 bpm
0:00/0:00
// Mado Kara Mieru — Christopher Tin
// 110 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 100, 4/4 at bar 100) are rendered on a constant 4/4 grid of one bar per cycle
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5902957; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 132 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(110/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · contrabass
const bass = note(`<
  ~@16 A B@2 C@2 D@2 B@2 E ~@13 F G@2 H ~@9 I J@2 K@6 L@2 M@2 K@2 N@2 G@3 H G@3 H O@3 ~@11 P Q R S@3 T@3 U@6 V@2 W@6 X@2
  ~@16
>`.pickRestart({
  A: "~@2 f3 d3 c3 a2 e3 f3", B: "[d3@9 e3 f3 d3 c3 a2 e3 f3]/2", C: "[g3@9 a3 bb3 g3 f3 d3 a3 bb3]/2",
  D: "[g3@7 c3]/2", E: "d3", F: "~@2 e2 gb2 d2 db2 b1 ~", G: "~ gb2 e2 gb2 d2 db2 b1 ~", H: "db2 d2 e2 ~ db2@2 a1@2",
  I: "~ db3 d3 b2 a2 gb2 db3 d3", J: "[b2@6 ~ a2]/2", K: "[b2@9 db3 d3 b2 a2 gb2 db3 d3]/2",
  L: "[e3@9 gb3 g3 e3 d3 b2 gb3 g3]/2", M: "[e3@6 ~ a2]/2", N: "b2/2", O: "b1/3", P: "~ eb2 c2 g2 eb2 c3 g2 bb2",
  Q: "f2 d3@2 f3@4 ~", R: "eb2 g2 eb2 c3 g2 eb3@2 f3", S: "[c3 c4@4 a2@2 bb2@3 eb2 g2 a2 bb2@2 c3@7 d3 f2]/3",
  T: "[bb2 c3 d3@2 f3@2 f3@5 e3 c3@2 g3@6 d2@2 a2@2]/3", U: "[a2@2 g2 a2 f2 e2 d2@3 ~@3 d2@2 a2@2]/2",
  V: "[a2@2 g2 a2 f2 e2 d2@3 ~@3 d3@2 a3@2]/2", W: "[a3@2 g3 a3 f3 e3 d3@3 ~@3 d3@2 a3@2]/2",
  X: "[a3@2 g3 a3 f3 e3 d3@6 ~@4]/2",
})).s("gm_contrabass").gain(0.3)

// bass · contrabass · soft notes
const bass_soft = note(`<
  A B C D A B C E@2 F@2 G@2 F@2 H@2 ~@10 I@2 J K ~ L M N O@3 P Q ~@4 R S T U R ~ V W@2 ~@38 X ~@26 Y Z@2 AA AB Z@2 AC@3
  ~@4
>`.pickRestart({
  A: "d3@2 a3@2 a3@2 g3 a3", B: "f3 e3 d3@3 ~ d3@2", C: "e3 f3 g3@2 e3@2 c3@2", D: "f3 e3 d3 c3 d3@3 ~",
  E: "[d3 d3@3]/2", F: "[d3@9 e3 f3 d3 c3 a2 e3 f3]/2", G: "[d3@7 c3]/2", H: "[d3@9 e3 ~@6]/2", I: "d2/2", J: "f3 a2",
  K: "d3@2 bb2 c3", L: "~ a3 g3 a3 f3 e3 d3@2", M: "f2 a2", N: "d3", O: "~ gb2 e2 gb2 d2 db2 b1 ~",
  P: "db2 d2 e2 ~ db2@2 a1@2", Q: "~ gb2 ~@6", R: "~ b2 d3 ~", S: "gb3", T: "d3@2 gb2 a2", U: "b2", V: "~@3 a2",
  W: "[b2@9 ~@7]/2", X: "c2 ~@7", Y: "~@2 d3 a3", Z: "[a3@2 g3 a3 f3 e3 d3@3 ~ d3@2 e3 f3 g3@2]/2",
  AA: "e3@2 c3@2 f3 e3 d3 c3", AB: "d3@3 ~ d3@2 a3@2", AC: "[e3 c3 d3@4 d3@4 ~@2]/3",
})).s("gm_contrabass").gain(0.2)

// other · contrabass
const contrabass = note(`<
  ~@16 A B C D ~@5 E@2 F G H I F G J ~ K@3 L K@3 L ~@11 M N@6 O@2 P@2 N@2 Q@2 K@3 L R@3 S T@3 ~@11 U@2 V@2 ~ W X ~ Y
  Z@14 AA@2 ~@16
>`.pickRestart({
  A: "~ a1@3 g1@4", B: "d2@4 ~ a1 d2 f2", C: "g2@3 ~", D: "g2", E: "[g1@7 ~]/2", F: "d2@2 a2@2 a2@2 g2 a2",
  G: "f2 e2 d2@3 ~ d2@2", H: "e2 f2 g2@2 e2@2 c2@2", I: "f2 e2 d2 c2 d2@3 ~", J: "e2 f2 g2@2 e2@2 ~@2",
  K: "~ gb2 e2 gb2 d2 db2 b1 ~", L: "db2 d2 e2 ~ db2@2 a1@2", M: "~@3 a3", N: "[b3@9 db4 d4 b3 a3 gb3 db4 d4]/2",
  O: "[e3@9 gb3 g3 e3 d3 b2 gb3 g3]/2", P: "[e3@6 ~ a3]/2", Q: "b3/2", R: "~ gb3 e3 gb3 d3 db3 b2 ~",
  S: "db3 d3 e3 ~ db3@2 a2@2", T: "b2/3", U: "[c2@7 bb2@4 f2@2 bb2@2 ~]/2", V: "[eb2@5 eb2@2 f2@9]/2",
  W: "bb2 c3 d3 f3@2 d3@2 ~", X: "~@6 bb1 ~ c2 ~ d2 ~ f2 ~@3", Y: "~@2 d2 a2",
  Z: "[a2@2 g2 a2 f2 e2 d2@3 ~@3 d2@2 a2@2]/2", AA: "[a2@2 g2 a2 f2 e2 d2@6 ~@4]/2",
})).s("gm_contrabass").gain(0.25)

// other · contrabass · soft notes
const contrabass_soft = note(`<
  ~@23 A B ~@8 C A ~@9 D E F G D ~ H I@2 J@2 ~@25 K@2 L M K@2 L N L K@2 ~@25 O@5 P Q@3 R@7
>`.pickRestart({
  A: "d2", B: "c2", C: "~@3 c2", D: "~ b2 d3 ~", E: "gb2", F: "d2@2 gb2 a2", G: "b2", H: "~@3 a3",
  I: "[b3@9 db4 d4 b3 a3 gb3 db4 d4]/2", J: "[b3@3 ~]/2", K: "b2/2", L: "a2", M: "b2@2 g2 a2", N: "g2",
  O: "[~ d3@4 d3@4 e3]/5", P: "a2 d3", Q: "[bb2 c3 d3@8 e3@2]/3", R: "[a2 d3@2 e3@2 d3@8 ~]/7",
})).s("gm_contrabass").gain(0.15)

// bass · acoustic bass
const bass_2 = note("<~@9 [~@2 d3 ~@3 d3 ~] [~ e2 f2 d2 c2 a1 f1 e1] [d2 ~@7] ~ [d2 ~@3] ~@118>")
  .s("gm_acoustic_bass").gain(0.15)

// other · tremolo strings
const tremolo_strings = note("<~@21 [~ a3] [ab3@3 ~] ~@109>").s("gm_tremolo_strings").gain(0.2)

// other · contrabass
const contrabass_2 = note(`<
  ~@17 A B ~@24 C D E F C D E G ~@4 H@2 I J K L M ~ N O P@2 Q ~ R@8 ~@17 S@6 T U@12 V@2 ~@17
>`.pickRestart({
  A: "gb2 ~", B: "g3@3 ~", C: "b1@2 gb2@2 gb2@2 e2 gb2", D: "d2 db2 b1@3 ~ b1@2", E: "db2 d2 e2@2 db2@2 a1@2",
  F: "d2 db2 b1 a1 b1@3 ~", G: "b1@2 b1 ~", H: "[b1@9 d2@7]/2", I: "b1", J: "~ b1@3 d2@4", K: "gb2@3 d2", L: "gb2 a2",
  M: "a3 ~", N: "~ a3 ~ e3 c3@2 a2@2", O: "~@3 a1", P: "b1/2", Q: "a2 ab2 gb2 e2", R: "b1@11 ~@5",
  S: "[~@7 g2@2 d3@4 c3 bb2 a2@4 f3@2 c3@2 bb2@4 f3@2 d3@2 c3@2 g3@11 ~@4]/6", T: "~@5 e3 f3 d3",
  U: "[c3 a2 e3 f3 d3@8 ~ e3 f3 d3]/2", V: "[c3 a2 e3 f3 d3@8 ~@4]/2",
})).s("gm_contrabass").gain(0.3)

// other · contrabass · soft notes
const contrabass_soft_2 = note("<~@16 A B ~ C ~@8 D ~@2 E@2 F G ~@16 H I J K ~@6 L@2 ~@20 M ~@37 N O ~@9>".pickRestart({
  A: "~ a2@3 g2@4", B: "~@5 a2 d3 f3", C: "g2", D: "~ a3 g3 a3 f3 e3 d3@2", E: "d3/2", F: "f3 a2", G: "d3",
  H: "g2 gb2 e2 d2", I: "db2 ~", J: "d3 db3 b2 gb2", K: "b2 ~", L: "[~ e3@3]/2", M: "b1@2 g1 a1", N: "~ d3",
  O: "d3 c3 ~@2",
})).s("gm_contrabass").gain(0.15)

// bass · acoustic bass
const bass_3 = note("<~@11 A B C D E ~@4 F@3 ~@109>".pickRestart({
  A: "~ e3 f3 d3 c3 a2 f2 e2", B: "d3 a2 d3 e3 f3 ~ f3 ~", C: "~ c3 d3 f3 a3 e3 f3 a3", D: "d4 ~@4 g2 f2 e2",
  E: "d2 a2 d3 e3 f3 ~@3", F: "~@2 g3!2",
})).s("gm_acoustic_bass").gain(0.15)

// bass · acoustic bass · soft notes
const bass_soft_2 = note("<~@127 A B ~ C@2>".pickRestart({
  A: "~@4 a3 g3 a3 f3", B: "e3 d3 ~@6", C: "[~ d3@2 ~]/2",
})).s("gm_acoustic_bass").gain(0.05)

// other · tremolo strings
const tremolo_strings_2 = note("<~@24 [d3 c3] d3 ~@106>").s("gm_tremolo_strings").gain(0.2)

// other · contrabass
const contrabass_3 = note(`<
  ~@13 A@2 ~@3 B@5 ~@4 C@2 D E F@2 D G H I J K H I J K L@2 M N ~@2 M O ~@2 P Q R@2 S T U V W@2 ~ X Y Z ~ AA H I J K H I
  J K ~@3 AB AC AD AE AB AC AD H@2 ~@10 AF@4 AG@12 AH ~@16
>`.pickRestart({
  A: "[~ a2 g2 a2 f2 e2 d2@3 ~@7]/2", B: "[g1@19 ~]/5", C: "d3/2", D: "f2 a1", E: "d2@2 a1 c2", F: "d2/2", G: "d2",
  H: "b1", I: "a1", J: "g1", K: "b1 gb1", L: "b1/2", M: "db2 gb1", N: "d2@2 g1 a1", O: "b1@3 ~", P: "d3 db3 b2 gb2",
  Q: "b2 ~", R: "[b2@9 d3@7]/2", S: "b2", T: "~ b2@3 d3@4", U: "gb3@3 d3", V: "gb3 a3", W: "[a3 e3@3]/2",
  X: "~ a2 ~ e2 c2@2 a1@2", Y: "a1 e3", Z: "gb3", AA: "a1 ab1 gb1 e1", AB: "b1@2 gb2@2 gb2@2 e2 gb2",
  AC: "d2 db2 b1@3 ~ b1@2", AD: "db2 d2 e2@2 db2@2 a1@2", AE: "d2 db2 b1 a1 b1@3 ~", AF: "[~ d2@4 c2@2 bb1]/4",
  AG: "[c2 d2@4 c2@2 bb1]/4", AH: "c2 ~",
})).s("gm_contrabass").gain(0.2)

// bass · acoustic bass
const bass_4 = note("<~@23 [d3 c3 f3 ~@5] [e3 d3 g3 ~@5] [~ a3 g3 a3 f3 e3 d3 ~] [~ a2 g2 a2 f2 e2 d2 ~] ~@105>")
  .s("gm_acoustic_bass").gain(0.15)

// bass · acoustic bass · soft notes
const bass_soft_3 = note("<~@128 A B C@2>".pickRestart({
  A: "~@4 a2 g2 a2 f2", B: "e2 d2 ~@6", C: "[~ d2@2 ~]/2",
})).s("gm_acoustic_bass").gain(0.05)

stack(
  bass, bass_soft, contrabass, contrabass_soft, bass_2, tremolo_strings, contrabass_2, contrabass_soft_2, bass_3,
  bass_soft_2, tremolo_strings_2, contrabass_3, bass_4, bass_soft_3
)

More by Christopher Tin