Strudelify
sweater weather cover art

2012 · I Love You.

sweater weather

The Neighbourhood

KeyG majorTempo120 bpm
0:00/0:00
// sweater weather — The Neighbourhood
// 120 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/2812836; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 98 bars on a 24-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 · [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 · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  A@3 B ~@3 C@4 D@5 E F G H I@2 ~@2 J K L M ~@3 N O P Q R S T U ~@8 N O P Q R S T U ~@15 V@3 ~ V@3 ~ W@2 X Y W@2 X Y W@2
  X Y W@2 X Z A@3 B
>`.pickRestart({
  A: "a#4", B: "a4", C: "[~@12 c4@4 ~ a#3@4 d4@9 ~@6 c4@6 a#3@3 d4@9 ~@3 a#3@3 c4@6 a#3@3 d4@9 ~@6 c4@6 d4@6]/4",
  D: "[c4@6 ~@3 a#3@3 c4@6 a#3@3 d4@9 ~@6 c4@4 ~ a#3@4 d4@9 ~@3 a#3@3 c4@6 d4@3 c4@6 a#3@3 g3@3 a#3@3 c4@4 ~ a#3 g3@3 c4@9 ~@18]/5",
  E: "g3@2 ~ a#3 a#3@4", F: "a3 g3@2 ~@5", G: "d4@2 a3 g3 a3!2 g3 a3", H: "a#3 a3 ~@2 f4@2 f4@2",
  I: "[d4@6 ~@3 a#3@3 a#3@4 ~ a4@4 f4@9 ~@18]/2", J: "g3@2 a3 a#3", K: "c4 f4 d#4 d4", L: "d4@18 d4 ~ c4 a#3 ~ d4",
  M: "c4@4 ~ f4!2 d4", N: "~@3 c5 c5@2 a#4@2", O: "c5 d5 c5 a#4 g4@2 d#5@2", P: "d5@2 g4 d#5", Q: "d5@3 ~",
  R: "d#5@3 d5 d#5@2 d5@2", S: "d#5 f5 d#5 d5 a#4@2 f5@2", T: "f5@2 a#4 f5", U: "f5@3 d#5@4 ~",
  V: "[~@5 g4 f4@2 g4 f4@2 f4@4 ~@2 g4 f4@2 g4 d4@2 d#4@3 d4 c4@3 ~@6]/3", W: "g5!4", X: "f5!4", Y: "d#5!2 d5!2",
  Z: "d#5@5 d5@4 c5@3",
})).s("gm_alto_sax").gain(0.4)

// other · alto sax · "Alto Saxophone"
const alto_sax_2 = note(`<
  A@3 B ~@6 C D ~ E F G H@3 I J@2 K L M N O P Q R S T U@2 O P U V@2 W X Y Z AA AB AC AD ~ U@2 O P U V@2 AE ~@10 AF@3 ~
  AG@3 AH AF@3 ~@8 AI AJ AK AL AM AJ AK AN AO A@3 B
>`.pickRestart({
  A: "g4", B: "f4", C: "~@2 a3 a#3", D: "a3 ~@3", E: "c4 g4 c5 d5 d#5 c5 d5@2", F: "c5",
  G: "~@6 g3@3 g3@3 c4@4 ~ c4 c4@3 c4@3", H: "[c4@2 ~ g3 c4!2 d4 c4@2 a#3@2 ~ c4!3 c4@2 ~ c4 a#3 c4!2 a#3 c4]/3",
  I: "d4 c4 ~@2 d4@2 d4@2", J: "[d4@6 ~@3 a#3@3 a#3@4 ~ f4@4 d4@9 ~@6 d4@3 c4@3 d4@6]/2", K: "d4 c4 d4@2 d4@2 d4@2",
  L: "c4@2 a#3 g3", M: "d#4@2 d#4@2 a3 f4 d#4 d4", N: "c4@2 a#3@2 d4 d#4 d4 c4", O: "a#3", P: "a3",
  Q: "g3 a#3 g3 a#3 g3 a#3 g3 a#3", R: "g3 d5", S: "c5@2 a#4 a#4@2 a#4 g4 a#4", T: "a4 ~@3", U: "[a#3,d#4]", V: "d4",
  W: "a#3@18 g3 ~ a3 a#3 ~ c4", X: "d4@3 c4@3 c4@3 c4@3 c4@3 a#3 ~ g3@7",
  Y: "c4 ~ a#3 c4@3 c4 ~ a#3 c4@3 c4@3 a#3 ~ g3 ~@5 c4", Z: "~@2 c4@3 a#3 c4@3 c4@3 c4@3 a#3 ~ c4@6 a#3",
  AA: "c4@3 c4 ~ a#3 c4@3 c4@3 c4@3 a#3 ~ g3@4 a#3@3", AB: "~@5 c4 c4@3 c4@3 c4@3 a#3 ~ g3 ~@5 a#3",
  AC: "c4 ~ a#3 c4 ~ a#3 c4@3 d4@3 c4@3 a#3 ~ g3@7", AD: "~@8 a#3 c4 ~ a#3 c4@3 a#3 ~ c4@6 ~", AE: "a#3@3 ~",
  AF: "[~@5 d#4 d4@2 d#4 d4@2 d4@4 ~@2 d#4 d4@2 d#4 a#3@2 c4@3 a#3 a3@3 ~@6]/3",
  AG: "[~@5 d#4 d4@2 d#4 d4@2 d4@4 ~@2 d#4 d4@2 d#4 a#3@2 c4@3 a#3 a3@3 ~@3 a3@3]/3", AH: "a3@5 g3 f3@5 d3",
  AI: "~@5 c5 c5@3 a#4@3", AJ: "c5@2 d5 c5@2 a#4 g4@3 d#5@3", AK: "d5@2 g4 d#5", AL: "d5@3 ~",
  AM: "c5@5 a#4 c5@3 a#4@3", AN: "d5@5 c5@6 a#4", AO: "a4@3 a4@2 g4 a4@2 a#4@4",
})).s("gm_alto_sax").gain(0.3)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note(`<
  A B C D E F G H I J K L M N O P E F G Q E F G H R S T U V W X Y Z AA AB B Z AA Z ~ AC AD AE AF AC AD AG AH AI AJ AK AL
  Z AA Z ~@3 AM AN AO AP AM AN AO ~ AM AN AO AP AM AN AO AP AM AN AO AP AM AN AQ AR AM AN AQ AR AM AN AQ AR AM AN ~@2 A
  B C ~
>`.pickRestart({
  A: "d#2", B: "c2", C: "g2", D: "f2", E: "d#2 a#2 d#3 f3 g3 d#3 f3@2", F: "c2 g2 c3 d3 d#3 c3 d3@2",
  G: "g2 d3 g3 a3 a#3 g3 a3@2", H: "f2 c3 f3 g3 a3 a#3 a3 g3", I: "d#2@4 ~ d#2@4 d#2@3 g3@6 f3@6",
  J: "c2@4 ~ c2@4 c2@3 d#3@6 d3@6", K: "g2@4 ~ g3@4 a3@3 a#3@6 a3@6", L: "a3@2 f3 g3 a3 c4 d4 a3",
  M: "a#3@6 d#2@3 d#2@3 d#2@4 ~ d#2@4 d#2@3", N: "c2 g2 c3 d3 d#3@2 d3@2", O: "f2@4 ~ g3@4 a3@3 a#3@6 a3@6",
  P: "f2@3 f2@3 f2@2", Q: "f2@4 ~ f3@4 g3@3 a3@3 a#3@3 d4@3 a3@3", R: "g2@3 g2@3 g2@2", S: "c2@3 c2@3 c2@2",
  T: "d2@3 d2@3 d2@2", U: "c2 c3 c2 c3", V: "~ c3 d3@3 a#2 a#2@2", W: "c3@2 c3 d3 c3 a#2!3", X: "c3 d3!3 c3 a#2 a#2@2",
  Y: "c3 ~@3", Z: "[d#2,a#2]", AA: "[c2,c3]", AB: "[d2,a#2]", AC: "d#2!4", AD: "c2!4", AE: "d2!4", AF: "f2!3 d2",
  AG: "f2 ~@3", AH: "c2 ~", AI: "[d#2,a#2]@3 [d#2,a#2]!3", AJ: "[c2,c3]@6 ~ [c2,c3]!2 [c2,c3]@3",
  AK: "d2 ~ g2 c3 ~ d3 d#3 ~ d3 d#3 ~ c3 d3 ~ d#3 a#2 ~ c3 g2@3 f2@3", AL: "c2@2 c2 d2",
  AM: "d#2@6 d#3@10 d#3@2 d#3 ~@5", AN: "c2@6 c3@10 c3@2 c3 ~@3 c3@2", AO: "f2@3 f3@5 f3 f3@2 f3",
  AP: "f3@2 f3 f3@2 f3 f3@2 f3 f3@2 f3", AQ: "d2@3 d3@5 d3 d3@2 d3", AR: "f3@2 f3 f3@2 f3 d3@2 d3 d3@2 d3",
})).s("gm_baritone_sax").gain(0.45)

stack(alto_sax, alto_sax_2, baritone_sax)