Strudelify

thnks fr th mmrs

Fall Out Boy

KeyD♭ majorTempo150 bpm
0:00/0:00
// thnks fr th mmrs — Fall Out Boy
// 150 bpm, 4/4, key Db major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/1974331; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 113 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(150/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 · violin
const violin = note(`<
  A ~ B C D ~@2 E F G H I J@2 K L M@2 N O P Q R S P Q T U V@2 W X Y@2 Z AA AB ~@3 AC AD AE AF AG AH AI@2 AJ AK@2 AL AM
  AN AO V@2 W X Y@2 AP@2 P Q R S P Q AQ ~ AR AS AT AU AR AS AV AW AX AY AZ BA BB@5 V@2 W X Y@2 BC BD V@2 W X Y@2 Z AA
  V@2 W X Y@2 BE@2 BF
>`.pickRestart({
  A: "bb4 ~@3", B: "~ c5@2 ~", C: "~ c5", D: "db5 ~@7", E: "f5@2 eb5@2 db5 bb4@3", F: "eb4 a3 bb3 db4 eb4 db4 eb4 a3",
  G: "db4!8", H: "~@2 db5 bb4 f5@2 eb5@2", I: "db5 bb4 db5 bb4 f5@2 ~@2",
  J: "[db4@2 c4 db4@3 c4 db4@2 c4@2 db4@2 bb4 db5 bb4]/2", K: "db5@2 c5 db5@2 c5 db5@2", L: "db5@2 c5 db5 c5@4",
  M: "[~@4 db5!2 bb4 db5@2 f5@2 eb5 db5@2 db5 bb4]/2", N: "db5@2 bb4 db5@2 bb4 db5@2", O: "c5 db5 c5 db5!2 bb4 ab4 bb4",
  P: "bb3!4", Q: "gb4!4", R: "eb4!4", S: "gb4!2 a3!2", T: "ab3!8", U: "ab3!2 ab4 db5",
  V: "[ab5@3 ab5@2 ab5@2 ab5@2 gb5@2 f5@4 ~]/2", W: "eb5@2 eb5 f5 eb5 db5 ab4@2", X: "eb5!3 f5 eb5@2 db5@2",
  Y: "[f5@4 f5@3 f5@2 f5@2 f5@2 ab4!2 f5]/2", Z: "eb5", AA: "~@3 f5@2 f5@3 f5@3 f5@2 f5@3", AB: "db5 ~@3",
  AC: "~@2 bb3 c4 db4 eb4 db4 c4", AD: "c4", AE: "f4!8", AF: "eb4!2 eb4@2 eb4@2 eb4@2", AG: "db4!4", AH: "a3!8",
  AI: "[~@5 bb4 c5 db5@3 c5 db5@2 db5@2 c5]/2", AJ: "db5@2 bb4@3 bb4 c5 ~", AK: "[db5@2 c5 db5@3 c5 eb5@9]/2",
  AL: "eb5!2 bb4 eb5", AM: "bb4 db5 c5 db5", AN: "c5 db5 c5@6", AO: "a4!2 c6 eb6", AP: "[eb5@7 db4]/2", AQ: "ab3!4",
  AR: "~ bb4!2 c5", AS: "db5@2 ab4!2", AT: "f5!3 gb5", AU: "f5@6 gb5 f5 eb5@8", AV: "f5@2 f5@4 f5@4 gb5@3 f5@3",
  AW: "f5@4 eb5@2 db5 bb4", AX: "f5 eb5@2 db5@2 db5 eb5@2", AY: "c5", AZ: "f5 f5@2 f5@2 eb5 db5@2", BA: "db5 eb5 f5!2",
  BB: "[~@2 bb4@2 bb4!2 c5 db5@7 bb4 f5@2 f5@2 f5@2 eb5 db5 c5@2 db5 c5 db5 c5 db5 c5@8 ~@2]/5", BC: "eb6",
  BD: "~@3 db5", BE: "[eb5,eb6]/2", BF: "bb4@3 ~@5",
})).s("gm_violin").gain(0.4)

// other · viola
const viola = note(`<
  A ~ B C D E F G H@2 I E J@2 E K L@2 M N O@2 P Q R@2 S@2 T@2 U V W@2 X Y Z J@4 I AA AB@2 AC AD@2 AE AF@2 AG@2 AH AI T@2
  U V W@2 AJ@2 AK@2 AL V W@2 X AM AN AO@2 AP AO@3 AP AQ X AR AS AT@5 AU@2 AV V AW@2 AX AY T@2 U V W@2 X AZ T@2 U V W@2
  BA@2 BB
>`.pickRestart({
  A: "bb3 ~@3", B: "~ c4@2 ~", C: "~ c4", D: "db4 bb3!2 c4 db4 c4 bb3 c4", E: "ab3!8", F: "gb3!8",
  G: "c4@2 bb3@2 ab3 f3@3", H: "[~ eb3@2 eb3@2 db4 c4 db4]/2", I: "c4", J: "bb3!8", K: "f3!8",
  L: "[~@4 db4!2 bb3 db4@2 f4@2 eb4 db4@2 db4 bb3]/2", M: "db4@2 bb3 db4@2 bb3 db4@2", N: "c4 db4 c4 db4!2 bb3 ab3 bb3",
  O: "[f4@3 f4@2 f4@2 f4@2 eb4@2 db4@4 ~]/2", P: "c4@2 c4 db4 c4 bb3 f4@2", Q: "c4!3 db4 c4@2 bb3@2",
  R: "[db4@4 db4@3 db4@2 db4@2 db4@2 f4!2 db4]/2", S: "[c4@7 bb3]/2", T: "[db4@3 db4@2 db4@2 db4@2 db4@2 db4@4 ~]/2",
  U: "ab3@2 ab3 eb4 ab3 db4 ab3@2", V: "eb3!3 f3 eb3@2 db3@2", W: "[eb3@4 eb3@3 eb3@2 eb3@2 eb3@2 ab3!2 f3]/2", X: "c3",
  Y: "~@3 c4@2 c4@3 c4@3 c4@2 c4@3", Z: "db4 ~@3", AA: "f4@2 eb4@2 db4 eb4@3", AB: "[~ eb4@2 eb4@2 db4 c4 db4]/2",
  AC: "c4 db4 c4@6", AD: "[~@5 bb3 c4 db4@3 c4 db4@2 db4@2 c4]/2", AE: "db4@2 bb3@3 bb3 c4 ~",
  AF: "[db4@2 c4 db4@3 c4 eb4@5 db4@2 eb4@2]/2", AG: "[bb3 eb3@2 eb3@2 f3!3]/2", AH: "a3", AI: "a3 c4!2 ab4",
  AJ: "[c3@7 bb3]/2", AK: "[db5@3 db5@2 db5@2 db5@2 db5@2 db5@4 ~]/2", AL: "ab4@2 ab3 eb4 ab3 db4 ab3@2",
  AM: "~@3 bb3@2 bb3@3 bb3@3 c4@2 db4@3", AN: "gb3", AO: "bb3", AP: "ab3", AQ: "f3 f3@2 f3@2 f3 gb3@2",
  AR: "f4 f4@2 f4@2 eb4 db4@2", AS: "db4 eb4 f4!2",
  AT: "[~@2 bb3@2 bb3!2 c4 db4@7 bb3 f4@2 f4@2 f4@2 eb4 db4 c4@2 db4 c4 db4 c4 db4 c4@8 ~@2]/5",
  AU: "[ab3@3 ab3@2 ab3@2 ab3@2 gb3@2 f3@4 ~]/2", AV: "eb3@2 eb3 f3 eb3 db3 ab3@2",
  AW: "[f3@4 f3@3 f3@2 f3@2 f3@2 ab3!2 f3]/2", AX: "eb3", AY: "~@3 db3", AZ: "~@3 bb3@2 bb3@3 bb3@3 bb3@2 c4@3",
  BA: "[c3,c4]/2", BB: "bb3@3 ~@5",
})).s("gm_viola").gain(0.4)

// other · cello
const cello = note(`<
  A@4 B C D E F G H I J@2 K L M A N O P Q R S P Q T U V@2 W X Y@2 Z AA A ~@2 AB AC AD AE AF@2 AG AH A AI AJ E AK AL AM
  AN P Q R S P Q T AO AP@2 AQ AR AS@2 AT AU AV AW AX AY AZ AW AX AY AL@2 BA BB BC BD BE E@2 AP@2 BF BG BH@2 BI AJ P Q R
  S P Q T BJ V@2 BK BL BM@2 BN@2 BO
>`.pickRestart({
  A: "bb2!8", B: "c2 ab2!7", C: "~ bb3!2 c4 db4 c4 bb3 c4", D: "db4 eb4 db4@6", E: "f2!8", F: "~ eb4@2 eb4",
  G: "eb4 db4 c4 db4", H: "~@2 db3 bb2 f3@2 eb3@2", I: "f3@4 ~@2 c4 db4",
  J: "[db4@2 c4 db4@3 c4 db4@2 c4@2 db4@2 bb3 db4 bb3]/2", K: "db4@2 c4 db4@2 c4 db4@2", L: "db4@2 c4 db4 c4@4",
  M: "eb2!8", N: "db3@2 bb2 db3@2 bb2 db3@2", O: "c3 db3 c3 db3!2 bb2 ab2 bb2", P: "bb2!4", Q: "gb2!4", R: "eb2!4",
  S: "gb2!2 a2!2", T: "ab2!4", U: "ab2!3 bb2", V: "[f3@3 f3@2 f3@2 f3@2 eb3@2 db3@4 ~]/2", W: "c4@2 c4 db4 c4 bb3 f3@2",
  X: "c4!3 db4 c4@2 bb3@2", Y: "[db4@4 db4@3 db4@2 db4@2 db4@2 f3!2 db3]/2", Z: "c3",
  AA: "~@3 eb4@2 eb4@3 eb4@3 eb4@2 eb4@3", AB: "[db3,f3] f3 bb3 c4 db4 c4 bb3 c4", AC: "db4 [f3,eb4] db4 c4 bb3@4",
  AD: "~ bb3 c4 db4@2 c4@2 bb3", AE: "f4@2 eb4@2 db4 c4@3", AF: "[~ bb3@2 bb3@2 bb3 a3 bb3]/2", AG: "a3 bb3 a3@6",
  AH: "a2!8", AI: "~@2 db4 bb3", AJ: "ab2!8", AK: "eb2", AL: "bb2", AM: "f2@4 f2!4", AN: "f2!2 ab2 c3", AO: "ab2!3 f3",
  AP: "[ab3@3 ab3@2 ab3@2 ab3@2 gb3@2 f3@4 ~]/2", AQ: "eb4@2 eb4 f4 eb4 db4 ab3@2", AR: "eb3!3 f3 eb3@2 db3@2",
  AS: "[f3@4 f3@3 f3@2 f3@2 f3@2 ab3!2 f3]/2", AT: "eb3", AU: "~@3 gb3@2 gb3@3 gb3@3 gb3@2 ab3@3",
  AV: "bb2@4 bb2 db3 bb2 f2", AW: "bb2 f3 db4 f3 bb3 db4 bb3 f3", AX: "ab2 eb3 c4 eb3 ab3 c4 ab3 eb3",
  AY: "db3 f3 db4 f3 c3 f3 c4 f3", AZ: "db3 f3 db4 f3 bb3 db4 bb3 f3", BA: "f2", BB: "gb2", BC: "bb2!4 c3!4",
  BD: "db3!4 eb3!4", BE: "eb3!4 f3!4", BF: "eb2@2 eb2 f2 eb2 db2 ab2@2", BG: "eb2!3 f2 eb2@2 db2@2",
  BH: "[f2@4 f2@3 f2@2 f2@2 f2@2 ab2!2 f3]/2", BI: "ab3", BJ: "gb2!3 ab2", BK: "ab2@2 ab2 eb3 ab2 db3 ab2@2",
  BL: "c3!3 db3 c3@2 bb2@2", BM: "[db3@4 db3@3 db3@2 db3@2 db3@2 f3!2 db3]/2", BN: "[c3,c4]/2", BO: "bb2@3 ~@5",
})).s("gm_cello").gain(0.4)

// chords · pizzicato strings · Db
const pizzicato_strings = note("<~@37 [~@2 [db3,f3] ~@5] ~@75>").s("gm_pizzicato_strings").gain(0.45)

// bass · contrabass
const bass = note(`<
  A@4 B C D E F G H I J@3 K L@2 M N O@2 P Q R@2 S@2 T U V W X Y Z AA A ~@2 AB AC AD AE AF@2 AG AH A@2 AI K AJ AK AL AM X
  Y V W X Y Z@2 X Y V W X Y Z AA AN AO AP AQ AR AO AP AQ AS AK AT AU AV AW AX AY@2 AZ@2 BA BB BC@2 AI@2 X Y V W X Y Z BD
  AZ@2 BA BE BF@2 BG@2 BH
>`.pickRestart({
  A: "bb1!8", B: "c2 ab1!7", C: "~ bb2!2 c3 db3 c3 bb2 c3", D: "db3 eb3 db3@6", E: "f1!4 f2!4",
  F: "eb2 a2 bb2 db3 eb2 db2 eb2 a2", G: "db2!8", H: "f2 a2 bb2 db3 f2 db2 eb2 a2", I: "~@5 bb1 c2 db2",
  J: "f2!2 gb2!2 f2!2 eb2!2", K: "f1!8", L: "[~@4 db3!2 bb2 db3@2 f3@2 eb3 db3@2 db3 bb2]/2",
  M: "db3@2 bb2 db3@2 bb2 db3@2", N: "c3 db3 c3 db3!2 bb2 ab2 bb2", O: "[db3@3 db3@2 db3@2 db3@2 db3@2 db3@4 ~]/2",
  P: "ab2@2 ab2 bb2 ab2 db3 ab2@2", Q: "eb3!3 f3 eb3@2 db3@2", R: "[f3@4 f3@3 f3@2 f3@2 f3@2 ab2!2 f3]/2",
  S: "[eb3@7 ab2]/2", T: "bb2!4", U: "gb2!4", V: "eb2!4", W: "gb1!2 a1!2", X: "bb1!4", Y: "gb1!4", Z: "ab1!4",
  AA: "gb1!3 ab1", AB: "[db2,f2] f2 bb2 c3 db3 c3 bb2 c3", AC: "db3 [f2,eb3] db3 c3 bb2@4",
  AD: "~ bb2 c3 db3@2 c3@2 bb2", AE: "f2@2 eb2@2 db2 c2@3", AF: "[~ bb2@2 bb2@2 bb2 a2 bb2]/2", AG: "a2 bb2 a2@6",
  AH: "a1!8", AI: "ab1!8", AJ: "eb2", AK: "bb1", AL: "f1@4 f1!4", AM: "f1!2 ab1 c2", AN: "db2@4 bb2 db3 bb2 f2",
  AO: "bb1 f2 db3 f2 bb2 db3 bb2 f2", AP: "ab1 eb2 c3 eb2 ab2 c3 ab2 eb2", AQ: "db2 f2 db3 f2 c2 f2 c3 f2",
  AR: "db2 f2 db3 f2 bb2 db3 bb2 f2", AS: "~ f2!3", AT: "f1", AU: "gb1", AV: "bb1!4 c2!4", AW: "db2!4 eb2!4",
  AX: "eb2!4 f2!4", AY: "f2!8", AZ: "[ab2@3 ab2@2 ab2@2 ab2@2 gb2@2 f2@4 ~]/2", BA: "eb2@2 eb2 f2 eb2 db2 ab1@2",
  BB: "eb2!3 f2 eb2@2 db2@2", BC: "[f2@4 f2@3 f2@2 f2@2 f2@2 ab2!2 f2]/2", BD: "gb1!2 gb2 ab2",
  BE: "ab1!3 bb1 ab1@2 gb1@2", BF: "[f1@4 f2@3 f2@2 f2@2 f2@2 ab1!2 f2]/2", BG: "[eb2,eb3]/2", BH: "bb1@3 ~@5",
})).s("gm_contrabass").gain(0.35)

// bass · acoustic bass · Db
const bass_2 = note("<~@37 [~@2 [db2,f2] ~@5] ~@75>").s("gm_acoustic_bass").gain(0.45)

stack(violin, viola, cello, pizzicato_strings, bass, bass_2)