Strudelify

Erlkonig for 2 Trombones and 2 Cellos

Franz Shubert

KeyB♭ majorTempo165 bpm
0:00/0:00
// Erlkonig for 2 Trombones and 2 Cellos — Franz Shubert
// 165 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/5496832; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 151 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(165/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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.

// other · trombone · "Trombone 1"
const trombone = note(`<
  A ~@6 B ~@5 C D ~@14 E F B ~@6 G H ~@14 I J K L M L M N O P Q R S T U V W X Y Z Y AA ~@3 AB AC ~@4 AD AE AF AG@2 AH AI
  AJ AK AJ AL AM AN AO AN AP AQ AR AS AT AS AU AV N AW AX AY ~@3 AZ BA BB BC BD BE AV BF BG BH BG BI BJ BK BJ H BL BM BN
  BO BP BQ BR BS BT BU@2 BV BW BX BY BZ CA@2 CB CC
>`.pickRestart({
  A: "g3 ~@7", B: "g3 ~@3", C: "db3@3 bb2", D: "gb3@3 ~", E: "d3", F: "g3 gb3", G: "~ ab3", H: "g3 ~",
  I: "~@2 d4 ~ d4 ~ d4 ~", J: "c4 ~@3 c4 ~@3", K: "bb3 ~@3 a3 ~ c4@2", L: "d4@3 bb3", M: "f3@3 c4", N: "d4@3 d4",
  O: "f4 c4", P: "c4@4 b3 c4 ~ d4 c4@4 e3@4", Q: "f3@3 f3", R: "c4@3 db4", S: "d4@4 bb3@2 bb3 b3", T: "c4@3 f3",
  U: "d4@6 d4!2", V: "g4@3 f4!2 eb4 d4 c4", W: "bb3@5 c4 d4 c4", X: "bb3@2 ~ b3", Y: "c4 a3", Z: "gb3@2 ~ b3",
  AA: "gb3 ~", AB: "~ e3 d3 db3", AC: "d3 ~@3", AD: "~@3 g3", AE: "g3@2 a3 b3 c4@2 c4 db4", AF: "d4@2 g3@2 e4@2 d4 c4",
  AG: "b3@2 e3@2 c4@2 a3!2", AH: "a3@2 ab3 a3 b3@2 g3!2", AI: "a3@2 d3!2 b3@2 ~ g3", AJ: "g3@2 a3 b3 c4@2 d4 e4",
  AK: "f4@2 d4 b3 c4@2 ~ g3", AL: "g4 f4 d4 b3 c4@2 ~@2", AM: "~@3 db4", AN: "d4 b3", AO: "ab3@2 ~ db4",
  AP: "ab3@2 ~ ab3", AQ: "a3 ab3 a3 bb3", AR: "b3 c4", AS: "db4", AT: "~ gb3 ab3!2", AU: "e3", AV: "a3@4 a3@3 a3",
  AW: "d4@2 bb3 g3 e3@2 bb3@2", AX: "a3@2 a3!2", AY: "d3 ~", AZ: "~@3 c4", BA: "eb4@3 bb3 bb3@2 eb4@2",
  BB: "d4@2 d4 eb4 f4@2 eb4 d4", BC: "eb4@3 d4", BD: "db4@2 db4!2", BE: "d4@4 d4@3 ab3", BF: "d3@2 ~ d4", BG: "eb4 c4",
  BH: "a3@2 ~ d4", BI: "a3 ~", BJ: "d4!2", BK: "d4 c4", BL: "~@3 d3", BM: "d3@3 d3", BN: "g3!2 ~ g3",
  BO: "g3@4 a3@3 a3", BP: "bb3@2 ~ bb3", BQ: "bb3 c4", BR: "d4!2 ~ d4", BS: "d4@4 g4@3 d4", BT: "eb4 ~",
  BU: "[c4@6 ~ c4]/2", BV: "c4@3 ab3", BW: "db4@3 bb3 g3@2 bb3@2", BX: "ab3 ~@3", BY: "~@6 ab3!2",
  BZ: "bb3@2 ~ c4@9 bb3@4", CA: "[~ ab3@4 g3@19 ~@4 db3@4]/2", CB: "~ d3@5 ~@4 d4@4 ~@2", CC: "~ g4@7 ~@8",
})).s("gm_trombone").gain(0.3).pan(0.4)

// other · trombone · "Trombone 1" · soft notes
const trombone_soft = note(`<
  ~@5 A B ~@5 C ~ D E F E F G H E I B F B F B@2 ~@8 J K ~@2 L M L N ~ O P O P ~@2 Q@2 ~@27 R@2 S T ~@66
>`.pickRestart({
  A: "c3@3 db3", B: "d3", C: "c3", D: "~@3 d3", E: "g3", F: "gb3", G: "~@3 gb3", H: "f3", I: "d3 a3", J: "~ a3",
  K: "bb3 ~", L: "b3@3 b3", M: "c4@3 c4", N: "c4", O: "a3@3 a3", P: "a3", Q: "d4/2", R: "[g3@3 a3]/2", S: "g3 gb3",
  T: "b3",
})).s("gm_trombone").gain(0.2).pan(0.4)

// other · trombone · "Trombone 2"
const trombone_2 = note(`<
  A ~@6 B ~@5 C D ~@14 E F B ~@6 G H ~@14 I J K L M L M L N O P M L M L Q R S T U T V W X Y Z AA ~@15 AB AC AD AC AE ~@3
  AF AG AH AI AJ AK AL AM AN AO AN AO AP AQ AR@2 AS AT AU AV AW AV AX AY AZ BA BB@4 BC BD BE BF BB BG BH BI BJ BK ~@5 BL
  BM
>`.pickRestart({
  A: "g2 ~@7", B: "g2 ~@3", C: "db2", D: "d2 gb2 ~ g2 a2 b2 ~ db3 ~@8", E: "g2 eb2", F: "c2 d2", G: "bb2 b2",
  H: "eb3 ~", I: "~@2 bb3 ~ f3 ~ d3 ~", J: "eb3 ~@3 c3 ~@3", K: "f3 ~@3 f3 ~@3", L: "bb2 ~ d3 ~ f2 ~ d3 ~",
  M: "a2 ~ c3 ~ f2 ~ c3 ~", N: "c3 ~ f3 ~ a2 ~ f3 ~", O: "c3 ~ e3 ~ g2 ~ e3 ~", P: "f3 ~ c3 ~ a2 ~ c3 ~",
  Q: "b2 ~ d3 ~ g2 ~ eb3 ~", R: "f2 ~ c3 ~ a2 ~ f2@2", S: "bb2 ~@2 b2", T: "c3 a2", U: "gb2@2 ~ b2", V: "gb2@2 ~ gb3",
  W: "g3 gb3 g3 ab3", X: "a3 bb3", Y: "b3", Z: "~ e3 gb3!2", AA: "gb3 ~@3", AB: "~@3 db3", AC: "d3 b2",
  AD: "ab2@2 ~ db3", AE: "ab2 ~", AF: "~@3 ab2", AG: "db3@2 ~ ab2", AH: "a2@2 ~ a2", AI: "a2@4 a2@3 a2", AJ: "d3@3 d3",
  AK: "d3@2 bb2 g2 e2@2 bb2@2", AL: "a2@2 a2!2", AM: "d2 ~", AN: "d3 e3 ~ f3 g3 a3 ~ bb3 a3@2 ~@2 f3@2 ~@2",
  AO: "d3 ~@3", AP: "g3!2", AQ: "ab3!2", AR: "bb3!2", AS: "b3!2", AT: "a3 e3", AU: "d3@2 ~ d3", AV: "eb3 c3",
  AW: "a2@2 ~ d3", AX: "a2 ~", AY: "b3 c4", AZ: "bb3 c3", BA: "d3!2", BB: "g2", BC: "g2 a2", BD: "bb2", BE: "bb2 c3",
  BF: "d3", BG: "c3", BH: "c3@4 db3 ~ d3 ~", BI: "eb3 ~ e3 ~ f3 ~ g3 ~", BJ: "ab3", BK: "g3", BL: "~@5 d3@2 ~",
  BM: "~ bb3@7 ~@8",
})).s("gm_trombone").gain(0.3).pan(0.6)

// other · trombone · "Trombone 2" · soft notes
const trombone_soft_2 = note(`<
  ~@5 A B ~@5 C ~ D@2 E F E G F H I F J F J F J ~@8 K ~@3 L M N H ~ M J M J ~@2 O F ~@27 P@2 Q R ~@66
>`.pickRestart({
  A: "c2@3 db2", B: "d2", C: "c2", D: "[~ d3@3]/2", E: "a2", F: "bb2", G: "~@3 a2", H: "eb3", I: "bb2 eb3", J: "c3",
  K: "g2 a2", L: "ab3@3 g3", M: "eb3@3 eb3", N: "ab3@3 ab3", O: "f3", P: "[b2@3 e3]/2", Q: "b2 c3", R: "d3",
})).s("gm_trombone").gain(0.2).pan(0.6)

// other · cello · "Violoncello"
const cello = note(`<
  A@6 B A@6 C D ~@13 E F G H A@3 I ~ J K L M ~@3 N O ~@11 P@5 Q R S T P T P U S V@8 W X Y Z AA AB AC ~@9 AD AE@8 AF AG
  AH AI AJ AK AL AM@2 ~@6 AN AO AP AQ AR@4 AS AT AR A@4 AU AV AW AX AY AZ BA@2 BB ~@6 BC BD
>`.pickRestart({
  A: "g3!2 ~ g3!3 ~ g3!3 ~ g3!3 ~ g3", B: "g3!2 ~ g3!3 ~ g3 gb3!2 ~ gb3!3 ~ gb3",
  C: "g3!2 ~ g3!3 ~ g3!3 ~ g3 e3!2 ~ e3", D: "d2 gb2 ~ g2 a2 b2 ~ db3 d3!2 ~ d3 ~@4",
  E: "~@3 gb2!3 ~ gb2!3 ~ gb2!3 ~ gb2", F: "g2!2 ~ g2!3 ~ g2 eb2!2 ~ eb2!3 ~ eb2",
  G: "c2!2 ~ c2!3 ~ c2 d2!2 ~ d2!3 ~ d2", H: "[g2,g3]!2 ~ [g2,g3]!3 ~ [g2,g3]!3 ~ [g2,g3]!3 ~ [g2,g3]",
  I: "g3!2 ~ g3 ~@12", J: "~@14 a3 ~", K: "bb3@8 b3@6 b3 ~", L: "c4 ~", M: "c2 eb2 ~ f2 g2 a2 ~ b2 c3!2 ~ c3 ~@4",
  N: "c2 eb2 ~ f2 g2 a2 ~ b2 c3!2 ~ c3!3 ~ c3", O: "f2 a2 ~ bb2 c3 d3 ~ e3 f3!2 ~ f3 ~@4",
  P: "bb3 d4 ~ d4 bb3 d4 ~ d4 bb3 d4 ~ d4 bb3 d4 ~ d4", Q: "c4 a3 ~ a3 c4 a3 ~ a3 c4 a3 ~ a3 c4 a3 ~ a3",
  R: "c4 g3 ~ g3 c4 g3 ~ g3 c4 g3 ~ g3 c4 bb3 ~ bb3", S: "a3 c4 ~ c4 a3 c4 ~ c4 a3 c4 ~ c4 a3 c4 ~ c4",
  T: "a3 eb4 ~ eb4 a3 eb4 ~ eb4 a3 eb4 ~ eb4 a3 eb4 ~ eb4", U: "b3 d4 ~ d4 b3 d4 ~ d4 g3 c4 ~ c4 g3 c4 ~ c4",
  V: "d4!2 ~ d4!3 ~ d4!3 ~ d4!3 ~ d4", W: "d4!2 ~ d4 ~@8 gb3@4", X: "b3@2 ~ gb3", Y: "a3@6 g3 ~ g3@8", Z: "~ g3 a3!2",
  AA: "b3@2 g3@2 d3@2 e3 gb3", AB: "g3@4 d3 ~ b2 ~", AC: "g2@2 ~@2 a2 ~@3", AD: "~@9 e3 ~ e3!3 ~ e3",
  AE: "e3!2 ~ e3!3 ~ e3!3 ~ e3!3 ~ e3", AF: "e3!2 ~ e3 gb3!2 ~ gb3 e3!2 ~ e3 eb3!2 ~ eb3",
  AG: "db3!2 ~ db3!3 ~ db3!3 ~ db3!3 ~ db3", AH: "[a2,g3]!2 ~ [a2,g3]!3 ~ [a2,g3]!3 ~ [a2,g3]!3 ~ [a2,g3]",
  AI: "[e3,a3]!2 ~ [e3,a3]!3 ~ [e3,a3]!3 ~ [e3,a3]!3 ~ [e3,a3]", AJ: "[d3,a3]!2 ~ [d3,a3]!3 ~ [d3,a3] a3!2 ~ a3!3 ~ a3",
  AK: "[g2,e3]!2 ~ [g2,e3]!3 ~ [g2,e3]!3 ~ [g2,e3]!3 ~ [g2,e3]", // C
  AL: "[a2,f3]!2 ~ [a2,f3]!3 ~ [a2,f3] [a2,e3]!2 ~ [a2,e3]!3 ~ [a2,e3]", AM: "d2!2 ~ d2!3 ~ d2!3 ~ d2!3 ~ d2",
  AN: "db4!2", AO: "d4!2", AP: "d4 e2", AQ: "d2@4 ~@4 f3!2 ~ f3!3 ~ f3", AR: "f3!2 ~ f3!3 ~ f3!3 ~ f3!3 ~ f3",
  AS: "f3!2 ~ f3!3 ~ f3 gb3!2 ~ gb3!3 ~ gb3", AT: "g3!2 ~ g3!3 ~ g3 eb3!2 ~ eb3!3 ~ eb3",
  AU: "g3!2 ~ g3!3 ~ g3 [g3,a3]!2 ~ [g3,a3]!3 ~ [g3,a3]", // Gsus2
  AV: "[g3,bb3]!2 ~ [g3,bb3]!3 ~ [g3,bb3]!3 ~ [g3,bb3]!3 ~ [g3,bb3]", // Gm
  AW: "[g3,bb3]!2 ~ [g3,bb3]!3 ~ [g3,bb3] [a3,c4]!2 ~ [a3,c4]!3 ~ [a3,c4]", // Gm Am
  AX: "[bb3,d4]!2 ~ [bb3,d4]!3 ~ [bb3,d4]!3 ~ [bb3,d4]!3 ~ [bb3,d4]", // Bb
  AY: "[f3,b3]!2 ~ [f3,b3]!3 ~ [f3,b3]!3 ~ [f3,b3]!3 ~ [f3,b3]", // Fdim
  AZ: "[eb3,c4]!2 ~ [eb3,c4]!3 ~ [eb3,c4]!3 ~ [eb3,c4]!3 ~ [eb3,c4]", BA: "c3!2 ~ c3!3 ~ c3!3 ~ c3!3 ~ c3",
  BB: "[ab2,c3]!2 ~ [ab2,c3]!3 ~ [ab2,c3]!3 ~ [ab2,c3]!3 ~ [ab2,c3]", BC: "~@5 [d2,a2]@2 ~", BD: "~ g2@7 ~@8",
})).s("gm_cello").gain(0.3).pan(0.8)

// other · cello · "Violoncello" · soft notes
const cello_soft = note(`<
  ~@14 A B C D C D E F G H I H I H J ~@6 K L M ~@2 N O P O ~ Q R S R T U V W X ~@31 Y Z AA AB@2 AC@2 AD AE AD AF ~@20 AG
  AH AI ~@24 AJ AK AL@2 AM@2 ~@2
>`.pickRestart({
  A: "~@12 d3!2 ~ d3", B: "[bb2,d3]!2 ~ [bb2,d3]!3 ~ [bb2,d3]!3 ~ [bb2,d3]!3 ~ [bb2,d3]",
  C: "d2 gb2 ~ g2 a2 b2 ~ db3 d3!2 ~ d3!3 ~ d3", D: "d3!2 ~ d3!3 ~ d3!3 ~ d3!3 ~ d3",
  E: "g2!2 ~ g2!3 ~ g2!3 ~ g2!3 ~ g2", F: "c2!2 ~ c2!3 ~ c2!3 ~ c2 eb2!2 ~ eb2", G: "f2!2 ~ f2!3 ~ f2!3 ~ f2!3 ~ f2",
  H: "bb2 c3 ~ d3 eb3 f3 ~ gb3 f3!2 ~ f3 bb2!2 ~ bb2", I: "bb2!2 ~ bb2!3 ~ bb2!3 ~ bb2!3 ~ bb2", J: "gb2!2 ~@14",
  K: "~@3 d3", L: "g3@3 d3", M: "g3@4 a3@3 ~", N: "~@12 c3!2 ~ c3", O: "c3!2 ~ c3!3 ~ c3!3 ~ c3!3 ~ c3",
  P: "c2 eb2 ~ f2 g2 a2 ~ b2 c3!2 ~ c3!3 ~ c3", Q: "~@12 f3!2 ~ f3", R: "f3!2 ~ f3!3 ~ f3!3 ~ f3!3 ~ f3",
  S: "f2 a2 ~ bb2 c3 d3 ~ e3 f3!2 ~ f3!3 ~ f3", T: "f3 a3 ~ bb3 c4 d4 ~ e4 f4!2 ~ f4!3 ~ f4", U: "~@3 c3",
  V: "eb3@3 eb3", W: "f3@3 c3", X: "eb3@6 d3 ~ d3@8", Y: "~@6 b2 ~", Z: "g2 c3 ~ e3 g3 e3 ~ c3 g2 c3 ~ e3 g3 e3 ~ c3",
  AA: "g2 b2 ~ f3 g3 f3 ~ b2 g2 c3 ~ e3 g3 e3 ~ c3", AB: "b2 d3 ~ e3 ab3 e3 ~ d3 a2 c3 ~ e3 a3 e3 ~ c3",
  AC: "a2 c3 ~ d3 gb3 d3 ~ c3 g2 b2 ~ d3 g3 d3 ~ b2", AD: "g2 b2 ~ f3 g3 f3 ~ d3 g2 c3 ~ e3 g3 e3 ~ c3",
  AE: "g2 d3 ~ f3 g3 f3 ~ d3 g2 c3 ~ e3 g3 e3 ~ c3", AF: "g2 d3 ~ f3 g3 f3 ~ d3 c3 ~@7", AG: "bb3!2", AH: "b3 d4",
  AI: "eb4@2 eb4 d4", AJ: "[ab2,db3]!2 ~ [ab2,db3]!3 ~ [ab2,db3]!3 ~ [ab2,db3]!3 ~ [ab2,db3]",
  AK: "[ab2,c3]!2 ~ [ab2,c3]!3 ~ [ab2,c3]!3 ~ [ab2,c3]!3 ~ [ab2,c3]", AL: "[[c3,eb3]@19 ~@13]/2",
  AM: "[~@10 [db2,g2]@19 ~@3]/2", // Dbdim
})).s("gm_cello").gain(0.2).pan(0.8)

stack(trombone, trombone_soft, trombone_2, trombone_soft_2, cello, cello_soft)