Strudelify

Nipsey Hussle x Victory Lap

Ty Garrett

KeyG♭ majorTempo85 bpm
0:00/0:00
// Nipsey Hussle x Victory Lap — Ty Garrett
// 85 bpm, 4/4, key Gb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 5 "Alto Saxophone" alto sax (copy of ch 6 "Horn in F" french horn); ch 12 "Sousaphone" tuba (copy of ch 11 "Sousaphone" tuba)
// note: Transcription provider: pdmx. https://musescore.com/score/5852969; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 26 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(85/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 · piccolo
const piccolo = note("<A B@2 C@2 D E F G H ~@5 I J K L K M K N O P Q>".pickRestart({
  A: "~@6 [bb5,bb6] [gb6,gb7]", B: "[[f6,f7]@4 eb7@4 eb7@4 ~@2 [bb5,bb6] [gb6,gb7], ~ eb6@2 ~]/2",
  C: "[[f6,f7]@4 eb7@4 eb7@4 ~@2 [eb6,eb7] [f6,f7], ~ eb6@2 ~]/2", // F Eb F
  D: "[gb6,gb7] [f6,f7] [eb6,eb7] [db6,db7] [gb6,gb7] [f6,f7] [eb6,eb7] [db6,db7] [gb6,gb7] [f6,f7] [eb6,eb7] [db6,db7] [bb5,bb6]@2 [eb6,eb7] [f6,f7]", // Gb F Eb Db Gb F Eb Db …
  E: "[gb6,gb7] [eb6,eb7] [f6,f7] [gb6,gb7] [ab6,ab7] [f6,f7] [gb6,gb7] [ab6,ab7] [bb6,bb7]@4 bb7 [ab6,ab7] ~ [gb6,gb7]", // Gb Eb F Gb Ab F Gb Ab …
  F: "[eb6,eb7]", G: "~@4 [f6,f7]!4 ~ [f6,f7] [f6,f7]@2 [f6,f7]@2 [eb6,eb7]@2", H: "[eb6,eb7] ~@3",
  I: "~@4 [db6,db7]!4 ~ [db6,db7] [db6,db7]@2 [eb6,eb7]@4", J: "~@4 [f6,f7]!4 ~ [f6,f7] [f6,f7]@2 [gb6,gb7]@4",
  K: "~@4 [f6,f7]!4 ~ [f6,f7]!2 ~ [gb6,gb7]@2 [f6,f7] [eb6,eb7]", L: "~@4 [f6,f7]!4 ~ [f6,f7]!2 ~ [gb6,gb7]@4",
  M: "~@4 [f6,ab6]!4 ~ [f6,ab6]!2 ~ [f6,ab6]@4", N: "~@8 [bb6,bb7]@4 bb7 [ab6,ab7] ~ [gb6,gb7]", O: "[bb6,f7]",
  P: "~@4 [ab6,db7]!4 ~ [ab6,db7]!2 ~ [bb6,eb7]@4", Q: "[bb6,eb7] ~@3",
})).s("gm_piccolo").gain(0.25)

// other · clarinet · "B♭ Clarinet"
const clarinet = note("<A B@2 C@2 D E F G H ~@5 I J K L K M K N O P Q>".pickRestart({
  A: "~@6 bb4 gb5", B: "[f5@4 eb5@8 ~@2 bb4 gb5]/2", C: "[f5@4 eb5@8 ~@2 eb5 f5]/2",
  D: "gb5 f5 eb5 db5 gb5 f5 eb5 db5 gb5 f5 eb5 db5 bb4@2 eb5 f5", E: "gb5 eb5 f5 gb5 ab5 f5 gb5 ab5 bb5@5 ab5 ~ gb5",
  F: "eb5", G: "~@4 f5!4 ~ f5 f5@2 f5@2 eb5@2", H: "eb5 ~@3", I: "~@4 db5!4 ~ db5 db5@2 eb5@4",
  J: "~@4 f5!4 ~ f5 f5@2 gb5@4", K: "~@4 f5!4 ~ f5!2 ~ gb5@2 f5 eb5", L: "~@4 f5!4 ~ f5!2 ~ gb5@4",
  M: "~@4 [f5,ab5]!4 ~ [f5,ab5]!2 ~ [f5,ab5]@4", N: "~@8 bb5@5 ab5 ~ gb5", O: "[f5,bb5]",
  P: "~@4 [f5,ab5]!4 ~ [f5,ab5]!2 ~ [gb5,bb5]@4", Q: "[gb5,bb5] ~@3",
})).s("gm_clarinet").gain(0.4)

// other · trumpet · "B♭ Trumpet"
const trumpet = note("<A B@2 C@2 D@2 E F G ~@5 H I J K J L J M N O P>".pickRestart({
  A: "~@6 [bb3,bb4] [gb4,gb5]", B: "[[f4,f5]@4 [eb4,eb5]@8 ~@2 [bb3,bb4] [gb4,gb5]]/2",
  C: "[[f4,f5]@4 [eb4,eb5]@8 ~@2 eb5 f5]/2", D: "[gb5@8 ab5@16 bb5@5 ab5 ~ gb5, eb5@3 ~]/2", E: "[db5,f5]",
  F: "~@4 f5!4 ~ f5 f5@2 f5@2 eb5@2", G: "eb5 ~@3", H: "~@4 db5!4 ~ db5 db5@2 eb5@4", I: "~@4 f5!4 ~ f5 f5@2 gb5@4",
  J: "~@4 f5!4 ~ f5!2 ~ gb5@2 f5 eb5", K: "~@4 f5!4 ~ f5!2 ~ gb5@4", L: "~@4 [f5,ab5]!4 ~ [f5,ab5]!2 ~ [f5,ab5]@4",
  M: "~@8 bb5@5 ab5 ~ gb5", N: "[eb5,f5]", O: "~@4 [f5,ab5]!4 ~ [f5,ab5]!2 ~ [gb5,bb5]@4", P: "[gb5,bb5] ~@3",
})).s("gm_trumpet").gain(0.4)

// other · french horn · "Horn in F"
const french_horn = note("<A B@2 C D E F G H I ~ J K ~@2 L M E N O P Q R S T U>".pickRestart({
  A: "~@6 bb3 gb4", B: "[f4@4 eb4@8 ~@3 gb4]/2", C: "f4 eb4", D: "bb4@3 db5", E: "b4", F: "~@3 gb4", G: "[db4,f4]",
  H: "~@4 db5!4 ~ db5 db5@2 f5@2 eb5@2", I: "eb5 ~@3", J: "~@10 eb4 gb4 bb4@4", K: "ab4 eb4",
  L: "~@4 db5!4 ~ db5 db5@2 eb5@4", M: "bb4 db5 eb5@2", N: "eb5@2 ~ db5", O: "bb4", P: "~@6 bb4 gb5", Q: "f5 eb5@2 ~",
  R: "bb4 db5 ~ eb5", S: "f5@2 ~ bb4 eb5@4", T: "~@4 db5!4 ~ db5!2 ~ [bb4,eb5]@4", U: "[bb4,eb5] ~@3",
})).s("gm_french_horn").gain(0.64)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note("<~ A B C@2 D E F G H ~ I J ~@2 K L M N@2 O P Q R S T>".pickRestart({
  A: "~@6 bb3 gb4", B: "f4@2 eb4 db4", C: "[bb3@4 ~@2 bb3 gb3@3 db4@4 bb3@2]/2", D: "[b3,eb4]@12 db4 eb4@3",
  E: "~@4 f4!4 ~ f4 f4@6", F: "~@4 f4!4 ~ f4!2 ~ gb4@4", G: "~@4 f4!4 ~ f4 f4@2 f4@2 eb4@2", H: "eb4 ~@3",
  I: "~@6 bb3 db4 eb4@8", J: "~@4 [db4,f4]!4 ~ [db4,f4] [db4,f4]@6", K: "~@4 db4!4 ~ db4 db4@2 eb4@4",
  L: "~@4 f4!4 ~ f4 f4@2 gb4@4", M: "~@4 f4!4 ~ f4!2 ~ gb4@2 f4 eb4",
  N: "[~@4 f4!4 ~@4 gb4@2 bb4@4 ab4@4 ~@2 [eb4,gb4]@8]/2", O: "~@4 ab4!4 ~ ab4!2 ~ ab4@4, ~@12 gb4 ~@3", P: "[b3,eb4]",
  Q: "~@4 f4!4 ~ f4!2 ~ gb4@2 ab4@2", R: "[db4,f4]", S: "~@4 [db4,f4]!4 ~ [db4,f4]!2 ~ [eb4,gb4]@4", T: "[bb3,eb4] ~@3",
})).s("gm_tenor_sax").gain(0.27)

// chords · trombone
const trombone = note("<~ A@2 B@2 C@2 D E F G H I F G J K L@2 M N O P Q R S>".pickRestart({
  A: "[b2@6 eb3 ab3]/2", B: "[~@5 db4 ~ [db4,gb4], bb3@7 ~, ~@3 eb4]/2",
  C: "[[gb3,b3,eb4]@19 ~ [gb3,b3,eb4]!4 ~ [gb3,b3,eb4] [gb3,b3,eb4]@6]/2", D: "[gb3,bb3,eb4]",
  E: "~@4 db4!4 ~ db4 db4@2 f4@2 eb4@2", F: "[gb3,b3,eb4] ~ [gb3,b3,eb4] ~ [gb3,b3,eb4] ~ [gb3,b3,eb4] ~",
  G: "[gb3,b3,eb4] ~ [gb3,b3,eb4] ~ [gb3,b3,eb4] ~ [gb3,b3,eb4] [gb3,bb3,db4]", H: "[gb3,bb3,eb4]@3 ~",
  I: "[gb3,bb3,db4,eb4]", J: "~@4 db4!4 ~ db4 db4@2 eb4@4", K: "~@4 db4!4 ~ db4 db4@2 [bb3,db4,f4]@4",
  L: "[gb3,b3,eb4]", M: "[eb3,gb3,bb3]", N: "~@4 [ab3,db4,f4]!4 ~ [ab3,db4,f4]!2 ~ [gb3,db4,f4]@4", O: "[gb3,b3,eb4]!2",
  P: "[gb3,b3,eb4]@2 ~@2 [gb3,b3,eb4]!4 ~ [gb3,b3,eb4] [gb3,b3,eb4]@6", Q: "[f3,bb3,db4,eb4]",
  R: "~@4 [ab3,db4,f4]!4 ~ [ab3,db4,f4]!2 ~ [bb3,eb4,gb4]@4", S: "[bb3,eb4,gb4] ~@3",
})).s("gm_trombone").gain(0.48)

// bass · tuba · "Sousaphone"
const bass = note("<~ A@2 B@2 C D E F G H I J G H K L M N O P Q R S T U>".pickRestart({
  A: "[b1@7 db2]/2", B: "[eb2@7 gb2]/2", C: "b1", D: "b1@8 eb3 ~ db3 ~ bb2 ~ ab2 ~", E: "eb2 ~ eb2 ~ eb2 ~ eb2 ~",
  F: "[eb3,gb3,bb3] ~@7", G: "b2@2 b2@2 ~@5 b1 b1@2 ~@3 gb2", H: "b2@2 b2@2 ~@5 gb2 a2 b2 ~ bb2 ~ gb2",
  I: "eb2@2 eb2@2 ~@5 bb1 bb1@2 ~@3 bb2", J: "eb3@2 eb3@2 ~@6 bb2 db3@2 bb2@2 db3", K: "eb2@2 eb2@2 ~@5 bb1 bb1@2 ~@4",
  L: "bb3 ~@2 gb2", M: "b2 ~@3", N: "~@8 eb3 ~ db3 ~ bb2 ~ ab2 ~", O: "eb2 ~",
  P: "bb3@2 bb3@2 ~@4 eb3 ~ db3 ~ bb2 ~ gb2 ~", Q: "b1@2 b1@2 ~@5 b1 b1@2 ~@3 gb2",
  R: "b2@2 b2@2 ~@5 gb2 a2 bb2 ~ ab2 ~ gb2", S: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ db3 d3", T: "eb3@4 ~@11 db3",
  U: "eb3 ~@3",
})).s("gm_tuba").gain(0.64)

stack(piccolo, clarinet, trumpet, french_horn, tenor_sax, trombone, bass)