Strudelify

send in the clowns

Stephen Sondheim

KeyC majorTempo80 bpm
0:00/0:00
// send in the clowns — Stephen Sondheim
// 80 bpm, 12/8, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (12/8 at bar 1, 9/8 at bar 4, 12/8 at bar 5, 9/8 at bar 10, ...) are rendered on a constant 12/8 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5942524; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 32 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(80/6)

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

// chords · piano
const piano = note("<~ A@2 B C D E F G H@3 I@3 J@2 K L M N A@2 B O P Q R S T U@2>".pickRestart({
  A: "[a3,c4,f4]@2 [c4,g4]@2 [g4,c5]@2 [d4,e4,g4,c5]@17 ~", // F C5 C
  B: "[e4,d5] e5 c5 [e4,b4,d5] [c5,e5]!2 [c5,e5]@3 [c5,e5] [b4,g5] [d4,g4]", // E7 C Em G5
  C: "[c4,e4,a4]@17 ~ [c4,a4]@2 [d4,c5]@2 f4@2", D: "[c4,d4,g4]@17 ~ [b3,d4]@6",
  E: "[a3,c4]@6 [b3,d4]@11 ~ [a3,c4,f4]@2 [c4,g4]@2 [g4,c5]@2, g4@11 ~@13", // Am Bm F C5
  F: "[d4,e4,g4,c5]@17 ~ [a3,c4,f4]@2 [c4,g4]@2 [g4,c5]@2", G: "[d4,e4,g4,c5]@17 ~ [e4,d5]@2 e5@2 c5@2",
  H: "[[e4,b4,d5]@2 [c5,e5]@2 [c5,e5]@2 [c5,e5]@6 [c5,e5]@2 [b4,g5]@2 [d4,g4]@2 [c4,e4,a4]@17 ~ [c4,a4]@2 [d4,c5]@2 f4@2 [b3,d4,g4]@17 ~ [a3,c4]@2 c4@2 b3@2 [e3,g3,c4]@6]/3", // E7 C Em G5 Am F D7 G …
  I: "[[f3,a3]@6 [e3,g3,c4]@6 [f#3,a3]@2 e4@2 d4@2 g3@3 a3@3 f#3@3 a3@3 g3@6 b3@2 e4@2 d4@2 g3@3 a3@3 f#3@3 a3@3 g3@6 b3@2 f#4@2 d4@2 f#4@2 g4@2 g4@2, ~@18 e4@17 ~ a3@6 e4@17 ~ a3@6 [b3,e4]@6]/3", // F C F#m E5
  J: "[g4 a4!3 g4 e4 [a3,c4]@3 b3@3 c4@3 b3 e4 b3 c4 d4!3 e4!2, [b3,e4]@6 [b3,d4]@6 e4@17 ~ f3@6 a3@6 a3@6]/2", // Am E5 Bm
  K: "e4 d4 a3 [b3,a4] e4 b3 a4 e4 b3 a4 e4 b3, a3 ~@5", L: "[d4,f4,g#4] c5 g#4 b4 b3 e4 a4 b3 e4 g4 b3 e4",
  M: "[c4,f4,a4]@2 c5@2 f4@2 d4@11 ~ d4@6, ~@6 [b3,g4]@17 ~", N: "[a3,c4]@6 d4@11 ~ d4@6, ~@6 [b3,g4]@17 ~",
  O: "[c4,e4,a4]@3 [c4,e4,g4]@3 [c4,e4,a4]@3 [c4,a4] [d4,c5] f4", // Am C Am F D7
  P: "[g3,b3,g4] e4 b3 [f3,g3] b3 e4 [f3,g3] b3 e4 [c4,a4] c5 f4", Q: "[b3,d4,g4]@17 ~ a3@2 c4@2 b3@2",
  R: "[e3,g3,c4]@17 ~ a3@2 c4@2 g4@2", S: "[g3,d4,e4,g4]@17 ~ [a4,c5,f5]@2 [c5,g5]@2 [g5,c6]@2",
  T: "[d5,e5,g5,c6]@17 ~ [a4,c5,f5]@3 [c5,g5]@3", U: "[~ [g5,c6]@8 ~ c6@23 ~@15, ~@3 [d5,e5,g5]@8 ~@5]/2",
})).s("gm_piano").gain(0.25)

// chords · string ensemble 1 · "Violins" · C Gsus4 C Cmaj7 C Gsus4 C Cmaj7
const string_ensemble_1 = note(`<
  [~ [c4,e4,g4]@3]
  [[g4,c5,d5,f5] [c4,e4,g4]@3]!2
  [[c4,e4,g4,b4,d5] ~@3]
  ~@3
  [[c4,e4,g4]@3 [g4,c5,d5,f5]]
  [[c4,e4,g4]@3 [c4,e4,g4,b4,d5]]
  ~@23
>`).s("gm_string_ensemble_1").gain(0.05)

// other · string ensemble 1 · "Contrabasses"
const string_ensemble_1_2 = note("<[~ c2@3] [g1 c2@3]!2 [c2 ~@3] ~@3 [c2@3 g1] [c2@3 c2] ~@23>")
  .s("gm_string_ensemble_1").gain(0.15)

stack(piano, string_ensemble_1, string_ensemble_1_2)