Strudelify

Roddy Ricch The Box

Rickeytherealist1

KeyD♭ majorTempo60 bpm
0:00/0:00
// Roddy Ricch The Box — Rickeytherealist1
// 60 bpm, 4/4, key Db major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 5 "B♭ Trumpet" trumpet (copy of ch 2 "B♭ Clarinet" clarinet); ch 7 "Horn in F" french horn (copy of ch 3 "Alto Saxophone" alto sax); ch 8 "Mellophone" french horn (copy of ch 3 "Alto Saxophone" alto sax); ch 11 "Baritone Horn" french horn (copy of ch 4 "Tenor Saxophone" tenor sax); ch 12 "Euphonium (Treble Clef)" tuba (copy of ch 4 "Tenor Saxophone" tenor sax); ch 14 "Sousaphone" tuba (copy of ch 13 "Tuba" tuba)
// note: Transcription provider: pdmx. https://musescore.com/score/5979374; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 38 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(60/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · clarinet · "B♭ Clarinet"
const clarinet = note("<A B C D E F G H I@2 J K L ~@6 M L ~@3 L ~@2 N E F G H I@2 J O P L>".pickRestart({
  A: "~@24 [f4,f5]@6 [g4,g5] [ab4,ab5]", B: "[bb4,bb5]@8 ~@4 db5 ~ c5 ~", C: "~@4 db5 ~ c5 ~@5 db5 ~ c5 ~",
  D: "~@8 db5@2 ~@2 c5@2 ~@14 bb4!2 ab4!2",
  E: "bb4@2 ab4!2 bb4@2 ~@2 bb4!2 ab4!2 bb4@2 ab4!2 bb4@2 ~@2 bb4!2 ab4!2 bb4@2 ab4!2 bb4@2 ~@2",
  F: "bb4!4 c5@2 bb4@2 ab4@2 ~@2 bb4!4 c5@2 bb4@2 ab4@2 ~@10",
  G: "db5!2 ~ db5 eb5@2 db5@2 c5@2 ~@2 db5!2 db5@2 eb5@4 f5@4 c5@4 ~@4", H: "~@10 db5!6 eb5@4 f5@2 db5@2 c5@4 ~@4",
  I: "[bb4,db5]@2 [ab4,c5]@2 [bb4,db5]@2 [ab4,c5]@2 ab4 [bb4,db5]@7 ~@2 eb5!2 gb5@2 f5@2 ~@4 bb4@2 ab4@2, ~@9 c5 ~@22", // Bbm Ab Bbm Ab Bbm
  J: "bb4@2 ab4@2 bb4@2 ab4@2 bb4 c5@7 f5@2 f5@2 ~@4 ab5@6 gb5 f5",
  K: "gb5@8 eb5@3 eb5@2 gb5@3 f5@4 ~@2 f5 gb5 a5@4 ~@4", L: "[f5,bb5,db6,f6] ~@3",
  M: "~@24 [f5,bb5]!2 ~ [f5,bb5] [eb5,a5]@2 ~@2", N: "~@28 bb4!2 ab4!2",
  O: "gb5@8 eb5@3 eb5@2 gb5@3 f5@4 ~@2 f5 eb5 c5@4 ~@4",
  P: "bb4@3 [bb4,db5]@2 [bb4,db5]@3 [bb4,f5]@8 ~@6 [f5,ab5] [gb5,bb5] [a5,c6]@4 ~@4", // Bbm Bb5 Fm Gb Am
})).s("gm_clarinet").gain(0.5)

// other · alto sax · "Alto Saxophone"
const alto_sax = note("<A B C D E F G H I@2 J K L ~@6 M L ~@3 L ~@2 N E F G H I@2 J O P L>".pickRestart({
  A: "~@24 f4@6 g4 ab4", B: "bb4@8 ~@4 db5 ~ c5 ~", C: "~@4 db5 ~ c5 ~@5 db5 ~ c5 ~",
  D: "~@8 db5@2 ~@2 c5@2 ~@14 bb4!2 ab4!2",
  E: "bb4@2 ab4!2 bb4@2 ~@2 bb4!2 ab4!2 bb4@2 ab4!2 bb4@2 ~@6 bb4@2 ab4!2 bb4@2 ~@2",
  F: "bb4!4 c5@2 bb4@2 ab4@2 ~@2 bb4!4 c5@2 bb4@2 ab4@2 ~@2 c5@8", G: "bb4@4 eb5 f5 c5 ~",
  H: "db5!2 ~ db5 eb5@2 db5@2 c5@2 ~@6 eb5@4 f5@2 db5@2 c5@4 ~@4",
  I: "db5@2 c5@2 db5@2 c5@2 c5 db5@7 ~@2 eb5!2 gb5@2 f5@2 ~@4 bb4@2 ab4@2",
  J: "c5@2 db5@2 c5@2 db5@2 bb4 c5@7 ~@2 eb5!2 gb5@2 f5@2 ~@8", K: "gb5@8 eb5@3 eb5@2 gb5@3 f5@4 ~@2 db5 eb5 f5@4 ~@4",
  L: "f5 ~@3", M: "~@24 f5!2 ~ f5 eb5@2 ~@2", N: "~@28 bb4!2 ab4!2",
  O: "gb5@8 eb5@3 eb5@2 gb5@3 f5@4 ~@2 f5 eb5 c5@4 ~@4", P: "bb4@2 db5@2 c5@2 f5 ~",
})).s("gm_alto_sax").gain(0.5)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note("<A B C D E F G H I@2 J K L ~@6 M L ~@3 L ~@2 N O F G H I@2 J P Q L>".pickRestart({
  A: "~@3 f3", B: "bb3@8 ~@4 db4 ~ c4 ~", C: "~@16 bb3@3 bb3@2 bb3@3 db4@8", D: "eb4@8 ~@6 eb4!2 f4@8 ~@4 bb4!2 ab4!2",
  E: "bb4@2 ab4!2 bb4@2 ~@2 bb4!2 ab4!2 bb4@2 ab4!2 bb4@2 ~@6 bb4@2 ab4!2 bb4@2 ~@2",
  F: "bb3!4 c4@2 bb3@2 ab3@2 ~@2 bb3!4 c4@2 bb3@2 ab3@2 ~@2 c4@8",
  G: "db4!2 ~ db4 eb4@2 db4@2 c4@2 ~@2 db4!2 db4@2 eb4@4 f4@4 c4@4 ~@4",
  H: "db4!2 ~ db4 eb4@2 db4@2 c4@2 ~@6 eb4@4 f4@4 c4@4 ~@4",
  I: "bb3@2 ab3@2 bb3@2 ab3@2 eb4 f4@7 ~@2 eb4!2 gb4@2 f4@2 ~@8",
  J: "bb3@2 ab3@2 bb3@2 ab3@2 f4 ab4@7 f4@2 f4@2 ~@4 ab4@6 gb4 f4", K: "gb4@8 eb4@3 eb4@2 gb4@3 f4@4 ~@4 a4@4 ~@4",
  L: "bb4 ~@3", M: "~@24 bb4!2 ~ bb4 a4@2 ~@2", N: "~@28 bb4!2 ab4!2",
  O: "bb4@2 ab4!2 bb4@2 ~@2 bb4!2 ab4!2 bb4@2 ab4!2 bb4@2 ~@6 bb3@2 ab3!2 bb3@2 ~@2",
  P: "gb4@8 eb4@3 eb4@2 gb4@3 f4@4 ~@4 c4@4 ~@4", Q: "bb3@3 db4@2 db4@3 ~@4 bb4@4 a4@4 ~@4 a4@2 ~ a4 a4@2 ~@2",
})).s("gm_tenor_sax").gain(0.5)

// chords · trombone
const trombone = note("<~ A B C D C B C E@2 F G H ~@3 I J K L H ~@3 H ~@3 D C B C M@2 F G N H>".pickRestart({
  A: "[bb3,db4,f4] [ab3,c4,eb4]", B: "[bb3,db4,f4]", C: "[gb3,bb3,db4] [f3,ab3,c4]", D: "[f3,bb3,db4]",
  E: "bb3 ab3 bb3 ab3 [bb3,db4,f4]@4 [ab3,c4,eb4]@8", F: "bb3@2 ab3@2 bb3@2 ab3@2 db4 [ab3,c4,eb4]@7 [ab3,c4,f4]@16",
  G: "[gb3,bb3,db4] [a3,c4,eb4]", H: "[bb3,db4,f4] ~@3",
  I: "~@2 [bb3,db4,f4] ~ [bb3,db4,f4] ~ [bb3,db4,f4] ~ [bb3,db4,f4] ~ [bb3,db4,f4] ~ [bb3,db4,f4] ~ [bb3,db4,f4] ~", // Bbm
  J: "~@4 [bb3,db4,f4]@2 ~@2 [bb3,db4,f4]@2 ~@2 [bb3,db4,f4]@2 ~@2 [a3,c4,eb4]@3 [a3,c4,eb4] [a3,c4,eb4]@2 ~@2 [a3,c4,eb4]@3 [a3,c4,eb4] [a3,c4,eb4]@2 ~@2", // Bbm Adim
  K: "[bb3,db4,f4]@3 [bb3,db4,f4] ~@2 [bb3,db4,f4]@4 ~@2 [bb3,db4,f4] ~ [bb3,db4,f4] ~", // Bbm
  L: "gb3@3 [gb3,bb3]@2 [gb3,bb3,db4]@3 [gb3,bb3,db4,gb4]@8 [f3,a3,c4,f4]@8 [bb3,db4,f4]!2 ~ [bb3,db4,f4] [a3,c4,eb4]@2 ~@2", // Gb F Bbm Adim
  M: "bb3 ab3 bb3 ab3 [bb3,db4,f4]@4 [ab3,c4,f4]@8", // Bbm Fm
  N: "bb3@3 [bb3,db4]@2 [bb3,db4,f4]@3 [bb3,db4,f4]@8 [a3,c4,eb4]@16", // Bbm Adim
})).s("gm_trombone").gain(0.5)

// bass · tuba
const bass = note("<~ A B C D E D E D E D F G H G I J K J L G H G I J K J M N O P ~ G H G Q R S>".pickRestart({
  A: "bb2@4 ~@3 f2", B: "bb1@8 ~@6 db2!2",
  C: "eb2@4 eb2@4 eb3@4 ~@2 eb2 e2 f2@4 ~@4 f3@2 eb3 [c3,db3] [ab2,bb2] [f2,g2] ~@2", // Dbmaj7 Absus2 Fsus2
  D: "bb2@2 ~ bb2@2 bb2 bb2@2 ~@2 bb2!2 db3 ~ db3@2", E: "eb2@2 ~ eb2@2 eb2 f2@2 ~@2 f2!2 c3@2 c3@2",
  F: "~@20 gb3@4 f3!2 ~ f3 f3@4", G: "bb3@2 ~ bb3@2 bb3 bb3@2 ~@2 bb2 c3 db3 c3 bb2@2",
  H: "eb3@4 ~@2 eb3@4 eb3@2 f3@4 ~@4 gb3@4 f3!2 ~ f3 f3@4",
  I: "eb3@4 ~@2 eb3@4 eb3@2 f3@4 ~@8 f3 eb3 ~ db3 eb3@2 db3@2", J: "bb2@2 ~ bb2@2 bb2 bb2@2 ~@2 bb2 c3 db3 c3 bb2@2",
  K: "eb2@4 ~@2 eb2@4 eb2@2 f2@4 ~@4 gb2@4 f2!2 ~ f2 f2@4", L: "eb2@4 ~@2 eb2@4 eb2@2 f2@4 ~@8 f3!2 ~ f3 a3@4",
  M: "eb2@4 ~@2 eb2@4 eb2@2 f2@4 ~@4 gb3@4 f3!2 ~ f3 f3@2 ~@2", N: "bb3 ~@3", O: "eb3 ~ eb3!2 ~@8 f3 eb3 db3 c3",
  P: "bb2 ~@3", Q: "eb3@2 ~ eb3@2 eb3 f3@2 ~@6 f3@2", R: "bb3@4 bb3!2 ~ bb3 bb3@4 bb3@4 a3@4 ~@8 f3@4",
  S: "[bb2,bb3] ~@3", // Bb
})).s("gm_tuba").gain(0.5)

// drums · kick
const kick = s("bd").struct("<~@4 A@7 B C@16 B ~@3 C@3 D E B>".pickRestart({
  A: "x ~@2 x ~ x!2 ~@3 x!3 ~ x ~", B: "x", C: "x ~@2 x ~ x!2 ~@2 x!2 ~@2 x ~ x", D: "x ~@2 x ~ x!2 ~@2 x!2 ~@5",
  E: "x ~@3 x!2 ~ x!2 ~@3 x ~@3 x ~@11 x ~@3",
})).gain(0.5)

// drums · rim
const rim = s("rim").struct("<~@4 A@7 B C@16 B ~@3 C@3 D E B>".pickRestart({
  A: "x ~@2 x ~ x!2 ~@3 x!3 ~ x ~", B: "x", C: "x ~@2 x ~ x!2 ~@2 x!2 ~@2 x ~ x", D: "x ~@2 x ~ x!2 ~@2 x!2 ~@5",
  E: "x ~@3 x!2 ~ x!2 ~@3 x ~@3 x ~@11 x ~@3",
})).gain(0.5)

stack(clarinet, alto_sax, tenor_sax, trombone, bass, kick, rim)