Strudelify

My Favorite Things (from The Sound of Music)

Richard Rogers

KeyA majorTempo200 bpm
0:00/0:00
// My Favorite Things (from The Sound of Music) — Richard Rogers
// 200 bpm, 3/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5830780; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 84 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(200/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · trumpet
const trumpet = note(`<
  A B C D E F G H I ~@18 J K L M J K L M N O P Q R S T I U ~@2 V W ~@2 X Y Z U Y ~ V AA@2 AB AC AD AE AF AG AH@2 AI AJ
  AK AL AM AN@2 ~ I AO@8
>`.pickRestart({
  A: "~@11 e5@3 ~@2", B: "b4@3 ~@2 a4@3 ~@3 a4@3 ~@2", C: "g4@3 ~@2 c5@3 ~@3 c5@3 ~@2",
  D: "g4@3 ~@2 f#4@3 ~@3 f#4@3 ~@2", E: "b4@8 c5@3 d5@5", F: "e5@8 f#5@3 g5@5", G: "a5@5 g5@5 ~ a5@5", H: "b5", I: "b4",
  J: "e4@5 b4@5 ~ b4@5", K: "f#4@5 e4@5 ~ e4@5", L: "b3@5 e4@5 ~ e4@5", M: "f#4@5 e4@11", N: "e4@5 b4@5 ~ a4@5",
  O: "e4@5 f#4@5 ~ d4@5", P: "d4@5 a4@5 ~ g4@5", Q: "c4", R: "b3@5 c4@5 ~ d4@5", S: "e4@5 f#4@5 ~ g4@5",
  T: "a4@5 g4@5 ~ a4@5", U: "b4@3 ~@13", V: "e5", W: "e5@3 ~@13", X: "f#4", Y: "g4@3 ~@13", Z: "c5@3 ~@13", AA: "a5",
  AB: "~@5 b4@3 ~@3 b4@3 ~@2", AC: "b4@11 e4@5", AD: "~@5 a4@3 ~@3 a4@3 ~@2", AE: "a4@11 d#4@5",
  AF: "~@5 g4@3 ~@3 g4@3 ~@2", AG: "g4@11 b3@5", AH: "[e4@27 e4@5]/2", AI: "e4@5 f#4@5 ~ e4@5",
  AJ: "f#4@5 e4@5 ~ f#4@5", AK: "g4@5 a4@5 ~ g4@5", AL: "a4@11 g4@5", AM: "b4@5 c5@5 ~ b4@5", AN: "c5/2",
  AO: "[e5@115 ~@13]/8",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · soft notes
const trumpet_soft = note("<A ~@8 B@4 C@4 D E F D G H I J ~@30 K ~@28>".pickRestart({
  A: "b4@3 ~@2 e5@3 ~@8", B: "g4/4", C: "b4/4", D: "g4", E: "c5", F: "a4", G: "f#4", H: "e3", I: "a3", J: "b3", K: "b4",
})).s("gm_trumpet").gain(0.05)

// other · french horn · "Horn in F"
const french_horn = note(`<
  A B C D A@2 E F E G@4 H@4 E I A E A@2 E F J K L M N O L M N P L Q R E A@2 E F S ~@2 T U ~@2 E V W X U Y D Z AA K AB K
  AB K AB ~@2 AC AD AE AF AG S AH@2 I AI AJ AK AL AM AN Y AO
>`.pickRestart({
  A: "g3", B: "a3", C: "e4", D: "g4", E: "c4", F: "d#4", G: "b3/4", H: "e4/4", I: "f#4", J: "~@5 b3@3 ~@3 b3@3 ~@2",
  K: "~@5 e4@3 ~@3 e4@3 ~@2", L: "e4@5 e4@3 ~@3 e4@3 ~@2", M: "f#4@5 e4@3 ~@3 e4@3 ~@2", N: "b3@5 e4@3 ~@3 e4@3 ~@2",
  O: "f#4@5 e4@3 ~@8", P: "f#4@5 e4@11", Q: "e4@5 c4@3 ~@3 c4@3 ~@2", R: "d4@5 d4@3 ~@3 d4@3 ~@2", S: "g4@3 ~@13",
  T: "b3", U: "c4@3 ~@13", V: "e4@3 ~@13", W: "f#4@3 ~@13", X: "d4@3 ~@13", Y: "d4", Z: "c5", AA: "d#5",
  AB: "e4@11 b3@5", AC: "c4@5 d4@5 ~ c4@5", AD: "d4@5 c4@5 ~ d4@5", AE: "e4@5 f#4@5 ~ e4@5", AF: "f#4@11 e4@5",
  AG: "g4@5 g4@5 ~ g4@5", AH: "b4/2", AI: "d4@5 b4@5 ~ g4@5", AJ: "d4@5 g4@5 ~ b4@5", AK: "e5@5 c5@5 ~ g4@5",
  AL: "e4@5 g4@5 ~ c5@5", AM: "b4@5 g4@5 ~ d4@5", AN: "a4@5 f#4@5 ~ c4@5", AO: "b4@3 ~@13",
})).s("gm_french_horn").gain(0.25)

// other · trombone
const trombone = note(`<
  ~@5 A B C@2 D E F G D E F G H I J K L M N C O P ~@16 Q ~@2 R S ~@2 B T S U Q ~ V W X Y Z AA AB Y Z ~@2 AC@2 B AD AE AF
  AG@2 AH AI AJ AK AL AM AN AO U
>`.pickRestart({
  A: "e3", B: "a3", C: "b3", D: "e3@5 b3@5 ~ b3@5", E: "f#3@5 e3@5 ~ e3@5", F: "b2@5 e3@5 ~ e3@5", G: "f#3@5 e3@11",
  H: "e3@5 b3@5 ~ a3@5", I: "e3@5 f#3@5 ~ d3@5", J: "d3@5 a3@5 ~ g3@5", K: "c3", L: "b2@5 c3@5 ~ d3@5",
  M: "e3@5 f#3@5 ~ g3@5", N: "a3@5 g3@5 ~ a3@5", O: "~@5 g3@3 ~@3 g3@3 ~@2", P: "~@5 b3@3 ~@3 b3@3 ~@2", Q: "e3@3 ~@13",
  R: "g3", S: "a3@3 ~@13", T: "c4@3 ~@13", U: "g3@3 ~@13", V: "c4", W: "f4", X: "b4", Y: "~@5 b2@3 ~@3 b2@3 ~@2",
  Z: "b2@11 g2@5", AA: "~@5 c3@3 ~@3 c3@3 ~@2", AB: "c3@11 g2@5", AC: "g3/2", AD: "~@5 c#4@11", AE: "d4@5 e4@5 ~ d4@5",
  AF: "e4@3 ~@2 b3@3 c4@3 c#4@2 d4@3", AG: "f#4/2", AH: "e4", AI: "b2@5 g3@5 ~ d3@5", AJ: "b2@5 d3@5 ~ g3@5",
  AK: "c4@5 g3@5 ~ e3@5", AL: "c3@5 e3@5 ~ g3@5", AM: "g3@5 d3@5 ~ b2@5", AN: "f#3@5 c3@5 ~ a2@5", AO: "b2",
})).s("gm_trombone").gain(0.3)

// other · trombone · soft notes
const trombone_soft = note("<A B C D E ~@22 F G@3 F G@2 H I J K G B A L M ~@12 N ~@28>".pickRestart({
  A: "e3", B: "f#3", C: "c4", D: "d#4", E: "f#4", F: "~@5 b3@3 ~@3 b3@3 ~@2", G: "~@5 g3@3 ~@3 g3@3 ~@2",
  H: "~@5 g3@3 ~@3 b3@3 ~@2", I: "~@5 c4@3 ~@3 c4@3 ~@2", J: "~@5 f#3@3 ~@3 f#3@3 ~@2", K: "~@5 a3@3 ~@3 g3@3 ~@2",
  L: "a3", M: "b3", N: "g3",
})).s("gm_trombone").gain(0.2)

// bass · tuba
const bass = note(`<
  A B C D@2 C E F@2 G@4 H@4 I D J A D C E J A J A J A J A J K J L M N O D C E J P ~@2 J Q ~@2 I Q@2 R S T C B U V W X Y
  Z AA C T C T AB I AC D AD@2 D AE D C T AC D AF AG
>`.pickRestart({
  A: "e2", B: "f#2", C: "c2", D: "d2", E: "f#1", F: "b1/2", G: "e2/4", H: "c2/4", I: "a1", J: "b1", K: "e1",
  L: "a2@5 ~@11", M: "d2@5 ~@11", N: "b1@5 ~@11", O: "e2@5 ~@11", P: "e2@3 ~@13", Q: "d2@3 ~@13", R: "b1@3 ~@13",
  S: "c2@3 ~@13", T: "g1", U: "b2", V: "~@5 g2@3 ~@3 g2@3 ~@2", W: "g2@11 e2@5", X: "~@5 f#2@3 ~@3 f#2@3 ~@2",
  Y: "f#2@11 b1@5", Z: "~@5 e2@3 ~@3 e2@3 ~@2", AA: "e2@11 g2@5", AB: "c#2", AC: "d3", AD: "d3/2", AE: "g2",
  AF: "~@5 c#2@5 ~ d2@5", AG: "g1@5 ~@11",
})).s("gm_tuba").gain(0.4)

stack(trumpet, trumpet_soft, french_horn, trombone, trombone_soft, bass)