Strudelify

Duet nº4

W. A. Mozart

KeyF majorTempo120 bpm
0:00/0:00
// Duet nº4 — W.A. Mozart
// 120 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/2965441; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 174 bars on a 24-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.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · flute · "Flauta"
const flute = note(`<
  A B C D E F G H I J K L M N@2 O P Q P Q R S T U V W X Y Z AA AB AC AD AE ~@15 A B C D E F G H I J K L M N@2 O P Q P Q
  R S T U V W X Y Z AA AB AC AD AE ~@15 AF AG AH AI ~@2 AJ B AK D ~@2 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 BQ ~@2 BR BS BT BU BV BS BW BX BY BZ CA CB CC CD CE CF CG CH CI CJ CK CL CM
  CN CO CP CQ CR CS CT
>`.pickRestart({
  A: "f4@11 ~ f5 g5 a5@7 g5@3", B: "f5 ~ e5 ~ d5 ~ c5 ~", C: "bb4@6 ~@6 e5 f5 g5@7 f5@3", D: "e5 ~ d5 ~ c5 ~ bb4 ~",
  E: "a4@2 ~@2 bb5@3 e5", F: "g5 f5 ~@2 bb5@3 e5", G: "g5 f5 ~@2 g5 f5 e5 d5",
  H: "c5 d5 [c5,d5] b4 ~ c5 d5 ~@2 bb4 ~@2 a4@3 ~@3 g4@3 ~@3", I: "f5@11 ~ a5 bb5 c6@7 bb5@3",
  J: "a5 bb5 a5 g5 a5 g5 f5 g5 f5 gb5 g5 a5", K: "g5 ~@5 e5 ~ f5 g5 ~ a5 bb5@9 a5@3",
  L: "g5 a5 g5 f5 g5 f5 e5 f5 g5 c5 d5 e5", M: "f5 ~@5 eb5@6 d5@6 bb4@6", N: "a4 eb5 d5 bb4", O: "a4@2 a4 ~ g4 ~ f4 ~",
  P: "e4 g4 c5 e5 f5 g5 f5 e5 d5 c5 bb4 a4", Q: "g4 a4 g4 f4 g4 f4 e4 f4 e4 d4 e4 d4",
  R: "e4 g4 c5 e5 f5 g5 a5 bb5 b5 c6 b5 a5", S: "g5 a5 g5 f5 g5 f5 e5 f5 e5 d5 e5 f5",
  T: "e5@3 ~@6 c5 ~ d5 e5@3 ~@3 e4@3 ~@3", U: "f4@6 ~@3 d5 ~ e5 f5@3 ~@3 f4@3 ~@3",
  V: "g4@3 ~@6 e5 ~ f5 g5@3 ~@3 g4@3 ~@3", W: "a4@3 ~@6 f5 ~ g5 a5@3 ~@3 a4@3 ~@3",
  X: "b4@3 ~@6 g5 ~ a5 b5@3 ~@3 b4@3 ~@3", Y: "c5 d5 e5 f5 d5 c5 b4 c5 d5 e5 d5 b4",
  Z: "a4 b4 c5 d5 b4 a4 g4 a4 b4 c5 a4 g4", AA: "gb4 ~ gb4 ~", AB: "g5 a5 gb5 g5 b5 c6 d6 c6 b5 a5 g5 f5",
  AC: "e5 ~ c6 ~@3 e5 ~", AD: "f5 g5 e5 f5 a5 g5 f5 e5 d5 c5 b4 a4", AE: "g4 a4 gb4 g4@3 ~@3 f5@3",
  AF: "c5@11 ~ e5 f5 g5@7 f5@3", AG: "e5 f5 e5 d5 e5 d5 c5 e5 d5 db5 d5 e5", AH: "d5 ~@5 b4 ~ c5 d5 ~ e5 f5@9 e5@3",
  AI: "d5 e5 d5 c5 d5 c5 b4 c5 d5 g4 a4 b4", AJ: "f5@11 ~ f5 g5 a5@7 g5@3",
  AK: "bb4@3 ~@9 d5 e5 g5@7 f5@3, ~@14 gb5 ~@9", AL: "d5 g5 f5 eb5 d5 c5 bb4 c5 d5 c5 bb4 a4",
  AM: "g4 gb4 g4 a4 g4 a4 bb4 a4 bb4 b4 a4 b4", AN: "c5 b4 c5 d5 c5 d5 eb5 d5 eb5 e5 d5 e5",
  AO: "f5 e5 f5 g5 f5 g5 ab5 g5 ab5 a5 g5 a5", AP: "bb5 ~ d4 ~ e4 ~ gb4 ~", AQ: "g4 ~ bb4 ~ c5 ~ d5 ~",
  AR: "eb5 ~@2 bb4 ~ d5 eb5 ~@2 bb5 ~ g5 f5 ~@2 c5 ~ eb5 d5 ~@2 g5 ~ f5",
  AS: "eb5 ~@2 g5 ~ eb5 c5 ~@2 a4 ~ eb5 d5 ~@2 a5 ~ c5 bb4 ~@2 d5 ~ bb4",
  AT: "a4@2 c5@2 bb4@2 a4 ~ c5 ~ d5 ~ eb5 ~ d5 ~ c5 ~ bb4 ~ a4 ~ g4 ~", AU: "gb4@23 ~",
  AV: "d5@2 eb5@2 db5@2 d5 ~ g5 ~ a5 ~ bb5 ~ a5 ~ g5 ~ f5 ~ e5 ~ d5 ~", AW: "db5@23 ~", AX: "d4@11 ~ d5 e5 f5@7 e5@3",
  AY: "d5 ~ c5 ~ bb4 ~ a4 ~", AZ: "g4@3 ~@9 b4 db5 e5@7 d5@3, ~@14 d5 ~@9", BA: "db5 ~ bb4@2 a4 ~ g4 ~",
  BB: "f4@6 d5@11 ~ c5 d5 [c5,d5] bb4 ~ c5", BC: "bb4@3 ~@3 g5@11 ~ f5 g5 [f5,g5] e5 ~ f5",
  BD: "e5@3 ~@3 c6@11 ~ bb5 c6 [bb5,c6] a5 ~ bb5", BE: "a5 bb5 c6 bb5 a5 g5 f5 g5 a5 g5 f5 e5",
  BF: "d5 db5 d5 e5 d5 e5 f5 e5 f5 gb5 e5 gb5", BG: "g5 gb5 g5 a5 g5 a5 bb5 a5 bb5 b5 a5 b5",
  BH: "c6 ~ d6@2 eb6@2 e6@2", BI: "f6@2 a4 ~ b4 ~ db5 ~", BJ: "d5 ~ f4 ~ g4 ~ a4 ~", BK: "bb4 ~ d4 ~ e4 ~ gb4 ~",
  BL: "g4 ~ e4 ~ f4 ~ d4 ~", BM: "g4@2 a4@2 gb4@2 g4 ~ b4 ~ c5 ~ d5 ~ c5 ~ b4 ~ a4 ~ g4 ~ f4 ~", BN: "e4@23 ~",
  BO: "f5@2 g5@2 e5@2 f5 ~ a5 ~ bb5 ~ c6 ~ bb5 ~ a5 ~ g5 ~ f5 ~ eb5 ~", BP: "d5", BQ: "c5 ~@3",
  BR: "f4 a4 c5 f5 a5 c6 bb5 a5 g5 f5 e5 d5", BS: "c5 d5 c5 bb4 c5 bb4 a4 bb4 a4 g4 a4 g4",
  BT: "f4@2 a4@2 c5@2 f5@2 g5@2 a5@2 g5@3 ~@9", BU: "c6@17 ~ e5 f5 [e5,f5] d5 ~ e5",
  BV: "f5@6 c5@3 ~@3 bb5@2 a5@2 g5@2 f5@2 e5@2 d5@2", BW: "f4@6 ~@3 c5 ~ f5 a5@3 ~@3 a4@3 ~@3",
  BX: "bb4@3 ~@6 g5 ~ a5 bb5@3 ~@3 bb4@3 ~@3", BY: "c5@3 ~@6 a5 ~ bb5 c6@3 ~@3 c5@3 ~@3",
  BZ: "d5@2 f5@2 e5@2 d5@2 f5@2 e5@2 d5@3 ~@3 d4@3 ~@3", CA: "e4@3 ~@6 c5 ~ d5 e5@6 ~@3 e5@3",
  CB: "f5 g5 a5 bb5 g5 f5 e5 f5 g5 a5 f5 e5", CC: "d5 e5 f5 g5 e5 d5 c5 d5 e5 f5 d5 c5", CD: "bb4 ~@3 c5@2 ~@2",
  CE: "f5 ~@5 bb5 ~ g5 ~ f5 ~ e5 ~@5 a5 ~ f5 ~ e5 ~", CF: "d5 ~@5 g5 ~ e5 ~ d5 ~ c5 ~@5 f5 ~ d5 ~ c5 ~",
  CG: "bb4 ~@5 bb4 ~ c5@2 d5@2 c5 ~@5 c5 ~ d5@2 e5@2", CH: "f5 ~@5 e5 ~@5 d5 ~@5 c5 ~@5",
  CI: "bb4 ~@5 a4 ~@5 g4 ~@5 gb4 ~@5", CJ: "g4 ~ bb4 ~ c5 ~ d5 ~ c5 ~ bb4 ~ a4 ~@5 g4 ~@5",
  CK: "a5 ~@2 c6 ~ a5 g5 ~@2 bb5 ~ g5 f5 ~@2 a5 ~ f5 e5 ~@2 g5 ~ e5",
  CL: "d5 ~@2 f5 ~ d5 c5 ~@2 e5 ~ c5 bb4 ~@2 d5 ~ bb4 a4 ~@2 c5 ~ a4", CM: "bb4 ~@3 c5 ~@3",
  CN: "f4@3 ~@3 a5 bb5 [a5,bb5] g5 ~ a5 bb5 ~@5 e5 ~@5", CO: "f5 ~@5 a5 bb5 [a5,bb5] g5 ~ a5 bb5 ~@5 e5 ~@5",
  CP: "e5@3 c5@3 eb5 ~@2 eb5 ~@2 d5@3 bb4@3 bb5 ~@2 bb5 ~@2", CQ: "a5@3 f5@3 eb5 ~@2 eb5@3 d5@3 bb4@3 g4 ~@2 c5 ~@2",
  CR: "bb4@12 a4@3 a5 ~@2 c6 ~@2 a5 ~@2", CS: "f5@3 c5@3 a4 ~@2 c5 ~@2 f5 ~@2 a5 ~@2 c6 ~@2 a5 ~@2",
  CT: "f5 ~ c5 ~ a4 ~@3",
})).s("gm_flute").gain(0.4)

// other · flute · "Flauta" · soft notes
const flute_soft = note(`<
  ~@34 A B C D E F G H I H J K L M N ~@34 A B C D E F G H I H J K L M N ~@4 O P ~@4 Q R ~@32 S T ~@30
>`.pickRestart({
  A: "e5 ~@2 g5 ~ e5 d5 ~@2 f5 ~ d5 c5 ~@2 e5 ~ c5 b4 ~@2 d5 ~ b4",
  B: "a4 ~@2 c5 ~ a4 g4 ~@2 b4 ~ g4 f4 ~@2 a4 ~ f4 e4 ~@2 g4 ~ e4", C: "f4@3 ~@3 d4@3 ~@9 b5 c6 [b5,c6] a5 ~ b5",
  D: "c6 ~@5 b5 ~@5 a5 ~@5 g5 ~@5", E: "f5 ~@5 e5 ~@5 d5 ~@5 db5 ~@5", F: "d5 f5 e5 f5 g5 a5 g5 f5 e5 d5 c5 b4",
  G: "c5@6 ~@6 d5@10 ~ [e5,f5]", H: "g5 a5 g5 f5 g5 f5 e5 f5 e5 d5 e5 d5", I: "e5@3 ~@9 d5@10 ~ [e5,f5]",
  J: "c5 d5 c5 bb4 c5 bb4 a4 bb4 a4 f4 g4 f4", K: "e4 f4 g4 bb4 c5 bb4 a4 bb4 a4 f4 g4 f4",
  L: "e4@3 ~@3 e5 f5 [e5,f5] d5 ~ e5 f5 ~@5 b4 ~@5", M: "c5 ~@5 e5 f5 [e5,f5] d5 ~ e5 f5 ~@5 b4 ~@5", N: "d5@2 c5 ~",
  O: "c5 ~@5 d5 ~@5 e5 ~@5 f5 ~@5", P: "g5 ~@5 bb5 ~@5 a5 ~@5 g5 ~@5", Q: "a4 ~@5 bb4 ~@5 c5 ~@5 d5 ~@5",
  R: "eb5 ~@5 g5 ~@5 f5 ~@5 eb5 ~@5", S: "e5@2 f5@2 d5@2 e5 ~ g5 ~ a5 ~ bb5 ~@5 e5 ~@5",
  T: "f5 ~@5 bb4 ~ c5 ~ d5 ~ c5 ~ bb4 ~ a4 ~ g4 ~ f4 ~ e4 ~",
})).s("gm_flute").gain(0.2)

stack(flute, flute_soft)

More by W. A. Mozart