Strudelify

christmas time is here

Vince Guaraldi

KeyG majorTempo76 bpm
0:00/0:00
// christmas time is here — Vince Guaraldi
// 76 bpm, 3/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (3/4 at bar 1, 4/4 at bar 17, 3/4 at bar 19, 4/4 at bar 35, ...) are rendered on a constant 3/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5870242; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 42 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(76/3)

// 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.

// other · muted trumpet · "Trumpet 1"
const muted_trumpet = note("<A B C D ~@9 E F G F H I ~@7 J@3 K@2 L@2 M N@3 O P@4>".pickRestart({
  A: "~@21 c5@8 c5 c#5 d5", B: "d#5@4 c5@7 g#4@21", C: "e5@4 c5@7 c5@10 c5@3 d5@3 e5@2 f5@3", D: "g5@4 d#5@7 d#5@21",
  E: "~@21 c5@11", F: "e5@5 c5@5 ~ c5@16 a4@5", G: "a4", H: "a4@21 c#5@11", I: "c5@11 ~@21",
  J: "[f5@3 f#5@2 g#5@3 a#5@3 c6@5 a5@5 a5@16 c6@5 ~ c6@5 a5@5 a5@16 a#5@5 ~ a#5@5 g5@5 g5@11]/3",
  K: "[g5 a5@10 a5@32 ~@21]/2", L: "[~@11 a5@5 g5@27 ~@21]/2", M: "~@21 c5@5 ~ c#5@5",
  N: "[f5@5 g5@5 ~ a5@5 f5@5 f5@22 ~@6 g5@6 g5@6 e5@5 e5@18 ~@7 e5@5]/3", O: "~@2 d#5@7 d5@6 f5@7 d5@10",
  P: "[d5 [d#5,e5,f5] [f#5,g5,g#5] [a5,a#5,b5] c6@6 b5@3 ~ a#5@3 a5@108 ~@3]/4",
})).s("gm_muted_trumpet").gain(0.4)

// other · muted trumpet · "Trumpet 1" · soft notes
const muted_trumpet_soft = note("<~@18 [~@11 a4@21] ~ [b4@11 a#4@21] [g4@11 e4@21] ~@20>")
  .s("gm_muted_trumpet").gain(0.2)

// other · trumpet · "Trumpet 2"
const trumpet = note("<~@6 A B A B C D E F ~@4 G H I J ~ K L M N ~@3 O@5 ~@3 P@2 Q@2>".pickRestart({
  A: "e5@5 c5@5 ~ c5@16 a4@5", B: "a4", C: "a4@5 f4@5 ~ f4@16 e4@5", D: "g4@5 e4@5 ~ e4@16 d#4@5",
  E: "d4@5 f4@5 ~ d4@10 f4@11", F: "g4@21 ~@11", G: "~@11 g4 a4@4 f4@5 f4@11",
  H: "~@3 f4 [f4,g4] e4@3 f4@3 g4@5 e4@5 e4@11", I: "e4@2 g4@2 ~ e4@3 d#4@3 d4@5 f4@5 d4@11, ~@2 f4 ~@13",
  J: "b4 c5@4 a#4@2 a4@2 g#4@2 g4@21", K: "~@13 c5@3 a#4@3 c5@2 d5 e5@2 c#5@3 c5@2 a#4@3",
  L: "c#5@4 a#4@3 g#4@4 g4@11 ~@10", M: "~@13 b5 c6@4 ~ a#5@2 g#5@3 f#5@3 f5@2 d#5@3",
  N: "c5@3 c#5@2 c5@3 a#4@3 c5@5 ~@16", O: "[~@11 e5@5 c5@5 c5@16 a4@5 ~ a4@32 e5@5 c5@5 c5@16 a4@5 ~ a4@32 ~@21]/5",
  P: "[~@31 a5@6 g5@3 ~ f5@3 e5@7 d5@7 b4@6]/2", Q: "[~ a5@3 a5 [g5,g#5] f#5 e5@54 ~@3, ~@7 f5 ~@56]/2",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · "Trumpet 4"
const trumpet_2 = note("<A B C D E F ~@8 G H I J K L M@2 N@4 O P Q R@3 S@2 T@3 U V@4>".pickRestart({
  A: "a4", B: "g4", C: "a4@21 a4@11", D: "c5@4 g#4@7 g#4@10 d#5@3 c#5@3 c5@2 a#4@3", E: "a4@4 f4@7 f4@21",
  F: "d#5@4 c5@7 c5@21", G: "a4@11 g4@10 a4@11", H: "~@5 c#5@5 ~ c5@5 c#5@5 f#5 g5@4 ~ f5@5", I: "e5@27 ~@5",
  J: "~@11 g5@5 f5@5 e5@11", K: "d#5@11 d5@21", L: "f4@11 g4@21", M: "[g#4@11 f4@32 a3@21]/2",
  N: "[c4@11 c#4@26 d#4@5 ~ c#4@32 c#4@26 d4@5 ~ c#4@21]/4", O: "a#4@3 c5@2 c#5@3 f5@3 e5@21", P: "a#4@11 e5@21",
  Q: "~@5 c5@5 ~ a#4@10 g4@11", R: "[g#4@11 a4@32 a4@5 g4@5 f4@16 c4@5 ~ c#4@21]/3",
  S: "[a4@5 c#4@5 ~ f4@32 ~@10 c5@5 ~ c#5@5]/2",
  T: "[a#4@5 c#5@5 ~ d5@5 b4@5 b4@22 ~@6 c5@6 c5@6 a4@5 a4@18 ~@7 a4@5]/3", U: "~@2 g#4@7 g4@6 a#4@7 g4@10",
  V: "[g4 [g#4,a4,a#4] [b4,c5,c#5] [d5,d#5,e5] f5@6 e5@3 ~ c#5@3 c5@108 ~@3]/4",
})).s("gm_trumpet").gain(0.4)

// other · trumpet · "Trumpet 5"
const trumpet_3 = note("<A B C D E ~@9 A F G H I J K L M@4 N O P Q@2 R@2 S T@3 U V@4>".pickRestart({
  A: "e4", B: "d#4", C: "e4@21 f4@11", D: "g#4@4 g4@7 g4@10 c5@3 a#4@3 g#4@2 g4@3", E: "e4@4 e4@7 ~@21", F: "c#4",
  G: "a4", H: "c#4@21 g#4@11", I: "f4@11 d4@21", J: "a#3@11 a3@21", K: "g#3@11 g3@21", L: "c4@11 f3@21",
  M: "[f#3@11 g#3@26 g#3@5 ~ a#3@32 g#3@26 b3@5 ~ a#3@21]/4", N: "g#4@3 a#4@2 c5@3 c#5@3 c5@21", O: "g4@11 c5@21",
  P: "f#4@5 a4@5 ~ a4@10 f4@11", Q: "[e4@11 g4@32 ~@21]/2", R: "[~@21 f5@5 ~ c#5@16 ~@21]/2", S: "~@21 c4@5 ~ c#4@5",
  T: "[g4@5 a#4@5 ~ b4@5 a4@5 a4@22 ~@6 g#4@6 b4@6 g4@5 g4@18 ~@7 f#4@5]/3", U: "~@2 f4@7 f4@6 a4@7 f4@10",
  V: "[f4 [f#4,g4] [g#4,a4,a#4] [b4,c5] c#5@6 b4@3 ~ a#4@3 a4@108 ~@3]/4", // Gmaj7 Cmaj7
})).s("gm_trumpet").gain(0.4)

// other · trumpet · "Trumpet 5" · soft notes
const trumpet_soft = note("<~@4 [~@11 e4@21] [g#4@4 g4@7 g4@10 d#4@11] ~@36>").s("gm_trumpet").gain(0.2)

// other · trumpet · "Trumpet 6"
const trumpet_4 = note("<A@2 B C D ~@9 A E A F G ~@7 H I J K@8 L M@4>".pickRestart({
  A: "c4", B: "c4@21 c4@3 d4@3 e4@2 f4@3", C: "g4@4 d#4@7 d#4@10 g#4@3 g4@3 f4@2 d#4@3", D: "c4@4 c4@7 c4@21", E: "a#3",
  F: "a#3@21 e4@11", G: "c#4@11 b3@21", H: "f4@11 b4@21", I: "f4@11 a4@21", J: "d#4@5 f#4@5 ~ f4@10 d4@11",
  K: "[c#4@11 f4@32 e4@32 c#4@32 e4@32 c#4@32 f4@33 ~@5 f4@6 e4@30 ~@6 e4@5]/8", L: "~@2 d#4@7 d4@6 f4@7 d4@10",
  M: "[d4 d#4 [e4,f4] f#4 g4@13 g4@108 ~@3]/4", // Fmaj7
})).s("gm_trumpet").gain(0.35)

// other · trumpet · "Trumpet 6" · soft notes
const trumpet_soft_2 = note("<~@5 A B C B D E F G H ~@28>".pickRestart({
  A: "d#4@4 c4@7 c4@21", B: "e4", C: "c#4@21 f4@11", D: "c#4@21 d#4@11", E: "d4@21 c#4@11", F: "c4@21 b3@11",
  G: "d4@21 f4@11", H: "e4@21 ~@11",
})).s("gm_trumpet").gain(0.2)

// other · trumpet · "Trumpet 7"
const trumpet_5 = note("<A B C D E ~@10 F G H I ~@3 J@4 K L M N O@7 P Q@4>".pickRestart({
  A: "a3", B: "g#3", C: "a3@21 d4@11", D: "d#4@4 d4@7 c4@21", E: "a3@21 e3@5 ~@6",
  F: "~@5 c#4@5 ~ c4@5 c#4@5 f#4 g4@4 ~ f4@5", G: "e4@27 ~@5", H: "~@11 g4@5 f4@5 d4@11", I: "a#3@11 ~@21",
  J: "[g#4@11 c5@5 g#4@5 g#4@16 c5@5 ~ c5@32 c5@5 g#4@5 g#4@16 c#5@5 ~ c5@21]/4", K: "g#4@11 g4@21", L: "d#4@11 f#4@21",
  M: "~@5 d#4@5 ~ d4@10 a#3@11", N: "b3@11 d4@21",
  O: "[c#4@11 c4@32 a#3@32 c4@32 a#3@32 d4@33 ~@5 c#4@6 c4@30 ~@6 c4@5]/7", P: "~@2 b3@7 a#3@6 e4@7 a#3@10",
  Q: "[a#3 [b3,c4] [c#4,d4] [d#4,e4] f4@13 f4@108 ~@3]/4", // Cmaj7 Dmaj7 Emaj7
})).s("gm_trumpet").gain(0.4)

// other · trumpet · "Trumpet 7" · soft notes
const trumpet_soft_3 = note("<~@4 A B C D C E F@2 G H ~@4 I ~@23>".pickRestart({
  A: "~@27 f3@5", B: "c4@4 g#3@7 g#3@10 g3@11", C: "a3", D: "a#3", E: "a#3@21 c4@11", F: "b3@21 a#3@11",
  G: "a#3@21 c#4@11", H: "a3@21 ~@11", I: "~@11 a3@21",
})).s("gm_trumpet").gain(0.2)

// other · trumpet · "Trumpet 8"
const trumpet_6 = note("<A@2 B A ~@10 A C A D E ~@7 F G H I@8 J K@4>".pickRestart({
  A: "f3", B: "f3@21 a#3@11", C: "g3", D: "g3@21 g#3@11", E: "g#3@11 ~@21", F: "c#4@11 e4@21", G: "a#3@11 d4@21",
  H: "a3@5 c4@5 ~ g3@21", I: "[g#3@11 a3@32 a3@32 g3@32 a3@32 g3@32 b3@33 ~@5 a#3@6 a3@30 ~@6 a3@5]/8",
  J: "~@2 g#3@7 g3@6 a#3@7 g3@10", K: "[g3 g#3 [a3,a#3] b3 c4@13 c4@108 ~@3]/4",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · "Trumpet 8" · soft notes
const trumpet_soft_4 = note("<~@6 A B A C D C E F ~@4 G ~@23>".pickRestart({
  A: "f3", B: "g3", C: "g3@21 f#3@11", D: "f3@21 g#3@11", E: "g3@21 c4 ~ b3 a#3 ~ a3 g#3 ~ g3 f#3@2", F: "f3@21 ~@11",
  G: "~@11 f3@21",
})).s("gm_trumpet").gain(0.2)

stack(
  muted_trumpet, muted_trumpet_soft, trumpet, trumpet_2, trumpet_3, trumpet_soft, trumpet_4, trumpet_soft_2, trumpet_5,
  trumpet_soft_3, trumpet_6, trumpet_soft_4
)

More by Vince Guaraldi