Strudelify

Rito Village

Manaka Kataoka

KeyE♭ majorTempo113 bpm
0:00/0:00
// Rito Village — Manaka Kataoka
// 112.5 bpm, 3/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: ch 1 "B♭ Clarinet" named as a reed, played on clarinet (its viola patch is not one); ch 2 "Violin 1" named as a string part, played on violin (its acoustic guitar steel patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5904875; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 79 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(112.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 · clarinet · "B♭ Clarinet"
const clarinet = note(`<
  ~@10 A B C D E F G H I@2 J K L@2 K M ~@18 N@4 O P Q@4 R S T P U@2 V W X@3 Y Z AA ~ AB AC@5 AD@4
>`.pickRestart({
  A: "bb4 ab4 ~", B: "b3!12, bb4", C: "ab4 gb4 db5", D: "bb3!12, ab4", E: "gb4 e4 b4", F: "e3!12, gb5@2 ab5", G: "eb5",
  H: "bb4", I: "[eb3@10 bb3 b3]/2", J: "db4", K: "eb4", L: "e4/2", M: "d4", N: "[~@11 c5, c4]/4", O: "f5 eb5, f3@2 ~",
  P: "c5 ab4", Q: "[bb4@9 c5 f4 ab4]/2", R: "bb4@3 ab4 [g4,bb4] bb4", S: "c4 eb4 ~@3 c5, ~ c4@2", T: "f5 eb5",
  U: "[bb4@3 ab4 bb4@5 c5 f4 ab4]/2", V: "bb4@3 ab4 bb4@2", W: "bb4@3 c5 f4 ab4",
  X: "[bb4@3 ab4 ~@2 ab3 bb3 ab3 bb3 ab3 bb3 c4 db4 c4 db4 c4 db4, ~@2 bb4@7]/3",
  Y: "eb3@2 f3@2 gb3 ab3 bb3 c4 db4 eb4 f4 gb4", Z: "ab4 db4", AA: "gb3@2 ~", AB: "~@2 bb4@3 ab4@3",
  AC: "[eb5@9 ~ bb4@27 ab4@9 ~ gb4@9 db5@9 ab4@28 gb4@9 e4@9 b4@9]/5", AD: "[gb5@18 ~ ab5@9 eb5@28 bb4@28 ~@12]/4",
})).s("gm_clarinet").gain(0.3)

// chords · clarinet · "B♭ Clarinet" · soft notes
const clarinet_soft = note("<~@70 A@2 B C ~ D@2 ~@2>".pickRestart({
  A: "[~@10 b3@2 b3@2 b3@2 ~ b3@2 b3@2 b3@2 b3@2 ~ b3@2 b3@2 b3@2 ~ b3@2 b3@2 ~@11]/2", B: "~@17 bb3@2 bb3@2 ~ bb3@2",
  C: "bb3@2 bb3@2 ~ bb3@2 bb3@2 bb3@2 bb3@2 ~ bb3@2 bb3@2 bb3@2 ~@4",
  D: "[e3@2 ~ e3@2 e3@2 e3@2 ~ e3@2 e3@2 e3@2 ~ e3@2 e3@2 e3@2 e3@2 ~ e3@2 ~@20]/2",
})).s("gm_clarinet").gain(0.2)

// other · pizzicato strings · "Violin 2"
const pizzicato_strings = note(`<
  ~@11 A ~ B ~ C ~@2 D E F G H I J K ~@18 L M N O P ~@5 Q R ~@7 L M S T U ~@2 V@2 W X ~ Y@2 ~@2
>`.pickRestart({
  A: "eb4!12", B: "db4!12", C: "b3!12", D: "b3 db4 b3 db4 b3 db4", E: "eb4 e4 eb4 e4 eb4 e4",
  F: "gb4 ab4 gb4 ab4 gb4 ab4", G: "bb4 b4 bb4 b4 bb4 b4", H: "db5 eb5 db5 eb5 db5 eb5", I: "e5 gb5 e5 gb5 e5 gb5",
  J: "g5 a5 g5 a5 g5 a5", K: "bb5@3 g5@2 db5@3 bb4@3 f4@2 d4@3 ~@8", L: "c4 db4 c4 db4 c4 db4",
  M: "eb4 f4 eb4 f4 eb4 f4", N: "g4 ab4 g4 ab4 g4 ab4", O: "bb4 c5 bb4 c5 bb4 c5", P: "f5@2 ~", Q: "~@3 f5 eb5 c5",
  R: "g4 c5 ab4@4", S: "gb4@2 ab4@2 gb4 ab4 bb4 c5 db5 eb5 f5 gb5", T: "ab5 gb5", U: "db5@2 ~",
  V: "[~@10 eb5@2 eb5@2 eb5@2 ~ eb5@2 eb5@2 eb5@2 eb5@2 ~ eb5@2 eb5@2 eb5@2 ~ eb5@2 eb5@2 ~@11]/2",
  W: "~@17 db5@2 db5@2 ~ db5@2", X: "db5@2 db5@2 ~ db5@2 db5@2 db5@2 db5@2 ~ db5@2 db5@2 db5@2 ~@4",
  Y: "[b4@2 ~ b4@2 b4@2 b4@2 ~ b4@2 b4@2 b4@2 ~ b4@2 b4@2 b4@2 b4@2 ~ b4@2 ~@20]/2",
})).s("gm_pizzicato_strings").gain(0.25)

// other · cello · "Violoncello"
const cello = note("<~@18 A@2 B C D@2 E F ~@6 G H I@2 J@2 K@2 L@2 J@2 M@4 N ~@14 O@3 ~@13>".pickRestart({
  A: "[ab2@10 bb2 b2]/2", B: "db3", C: "eb3", D: "[g3@10 bb3 a3]/2", E: "g3", F: "gb3", G: "~ d3", H: "c3 bb2",
  I: "ab2/2", J: "g2/2", K: "f2/2", L: "eb2/2", M: "ab2/4", N: "f2@2 ~", O: "gb2",
})).s("gm_cello").gain(0.25)

// other · piano
const piano = note(`<
  A@5 B@5 C D E F G H I J K L M N ~ O P Q ~@22 R S T U V W X ~ R Y Z AA AB AC AD AE AF AG AH AI ~@2 AJ@2 AK@3 AL@4
>`.pickRestart({
  A: "[~@47 f6@13, ~@15 c4@11 eb5@45 d6@48 ~, ~@21 g4@7 bb5@48 ~@10 bb5@34, ~@23 bb4@7 f5@48 ~@42, ~@3 d5@5 g5@6 ~]/5",
  B: "[~@86 g5@23 ~@11, ~@8 db4@11 g5@45 g6@45 ~@11, ~@13 ab4@8 bb5@48 ~@51, ~@15 c5@8 f5@48 ~@49, ~@17 eb5@39 c6@48 ~@16]/5",
  C: "bb4 ab4 eb5", D: "bb4@23 ~", E: "ab4 gb4 db5", F: "~ db7@15 ~@8, ab4@23 ~, db6@2 ~",
  G: "~ e4 b4, b5@2 ~, gb4 ~@2, ~ b6@15 ~@8", H: "~ e7@15 ab5@8, [gb5,e6]@2 ~", I: "eb5@23 ~",
  J: "~ bb6@15 ~@8, bb4@23 ~, bb5@2 ~", K: "eb2 b2 e3 ab3 eb4 ab4", L: "eb5 ~@2", M: "eb2 gb2 gb3 bb2 db4 gb4",
  N: "db5 gb5 db6 db5 ~@2", O: "c4 eb4 g4 c5 e5 g4", P: "[g4,c5,eb5]@11 ~ g4@8 [eb5,eb6]@4",
  Q: "~@2 d2, [d4,d5,a5]@23 ~", R: "db3 ab3 db4 f4 ab4 db5", S: "f5@11 ~ [b3,eb4,e4,ab4]@11 ~",
  T: "[eb4,g4,bb4] c4 eb4 g4 bb4 eb5", U: "[eb5,g5]@11 ~ c5@4 [eb4,f4]@4 ab4@4",
  V: "[db4,e4,bb4]@11 ~ db4@4 e4@4 ab4@4", W: "[e4,g4]@11 ~ c5@4 e4@4 ab4@4", X: "[eb4,g4,bb4]@11 ~@13",
  Y: "f5 ab4 c5 c6 ab5 c6", Z: "[eb5,f5,bb5]@5 ~@3", AA: "[g5,c6,eb6]@15 ~ eb5@8", AB: "d5 bb4 ab4 bb4!2 ab4",
  AC: "[f4,ab4,d5]@11 ~ bb4@4 ab4@4 [bb4,eb5]@4", AD: "ab5@15 ~@5 gb5@4", AE: "db6@5 ~@3",
  AF: "[gb5,ab5]@11 ~ ab5@8 gb5@4", AG: "db6@23 ~", AH: "ab6@11 ~ [gb5,ab5,db6,gb6]@11 ~",
  AI: "[db5,gb5,ab5,db6]@11 ~@13", AJ: "[~@11 eb7@27 ~@10, ~@5 eb6@14 ~@5]/2",
  AK: "[~@18 db7@17 ~@11 b6@17 ~@9, ~@17 db6@18 ~@10 b5@18 ~@9]/3",
  AL: "[~ e7@27 ~ eb7@27 ~ bb6@27 ~@12, e6@7 eb6@7 bb5@7 ~@3]/4",
})).s("gm_piano").gain(0.3)

// other · acoustic guitar steel · "Acoustic Guitar"
const acoustic_guitar_steel = note(`<
  ~@10 A ~ B ~ C ~ D ~@2 E ~@6 F G H G F I J K L M F N O P Q R S T L U V W X Y Z AA AB AC AD@2 X AE AF AG AH AI AJ AK AL
  AM ~@3 AN@2 AO@2 AP@3 AQ ~@2
>`.pickRestart({
  A: "~ eb4@7, b2, ~ gb3@23, ~ bb3@11", B: "~ db4@7, bb2, ~ f3@23, ~ ab3@11", C: "~ db4@7, a2, ~ e3@23, ~ ab3@11",
  D: "eb3 g3 bb3 eb4 ~@2", E: "e3 b3 ~", F: "g2 g3 bb3 d4 bb3 g3", G: "g2 f3 a3 f3 d4 ~", H: "g2 eb3 bb3 eb4 bb3 eb3",
  I: "a2 f3 c4 f3 f4 ~", J: "bb2 f3 bb3 d4 bb3 f3", K: "~ eb4 d4@2 bb3@2 f3@2 bb3@2 f3@2, f3 ~@5, ~ bb3@3 ~@20",
  L: "ab2 eb3 ab3 c4 ab3 eb3", M: "ab4@3 c4@2 ab3", N: "g4@3 d4 bb3 g3", O: "f2 f3 a3 c4 a3 f3", P: "f4 a3 f3 c4 a3 f3",
  Q: "eb3 bb3 eb4 bb4 eb4 bb3", R: "~ f4 g4@2 eb4@2 bb3@2 eb3@2 d3@2, bb3 ~@5, ~ eb4@3 ~@20", S: "c3 g3 c4 e4 c4 g3",
  T: "f4 c4 g3 e4 g3 bb2", U: "g4 eb4 ab3 c4@3", V: "~ eb4@3 c4@2 eb4@2 ab4@4, ab2 ~@2, ~ eb3@7 ~@16",
  W: "~ ab4@5 ~@6, c4 ~, ~ eb4@11 ~@12", X: "db3 ab3 db4 f4 ab4 db5", Y: "f5 [db3,ab3]", Z: "~ c3 eb3 g3 bb3 eb4",
  AA: "[eb4,g4]@3 ~ [b2,gb3,a3]@2", AB: "bb2 eb3 ab3 db4 e4 ab4", AC: "eb3 g3 db4!2 g3 eb3",
  AD: "[ab2 eb3 c4 [f4,ab4] [g4,bb4]@5 ~@3]/2", AE: "f4 [db3,ab3]", AF: "~ db3 eb3 g3 bb3 eb4",
  AG: "[bb3,g4] [c4,ab4] [bb3,f4] ~ [b2,a3]@2", AH: "bb2 f3 ab3 d4 f4 ab4", AI: "d5@2 eb5 c5 f4 ab4",
  AJ: "gb2 db3 gb3 bb3 gb3 eb3", AK: "~@2 gb3 bb3 ~@2", AL: "gb2 db3 gb3 bb3 gb3 db3", AM: "[ab3,bb3,db4,f4]@2 ~",
  AN: "[~@9 eb4@25 ~@14, ~@3 b2@14 ~@7, ~@7 gb3@27 ~@14, ~@4 bb3@13 ~@7]/2",
  AO: "[~@16 db4@25 ~@7, ~@13 bb2@28 ~@7, ~@14 f3@27 ~@7, ~@15 ab3@26 ~@7]/2",
  AP: "[~@24 db4@25 ~@23, ~@21 a2@28 ~@23, ~@22 e3@27 ~@23, ~@23 ab3@26 ~@23]/3", AQ: "~@4 eb3@5 g3@4 bb3@5 eb4@5 ~",
})).s("gm_acoustic_guitar_steel").gain(0.3)

// other · acoustic guitar nylon · "Mandolin"
const acoustic_guitar_nylon = note(`<
  ~@25 A B C D E B F G H I J K L I M N O N D@2 ~ P ~@22 Q R S@2 T@2 U@2 V W
>`.pickRestart({
  A: "~@5 d4", B: "bb4!12 a4@4 bb4@8", C: "c5!12 a4@12", D: "g4!24", E: "d4!15 d4@5 d4@4", F: "c5!12 f5@12", G: "d5!24",
  H: "d5!15 d5@5 bb4@4", I: "c5!12 ~@2 d5@2 c5!8", J: "c5!20 c5@4", K: "bb4!12 g4!12", L: "g4!15 g4@5 bb4@4",
  M: "c5!20 bb4@4", N: "g4!12 f4@4 g4!8", O: "g4!15 g4@5 f4@4", P: "g5!24", Q: "~@2 bb4@3 ab4@3",
  R: "eb5@9 ~ bb4!7 ~ bb4!6", S: "[bb4 ~ bb4!7 ~ bb4!3 ab4@9 ~ gb4@9 db5@9 ab4!4 ~ ab4!2]/2",
  T: "[ab4!5 ~ ab4!8 ~ ab4!5 ~ gb4@9 e4@9 b4@9]/2", U: "[gb5 ~ gb5!7 ~ gb5!7 ~ gb5 ab5@9 eb5!3 ~ eb5!8 ~ eb5!7]/2",
  V: "~ eb5!6 ~ bb4!5 ~ bb4!8 ~ bb4", W: "bb4!6 ~ bb4!4 ~@13",
})).s("gm_acoustic_guitar_nylon").gain(0.3)

// drums · jingle bells
const jingle_bells = s("sleighbells:4").struct(`<
  ~@13 A ~ A ~@34 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@5 B ~@2 A ~@3
>`.pickRestart({
  A: "x", B: "~@17 x ~@6",
})).gain(1.29)

stack(
  clarinet, clarinet_soft, pizzicato_strings, cello, piano, acoustic_guitar_steel, acoustic_guitar_nylon, jingle_bells
)

More by Manaka Kataoka