Strudelify

Azeri Folk Music

Azari Traditional

KeyG majorTempo90 bpm
0:00/0:00
// Azeri Folk Music — Azari Traditional
// 90 bpm, 6/8, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (6/8 at bar 1, 6/4 at bar 80) are rendered on a constant 6/8 grid of one bar per cycle
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5909670; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 83 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(90/3)

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

// chords · piano · "Klavier"
const piano = note(`<
  A B C D E@2 F G H I J K B@2 L M N J K B@2 L M O@2 F G H I P F G H I J K B@2 L M N J K B@2 L M Q@2 B C D E@2 F G H R@2
  S T S U V@2 W X V@2 W A B C D E@2 F G H Y@4
>`.pickRestart({
  A: "~@5 a2, [d1,d2], ~ d3@2", B: "~@3 [f3,a3] ~@6 [d4,a4]@2, [d3,d5]!2, ~ f3@2, ~ a3 [a3,f4]",
  C: "d3@3 [d3,g3] ~@6 [g3,a#4]@2, d5 [g2,d5], ~@2 g3@3 ~, ~ d3 [d3,g4]", // G5 Gm G5
  D: "~@3 [f3,a3] c5@2 ~@4 [f3,a4]@2, c3 [f2,c5], c5 a3@2, ~ a4@3 [c3,f4]@2, ~@2 f3@3 ~", // F F5
  E: "[~@2 [f3,d5] ~@8 a2, [a2,c5]@3 ~ d3@8, ~ a4@2 ~@2 a2@6 ~, ~ [c3,e3] [a3,d5]@6, ~ d2]/2", // Dm Am C D5
  F: "~@5 d4, [f2,f4,d5], d3!2, ~ [f5,a5] [a3,f5,a5]", G: "~@5 g3, [a#2,g4,a#4], g3@5 ~, ~ [d5,g5] [d3,d5,g5], ~ g2",
  H: "~@5 f3, [a2,c4,a4], f3@5 ~, ~ [c5,f5] [c3,c5,f5], ~ f2", // Am F5
  I: "[c3,a3,e4,a4]@2 ~@3 d3, ~ f2@2, ~@2 d3@3 ~, ~ [d5,f5] [a2,d5,f5], ~ d2", // Am Dm
  J: "~@3 [b2,d3] ~@6 [g3,b4]@2, b4@5 ~, [g2,d5]!2, ~ b2@2, ~ d3 [d3,g4]", // Bm G G5
  K: "d3@3 ~@7 [g3,a#4]@2, f3, d5 [g2,d5], ~ a3@3, ~ d3 [d3,g4]", // Gm G5
  L: "~@3 [a#2,d3] ~@6 [g3,a#4]@2, [g2,d5]!2, ~ a#2@2, ~ d3 [d3,g4]", // A# Gm G5
  M: "~@3 [a2,c3] c5@2 ~@4 [f3,a4]@2, f2 [f2,c5], c5 a2@2, ~ a4@4 ~, ~ c3 [c3,f4]", // Am F F5
  N: "~@2 [f3,d5] ~@2 a2, [a2,c5]@3 ~ d3@2, ~ a4@2 ~@3, ~ [c3,e3] [a3,d5]@2", // Dm Am C D5
  O: "[~@2 [f3,d5] ~@3 d2@6, [a2,c5]@3 ~ d3@8, ~ a4@2 ~@2 a2@7, ~ [c3,e3] [a3,d5]@6]/2", P: "d2@23 ~",
  Q: "[~@2 [f3,d5] ~@8 a2, [a2,c5]@3 ~ d3@2 [d2,d3]@6, ~ a4@2 ~@2 a2@6 ~, ~ [c3,e3] [a3,d5]@6]/2", // Dm Am D C D5
  R: "[[c3,a3,e4,a4]@2 [f2,d3] ~@2 d3 [d2,d3]@6, ~ [d5,f5] [a2,d5,f5]@4, ~ d2 ~@2]/2", S: "[c2,c3] [d2,d3]",
  T: "[d2,d3]", U: "~ f5@2, [d2,d3,a4], ~ d5@5",
  V: "[~@2 c5 [d2,d3]@3 ~@2 f5@4, [c2,c3,c4] ~ [d2,d3,a4]@2, ~ g4@2 d5@4 d5@5]/2", // D C D5
  W: "~@2 c5 [d2,d3,d5]@3, [c2,c3,c4] ~, ~ g4@2 ~@3", X: "a4@4 d5@4 f5@15 ~, [d2,d3]@23 ~",
  Y: "[[c3,a3,e4,a4]@10 ~@15 d7@10 [d2,a2,f3,d4]@12 ~, ~@23 d2@8 f3 a3@2 d4@2 f4@2 a4@2 d5@31 ~@25, ~@25 f2@16 f5@2 a5@2 d6@2 f6@2 a6@22 ~@25, ~@27 a2@43 ~@26, ~@29 d3@41 ~@26]/4", // Am Dm
})).s("gm_piano").gain(0.3)

stack(piano)