Strudelify

PAPERMOON JAZZ ARRANGEMENT

cobaltcaiman

KeyB♭ majorTempo164 bpm
0:00/0:00
// PAPERMOON JAZZ ARRANGEMENT — cobaltcaiman
// 164 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5829495; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 63 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(164/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 · flute
const flute = note(`<
  ~@12 A ~ B C D E F@2 G H I@2 J K L@2 M@2 N@2 O P Q@3 R S T@2 U V@3 W X@2 Y@2 Z AA@3 AB@2 ~@7
>`.pickRestart({
  A: "gb4 ~@3", B: "eb5 ~@3", C: "~@4 eb4 ~@3", D: "~@4 c5@6 ~@2 c5@3 ~ c5@2 ~@6", E: "~@6 f4 ~",
  F: "[f4@3 ~@2 bb4 bb4@3 ~@2 bb4@3 g4 ~@2 bb4@3 c5@4]/2", G: "eb5@6 ~@4 d5@2 d5@9 ~ c5@2",
  H: "~@4 c5@2 bb4@3 ~ a4@2 ~@4 a4@2 bb4@3 ~@3", I: "[a4@17 ~ g4@3 ~ bb4@14 ~@6 f5@6]/2",
  J: "f5@6 eb5@3 ~ d5@2 ~@4 eb5@6 ~@2", K: "d5@6 c5@3 ~ eb5@8 d5@3 ~@3",
  L: "[bb4@3 ~ eb5@2 d5@3 ~ bb4@2 eb5@3 ~ d5@2 bb4@3 ~ f5@8 d5@3 ~ db5@2 d5@3 ~ db5@2 bb4@3 ~ a4@2]/2",
  M: "[bb4@3 ~ eb5@2 d5@3 ~ bb4@2 eb5@3 ~ d5@2 bb4@3 ~ f5@6 bb5@6 f5@2 bb5@6 f5@6]/2",
  N: "[a5@11 ~ g5@9 ~ bb5@14 ~@6 bb5@6]/2", O: "a5@11 ~@7 a5@6", P: "bb5@9 ~ a5@8 g5@3 ~@3",
  Q: "[d5@6 ~@10 d5@2 bb4@3 ~ eb5@8 ~@6 eb5@3 ~@3 eb5@3 ~ d5@14 ~@6 f5@6]/3", R: "g5@2 d5@2 a5 ~ f5@2",
  S: "g5@11 ~@7 d5@6", T: "[eb5@6 g5@3 ~ f5@2 ~@4 eb5@2 ~@4 d5@14 ~@6 d5@6]/2", U: "eb5@3 ~@2 d5@4 c5@3",
  V: "[a5@6 bb5@3 ~ a5@2 ~@4 bb5@6 c6@8 bb5@3 ~ a5@8 g5@3 ~ f5@14 ~@6 bb5@6]/3", W: "a5@11 ~@7 a5@3 ~@3",
  X: "[a5@17 ~ g5@3 ~ bb5@14 ~@6 bb5@6]/2", Y: "[c6@6 bb5@3 ~ a5@2 ~@4 bb5@6 g5@14 ~@12]/2",
  Z: "g5@6 bb5@3 ~ g5@2 ~@4 f5@6 ~@2", AA: "[eb5@6 d5@3 ~ bb4@2 ~@4 d5@6 gb5@14 gb5@3 ~@3 gb5@3 ~ f5@14 eb5@11 ~]/3",
  AB: "[f5@23 ~]/2",
})).s("gm_flute").gain(0.3)

// other · trumpet · "B♭ Trumpet"
const trumpet = note("<A B@2 ~@23 C D E@2 F@2 G H ~@4 I J@2 K L@3 ~@2 M N@2 ~@12 O>".pickRestart({
  A: "g4 f4", B: "[eb4@6 d5@2 bb4 a4@2 f4@3 ~@10]/2", C: "~@6 f5@5 f5", D: "~@2 eb5 ~@2 d5@3 eb5@4",
  E: "[d5@6 ~@2 bb4@3 d5@7 ~@3 bb4@3]/2", F: "[a4@6 g4@5 bb4@7 ~@3 bb4@3]/2", G: "a4@2 ~ a4", H: "bb4@5 a4@4 g4@2 ~",
  I: "~@3 d4", J: "[eb4@3 g4@2 f4 ~@2 eb4 ~@2 d4@7 ~@3 d4@3]/2", K: "eb4@3 ~@2 d4@4 c4@3",
  L: "[a4@3 bb4@2 a4 ~@2 bb4@3 c5@4 bb4@2 a4@4 g4@2 f4@7 ~@6]/3", M: "~@3 bb4",
  N: "[c5@3 bb4@2 a4 ~@2 bb4@3 g4@7 ~@6]/2", O: "g5",
})).s("gm_trumpet").gain(0.3)

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

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

// other · trombone
const trombone = note(`<
  ~@6 A B C D ~@2 E ~ F G H I J K E ~ F G H I ~@4 L@2 M N ~@6 O P Q@3 ~@2 R S@2 ~@8 A B C T U
>`.pickRestart({
  A: "~@2 bb2 bb2@2 ~ f3@2 f3 ~@3", B: "eb3@3 ~@3 d3@2 ~ d3@2 c3", C: "~@2 bb2@3 ~@4 bb2@2 c3",
  D: "d3@2 ~ eb3@2 d3 ~@2 f3@3 g3", E: "gb2 ~@3", F: "eb3 ~@3", G: "~@4 eb3 ~@3", H: "~@2 c3@3 ~ c3@2 c3 ~@3", I: "f3",
  J: "g2 ~@3", K: "~@16 g2@3 ~@5", L: "[a3@6 g3@5 eb3@7 ~@3 bb3@3]/2", M: "a3@2 ~ a3", N: "bb3@5 a3@4 d3@2 ~",
  O: "~@3 d3", P: "eb3@3 ~@2 d3@4 c3@3", Q: "[d4@3 ~@5 d3 bb2@2 eb3@4 ~@3 eb3@2 ~ eb3@2 d3@7 ~@6]/3", R: "~@3 bb3",
  S: "[c4@3 bb3@2 a3 ~@2 bb3@3 g3@7 ~@6]/2", T: "d3@2 ~ eb3@2 d3 ~@2 f3@3 ~", U: "g3",
})).s("gm_trombone").gain(0.25)

// chords · piano
const piano = note(`<
  A B C@2 D E F@2 G H C@2 D E F@2 G H C@2 D E F@2 G H I J K@2 L@2 G M N@2 O P Q@2 O R S@2 O P T@2 O U V W@2 H C@2 D E
  F@2 G H ~
>`.pickRestart({
  A: "g5@3 ~ bb5@2 a5@3 ~@7 [bb4,bb5]@2 [a4,a5]@3 ~ [g4,g5]@2, [g3,g4]@5 g5@3 ~@4, ~@12 [f3,f4]@11 ~", // Bb A G F
  B: "[g4,g5]@3 ~ [bb4,bb5]@2 [a4,a5]@3 ~ [g4,g5]@2 [d5,d6]@3 ~ [bb4,bb5]@2 [a4,a5]@3 ~ f4@2, [eb3,eb4]@11 ~ [d3,d4]@11 ~", // G Bb A G D Bb A Eb …
  C: "[[g2,g3,bb3,d4,f4]@6 ~@6 [g2,g3,bb3,d4,f4] ~@9 [g2,g3,bb3,d4,f4]@6 [g2,g3,bb3,d4,f4]@6 [g2,g3,bb3,d4,f4]@3 ~@5 [g2,g3,bb3,d4,f4]@3 ~@3]/2", // Gm7
  D: "~@4 [gb2,a3,c4,gb4]@2 ~@6 [gb2,a3,c4,gb4]@3 ~ [gb2,a3,c4,gb4]@2 ~@6", // Gbdim
  E: "[gb2,a3,c4,gb4]@3 ~@2 [gb2,a3,c4,gb4] ~@3 [gb2,a3,c4,gb4]@3", // Gbdim
  F: "[~@4 [bb2,g3,bb3,eb4]@2 ~@6 [bb2,g3,bb3,eb4]@3 ~@7 [bb2,g3,bb3,eb4]@6 [bb2,g3,bb3,eb4]@6 [bb2,g3,bb3,eb4]@3 ~@5 [bb2,g3,bb3,eb4]@3 ~@3]/2", // Eb
  G: "~@4 [eb3,g3,c4,eb4]@6 ~@2 [eb3,g3,c4,eb4]@3 ~ [eb3,g3,c4,eb4]@2 ~@6", H: "[c3,f3,a3,f4,a4]@23 ~",
  I: "~@4 [bb2,g3,bb3,eb4]@2 ~@6 [bb2,g3,bb3,eb4]@3 ~@7 [bb2,g3,bb3,eb4]@2", // Eb
  J: "~@4 [gb2,a3]@8 [gb2,a3,c4,gb4]@3 ~ [gb2,a3,c4,gb4]@2 ~@6, ~@2 [c4,gb4] ~@9", // Gbm Gbdim Cdim
  K: "[[g2,g3,bb3,d4,f4]@6 ~@6 [g2,g3,bb3,d4,f4] ~@9 [g2,g3,bb3,d4,f4]@6 ~@2 [g2,g3,bb3,d4,f4] ~@9 [g2,g3,bb3,d4,f4]@6 ~@2]/2", // Gm7
  L: "[~@4 [bb2,g3,bb3,eb4]@2 ~@6 [bb2,g3,bb3,eb4]@3 ~@7 [bb2,g3,bb3]@6 g4@2 bb4@3 ~ [bb2,g3,bb3,c5]@2 d5 eb5@2 ~ d5@2 [bb2,g3,bb3,eb4,bb4]@3 ~ g4@2, ~@11 eb4 ~@2 [bb2,g3,bb3]@3 ~@7]/2", // Eb C7 Eb
  M: "~@4 [a3,d4,f4]@6 ~@2 [a3,d4,f4]@3 ~ [a3,d4,f4]@2 ~@6", // Dm
  N: "[[g2,g3,bb3,d4,f4]@6 ~@6 [g2,g3,bb3,d4,f4] ~@9 [bb2,g3,bb3,eb4]@6 [bb2,g3,bb3,eb4]@6 [bb2,g3,bb3,eb4]@3 ~@5 [bb2,g3,bb3,eb4]@3 ~@3]/2", // Gm7 Eb
  O: "[bb2,bb3,d4,f4]@3 ~@9 [bb2,bb3,d4,f4]@3 ~ [bb2,bb3,d4,f4]@2 ~@6", // Bb
  P: "[bb2,f3,c4,f4,a4]@11 ~ [gb3,c4,gb4,a4]@11 ~", // F Gbdim
  Q: "[[g2,g3,bb3,d4,f4]@6 ~@6 [g2,g3,bb3,d4,f4]@3 ~ [g2,g3,bb3,d4,f4]@2 ~@4 [bb2,g3,bb3,eb4]@6 ~@2 [bb2,g3,bb3,eb4] ~@9 [bb2,g3,bb3,eb4]@6 ~@2]/2", // Gm7 Eb
  R: "[bb2,f3,c4,f4,a4]@11 ~@3 gb4@10, ~ [gb3,a4], ~@13 c4@11", // F Gbm
  S: "[[g3,bb3,d4,f4]@6 ~@6 [g3,bb3,d4,f4] ~@9 [bb2,g3,bb3,eb4]@6 [bb2,g3,bb3,eb4]@6 [bb2,g3,bb3,eb4]@3 ~@5 [bb2,g3,bb3,eb4]@3 ~@3]/2", // Gm7 Eb
  T: "[[g2,g3,bb3,d4,f4]@6 ~@6 [g2,g3,bb3,d4,f4] ~@9 a3@2 a3@6 [gb2,a3,db4,f4,a4] ~@9 [gb2,a3,db4,f4,a4]@2 ~@6, ~@11 [gb2,db4,f4,a4]@4 ~@9]/2", // Gm7 Gbm
  U: "~@4 [e3,g3,c4,e4]@6 ~@2 [e3,g3,c4,e4]@3 ~ [e3,g3,c4,e4]@2 ~@6", V: "[bb2,g3,bb3,d4]@23 ~",
  W: "[[gb2,a3,c4,gb4,c5]@23 ~]/2", // Gbdim
})).s("gm_piano").gain(0.3)

// bass · electric bass finger · "Electric Bass"
const bass = note(`<
  A B C@2 D E F@2 G H I@2 J@2 K@2 L H I@2 J@2 K@2 L H M N O P Q R S T U@2 V W X Y Z AA AB@2 V W AC@2 AD AE AF AG@2 H C@2
  D E F@2 G H ~
>`.pickRestart({
  A: "g2 f2", B: "eb2@6 d3@2 bb2 a2@2 f2", C: "[g2@6 ~@6 g2 ~@9 g2@6 g2@6 g2@3 ~@5 g2@4 ~@2]/2",
  D: "~@2 gb2@3 ~ gb2@2 gb2 ~@3", E: "gb2@6 ~@4 gb2@3 ~@5 gb2@4 a2@2",
  F: "[bb2@6 ~@6 bb2@4 ~@6 bb2@6 bb2@6 bb2@3 ~@5 bb2@4 a2@2]/2", G: "g2@2 c2@3 ~ c2@2 c2 ~@3", H: "f2",
  I: "[g1@10 bb1@20 ~@4 bb1@3 ~@5 bb1@4 ~@2]/2", J: "[gb1@5 c2@4 gb2@6 ~@2 gb2 ~@3 gb2@3]/2",
  K: "[eb2@10 eb2@2 ~@10 eb2@6 eb2@6 eb2@3 ~@5 eb2@4 ~@2]/2", L: "~@2 c2@3 ~ c2@2 c2 ~@3", M: "eb2 bb1 eb2 g2",
  N: "f2@3 c2@3 f2@3 bb2@2 a2", O: "g2 f2 eb2 d2", P: "eb2 d2 bb1 f1", Q: "eb2@6 eb2@3 ~@2 eb2", R: "eb2 d2 eb2 e2",
  S: "~@2 f2@4 f2@3 c2@3", T: "d2 f2 a2 f2", U: "[d2@6 ~@6 d2 ~@9 eb2@6 eb2@6 eb2@3 ~@5 eb2@6]/2", V: "bb1 a1 bb1 f2",
  W: "bb2 d3 a2 f2", X: "bb2 a2 g2 f2", Y: "eb2 g2 f2 eb2", Z: "d2 f2 eb2 d2", AA: "c2 eb2 d2 c2",
  AB: "[d2@6 ~@6 d3 ~@9 eb3@6 eb2@6 eb2@3 ~@5 eb2@6]/2", AC: "[d2@6 ~@6 d2 ~@9 gb2@8 gb2@4 ~@6 gb2@2 ~@6]/2",
  AD: "bb2@2 ~@4 bb2@2 bb2 ~@3", AE: "~@2 e2@3 ~ e2@2 e2 ~@3", AF: "eb2", AG: "gb2/2",
})).s("gm_electric_bass_finger").gain(0.4)

// drums · kick
const kick = s("bd").struct("<~@2 A@9 B A B A B A@11 B A@3 B@3 A@16 B A@11 ~>".pickRestart({
  A: "x ~ x", B: "x ~@4 x ~@2 x ~@3",
})).gain(0.3)

// drums · rim
const rim = s("rim").struct("<~@17 [~@5 x ~@3 x ~@2] ~@7 [~@5 x ~@6] ~@27 [~@5 x ~@6] ~@9>").gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@2 A@7 B A C A@5 ~ A C A@5 D A@7 E A@7 F A@8 C A@2 D A@7 B ~>".pickRestart({
  A: "~ x ~ x", B: "~@5 x ~@3 x ~@2", C: "~@3 x ~@5 x ~ x", D: "~@9 x!3", E: "~@3 x ~@5 x!3", F: "~@5 x ~@3 x!3",
})).gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<[x ~@2 x ~ x!2 ~@2 x ~ x] [x ~@2 x ~ x!2 ~@5] ~@61>").gain(0.3)

// drums · crash
const crash = s("cr").struct("<~ [~@3 x] ~@60 x>").gain(0.4)

// drums · ride
const ride = s("rd").struct("<~@2 A@7 B C@7 B A B A@4 C B C@2 A@2 C@4 A@7 B A@3 B A B A B C B@3 A@7 B ~>".pickRestart({
  A: "x ~@2 x ~ x!2 ~@2 x ~ x", B: "x ~@2 x ~ x!2 ~@2 x ~@2", C: "x!4",
})).gain(0.3)

stack(flute, trumpet, alto_sax, tenor_sax, trombone, piano, bass, kick, rim, snare, hihat, crash, ride)