Strudelify

The Flowers That Bloom in the Spring

Gilbert & Sullivan

KeyF majorTempo120 bpm
0:00/0:00
// The Flowers That Bloom in the Spring — Gilbert & Sullivan
// 120 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 19 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 F G@2 H I@2 J@2 K@6>".pickRestart({
  A: "f4@2 ~@3 f4@5 g4@2 [f2,a2,c3,f3] ~@4 [f2,c3,f3]@2 ~@3 g4@2 [a2,c3,f3] ~@4 [c3,f3] ~@2, ~@5 c3@2 ~@5 f4@3 ~@2 f4@5 ~@2 f4@2 ~@6, ~@17 a2 ~@10 [f2,f4]@3 ~", // F F5 F F5 F
  B: "~@3 c5 f3 ~@3 c5@4 ~@3 [a2,c3,f3] ~@3 f3 c3 ~@3 g4@2 [a2,f3] ~@3 [f2,e3] [bb2,c3], ~@8 f2 ~@5 a4@2 ~@3 a4@6 ~ f4@4 g4@2, ~@19 f2@2 ~@5 c3@2 ~@4", // F Dm Fmaj7 Bbsus2
  C: "~@2 c4@3 ~ [bb2,c3,e3] ~@3 [a2,f3]@2 ~@5 f3 c3 ~@3 [c3,f3] ~@5 [f3,f4] c3 f4 ~, ~@3 g4@2 f4@7 ~@4", // C7 Dm F5 F
  D: "f3 c3 ~@3 g4@2 [f2,c3,f3] ~@3 [f2,a2,c3,f3] ~@4 g4@2 [f2,a2,c3,f3,f4] ~@3 [f2,a2] [c3,f3] ~@5 [f2,a2,c3,f3] ~@2, f4@5 ~@2 f4@3 ~ f4@5 ~@6 f4@7 c5@3", // F5 F F5 F
  E: "~ [f3,a3,c4] ~@6 [f3,c4] ~@3 a4@4 ~@2 db4 e3 ~@3 [e3,g3,db4] ~@3 bb4@2 ~ [e3,g3,a3] ~, ~ c5@7 a4@3 ~ db4 ~@4 bb4@2 ~@13, ~@18 a4@3 ~ a4@5 ~@2 [db4,a4]@2 ~", // F F5 Dbdim A7 Gbm
  F: "~@2 [d3,f3,d4] ~@6 d4 ~@3 f3 ~@5 a4!2 ~@2 g4@5 a4@2 g4@2, ~@2 a4@6 d5@2 ~@2 d5@2 ~@9 g2 ~@6 b3 ~", // Dm
  G: "[~@2 g4@5 ~ a4 b3 g4@4 g2 ~@7 [e3,g3,c4] ~@4 [g2,gb3]@3 ~@4 a4@5 ~ g4@4 ~ a4 ~ [g2,d3,f3,b3] ~@4 [d3,f3,b3] ~@5 a4 ~ g4@4, ~@15 c5@15 ~@4 gb3 ~@25 b3@2 ~@2, ~@26 c4@9 ~@12 g4@2 ~@3 g4@5 ~@3 f3 ~@3]/2", // C Gmaj7 G7 Bdim
  H: "~@2 c4@21 ~ c3@4 [d3,d4]@4, ~@23 c4@5 ~@4", // D
  I: "[[e3,e4]@4 [f3,f4]@5 [bb3,bb4]@4 [a3,a4]@4 [bb3,bb4]@4 [g3,g4]@4 [f3,f4]@4 [g3,g4]@5 ~@8 [c3,c4]@5 [d3,d4]@4 [e3,e4]@4 ~ f3@4 [bb3,bb4]@4, ~@34 [e3,e4]@13 ~@8 f4@5 ~@4]/2", // E F Bb A Bb G F G …
  J: "[[a3,a4]@5 [bb3,bb4]@5 ~@6 f3@7 ~@10 e4@22 c4 ~@4 [f2,a2,c3,f3] ~@3, ~@10 [g3,g4]@9 ~@4 g4@13 ~@28, ~@16 f4@11 ~@32 f4@3 ~@2]/2", // A Bb F G
  K: "[~ f4 ~ [f2,c3,f3,f4] ~@3 [f2,c3,f3] ~@2 c5@2 ~@2 [f2,c3,f3] ~@3 [f2,c3,f3,f4] ~@4 f4 ~ [f2,c3,f3,f4] ~@3 [f3,f4] c3 c5@4 ~ f3 c3 ~@3 [f2,a2,c3,f3] ~@5 [f2,a2,c3,f3] ~@3 [f2,c3,e3] bb2 ~@2 e4@2 ~ [f2,e3] bb2 ~@3 [f2,a2,c3,f3] ~@6 [f2,a2,c3,f3] ~@3 [f2,a2,c3,f3] ~@5 c4 [f3,a3] ~@3 [a3,c4] ~@4 f5 ~ [f3,a3,c4] ~@3 [f3,a3,c4] c6@5 [f3,a3,c4] ~@4 [d3,f3] ~@4 f5@2 [d3,f3,a3,d4,f5]@4 ~@28 bb2@5 [a2,d4,f4,a4] [d4,f4,bb4]@3 ~@3 [c3,c4,g4]@6 ~@2 [c2,c3,bb3,c4,bb4,c5] ~@5 [f2,f3] ~@12 f1@4 ~@3, ~@7 f4@3 ~@4 c4@2 ~@13 f2@2 ~@5 c4@3 ~@2 a4@5 g4@2 ~@3 g4@4 ~@8 f4@12 ~@5 c5@4 ~ f5@5 ~ f5@2 ~@2 f5@7 c5@4 ~ a3@5 ~@6 [d3,f3]@33 ~ g2 ~@39, ~@47 f4@4 ~@7 c4@4 ~@44 [d4,f5]@8 ~@5 d4@26 [d4,f4,g4]@6 ~@7 f4@3 ~@5 e4@3 ~@3 [a3,c4,f4]@16 ~@4, ~@15 f5@4 ~@5, ~@125 f6@27 ~@40]/6", // F5 F Fmaj7 F Am F Dm Bb …
})).s("gm_piano").gain(0.26)

// chords · piano · soft notes
const piano_soft = note("<A B C D E F G H I ~@2 J@2 K L M N@2 ~>".pickRestart({
  A: "~@5 [f2,a2]@4 ~@15 f2 ~@4 a2 ~@2, ~@5 f3@2 ~@25", B: "~@4 [f2,a2,c3] ~@3 [a2,c3,f3] ~@6 f2 ~@3 a2 ~@6 f2 ~@5",
  C: "~@6 f2 ~@3 c3@2 ~@6 [f2,a2] ~@3 [f2,a2] ~@5 f2 a2 ~@2, ~@10 f2 ~@21", D: "~ [f2,a2] ~@5 a2 ~@24",
  E: "~@8 a3@2 ~@2 e3 a3 ~@5 [g3,a3] ~@3 a3 ~@8", // Gsus2
  F: "~@2 a3 ~@6 [d3,f3,a3] ~@3 [d3,a3,d4] ~@5 [d3,f3,a3,d4] ~@10 [f3,g3] ~", G: "~@3 [f3,g3,b3] ~@23 eb3@3 ~@2",
  H: "~@2 [g2,eb3] ~@5 [g2,d3,f3]@2 ~@10 g2@2 ~@6 [g2,d3] ~@3, ~@2 b3 ~@5", // Cm G7 G5
  I: "~@2 [e3,g3]@2 ~@5 [c3,g3] ~@4 [e3,g3]@11 ~@7, ~@2 c3 ~@6 e3@2 ~@3 c3@3 ~@15", // Em C5 Em
  J: "[~@23 g3@11 e3@9 ~@12 c3 ~@8]/2", K: "~@3 a2 ~@3 a2 ~@7 a2 ~@2 a2 ~@6 a2 ~@4 a2 ~", L: "~@5 [f2,a2] ~@26",
  M: "~@21 f3@4 ~@7", N: "[~@23 a3@33 ~@8]/2",
})).s("gm_piano").gain(0.1)

stack(piano, piano_soft)

More by Gilbert & Sullivan