Strudelify

pallet town

Junichi Masuda

KeyE♭ majorTempo80 bpm
0:00/0:00
// pallet town — Junichi Masuda
// 80 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/1385676; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 52 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(80/4)

// 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.

// other · soprano sax · "Soprano Saxophone"
const soprano_sax = note(`<
  A B@3 C@4 D E F G@2 H I J K L M N O P Q R S T U V W L M N X ~@4 Y Z AA AB@2 AC AD AE@3 AF@5
>`.pickRestart({
  A: "~@13 ab4@3",
  B: "[~@4 ab4@2 gb4@12 db4@2 gb4@2 f4@12 ~@3 f4@8 g4@7 ab4@23 ~ eb4@3 ab4@4 bb4@6 ab4@2 gb4@15 ~@8 ab4@23 eb4@4 ab4@3, ~@3 eb4@2 ~@139]/3",
  C: "[~ gb4@3 gb4@2 ab4@2 bb4@15 ~@8 c5@23 bb4@4 c5@4 db5@6 bb4@2 bb4@7 gb5@6 db5@2 db5@8 c5@15 d5@15 ~ c5@7 bb4@8 ab4@8 g4@7 g4@4 ~@8 g4@4 ~@15 f4@4 ~@3]/4",
  D: "~@4 f4@4 ~@16 f4@4 ~@7 f4@4 ~@9", E: "~@6 g4@4 ~@8 g4@4 ~@11 eb4@4 g4@4 ~@7",
  F: "~ g4@4 ~@15 ab4@4 ~@7 ab4@4 ~@13", G: "[~@3 ab4@4 ~@7 ab4@4 ~@4 ab4@4 f4@7 g4@31 ~@32]/2",
  H: "f5 eb5 d5 c5 bb5 g5 a5 g5", I: "f5@2 ~ d5 bb4!2 c5 d5", J: "eb5@4 ~ a4 bb4 c5", K: "d5@6 eb5 d5 c5@6 ~@2",
  L: "f5 eb5 d5 f5 bb5 a5!2 bb5", M: "g5@3 f5 f5@3 ~", N: "eb5 d5 c5 bb4 f5 eb5 d5 c5", O: "bb4@4 ~ bb4 c5 d5",
  P: "eb5@4 f5@3 eb5", Q: "d5@4 ~ bb4 c5 d5", R: "eb5@4 eb5@4 f5@6 eb5 f5", S: "d5@4 ~ d5 c5 bb4", T: "c5@2 g4 d5",
  U: "c5@2 bb4 g4", V: "a4@2 bb4 d5", W: "d5@2 c5 ~", X: "bb4",
  Y: "~@5 d5@3 bb4@3 bb4@3 ~@4 g5@3 ~ bb4@3 bb4@3 ~@2 bb4@2 f5@3 bb4@3 ~ bb4@3 ~@4 c5@2",
  Z: "~ a4@3 ~ a4@3 ~@3 d5@3 ~ bb4@3 bb4@3 ~@4 g5@3 ~ bb4@3 bb4@2 ~ f5@2 bb4@2 eb5@3 c5@3 ~ bb4@2",
  AA: "~ a4@3 ~ bb4@2 ~ bb4@2 ~ bb4@3 ~@34",
  AB: "[ab4@7 ab4@4 ~@7 ab4@2 ab4@2 ab4@4 ~@3 ab4@4 ~@4 ab4@7 gb4@2 ~ gb4@2 gb4@2 ~ gb4@2 gb4@2 g4@2 ~ ab4@11 c5@4 eb5@15 ~@7]/2",
  AC: "~@7 gb5@11 f5@2 e5@2 eb5@15 ~@11", AD: "~@33 ab4@11 c5@4",
  AE: "[eb5@15 ~@14 gb5@5 f5@5 gb5@5 ab5@11 b5@4 ab5@26 ~@3 bb5@15 b5@11 gb5@4 gb5@26]/3",
  AF: "[~@4 b5@7 c6@7 db6@11 ab5@4 ab5@26 ~@4 db6@7 d6@7 eb6@37 ~@8 db6@5 db6@5 d6@4 eb6@37 ~@8 db6@5 db6@5 c6@5 ab5@30 ~@14]/5",
})).s("gm_soprano_sax").gain(0.38)

// chords · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  A B@3 C@4 D E F G@2 H I J H@2 I J H K L K L M N O P H I J Q ~@4 R S T U@2 V W X@3 Y@5
>`.pickRestart({
  A: "~@13 ab3@3",
  B: "[~@3 ab3@3 gb3@12 gb3@4 f3@15 f3@8 g3@7 [eb3,ab3]@4 ~@8 [eb3,ab3]@12 [eb3,ab3]@4 ~@3 [db3,gb3]@4 ~@8 [db3,gb3]@11 [db3,gb3]@4 ~@4 [eb3,ab3]@4 ~@7 [eb3,ab3]@12 [eb3,ab3]@4 ~@3]/3", // Ab5 Gb5 Ab5
  C: "[~ [db3,gb3]@4 ~@7 [db3,gb3]@12 [db3,gb3]@4 ~@3 [eb3,ab3]@4 ~@8 [eb3,ab3]@11 [eb3,ab3]@4 ~@4 [db3,gb3]@4 ~@8 [db3,gb3]@11 [db3,gb3]@4 ~@4 [eb3,ab3]@15 [f3,bb3]@15 ~ [ab3,c4]@7 [g3,bb3]@8 [f3,ab3]@8 [eb3,g3]@7 [eb3,g3]@4 ~@8 [eb3,g3]@4 ~@15 [d3,f3]@4 ~@3]/4", // Gb5 Ab5 Gb5 Ab5 Bb5 Ab Gm Fm …
  D: "~@4 [d3,f3]@4 ~@16 [d3,f3]@4 ~@7 [d3,f3]@4 ~@9", E: "~@6 [eb3,g3]@4 ~@8 [eb3,g3]@4 ~@11 eb3@4 [eb3,g3]@4 ~@7",
  F: "~ [eb3,g3]@4 ~@15 [d3,f3]@4 ~@7 [d3,f3]@4 ~@13", // Eb Dm
  G: "[~@3 [d3,f3]@4 ~@7 [d3,f3]@4 ~@4 f3@4 d3@7 [eb3,g3]@31 ~@32]/2", H: "bb3@3 g3@3 ~@2", I: "bb3@3 c4@3 ~@2",
  J: "g3@3 a3@3 ~@2", K: "eb3 f3", L: "bb3 ~", M: "g3 c4", N: "g3 bb3", O: "a3 g3", P: "g3 a3", Q: "bb3",
  R: "~@8 f3@3 f3@3 ~@8 g3@3 g3@3 ~@7 f3@3 ~ f3@3 ~@6", S: "~ eb3@3 ~ eb3@3 ~@7 f3@3 f3@3 ~@8 g3@3 g3@3 ~@7 f3@3 ~@3",
  T: "~ f3@3 ~@4 f3@2 ~ f3@3 ~@34",
  U: "[[eb3,ab3]@7 [eb3,ab3]@4 ~@7 [eb3,ab3]@2 [eb3,ab3]@2 [eb3,ab3]@4 ~@3 [eb3,ab3]@4 ~@4 [eb3,ab3]@7 [db3,gb3]@2 ~ [db3,gb3]@2 [db3,gb3]@2 ~ [db3,gb3]@2 [db3,gb3]@2 [d3,g3]@2 ~ [eb3,ab3]@7 ~@22 gb3@7 ~]/2", // Ab5 Gb5 G5 Ab5
  V: "db3@7 ~@30 gb3@11", W: "f3@2 e3@2 eb3@15 ~@29",
  X: "[~@15 gb3@7 db3@7 ~@15 [eb3,ab3]@11 [eb3,ab3]@4 [eb3,ab3]@26 ~@3 [f3,bb3]@15 [eb3,gb3]@11 [eb3,gb3]@4 [eb3,gb3]@26]/3", // Ab5 Bb5 Ebm
  Y: "[~@4 [eb3,gb3]@7 [e3,g3]@7 [f3,ab3]@11 [f3,ab3]@4 [f3,ab3]@26 ~@4 [f3,ab3]@7 [gb3,a3]@7 [g3,bb3]@37 ~@8 [f3,ab3]@5 [f3,ab3]@5 [gb3,a3]@4 [g3,bb3]@37 ~@8 [f3,ab3]@5 [f3,ab3]@5 [eb3,ab3]@5 [eb3,ab3]@30 ~@14]/5", // Ebm Em Fm Gbm Gm Fm Gbm Gm …
})).s("gm_alto_sax").gain(0.17)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note(`<
  A B@3 C@4 D E F G@2 H I J H@2 I J H K L K L M N O P H I J Q ~ R S T U V W X@2 Y Z AA@3 AB@5
>`.pickRestart({
  A: "~@13 ab3@3",
  B: "[~@3 ab3@3 gb3@12 gb3@4 f3@15 f3@8 g3@7 eb3@4 ~@8 eb3@12 eb3@4 ~@3 db3@4 ~@8 db3@11 db3@4 ~@4 eb3@4 ~@7 eb3@12 eb3@4 ~@3]/3",
  C: "[~ db3@4 ~@7 db3@12 db3@4 ~@3 eb3@4 ~@8 eb3@11 eb3@4 ~@4 db3@4 ~@8 db3@11 db3@4 ~@4 eb3@15 f3@15 ~ eb3@7 g3@8 f3@8 eb3@7 eb3@4 ~@8 eb3@4 ~@15 d3@4 ~@3]/4",
  D: "~@4 d3@4 ~@16 d3@4 ~@7 d3@4 ~@9", E: "~@6 eb3@4 ~@8 eb3@4 ~@15 eb3@4 ~@7", F: "~ eb3@4 ~@15 d3@4 ~@7 d3@4 ~@13",
  G: "[~@3 d3@4 ~@7 d3@4 ~@15 bb2@31 ~@32]/2", H: "bb3@3 g3@3 ~@2", I: "bb3@3 c4@3 ~@2", J: "g3@3 a3@3 ~@2",
  K: "eb3 f3", L: "bb3 ~", M: "g3 c4", N: "g3 bb3", O: "a3 g3", P: "g3 a3", Q: "bb3", R: "~@42 f3@3 ~ f3@2",
  S: "~@8 g3@3 g3@3 ~@8 f3@3 f3@3 ~@7 eb3@3 ~ eb3@3 ~@6",
  T: "~ f3@3 ~ f3@3 ~@7 g3@3 g3@3 ~@8 f3@3 ~@3 f3@3 ~@4 f3@2 ~@2 f3@2",
  U: "~@8 f3@3 f3@3 ~@8 g3@3 g3@3 ~@7 f3@3 ~ f3@3 ~@6", V: "~ eb3@3 ~ eb3@3 ~@7 f3@3 f3@3 ~@8 g3@3 g3@3 ~@7 f3@3 ~@3",
  W: "~ f3@3 ~@4 f3@2 ~ f3@3 ~@34",
  X: "[eb3@7 eb3@4 ~@7 eb3@2 eb3@2 eb3@4 ~@3 eb3@4 ~@4 eb3@7 db3@2 ~ db3@2 db3@2 ~ db3@2 db3@2 d3@2 ~ eb3@7 ~@22 gb3@7 ~]/2",
  Y: "db3@7 ~@30 gb3@11", Z: "f3@2 e3@2 eb3@15 ~@3 c3@2 ~@2 db3@2 ~ eb3@2 ~@17",
  AA: "[~@15 gb3@7 db3@7 ~@15 eb3@11 eb3@4 eb3@26 ~@3 f3@15 gb3@11 gb3@4 gb3@26]/3",
  AB: "[~@4 gb3@7 g3@7 ab3@11 ab3@4 ab3@26 ~@4 ab3@7 a3@7 bb3@37 ~@8 ab3@5 ab3@5 a3@4 bb3@37 ~@8 ab3@5 ab3@5 ab3@5 ab3@30 ~@14]/5",
})).s("gm_tenor_sax").gain(0.22)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note(`<
  A@4 B@2 C@2 D@2 E@3 F G H I F G J I K L K M N O P Q F G J R S T U V W X Y Z@2 AA AB AC AD AE AF AG@4
>`.pickRestart({
  A: "[~@39 ab2@15 gb2@15 ~ f2@15 f2@8 g2@7 ab2@4 ab3@4 ab2@4 ab3@4 ab2@4 ab3@4 ab2@3 ab3@4 gb2@4 gb3@4 gb2@4 gb3@4 gb2@3 gb3@4 gb2@4 gb3@4 ab2@4 ab3@4 ab2@3 ab3@4 ab2@4 ab3@4 ab2@4 ab3@3]/4",
  B: "[~ gb2@3 gb3@4 gb2@4 gb3@4 gb2@4 gb3@4 gb2@4 gb3@3 ab2@4 ab3@4 ab2@4 ab3@4 ab2@4 ab3@3 ab2@4 ab3@4 gb2@4 gb3@4 gb2@4 gb3@3 gb2@4 gb3@4 gb2@4 gb3@4 ab2@3]/2",
  C: "[~ ab3@3 ab2@4 ab3@4 bb2@4 bb3@4 bb2@4 bb3@4 ab2@3 ab3@4 ab2@4 g3@4 ab2@4 f3@4 ab2@3 g3@4 eb3@4 bb3@4 bb2@4 bb3@4 ~@3 bb3@4 bb2@4 bb3@4 d3@4 bb3@3]/2",
  D: "[~ bb2@3 bb3@4 ~@4 bb3@4 bb2@4 bb3@4 d3@4 bb3@3 bb2@4 bb3@4 ~@4 bb3@4 bb2@4 bb3@3 eb3@4 bb3@4 bb2@4 bb3@4 ~@4 bb3@3 bb2@4 bb3@4 eb3@4 bb3@4 bb2@3]/2",
  E: "[~ bb3@4 ~@3 bb3@4 bb2@4 bb3@4 d3@4 bb3@4 bb2@3 bb3@4 ~@4 bb3@4 bb2@4 bb3@4 d3@3 bb3@4 bb2@4 bb3@4 ~@4 bb3@4 bb2@3 bb3@4 eb3@31 ~@32]/3",
  F: "bb2@3 g2@3 a2@2", G: "bb2@3 c3@3 bb2@2", H: "g2@3 a2@3 g2@2", I: "bb2@3 g2@3 f2@2", J: "g2@3 a2@3 c3@2",
  K: "eb2 f2", L: "bb2@2 g2 f2", M: "bb2@2 c3 bb2", N: "g2 c3", O: "g2 bb2", P: "a2 g2", Q: "g2 a2", R: "bb2",
  S: "~@32 c4@3 bb3@3 ~ a3@3 bb3@3 ~ a3@2",
  T: "~ g3@3 ~ f3@3 e3@3 c3@3 ~@4 c3@2 e3@2 ~ a3@2 c4@3 ~@4 f2@7 ~@3 bb2@3 ~ bb2@2, ~@11 f3 ~@12",
  U: "~@8 bb2@3 bb2@3 ~@8 bb2@3 bb2@3 ~@7 a2@3 ~ a2@3 ~@6",
  V: "~ bb2@3 ~ bb2@3 ~@7 bb2@3 bb2@3 ~@8 c3@3 ~@3 a2@3 ~@4 bb2@2 ~@2 bb2@2",
  W: "~@8 bb2@3 bb2@3 ~@8 bb2@3 bb2@3 ~@7 bb2@3 ~ bb2@3 ~@6",
  X: "~ a2@3 ~ a2@3 ~@7 bb2@3 bb2@3 ~@8 bb2@3 bb2@3 ~@7 c3@3 ~@3",
  Y: "~ a2@3 ~@4 bb2@2 ~ bb2@3 ~@26 ab2@2 c3@2 eb3@2 g3@2",
  Z: "[ab2@7 ab2@4 ~@7 ab2@2 ab2@2 ab2@4 ~@3 ab2@4 ~@4 ab2@7 gb2@2 ~ gb2@2 gb2@2 ~ gb2@2 gb2@2 g2@2 ~ ab2@4 ~@3 eb2@4 ab2@4 ~@3 eb2@4 ab2@4 eb2@3 gb2@4 ~@4]/2",
  AA: "db2@4 gb2@4 ~@3 db2@4 gb2@3 db2@4 ab2@4 ~@3 eb2@4 ab2@4 ~@3 eb2@4 ab2@4",
  AB: "eb2@4 ab2@4 ~@3 eb2@4 ab2@4 ~@3 eb2@4 ab2@3 eb2@4 ab2@4 ~@3 eb2@4 ab2@4",
  AC: "~@4 eb2@3 ab2@4 eb2@4 gb2@4 ~@3 db2@4 gb2@4 ~@3 db2@4 gb2@3 db2@4 ab2@4",
  AD: "~@4 eb2@3 ab2@4 ~@4 eb2@3 ab2@4 eb2@4 ab2@4 ~@3 eb2@4 ab2@4 ~@3 eb2@4",
  AE: "ab2@4 eb2@3 b2@4 ~@4 gb2@3 b2@4 ~@4 gb2@3 b2@4 gb2@4 b2@4 ~@3 gb2@4",
  AF: "b2@4 ~@3 gb2@4 c3@4 g2@3 db3@4 ~@4 ab2@3 db3@4 ~@4 ab2@3 db3@4 ab2@4",
  AG: "[db3@4 ~@3 ab2@4 db3@4 ~@3 ab2@4 d3@4 a2@3 eb2@37 ~@8 db2@5 db2@5 d2@4 eb2@37 ~@8 db2@5 db2@5 eb2@5 ab2@30 ~@14]/4",
})).s("gm_baritone_sax").gain(0.3)

stack(soprano_sax, alto_sax, tenor_sax, baritone_sax)

More by Junichi Masuda