Strudelify

The Mikado: Act I. "For he's going to marry Yum-Yum" (Ensemble)

Gilbert & Sullivan

KeyD majorTempo120 bpm
0:00/0:00
// The Mikado: Act I. "For he's going to marry Yum-Yum" (Ensemble) — Gilbert & Sullivan
// 120 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 21 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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.

// chords · piano
const piano = note("<A B C D E@2 F G H I@2 J@2 K L M@2 N@2 O@2>".pickRestart({
  A: "[a3,a4]@24 [a3,d4,g4]@2 ~ d3 [a3,f#4] ~@3", // A Dsus4 D
  B: "~ [d3,a3,d4,f#4] ~@2 a3 [a2,d4] ~@2 f4 ~ [a2,a3,d4] f#4 ~@2 [d3,f#3] ~@5 [d3,a3] ~@2 [a2,f#3] ~@5 [a2,a3,d4,f#4] ~@2, ~@5 f#4@2 ~@7 d4@2 ~@7 a3@2 ~@7", // D D5 D D5 D
  C: "[d3,a3,d4] ~@2 g4 ~@2 [d3,a3,d4,f#4] ~@2 [a2,a3,a4] ~ [e4,g4] ~@2 [a2,a3,d4,f#4] ~@2 [c#3,a3,e4] ~@2 a4 ~ [a3,e4,g4] c#3 ~ [a2,a3,g4] ~@2 [f#4,a4] ~@2 [a2,a3,e4,g4], f#4@2 ~@7 f#4@2 ~@6 g4@2 ~@6 b4@2 ~@5", // D5 D A Em D A A7 F#m …
  D: "~@2 [d3,d4] ~ g4 ~@2 [d3,a3,d4,f#4] ~@2 [f#4,a4] ~@2 [e4,g4] ~@2 [d3,a3,d4,f#4] ~@2 [e3,a3,c#4,e4] ~@4 [a3,a4] [e3,c#4] ~ a4@3 ~@2, ~ f#4@2 ~@24 a3 ~@4", // D F#m Em D A C#m
  E: "[~ [e3,a3,e4] ~@2 [e2,e3,g#3] ~@2 f#4 ~ [e3,g#3,e4] e2 ~ [e2,d3,g#3,d4] ~@2 c#4 ~@2 [e2,d3,g#3,b3] ~@11 a4@10 ~@4 [a3,f#4] ~@5 [d4,f#4] ~ a3 [a2,f#4] ~ f4 ~@2 [a2,a3,d4] ~@5, ~@4 e4@2 ~@15 [a2,c#3,a3]@12 ~@25 f#4@2 ~@4]/2", // A5 E E7 D D5 A
  F: "~@3 a3 d3 ~@2 a2 ~@4 [a2,a3,d4] f#4 ~@2 [a3,d4] ~@2 g4 ~ [a3,d4,f#4] ~@2 [a2,a3,a4] ~@2 [e4,g4] ~@2 [a2,a3,d4,f#4] ~, ~@6 a3@3 ~@7 f#4@2 ~@14", // D5 D A Em D
  G: "~ [a3,g4]@2 a4 ~@2 [c#3,a3,e4] ~@2 [a2,a3,g4] ~@2 [f#4,a4] ~ g4 [a2,a3,e4] ~ d4 d3 ~ g4 ~@2 [d3,a3,d4,f#4] ~@2 [a3,f#4,a4] ~@2 [e4,g4] ~ [a3,d4,f#4], ~ [c#3,e4] ~@4 g4@2 ~ b4@2 ~@6 f#4@2 ~@13", // A7 A A7 F#m A5 D Em D …
  H: "~@3 e4 ~@5 [a3,c#4,a4] ~@2 a4@2 ~@4 [a3,c#4,e4] ~ d3 [e2,g#3] ~@2 f#4 ~ [e2,d3,g#3,e4] ~@2 [e2,d3,d4] ~@2, ~@21 e4@2 ~@9", // A E E7
  I: "[c#4 ~@2 [d3,b3] ~@12 [a2,a3,a4]@6 [a2,a3]@4 [a2,a3,e4,g4]@2 ~ [e4,g4]@2 [e4,g4,a4]@3 [e4,g4,c#5] a3@2 [a2,a3,e4,b4] ~@2 [a2,a3,e4,g4,a4] ~@2 [d4,f#4,d5]@6 [d3,d4,f#4,a4]@2 ~ a4@6 [a3,d4,f#4,a4]@3 [a2,a3,e4] ~@2, ~@6 [a2,a3]@10 ~@6 a4@7 [a2,a3]@6 a2 ~@7 [a2,a3] ~@20, ~@7 c#3@29 ~@16 f#3 ~@11, ~@13 c#5@4 ~@15, ~@28 b4@7 ~@2 g4@2 ~@13 d4@2 ~@7 [g4,c#5]@2 ~]/2", // G A A7 Em A7 C#dim Asus2 A7 …
  J: "[[a2,a3,e4,g4,b4] ~ [a2,a3,e4,g4] ~@2 [a2,a3,e4,g4,c#5] ~@2 [a2,a3,e4] ~ g4 [a2,a3,e4] ~@2 [d4,f#4]@6 [d3,d4,f#4,a4]@2 ~ f#3 ~@4 [a3,d4,a4] ~@2 [d2,d3,f#4,a4,d5,f#5]@9 ~ g4@2 c#5@3 [e3,c#4,g4,b4] e2 ~ a4@3 [d4,a4]@3 [f#2,f#3,d4,d5] ~@2 [g2,g3,e4] ~ d4 [g2,g3] ~ [g2,g3,d4,b4], ~@2 a4@2 ~@4 [g4,b4]@2 ~ a4@2 ~ d5@9 ~@18 e2@5 ~@3 [f#2,f#3]@6 ~@9, ~@14 [a2,a3] ~@7 [d4,f#4,a4]@2 ~@16 [e3,e5]@6 ~@3 d4 ~@8 d4@2 e4@2 ~@2]/2", // Em A7 A5 D D5 D C#m7b5 D5 …
  K: "~@2 [a2,f#3,d4] ~ d4 [a2,f#3] ~ [f#3,d4,a4] a2 ~ [a2,g3,c#4,e4] ~@2 [a2,e4] ~ [c#4,a4] [a2,a3,e4] ~@2 [d2,a3,g4]@9 f#4@2 a4 ~, ~@19 d3@12 ~, ~@19 c#4@5 ~@8", // D A7 A5 F#m A5 Dsus4
  L: "~ [a2,a4] ~@2 [d2,d3,f#4,a4,d5,f#5]@8 [g4,e5]@3 c#5 ~@2 [e2,e3,c#4,g4] ~@2 [f#2,f#3]@2 a4 d4 ~ f#2 [f#3,d4,d5] ~ [g2,g3,d4,e4] ~@2, ~@12 [e2,e3]@5 ~ b4@2 ~ [d4,a4] ~@10", // A D C C#dim F# D Em7 E …
  M: "[[g2,g3,d4,e4] ~@2 [g2,g3,d4,b4] ~ [a2,d4] f#3 ~ [a2,f#3,d4] ~@2 [a2,f#3,d4,a4] ~ c#4 [a2,a3,e4] ~ [a2,a3,c#4,e4] ~@2 [a2,a3,c#4,e4] ~@2 [d2,d3] ~@5 [d3,f#4] ~@2 [d3,a3,d4] ~@3 g4 [d4,f#4] [d3,a3] ~@2 [a3,c#4] [d3,e4] ~@4 e4 c#4 ~ [a3,c#4,g4,a4] ~@2 [c#4,f#4,a4] ~@2 [d3,a3,e4] ~@3 d3@5, ~@19 a4@2 ~ d4@5 [a3,d4]@2 ~@2 f#4@4 ~@11 a3@2 ~ d3@2 ~@4 a4@2 ~ [a3,d4,f#4]@6]/2", // Em7 G D5 D A5 A D D5 …
  N: "[[d4,f#4] d3 ~@2 [d4,f#4]@4 ~ [d4,f#4] [a2,a3] ~@2 [a3,c#4] e3 ~@4 [a3,c#4,a4] ~@2 [a2,g4,c#5] ~@2 a4 ~@2 [a2,a3,g4,c#5] ~@2 [d3,a3,f#4,d5]@3 a4 ~@2 [a2,a3,g4,c#5] ~@2 [d3,a3,f#4,d5]@3 a4 ~ g4 [a2,a3,c#5] ~@2 [d3,a3,f#4] ~ a4@2 ~ [a2,a3,g4] ~@2 d3 d5@2 a4@2 ~ [a2,a3,g4,c#5], ~@4 [a2,a3] ~@3 g4@2 ~@3 a4@6 ~@29 d5@4 ~@2 c#5@2 ~ [a3,f#4]@3 ~@4]/2", // D A A7 D A7 D A D …
  O: "[~@3 [d3,a3]@7 ~@3 [d3,a3,d4,f#4,a4,d5,f#5]@11 ~@2 [d2,a2,d3,f#3,a3,d4]@23 ~@15, ~@2 [f#4,d5]@7 ~@55]/2", // D5 D
})).s("gm_piano").gain(0.31)

// chords · piano · soft notes
const piano_soft = note("<A B ~ C D E F G H I J ~@2 K ~@2 L M ~@3>".pickRestart({
  A: "~ d3@23 d3@2 ~ d4@2 ~@3, d4@3 ~, ~ f#4@26 ~@5", B: "~@20 f#3 ~@11", C: "~@2 a3 ~@7 a3 d3 ~@15 [e3,c#4]@2 ~@3",
  D: "~ c#4 ~@30", E: "~@8 g4@2 ~@2 d4@2 ~@4 [d3,a3] ~@2 d4 ~@8 [d3,f#3] ~, ~@12 d3 ~@17 d4@2",
  F: "~@4 f#3 ~@2 f#3@2 ~@7 d3 ~@5 d3 ~ f#4 ~@7", G: "~@17 a3@2 ~@7 d3 ~@4 d3",
  H: "~@3 [e3,a3,c#4] ~@5 e3 ~@2 [e3,a3] ~@5 e3 ~@10 g#3 ~@2, ~@12 c#4@3 ~@17", I: "~@3 [e2,g#3] ~@28",
  J: "~@20 f#4 ~@11", K: "~@13 [a3,c#4] ~@14 d4@3 ~", L: "~@3 e4 ~@11 d3 ~@7 c#4 ~@8", M: "~ a3 ~@6 e4@2 ~@12 a3 ~@9",
})).s("gm_piano").gain(0.15)

stack(piano, piano_soft)

More by Gilbert & Sullivan