Strudelify

this is my country

Al Jacobs

KeyD♭ majorTempo92 bpm
0:00/0:00
// this is my country — Al Jacobs
// 92 bpm, 4/4, key Db 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 (4/4 at bar 1, 1/4 at bar 17, 4/4 at bar 17) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/130936; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 58 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(92/4)

// 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
const piano = note(`<
  A@7 B@7 C@5 D@2 E F@3 G H I J K L M N O P Q R S L T U V W X Y Z AA@2 AB@2 AC AD R AE AF AG@3
>`.pickRestart({
  A: "[~@22 [db3,db4]@11 [c3,c4]@10 [bb2,bb3,f4,bb4,db5]@11 [gb2,gb3,eb4,bb4,eb5]@10 [gb4,ab4,c5]@8 [gb4,bb4,db5]@3 ~@5 [bb2,bb3]@5 [ab2,ab3]@5 ~ [gb2,gb3]@5 [f2,f3]@5 [eb2,eb3]@5 [db2,db3]@5 ~ [f3,ab3]@5 [c2,c3]@5 [f3,ab3]@5 [bb1,bb2]@5 ~ [f3,bb3]@5 [ab1,ab2]@5 [f3,bb3]@5 [gb1,gb2]@5 ~ [gb4,bb4]@5 [f1,f2]@5 [gb4,bb4]@5 ~ [eb1,eb2,db4,gb4,bb4]@5 ~@5 [ab1,ab2]@5 [c4,gb4,ab4]@5 ~ [db2,db3]@5 [ab3,db4]@5 [c2,c3]@5 [ab3,db4]@5 ~ [bb1,bb2]@5 c4@5 [bb1,bb2,f3]@5 gb3@5 ~ [eb2,eb3]@5 [bb3,db4,gb4]@5 [eb2,eb3]@5 [bb3,db4,gb4]@5 ~ [ab1,ab2]@5 [ab3,c4,gb4]@5 [ab1,ab2]@5 [ab3,c4,gb4]@5 ~ [db2,db3]@5 [f3,ab3]@5 [db2,db3]@5 [f3,ab3]@5 ~ [bb1,bb2]@5 [f3,bb3]@5 [bb1,bb2]@5 [f3,bb3]@5 ~ [eb2,eb3]@5 [gb4,bb4]@5 [eb2,eb3]@5 [gb4,bb4]@4, ~@22 [f4,ab4,db5]@21 ~@21 [ab2,ab3]@16 ~@26 db4@21 db4@21 [db4,db5]@21 ~@6 [c4,gb4,ab4]@10 ~@37 db4@11 ~@84 [db4,db5]@19, ~@75 [gb4,c5,eb5]@32 ~@84 f4@21 f4@11 ~@10 ab4@21 ab4@21 ab4@21 ab4@21 ~@19]/7", // Db C Bbm Ebm Ab7 Gb Bb Ab …
  B: "[~@2 [ab2,ab3,db4,gb4,bb4]@5 ~@5 [ab2,ab3]@5 ~ [c4,gb4,ab4]@5 [db2,db3]@5 [ab3,db4]@5 [c2,c3]@5 ~ [ab3,db4]@5 [bb1,bb2]@5 f3@5 [eb1,eb2,g3]@5 ~ bb3@5 [ab1,ab2]@5 [db4,gb4]@5 [ab1,ab2]@5 ~ [c4,gb4]@5 [ab1,ab2]@5 [bb3,gb4]@5 [ab1,ab2]@5 ~ [c4,gb4]@5 [gb2,gb3]@8 [ab2,ab3]@2 [gb2,gb3]@5 ~ [f2,f3]@5 [bb3,db4,gb4]@5 [bb3,db4]@5 [bb3,db4,gb4]@5 ~ [db4,gb4,bb4]@5 [f2,f3]@8 [gb2,gb3]@2 [f2,f3]@5 ~ [eb2,eb3]@5 [db2,db3]@5 [eb2,eb3]@5 [f2,f3]@5 ~ [db2,db3,db4,f4,ab4]@5 [gb2,gb3,db4,gb4,bb4]@8 [gb2,gb3,db4,gb4,bb4]@3 [gb2,gb3,db4,gb4,bb4]@21 [eb2,eb3,db4,gb4]@10 [ab1,ab2]@8 [bb1,bb2]@3 [c2,c3]@5 [eb2,eb3]@5 [ab2,ab3]@11 [ab2,ab3,c4,gb4,ab4]@10 [db2,db3]@5 [f4,ab4]@5 ~ [ab1,ab2]@5 [f4,ab4]@5 [bb1,bb2]@5 [db4,f4]@5 ~ [f2,f3]@5 [db4,f4]@5 [eb2,eb3]@5 [gb4,bb4]@5 ~ [eb2,eb3]@5 [gb4,bb4]@3, ~@7 [c4,gb4,ab4]@11 ~@5 f4@21 f4@10 db4@11 ab4@21 ab4@21 [bb3,db4,bb4]@21 [eb2,eb3]@21 [db4,ab4,db5]@21 [db4,f4,ab4]@16 ~@47 [c4,gb4,ab4,c5]@32 ~@10 [db4,db5]@21 [bb3,bb4]@21 [db4,db5]@19]/7", // Gb Ab Ab7 Db Db5 C Db5 Bb …
  C: "[~@2 [ab2,ab3,db4,gb4,bb4]@5 [ab2,ab3,c4,gb4,ab4]@11 [gb2,gb3,c4,eb4,bb4]@5 [f2,f3]@8 [gb2,gb3]@3 [f2,f3]@5 [db2,db3]@5 [gb2,gb3]@6 ~ [eb2,eb3]@6 [ab2,ab3,eb4,gb4,c5,eb5]@12 [db2,db3]@9 ~ [ab1,ab2]@3 [g1,g2]@6 [ab1,ab2]@6 [db1,db2]@25 ~ f4@11 f4@5 f4@5 ~ eb4@5 db4@5 ~ db4@11 db4@11 eb4@11 db4@11 db4@16 f4@5 ~ [bb3,db4]@11 [ab3,db4]@10, ~@23 [db4,ab4,db5]@21 [db4,gb4,bb4,db5]@13 ~@12 [db4,f4,db5]@31 ~@31 [db2,db3,ab3]@22 [bb1,bb2,bb3]@22 [gb1,gb2,gb3,bb3]@22 [f1,f2,f3,ab3]@22 bb2@21]/5", // Gb Ab7 Cm7b5 F Gb F Db Gb …
  D: "[~ c5@11 c5@11 db4@11 bb3@11 c4@11 [gb3,c4,eb4,ab4]@11 [f3,db5]@5 ~ [db3,f4]@5 [eb3,gb4]@5 ~ [f3,ab4]@5 [gb3,bb4]@7, ~ [eb3,g3,eb4]@22 [ab2,eb3,ab4]@33 ~@40]/2", // Ab7 Db Ebm Fm Gb Eb Ab5
  E: "~@2 [f3,ab4]@2 [eb3,gb4]@5 ~ [db3,f4]@5 db4@11 bb3@11 c4@11, ~@5 [ab2,gb3,eb4]@11", // Fm Ebm Db Ab7
  F: "[[a2,f3,eb4]@11 ~ db4@8 db4@3 f4@5 g4@5 ~ ab4@5 ab4@5 ~ f4@8 [e2,c4,g4]@3 ab4@5 ab4@5 ~ bb4@5 bb4@5 ~ [ab2,c4,f4,c5]@16 [bb2,db4,f4,db5]@5 ~ c5@8 ab4@3 ab4@5 c5@5 ~ c5@5 bb4@5 ~ [db4,g4,bb4]@8 [c4,eb4,ab4]@3, ~@12 [bb2,gb3,bb3]@22 [f2,ab3,c4]@19 ~@3 [f2,c4,f4]@11 [g2,c4,e4]@11 ~@22 [eb2,eb3,c4,eb4]@22 [eb2,eb3]@22, ~@122 [db4,g4]@11 ~@11]/3", // F7 C Fm Bbm Gdim Ab Ebm Fm …
  G: "[c4,eb4] [bb3,db4,gb4] [ab3,c4,f4] [gb3,c4,eb4], [ab2,ab4]", H: "[db2,db3] [f3,ab3] [c2,c3] [f3,ab3], db4",
  I: "[bb1,bb2] [f3,bb3] [ab1,ab2] [f3,bb3], db4", J: "[gb1,gb2] [gb4,bb4] [f1,f2] [gb4,bb4], [db4,db5]",
  K: "[eb1,eb2,db4,gb4,bb4] ~ [ab1,ab2] [c4,gb4,ab4], ~ [c4,gb4,ab4]@2 ~", // Ebm7 Ab Ab7
  L: "[db2,db3] [ab3,db4] [c2,c3] [ab3,db4], f4", M: "[bb1,bb2] c4 [bb1,bb2,f3] gb3, f4 db4",
  N: "[eb2,eb3] [bb3,db4,gb4] [eb2,eb3] [bb3,db4,gb4], ab4", O: "[ab1,ab2] [ab3,c4,gb4] [ab1,ab2] [ab3,c4,gb4], ab4",
  P: "[db2,db3] [f3,ab3] [db2,db3] [f3,ab3], ab4", Q: "[bb1,bb2] [f3,bb3] [bb1,bb2] [f3,bb3], ab4",
  R: "[eb2,eb3] [gb4,bb4] [eb2,eb3] [gb4,bb4], [db4,db5]", // Eb Gb Eb Gb Db
  S: "[ab2,ab3,db4,gb4,bb4] ~ [ab2,ab3] [c4,gb4,ab4], ~ [c4,gb4,ab4]@2 ~", T: "[bb1,bb2] f3 [eb1,eb2,g3] bb3, f4 db4",
  U: "[ab1,ab2] [db4,gb4] [ab1,ab2] [c4,gb4], ab4", V: "[ab1,ab2] [bb3,gb4] [ab1,ab2] [c4,gb4], ab4",
  W: "[gb2,gb3]@3 [ab2,ab3] [gb2,gb3]@2 [f2,f3]@2, [bb3,db4,bb4]", // Gb Ab Gb F Bbm
  X: "[bb3,db4,gb4] [bb3,db4] [bb3,db4,gb4] [db4,gb4,bb4], [eb2,eb3]", // Gb Bbm Gb Eb
  Y: "[f2,f3]@3 [gb2,gb3] [f2,f3]@2 [eb2,eb3]@2, [db4,ab4,db5]", // F Gb F Eb Db5
  Z: "[db2,db3] [eb2,eb3] [f2,f3] [db2,db3,db4,f4,ab4], [db4,f4,ab4]@3 ~", // Db Eb F Db
  AA: "[[gb2,gb3,db4,gb4,bb4]@3 [gb2,gb3,db4,gb4,bb4] [gb2,gb3,db4,gb4,bb4]@8 [eb2,eb3,db4,gb4]@4]/2", // Gb Ebm7
  AB: "[[ab1,ab2]@3 [bb1,bb2] [c2,c3]@2 [eb2,eb3]@2 [ab2,ab3]@4 [ab2,ab3,c4,gb4,ab4]@4, [c4,gb4,ab4,c5]@3 ~]/2", // Ab Bb C Eb Ab Ab7
  AC: "[db2,db3] [f4,ab4] [ab1,ab2] [f4,ab4], [db4,db5]", AD: "[bb1,bb2] [db4,f4] [f2,f3] [db4,f4], [bb3,bb4]",
  AE: "[ab2,ab3,db4,gb4,bb4] [ab2,ab3,c4,gb4,ab4]@2 [gb2,gb3,c4,eb4,bb4]", // Gb Ab7 Cm7b5
  AF: "[f2,f3]@3 [gb2,gb3] [f2,f3]@2 [db2,db3]@2, [db4,ab4,db5]", // F Gb F Db Db5
  AG: "[[gb2,gb3]@6 [eb2,eb3]@6 ~ [ab2,ab3,eb4,gb4,c5,eb5]@12 [db3,db4]@8 [c3,c4]@3 [bb2,bb3]@6 [ab2,ab3]@5 [g2,g3]@3 [ab2,ab3]@3 [a2,a3]@11 [ab2,ab3]@5 [db2,db3]@6 ~@5 [db2,db3,db4]@6 ~@3 [db2,db3,db4]@2 [db2,db3,db4]@22 ~@31, [db4,gb4,bb4,db5]@13 ~@12 [f4,ab4,db5,f5]@50 ~@69]/3", // Gb Eb Ab7 Db C Bb Ab G …
})).s("gm_piano").gain(0.33)

stack(piano)