Strudelify
KeyE♭ majorTempo182 bpm
0:00/0:00
// Buyo — Lucky Chops
// 182 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/4903555; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 199 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(182/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.

// chords · trumpet
const trumpet = note(`<
  ~@16 A B C D A B C D A B C D A B C E F@3 G H@4 I@3 J K@4 A B C D A B C D A B C D A B C E L@3 G H@4 I@3 M N@4 ~@16 O
  ~@3 O ~@3 O ~@3 O ~@3 O@3 P O@3 P O@3 P O@3 P O@3 P O@3 P O@3 P O@3 ~ A B C D A B C D A B C D A B C E L@3 G H@4 I@3 M
  Q@4 L@3 G H@4 I@3 R S T ~ U@7 ~
>`.pickRestart({
  A: "~@2 [c5,eb5]!4 ~@2", B: "[c5,eb5]!2 ~@2 [c5,eb5]!4", C: "~@2 [bb4,d5]!4 ~@2",
  D: "[bb4,d5]!2 ~ [bb4,d5] [ab4,c5]@2 [bb4,d5] ~", E: "[bb4,d5]!2 ~@2 c4@4", F: "[f4 g4@39 ~@8]/3",
  G: "g4@6 f4@2 g4@6 g4 ab4", H: "[g4@3 f4 c4@22 ~@2 f4@4]/4", I: "[b4 c5@39 ~@8]/3", J: "bb4@6 ab4@2 bb4@6 bb4 c5",
  K: "[bb4@6 ab4@2 eb4 f4@47 ~@8]/4", L: "[g4@5 ~]/3", M: "bb4@3 ab4 bb4@3 c5", N: "[bb4@3 ab4 f4@24 ~@4]/4",
  O: "~@2 ab4@2 ~@4 ab4 ~@7", P: "~@6 f4@6 g4 ~@3", Q: "[bb4@3 ab4 f4@22 ~@2 c4@4]/4",
  R: "[bb4,d5]@5 [ab4,c5]@6 [bb4,d5]@5", S: "~ [c5,eb5]@7 [bb4,d5]@8", T: "[ab4,c5]@5 ~@3", U: "[~ [f4,c5]@50 ~@5]/7",
})).s("gm_trumpet").gain(0.4)

// other · trombone
const trombone = note(`<
  ~@16 A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C E F@3 G H@4 I@3 J
  K@4 ~@16 L ~@3 L ~@3 L ~@3 L ~@3 L@3 M L@3 M L@3 M L@3 M L@3 M L@3 M L@3 M L@3 ~ A B C D A B C D A B C D A B C E F@3 G
  H@4 I@3 J N@4 F@3 G H@4 I@3 O P Q ~ R@7 ~
>`.pickRestart({
  A: "~@2 eb4!4 ~@2", B: "eb4!2 ~@2 eb4!4", C: "~@2 d4!4 ~@2", D: "d4!2 ~ d4 c4@2 d4 ~", E: "d4!2 ~@2 c4@4",
  F: "[eb4@5 ~]/3", G: "d4@6 c4@2 d4@6 d4 eb4", H: "[d4@3 c4 ab3@22 ~@2 c4@4]/4", I: "[gb4 g4@39 ~@8]/3",
  J: "f4@3 eb4 f4@3 g4", K: "[f4@3 eb4 c4@24 ~@4]/4", L: "~@2 eb4@2 ~@4 eb4 ~@7", M: "~@6 c4@6 d4 ~@3",
  N: "[f4@3 eb4 c4@22 ~@2 eb3@4]/4", O: "f4@5 eb4@6 f4@5", P: "~ g4@7 f4@8", Q: "eb4@5 ~@3", R: "[~ eb4@50 ~@5]/7",
})).s("gm_trombone").gain(0.4)

// other · french horn · "Baritone Horn"
const french_horn = note(`<
  ~@16 A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C E F@3 G H@4 I@3 J
  K@4 ~@16 L ~@3 M ~@3 M ~@3 M ~@3 M@3 N M@3 N M@3 N M@3 N M@3 N M@3 N M@3 N M@3 ~ A B C D A B C D A B C D A B C E F@3 G
  H@4 I@3 J O@4 F@3 G H@4 I@3 P Q R ~ S@7 ~
>`.pickRestart({
  A: "~@2 g4!4 ~@2", B: "g4!2 ~@2 g4!4", C: "~@2 f4!4 ~@2", D: "f4!2 ~ f4 eb4@2 f4 ~", E: "f4!2 ~@2 c4@4",
  F: "[eb4@5 ~]/3", G: "d4@6 c4@2 d4@6 d4 eb4", H: "[d4@3 c4 ab3@22 ~@2 c4@4]/4", I: "[gb4 g4@39 ~@8]/3",
  J: "f4@3 eb4 f4@3 g4", K: "[f4@3 eb4 c4@24 ~@4]/4", L: "~@2 eb4@2 ~@4 eb4 ~@7", M: "~@2 c4@2 ~@4 c4 ~@7",
  N: "~@6 ab3@6 bb3 ~@3", O: "[f4@3 eb4 c4@22 ~@2 eb3@4]/4", P: "f4@5 eb4@6 f4@5", Q: "~ g4@7 f4@8", R: "eb4@5 ~@3",
  S: "[~ c4@50 ~@5]/7",
})).s("gm_french_horn").gain(0.4)

// bass · tuba · "Sousaphone"
const bass = note(`<
  A B C D A E F G H I J K H L M N O P Q K H I J K H I J K H I R S H I J K H I T U H I J K H L M N O P Q K H L V W H I J
  K H I R S X I Y Z AA AB AC AD H I T U AE AF AG AH O AI AJ AK X I AL AM H I J K AN L AO K H I J K AN L AO AP H I J AQ
  AN L AO AR AS AT@2 AU AV AW AX AY AX@5 AZ BA BB BC@12 BD@2 BE BF BG P Q K H I J AK H I J K H I J BH X I BI BJ BK BL
  BM@2 X I BN K BO BP BQ BR BS@2 ~@16 BT@4 ~
>`.pickRestart({
  A: "f2@3 f2 ~@4", B: "~@2 ab2!2 ~ ab2 a2 ~", C: "bb2@3 bb2 ~@4",
  D: "c3@2 ~@4 [g2,ab2] [a2,bb2] c3@2 ~@2 ab2@2 ~@2, ~@8 b2 ~@7", E: "~@2 ab2!2 ~ ab2 a2!2",
  F: "~@2 a2@2 bb2@3 ~ bb2@3 ~ bb2@3 ~", G: "c3@3 ~ c3@3 ~ c3@3 ~ f3@4", H: "f2@3 f2 ~@2 f2!2",
  I: "~ f2 ab2!2 ~ ab2 a2 ~", J: "bb2@3 bb2 ~ ab2 bb2 ~", K: "c3 ~ bb2 ~ ab2 ~ g2 ~", L: "~ f2 ab2!2 ~ ab2 a2!2",
  M: "~ a2 bb2 bb1 bb2 ab2 bb2 ab2", N: "c3 eb2 c3@2 c3@2 f3@2", O: "f2 ~@3",
  P: "~@12 [c3,db3,d3,eb3] [e3,f3,gb3,g3,ab3,a3,bb3,b3] [b3,c4,db4,d4,eb4] [eb3,e3,f3,gb3,g3,ab3,a3,bb3]",
  Q: "[b2,c3,db3,d3] ~@5 bb2@2 ~@2 ab2@2 bb2@2 ~@2, bb2@3 ~@5", R: "~ a2 bb2 bb1 bb2 ab2 bb2 ~",
  S: "c3 ~ c2@2 bb2@2 ~@2 ab2@2 ~@2 g2@2 ~@2", T: "bb2@6 bb2@2 ~@4 b2!4", U: "c3 ~ bb2 ~ ab2 ~ g2 ~, b2 ~@15",
  V: "~@2 bb2@2 bb2@2 bb2@2 bb2@2 bb2@2 ~@2 c3 ~", W: "~@4 c3@2 ~@2 c3@2 ~ c3@2 ab2@3", X: "f2@3 f2 ~@2 eb2 f2",
  Y: "bb2 ~ bb1 ~ bb2 ~ b2 ~", Z: "c3 c2 bb2 ~ ab2 ~ g2 ~", AA: "f2@2 f2 f3", AB: "f2!2 ab2@2 ab2@2 a2@2",
  AC: "ab2@2 c2@3 c2 ~ c2", AD: "eb2!4 e2!4", AE: "f2!2 f3 f2@2 f2 f3 ~", AF: "f2!2 ab2!2 ~ ab2 a2 ~",
  AG: "bb2 bb1 bb2 ~ b2 b1 b2 ~", AH: "c3 ~ c3 ~ c3 ~ f3 ~", AI: "~@2 ab2@3 a2@3", AJ: "bb2@4 ~ ab2 bb2 ab2",
  AK: "c3!2 ~ c3 ~ f2 f3 ~", AL: "bb2 ~ bb1@2 bb2@4 b2 ~ b1@2 b2@4", AM: "c3 ~ c2@2 bb2@2 ~@2 ab2@2 g2@4 ~@2",
  AN: "f2@3 f2 ~ f2!3", AO: "bb2!2 b2!2", AP: "c3 ~ c2@2 ab2 ~ ab1@2 bb2 ~ bb1@2 g2@2 ~@2", AQ: "c3!2 ~ c3 ~@2 ab2 ~",
  AR: "c3 ~@3 c3 ab2@3", AS: "f2 ~ f2 ~ f2@2 eb2 f2", AT: "~ f2!2 ~ f2@2 eb2 f2", AU: "~ f2!2 ~ f2 ~ eb2@2",
  AV: "f2!4 f2@2 eb2 f2", AW: "~ f2!3 f2@2 eb2 f2", AX: "~ f2!5 eb2 f2", AY: "~ f2!3 ab2!2 g2 f2", AZ: "~ f2!5 ~@2",
  BA: "eb2@5 ~@3 eb2@5 ~@3", BB: "e2@5 ~@3 e2@5 ~@3", BC: "f2@2 ~ eb2@3 e2 ~", BD: "f2@2 f2 ~ f2@2 f2 ~", BE: "c2!8",
  BF: "c2!6 f3@2", BG: "f2 ~@7", BH: "c3@2 c3@2 ~@4 eb3 d3 [c3,db3] b2 bb2 a2 [g2,ab2] gb2", BI: "bb2@3 bb2 ~@2 b2 b1",
  BJ: "c3 ~ c2@2 ab2 ~ ab1@2 bb2 ~ bb1@2 g2 ~ g1@2", BK: "f2@3 f2@3 eb2 f2", BL: "~ f2 ab2!2 ~ ab2 bb2 ~",
  BM: "bb2 ~ bb2 ~ bb2 ~ bb2 ~", BN: "bb2 bb1 bb2 b2", BO: "f2@2 f2@2 f2@2 f2!2", BP: "~ f2 ab2!2 ~ ab2 bb2 ab2",
  BQ: "bb2 ~ bb2 ~ bb2 ~ b2 ~", BR: "c3@5 ~@3 ab2@5 ~@3", BS: "f2/2", BT: "[~@13 f2@42 ~@9]/4",
})).s("gm_tuba").gain(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~@6 A B C D C D C D C D E ~ C D C D C D C D C D C D C D C E C E C E C E C E C E@3 B@2 E ~ C D C D C D C D C D C D C D
  C E C E C E C E C E C E@3 B@2 E F C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D G@14 B@2 H@7 ~ H@4 B@4 E
  ~ C D C D C D C D C D C D C D C E C E C E C E C E C E C E C E ~@23
>`.pickRestart({
  A: "~@3 x", B: "x!4", C: "x ~@2 x", D: "~ x ~@2", E: "x", F: "~@2 x ~@2 x ~@2", G: "x!2", H: "x!3 ~",
})).gain(0.4)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@6
  [x!3 ~]
  ~@187
  [~@13 x!3]
  [~ x!3 ~ x!4 ~ x!3 ~ x!2]
  [x ~ x!4 ~ x!3 ~ x!4 ~]
  [x!3 ~ x!2 ~@10]
  ~
>`).gain(0.2)

// drums · snare
const snare = s("sd").struct(`<
  ~@6 A B C@8 D C@29 ~@2 D C@6 E C@22 ~@2 D F C@30 ~@16 G@7 ~ G@4 ~@4 D C@31 H@7 D ~@15
>`.pickRestart({
  A: "~ x!3", B: "x!3 ~", C: "~ x", D: "x", E: "~@8 x ~@2 x ~@4", F: "~@2 x ~@2 x ~@2", G: "~@5 x ~@2", H: "x!2",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@7 A ~@38 B C ~@30 B C ~@46 D@2 E@7 F E@4 G@4 H ~@54>".pickRestart({
  A: "~@3 x", B: "x ~ x ~ x!3 ~", C: "x!3 ~ x ~ x ~", D: "x!4", E: "~@5 x ~@2", F: "~ x", G: "x!2", H: "x",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@16 A ~@15 B C B C B C B C B C B C D@2 ~@2 A ~@15 B C B C B C B C B C B C D@2 ~@2 A E ~@30 F@8 G@6 ~@14 H@4 A ~@15 B
  C B C B C B C B C B C B C B I ~@23
>`.pickRestart({
  A: "x", B: "~ x ~ x", C: "~@2 x!2 ~@2 x ~", D: "~ x ~@3 x ~@2", E: "~@2 x ~@2 x ~@2", F: "x ~ x ~ x ~ x!2",
  G: "x ~@3 x ~@2 x", H: "x!2", I: "~@2 x!2 ~@4",
})).gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct("<~@7 A ~@9 B ~@28 C D ~ B ~@5 E ~@22 C D ~@18 F ~@36 G ~@9 B ~@53>".pickRestart({
  A: "~@5 x ~@2", B: "~@3 x", C: "x ~ x ~ x!3 ~", D: "x!3 ~ x ~ x ~", E: "~@13 x ~@2", F: "x", G: "~@3 x ~ x ~@10",
})).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@6 A B A C@7 ~@2 A C@5 A C@7 ~@12 D@2 ~@4 A C@4 E C@8 ~@12 D@2 ~@4 A C@15 A C@5 A C@7 ~@8 D@6 C@2 B@7 ~ B@4 D@4 ~@2 A
  C@13 ~@15 F G@7 H ~@15
>`.pickRestart({
  A: "~ x!3", B: "x!3 ~", C: "x!4", D: "~ x ~ x", E: "x!2 ~@2", F: "~@3 x", G: "~ x!2 ~@2 x!2 ~", H: "~ x!2 ~ x ~@3",
})).gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@17 A ~@31 A ~@5 B ~@79 C ~@9 A ~@53>".pickRestart({
  A: "~@5 x ~@2", B: "~@8 x ~@2 x ~@4", C: "x",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct("<~@8 A ~@8 B A ~@5 A ~@24 B A ~@30 C A ~@21 A ~@23 D@12 ~@5 B A ~@50 E ~>".pickRestart({
  A: "x", B: "~ x", C: "~@2 x ~@2 x ~@2", D: "~@3 x", E: "~@7 x ~@8",
})).gain(0.4)

// drums · ride
const ride = s("rd").struct("<~@184 A B C ~@4 D E F G H I J ~>".pickRestart({
  A: "x!2", B: "x ~@7 x ~@3 x!2 ~ x", C: "x", D: "~@2 x!14", E: "x!16", F: "x!10 ~ x!4 ~", G: "x!4 ~ x!4 ~@4 x!3",
  H: "~ x!3 ~ x!4 ~ x!3 ~ x!2", I: "x ~ x!4 ~ x!3 ~ x!4 ~", J: "x!3 ~ x!2 ~@10",
})).gain(0.15)

stack(
  trumpet, trombone, french_horn, bass, kick, kick_soft, snare, low_tom, hihat, mid_tom, open_hat, high_tom, crash, ride
)

More by Lucky Chops