Strudelify

Haydn - Serenade for String

Franz Joseph Haydn

KeyG majorTempo80 bpm
0:00/0:00
// Haydn - Serenade for String — Franz Joseph Haydn
// 80 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5180883; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 72 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(80/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.

// chords · orchestral harp · "피아노"
const orchestral_harp = note(`<
  ~ A B C D E A@2 B C D E F G H I J K@2 L M N O P M Q R S T U V T@2 W X Y Z AA AB AC AD AE A B C D AF AC AG AH AI AJ AK
  AL AM AN AO AP A I AQ AR A I AS AT AU A AV AW AX AY
>`.pickRestart({
  A: "[c4,e4] ~ [e4,g4] ~ e4 ~ [e4,g4] ~ [c4,e4] ~ [e4,g4] ~ e4 ~ [e4,g4] ~, [c3,e3] ~ [c3,e3] ~", // C Em C Em C
  B: "[c4,f4] ~ [f4,a4] ~ f4 ~ [f4,a4] ~ [c4,f4] ~ [f4,a4] ~ f4 ~ [f4,a4] ~, [c3,f3] ~ [c3,f3] ~", // F5 F F5 F F5
  C: "[c4,e4] ~ [e4,g4] ~ [g3,c4] ~ [e4,g4] ~ [g3,d4] ~ [d4,f4] ~ [g3,d4] ~ [d4,f4] ~, [c3,e3] ~ [g2,d3] ~", // C Em C5 Em G5 Dm G5 Dm …
  D: "[g3,e4] ~ [e4,g4] ~ [g3,e4] ~ [e4,g4] ~ [b3,d4,f4] ~ [b3,g4]@2 [b3,d4,f4]@2 [g3,d4]@2, [g2,e3] ~ [b2,d3,f3] ~", // C Em C Em Bdim Em Bdim G5 …
  E: "[g3,c4,e4] ~ [e4,g4] ~ [g3,e4] ~ [e4,g4] ~ [g3,d4] ~ [d4,f4] ~ [g3,d4] ~ [d4,f4] ~, [g2,c3,e3] ~ [g2,d3] ~", // C Em C Em G5 Dm G5 Dm …
  F: "[c4,e4] ~ [e4,g4] ~ e4 ~ [e4,g4] ~ [c4,e4] ~ [e4,g4]@2 [c4,e4]@2 [g3,c4]@2, [c3,e3] ~ [c3,e3] ~", // C Em C Em C C5 C
  G: "[e3,g3,c4] ~ [g3,e4] ~ [g3,c4] ~ [e4,g4] ~ [g3,d4] ~ [d4,g4] ~ [g3,d4] ~ [d4,g4] ~, [e2,g2,c3] ~ [g2,d3] ~", // C C5 Em G5 C G5
  H: "[a3,c4] ~ [e4,g4] ~ [c4,e4] ~ [e4,g4] ~ [d3,a3] ~ [d4,f#4] ~ [f#3,a3] ~ [d4,f#4] ~, [a2,c3] ~ [d2,a2] ~", // Am Em C Em D5 D F#m D …
  I: "[b3,d4] ~ [d4,g4] ~ d4 ~ [d4,g4] ~ [b3,d4] ~ [d4,g4] ~ d4 ~ [d4,g4] ~, [b2,d3] ~ [b2,d3] ~", // Bm G5 Bm G5 Bm
  J: "[c4,e4] ~ [e4,g4] ~ e4 ~ [e4,g4] ~ [c#4,e4,a4] ~ [e4,g4,a4] ~ [c#4,e4,a4] ~ [e4,g4,a4] ~, [c3,e3] ~ [c#3,e3,a3] ~", // C Em A A7 A A7 C A
  K: "[d4,f#4,a4] ~ [f#4,a4,d5] ~ [d4,a4] ~ [f#4,a4,d5] ~ [d#4,g4] ~ [g4,c#5] ~ [d#4,g4] ~ [g4,c#5] ~, [d3,f#3,a3] ~ [d#3,g3] ~", // D D5 D D# Gdim D# Gdim D …
  L: "[d4,f#4,a4] ~ [f#4,a4,d5] ~ [f#4,a4] ~ [f#4,a4,d5] ~ [d4,f#4] ~ [f#4,a4]@2 [d4,f#4]@2 [a3,f#4]@2, [d3,f#3,a3] ~ [d3,f#3] ~", // D F#m D F#m D
  M: "[g3,b3,d4] ~ [g4,b4] ~ [b3,d4,g4] ~ [g4,b4] ~ [g3,b3,d4] ~ [g4,b4] ~ [b3,d4,g4] ~ [g4,b4] ~, [g2,b2,d3] ~ [g2,b2,d3] ~", // G
  N: "[d4,f#4] ~ [f#4,a4,d5] ~ [d4,a4] ~ [f#4,a4,d5] ~ [d4,f#4] ~ [f#4,a4,d5] ~ [d4,f#4,a4] ~ [f#4,a4,d5] ~, [d3,f#3] ~ [d3,f#3] ~", // D D5 D
  O: "[b3,d4,g4] ~ [g4,d5] ~ [g4,b4] ~ [g4,d5] ~ [b3,d4] ~ [g4,d5] ~ [g4,b4] ~ [g4,d5] ~, [b2,d3,g3] ~ [b2,d3] ~", // G G5 G G5 Bm G5 G G5 …
  P: "[d4,a4] ~ [f#4,a4] ~ [a4,d5] ~ [f#4,a4] ~ d5@2 [f#4,c5]@2 b4@2 [f#4,a4]@2, [d3,a3] ~ d3@2, ~@2 d4!2", // D5 F#m D5 F#m F#dim F#m D5
  Q: "[f#3,d4] ~ [a3,f#4] ~ [a3,d4] ~ [a3,f#4] ~ [f#3,d4] ~ [a3,f#4] ~ [d4,f#4,a4] ~ [f#4,a4] ~, [f#2,d3] ~ [f#2,d3] ~", // D D5 D F#m D
  R: "[d4,g4,b4] ~ [g4,d5] ~ [d4,b4] ~ [g4,d5] ~ [c4,d4,a4] ~ [g4,c5,d5] ~ [c4,d4,g4] ~ [g4,c5,d5] ~, [d3,g3,b3] ~ [c3,d3,a3] ~", // G G5 G G5 D7 Gsus4 Csus2 Gsus4 …
  S: "[g4,b4] ~ [b4,d5] ~ [d4,g4,b4] ~ [b4,d5] ~ [d4,g4] ~ [d4,b4] ~ [d4,g4] ~ [d4,b4] ~, [g3,b3] ~ [g2,d3,g3] ~", // G Bm G Bm G5 G G5 G …
  T: "[d4,g4,b4] ~ [g4,d5] ~ [d4,b4] ~ [g4,d5] ~ [d4,a4] ~ [c4,d4,f#4,a4] ~ [d4,f#4] ~ [c4,d4,f#4,a4] ~, [d3,g3,b3] ~ [d3,a3] ~", // G G5 G G5 D5 D7 D D7 …
  U: "[d4,g4,b4] ~ [g4,d5] ~ [d4,b4] ~ [g4,d5] ~ [d4,g4,b4] ~ [g4,d5] ~ [d4,b4] ~ [g4,d5] ~, [d3,g3,b3] ~ [d3,g3,b3] ~", // G G5 G G5 G G5 G G5 …
  V: "[d4,g4,b4] ~ [g4,d5] ~ [d4,b4] ~ [g4,d5] ~ [d4,a4] ~ [c4,d4,a4] ~ [d4,f#4] ~ [c4,d4,a4] ~, [d3,g3,b3] ~ [a2,d3,a3] ~", // G G5 G G5 D5 D7 D D7 …
  W: "[g4,b4,d5] ~ [d4,g4,b4] ~ [d4,g4] ~ [g3,b3,d4] ~ [g3,b3,d4]@4 ~@4, [d3,g3]@3 ~@5, b3@2 b3 ~@5", // G G5 G G5
  X: "[b3,d4,g4] ~ [g4,b4] ~ [d4,g4] ~ [g4,b4] ~ [d4,g4] ~ [d4,g4] ~ [g4,b4] ~ [d4,g4] ~, [b2,d3,g3] ~ [g2,d3,g3] ~", // G G5 G G5 G G5 G G5
  Y: "[c4,e4] ~ [e4,g4,c5] ~ [e4,g4] ~ [e4,g4,c5] ~ [c4,e4] ~ [e4,g4,c5] ~ [e4,g4] ~ [e4,g4,c5] ~, [c3,e3] ~ [c3,e3] ~", // C Em C Em C
  Z: "[b3,d4,g4] ~ [d4,g4,b4] ~ [d4,g4] ~ [g4,b4] ~ [c4,g4] ~ [e4,g4,c5] ~ g4 ~ [e4,g4,c5] ~, [b2,d3,g3] ~ [c3,g3] ~", // G G5 G C5 C G C5
  AA: "[g3,d4] ~ [d4,g4] ~ [b3,d4] ~ [d4,g4] ~ [d4,g4,b4] ~ b3@2 [g3,c4,a4] ~ [a3,f#4] ~, [g2,d3] ~ [d3,g3] ~, ~@8 b3@2 g4 ~@5", // G5 Bm G5 G Am7 D G5
  AB: "[b3,d4,g4] ~ [d4,g4,b4] ~ [d4,g4] ~ [g4,b4] ~ [g3,b3,d4] ~ [b3,d4,g4] ~ [b3,d4] ~ [b3,g4] ~, [b2,d3,g3] ~ [g2,b2,d3] ~", // G G5 G Bm Em G
  AC: "[g3,c4,e4] ~ [e4,g4] ~ [c4,e4] ~ [e4,g4] ~ [g3,c4,e4] ~ [e4,g4] ~ [c4,e4] ~ [e4,g4] ~, [g2,c3,e3] ~ [g2,c3,e3] ~", // C Em C Em C Em C Em …
  AD: "[b3,d4,g4] ~ [d4,g4,b4] ~ [d4,g4] ~ [g4,b4] ~ [g3,c4,e4] ~ [e4,g4] ~ [c4,e4] ~ [e4,g4] ~, [b2,d3,g3] ~ [g2,c3,e3] ~", // G G5 G C Em C Em G …
  AE: "[b3,d4,g4] ~ [g4,b4] ~ [d4,g4] ~ [g4,b4] ~ [b3,g4]@2 [f4,d5]@2 [e4,g4,c5]@2 [d4,b4]@2, [b2,d3,g3] ~ [g2,b2,g3]@2", // G G5 G Em Dm C G
  AF: "[g3,e4] ~ [e4,g4] ~ [g3,e4] ~ [e4,g4] ~ [g3,d4,f4] ~ [d4,f4,b4] ~ [b3,d4,f4] ~ [d4,f4,b4] ~, [g2,e3] ~ [g2,d3,f3] ~", // C Em C Em G7 Bdim C G7
  AG: "[c#4,e4] ~ [e4,a4] ~ [c#4,e4] ~ [f4,a4] ~ [a3,c#4,e4] ~ [e4,a4] ~ [c#4,e4] ~ [e4,a4] ~, [c#3,e3] ~ [a2,c#3,e3] ~", // C#m A5 C#m F A A5 C#m A5 …
  AH: "[d4,f4,a4] ~ [f4,a4,d5] ~ [f4,a4] ~ [f4,a4,d5] ~ [d4,f4,a4] ~ [f4,a4,d5] ~ [c4,f4,a4] ~ [f4,a4,d5] ~, [d3,f3,a3] ~ [d3,f3,a3] ~", // Dm F Dm F Dm
  AI: "[d4,g4] ~ [g4,d5] ~ [d4,g4] ~ [g4,d5] ~ [b3,d4,g4] ~ [g4,d5] ~ [d4,g4] ~ [g4,d5] ~, [g2,d3,g3] ~ [b2,d3,g3] ~", // G5 G G5 G
  AJ: "[c4,e4,g4] ~ [g4,c5] ~ [e4,g4] ~ [g4,c5] ~ [g3,c4,e4] ~ [e4,g4] ~ [e4,g4] ~ [g4,c5] ~, [c3,e3,g3] ~ [g2,c3,e3] ~", // C C5 Em C5 C Em C5 C
  AK: "[c4,e4,g4] ~ [g4,c5] ~ [e4,g4] ~ [g4,c5] ~ [g3,e4] ~ [e4,g4] ~ [c4,e4] ~ [c4,e4] ~, [c3,e3,g3] ~ [g2,e3] ~", // C C5 Em C5 C Em C
  AL: "[g3,b3,d4] ~ [d4,g4] ~ [b3,d4] ~ [d4,g4] ~ [g3,c4,e4] ~ [e4,g4] ~ [c4,e4] ~ [e4,g4] ~, [g2,b2,d3] ~ [g2,c3,e3] ~", // G G5 Bm G5 C Em C Em …
  AM: "[g3,b3] ~ [b3,d4,g4] ~ [b3,d4] ~ [d4,g4] ~ [b3,d4] ~ [d4,g4] ~ [c4,d#4] ~ [d#4,f#4] ~, [g2,b2] ~ [b2,d3] ~", // G Bm G5 Bm G5 Cm D#m G …
  AN: "[b3,d4] ~ [g3,b3,d4,g4] ~ [b3,d4] ~ [d4,g4] ~ [b3,d4] ~ [d4,g4] ~ [c4,d#4] ~ [d#4,f#4] ~, [b2,d3] ~ [b2,d3] ~", // Bm G Bm G5 Bm G5 Cm D#m …
  AO: "[g3,b3,d4] ~ [d4,g4] ~ [d4,f4] ~ g4 ~ [c4,d#4] ~ [d#4,g4] ~ [c4,d#4] ~ [d#4,f#4] ~, [g2,b2,d3] ~ [c3,d#3] ~", // G G5 Dm Cm D# Cm D#m G …
  AP: "[g3,b3] ~ [b3,d4,g4] ~ [b3,d4] ~ [d4,g4] ~ [g3,b3] ~ [b3,d4,g4]@2 [g3,b3,f4]@2 [g3,b3,d4]@2, [g2,b2] ~ [g2,b2] ~", // G Bm G5 G G7 G
  AQ: "[c4,e4] ~ [e4,g4] ~ e4 ~ [e4,g4] ~ [g3,c4] ~ [e4,g4] ~ e4 ~ [e4,g4] ~, [c3,e3] ~ [g2,c3] ~", // C Em C5 Em C C5
  AR: "[b3,d4] ~ [d4,g4] ~ d4 ~ [d4,g4] ~ g4@2 [b3,f4]@2 e4@2 [b3,d4]@2, [b2,d3] ~ g2@2, ~@2 g3!2", // Bm G5 Bdim Bm
  AS: "[c4,e4] ~ [e4,g4] ~ e4 ~ [e4,g4] ~ [g3,d4,f4] ~ [d4,f4,g4] ~ [b3,d4,f4] ~ [d4,f4,g4] ~, [c3,e3] ~ [g2,d3,f3] ~", // C Em G7 Bdim G7 C G7
  AT: "[c4,e4] ~ [e4,g4] ~ [g3,c4,e4] ~ [c4,e4,g4] ~ [e3,g3,c4] ~ [c4,e4,g4] ~ [c4,e4] ~ [e4,g4] ~, [c3,e3] ~ [e2,g2,c3] ~", // C Em C Em C
  AU: "[c4,e4] ~ [e4,g4] ~ [g3,c4] ~ [e4,g4] ~ [b3,d4] ~ [d4,g4] ~ [g3,d4] ~ [d4,g4] ~, [c3,e3] ~ [b2,d3] ~", // C Em C5 Em Bm G5 C Bm
  AV: "[c4,e4] ~ [e4,g4] ~ [g3,c4] ~ [e4,g4] ~ [b3,d4] ~ [d4,g4] ~ [b3,d4] ~ [d4,g4] ~, [c3,e3] ~ [b2,d3] ~", // C Em C5 Em Bm G5 Bm G5 …
  AW: "[e4,g4,c5] ~ [g4,c5] ~ [e4,g4] ~ [g4,c5] ~ [d4,g4] ~ [d4,f4,g4,b4] ~ [b3,g4] ~ [d4,f4,g4,b4] ~, [e3,g3,c4] ~ [d3,g3] ~", // C C5 Em C5 G5 G7 Em G7 …
  AX: "[c4,e4,g4] ~ [g4,c5] ~ [e4,g4] ~ [g4,c5] ~ [d4,g4] ~ [d4,f4,g4,b4] ~ [b3,g4] ~ [d4,f4,g4,b4] ~, [c3,e3,g3] ~ [d3,g3] ~", // C C5 Em C5 G5 G7 Em G7 …
  AY: "[d4,f4,g4,b4] ~ [d4,f4,g4] ~ [g3,b3]@2 [f3,g3,b3,d4] ~ [c3,e3,g3,c4]@4 ~@4, [d3,f3]@3 ~@5, g3 ~@3, b3@2 b3@2 [d4,f4] ~@11", // G7 G G7 C Dm
})).s("gm_orchestral_harp").gain(0.3)

stack(orchestral_harp)