Strudelify

shots

LMFAO

KeyE♭ majorTempo120 bpm
0:00/0:00
// shots — LMFAO
// 120 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 6 "Bb Trumpet" trumpet (copy of ch 3 "Alto Saxophone" alto sax); ch 5 "Baritone Saxophone" baritone sax (copy of ch 4 "Tenor Saxophone" tenor sax); ch 9 "Baritone Horn" french horn (copy of ch 4 "Tenor Saxophone" tenor sax); ch 11 "Trombone" trombone (copy of ch 4 "Tenor Saxophone" tenor sax)
// note: Transcription provider: pdmx. https://musescore.com/score/528321; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 49 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest.
// 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("<~@9 [c5!2 g5 c6] ~@6 [c5 c6 ~@2] ~@15 [c5 c6 ~@2] ~@16>").s("gm_flute").gain(0.3)

// other · clarinet · "Bb Clarinet"
const clarinet = note("<~@9 [c4!2 g4 c5] ~@6 [c5 c6 ~@2] ~@15 [c5 c6 ~@2] ~@16>").s("gm_clarinet").gain(0.3)

// other · alto sax · "Alto Saxophone"
const alto_sax = note("<~@9 [c4!2 g4 c5] ~@6 [c4 c5 ~@2] ~@15 [c4 c5 ~@2] ~@16>").s("gm_alto_sax").gain(0.3)

// other · french horn · "F Mellophone"
const french_horn = note("<~@9 [c4!2 g4 c4] ~@6 [c4 c5 ~@2] ~@15 [c4 c5 ~@2] ~@16>").s("gm_french_horn").gain(0.3)

// bass · tuba · "C Tuba"
const bass = note("<~@6 A@3 B C D C D C D E ~@8 C D C D C D@2 E ~@8 C D C D C D@2 ~>".pickRestart({
  A: "c2 ~@3", B: "c2!2 g2 c3", C: "c2@4 eb2@4 d2@3 c2@2 ~@3", D: "c2@2 c2@2 eb2@2 eb2@2 d2@3 c2@2 ~@3", E: "c2 c3 ~@2",
})).s("gm_tuba").gain(0.3)

// drums · high tom
const high_tom = s("ht").struct("<A B C@7 D E@6 F C@3 G C@3 G E@7 F C@3 G C@3 G E@7 H>".pickRestart({
  A: "x!2", B: "x!4", C: "x ~@3 x ~@3 x ~@2 x!2 ~ x ~", D: "x ~@3 x!9 ~ x ~", E: "x!16", F: "x!9 ~@7", G: "x!3 ~",
  H: "x!13 ~@3",
})).gain(0.3)

// drums · china
const china = s("cr").struct("<~@2 A@7 B C@6 A D@3 A D@3 A C@7 A D@3 A D@3 A C@7 ~>".pickRestart({
  A: "~ x ~ x", B: "~@3 x", C: "~ x ~@2", D: "x ~@3 x ~@3 x ~@2 x ~@2 x ~",
})).gain(0.3)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@2 A@14 B A@3 B A@3 B A@7 B A@3 B A@3 B A@7 C>".pickRestart({
  A: "x ~@3 x ~@3 x ~@2 x ~@2 x ~", B: "x!3 ~", C: "~@4 x!4 ~@8",
})).gain(1.51)

// drums · whistle
const whistle = s("ballwhistle:1").struct("<~@2 A@14 ~ A@3 ~ A@3 ~ A@7 ~ A@3 ~ A@3 ~ A@7 ~>".pickRestart({
  A: "~@3 x",
})).gain(0.39)

// drums · whistle
const whistle_2 = s("ballwhistle:0").struct(`<
  ~@6 A ~@2 B ~@4 C@2 D E@3 A E@3 A ~@4 C@3 D E@3 A E@3 A ~@4 C@3 F
>`.pickRestart({
  A: "x", B: "~@8 x!4 ~@4", C: "x ~@4 x ~@5 x!2 ~@3", D: "x ~@3 x!2 ~@2 x ~@3 x ~@3", E: "x!4", F: "~@4 x!4 ~@8",
})).gain(0.39)

// drums · guiro
const guiro = s("guiro:0").struct("<~@2 [~ x ~ x]!7 ~@40>").gain(6.29)

// drums · guiro
const guiro_2 = s("guiro:4").struct("<~@2 A@4 ~ A@9 ~@9 A@7 ~@9 A@7 ~>".pickRestart({
  A: "~ x ~ x",
})).gain(6.29)

// drums · woodblocks
const woodblocks = s("woodblock:5").struct("<~@20 A ~@3 A ~@11 A ~@3 A ~@8>".pickRestart({
  A: "~ x ~ x",
})).gain(0.43)

stack(
  flute, clarinet, alto_sax, french_horn, bass, high_tom, china, cabasa, whistle, whistle_2, guiro, guiro_2, woodblocks
)