Strudelify

The Mikado: Tit Willow

Gilbert & Sullivan

KeyA majorTempo120 bpm
0:00/0:00
// The Mikado: Tit Willow — Gilbert & Sullivan
// 120 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 25 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@4 B@4 C@4 D@2 E@7 F@4>".pickRestart({
  A: "[~@2 e4@3 ~@20 a4@5 a4@7 ~@20 a4@7 f#4@10 ~@22 d4@3 ~ e4@3 a4@5 ~@4 [a3,e4]@5 ~ [d4,e4]@3 ~ b4@4 ~@2, ~@5 e4@11 ~@3 b4@14 ~@4 g#4@13 d4@26 ~@16 c#4@7 ~ c#4@2 ~@10 c#4@2 ~@14, ~@11 a2@37 a2@51 ~@29, ~@11 c#5@23 ~@9 a4@9 ~@22 [e3,e4]@25 [e3,a3]@5 ~@24, ~@49 b4@9 ~@70]/4", // A5 Dsus2 E A5
  B: "[~@4 e4@10 ~@32 e4@3 ~@18 a4@6 ~@5 g#4@7 a4@6 ~@8 a4@7 f#4@9 e4@7 ~@6, ~@14 c#4@39 e3@40 ~@35, ~@14 e4@5 a4@35 c#4@34 ~@4 d4@25 ~@11, ~@15 a2@37 a2@71 ~@5, ~@49 e4@5 c#5@8 b4@11 a4@8 ~@10 b4@9 ~@28]/4",
  C: "[~@5 a4@3 a4@4 ~@4 b4@5 ~@4 [b2,g#4]@6 [b2,a3,f#4]@4 b4@4 ~@6 [a3,f#4]@7 ~@7 e4@17 ~@24 a4@3 ~ [c#2,c#3]@2 ~@6 f#2@4 ~@7 f#4@5, ~@12 [e4,g#4]@4 ~@9 [b3,e4] ~@5 d#4@2 ~@12 d#4@2 ~@6 g#4@5 ~@25 e4@8 [c#2,c#3,e4,g4]@13 b3@7 [a#3,e4]@17, ~@13 b2@6 ~@35 e3@22 ~@10 f#4@9 ~@8 g4@9 ~@8 f4@8, ~@104 e4 ~@6 f#4@12 ~@5]/4", // E B7 D C# E E5 C#dim A#dim
  D: "[~@2 f#3@4 ~ b4@7 [f#2,f#3,e4]@3 ~@24 f#4@4 ~@13 [c#2,c#3,b3,e4]@6, ~ [f#2,e4,f#4,c#5]@12 ~ a#4@9 b4@22 ~ e4@11 g4@7, ~@37 e4@8 [c#2,b3,g4]@13 ~@6, ~@27 a4@5]/2", // F#7 C#m7 F#7 C#m7b5
  E: "[~ a#3@4 ~@10 f#4@6 ~@9 b4@8 a#4@9 b4@13 ~@10 d5@15 ~@12 f#4@3 ~@10 a4@11 ~@13 b4@6 ~@12 b4@29 ~@7 e4@6 ~ c#4@2 ~ a4@5 ~@4 [a2,e4]@5 ~@2 [a3,d4,f#4]@3 a4@5 ~@2, f#2@22 ~@48 g4@26 [d3,a3]@26 [a3,c#4]@36 ~@36 [a2,a3]@3 ~@16 a2@3 ~@8, ~ e4@21 [f#3,e4]@16 ~@31 [g3,b3]@27 a4@11 ~@33 a4@18 ~@66, ~ f#4@14 ~@6 c#5@17 ~@23 b4@11 ~@17 b4@10 ~@4 f#4@18 ~@74 e4@6 ~@23, ~@10 f4@13 ~@42 c#5@7 ~@13 c#5@14 ~@22 c#5@15 ~@88]/7", // A5 D D5 A F#7 G
  F: "[~@5 f#4@10 [a2,e4]@5 ~@27 a5@56 ~@25, ~@15 a1@64 ~@49, ~@20 a4@24 a4@59 ~@25, ~@41 c#4@61 ~@26, ~@46 c#5@57 ~@25]/4", // A5
})).s("gm_piano").gain(0.15)

// chords · piano · soft notes
const piano_soft = note("<A@3 B C@2 D@3 E@3 F@2 G H ~ I@3 J K L@3>".pickRestart({
  A: "[~@11 [e3,c#4]@39 f#3@24 c#4@18 ~@4]/3", B: "~@16 e3 ~@5 [e3,g#3]@5 ~@5",
  C: "[~@5 g#3@2 ~@8 a3@40 ~@9, ~@2 d4@7 ~@23, ~@5 e3@14 ~@45]/2", D: "[~@14 f#3@12 e3@12 b3@3 ~@7, ~@52 c#4@7 ~@37]/3",
  E: "[~@13 b2@2 ~@7 g#3@22 ~@15 b3@12 ~@9 f#1@4 ~@12]/3",
  F: "[~@25 f#4@2 ~@18 c#3@6 ~@13, ~@22 d4@23 ~@19, ~@23 b1@22 ~@19, ~@23 b2@6 ~@35]/2", G: "f#1@5 ~@27",
  H: "~@7 e4@8 ~ [b2,f#4]@7 ~@9, ~@6 f#3@9 d4@7 ~@10", // B5
  I: "[~@57 [e3,g#3,b3]@28 ~@11, ~@25 f#4@37 ~@34, ~@13 d#3@18 ~@17, ~@14 g#4@7 ~@3]/3", J: "~@15 a3@5 ~@12",
  K: "~@15 c#4@5 ~@12", L: "[~@11 e4@60 ~@25, ~@8 a3@63 ~@25]/3",
})).s("gm_piano").gain(0.05)

stack(piano, piano_soft)

More by Gilbert & Sullivan