Strudelify

were not gonna take it

This piece

KeyE majorTempo120 bpm
0:00/0:00
// were not gonna take it — This piece
// 120 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/174164; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 50 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · "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(`<
  ~@5 A@2 B@2 C@2 D ~ E@2 F G H I J@3 ~ F G H I K L D ~ E@2 ~@4 M N O P Q A@2 B@2 R@2 S@2
>`.pickRestart({
  A: "[e5@2 e5@2 b4@2 e5 f#5@2 b4@2 ~@5]/2", B: "[g#5@2 ~ g#5 f#5!2 g#5 a5@2 e5 ~@6]/2",
  C: "[g#5@2 g#5@2 f#5 e5@2 f#5@2 g#5@2 ~@2 e5@2 e5]/2", D: "e5 ~", E: "b5/2", F: "~ e5!3", G: "f#5 ~ b4 b4@2 f#5@2 ~",
  H: "~ g#5!3", I: "a5@2 a5 g#5@2 f#5 e5 ~", J: "[~@2 g#5@2 g#5 g#5@2 a5@2 ~@2 f#5 f#5@2 e5 e5@3 ~@6]/3",
  K: "~@2 g#5@2 g#5 g#5@2 a5", L: "~@3 f#5 f#5@2 e5@2", M: "e5@2 ~ e5@3 e5@2", N: "f#5@2 ~ f#5@3 f#5@2",
  O: "g5@2 ~ g5@3 g5@2", P: "g5", Q: "g5@4 g#5@2 f#5 e5", R: "[g#5@2 g#5@2 f#5 e5@2 f#5@2 g#5@2 ~@2 g#5@2 g#5]/2",
  S: "e5/2",
})).s("gm_flute").gain(0.11)

// other · trombone
const trombone = note("<~@10 A B C B C ~ D ~ E ~ D F D ~ D ~ E ~ D B C G@2 H I J K L M N O P ~@4 Q@2 R@2>".pickRestart({
  A: "~@5 e3@2 e3", B: "e3@3 e3 d#3@3 d#3", C: "c#3@3 c#3 b2@3 b2", D: "~@3 b2 c#3 e3 c#3 b2",
  E: "~@3 b2 c#3 f#3 c#3 b2", F: "e3", G: "b3/2", H: "d3 ~ d3@2", I: "c#3 b2", J: "d3 ~ f#3@2", K: "e3 d3",
  L: "e3@2 ~ e3@3 e3@2", M: "f#3@2 ~ f#3@3 f#3@2", N: "g3@2 ~ g3@3 g3@2", O: "g3", P: "g3@4 g#3@2 f#3 e3",
  Q: "[g#3@2 g#3@2 f#3 e3@2 f#3@2 g#3@2 ~@2 e3@2 e3]/2", R: "e3/2",
})).s("gm_trombone").gain(0.26)

// other · french horn · "Baritone Horn"
const french_horn = note(`<
  ~@11 A B A B C D C E C D C F C D C G C D A B A B H I H J K L M N O ~@4 P@2 Q@2
>`.pickRestart({
  A: "e3@3 e3 d#3@3 d#3", B: "c#3@3 c#3 b2@3 b2", C: "e3", D: "f#3", E: "a3", F: "~ b2@7", G: "a2", H: "d3 ~ d3@2",
  I: "c#3 b2", J: "c#3@2 b2!2", K: "e2@2 ~ e2@3 e2@2", L: "f#2@2 ~ f#2@3 f#2@2", M: "g2@2 ~ g2@3 g2@2", N: "g2",
  O: "g2@4 g#2@2 f#2 e2", P: "[g#2@2 g#2@2 f#2 e2@2 f#2@2 g#2@2 ~@2 g#3@2 g#3]/2", Q: "g#3/2",
})).s("gm_french_horn").gain(0.08)

// other · clarinet · "Bb Clarinet"
const clarinet = note(`<
  ~@5 A@2 B@2 ~@4 C@2 D E D F D E G H D E D F D E G ~ I@2 J K L M N O P Q@2 A@2 B@2 R@2 S@2
>`.pickRestart({
  A: "[e4@2 e4@2 b3@2 e4 f#4@2 b3@2 ~@5]/2", B: "[g#4@2 ~ g#4 f#4!2 g#4 a4@2 e4 ~@6]/2", C: "b3/2", D: "e4!4",
  E: "f#4!4", F: "a4!4", G: "e4", H: "~ b3@7", I: "b4/2", J: "d4 ~ d4@2", K: "c#4 b3", L: "d4 ~ f#4@2", M: "e4 d4",
  N: "e4@2 ~ e4@3 e4@2", O: "f#4@2 ~ f#4@3 f#4@2", P: "g4@2 ~ g4@3 g4@2", Q: "g4/2",
  R: "[g#4@2 g#4@2 f#4 e4@2 f#4@2 g#4@2 ~@2 e4@2 e4]/2", S: "e4/2",
})).s("gm_clarinet").gain(0.11)

// other · alto sax · "Alto Saxophone"
const alto_sax = note("<~@13 A B C D E F G@3 H C D E F I@2 A B A B J K L M N O P Q@2 R@2 S@2 T@2 U@2>".pickRestart({
  A: "e4@3 e4 d#4@3 d#4", B: "c#4@3 c#4 b3@3 b3", C: "~ e4!3", D: "f#4 ~ b3 b3@2 f#4@2 ~", E: "~ g#4!3",
  F: "a4@2 a4 g#4@2 f#4 e4 ~", G: "[~@2 g#4@2 g#4 g#4@2 a4@2 ~@2 f#4 f#4@2 e4 e4@9]/3", H: "~ b3@7",
  I: "[~@2 g#4@2 g#4 g#4@2 a4@2 ~@2 f#4 f#4@2 e4!2]/2", J: "d4 ~ d4@2", K: "c#4 b3", L: "d4 ~ f#4@2", M: "e4@2 d4!2",
  N: "e4@2 ~ e4@3 e4@2", O: "f#4@2 ~ f#4@3 f#4@2", P: "g4@2 ~ g4@3 g4@2", Q: "g4/2",
  R: "[e4@2 e4@2 b3@2 e4 f#4@2 b3@2 ~@5]/2", S: "[g#4@2 ~ g#4 f#4!2 g#4 a4@2 e4 ~@6]/2",
  T: "[g#4@2 g#4@2 f#4 e4@2 f#4@2 g#4@2 ~@2 e4@2 e4]/2", U: "e4/2",
})).s("gm_alto_sax").gain(0.18)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note(`<
  ~@9 A@2 B ~ C D ~ E ~ F ~ E G E H I H J H I C D C D K L K M N O P Q@2 R@2 S@2 T@2 U@2
>`.pickRestart({
  A: "[g#3@2 g#3@2 f#3 e3@2 f#3@2 g#3@2 ~@2 e3@2 e3]/2", B: "e3 ~", C: "e3@3 e3 d#3@3 d#3", D: "c#3@3 c#3 b2@3 b2",
  E: "~@3 b2 c#3 e3 c#3 b2", F: "~@3 b2 c#3 f#3 c#3 b2", G: "e3", H: "e2", I: "f#2@2 ~ b2 c#3 e3 c#3 b2",
  J: "a2@2 ~ b2 c#3 f#3 c#3 b2", K: "d3 ~ d3@2", L: "c#3 b2", M: "c#3@2 b2!2", N: "e2@2 ~ e2@3 e2@2",
  O: "f#2@2 ~ f#2@3 f#2@2", P: "g2@2 ~ g2@3 g2@2", Q: "g2/2", R: "[e3@2 e3@2 b2@2 e3 f#3@2 b2@2 ~@5]/2",
  S: "[g#3@2 ~ g#3 f#3!2 g#3 a3@2 e3 ~@6]/2", T: "[g#2@2 g#2@2 f#2 e2@2 f#2@2 g#2@2 ~@2 e2@2 e2]/2", U: "e2/2",
})).s("gm_baritone_sax").gain(0.33)

// bass · clarinet · "Bass Clarinet"
const bass = note("<~@15 A B A C A B D E F G H I J K L M L M N O P Q ~@3 R S T@2 U@2 V@2 W ~>".pickRestart({
  A: "e3!8", B: "f#3!8", C: "a2!8", D: "e3!6 ~@2", E: "~ b2@7", F: "~ e3!3", G: "f#3 ~ b2 b2@2 f#3@2 ~", H: "~ g#3!3",
  I: "a3@2 a3 g#3@2 f#3 e3 ~", J: "~@2 g#3@2 g#3 g#3@2 a3", K: "~@3 f#3 f#3@2 e3@2", L: "e3@3 e3 d#3@3 d#3",
  M: "c#3@3 c#3 b2@3 b2", N: "d3 ~ d3@2", O: "c#3 b2", P: "d3 ~ f#3@2", Q: "e3@2 d3!2", R: "g3", S: "g3@4 g#3@2 f#3 e3",
  T: "[e3@2 e3@2 b2@2 e3 f#3@2 b2@2 ~@5]/2", U: "[g#3@2 ~ g#3 f#3!2 g#3 a3@2 e3 ~@6]/2",
  V: "[g#3@2 g#3@2 f#3 e3@2 f#3@2 g#3@2 ~@2 e3@2 e3]/2", W: "e3 ~",
})).s("gm_electric_bass_finger").gain(0.24)

// other · trumpet · "Bb Trumpet"
const trumpet = note("<~@15 A B C D E@3 F A B C D G H I J I J K ~ L M ~@3 N O P@2 Q@2 R@2 S@2>".pickRestart({
  A: "~ e4!3", B: "f#4 ~ b3 b3@2 f#4@2 ~", C: "~ g#4!3", D: "a4@2 a4 g#4@2 f#4 e4 ~",
  E: "[~@2 g#4@2 g#4 g#4@2 a4@2 ~@2 f#4 f#4@2 e4 e4@3 ~@6]/3", F: "~ b3@7", G: "~@2 g#4@2 g#4 g#4@2 a4",
  H: "~@6 f#4@2 f#4@4 e4 ~ e4@2", I: "e4@3 e4 d#4@3 d#4", J: "c#4@3 c#4 b3@3 b3", K: "d4 ~@3", L: "d4 ~ f#4@2",
  M: "e4@2 d4!2", N: "g5", O: "g5@4 g#5@2 f#5 e5", P: "[e4@2 e4@2 b3@2 e4 f#4@2 b3@2 ~@5]/2",
  Q: "[g#4@2 ~ g#4 f#4!2 g#4 a4@2 e4 ~@6]/2", R: "[g#3@2 g#3@2 f#3 e3@2 f#3@2 g#3@2 ~@2 g#4@2 g#4]/2",
  S: "[e5 e5, e4]/2",
})).s("gm_trumpet").gain(0.18)

// other · trumpet · "Bb Trumpet"
const trumpet_2 = note("<~@13 A B C D C E C D C F C D C G C D A B A B H I H I ~@3 J ~@5 K@2 L@2>".pickRestart({
  A: "e4@3 e4 d#4@3 d#4", B: "c#4@3 c#4 b3@3 b3", C: "e4", D: "f#4", E: "a4", F: "~ b3@7", G: "a3", H: "d4 ~ d4@2",
  I: "c#4 b3", J: "g4", K: "[g#4@2 g#4@2 f#4 e4@2 f#4@2 g#4@2 ~@2 e4@2 e4]/2", L: "e4/2",
})).s("gm_trumpet").gain(0.17)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@11 [x!8]!3 ~@36>").gain(0.2)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@49 [~@13 x!2 ~]>").gain(0.45)

// drums · crash
const crash = s("cr").struct("<~@15 A ~@7 A ~@5 A@11 ~@8 A B>".pickRestart({
  A: "x", B: "~@15 x",
})).gain(0.3)

// drums · cowbell
const cowbell = s("cb").struct("<~ A B A B A B A B A B ~@4 A B A B A B A B A B A B A B ~@13 A@6 ~@2>".pickRestart({
  A: "x!4", B: "x!3 ~ x!4",
})).gain(0.45)

stack(
  flute, trombone, french_horn, clarinet, alto_sax, baritone_sax, bass, trumpet, trumpet_2, kick, kick_soft, snare,
  mid_tom, crash, cowbell
)