Strudelify
KeyB majorTempo87 bpm
0:00/0:00
// lemon — Kenshi Yonezu (ç³æ çå)
// 87 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 3 "B♭ Clarinet" clarinet (copy of ch 2 "Flute" flute)
// note: Transcription provider: pdmx. https://musescore.com/score/5896914; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 91 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(87/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 · flute
const flute = note(`<
  A B C D E B C F G A B H D I B H F J K L M N O@2 P Q R S T U V W ~@3 A B H D I B H F J K L M N O@2 P Q R S T U V W X Y
  Z AA AB Y Z AA AB Y AC AD AE Y AF AG AH AI AJ O@2 P Q R AK AL AM V AN AO AP AQ AR
>`.pickRestart({
  A: "~@21 b4 c#5 ~", B: "d#5@3 b4 g#4@4 ~ c#5@3 a#4@3 f#4 d#4@4 ~ a#4@3",
  C: "g#4@3 f#4 b3@4 ~ f#4@3 d#4@6 ~@3 c#4 d#4 ~", D: "e4@6 b4@3 a#4 b4 ~ f#4@6 e4@3 d#4 e4 ~",
  E: "f4@6 b4@3 a#4 g#4 ~ g4@6 a#4 c#5 ~ b4 c#5 ~", F: "e4@6 f#4@3 e4 f#4 ~ d#4@3 f#4@3 b4@3 d#5@3",
  G: "c#5@4 c#5 ~ c#5@4 b4 ~ b4@6 ~@6", H: "g#4@3 f#4 b3@4 ~ f#4@3 d#4@6 b4 d#5@2 c#4 d#4 ~",
  I: "f4@6 b4@3 a#4 g#4 ~ g4@6 a#4 c#5@2 b4 c#5 ~", J: "c#5 c#5@4 ~ c#5@4 b4 ~ b4@6 ~@6",
  K: "g#4@4 a#4 ~ b4@3 a#4 g#4 ~ f#4@3 d#5@3 d#5@6", L: "c#5@4 d#5 ~ e5@3 d#5 c#5 ~ b4@3 c#5@3 f#4@6",
  M: "e4@4 f#4 ~ g#4@3 f#4 e4 ~ d#4@3 b4@3 b4@3 b4@3", N: "a#4 a#4@4 ~ g#4@4 a#4 ~ b4@6 c#5@2 d#5 c#5@2 b4",
  O: "g#4@2 b4@4 d#5@2 f#5@4 c#5@2 b4@4 c#5@2 d#5 c#5@2 b4", P: "g#4 b4@2 d#5 f#5@2 g#5 f#5@2 f#5 b5@2",
  Q: "a#5@2 f#5@4 d#5@2 f#5@4 c#5@6 c#5@2 d#5 c#5@2 b4", R: "g#4@2 b4@4 d#5@2 f#5@4 c#5@2 b4@3 b4@3 b4 c#5@2 d#5",
  S: "e5@2 d#5@4 c#5@2 a#4@4 b4@6 ~@3 b4@2 a#4", T: "g#4 a#4 b4 c#5 b4 f#4 d#4 f#4",
  U: "g#4@2 c#5@4 a#4@5 b4 b4@6 ~@3 b4@2 a#4", V: "g#4@3 a#4@3 b4@3 c#5@3 b4@3 f#4@3 b4@2 c#5@4",
  W: "d#5@2 e5@4 c#5@2 b4@4 b4@11 ~", X: "d#4 f#4 b4 a#4", Y: "g#4 d#5 f5 d#5", Z: "a#4@6 c#5@6 c5@11 ~",
  AA: "g#4 c5 c#5 c5", AB: "a#4@6 g4@6 g#4@11 ~", AC: "a#4 c#5 c5 ~", AD: "g#4@2 c5@2 c#5@2 c5 a#4",
  AE: "a#4@6 g4@6 g#4@6 ~@3 f4 g4 ~", AF: "g5@2 g5 g#5 g#5@2 d#5@2", AG: "g#5 d#5 c#5 c5", AH: "a#4 b4 a#4 g#4",
  AI: "e4 d#4 e4 f#4 g#4 b4 d#5 e5", AJ: "~@18 c#5@2 d#5 c#5@2 b4", AK: "g#5@2 d#5@4 c#5@2 a#4@4 b4@6 ~@3 b4@2 a#4",
  AL: "g#4@3 a#4@3 b4@3 c#5@3 b4@3 f#4@3 d#5 g#5@4 ~", AM: "g#4 c#5@4 ~ a#4 b4@4 ~ b4@6 ~@3 b4@2 a#4",
  AN: "d#5@2 e5@4 c#5@2 b4@4 b4@6 ~@3 b4@2 a#4", AO: "g#4@3 a#4@3 b4@3 c#5@3 b4@3 f#4@3 e4 d#4@4 ~",
  AP: "e4 b4@4 ~ b4 e5@3 d#5 ~ d#5@4 e5 ~ g#5@3 d#5 c#5 ~", AQ: "b4@3 c#5@3 d#5@3 e5@3 d#5@3 b4@3 f#4 b4@4 ~",
  AR: "c#5 d#5@4 ~ c#5 b4@4 ~ b4@11 ~",
})).s("gm_flute").gain(0.3)

// other · flute
const flute_2 = note(`<
  ~ A B C D E F G H ~ I J@2 K E L M N O P Q R S T U V S W S X Y Z ~@4 I J@2 K E L M N O P Q R S T U V S W S X Y Z AA ~@4
  AB AC AD AE AB AC AF AG AB AH AI AJ AK ~@5 S T U AL S W S AM AN AO
>`.pickRestart({
  A: "g#5@11 ~ f#5@11 ~", B: "e5@11 ~ d#5@11 ~", C: "e5@11 ~ f#5@11 ~", D: "d5@11 ~ d#5@6 d#5@6",
  E: "g#5 d#5 g#5 g#4 f#5 c#5 f#5 b4", F: "e5 c#5 f#5 b4 d#5 c#5 d#5 b4", G: "c#5!2 f#5 b4 d#5 c#5 d#5 b4",
  H: "e5@2 f#5@2 d#5 c#5 d#5 b4", I: "g#5 d#5 g#5 g#4 f#5 ~ b4 c#5", J: "e5 b4 c#5 b4 d#5 b4!3",
  K: "d5 f#4 b4 d#4 d#5 g#4 d#5@2", L: "e5 b4 e5 c#5 d#5 b4 d#5 b4", M: "e5 g#4 b4 e4 d#5 f#4 d#5 d#4",
  N: "a#4 e4 f#4 b4 d#5 c#5 d#5 b4", O: "e5@11 ~ b4@11 ~", P: "d#5@11 ~ d#5@11 ~", Q: "c#5@11 ~ b4@11 ~",
  R: "c#5!2 b4 ~", S: "e5@3 g#4@2 e5 e5@3 g#4@2 e4 b4@3 f#4@2 b4 b4@3 f#4@2 b3",
  T: "d#5@3 g#4@2 d#5 d#5@3 g#4@2 d#4 d#5@3 g#4@2 d#5 d#5@3 g#4@2 d#4",
  U: "e5@3 g#4@2 e5 e5@3 g#4@2 e4 b4@3 f#4@2 b4 b4@3 b3@3", V: "a#4@3 f#4@2 a#4 a#4@3 g#4@3 g4@11 ~",
  W: "c#5@2 c#5@4 f#5@2 f#5@4 d#5@3 f#4@2 d#5 d#5@3 f#4@2 d#4", X: "e5@6 f#5@6 g#5@3 d#5@3 g#5@3 g#5@2 f#5",
  Y: "e5@3 f#5@3 g#5@3 a#5@3 g#5@3 d#5@3 g#5@2 a#5@4", Z: "b5@2 c#6@4 a#5@2 g#5@4 g#5@11 ~", AA: "b3!3 c#4",
  AB: "g#4 d#5 f5 d#5", AC: "a#4@6 c#5@6 c5@11 ~", AD: "g#4 c5 c#5 c5", AE: "a#4@6 g4@6 g#4@11 ~",
  AF: "g#4@2 c5@2 c#5@2 c5 a#4", AG: "a#4@6 g4@6 g#4@6 ~@3 f4 g4 ~", AH: "g5@2 g5 g#5 g#5@2 d#5@2",
  AI: "g#5 d#5 c#5 c5", AJ: "a#4 b4 a#4 g#4", AK: "e4 d#4 e4 f#4 g#4 b4 d#5 e5",
  AL: "a#4@3 f#4@2 a#4 a#4@3 g#4@3 g#4@11 ~", AM: "e5@6 f#5@6 g#5@3 d#5@3 g#5@3 d#5 c#5 ~",
  AN: "b4@3 c#5@3 d#5@3 e5@3 d#5@3 b4@3 f#4 b4@4 ~", AO: "c#5 d#5@4 ~ c#5 b4@4 ~ b4@11 ~",
})).s("gm_flute").gain(0.3)

// bass · clarinet · "Bass Clarinet"
const bass = note(`<
  ~ A B C D E F G H ~ I J@2 K E L M N O P@2 Q R S T U V W V X Y Z AA B@2 AB I J@2 K E L M N O P@2 Q R S T U V W V X Y Z
  AC AD AE AF AG AH AE AF AG AI AJ AK AL AM AN AO AP AQ ~@5 R S T AR V W V X Z@2
>`.pickRestart({
  A: "g#3 f#3", B: "e3 d#3", C: "e3 f#3", D: "d3@2 d#3!2", E: "g#3 d#3 g#3 g#2 f#3 c#3 f#3 b2",
  F: "e3 c#3 f#3 b2 d#3 c#3 d#3 b2", G: "c#3!2 f#3 b2 d#3 c#3 d#3 b2", H: "e3@2 f#3@2 d#3 c#3 d#3 b2",
  I: "g#3 d#3 g#3 g#2 f#3 ~ b2 c#3", J: "e3 b2 c#3 b2 d#3 b2!3", K: "d3 f#2 b2 d#2 d#3 g#2 d#3@2",
  L: "e3 b2 e3 c#3 d#3 b2 d#3 b2", M: "e3 g#2 b2 e2 d#3 f#2 d#3 d#2", N: "a#2 e2 f#2 b2 d#3 c#3 d#3 b2", O: "e3 b2",
  P: "d#3 b2", Q: "e2 f#2 d#2 ~", R: "g2@3 g2@2 e3 e3@3 g2@2 e2 f#2@3 f#2@2 b2 b2@3 f#2@2 b1",
  S: "g2@3 g2@2 d#3 d#3@3 g2@2 d#2 g#2@3 g#2@2 d#3 d#3@3 g#2@2 d#2",
  T: "g#2@3 g#2@2 e3 e3@3 g#2@2 e2 f#2@3 f#2@2 b2 b2@3 b1@3", U: "f#2@3 f#2@2 a#2 a#2@3 g#2@3 g2@12",
  V: "g#2@3 g#2@2 e3 e3@3 g#2@2 e2 f#2@3 f#2@2 b2 b2@3 f#2@2 b1",
  W: "g#2@2 g#2@4 c#3@2 c#3@4 f#2@3 f#2@2 d#3 d#3@3 f#2@2 d#2", X: "g#2@2 c#3@2 g#2 d#3 g#3@2",
  Y: "g#2@3 g#2@2 e3 e3@3 g#2@2 e2 f#2@3 f#2@2 d#3 d#3@3 f#2@2 b1", Z: "g#2 d#3 b2@2", AA: "b2 c#3", AB: "b2@2 c#4 a#3",
  AC: "g#2!3 b2", AD: "g#3 f3", AE: "a#2@12 c3@4 c3 ~ g#3@6", AF: "g#2@12 c#3@4 c#3 ~ g#3@6",
  AG: "a#2@12 g#2@4 g#2 ~ g#2@6", AH: "g#2 f2", AI: "d#3 f3", AJ: "a#2 c3", AK: "g#2 c#3", AL: "a#2 g#2", AM: "g#2 f3",
  AN: "g3 g#3", AO: "g#3 c#3", AP: "a#2!2", AQ: "b2 a#2 b2 c#3 d#3 f#3 a#3 b3",
  AR: "f#2@3 f#2@2 a#2 a#2@3 g#2@3 g#2@12",
})).s("gm_electric_bass_finger").gain(0.3)

// other · clarinet · "B♭ Clarinet"
const clarinet = note(`<
  A B C D E B C D F A B C D E B C D G H I@2 J K L K M K@3 N O P ~@4 B C D E B C D G H I@2 J K L K M K@3 N O P ~@5 Q R S
  T Q R U V Q W X Y Z ~ AA AB AC AD K L K AE K@3 AF AG AH
>`.pickRestart({
  A: "~@21 c#4 d#4 ~", B: "b3 b4 f#5 b4 c#4 c#5 f#5 b4", C: "e4 c#5 f#5 b4 d#4 c#5 d#5 b4",
  D: "e4 b4 f#5 b4 d#4 c#5 f#5 b4", E: "b3@3 d#5@3 b4@3 f4@3 c#5@3 d#4@3 a#4@3 c#4 d#4 ~",
  F: "d#4@4 d#4 ~ d#4@4 c#4 ~ c#4@6 ~@6", G: "d#4 d#4@4 ~ d#4@4 c#4 ~ c#4@6 ~@6", H: "e4 b3", I: "d#4 b3",
  J: "e3 f#3 d#3 ~", K: "g#4 f#4", L: "g#4 c#5", M: "f#4 g4", N: "g#4@6 c#5@6 g#4@3 d#5@3 g#5@3 g#4@2 f#4",
  O: "e4@3 f#4@3 g#4@3 a#4@3 g#4@3 d#4@3 g#4@2 a#4@4", P: "b4 c#5@2 a#4 g#4@2 g#4@6", Q: "g#3 d#4 f4 d#4",
  R: "a#3 c#4 c4@2", S: "g#3 c4 c#4 c4", T: "a#3 g3 g#3@2", U: "g#3@2 c4@2 c#4@2 c4 a#3",
  V: "a#3@6 g3@6 g#3@6 ~@3 f3 g3 ~", W: "g4@2 g4 g#4 g#4@2 d#4@2", X: "g#4 d#4 c#4 c4", Y: "a#3 b3 a#3 g#3",
  Z: "e3 d#3 e3 f#3 g#3 b3 d#4 e4", AA: "e5 g#4 e5 g#4 b4 f#4 b4 f#4", AB: "d#5 g#4 d#5 g#4 d#5 g#4 d#5 g#4",
  AC: "e5 g#4 e5 g#4 b4 f#4 b4 b3", AD: "a#4 f#4 a#4 g#4 g#4@4", AE: "f#4 g#4",
  AF: "g#4@6 c#5@6 g#4@3 d#5@3 g#5@3 d#5 c#5 ~", AG: "f#4@3 g#4@3 a#4@3 b4@3 a#4@3 f#4@3 c#4 f#4@4 ~",
  AH: "g#4 a#4@4 ~ g#4 f#4@4 ~ f#4@12",
})).s("gm_clarinet").gain(0.3)

stack(flute, flute_2, bass, clarinet)