Strudelify

Piano Sonata No. 11 K. 331 (Turkish March)

Wolfgang Amadeus Mozart

KeyA majorTempo120 bpm
0:00/0:00
// Piano Sonata No. 11 K. 331 (Turkish March) — Wolfgang Amadeus Mozart
// 120 bpm, 2/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 2/4 at bar 2, 4/16 at bar 105) are rendered on a constant 2/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5856885; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 105 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/2)

// 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 · tenor sax · "Tenor Saxophone"
const tenor_sax = note(`<
  ~@4 A B C D E F G H I J@2 K L ~@7 M N O P@2 Q R S@2 T U V W X Y Z@2 ~@7 M N O AA@2 Q R AB@2 AC AD AE AF AG AH AI@2 AC
  AD AE AF AG AH AJ@2 ~@7 AK AL AM AN AO AL AP AQ@2 ~@7 AR AS AR AT AU ~ AV AW@2
>`.pickRestart({
  A: "~@4 a3 ~ c4 ~", B: "b3 f#3 e3 f#3", C: "e3 b3@3 f#3@4 e3@4 f#3@4", D: "e3 b3@3 f#3@4 e3@2 ~@2 d#3@2 ~@2",
  E: "e3@4 b3 a3 g#3 a3", F: "c4 ~@3 d4 c4 b3 c4", G: "e4 ~@3 f4 e4 d#4 e4", H: "b4 a4 g#4 a4 b4 a4 g#4 a4",
  I: "c5@4 a4 ~ b4 ~", J: "[c5 ~ b4 ~ a4 ~ g#4 a4@3 e4 ~ f4 ~ d4 ~]/2", K: "c4@4 b3@2 c4@2 b3 a3 b3@6", L: "a3 ~",
  M: "~@4 b3 a3 g#3 a3", N: "c4@4 d4 ~ d#4 ~", O: "e4@4 f4 e4 d#4 e4", P: "[b4 a4 g#4 ~ b4 a4@2 c5@5 a4@2 b4 ~]/2",
  Q: "c5@2 e4 a4!2 e4 a4 e4", R: "a4 e4 d#4 d4 c4 a3 g#3 g3", S: "[~ d3 d#3 e3 c4 b3@2 a3@5 c4 ~ d4 ~]/2",
  T: "e4 ~ e4 ~ a4 g4 f4 e4", U: "b3@2 g4 ~ c4 ~ d4 ~", V: "d#4 ~@3", W: "~@4 a4 ~ b3 ~", X: "c4 ~ c4 ~ f4 e4 d4 c4",
  Y: "g#3@2 e3@2 a3 ~ b3 ~", Z: "[d#4 e4 a4 d4 d#4 d4 a3 c4@3 b3@2 ~@4]/2",
  AA: "[b4 ~ a4 g#4 b4 a4 ~ c5@5 a4 ~ b4 ~]/2", AB: "[~ d3 d#3 e3 c4 b3@2 a3@5 a3 ~ b3 ~]/2", AC: "e3@8 a3@4 b3@2 e3 ~",
  AD: "~ e3 ~@2 a3 ~ b3 ~", AE: "e3@2 a3 ~ d#3@2 a3 ~", AF: "e3@2 e3 ~ a3 ~ b3 ~", AG: "f#3@2 ~@2 a3 ~ b3 ~",
  AH: "f#3@2 e3 ~ e3 ~ e3 ~", AI: "[c#3@2 a3@2 d3 g#3 ~ c#3@5 a3 ~ b3 ~]/2",
  AJ: "[c#4@4 a4@3 ~ d4@2 g#4@2 ~@2 a3@10 ~@8]/2", AK: "c#4@4 c4 c4@11", AL: "c#4@2 a3 c#4@2 a3 g#3 f#3",
  AM: "f3 g#3 e4 d4 c#4 b3 a3 g#3", AN: "a3@2 f#3 ~ a3@2 f#3 ~", AO: "g3 g#3 c#3@2 c4@4",
  AP: "f3 g#3 c#4 d#4 f3 f#3 g3 g#3", AQ: "[a3@2 f#3@2 g#3 f3 ~ f#3@3 ~@6]/2", AR: "~@4 e4 d4 c#4 b3", AS: "a3 ~@3",
  AT: "a3 b3 e4 e3 ~ e4 e3@2", AU: "e4 ~@3", AV: "~@4 a#3 b3 c4 c#4", AW: "[f#3@4 f#3@4 d3 ~ b3@4 [e3,a3]@10 ~@8]/2",
})).s("gm_tenor_sax").gain(0.3)

// bass · acoustic bass
const bass = note(`<
  ~ A@2 B A C@3 D A@2 E F G H I J K@4 L M N@2 O@3 P Q R S@2 T U T U V W X W Y@4 Z AA AB@2 Y@3 AC AD AE AF@2 AG@2 AH AI
  AG@2 AJ@2 AG@2 AH AI AG@2 AJ@2 AK AL AK AM AK AN AO AP AQ AR AQ AS AQ AS AT AU AV AW AV AX AY AX AZ AU Z BA BB BC BD
  BE BF J
>`.pickRestart({
  A: "a1 ~ c2 ~ c2 ~ c2 ~", B: "a1 ~ c2 ~ a1 ~ c2 ~", C: "e1 ~ b1 ~ b1 ~ b1 ~", D: "e1 ~", E: "a1 ~ c2@2 a1 ~ c2 ~",
  F: "f1 ~ a1@2 a1@2 a1@2", G: "e1 ~ a1 ~ d2 ~ f1 ~", H: "c2 ~ e1 ~ d2 ~ f1 ~", I: "e1 ~ a1 ~ e1 ~ g#1 ~", J: "a1 ~",
  K: "a1 ~ c2 ~ e1 ~ c2 ~", L: "a1 ~ c#2 ~ e1 ~ c#2 ~", M: "d2 ~ a1 ~ f1 ~ a1 ~", N: "e1 ~ g#1 ~ e1 ~ g#1 ~",
  O: "a1 c2 e1 c2", P: "f1 a1!3", Q: "f1 ~@3", R: "d2 ~@3", S: "[b1@4 e1@2 a1@5 ~@5]/2", T: "c2 ~ c3 ~ e2 ~ e3 ~",
  U: "g2 ~", V: "a1 a2 c2 c3", W: "e2 ~", X: "a1 ~ a2 ~ c2 ~ c3 ~", Y: "a2 ~ c3 ~ e2 ~ c3 ~",
  Z: "a2 ~ c#3 ~ e2 ~ c#3 ~", AA: "d2 ~ a2 ~ f2 ~ a2 ~", AB: "e2 ~ g#2 ~ e2 ~ g#2 ~", AC: "f2 ~ a2 ~ a2 ~ a2 ~",
  AD: "f2@5 ~@11", AE: "d2@5 ~@11", AF: "[b1@5 ~@3 e2@4 ~@2 a1@10 ~@8]/2", AG: "a1 ~ e2@2 e1 ~ e2 ~",
  AH: "a1 ~ e2 ~ b1 ~ f#2 ~", AI: "e1 ~ b1 ~ b1@2 b1@2", AJ: "[b1@2 ~@2 e2@2 ~ a1@5 ~@4]/2", AK: "f#2 ~ a2 ~ a2 ~ a2 ~",
  AL: "g#2 ~ b2 ~ b2 ~ b2 ~", AM: "f2 ~ g#2 ~ g#2 ~ g#2 ~", AN: "g#2 ~ c#3 ~ c#3 ~ c#3 ~", AO: "g#2 d#3 g#2 c3",
  AP: "c#3 ~@3", AQ: "f#2 ~ c#3 ~ a2 ~ c#3 ~", AR: "f#2 ~ c#3 ~ e2 ~ c#3 ~", AS: "g#2 ~ c#3 ~ c#2 ~ c#3 ~",
  AT: "f#2 ~ c#3 ~ c#2 ~ c#3 ~", AU: "f#1 ~ c#2 ~@5", AV: "f#1@2 c#2 ~ a1@2 c#2 ~", AW: "f#1@2 c#2 ~ c#2@2 c#2 ~",
  AX: "g#1 ~ c#2 ~ c#2 ~ c#2 ~", AY: "f#1 ~ c#2 ~ a1 ~ c#2 ~", AZ: "f#1 ~ c#2 ~ c#2 ~ c#2 ~", BA: "b2@2 e2 ~@5",
  BB: "g1 ~ e1 ~ b1 ~ b1 ~", BC: "e2 ~ e1@2 ~@4", BD: "a2 ~@3 e2 ~ c#3 ~", BE: "b2 ~ e2@2 ~@4", BF: "b2 e2",
})).s("gm_acoustic_bass").gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<~ A@7 B A@7 B A@12 ~@4 A@20 ~@4 A@15 ~ A@30 ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@3 x",
})).gain(0.3)

// drums · open hat
const open_hat = s("oh").struct("<~ A@7 B A@7 B A@12 ~@4 A@20 ~@20 A@30 ~@2>".pickRestart({
  A: "x ~@2 x!2 ~@2 x", B: "x ~@3 x ~@2 x",
})).gain(0.3)

// drums · crash
const crash = s("cr").struct("<~@29 A@3 ~@21 A@3 ~ A ~@7 A ~@39>".pickRestart({
  A: "x",
})).gain(0.3)

// drums · ride
const ride = s("rd").struct("<~@57 [~@2 x!3 ~ x!2] [x ~ x!3 ~ x!2]!7 [~@2 x!3 ~ x!2] [x ~ x!3 ~ x!2]!6 ~@33>").gain(0.3)

stack(tenor_sax, bass, hihat, open_hat, crash, ride)

More by Wolfgang Amadeus Mozart