Strudelify

Beloved Tomboyish Girl

ZUNArranger: Yuuhei Satellite

KeyE♭ majorTempo120 bpm
0:00/0:00
// Beloved Tomboyish Girl — ZUNArranger: Yuuhei Satellite
// 120 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (2/4 at bar 1, 4/4 at bar 2) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5927762; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 35 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · alto sax · "Alto Saxophone"
const alto_sax = note("<~ A B C D E F G H A I C D J F G K ~ L ~ M ~@3 N O P Q R S T U V W X>".pickRestart({
  A: "gb4@2 ~@6 gb4 ~ bb4 ~ gb4 ~ f4 ~", B: "eb4@2 ~@8 b3 ~ eb4 ~ gb4 ~", C: "b4@2 ~@6 f4 ~ gb4 ~ f4 ~ db4 ~",
  D: "gb4 ~ db4 ~ gb4 ~ ab4 ~ bb4@2 ~@2 ab4@2 ~@2", E: "bb4@2 ~@6 f4 ~ gb4 ~ bb4 ~ eb4 ~",
  F: "ab4 ~ eb4 ~ c4 ~ ab4 ~ c4@2 ~@2 f4@2 ~@2", G: "gb4 ~ eb4 ~ b3 ~ gb4 ~ ab4 ~ f4 ~ db4 ~ ab4 ~",
  H: "ab4@2 ~@6 gb4 ~@7", I: "gb4@2 ~@8 b3 ~ eb4 ~ gb4 ~", J: "eb4@2 ~@6 f4 ~ gb4 ~ bb4 ~ eb4 ~",
  K: "ab4@2 ~@6 gb4 ~ f4 ~ gb4 ~ ab4 ~", L: "~@2 bb3 ~ eb4 ~ gb4 ~ bb4 ~@7", M: "~@2 bb3 ~ db4 ~ f4 ~ gb4 ~@7",
  N: "~@4 eb4 f4 gb4 ab4", O: "bb4@4 gb4 bb4 gb4 f4", P: "eb4@4 ~ eb4 gb4 bb4", Q: "eb5@4 db5 eb5 db5 ab4",
  R: "bb4@2 ~ f4", S: "gb4@4 f4 gb4 bb4 eb4", T: "ab4 eb4 c4 ab4 eb4 ~ f4@2", U: "gb4 eb4 b3 gb4 f4 db4 ab3 f4",
  V: "f4@2 eb4 ~", W: "gb4 ~ eb4 ~ b3 ~ gb4 ~ f4 ~ db4 ~ ab3 ~ f4 ~", X: "gb4",
})).s("gm_alto_sax").gain(0.3)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note("<~ A B C D A ~ E F A B C D A ~ E F A G E H A ~ E F I J K L M ~ E N O P>".pickRestart({
  A: "~@2 bb3 ~@3 bb3 ~@3 bb3 ~@3 bb3 ~", B: "~@2 c4 ~@3 c4 ~@9", C: "~@2 gb3 ~@3 gb3 ~@3 ab3 ~@3 f3@2",
  D: "gb3 ~ db4 ~ db4 ~ db4 ~ db4@2 ~@2 db4@2 ~@2", E: "~@2 gb3 ~@3 gb3 ~@3 ab3 ~@3 ab3 ~",
  F: "~@2 ab3 ~@3 ab3 ~ eb3 ~@7", G: "~ c4 ~ c4 ~@4", H: "~@2 bb3 ~ bb3 ~ ab3 ~ gb3 ~@7", I: "eb4 ~@3 db4 ~@3",
  J: "c4 ~ eb4 ~ gb4 ~@3", K: "b3 ~@3 db4 ~@3", L: "gb4 ~@3 gb4 ~ f4 ~", M: "~@2 bb3 ~@3 bb3 ~@3 ab3 ~@3 ab3 ~",
  N: "~@2 ab3 ~@3 ab3 ~ g3@4 ~@4", O: "eb3 ~ f3 ~", P: "~ eb3 ab3 f3 gb3@4",
})).s("gm_tenor_sax").gain(0.3)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note("<~ A B C D E F G H A B C D E F G H A B C D I F G H ~@4 I F G J K L>".pickRestart({
  A: "eb3 ~@3 db3 ~ gb3 ~", B: "c3 ~ eb3 ~ ab3 ~@3", C: "b2 ~@3 db3 ~ ab2 ~", D: "gb2 ~ db3 ~ gb3 ~ f3 ~",
  E: "eb3 ~@3 db3 ~@3", F: "ab2 ~ c3 ~ eb3 ~@3", G: "b2 ~@3 db3 ~@3", H: "eb3 ~@3 eb3 ~@3", I: "eb3 ~@3 db3 ~ db3 ~",
  J: "eb3 ~@3 eb3@2 ~@2", K: "b2 ~ db3 ~", L: "eb3 ~ eb3@2",
})).s("gm_baritone_sax").gain(0.4)

stack(alto_sax, tenor_sax, baritone_sax)