Strudelify

Harp Concerto Op. 4 No. 6

G.F Handel1685-1759

KeyB♭ majorTempo92 bpm
0:00/0:00
// Harp Concerto Op. 4 No. 6 — G.F Handel1685-1759
// 92 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 4/4 at bar 2, 3/4 at bar 29, 1/4 at bar 29, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: duplicate parts dropped: ch 13 "Violon" violin (copy of ch 3 "Flûte" pizzicato strings); ch 9 "Violon" violin (copy of ch 8 "Flûte" flute)
// note: Transcription provider: pdmx. https://musescore.com/score/5796404; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 133 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(92/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · pizzicato strings · "Flûte"
const pizzicato_strings = note(`<
  A B C D E F G ~@18 H I J K B C D E F G ~@18 H I J L ~@12 M N ~@15 A B C O P Q R S T ~@12 M N ~@15 A B C O P Q R S T
>`.pickRestart({
  A: "~@13 f5 g5 a5", B: "bb5@2 d5@2 d5@2 d5@2 d5@4 ~ f5 g5 a5", C: "bb5@2 c5@2 c5@2 c5@2 c5@4 ~@2 d5 eb5",
  D: "f5@4 ~@2 d5 eb5 f5@4 ~@2 g5 a5", E: "bb5@4 ~@2 g5 a5 bb5@4 ~@2 bb4 c5",
  F: "d5@2 eb5@2 f5@2 eb5 d5 c5@2 c5@2 c5@2 c5@2", G: "c5!4 c5@2 ~@2", H: "~@3 c4 f4 a4 g4 c5",
  I: "f5 a5 g5 c6 a5 d6 c6 bb5", J: "[a5,bb5] a5@2 bb5 [g5,a5] g5 [g5,a5] f5!2 [f5,g5] c5@2 c5@2 c5@2, ~@10 g5 ~@5",
  K: "c5@2 a4@2 a4@2 a4@2 a4@4 ~ f5 g5 a5", L: "c5 a4!3 a4@2 ~@2", M: "~@3 d4 g4 bb4 a4 a5",
  N: "bb5@2 a5 g5 a5@2 g5 gb5 g5@4 ~@4", O: "f5@4 ~@2 d5 eb5 f5@4 ~@2 d5 eb5", P: "f5@4 ~@2 d5 eb5 f5@4 ~@4",
  Q: "~@3 f4 bb4 d5 c5 f5", R: "bb5@2 d6@2 g5@2 c6@2 a5@2 bb5 c6 eb5@2 f5@2",
  S: "d5@3 c5 c5@3 bb4 bb4@2 f5@2 f5@2 f5@2", T: "f5 bb5!3 bb5@2 ~@2",
})).s("gm_pizzicato_strings").gain(0.3)

// chords · church organ · "Alto"
const church_organ = note(`<
  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB
  AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP
  AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BQ
>`.pickRestart({
  A: "~@13 f5 g5 a5", B: "bb5@2 [bb3,bb4,d5]@2 [f3,f4,bb4,d5]@2 [d3,d4,bb4,d5]@2 [bb2,bb3,bb4,d5]@4 ~ f5 g5 a5",
  C: "bb5@2 [f3,f4,a4,c5]@2 [c3,c4,a4,c5]@2 [a2,a3,a4,c5]@2 f3@2 f3@2 bb3@2 d5 eb5, ~@4 [f2,a4,c5]@2 ~ [g3,bb3,d4,bb4]", // F Am F Gm
  D: "[a3,a4]@2 [f3,f4]@2 [bb3,bb4]@2 d5 eb5 [a3,a4]@2 [f3,f4]@2 [bb3,bb4]@2 g5 a5, [c4,f5]@2 d4@2 [c4,f5]@2 ~ [eb4,g4,eb5], ~@3 [g3,g4] ~@4", // A F Bb A F Bb F5 Eb …
  E: "[d4,d5]@2 [bb3,bb4]@2 [eb4,eb5]@2 g5 a5 [d4,d5]@2 [bb3,bb4]@2 [d3,d4]@2 [f3,f4,a4,c5]@2, [f4,bb5]@2 ~ [c4,c5] bb5@2 ~@2", // D Bb Eb D Bb D F Bb5 …
  F: "[bb2,bb3,d5]@2 [c3,c4,eb5]@2 [d3,d4,f5]@2 eb5 d5 [f3,f4,c5]@2 [f3,f4,a4,c5]@2 [c3,c4,a4,c5]@2 [a2,a3,a4,c5]@2, bb4@2 ~ [eb3,eb4] ~@4", // Bb Cm Dm F5 F Am Eb
  G: "[f2,f3,a4,c5]@2 [f3,f4,a4,c5]@2 [c3,c4,a4,c5]@2 [a2,a3,a4,c5]@2 [f2,f3,a4,c5]@4 ~ f5 g5 a5", // F Am F
  H: "bb5 ~ [bb3,bb4,d5]@2 [f3,bb4,d5]@2 [d3,bb4,d5]@2 [bb2,bb4,d5]@4 ~ f5 g5 a5", // Bb Gm Bb
  I: "bb5 ~ [f3,a4,c5]@2 [c3,a4,c5]@2 [a2,a4,c5]@2 [f2,a4,c5]@4 ~@2 d5 eb5, ~@7 bb3", // F Am F
  J: "a3 c4 a3 f3 bb3 d4 [bb3,d5] [g3,eb5] a3 c4 a3 f3 bb3 d4 [bb3,d5] [g3,eb5], f5 ~ f5 ~", // Bb Cm Bb Cm
  K: "a3 c4 a3 f3 bb3 d4 [bb3,d5] [g3,eb5] a3 c4 a3 f3 ~ f4 g4 a4, f5@2 ~@2 f5@2 a3 f3", // Bb Cm
  L: "bb4 f4 bb4 d5 c5 f4 c5 eb5 d5 f4 bb4 d5 f5 bb4 d5 f5, d3 bb2 a3 f3 bb3 bb2 ~ f3",
  M: "bb4 f4 bb4 d5 c5 f4 c5 eb5 d5 f4 bb4 d5 f5 bb4 d5 f5, d3 bb2 a3 f3 bb3 bb2 ~ bb3",
  N: "bb5 f5 bb5 d6 bb5 f5 c6 eb6 d6 f5 bb5 d6 c6 f5 a5 c6, d4 bb3 f4 d4 bb4 bb3 a3 f4",
  O: "d6 eb6 c6 d6 eb6 d6 bb5 d6 c6@2 f5@2 ~@2 g5 a5, bb3 f4 eb4 g4 f4@2 ~ eb4",
  P: "d4 f4 d4 bb3 eb4 g4 [eb4,g5] [c4,a5] d4 f4 d4 bb3 eb4 g4 [eb4,g5] [c4,a5], bb5 ~ bb5 ~", // Eb F Eb F
  Q: "d4 f4 d4 bb3 eb4 g4 [eb4,g5] [c4,a5] d4 f4 d4 bb3 d4@2 [f4,c6]@2, bb5 ~ bb5 ~", // Eb F F5
  R: "d6 a5 bb5 c6 bb5 d6 eb6 d6 c6 g5 a5 bb5 a5 c6 d6 c6, bb3 f4 g4 bb3 a3 g4 f4 a3",
  S: "bb5 f5 g5 a5 g5 bb5 c6 bb5 a5 f5 g5 a5 bb5 g5 a5 bb5, g3 f4 e4 g3 f3 f4 g3 f4",
  T: "c6 a5 d6 c6 bb5 a5 g5 f5 [c4,g5]@2 [e4,c5]@2 c5 c6 d6 c6, a3 f4 e4 d4 ~@2 c4 a4", // C5 C
  U: "c5 bb5 c6 bb5 c5 a5 bb5 a5 c5 g5 a5 g5 c5 a5 bb5 a5, c4 g4 c4 f4 c4 e4 c3 c4",
  V: "a4 g5 a5 g5 c5 f5 g5 f5 [g3,e5]@2 [c4,c5]@2 c5 c6 d6 c6, c3 bb3 c3 a3 ~@2 a3 f4", // C
  W: "c5 bb5 c6 bb5 a5 c5 f5 a5 d5 f4 bb4 d5 f5 bb4 d5 f5, e4 g3 f3 a3 bb3 d4 bb3 a3",
  X: "bb5 g5 a5 bb5 c5 bb5 a5 g5 a5 f5 a5 c6 g5 e5 g5 c6, g3 f4 e4 c4 f3@2 ~ e3",
  Y: "a5 g5 f5 g5 a5 bb5 a5 bb5 [c4,e4,g4,c6]@4 ~@2 [c3,c4]@2, f3@2 ~ [d4,f4] ~@4", // C Dm
  Z: "[f3,f4] [a3,a4] [g3,g4] [c4,e4,c5] [a3,f4,a4] [f3,f4,a4] [e3,eb4,g4] [c3,c4,c5]", // F A G C Dm F Em C
  AA: "[a3,a4] [f3,f4,f5,a5] [c4,c5,e5,g5] [e4,eb5,g5,c6] [f4,f5,a5] [bb3,bb4,f5,d6] [a3,a4,f5,c6] [d4,d5,f5,bb5], f5 ~@15", // A F C F Bb F Bb
  AB: "[c4,c5,f5,a5]@3 bb5 [g5,a5] g5 [g5,a5] bb5 [f2,f3,f5]@2 [f3,f4,a4,c5]@2 [c3,c4,a4,c5]@2 [a2,a3,a4,c5]@2, ~ [c3,c4,e5] ~@2", // F Gsus2 F Am C
  AC: "[f2,f3,a4,c5]@2 [f3,f4,a4]@2 [c3,c4,f4,a4]@2 [a2,a3,f4,a4]@2 [f2,f3,f4,a4]@4 ~ f5 g5 a5", // F Dm F
  AD: "[f2,f3,a4,c5]@2 [f3,f4,a4]@2 [c3,c4,f4,a4]@2 [a2,a3,f4,a4]@2 [f2,f3,f4,a4]@4 ~ c5 d5 e5", // F Dm F
  AE: "f5@2 [f3,f4,a4]@2 [c3,f4,a4]@2 [a2,f4,a4]@2 [f2,f4,a4]@4 ~ c5 d5 e5", // F Dm F
  AF: "f5@2 [c4,e4,g4]@2 [g3,e4,g4]@2 [e3,e4,g4]@2 [c3,e4,g4]@4 ~@2 [g5,a5]!2", // C Em C Gsus2
  AG: "g5@2 [g3,g4,bb4]@2 [d3,g4,bb4]@2 [bb2,g4,bb4]@2 [g2,g4,bb4]@4 ~@2 [g5,a5]!2, gb5 ~@15", // Gm Eb Gm Gsus2
  AH: "g5 [d4,gb4,a4] [a3,gb4,a4] [gb3,gb4,a4] [d3,f4,a4]@2 ~ [gb3,d5], gb5 ~@15", // D Gbm Dm D
  AI: "[g3,bb4] [gb3,a4,d5] [g3,bb4,eb5] [f3,a4,d5] [eb3,a4,c5] [d3,f4,bb4] ~ [d3,f4,bb4], eb5 ~@15", // Gm D Eb Dm Adim Bb
  AJ: "[eb3,g4] [d3,f4,bb4] [eb3,g4,c5] [d3,f4,bb4] [c3,eb4,a4] [bb2,d4,g4] ~ [d4,d5], c5 ~@15", // Eb Bb Cm Bb Adim Gm D
  AK: "g5 d5 eb5 d5 g5 bb5 a5 g5 a5 d5 eb5 d5 a5 c6 bb5 a5, bb3 g3 ~ g3 gb3 d3 ~ gb3",
  AL: "bb5 d5 eb5 d5 g5 bb5 a5 g5 a5 d5 eb5 d5 a5 c6 bb5 a5, g3 g2 ~ g3 gb3 d3 ~ gb3",
  AM: "bb5 d5 eb5 d5 eb5 bb5 c6 bb5 a5 c5 d5 c5 d5 a5 bb5 a5, g3 g2 ~ g3 f3 d3 ~ f3",
  AN: "g5 bb4 c5 bb4 c5 bb5 a5 g5 gb5 eb5 gb5 a5 d5 d6 eb6 d6, eb3 d4 eb4 c4 d4 a4 d4 bb4",
  AO: "d5 c6 d6 c6 d5 bb5 c6 bb5 d5 a5 bb5 a5 d5 d6 eb6 d6, d4 a4 d4 g4 d4 gb4 d4 g4",
  AP: "d5 c6 d6 c6 d5 bb5 c6 bb5 [d4,gb4,a5]@4 ~@2 [d3,d4]@2, d4 a4 d4 g4 ~@4", // D
  AQ: "[g3,g4] [bb3,bb4] [a3,a4] [d4,gb4,d5] [bb3,g4,bb4] [g3,g4,bb4] [gb3,gb4,a4] [d3,d4,d5]", // G Bb A D Eb Gm Gbm D
  AR: "[g3,g4]@2 a5 g5 [c3,c4,c5,a5]@2 [bb4,g5] [a4,gb5] [g2,g3]@2 g3@2 bb3@2 [g3,g5]@2, d5 ~ [bb4,g5] ~, bb5 ~ [bb2,bb3]@2 ~@2 [d3,eb4]@2 ~@8", // G F Eb D G Eb Bb Ebmaj7
  AS: "e5@2 f5 g5 c5@2 [e3,bb4]@2 a4 bb4 c5 a4 f4 f5 eb5 f5, c4@2 ~@2 f3@2 ~ a3", // Edim
  AT: "d5 eb5 f5 d5 bb4 c5 d5 bb4 g4 a4 bb4 g4 eb5 c5 d5 eb5, bb3 bb2 d3 bb2 eb3@2 ~ c3",
  AU: "a4 bb4 c5 a4 f5 d5 eb5 f5 bb4 c5 d5 bb4 c5 d5 eb5 c5, f3@2 ~ d3 g3 d3 eb3 f3",
  AV: "d5 bb4 c5 d5 eb5 c5 d5 eb5 f5 d5 eb5 f5 f4 f5 g5 f5, bb3 g3 c4 f3 d4@2 f3 d4",
  AW: "f4 eb5 f5 eb5 f4 d5 eb5 d5 f4 c5 d5 c5 f4 f5 g5 f5, f3 c4 f3 bb3 f3 a3 f3 d4",
  AX: "f4 eb5 f5 eb5 f4 d5 eb5 d5 a3 c4 a3 f3 bb3 d4 [bb3,d5] [g3,eb5], f3 c4 f3 bb3 c5@2 ~@2", // Bb Cm
  AY: "a3 c4 a3 f3 bb3 d4 [bb3,d5] [g3,eb5] a3@2 f3@2 eb4 g4 [eb4,g5] [c4,a5], f5 ~ f5 ~", // Bb Cm Eb F
  AZ: "d4 f4 d4 bb3 eb4 g4 [eb4,g5] [c4,a5] d4 f4 d4 bb3 d4 f4 d4 bb3, bb5@2 ~@2 bb5@2 ~ bb4", // Eb F
  BA: "g4 a4 bb4 g4 a4 bb4 c5 a4 bb4 c5 d5 bb4 c5 d5 eb5 c5, eb3 f3 g3 a3",
  BB: "d5 eb5 f5 d5 eb5 f5 g5 eb5 f5 g5 a5 f5 g5 a5 bb5 c6, bb3 c4 d4 eb4",
  BC: "d6 bb5 a5 bb5 f5 bb5 a5 bb5 d6 bb5 a5 bb5 f5 bb5 a5 bb5, bb3@2 ~ f4 d4@2 ~ f4",
  BD: "d6 bb5 a5 bb5 f5 bb5 f5 g5 bb5 g5 f5 g5 d5 bb5 a5 bb5, d4@2 ~ f4 d4@2 ~ bb3",
  BE: "eb5 d6 eb6 d6 eb5 d6 eb6 d6 eb5 c6 eb6 c6 eb5 c6 eb6 c6, g3@2 ~ g4 a4@2 ~ g4",
  BF: "d5 c6 eb6 c6 d5 c6 eb6 c6 d5 bb5 d6 bb5 d5 bb5 d6 bb5, f4@2 ~ d4 g4@2 ~ f4",
  BG: "c5 bb5 c6 bb5 c5 bb5 c6 bb5 c5 a5 c6 a5 c5 a5 c6 a5, eb4@2 ~ c4 f4@2 ~ eb4",
  BH: "bb5 f5 g5 a5 bb5 f5 eb5 f5 d5 f5 eb5 f5 d5 f5 g5 a5, d4@2 ~ c4 bb3@2 ~ f3",
  BI: "d3@2 [bb3,bb4,d5]@2 [f3,f4,bb4,d5]@2 [d3,d4,bb4,d5]@2 [bb2,bb3,bb4,d5]@4 ~ f5 g5 a5, bb5 ~@15", // Bb Gm Bb
  BJ: "bb5 ~ [f3,f4,a4,c5]@2 [c3,c4,a4,c5]@2 [a2,a3,a4,c5]@2 f3@2 f4@2 bb4@2 d5 eb5, ~@4 [f2,a4,c5]@2 ~ [bb3,d4,g4]", // F Am F Gm
  BK: "[a3,a4]@2 [f3,f4]@2 [bb3,bb4]@2 d5 eb5 [a3,a4]@2 [f3,f4]@2 [bb3,bb4]@2 d5 eb5, [c4,f5] d4 [c4,f5] d4, ~@3 [g3,g4] ~@3 [g3,g4]", // A F Bb A F Bb F5 G
  BL: "[a3,a4]@2 [f3,f4]@2 [bb3,bb4]@2 d5 eb5 [a3,a4]@2 [f3,f4]@2 ~@2 [f2,f3]@2, [c4,f5] d4 [c4,f5] ~, ~@3 [g3,g4] ~@4", // A F Bb A F F5 G
  BM: "[bb2,bb3] [d3,d4] [c3,c4] [f3,f4] [d3,d4,bb4] [bb3,bb4,d5] [a3,a4] [f3,f4,a4], ~@12 c5 ~ f5 ~", // Bb D C F Gm Bb A F
  BN: "[g3,g4,d5]@2 [d3,d4,f5,d6]@2 [eb3,eb4,c5,g5]@2 [c3,c4,eb5,c6]@2 [f3,f4]@2 bb5 c6 [a3,a4,eb5]@2 [f3,f4,f5]@2, bb5 ~@7 d5@4 ~@4, ~@8 a5 ~ [g3,g4]@2 ~@4", // G5 Dm Cm F Adim F G
  BO: "[bb3,f4,bb4]@2 ~ c5 [f3,eb4,f4,c5]@2 ~ bb4 [bb2,bb3,d4]@2 [bb3,bb4,d5,f5]@2 [f3,f4,d5,f5]@2 [d3,d4,d5,f5]@2, d5 ~ [eb3,eb4,g4]@2 ~@2 [f2,f3,a4]@2 bb4 ~@7", // Bb5 F7 Bb Dm Eb F
  BP: "[bb2,bb3,d5]@2 [bb3,bb4,d5,bb5]@2 [f3,f4,d5,bb5]@2 [d3,d4,d5,bb5]@2 [bb2,bb3,d5]@4 ~ c5 d5 e5, f5 ~@7 bb5 ~@7", // Bb Gm Bb
  BQ: "[bb2,bb3,d5] [bb3,bb4,d5,bb5] [f3,f4,d5,bb5] [d3,d4,d5,bb5] [bb2,bb3,d5]@2 ~@2, f5 ~@7 bb5 ~@7", // Bb Gm Bb
})).s("gm_church_organ").gain(0.3)

// other · tremolo strings · "Violoncelle"
const tremolo_strings = note(`<
  ~ A B C D E F ~@17 G H I J F A B C D E F ~@17 G H I J F ~@11 K L M ~@16 A N C O P Q R S ~@11 K L M ~@16 A N C O P Q R
  S
>`.pickRestart({
  A: "~ bb3 f3 d3 bb2@2 ~@2", B: "~ f3 c3 a2 f2@2 ~ bb3", C: "a3 f3 bb3 g3 a3 f3 bb3 g3",
  D: "d4 bb3 eb4 c4 d4 bb3 d3 f3", E: "bb2 c3 d3 eb3 f3!2 c3 a2", F: "f2 f3 c3 a2 f2@2 ~@2", G: "~@7 c3",
  H: "f3 a3 g3 c4 a3 f3 e3 c3", I: "a3 f3 c4 e4 f4 bb3 a3 d4", J: "c4@2 c3@2 f2 f3 c3 a2", K: "~@7 d3",
  L: "g3 bb3 a3 d4 bb3 g3 gb3 d3", M: "g3 bb2 c3 d3 g2@2 ~@2", N: "~ f3 c3 a2 f2 f3 bb3 g3",
  O: "a3 f3 bb3 g3 a3 f3 ~ f2", P: "bb2 d3 c3 f3 d3 bb3 a3 f3", Q: "g3 d3 eb3 c3 f3 g3 a3 f3",
  R: "bb3 eb3 f3 f2 bb2 bb3 f3 d3", S: "bb2 bb3 f3 d3 bb2@2 ~@2",
})).s("gm_tremolo_strings").gain(0.3)

stack(pizzicato_strings, church_organ, tremolo_strings)