Strudelify

the magic flute-arie

W. A. Mozart

KeyC majorTempo140 bpm
0:00/0:00
// the magic flute-arie — W.A.Mozart
// 140 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 4 "Bass" named as a bass, played on electric bass finger (its recorder patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5907530; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 99 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(140/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 · recorder · "Soprano"
const recorder = note(`<
  ~ A B C D E F G@2 H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG W X Y Z AA AB AC AH AI AJ AF AK ~@4 AL AM
  AN AM AN AM AO AP AQ AR AS AT AU AV AW AX AY AZ BA AZ BA AK BB BC BB BD BE BF BG BH BI BJ BK BL BM AX BN BO BP@3 BQ
  BR@2 BS ~@3
>`.pickRestart({
  A: "~@5 e5!3", B: "a5@3 e5 c6!2 b5!2", C: "a5 e5 ~@2", D: "d6@4 ~@2 b5 g#5", E: "e6 a5 ~@2", F: "a#5@4 c#6@3 c#6",
  G: "[d6 e6 f6@3 d6 a#5 a5]/2", H: "g#5 ~@3", I: "c5@2 e5 g5", J: "c6@4 ~@3 g5", K: "e6 d6 c6 b5 a5 g5 f5 e5",
  L: "f5@2 d6@2 ~@3 d6", M: "f6 e6 d6 c6 b5 a5 g5 f5", N: "e5 c6 ~@2", O: "~ f5 a5 c6", P: "f6 e6",
  Q: "d#6@3 c6 d#6@3 c6", R: "b5@2 ~ g5", S: "c6 d6", T: "e6@4 ~@2 g5!2", U: "c6@3 c6 d6@3 d6",
  V: "e6@8 ~@4 f6 [d6,e6] e6 f6", W: "g6 ~ g6 ~ g6 ~ g6 ~ g6 ~ g6 ~ g6 ~ g6 ~", X: "c6@8 ~@4 d6 [b5,c6] c6 d6",
  Y: "e6 ~ e6 ~ e6 ~ e6 ~ e6 ~ e6 ~ e6 ~ e6 ~", Z: "a5@8 ~@4 b5 [g5,a5] a5 b5", AA: "c6!3 g5 d6!3 g5",
  AB: "e6 c6 e6 g6 c7 g6 a6 f6", AC: "g6 c6 e6 g6 c7 g6 a6 f6", AD: "g6@2 ~@2 c6@3 c6", AE: "d6 f6", AF: "g5@6 a5 b5",
  AG: "c6@8 ~@4 f6 [d6,e6] e6 f6", AH: "g6 ~ c6@2", AI: "d6@3 d6 d#6@3 d#6", AJ: "e6 c6", AK: "c6 ~@3", AL: "~@7 c6",
  AM: "c6@3 c6 c6@3 c6", AN: "c6@2 c5@2 ~@3 c6", AO: "c6@2 c5@2 ~@2 c5!2", AP: "a#5 g5", AQ: "e5 a5", AR: "d5@2 ~@5 d6",
  AS: "d6@2 d5@2 ~@3 d6", AT: "d6@2 d5@2 ~@2 d6!2", AU: "d6@2 d5@2 ~@2 d5!2", AV: "c6 a5", AW: "f#5 b5", AX: "e5 ~@3",
  AY: "e5 b5", AZ: "c6 d6 ~ c6 e6 f6 ~ e6 c6 d6 ~ c6 a5 b5 ~ a5", BA: "g#5 a5 ~ g#5 e5 f5 ~ e5 g#5 a5 ~ g#5 b5 c6 ~ b5",
  BB: "~@2 a5 ~ c6 ~ e6 ~ a6 ~ e6 ~ f6 ~ d6 ~", BC: "e6 ~@3", BD: "e6 ~ a5 ~ c6 ~ e6 ~ a6 ~ e6 ~ a6 ~ g6 ~",
  BE: "f6 ~ d6 ~ g6 ~ f6 ~ e6 ~ c6 ~ f6 ~ e6 ~", BF: "d6 ~ b5 ~ e6 ~ d6 ~ c6@4 a5@4", BG: "a#5 d6", BH: "f6 d6 a#5 a5",
  BI: "g#5 ~@2 e5", BJ: "g#5@2 ~ g#5", BK: "b5@2 ~ b5", BL: "d6 b5 g#5 e5", BM: "f5", BN: "~ a5", BO: "~ c6",
  BP: "[~ f6@5]/3", BQ: "d6@3 a#5 g#5@2 g#5@2", BR: "[~@2 c6@4 ~ a5]/2", BS: "g#5@3 a5 e5@4",
})).s("gm_recorder").gain(0.3)

// other · recorder · "Tenor"
const recorder_2 = note(`<
  A@2 B C D E F G H I A J K L M N O P Q R S T S U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AC Q AN AO AP AQ AR
  AS AT AU AV AW AX AW AX AW A M AY AZ BA BB BC BD BE@2 BF BG BF BG BH BI@3 BJ BK BL BM BN BO BP BQ ~ BR BS BT BU BV BW
  BX BY BZ ~@2 CA CB CC
>`.pickRestart({
  A: "e4!16", B: "c4 ~ c4 ~ a4 ~ g#4 ~", C: "a4@4 ~@4 e4!8", D: "e4@4 ~@4 e4!8", E: "e4@4 ~@4 a4!8", F: "f4!4 g4!4",
  G: "a4!5 a4@2 a4", H: "b4!2 f4!2 d4!2 f#4!2", I: "e4 g4 f#4 f4", J: "g4!4 e4@2 ~@2 g4@2 ~@2 c5@2 ~@2", K: "e5 e4!15",
  L: "f4 ~ d4@2 f4@2 a4@2 d5@2 f4@2 a4@2 d5@2", M: "g4!16", N: "e4 ~ c4@2 e4@2 g4@2 c5@2 e5@2 g5@2 c5@2", O: "f4 ~@3",
  P: "a4!4 g4!4", Q: "a4!8", R: "b4 g4 f#4 g4 f#4 g4 f4 d4", S: "e5 ~ g5 ~ e5 ~ c5 ~ b4 ~ d5 ~ b4 ~ g4 ~",
  T: "c5 g4 f#4 g4 f#4 g4 f4 d4", U: "c5 ~ e5 ~ e5 ~ e5 ~ e5 ~ e5 ~ e5 ~ e5 ~",
  V: "d5 ~ b4 ~ b4 ~ b4 ~ b4 ~ b4 ~ b4 ~ b4 ~", W: "a4@2 c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~",
  X: "g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~", Y: "f4@2 a4 ~ a4 ~ a4 ~ a4 ~ a4 ~ a4 ~ a4 ~", Z: "g4 ~ g4 ~",
  AA: "g4@2 ~@2 e5 ~ f5 ~", AB: "e5@2 ~@2 e5 ~ f5 ~", AC: "e5@2 ~@2 e4!4", AD: "a4!4 d5!4", AE: "b4 b4@2 b4@2 d4 e4 f4",
  AF: "e4@2 g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~", AG: "g4 ~ b4 ~ b4 ~ b4 ~ b4 ~ b4 ~ b4 ~ b4 ~",
  AH: "a4@2 e4 ~ e4 ~ e4 ~ e4 ~ e4 ~ e4 ~ e4 ~", AI: "e4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~",
  AJ: "f4@2 c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~", AK: "c4 ~ d4 ~", AL: "e4@4 ~@4 e5 ~@3 f5 ~@3",
  AM: "e5@4 ~@4 e5 ~@3 f5 ~@3", AN: "g4!2 e4!2 g4!2 c5!2", AO: "e5@4 c5@3 c5 f5@4 b4@3 b4", AP: "c5 ~@2 f4",
  AQ: "e4 ~@2 f4", AR: "c5!2 e5!2 a4!2 c5!2 f4!2 a4!2 d4!2 f4!2", AS: "b4 e5 d5 b4", AT: "e4 ~@3",
  AU: "~ e4 f4 g4 a4 g4 a4 f4", AV: "e4 c5 d5 e5 f5 e5 f5 d5", AW: "e5 e4 f4 g4 a4 g4 a4 f4",
  AX: "g4 c5 d5 e5 f5 e5 f5 d5", AY: "f4@2 d5 ~ e5 ~ f5 ~ g5 ~ f5 ~ g5 ~ e5 ~",
  AZ: "d5 ~ f4@2 g4@2 a4@2 a#4@2 a4@2 a#4@2 g4@2", BA: "f4 d5 e5 f5 g5 f5 g5 e5", BB: "d5 f4 g4 a4 a#4 a4 a#4 g4",
  BC: "f#4!16", BD: "a4!16", BE: "[g#4 b4@2 b4@2 g#4!3]/2", BF: "~ a4!3", BG: "~ g#4!3", BH: "a4@4 ~@4 c5 ~@3 d5 ~@3",
  BI: "c5@4 ~@4 c5 ~@3 d5 ~@3", BJ: "c5@2 ~@4 e5 ~", BK: "f5 ~ d5 ~ e5 ~ c5 ~", BL: "d5 ~ b4 ~ c5@2 ~@2", BM: "f4!16",
  BN: "f4!12 f#4!4", BO: "e4 b4!2 ~", BP: "~ e5!2 ~", BQ: "~ g#5!2 ~", BR: "~ d5@2 d5", BS: "d5 ~",
  BT: "~@14 e4 [f#4,g#4]", BU: "a4@8 ~@6 g#4 [a4,b4]", BV: "c5 ~", BW: "a4@4 d5!2 c5!2", BX: "d5!2 c5!2 d5@2 ~@2",
  BY: "~@15 g#5", BZ: "g#5@4 ~@3 a5 a5@8", CA: "b4@4 a4!4", CB: "a4!4 c5@2 ~@2", CC: "g#4 ~ c4@2",
})).s("gm_recorder").gain(0.2)

// other · electric bass finger · "Bass"
const electric_bass_finger = note(`<
  A B C@2 D E F G H I E@4 D J K L M N O P O Q R S T U V W@2 X Y Z AA R S T U V AB@2 AC AD AE AF AG@2 AH AI AJ AK A AL A
  AL A AL AM@2 AN AO AN AO AP@2 AQ AR@5 AS@4 AT AU AV AW H AX AY@2 ~ AZ BA ~ BB BC BD BE BF BG ~@2 BH@2 BI
>`.pickRestart({
  A: "c4!16", B: "e4 [f#4,g#4] a4@2 e4@4 c4@4 a3@4", C: "a3!8", D: "b3!8", E: "c4!8", F: "d4!4 e4!4",
  G: "f4!2 c#4!2 d4!4", H: "d4!6 d#4!2", I: "e4!2 d#4 d4", J: "a#3!8", K: "a3 ~@3", L: "a4!4 g4!4", M: "f#4!8",
  N: "g4!2 f#4 g4 f#4 g4 f4 d4", O: "e4 ~ g4 ~ e4 ~ c4 ~ b3 ~ d4 ~ b3 ~ g3 ~", P: "c4 g4 f#4 g4 f#4 g4 f4 d4",
  Q: "c4 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~", R: "b4 ~", S: "~@2 a4 ~ a4 ~ a4 ~ a4 ~ a4 ~ a4 ~ a4 ~", T: "g4 ~",
  U: "~@2 f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~", V: "e4 ~ b4 ~", W: "c5@2 ~@2 c5 ~ c5 ~", X: "c5@2 ~@2 a4!4",
  Y: "f4!4 d4!4", Z: "g4!4 g3!4", AA: "c4@2 c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~", AB: "c5@4 ~@4 c5 ~@3 c5 ~@3",
  AC: "c5@2 ~@2 e4!4", AD: "f4!4 f#4!4", AE: "g4!4 e4!2 c4!2", AF: "g3 ~ g3 ~", AG: "c4 ~@2 g3",
  AH: "c4@2 a4 c5 f4 a4 d4 f4", AI: "b3 c4 f4 g4", AJ: "c4 ~@3", AK: "~ c4 d4 e4 f4 e4 f4 d4",
  AL: "c4 ~ c4@2 d4@2 e4@2 f4@2 e4@2 f4@2 d4@2", AM: "c#4!8", AN: "d4!16",
  AO: "d4 ~ d4@2 e4@2 f4@2 g4@2 f4@2 g4@2 e4@2", AP: "d#4!8", AQ: "e4!2 g#4 e4 b3 e4 g#3 b3", AR: "e4 ~@3",
  AS: "a4@4 ~@4 a4 ~@3 a4 ~@3", AT: "a4@2 ~@4 c5 ~", AU: "d5 ~ b4 ~ c5 ~ a4 ~", AV: "b4 ~ g#4 ~ a4@2 ~@2", AW: "d4!8",
  AX: "e4 e5 e4 ~", AY: "~ e5 e4 ~", AZ: "~ d4 b3 a3", BA: "g#3 ~", BB: "a3 ~", BC: "c4 ~", BD: "d#4@4 d4!2 d#4!2",
  BE: "d4!2 d#4!2 d4@2 ~@2", BF: "~@15 d4", BG: "d4@4 ~@3 d#4 d#4@8", BH: "[e4@2 f4@3 f#4 a4 ~]/2", BI: "e4 ~ a3@2",
})).s("gm_electric_bass_finger").gain(0.2)

stack(recorder, recorder_2, electric_bass_finger)

More by W. A. Mozart