Strudelify

JOHN CENA!!!!!

Jar Panda

KeyB♭ majorTempo100 bpm
0:00/0:00
// JOHN CENA!!!!! — Jar Panda
// 100 bpm, 4/4, key Bb 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 2 "Oboe" oboe (copy of ch 1 "Flute" flute); ch 11 "B♭ Trumpet" trumpet (copy of ch 3 "B♭ Clarinet" clarinet); ch 14 "Bass Trombone" trombone (copy of ch 13 "Trombone" trombone)
// note: Transcription provider: pdmx. https://musescore.com/score/1626411; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 16 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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("<~@2 A@3 B C D C E F B C D ~ G>".pickRestart({
  A: "[~@4 bb4@5 a4@5 g4@5 gb4@5]/3", B: "~@2 g5@2 a5 f5 ~ g5 g5@8", C: "g5@2 bb5@2 a5 f5 ~ g5 g5@8",
  D: "g5@2 g5@2 a5 f5 ~ g5 g5@8", E: "g5 a4", F: "g4 gb4",
  G: "[g4,g5]@2 [bb4,bb5]@2 [a4,a5] [f4,f5] ~ [g4,g5] [g4,g5]@8", // G Bb A F G
})).s("gm_clarinet").gain(0.45)

// other · clarinet · "Bass Clarinet"
const clarinet_2 = note("<A@5 B C D C E F B C D C@2>".pickRestart({
  A: "[bb2 a2 g2 gb2 bb2 a2 g2 gb2]/5", B: "~@2 g3@2 a3 f3 ~ g3 g3@8", C: "g3@2 bb3@2 a3 f3 ~ g3 g3@8",
  D: "g3@2 g3@2 a3 f3 ~ g3 g3@8", E: "g4@2 ~ g4 g4@2 g4@2 f4@2 ~ f4 f4@2 f4@2",
  F: "eb4@2 ~ eb4 eb4@2 eb4@2 d4@2 ~ d4 d4@2 d4@2",
})).s("gm_clarinet").gain(0.4)

// other · alto sax · "Alto Saxophone"
const alto_sax = note("<~@2 A@3 B C B C D E B C B C F>".pickRestart({
  A: "[~@4 c5@5 c5@5 c5@5 c5@5]/3", B: "g4 bb4", C: "a4 f4", D: "g4@2 ~ g4 g4@2 g4@2 f4@2 ~ f4 f4@2 f4@2",
  E: "eb4@2 ~ eb4 eb4@2 eb4@2 d4@2 ~ d4 d4@2 d4@2", F: "g4@2 bb4@2 a4 f4 ~ g4 g4@8",
})).s("gm_alto_sax").gain(0.45)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note("<A@5 B C B C D E B C B F G>".pickRestart({
  A: "[g3 f3 eb3 d3 g3 f3 eb3 d3]/5", B: "~@2 g3@2 bb3 f3 ~ g3@2 g3 bb3 d4 ~ c4 ~ bb3",
  C: "~@2 bb3@2 a3 f3 ~ g3 g3@2 bb3 d4 ~ c4 ~ bb3", D: "g3@2 ~ g3 g3@2 g3@2 f3@2 ~ f3 f3@2 f3@2",
  E: "eb3@2 ~ eb3 eb3@2 eb3@2 d3@2 ~ d3 d3@2 d3@2", F: "~@2 bb3@2 a3 f3@3 f3@8", G: "g3@2 bb3@2 a3 f3 ~ g3 g3@8",
})).s("gm_tenor_sax").gain(0.45)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note("<A@5 B C B C D E B C B C F>".pickRestart({
  A: "[g2 f2 eb2 d2 g2 f2 eb2 d2]/5", B: "g2 bb2", C: "a2 f2", D: "g2@8 f3@2 ~ f3 f3@2 f3@2",
  E: "eb3@2 ~ eb3 eb3@2 eb3@2 d3@2 ~ d3 d3@2 d3@2", F: "g2@2 bb2@2 a2 f2 ~ g2 g2@8",
})).s("gm_baritone_sax").gain(0.45)

// other · french horn · "Horn in F"
const french_horn = note("<A@5 B C D C E F B C D C G>".pickRestart({
  A: "[bb3 a3 g3 gb3 bb3 a3 g3 gb3]/5", B: "~@2 g3@2 a3 f3 ~ g3 g3@8", C: "g3@2 bb3@2 a3 f3 ~ g3 g3@8",
  D: "g3@2 g3@2 a3 eb3 ~ g3 g3@8", E: "bb3 a3", F: "g3 gb3", G: "g3@2 a3@2 a3 f3 ~ g3 g3@8",
})).s("gm_french_horn").gain(0.45)

// other · french horn · "Baritone Horn"
const french_horn_2 = note("<A@5 B C B C D E B C B C F>".pickRestart({
  A: "[bb2 a2 g2 gb2 bb2 a2 g2 gb2]/5", B: "g3 bb3", C: "a3 f3", D: "g3@2 ~ g3 g3@2 g3@2 f3@2 ~ f3 f3@2 f3@2",
  E: "eb3@2 ~ eb3 eb3@2 eb3@2 d3@2 ~ d3 d3@2 d3@2", F: "g3@2 bb3@2 a3 f3 ~ g3 g3@8",
})).s("gm_french_horn").gain(0.45)

// other · trombone
const trombone = note("<A@5 B C B C D E B C B C F>".pickRestart({
  A: "[bb3 a3 g3 gb3 bb3 a3 g3 gb3]/5", B: "g3 bb3", C: "a3 f3", D: "g3@2 ~ g3 g3@2 g3@2 f3@2 ~ f3 f3@2 f3@2",
  E: "eb3@2 ~ eb3 eb3@2 eb3@2 d3@2 ~ d3 d3@2 d3@2", F: "g3@2 bb3@2 a3 f3 ~ g3 g3@8",
})).s("gm_trombone").gain(0.45)

// drums · kick
const kick = s("bd").struct("<[x ~@4 x ~@2] [~@2 x ~@4 x] [~ x] [~ x ~@4 x ~] [~@3 x ~@4] [x!2]!9 x [x ~ x ~@4 x ~@8]>")
  .gain(0.4)

// drums · rim
const rim = s("rim").struct("<~@2 A ~@2 B C B@2 D@2 B E B@3>".pickRestart({
  A: "~@3 x ~@2 x ~@9", B: "~@4 x ~@2 x ~@4 x ~@3", C: "~@4 x ~@2 x ~@4 x ~ x ~", D: "~@4 x ~@2 x ~@2 x ~@3 x ~",
  E: "~@4 x ~@2 x ~@4 x ~@2 x",
})).gain(0.45)

// drums · snare
const snare = s("sd").struct("<~@2 A B C D E D@2 F@2 D G D@3>".pickRestart({
  A: "~@8 x ~@2 x ~ x ~@2", B: "x ~ x ~@2 x ~ x ~@2 x ~ x!2 ~ x", C: "x!3 ~ x!12", D: "x!4 ~ x!2 ~ x!4 ~ x!3",
  E: "x!4 ~ x!2 ~ x!4 ~ x ~ x", F: "x!4 ~ x!2 ~ x!3 ~@2 x ~ x", G: "x!4 ~ x!2 ~ x!4 ~ x!2 ~",
})).gain(0.45)

stack(clarinet, clarinet_2, alto_sax, tenor_sax, baritone_sax, french_horn, french_horn_2, trombone, kick, rim, snare)