Strudelify

Lohengrin WWV 75

Richard Wagner

KeyB♭ majorTempo112 bpm
0:00/0:00
// Lohengrin WWV 75 — Richard Wagner
// 112 bpm, 2/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 4 "Bass" named as a bass, played on electric bass finger (its clarinet patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/43724; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 173 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(112/2)

// 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.

// other · clarinet · "Alto"
const clarinet = note(`<
  ~@4 A B A B C D E B A B A B A F G H I J A B I J K L M N O P M Q R P M S T U V W X Y A B A B C Z E B A B A B A F U AA B
  AB AC AD AE@2 ~@7 AF AG AH AI AJ AK@2 AL AM ~@7 AN AO AP AQ AR AK@2 AL AS ~@14 A B A B C Z E B A B A B A F G H I J A B
  I J K L M N O P M Q R P M S T U V W X Y A B A B C Z E B A B A B A F U AA B AB AC AD U
>`.pickRestart({
  A: "f4@4 f4@3 f4", B: "f4@3 ~", C: "f4@4 f4@3 bb4", D: "bb4@4 bb4@3 f4", E: "f4@4 e4@3 e4", F: "a4@4 g4@3 g4",
  G: "g4@4 eb4@3 f4", H: "d4@3 ~", I: "bb4@2 a4 g4", J: "eb4!2", K: "d4@4 gb4@3 g4", L: "g4", M: "g4@2 g4!2",
  N: "a4 gb4 g4@2", O: "gb4@2 gb4!2", P: "gb4!2", Q: "g4!2", R: "g4@4 e4@3 e4", S: "bb4@3 f4", T: "a4@2 a4!2", U: "bb4",
  V: "f4@2 bb4!2", W: "a4 g4", X: "f4@2 g4!2", Y: "gb4@3 f4", Z: "bb4@4 bb4@2 ~ f4", AA: "a4@4 f4@3 f4", AB: "~@7 f4",
  AC: "f4", AD: "g4@3 f4", AE: "[bb4@7 ~]/2", AF: "~@3 [d4,gb4]", AG: "[d4,gb4] [db4,e4]", AH: "d4@3 gb4 [d4,gb4]@4",
  AI: "[d4,a4]@7 gb4", AJ: "[d4,gb4]!2", AK: "[g4@5 gb4 [d4,gb4]@2, d4@3 ~]/2", AL: "[a3,g4]!2", AM: "[d4,gb4]@3 ~",
  AN: "~@3 [d4,a4]", AO: "[d4,a4] [d4,b4]", AP: "[d4,a4]@3 gb4 [d4,gb4]@4", AQ: "[d4,gb4]@7 d4", AR: "d4 [d4,gb4]",
  AS: "[d4,gb4] ~", // D
})).s("gm_clarinet").gain(0.2)

// other · clarinet · "Tenor"
const clarinet_2 = note(`<
  ~@4 A B C B D E F G A B C B A H I J K L M G K L N O P Q R L S T U V W X Y Z AA AB AC O A B C B D AD F G A B C B A H
  AE@2 AF AG AH AI ~@48 A B C B D AD F G A B C B A H I J K L M G K L N O P Q R L S T U V W X Y AJ AA AB AC O A B C B D
  AD F G A B C B A H AE@2 AF AG AH AI ~
>`.pickRestart({
  A: "d4@4 d4@3 d4", B: "d4@3 ~", C: "d4@4 eb4@3 c4", D: "d4@4 d4@3 g4", E: "g4@4 f4@3 eb4", F: "d4@4 bb3@3 bb3",
  G: "a3@3 ~", H: "d4@4 bb3@3 d4", I: "c4@4 a3@3 a3", J: "bb3@3 ~", K: "g4@2 f4 eb4", L: "c4!2", M: "c4@4 d4@3 a3",
  N: "b3@4 d4@3 d4", O: "d4", P: "b3@2 c4 b3", Q: "e4 eb4 ~ b3, ~ d4", R: "[a3,c4]@2 a3 d4", S: "[g3,d4]@2 [g3,d4]!2",
  T: "b3!2", U: "d4@4 g3@3 g3", V: "[a3,c4]!2", W: "b3@2 bb3!2", X: "d4@3 bb3", Y: "c4@2 c4 eb4", Z: "[d4,f4]",
  AA: "d4@2 d4 c4", AB: "c4 bb3", AC: "d4@2 e4!2", AD: "g4@4 f4@2 ~ eb4", AE: "[[c4,eb4]@12 [a3,eb4]@3 [a3,eb4]]/2",
  AF: "[bb3,d4]@3 ~", AG: "~@7 bb3", AH: "bb3", AI: "bb3 ~", AJ: "f4",
})).s("gm_clarinet").gain(0.2)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@4 A B C B A D@2 E A B C B A F G B ~@2 H E ~@2 I J K@2 L@2 M N O L P Q R S T U V W A B C B A D@2 E A B C B A F X Q B
  Y S Z ~@48 A B C B A D@2 E A B C B A F G B ~@2 H E ~@2 I J K@2 L@2 M N O L P Q R S T U V W A B C B A D@2 E A B C B A F
  X Q B ~@4
>`.pickRestart({
  A: "bb3@4 bb3@3 bb3", B: "bb3@3 ~", C: "bb3@4 f3@3 f3", D: "[bb3@12 g3@3 g3]/2", E: "f3@3 ~", F: "d3@4 g3@3 g3",
  G: "eb3@4 f3@3 f3", H: "f3@4 f3@3 f3", I: "g3@4 d3@3 g3", J: "g3@3 g3", K: "[g3@3 g3]/2", L: "d3@3 d3",
  M: "b2@2 b2!2", N: "e3!2", O: "d3@4 db3@3 db3", P: "g3@2 g3!2", Q: "f3!2", R: "f3@2 f3!2", S: "bb3", T: "bb3@2 g3!2",
  U: "f3 g3", V: "a3@4 a3@3 a3", W: "d3 ~", X: "eb3", Y: "~@7 bb3", Z: "bb3 ~",
})).s("gm_electric_bass_finger").gain(0.2)

// chords · piano · "MusicXML Part"
const piano = note(`<
  A B C@2 D E F E G H I J D E F E K L M N O ~ P Q R ~ S T U@2 V W X Y Z AA AB@2 AC AD AE AF AG AH AI AJ AK AL AM AN AO
  AP AQ AR AK AS AT AU AV AW AX@3 ~@2 AY AZ BA BB BC BD BE BF BG ~@8 AZ BA BB BC BD BE BF BG ~@7 BH BI BJ BK@2 BL BM BN
  BO BP BQ BR@2 BS BT BU BV BW BX BY BZ CA CB CC CD BW BX CE CF CG CH CI CJ CK CL CI CJ CM CN U@2 V CO X Y CP AA CQ@2 AC
  CR AE CS AG CT CC CU BW CU CV BZ CA CW CX CY BW CZ DA DB DC DD DE DF DG ~@2
>`.pickRestart({
  A: "[f4,f5]@4 [f4,f5]@3 [f4,f5]", B: "[f4,f5]!2", C: "[f4,f5]",
  D: "[bb2,bb3,d4,f4]@4 [bb3,d4,f4,bb4]@3 [bb3,d4,f4,bb4]", E: "[bb3,d4,f4,bb4]@3 ~",
  F: "[bb2,bb3,d4,f4]@4 [f3,eb4,f4,c5]@3 [f3,c4,eb4,f4,a4]", G: "[bb3,d4,f4]@4 [bb3,d4,f4,bb4]@3 [bb3,g4,bb4,eb5]",
  H: "[bb3,g4,bb4,eb5]@4 [bb3,f4,bb4,d5]@3 [bb3,eb4,f4,c5]", // Eb Bb Bbsus4
  I: "[bb3,d4,f4,bb4]@8 c5 bb4 [e4,a4]@4 [g3,bb3,e4,bb4]@2, ~@4 [g3,bb3]@3 ~", J: "[f3,a3,f4,c5]@3 ~",
  K: "[bb3,d4,f4]@4 [bb3,d4,f4,bb4]@3 [bb3,d4,f4,d5]", L: "[d3,a3,d4,f4,a4,f5]@4 [g3,bb3,d4,g4,d5]@3 bb4",
  M: "[eb3,g3,c4,g4]@4 [f3,a3,eb4,f4,c5]@3 [f4,d5]", // Cm F7 Dm
  N: "[bb3,d4,f4,bb4]@4 [bb3,bb4]!2 ~ [bb3,bb4] [bb3,bb4]@4 [bb3,bb4]@4", O: "[bb3,bb4] ~@3",
  P: "[f3,c4,f4,a4]@4 [f3,d4,f4,bb4]@3 [f3,a3,f4,c5]", // F Bb F
  Q: "[f4,c5]@4 [f4,f5]!2 ~ [f4,f5] [f4,f5]@4 [f4,f5]@4, [f3,a3]@3 ~", R: "[bb4,bb5] ~@3",
  S: "[g3,b3,d4,g4]@4 [d3,c4,gb4,a4]@3 [g2,d4,g4,b4]", T: "~ [b2,d4] d3 [g3,b4], g2, b4@3 ~, g4!2",
  U: "[b3 ~ [c4,e5] [b3,d5] [e4,a4] [eb4,gb4] d4 b3, [g4,d5] g4 c5 ~, ~ g3@5 [g3,g4,b4]@2]/2", // C Bm A5 Ebm G5 G
  V: "[a3,d5] db5 [a3,c5] [d4,b4], gb4, ~ d3@3", W: "d3 gb3 a3 c4, [c3,gb4], c4@3 ~, b4 a4",
  X: "b2 d3 [g3,e5] [b3,gb5], [d4,g4,d5] ~", Y: "e3 g3 b3 e4, g4, g5 b4",
  Z: "~@2 g3@2 c3@2 ~ g4, [d3,d4,g4,b4] [db3,e4,a4], ~@3 a3", AA: "d3 gb3 a3 c4, [gb4,a4], e5 d5",
  AB: "[~ g4 d5 eb5 ~ f4 bb4 [f4,d5], g3 [f3,d4], [b3,d5] bb3@3, ~@2 bb4@3 ~@3, ~@4 f5@3 ~]/2", // Dm Bm
  AC: "f5 e5 eb5 c5, [f3,c4,eb4,a4]", AD: "bb4 d3 f3 [bb3,d4], [bb2,d5], f4!2, ~ bb4@3",
  AE: "[bb2,f3,bb3,d4,f4,d5]@2 [d4,d5] [e4,e5], ~ [g2,g3,bb4]", AF: "[f2,f3,f4,a4]@2 ~ eb5, f5@3 ~, ~ [g2,g3,g4,bb4]",
  AG: "[f4,a4,d5]@4 d5 db5 b4 db5, [a2,a3], ~ [e4,g4]", AH: "[d3,a3,gb4]@3 f4, [d4,d5]",
  AI: "[bb2,f3,bb3,d4,f4]@4 [bb2,bb3,d4,f4,bb4]@3 [bb2,bb3,d4,f4,bb4]", // Bb
  AJ: "[bb2,bb3] d3 f3 bb3 ~ bb4 d5 f5, [d4,bb4]@3 ~, f4@2 f4 ~", // Bb Gm
  AK: "[bb2,bb3,d4,f4]@4 [f2,f3,eb4,f4,c5]@3 [f2,f3,eb4,f4,a4]", // Bb F7
  AL: "[bb2,bb3]@2 d3 f3 bb3 ~@2 bb4, [f4,bb4]@3 f4, d4@5 d4@3", // Bb Bb5
  AM: "[bb2,bb3,d4,f4]@4 [bb2,bb3,d4,f4,bb4]@3 [bb2,bb3,g4,bb4,eb5]", // Bb Eb
  AN: "[bb2,bb3,g4,bb4,eb5]@4 [bb2,bb3,f4,bb4,d5]@3 [bb2,bb3,eb4,f4,c5]", // Eb Bb Bbsus4
  AO: "[bb2,bb3,d4,f4,bb4]@8 c5 bb4 [e4,a4]@4 [g3,bb3,e4,bb4]@2, ~@4 [g3,bb3]@3 ~", // Bb A5 Edim Gm
  AP: "[f3,a3]@2 a2 c3 f3 a3 c4 f4, [f4,c5]", AQ: "[bb2,bb3,d4,f4]@4 [bb2,bb3,d4,f4,bb4]@3 [bb2,bb3,d4,f4,bb4]",
  AR: "[bb2,bb3] d3 f3 bb3 ~@3 d5, [f4,bb4]@5 f4@3, d4!2, ~@3 bb4", // Bb Bb5
  AS: "[bb2,bb3] bb2 ~ d3 f3 bb3 ~@3 bb4@2 d5 ~ f4@2 d4, [d4,f4,bb4]@7 d4@8 ~, ~@2 f4 bb4", // Bb
  AT: "[bb2,bb3,d4,f4]@4 [bb2,bb3,d4,f4,bb4]@3 [bb2,bb3,f4,bb4,d5]", // Bb
  AU: "[d2,d3,f4,a4,f5]@4 [g2,g3,g4,bb4,d5]@3 [g2,g3,g4,bb4]", // Dm Gm
  AV: "[eb2,eb3] bb2 ~ c3 f3 bb3 ~ c4 g4 ~@3 eb5 g5@2 eb5, [c5,g5]@11 c5@5, bb4@9 bb4@7", AW: "[f2,f3,a4,eb5,f5] ~@3",
  AX: "[[d4,f4,bb4]@4 [f4,bb4,d5]@4 [bb4,d5,f5]@4 [d5,f5,bb5]@3 [f5,bb5,d6] [f5,bb5,d6]@6 ~@2, bb2@11 ~]/3", // Bb
  AY: "bb2 f3 ~ bb3 d4 f3 ~ bb3 d4@6 [a4,d5,gb5,a5]@2, [bb4,d5,f5]@7 ~", AZ: "[a4,d5,gb5,a5]@5 ~ [a3,e4,g4,a4]@2",
  BA: "[d4,gb4,a4,d5,gb5,a5]@5 ~ [a3,e4,g4,a4]@2", BB: "[d4,gb4,a4,d5,gb5,a5] [d4,g4,b4,g5,b5,d6]",
  BC: "[e4,g4,a4,db5,e5] [d4,gb4,d5,gb5,a5]", BD: "[g4,b4,d5,g5,b5]@8 [g4,db5,e5,db6]@4 [g4,db5,e5,d6]@3 e6",
  BE: "[gb4,a4,d5,a5,a6]@8 [b4,d5,b5]@4 [b4,d5,db6]@3 d6, ~ gb5", BF: "[e4,b4,g5,g6]@8 [d4,d5,a5,gb6]@7 [a4,db5,a5,e6]",
  BG: "[a4,db5,a5,e6] ~", BH: "[d3,a3,gb4]@4 ~ g4 ab4 a4, ~ [e3,db4]", BI: "a5 gb5 d5 a4, [gb3,d4]",
  BJ: "[g3,b3,b4]@4 [eb3,b3,g4,g5]@3 [gb4,gb5]", // G Ebaug Gb
  BK: "[[gb4,gb5]@2 ~@8 b4@2 db5 d5 eb5 e5, [e3,b3] [d3,g3,b3] [g3,e4] [a3,e4], ~ [e4,e5]@2 b4@2 ~@3]/2", // Gb E5 G C A5 E
  BL: "d6 a5 gb5 d5, [a3,gb4] [b3,d4]", BM: "[d3,a3,d4,a4,gb5]@8 [g3,db4,a4,e5]@7 [gb4,d5]",
  BN: "[d3,a3,gb4,d5]@8 [d4,d5]@7 [d4,d5]", BO: "[d4,d5]@8 [d4,d5]@7 [d4,d5]", BP: "[d4,d5]@15 [d4,d5]",
  BQ: "[d4,d5]!2", BR: "f5 g5 f5 g5 f5 g5 f5 g5 f5 g5 f5 g5 f5 g5 f5 [f3,f4,g5], [f3,f4]@8 [f3,f4]@7 ~",
  BS: "f5 g5 f5 g5 f5 g5 f5 g5 f5 g5 f5 g5 f5 g5 [f3,f4,f5] g5, [f3,f4]@7 ~", // F
  BT: "f5 g5 f5 g5 f5 g5 f5 g5 f5 g5 f5 g5 f5 g5 f5 g5, [f3,f4]!2", // F
  BU: "[bb2,bb3,bb4,d5,f5]@4 [bb2,bb3,bb4,d5,f5,bb5]@3 [bb2,bb3,bb4,d5,f5,bb5]", // Bb
  BV: "[bb2,bb3] bb2 d3 f3 bb3 d4 f4 bb4, [bb4,d5,f5,bb5]", // Bb
  BW: "[bb2,bb3,bb4,d5,f5]@4 [f2,f3,eb5,f5,c6]@3 [f2,f3,eb5,f5,a5]", // Bb F7
  BX: "[bb2,bb3] d3 f3 bb3 d4 f4 bb4 d5, [d5,f5,bb5]", // Bb
  BY: "bb2 f3 bb3 d4 [bb3,d5,f5,bb5]@3 [bb2,bb3,g5,bb5,eb6], [bb4,d5,f5] ~", // Bb Eb Bb
  BZ: "[bb2,bb3,g5,bb5,eb6]@4 [bb2,bb3,f5,bb5,d6]@3 [bb2,bb3,eb5,f5,c6]", // Eb Bb Bbsus4
  CA: "[bb2,bb3,d5,f5,bb5]@8 c6 bb5 [e5,a5]@4 [g2,g3,e5,bb5]@2, ~@4 [g2,g3]@3 ~", // Bb A5 Edim G
  CB: "[f2,f3] a2 c3 f3 a3 c4 f4 a4, [f5,a5,c6]", CC: "[bb2,bb3,bb4,d5,f5]@4 [bb2,bb3,d5,f5,bb5]@3 [bb2,bb3,d5,f5,bb5]",
  CD: "[bb2,bb3] bb2 d3 f3 bb3 d4 f4 bb4, [d5,f5,bb5]", // Bb
  CE: "bb2 f3 bb3 d4 [bb3,d5,f5,bb5]@3 [f5,bb5,d6], [bb4,d5,f5] ~", // Bb
  CF: "d3 f3 a3 d4 g3 bb3 d4 [g3,g5,bb5], [f5,a5,f6]@4 [g5,bb5,d6]@3 ~", // Gm F Gm
  CG: "c3 eb3 g3 c4 f3 a3 c4 [f3,f5,a5,d6], [c5,g5]@4 [eb5,a5,c6]@3 ~", CH: "bb2 d3 f3 bb3 d4 f4 bb4 d5, [d5,bb5]",
  CI: "[g4,bb4,eb5]@2 [f4,a4,d5] [eb4,g4,c5]", CJ: "[c4,eb4,g4]!2",
  CK: "[f2,f3,c4,eb4,f4,a4]@4 [f2,f3,d4,f4,bb4]@3 [f2,f3,f4,a4,c5]", // F7 Bb F
  CL: "[f2,f3] a3 c4 ~@3 f5 a5, [a4,c5] a4, f4@3 f4@5, ~@5 c5@3", // F Am
  CM: "[g2,g3,b3,d4,g4]@4 [d2,d3,c4,gb4,a4]@3 [g2,g3,d4,g4,b4]", CN: "[g2,g3] [b2,d4] d3 [g3,b4], b4@3 ~, g4!2",
  CO: "d3 gb3 a3 d4, [c3,c4,gb4], b4 a4", CP: "~@2 g3@2 ~@3 g4, [d3,d4,g4,b4] [db3,e4,a4], ~@3 a3",
  CQ: "[~ g4 [bb4,d5] [g4,eb5] bb4 f4 bb4 [f4,d5], g3 [f3,d4], [b3,d5] bb3@3, ~@4 f5@3 ~]/2", // Bb Cm Dm Bm
  CR: "bb2 d3 f3 bb3, [d4,f4,bb4,d5]", CS: "[f2,f3,a4,c5]@2 ~ eb5, f5@3 ~, ~ [g2,g3,g4,bb4]",
  CT: "[d2,d3] gb3 ~ a3 ~@3 a4 ~ gb5 ~ a5 d6@4, d5!2, [d4,gb4] d4@3, ~@5 gb4@11", // D
  CU: "[bb2,bb3] d3 ~ f3 bb3 d3 ~ f3 bb3 d4 ~ f4 bb4 d5@2 f5, [f5,bb5], d5@13 ~@3", // Bb Bb5
  CV: "[bb2,bb3,bb4,d5,f5]@4 [bb2,bb3,d5,f5,bb5]@3 [bb2,bb3,g5,bb5,eb6]", // Bb Eb
  CW: "[f2,f3] a2 ~ c3 f3 a3 ~ c4 f4 a4 ~ c5 ~ a5@2 c6, [a5,c6]@15 ~, f5@3 f5", // F Am
  CX: "[bb2,bb3] d3 ~ f3 bb3 d4 ~ f4 [bb3,d5,f5,bb5]@6 [d5,f5,bb5]@2, [bb4,d5,f5] ~", // Bb
  CY: "bb2 d3 f3 bb3 d4 f4 bb4 d5, [d5,f5,bb5]", // Bb
  CZ: "[bb2,bb3] bb2 ~ d3 f3 bb3 ~ d4 f3 bb3 ~ d4 f4 d4 ~ bb3, [d5,f5,bb5]", // Bb
  DA: "[bb4,d5,f5]@4 [d5,f5,bb5]@3 [f5,bb5,d6], [bb2,bb3]", DB: "[d2,d3,a5,d6,f6]@4 [g2,g3,g5,bb5,d6]@3 [g5,bb5]",
  DC: "[eb2,eb3] g2 ~ c3 g3 bb3 ~ c4 g4 bb4 ~ c5 ~ a5 ~ c6, [bb5,c6,g6], g5@3 g5", DD: "[f3,c4,eb4,f5,a5,f6] ~@3",
  DE: "d3 f3 ~ bb3 ~@4 d5 ~@4 bb3 ~ f3, [f4,bb4]@5 f4@5 ~ f4@5, d4 d4@2 d4, ~@7 bb4@2 bb4@7", // Bb5
  DF: "f5 d5 ~ bb4 f4 d4 ~ bb3 bb5 f5 ~ d5 bb4 f4 ~ d4, bb2", DG: "[f5,bb5,d6]@3 ~",
})).s("gm_piano").gain(0.2)

stack(clarinet, clarinet_2, bass, piano)

More by Richard Wagner