Strudelify
KeyB♭ majorTempo100 bpm
0:00/0:00
// dance monkey — Nat (musescore) rearr. RRRMB
// 100 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 14 "Horn in F" french horn (copy of ch 7 "Tenor Saxophone" tenor sax)
// note: Transcription provider: pdmx. https://musescore.com/score/5927624; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 61 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · piccolo
const piccolo = note(`<
  A B C D E B C F A G ~@2 H@3 I J@3 K L@3 M N@3 M O@3 M P@3 Q R S@3 A B T U P@3 M P@3 M O@3 M P@3 V W
>`.pickRestart({
  A: "g6 ~ g6 ~ g6 ~ g6 ~ g6 ~ g6 ~ g6 ~ g6 eb6", B: "~@2 eb6 ~ eb6 ~ eb6 ~ eb6 ~ eb6 ~ eb6 ~ eb6 f6",
  C: "~@2 f6 ~ f6 ~ f6 ~ f6 ~ f6 ~ f6 ~ f6 d6", D: "~@2 d6 ~ d6 ~ d6 ~ d6 ~ d6 ~@5",
  E: "~@2 g6 ~ g6 ~ g6 ~ g6 ~ g6 ~ g6 ~ g6 eb6", F: "~@2 d6 ~ d6 ~ d6 ~ d6 ~ d6 ~ d6 ~ d6@2",
  G: "~@2 eb6 ~ eb6 ~ eb6 ~ eb6 ~ eb6 ~ eb6 ~@3", H: "[d6@8 ~@7 bb6@9 ~@7 c6@9 ~@8]/3", I: "a6 ~",
  J: "[a6@8 ~@7 bb5@9 ~@7 c6@9 ~@8]/3", K: "~@2 g6!2",
  L: "[bb6@2 bb6!2 a6@2 a6!2 a6@2 g6!2 bb6 bb6@2 g6@5 ~@7 g6 bb6 bb6@2 a6@3 a6 g6 a6 g6 a6 g6@2 a6@2 g6 bb6@2 a6@2]/3",
  M: "g6 bb6 ~@2 g6@2 g6@2",
  N: "[bb6@2 bb6!2 a6@2 a6!2 a6@2 g6!2 bb6 bb6@2 g6@5 ~@7 g6 bb6 bb6@2 a6@3 g6@2 a6@2 g6@2 a6 g6@2 bb6 bb6@2 a6@2]/3",
  O: "[bb6@2 bb6!2 c7@2 bb6!2 a6@2 g6!2 bb6 bb6@2 g6@3 bb6@2 g6@2 bb6@2 g6@3 g6 bb6 bb6@2 a6@3 a6 g6 a6 g6 a6 g6@2 a6@2 g6 bb6@2 a6@2]/3",
  P: "[bb6@2 bb6!2 a6@2 a6!2 a6@2 g6!2 bb6 bb6@2 g6@5 ~@7 g6 bb6 bb6@2 a6@3 g6@2 a6@2 g6@2 a6 g6@2 bb6@3 a6@2]/3",
  Q: "g6 bb6 ~@6", R: "g6 bb6", S: "[c7@8 bb6@7 a6@15 bb6 a6@7 bb6 a6@5 g6@4]/3",
  T: "~@2 f6 ~ f6 ~ f6 ~ f6 ~ f6 ~ f6 ~ f6 ~", U: "~@2 a6 g6", V: "g6 bb6 ~@2 bb6@2 a6@2", W: "g6 ~@3",
})).s("gm_piccolo").gain(0.4)

// other · flute
const flute = note(`<
  A B C D A B C E A F ~@2 G@3 H I@3 J K@3 L M@3 L N@3 L O@3 P Q R@3 A B S T O@3 L O@3 L N@3 L O@3 U V
>`.pickRestart({
  A: "d6 ~ d6 ~ d6 ~ d6 ~ d6 ~ d6 ~ d6 ~ d6 bb5", B: "~@2 bb5 ~ bb5 ~ bb5 ~ bb5 ~ bb5 ~ bb5 ~ bb5 c6",
  C: "~@2 c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 a5", D: "~@2 a5 ~ a5 ~ a5 ~ a5 ~ a5 ~@5",
  E: "~@2 a5 ~ a5 ~ a5 ~ a5 ~ a5 ~ a5 ~ a5@2", F: "~@2 bb5 ~ bb5 ~ bb5 ~ bb5 ~ bb5 ~ bb5 ~@3",
  G: "[g5@8 ~@7 eb5@9 ~@7 f5@9 ~@8]/3", H: "d5 ~", I: "[d5@8 ~@7 eb5@9 ~@7 f5@9 ~@8]/3", J: "~@2 g5!2",
  K: "[bb5@2 bb5!2 a5@2 a5!2 a5@2 g5!2 bb5 bb5@2 g5@5 ~@7 g5 bb5 bb5@2 a5@3 a5 g5 a5 g5 a5 g5@2 a5@2 g5 bb5@2 a5@2]/3",
  L: "g5 bb5 ~@2 g5@2 g5@2",
  M: "[bb5@2 bb5!2 a5@2 a5!2 a5@2 g5!2 bb5 bb5@2 g5@5 ~@7 g5 bb5 bb5@2 a5@3 g5@2 a5@2 g5@2 a5 g5@2 bb5 bb5@2 a5@2]/3",
  N: "[bb5@2 bb5!2 c6@2 bb5!2 a5@2 g5!2 bb5 bb5@2 g5@3 bb5@2 g5@2 bb5@2 g5@3 g5 bb5 bb5@2 a5@3 a5 g5 a5 g5 a5 g5@2 a5@2 g5 bb5@2 a5@2]/3",
  O: "[bb5@2 bb5!2 a5@2 a5!2 a5@2 g5!2 bb5 bb5@2 g5@5 ~@7 a5 bb5 bb5@2 a5@3 g5@2 a5@2 g5@2 a5 g5@2 bb5@3 a5@2]/3",
  P: "g5 bb5 ~@6", Q: "g5 bb5", R: "[c6@8 bb5@7 a5@14 ~ bb5 a5@7 bb5 a5@5 g5@4]/3",
  S: "~@2 c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~", T: "~@2 a5 g5", U: "g5 bb5 ~@2 bb5@2 a5@2", V: "g5 ~@3",
})).s("gm_flute").gain(0.4)

// other · trumpet · "B♭ Trumpet"
const trumpet = note(`<
  A B@2 C D@4 E@3 F G@3 H I@3 J K L M N K L M O ~ P Q R ~ P S R ~@4 A T@3 U V W X U V W X U V W X Y@3 Z AA
>`.pickRestart({
  A: "g4 bb4", B: "[c5@8 bb4@7 a4@15 ~@2]/2", C: "~@6 g4 f4",
  D: "[g4@2 f4@2 g4@2 f4@2 g4@2 f4@2 g4 bb4@2 a4@5 ~@8 bb4 bb4@2 a4@3 g4 g4@3 f4 g4@2 f4@2 g4@2 bb4@2 a4@5 ~@6 f4@2 g4@2 f4@2]/4",
  E: "[g4@2 f4@2 g4@2 f4@2 g4@2 f4@2 g4 bb4@2 a4@5 ~@7 g4 bb4 bb4@2 a4@3 g4 g4@3 f4 g4@2 f4@2 g4@2 bb4@3]/3",
  F: "a4@2 d5 c5",
  G: "[c5@2 bb4@2 c5@2 bb4@2 c5@2 bb4@2 a4 a4@2 a4@2 g4 f4@2 g4@4 ~@3 g4 bb4 bb4@2 a4@5 bb4@3 a4@3 g4 g4@2 g4@3]/3",
  H: "bb4@4 c5@3 bb4",
  I: "[a4@2 g4@2 a4@2 g4@2 a4@2 g4@2 g4 g4@2 bb4@9 ~@3 g4 bb4 bb4@2 a4@3 g4 a4@3 g4 a4@3 g4 g4@2 bb4@3]/3",
  J: "a4 ~ g4!2", K: "~ g4 ~ g4 ~ g4 ~ g4", L: "~ eb4 ~ eb4 ~ eb4 ~ eb4", M: "~ f4 ~ f4 ~ f4 ~ f4",
  N: "~ d4 ~ d4 ~ d4 ~ d4", O: "d4 ~", P: "~@2 bb4@2 g4@2 bb4@2 g4@3 ~@5", Q: "~@9 a4@2 g4 bb4@2 a4@2", R: "g4 bb4 ~@6",
  S: "~@2 g4@2 a4@2 g4@2 a4 g4@2 bb4@3 a4@2", T: "[c5@8 bb4@7 a4@15 bb4 a4@7 ~@10]/3", U: "g4", V: "eb4", W: "f4",
  X: "d4",
  Y: "[bb4@2 bb4!2 a4@2 a4!2 a4@2 g4!2 bb4 bb4@2 g4@5 ~@7 g4 bb4 bb4@2 a4@3 g4@2 a4@2 g4@2 a4 g4@2 bb4@3 a4@2]/3",
  Z: "g4 bb4 ~@2 bb4@2 a4@2", AA: "g4 ~@3",
})).s("gm_trumpet").gain(0.25)

// other · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  A B@2 C D@4 E@3 F G@3 H I@3 J K L M N K O@2 N ~ P Q R ~ P S R ~@4 A T@3 U V W X U V W X U V W X Y@3 Z AA
>`.pickRestart({
  A: "g4 bb4", B: "[c5@8 bb4@7 a4@15 ~@2]/2", C: "~@6 g4 f4",
  D: "[g4@2 f4@2 g4@2 f4@2 g4@2 f4@2 g4 bb4@2 a4@5 ~@8 bb4 bb4@2 a4@3 g4 g4@3 f4 g4@2 f4@2 g4@2 bb4@2 a4@5 ~@6 f4@2 g4@2 f4@2]/4",
  E: "[g4@2 f4@2 g4@2 f4@2 g4@2 f4@2 g4 bb4@2 a4@5 ~@7 g4 bb4 bb4@2 a4@3 g4 g4@3 f4 g4@2 f4@2 g4@2 bb4@3]/3",
  F: "a4@2 d4 c4",
  G: "[c5@2 bb4@2 c5@2 bb4@2 c5@2 bb4@2 a4 a4@2 a4@2 g4 f4@2 g4@4 ~@3 g4 bb4 bb4@2 a4@5 bb4@3 a4@3 g4 g4@2 g4@3]/3",
  H: "bb4@4 c5@3 bb4",
  I: "[a4@2 g4@2 a4@2 g4@2 a4@2 g4@2 g4 g4@2 bb4@9 ~@3 g4 bb4 bb4@2 a4@3 g4 a4@3 g4 a4@3 g4 g4@2 bb4@3]/3",
  J: "a4 ~ g4!2", K: "bb4@2 bb4!2 a4@2 a4!2 a4@2 g4!2 bb4 bb4@2 g4", L: "g4@4 ~@7 g4 bb4 bb4@2 a4",
  M: "a4@2 a4 g4 a4 g4 a4 g4@2 a4@2 g4 bb4@2 a4@2", N: "g4 bb4 ~@2 g4@2 g4@2",
  O: "[g4@4 ~@7 g4 bb4 bb4@2 a4@3 g4@2 a4@2 g4@2 a4 g4@2 bb4 bb4@2 a4@2]/2", P: "~@2 bb4@2 g4@2 bb4@2 g4@3 ~@5",
  Q: "~@9 a4@2 g4 bb4@2 a4@2", R: "g4 bb4 ~@6", S: "~@2 g4@2 a4@2 g4@2 a4 g4@2 bb4@3 a4@2",
  T: "[c5@8 bb4@7 a4@15 bb4 a4@7 ~@10]/3", U: "g5", V: "eb5", W: "f5", X: "d5",
  Y: "[bb4@2 bb4!2 a4@2 a4!2 a4@2 g4!2 bb4 bb4@2 g4@5 ~@7 a4 bb4 bb4@2 a4@3 g4@2 a4@2 g4@2 a4 g4@2 bb4@3 a4@2]/3",
  Z: "g4 bb4 ~@2 bb4@2 a4@2", AA: "g4 ~@3",
})).s("gm_alto_sax").gain(0.4)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note(`<
  A B@2 C D@4 E@3 F G@3 H I@3 J K L M N O@3 N ~ P Q R ~ P S R A T@2 ~ A U@3 V W X Y V W X Y V W X Y Z@3 AA AB
>`.pickRestart({
  A: "g3 bb3", B: "[c4@8 bb3@7 a3@15 ~@2]/2", C: "~@6 g3 f3",
  D: "[g3@2 f3@2 g3@2 f3@2 g3@2 f3@2 g3 bb3@2 a3@5 ~@8 bb3 bb3@2 a3@3 g3 g3@3 f3 g3@2 f3@2 g3@2 bb3@2 a3@5 ~@6 f3@2 g3@2 f3@2]/4",
  E: "[g3@2 f3@2 g3@2 f3@2 g3@2 f3@2 g3 bb3@2 a3@5 ~@7 g3 bb3 bb3@2 a3@3 g3 g3@3 f3 g3@2 f3@2 g3@2 bb3@3]/3",
  F: "a3@2 d4 c4",
  G: "[c4@2 bb3@2 c4@2 bb3@2 c4@2 bb3@2 bb3 bb3@2 bb3@2 g3 f3@2 g3@4 ~@3 g3 bb3 bb3@2 a3@5 bb3@3 a3@3 g3 g3@2 g3@3]/3",
  H: "bb3@4 c4@3 bb3",
  I: "[a3@2 g3@2 a3@2 g3@2 a3@2 g3@2 g3 g3@2 bb3@9 ~@3 g3 bb3 bb3@2 a3@3 g3 a3@3 g3 a3@3 g3 g3@2 bb3@3]/3",
  J: "a3 ~ g3!2", K: "bb3@2 bb3!2 a3@2 a3!2 a3@2 g3!2 bb3 bb3@2 g3", L: "g3@4 ~@7 g3 bb3 bb3@2 a3",
  M: "a3@2 a3 g3 a3 g3 a3 g3@2 a3@2 g3 bb3@2 a3@2", N: "g3 bb3 ~@2 g3@2 g3@2",
  O: "[bb3@2 bb3!2 a3@2 a3!2 a3@2 g3!2 bb3 bb3@2 g3@5 ~@7 g3 bb3 bb3@2 a3@3 g3@2 a3@2 g3@2 a3 g3@2 bb3 bb3@2 a3@2]/3",
  P: "~@2 bb3@2 g3@2 bb3@2 g3@3 ~@5", Q: "~@9 a3@2 g3 bb3@2 a3@2", R: "g3 bb3 ~@6",
  S: "~@2 g3@2 a3@2 g3@2 a3 g3@2 bb3@3 a3@2", T: "[c4@8 bb3@7 a3@15 bb3 a3]/2", U: "[c4@8 bb3@7 a3@15 bb3 a3@7 ~@10]/3",
  V: "g3", W: "eb3", X: "f3", Y: "d3",
  Z: "[bb3@2 bb3!2 a3@2 a3!2 a3@2 g3!2 bb3 bb3@2 g3@5 ~@7 a3 bb3 bb3@2 a3@3 g3@2 a3@2 g3@2 a3 g3@2 bb3@3 a3@2]/3",
  AA: "g3 bb3 ~@2 bb3@2 a3@2", AB: "g3 ~@3",
})).s("gm_tenor_sax").gain(0.4)

// other · trombone
const trombone = note(`<
  A B C ~ D E F G D E H I J K L M J K L N O P Q R O P Q I S T U V S T U V W X Y Z W X Y ~ S AA U V S T U V S T U V S T U
  AB AC
>`.pickRestart({
  A: "g3@2 ~@11 g3@2 eb3", B: "~@13 eb3@2 f3", C: "~@13 f3@2 d3", D: "g3 ~@2 g3 ~@2 g3 ~", E: "eb3 ~@2 eb3 ~@2 eb3 ~",
  F: "f3 ~@2 f3 ~@2 f3 ~", G: "d3 ~@2 d3 ~@2 d3 ~", H: "f3", I: "d3 ~", J: "g3@2 g3 ~ g3 ~ g3 ~ g3@2 g3 ~@3 g3@2",
  K: "eb3@2 eb3 ~ eb3 ~ eb3 ~ eb3@2 eb3 ~@3 eb3@2", L: "f3@2 f3 ~ f3 ~ f3 ~ f3@2 f3 ~@3 f3@2",
  M: "d3@2 d3 ~ d3 ~ d3 ~ d3@2 d3 ~@3 d3@2", N: "d3 ~@3", O: "~ g3 ~ g3 ~ g3 ~ g3", P: "~ eb3 ~ eb3 ~ eb3 ~ eb3",
  Q: "~ f3 ~ f3 ~ f3 ~ f3", R: "~ d3 ~ d3 ~ d3 ~ d3", S: "g2 g3 g2 g3 g2 g3 g2 g3",
  T: "eb3 [eb3,eb4] eb3 [eb3,eb4] eb3 [eb3,eb4] eb3 [eb3,eb4]", U: "f3 [f3,f4] f3 [f3,f4] f3 [f3,f4] f3 [f3,f4]",
  V: "d3 d4 d3 d4 d3 d4 d3 d4", W: "g3@7 g3", X: "eb3@7 eb3", Y: "f3@7 f3", Z: "d3",
  AA: "eb3 eb4 eb3 eb4 eb3 eb4 eb3 eb4", AB: "d3 d4 ~@2 bb3@2 a3@2", AC: "g3 ~@3",
})).s("gm_trombone").gain(0.2)

// bass · electric bass finger · "Electric Bass"
const bass = note(`<
  A B C ~ D E F G D E H I J@4 K@3 ~ L M N O L M N P Q R S T Q R S T U V W X U V W ~ Q R S T Q R S T Q R S T Q R S Y Z
>`.pickRestart({
  A: "g2@2 ~@11 g2@2 eb2", B: "~@13 eb2@2 f2", C: "~@13 f2@2 d2", D: "d2 ~@2 d2 ~@2 d2 ~", E: "bb1 ~@2 bb1 ~@2 bb1 ~",
  F: "c2 ~@2 c2 ~@2 c2 ~", G: "a1 ~@2 a1 ~@2 a1 ~", H: "c2", I: "a1 ~",
  J: "[d3@2 d3 ~ d3 ~ d3 ~ d3@2 d3 ~ d3!3 eb2@3 bb2 ~ bb2 ~ bb2 ~ bb2@2 bb2 ~ bb2!3 f2@3 c3 ~ c3 ~ c3 ~ c3@2 c3 ~ c3!3 d2@3 a2 ~ a2 ~ a2 ~ a2@2 a2 ~ a2!2 a2@2]/4",
  K: "[d3@2 d3 ~ d3 ~ d3 ~ d3@2 d3 ~ d3!3 eb2@3 bb2 ~ bb2 ~ bb2 ~ bb2@2 bb2 ~ bb2!3 f2@3 c3 ~ c3 ~ c3 ~ c3@2 c3 ~ c3!3 d2]/3",
  L: "~ g2 ~ g2 ~ g2 ~ g2", M: "~ eb2 ~ eb2 ~ eb2 ~ eb2", N: "~ f2 ~ f2 ~ f2 ~ f2", O: "~ d2 ~ d2 ~ d2 ~ d2", P: "d2 ~",
  Q: "g2 d3 g2 d3 g2 d3 g2 d3", R: "eb2 bb2 eb2 bb2 eb2 bb2 eb2 bb2", S: "f2 c3 f2 c3 f2 c3 f2 c3",
  T: "d2 a2 d2 a2 d2 a2 d2 a2", U: "g2", V: "eb2", W: "f2", X: "d2", Y: "d2 a2 ~@2 bb2@2 a2@2", Z: "g2 ~@3",
})).s("gm_electric_bass_finger").gain(0.2)

// bass · tuba
const bass_2 = note(`<
  A B C ~ D E F G D E H I J K L M J K L N O P Q R O P Q I S T U V S T U V W X H Y W X H ~ S T U V S T U V S T U V S T U
  Z AA
>`.pickRestart({
  A: "g2@2 ~@11 g2@2 eb2", B: "~@13 eb2@2 f2", C: "~@13 f2@2 d2", D: "g2 ~@2 g2 ~@2 g2 ~", E: "eb2 ~@2 eb2 ~@2 eb2 ~",
  F: "f2 ~@2 f2 ~@2 f2 ~", G: "d2 ~@2 d2 ~@2 d2 ~", H: "f2", I: "d2 ~", J: "g2@2 g2 ~ g2 ~ g2 ~ g2@2 g2 ~@3 g2@2",
  K: "eb2@2 eb2 ~ eb2 ~ eb2 ~ eb2@2 eb2 ~@3 eb2@2", L: "f2@2 f2 ~ f2 ~ f2 ~ f2@2 f2 ~@3 f2@2",
  M: "d2@2 d2 ~ d2 ~ d2 ~ d2@2 d2 ~@3 d2@2", N: "d2 ~@3", O: "~ g2 ~ g2 ~ g2 ~ g2", P: "~ eb2 ~ eb2 ~ eb2 ~ eb2",
  Q: "~ f2 ~ f2 ~ f2 ~ f2", R: "~ d2 ~ d2 ~ d2 ~ d2", S: "g2 d3 g2 d3 g2 d3 g2 d3",
  T: "eb2 bb2 eb2 bb2 eb2 bb2 eb2 bb2", U: "f2 c3 f2 c3 f2 c3 f2 c3", V: "d2 a2 d2 a2 d2 a2 d2 a2", W: "g2", X: "eb2",
  Y: "d2", Z: "d2 a2 ~@2 bb2@2 a2@2", AA: "g2 ~@3",
})).s("gm_tuba").gain(0.2)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note(`<
  A B C ~ D E F G D E H I J K L M J K L N O P Q R O P Q I S T U V S T U V W X Y Z W X Y ~ S AA U V S T U V S T U V S T U
  AB AC
>`.pickRestart({
  A: "g2@2 ~@11 g2@2 eb2", B: "~@13 eb2@2 f2", C: "~@13 f2@2 d2", D: "g2 ~@2 g2 ~@2 g2 ~", E: "eb2 ~@2 eb2 ~@2 eb2 ~",
  F: "f2 ~@2 f2 ~@2 f2 ~", G: "d2 ~@2 d2 ~@2 d2 ~", H: "f2", I: "d2 ~", J: "g2@2 g2 ~ g2 ~ g2 ~ g2@2 g2 ~@3 g2@2",
  K: "eb2@2 eb2 ~ eb2 ~ eb2 ~ eb2@2 eb2 ~@3 eb2@2", L: "f2@2 f2 ~ f2 ~ f2 ~ f2@2 f2 ~@3 f2@2",
  M: "d2@2 d2 ~ d2 ~ d2 ~ d2@2 d2 ~@3 d2@2", N: "d2 ~@3", O: "~ g2 ~ g2 ~ g2 ~ g2", P: "~ eb2 ~ eb2 ~ eb2 ~ eb2",
  Q: "~ f2 ~ f2 ~ f2 ~ f2", R: "~ d2 ~ d2 ~ d2 ~ d2", S: "g2 d3 g2 d3 g2 d3 g2 d3",
  T: "eb2 [eb2,eb3] eb2 [eb2,eb3] eb2 [eb2,eb3] eb2 [eb2,eb3]", U: "f2 [f2,f3] f2 [f2,f3] f2 [f2,f3] f2 [f2,f3]",
  V: "d2 d3 d2 d3 d2 d3 d2 d3", W: "g2@7 g2", X: "eb2@7 eb2", Y: "f2@7 f2", Z: "d2",
  AA: "eb2 eb3 eb2 eb3 eb2 eb3 eb2 eb3", AB: "d2 d3 ~@2 bb2@2 a2@2", AC: "g2 ~@3",
})).s("gm_baritone_sax").gain(0.2)

stack(piccolo, flute, trumpet, alto_sax, tenor_sax, trombone, bass, bass_2, baritone_sax)