Strudelify

Have yourself a merry little christmas

Kenny G

KeyG majorTempo65 bpm
0:00/0:00
// Have yourself a merry little christmas — Kenny G
// 65 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 2 "Saxophone Alto" alto sax (copy of ch 1 "Tenor Saxophone" tenor sax)
// note: Transcription provider: pdmx. https://musescore.com/score/5889040; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 59 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(65/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "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.

// melody · tenor sax · "Tenor Saxophone"
const tenor_sax = note(`<
  A B C D@2 E F@2 G H C I@2 E J@2 K L@3 M N@2 O P H C Q@2 R S@2 T U V@2 W X@3 Y Z@3 AA AB AC AD@2 AE AF@3 AG AH AI@2
  AJ@2
>`.pickRestart({
  A: "~@14 f3 a3", B: "c4@6 f4@2 c4@2 a#3@4 a3 g3", C: "f3@4 g3@4 ~@6 f3 a3", D: "[c4@6 f4@2 c4@12 ~@10 a3 c4]/2",
  E: "f4@12 g4 a4@3 g4@4 f4@8 e4@2 d4@2", F: "[c4@8 a#3@6 c4 a#3 ~ a3@4 a3@27 ~@10 a#4@4 a4@2]/2",
  G: "f4@6 d4 c4 a3 c4 d4 c4@9 ~@8 f3@2 a3@2", H: "c4@12 f4@4 d4 c4@3 a#3@8 a3@2 g3@2",
  I: "[c4@12 g4@2 f4@2 c4 d4 c4@22 ~@20 a3@2 c4@2]/2",
  J: "[c#4@12 d4@2 e4@2 f4@24 ~@2 a4@6 g4 a4 g4 d4 f4@6 d4 c4 d4@4, ~@60 a3 ~@3]/2", K: "f4@8 ~@6 a4!2",
  L: "[g4 a4@11 a4 g4 f4@2 e4@4 f4 g4@3 f4 g4@19 f4@2 e4@2 d4@4 e4 f4@3 e4 f4@15 ~@2 f4@2 e4 [e4,f4] d4@2 e4@12 d4 c4 a3 c4]/3", // Fmaj7
  M: "d4 c4@16 ~@11 f4@2 f4@2", N: "[e4 f4@11 f4 e4 d4@2 c4@4 d4 e4@3 d4 e4@15 ~@2 c4@3 d4@2 e4@3 f4@2 g4@2 f4 g4@9]/2",
  O: "~@2 a4@2 ~@6 g3@3 a3 g3@2 c4 d4 c4 d4 c4@12", P: "~@2 a#3@2 f3@2 g3 a3@7 g3@2 f3@8 ~@4 f3@2 a3@2",
  Q: "[c4@12 g4@4 f4@2 d4 c4 d4 c4@19 ~@20 a3@2 c4@2]/2", R: "f4@14 g4 a4 a#4@12 g4 [g4,a4] f4@2",
  S: "[e4@6 f4@6 g4@2 f4@2 a4@4 g4 a4@27 g4 [a4,c5] a4@10 g#4 [g4,a4] f4 d4]/2", T: "f4@4 ~@2 f4 g4 a4@6 a#3@2",
  U: "c4 d4@7 f4@5 g4 ~ f4 a4@4 g4@4 f4@4 e4@4",
  V: "[d4@8 d4 e4@5 c4@2 f4 g4@2 f4 g4@2 f4@22 c4 d4 ~ f4 a4@2 c5@8 d5@2 c5@4]/2",
  W: "a4 [g4,g#4] ~ d4 f4@12 ~@12 a4@2 a4@2", // G#maj7
  X: "[g4 a4@13 g4 f4 e4@4 f4 g4@3 g4@14 a4 ~@5 g4@2 f4 e4 d4@4 e4 f4@3 e4 f4@15 ~@4 f4@2 e4 [e4,f4] d4@2 e4@9 g4@3 c4 d4]/3", // Fmaj7
  Y: "c4 d4 c4@14 ~@12 f4@2 f4@2",
  Z: "[e4 f4@13 e4 d4 c4@4 d4 e4@3 e4@16 ~@4 c4@3 d4@2 e4@3 f4@3 g4@2 f4 g4@12 a4 ~@5 g3@2 a3 g3 c4 d4 c4 d4 c4@8 a#3 c#4 f4 g#4]/3",
  AA: "a#4 c5 a#4 c5@3 g#4 f4 c#4 c4@4 a#3 ~ d#4 c4@12 g#3@2 c4@2", AB: "d#4@12 g4 g#4@3 d#4@4 c#4@8 c4@2 a#3@2",
  AC: "g#3@8 a#3 c4 a#3@6 ~@12 g#3@2 c4@2", AD: "[d#4@8 g#4 a#4 g#4@6 d#4@2 f4@2 d#4 f4 d#4@18 ~@20 c4@2 d#4@2]/2",
  AE: "g#4@12 a#4@2 c5@2 c#5@10 c5@3 a#4 g#4@2",
  AF: "[g4@8 g#4@4 a#4 [a#4,c5] g#4@2 c5@4 a#4 c5@25 a#4 c5 c#5 c5@11 a#4 g#4 a#4 g#4@9 ~@4 g#4@2 a#4@2 c5@8 c#4@8]/3", // A#sus2
  AG: "f4@8 g#4@8 a#4 c5@3 a#4@4 g#4@4 g4@4", AH: "f4@2 g4@5 d#4", AI: "[g#4 a#4 g#4@38 ~@8 d#4 c#4 c4@12 a#3@2]/2",
  AJ: "[d#4 f4 d#4@46 ~@16]/2",
})).s("gm_tenor_sax").gain(0.3)

stack(tenor_sax)

More by Kenny G