Strudelify

Tory Lanez Proud Family

Rickeytherealist

KeyF majorTempo80 bpm
0:00/0:00
// Tory Lanez Proud Family — Rickeytherealist
// 80 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// 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)
// note: Transcription provider: pdmx. https://musescore.com/score/5988381; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 38 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/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("<A B C D ~@24 E F G H E I G J K L>".pickRestart({
  A: "~@15 g5, ~@29 f5@2 ~", B: "~@2 g5@3 f5 f5@2 d5@2 ~ g5@2 g5@6 ~@3 f5@2 g5@2 g5@2 ~@2 d5@2, ~@10 f5@2 ~@17 f5@2 ~",
  C: "f5@2 ~ f5@2 ~ a5@3 ~@2 d5@2 ~@3 c6@2 ~ g5@2 f5 f5@2 g5@2 ~ f5@2 ~ g5@2, ~@2 d5@2 ~ g5@2 ~@3 f5@2 ~@6 a5@2 ~@6 g5@2 ~ f5@2 ~",
  D: "g5@6 ~@2 f5@2 ~ f5@2 ~ f5@2 e5@2 ~ e5@2 ~ e5@2 f5@2 f5@3 ~ d5@2, ~@10 e5@2 ~ e5@2 ~@3 f5@2 ~ f5@2 ~@6 e5@2 ~",
  E: "~@2 gb5 ab5 ~ ab5@2 gb5!2 eb5 gb5 ab5 ab5@4", F: "~@2 gb5 ab5!2 ~ gb5 eb5 gb5 eb5 gb5 ab5 bb5@2 gb5 eb5",
  G: "~@2 db6 bb5 ab5 gb5!2 ab5!2 gb5!2 ab5 ab5@4", H: "~ gb5 f5 gb5 f5 gb5 f5 gb5 f5 gb5 f5 gb5 gb5@2 f5 eb5",
  I: "~@2 eb5@2 ab5@2 ab5!2 b5 bb5 ab5 bb5 gb5 eb5@3", J: "gb5 f5 ~ gb5!2 f5 ~ gb5 f5 gb5 f5 gb5 gb5@2 f5 eb5",
  K: "~@3 eb6@3 eb6@3 [eb6,gb6,eb7]@9 [d6,f6,d7]@9 eb6@4 ~, bb5@9 ~@23", L: "d6@4 ~ [eb6,eb7]@9 ~@18",
})).s("gm_flute").gain(0.5)

// other · flute · soft notes
const flute_soft = note("<~@4 A B C D A E C F G H I J G H I J G H I J G H I J ~@10>".pickRestart({
  A: "~@2 gb4 ab4 ~ ab4@2 gb4!2 eb4 gb4 ab4 ab4@4", B: "~@2 gb4 ab4!2 ~ gb4 eb4 gb4 eb4 gb4 ab4 bb4@2 gb4 eb4",
  C: "~@2 db5 bb4 ab4 gb4!2 ab4!2 gb4!2 ab4 ab4@4", D: "~ gb4 f4 gb4 f4 gb4 f4 gb4 f4 gb4 f4 gb4 gb4@2 f4 eb4",
  E: "~@2 eb4@2 ab4@2 ab4!2 b4 bb4 ab4 bb4 gb4 eb4@3", F: "gb4 f4 ~ gb4!2 f4 ~ gb4 f4 gb4 f4 gb4 gb4@2 f4 eb4",
  G: "[eb5,bb5]@15 ~", H: "[db5,ab5]@15 ~", I: "[b4,bb5]@15 ~", J: "[bb4,ab5]@15 ~",
})).s("gm_flute").gain(0.25)

// other · clarinet · "B♭ Clarinet"
const clarinet = note("<A B C D ~@24 E F G H E I G J K L>".pickRestart({
  A: "~@15 g5, ~@29 f5@2 ~", B: "~@2 g5@3 f5 f5@2 d5@2 ~ g5@2 g5@6 ~@3 f5@2 g5@2 g5@2 ~@2 d5@2, ~@10 f5@2 ~@17 f5@2 ~",
  C: "f5@2 ~ f5@2 ~ a5@3 ~@2 d5@2 ~@3 c6@2 ~ g5@2 f5 f5@2 g5@2 ~ f5@2 ~ g5@2, ~@2 d5@2 ~ g5@2 ~@3 f5@2 ~@6 a5@2 ~@6 g5@2 ~ f5@2 ~",
  D: "g5@6 ~@2 f5@2 ~ f5@2 ~ f5@2 e5@2 ~ e5@2 ~ e5@2 f5@2 f5@3 ~ d5@2, ~@10 e5@2 ~ e5@2 ~@3 f5@2 ~ f5@2 ~@6 e5@2 ~",
  E: "~@2 gb5 ab5 ~ ab5@2 gb5!2 eb5 gb5 ab5 ab5@4", F: "~@2 gb5 ab5!2 ~ gb5 eb5 gb5 eb5 gb5 ab5 bb5@2 gb5 eb5",
  G: "~@2 db6 bb5 ab5 gb5!2 ab5!2 gb5!2 ab5 ab5@4", H: "~ gb5 f5 gb5 f5 gb5 f5 gb5 f5 gb5 f5 gb5 gb5@2 f5 eb5",
  I: "~@2 eb5@2 ab5@2 ab5!2 b5 bb5 ab5 bb5 gb5 eb5@3", J: "gb5 f5 ~ gb5!2 f5 ~ gb5 f5 gb5 f5 gb5 gb5@2 f5 eb5",
  K: "~@3 eb5@3 eb5@3 [eb5,gb5,eb6]@9 [d5,f5,d6]@9 [eb5,gb5]@5, bb4@9 ~@23", L: "[d5,f5]@5 [eb5,gb5,eb6]@9 ~@18",
})).s("gm_clarinet").gain(0.5)

// other · clarinet · "B♭ Clarinet" · soft notes
const clarinet_soft = note("<~@4 A B C D A E C F G H I J G H I J G H I J G H I J ~@10>".pickRestart({
  A: "~@2 gb4 ab4 ~ ab4@2 gb4!2 eb4 gb4 ab4 ab4@4", B: "~@2 gb4 ab4!2 ~ gb4 eb4 gb4 eb4 gb4 ab4 bb4@2 gb4 eb4",
  C: "~@2 db5 bb4 ab4 gb4!2 ab4!2 gb4!2 ab4 ab4@4", D: "~ gb4 f4 gb4 f4 gb4 f4 gb4 f4 gb4 f4 gb4 gb4@2 f4 eb4",
  E: "~@2 eb4@2 ab4@2 ab4!2 b4 bb4 ab4 bb4 gb4 eb4@3", F: "gb4 f4 ~ gb4!2 f4 ~ gb4 f4 gb4 f4 gb4 gb4@2 f4 eb4",
  G: "[eb4,bb4]", H: "[db4,ab4]", I: "[b3,bb4]", J: "[bb3,ab4]",
})).s("gm_clarinet").gain(0.25)

// other · alto sax · "Alto Saxophone"
const alto_sax = note("<A@3 B C D E C F G H I ~@16 C D J C F G H I K L>".pickRestart({
  A: "[~@26 a4@25 g4@26 ~@3 c5@2 ~ g4@2 f4 f4@2 g4@2 ~ f4@2 ~ g4@2, ~@82 a4@2 ~@6 g4@2 ~ f4@2 ~]/3", B: "g4@3 a4@13",
  C: "bb4", D: "ab4", E: "~@2 db5 bb4 ab4 gb4!2 ab4!2 gb4!2 ab4 ab4@4", F: "f4@3 eb4 f4@3 eb4 f4@3 eb4 ~@4",
  G: "ab4@3 gb4 ab4@3 gb4 ~@3 gb4 bb4@3 ab4", H: "bb4@3 ab4 ~@3 db5 b4@3 bb4 ab4@4",
  I: "bb4 ab4 ~ bb4!2 ab4 ~ bb4 ab4 bb4 ab4 bb4 bb4@2 ab4 gb4", J: "~@2 db5 bb4 ab4 gb4!2 ab4!2 gb4!2 ab4 b4@4",
  K: "bb4@3 bb4@3 bb4@3 eb5@9 d5@9 eb5@5", L: "d5@5 eb5@9 ~@18",
})).s("gm_alto_sax").gain(0.5)

// other · alto sax · "Alto Saxophone" · soft notes
const alto_sax_soft = note("<~@12 A B A B A B A B A B A B A B A B ~@10>".pickRestart({
  A: "gb4", B: "f4",
})).s("gm_alto_sax").gain(0.2)

// other · trombone
const trombone = note("<A@4 ~@7 B C D E F G H I J K L M N O P Q R S T U V S T U W X@2>".pickRestart({
  A: "[~@26 [f3,a3,d4]@25 [e3,g3,c4]@26 [g3,bb3,d4]@25 [e3,g3,db4]@26]/4", B: "~@11 db4!2 b3!2 bb3",
  C: "ab3 bb3@3 ab3 bb3@3 eb3@4 ~@10 db4@2 db4@2 b3@2 b3@2 bb3@2",
  D: "ab3 bb3@3 ab3 bb3@3 eb3@4 ~@12 db4@2 db4@2 db4@2 db4@2", E: "eb4@2 ~ ab3!3 ab3@2 ab3@3 bb3 ~@2 db4!2",
  F: "eb4@2 ~ ab3!3 ab3@2 ab3@3 bb3 ~@2 bb3!2", G: "bb3@2 eb4@2 eb4@4 ~ eb4@3 gb4@3 f4",
  H: "f4@2 eb4@2 eb4@4 ~@5 db4 b3 bb3", I: "ab3@2 bb3@2 gb3@2 ~@5 db4 b3 bb3 ab3!2",
  J: "ab3@2 gb3@2 ab3@4 gb3@4 gb3@2 eb3@2 ab3@3 ab3@2 bb3@3 ab3@8",
  K: "~@2 ab3 gb3 ab3@2 gb3 eb3 ab3 gb3 ab3@2 gb3 ~ ab3 gb3",
  L: "ab3@2 ab3 gb3 ab3@2 gb3 ~ ab3 gb3 ab3@2 gb3@2 gb3 ab3",
  M: "b3@3 bb3@2 ab3 bb3@2 gb3@2 eb3@4 ~@4 gb3@2 ab3@2 gb3@2 ab3@4 ab3@2 bb3@2",
  N: "b3@3 bb3@2 bb3@3 gb3@2 eb3@4 ~@6 ab3@2 gb3@2 ab3@4 ab3@2 gb3@2",
  O: "ab3@2 ab3 gb3 ab3@2 gb3 eb3 ~ eb3 bb3@2 ab3!4", P: "ab3@4 ab3@2 gb3@2 ab3@4 gb3@4 ~@4 bb3@4 b3@2 bb3@4 ab3 gb3",
  Q: "ab3@6 gb3 f3 gb3@4 ~@4 bb3@2 bb3@2 bb3@2 bb3@2 b3@2 bb3@4 ab3 gb3",
  R: "ab3@6 gb3 f3 gb3@4 ~@4 ab3@6 gb3 f3 gb3@4 ~@4", S: "[gb3,bb3,eb4]", T: "[f3,ab3,db4]", U: "[ab3,b3,eb4]",
  V: "[f3,ab3,d4]", W: "[f3,ab3,d4] ~",
  X: "[~@3 gb3@3 [gb3,bb3]@3 [eb3,gb3,bb3,eb4]@9 [f3,ab3,d4]@18 ~ [gb3,bb3,eb4]@9 ~@18, eb3@9 ~@55]/2", // Gb Ebm Ddim Ebm
})).s("gm_trombone").gain(0.4)

// other · trombone · soft notes
const trombone_soft = note("<~@4 A B C D A B C E ~@26>".pickRestart({
  A: "[gb3,bb3,eb4]", B: "[f3,ab3,db4]", C: "[ab3,b3,eb4]", D: "[f3,ab3,d4]", E: "[f3,ab3,d4] ~",
})).s("gm_trombone").gain(0.2)

// bass · tuba · "Sousaphone"
const bass = note("<A B C D E F G H E F G H E F G H E F G H E F G H E F G H ~@4 I J K L M N>".pickRestart({
  A: "~@26 d3@3 ~ d3@2", B: "~@3 d3@3 ~@13 c3@3 ~@2 c3@3 ~@2 c3@3", C: "~@13 bb2@3 ~@2 bb2@3 ~ bb2@3 ~@7",
  D: "~@6 a2@3 ~@2 a2@3 ~@2 a2@3 ~@7 db3@6", E: "eb2@2 ~ eb2@2 ~ eb2@2 ~@8", F: "db2@2 ~ db2@2 ~ db2@2 ~@8",
  G: "b1@2 ~ b1@2 ~ b1@2 ~@8", H: "bb1@2 ~ bb1@2 ~ bb1@2 ~@4 d2@4", I: "eb3@2 ~ eb3@2 ~ eb3@2 ~@8",
  J: "db3@2 ~ db3@2 ~ db3@2 ~@4 bb2@2 db3@2", K: "b2@2 ~ b2@2 ~ b2@2 ~@4 ab2 gb2 ab2 a2",
  L: "bb2@2 ~ bb2@2 ~ bb2@2 ~@4 [d2,d3]@4", M: "eb2@9 eb2@3 f2@3 eb2@3 d2@9 bb2@5", N: "d3@5 eb3@9 ~@18",
})).s("gm_tuba").gain(0.4)

stack(flute, flute_soft, clarinet, clarinet_soft, alto_sax, alto_sax_soft, trombone, trombone_soft, bass)

More by Rickeytherealist