Strudelify

Nipsey Hussle Victory lap

Rickey C Battle

KeyG majorTempo80 bpm
0:00/0:00
// Nipsey Hussle Victory lap — Rickey C Battle
// 80 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 3 "Alto Saxophone" alto sax (copy of ch 7 "Horn in F" french horn); ch 9 "Baritone Horn" french horn (copy of ch 4 "Tenor Saxophone" tenor sax)
// note: Transcription provider: pdmx. https://musescore.com/score/5773569; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 32 bars on a 16-step grid, each part at one level. 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 · clarinet · "B♭ Clarinet"
const clarinet = note("<A ~@4 B ~@2 C D C E F G H I J ~@7 C E K L M H I J>".pickRestart({
  A: "~@4 f#5!4 ~ f#5!2 ~ f#5@2 g5@2", B: "g5 ~@3", C: "~@6 b4 g5", D: "f#5@8 e5 c5 ~ b4 e5 c5 ~ b4", E: "f#5 e5",
  F: "g5@4 ~@2 e5 f#5 g5 f#5 ~ e5 f#5 e5 ~ d5", G: "c5 e5 c5 f#5", H: "e5@4 ~@3 e5 f#5@4 ~@4, ~@8 f5 ~@7",
  I: "~@4 f#5!4 ~ f#5!2 ~ f#5@2 e5@2", J: "~@4 f#5!4 ~ f#5!2 ~ f#5@2 [e5,g5]@2",
  K: "~@4 e5 f#5 g5!2 ~@3 g5 f#5@2 f#5@2", L: "~@4 e5 b4 ~ b4 e5 b4 ~ b4 ~@2 [b4,b5] [c5,d5,c6,d6]",
  M: "[c5,c6] e5 c5 f#5", // C
})).s("gm_clarinet").gain(0.5)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note("<A ~@4 B ~@2 C D@2 E F G@3 H ~@7 C I@2 J K G@2 H>".pickRestart({
  A: "~@4 f#4!4 ~ f#4!2 ~ f#4@2 g4@2", B: "[g4,b4] ~@3", C: "~@6 b3 g4",
  D: "[~@3 [b3,g4]@2 ~@2 [a3,f#4]@2 ~@2 [g3,g4]@2 ~ b3 g4]/2", E: "f#4 e4",
  F: "g4@4 ~@2 e4 f#4 g4 f#4 ~ e4 f#4 e4 ~ d4", G: "~@4 f#4!4 ~ f#4!2 ~ f#4@2 e4@2",
  H: "~@4 f#4!4 ~ f#4!2 ~ f#4@2 [e4,g4]@2", I: "[~@6 b4@4 ~@4 a4@4 ~@2 e4 f#4 g4!2 b4@3 g4 f#4@2 f#4@2]/2",
  J: "g4@4 e4 b3 ~ b3 ~@4 b3 [c4,d4] b3 [c4,d4]", K: "c4@4 f#4!4 ~ f#4!2 ~ f#4@2 e4@2",
})).s("gm_tenor_sax").gain(0.5)

// other · trumpet · "B♭ Trumpet"
const trumpet = note("<A ~@4 B ~@2 C D E F G H I J K ~@7 L M N O P Q J R>".pickRestart({
  A: "~@4 [d5,f#5]!4 ~ [d5,f#5]!2 ~ [d5,f#5]@2 [e5,g5]@2", B: "[g5,b5] ~@3", C: "~@6 b4 g5",
  D: "f#5@8 e5 c5 ~ b4 e5 c5 ~ b4", E: "e5@4 ~@2 b4 g5", F: "f#5 e5",
  G: "[g5,g6]@4 ~@2 e5 f#5 g5 f#5 ~ e5 f#5 e5 ~ [d5,d6]", H: "[c5,c6] e5 c5 f#5",
  I: "e5@4 ~@3 e5 f#5@4 ~@4, ~@8 f5 ~@7", J: "~@4 f#5!4 ~ f#5!2 ~ f#5@2 e5@2",
  K: "~@4 f#5!4 ~ f#5!2 ~ [f#5,f#6]@2 [e5,g5,g6]@2", L: "~@6 [b4,b5] [g5,g6]", M: "[f#5,f#6] [e5,e6]",
  N: "~@4 e5 f#5 g5!2 ~@3 g5 f#5@2 f#5@2", O: "~@4 e5 b4 ~ b4 e5 b4 ~ b4 ~@2 [b4,b5] [c5,d5,c6,d6]",
  P: "[c5,c6] e5 c5 [f#5,f#6]", Q: "[e5,e6]@4 ~@3 [e5,e6] [f#5,f#6]@4 ~@4, ~@8 [f5,f6] ~@7",
  R: "~@4 [d5,f#5]!4 ~ [d5,f#5]!2 ~ [f#5,d6,f#6]@2 [e5,g5,e6,g6]@2", // D Em
})).s("gm_trumpet").gain(0.5)

// other · french horn · "Horn in F"
const french_horn = note("<A ~@4 B ~@2 C D E F G H I J K ~@7 C F L M H I J N>".pickRestart({
  A: "~@4 f#5!4 ~ f#5!2 ~ f#5@2 g5@2", B: "g5 ~@3", C: "~@6 b4 g5", D: "f#5@8 e5 c5 ~ b4 e5 c5 ~ b4",
  E: "e5@4 ~@2 b4 g5", F: "f#5 e5", G: "g5@4 ~@2 e5 f#5 g5 f#5 ~ e5 f#5 e5 ~ d5", H: "c5 e5 c5 f#5",
  I: "e5@4 ~@3 e5 f#5@4 ~@4, ~@8 f5 ~@7", J: "~@4 f#5!4 ~ f#5!2 ~ f#5@2 e5@2",
  K: "~@4 [a4,f#5]!4 ~ [a4,f#5]!2 ~ [a4,f#5]@2 [b4,e5,g5]@2", L: "~@4 e5 f#5 g5!2 ~@3 g5 f#5@2 f#5@2",
  M: "g5@4 ~@4 e5 b4 ~ b4 ~@2 b4 [c5,d5]", N: "~@4 [a4,d5]!4 ~ [a4,d5]!2 ~ [a4,d5]@2 [b4,e5,g5]@2",
})).s("gm_french_horn").gain(0.5)

// chords · trombone
const trombone = note("<~ A@2 B C A@2 B C D E F E G H E I ~@8 D J E G H E I>".pickRestart({
  A: "[a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3", // Am
  B: "[g3,b3,e4]@4 ~@4 [g3,b3,e4]!2 ~ [g3,b3,e4] ~ [g3,b3,e4] [f#3,a3,d4]@2", C: "[g3,b3,e4] ~",
  D: "[a3,c4,f#4]@3 ~ [g3,b3,e4]@4", E: "[g3,b3,e4]!2", F: "[a3,c4,f#4] [g3,b3,e4]", G: "[a3,c4,e4]",
  H: "[g3,c4,e4] [a3,c4,f#4]", I: "~@4 [a3,d4,f#4]!4 ~ [a3,d4,f#4]!2 ~ [a3,d4,f#4]@2 [b3,e4,g4]@2",
  J: "[a3,c4,e4] [g3,b3,e4]", // Am Em
})).s("gm_trombone").gain(0.3)

// bass · tuba
const bass = note("<A B C D E B C D E B C D F B C G H I J K L I J M N O P Q I J R S>".pickRestart({
  A: "~@15 b2", B: "c3@2 c3@2 ~@11 b2", C: "c3@2 c3@2 ~@8 d3@2 ~ d3", D: "e3@2 e3@2 ~@8 d3@2 ~ d3",
  E: "[e3,g3,b3]@2 [e3,g3,b3]@2 ~@6 e3 f#3 g3 f#3 e3 d3", F: "e3@2 e3@2 ~@6 e3 f#3 g3 f#3 e3 d3",
  G: "e3 ~ e3 ~ [e3,g3] ~ [e3,g3] ~", H: "[e3,g3,b3]@2 ~@8 e3 f#3 g3 f#3 e3 d3", I: "c3@2 c3@2 ~@2 c3!2 ~ c3!2 ~@4 b2",
  J: "c3@2 c3@2 ~@2 c3!2 ~ c3!2 ~ d3 b2!2 ~", K: "e3@2 e3@2 ~@2 e3!2 ~ e3!2 ~@2 b2!2 ~",
  L: "e3@2 e3@2 ~@2 [e3,g3,b3]!2 ~@2 e3 f#3 g3 f#3 e3 d3", M: "e3@2 e3@2 ~@2 e3!2 ~ e3!2 ~@4 e3",
  N: "[e3,g3]@2 [e3,g3]@2 ~@2 [e3,g3,b3]!2 ~@2 e3 f#3 g3 f#3 e3 d3", O: "c3@3 ~ b2 b2@3", P: "a2@8 ~@4 d3!2 ~ d3",
  Q: "e3@2 e3@2 ~@2 e3!2 ~ e3!2 ~ g3 f#3 e3 d3", R: "e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ [e3,g3] ~ [e3,g3] ~",
  S: "[e3,g3,b3] ~@5 d3 e3", // Em
})).s("gm_tuba").gain(0.3)

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