Strudelify
KeyE majorTempo68 bpm
0:00/0:00
// as the deer — for piano & violin by Jeron Joseph
// 68 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/4429846; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 47 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(68/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 B C D E F G H I J K L M N O P Q R S T@3 U@3 ~ V@2 W@2 X@3 Y@6 Z@4 AA@4>".pickRestart({
  A: "~ e4 ~ b4, [e3,b3,g#4] [d#3,b3,f#4]", B: "[c#3,g#3,e4]@23 ~ [b2,f#3,d4]@12 [a#2,f#3,c4]@12",
  C: "~@3 c#4 a2@2 a2@2, [a2,e3] ~, c#4@3 ~@5, ~ f#3 [d#3,b3]@2", // A5 G#m
  D: "~@7 d#4 ~@2 d#4@2 ~@2 f#4@2, [g#2,f#3,b3]@2 [f#2,e3,a3,c#4] [b2,f#3,a3,c#4,e4], ~ e3 ~@2, ~@3 e4 ~@4", // G#m7 F#m7
  E: "b3@2 ~ b4 b3@2 ~ f#4, [e2,b2,g#4] [d#2,b2,b4], ~@2 [e3,g#3,b3]@2 f#4@3 ~, ~@3 [d#3,f#3,b3,d#4,g#4]", // E G#m E G#m7
  F: "g#3@12 [c#3,e3,g#3]@12 [b1,f#2,a3,d4,a4]@11 ~ [a#1,f#2,g#3,c4,f#4]@11 ~, [c#2,g#2,c#4,e4] ~", // C#m Bm7 G#7 C#m
  G: "~ f#3 ~ d#4, [a1,e2,g#3,c#4,e4] [b1,f#2,f#3,a3,e4]", // Amaj7 Bsus4
  H: "~@7 d#4 ~@2 d#4@2 ~@2 f#4@2, [e2,g#3,b3]@2 [f#2,e3,a3,c#4] ~, e4@3 e4 ~@4, ~ b2 ~ [b2,f#3,a3,c#4,e4]", // E F#m7
  I: "~@3 b3 ~@3 [b3,f#4], [e3,g#4] [d#3,b4], ~ b3@2 ~@2 b3@2 ~, ~@2 [e4,b4]@2 f#4@3 ~, ~@3 [d#4,g#4]", // B5 E G#m E5 G#5
  J: "~@3 [g#3,f#4] ~ g#4 ~ e4, [c#3,e4]@2 [b2,f#3,a3,d4,a4] [a#2,f#3,g#3,c4,f#4], ~ g#3@2 ~@5, ~ c#4 ~@2", // G#7 C#m Bm7 G#7
  K: "~@3 c#5 ~@3 a4, [a2,e3,c#4,g#4] [b2,f#3,e4,b4], c#5@3 ~@5, ~ f#4 ~ d#4", // Amaj7 Bsus4
  L: "~@4 e4@2 ~ d#4 ~@2 d#4@2 ~@2 f#4@2, [b2,g#3,f#4,b4]@2 [f#2,e3,a3,c#4] [b2,f#3,a3,c#4,e4], ~@3 e4 ~@4", // G#m7 F#m7
  M: "~@3 b3 ~@3 [b3,f#5], [e3,g#5] [d#3,b5], ~ b3@2 ~@2 b3@2 ~, ~ [g#4,b5] ~ [f#4,g#5]", // B5 E G#m F#sus2
  N: "~@3 [g#3,f#5] ~ g#5 ~ e5, [c#3,e5]@2 [b2,f#3,d4,a5] [a#2,f#3,c4,f#5], ~ g#3@2 ~@5, ~ e4 ~@2", // G#7 C#m Bm7 Cm7b5
  O: "c#4@4 ~@3 g#5 ~@6 e5@2, [a2,e3,e5] [b2,e3,f#3,b3,f#5], ~ [f#3,c#4] ~ d#3, ~@3 f#5 ~@4", // A5 Bsus4 F#5
  P: "~@3 [b2,e4] ~ [b2,g#4] ~ e4, [e2,e5]@2 [e2,f#4,b4] [d#2,b2,f#3,f#4,b4], ~ b2@2 ~@5, ~ g#3 ~@2", // E5 E Esus2 B
  Q: "~@7 c#3, c#2@3 e3, ~ g#2@7, ~@2 e3@3 g#3@3, ~@3 g#3 c#4@4",
  R: "e2 ~@2 e2!2 ~@2 e2, a1 g#1, ~ e2@2 ~@2 e2@2 ~, ~ c#3 b2!2",
  S: "e3 ~@6 e3, a2, ~ e3@5 c#4@2, ~@2 c#4@3 e4@3, ~@3 e4 a4@4",
  T: "[f#3@6 ~@12 f#3@6 ~@24 c3@11 ~@19 b4@6 ~@18 b4@6 ~@18 g#4@6 [b3,f#4,d5]@11 ~, [d#2,c#3]@24 [g#2,d#3,f#3,g#3]@35 ~@13 g#5@12 ~@12 g#5@12 ~@12 e5@12 ~@12, ~ f#3@2 ~@8 b4@2 ~@2 b4@2 ~@2 g#4@2 ~@3, ~ a3 ~@3 e4@2 d#4@2 c#4@2 ~]/3", // Bm D#7 G#7
  U: "[[a#3,f#4,c5]@11 ~@13 f#4@12 ~@12 d#4@12 ~@2 e5@46 ~@36, ~ [a3,e4,c#5]@2 [b3,e4,f#4,b4]@2 [e3,g#4]@4 ~@3, ~@61 [b3,b4]@47 ~@36]/3", // Cm7b5 A Bsus4 E B
  V: "[~@42 c#5@23 [a2,f#3,b3,d#4]@31, ~@7 a2@13 e4@13 ~@15, ~@7 e3@15 ~@10, ~@27 g#3@14 g#4@25 ~@30, ~@33 c#4@32 ~@31]/2", // B7
  W: "[~@48 d#5@23 [c#3,g#3,e4]@25, ~@10 g#2@13 g#4@13 ~@12, ~@9 f#3@15 ~@8, ~@33 b3@14 b4@25 ~@24, ~@39 d#4@32 ~@25]/2", // C#m
  X: "[~@54 c#5@23 [b2,f#3,a3,d#4]@48 ~@10 b2@6 g#3@3, ~@13 f#2@13 f#4@13 ~@33, ~@33 e3@45 ~@50 e2@16, ~@39 a3@14 a4@25 ~@66, ~@45 c#4@32 ~@67]/3", // B7
  Y: "[~@29 b2@6 [a#1,a#2,f#3,c4,e4]@48 ~@6 e4@48 [a2,f#3,b3,d#4]@48 ~@3 [g#2,f#3,b3,d4,f#4]@48 ~@3 [c#3,g#3,b3,f4]@48 ~, ~@3 b3@13 b3@19 ~@52 [e2,g#3]@50 ~@151, ~@10 [e4,g#4]@26 ~@52 c#4@49 ~@51 b4@97 ~@3, ~@22 g#3@13 ~@51 [a1,e3]@51 ~@151]/6", // C7 B7 G#m7b5 C#7 E A5
  Z: "[~@2 [c3,f#3,a3,e4,b4]@50 ~@2 [b2,f#3,a3,d#4]@51 ~@40 f#5@5 f#3@5 ~@32 f#3@5, ~@108 [a2,c#3,g#3]@21 c#5@5 d#5@6 e5@10 f#4@16 d#4@6 [f#4,b4]@20, ~@113 c#4@37 [g#2,d#5]@42, ~@119 e4@31 b3@11 b3@16 d#4@15, ~@124 g#4@27 ~@5 f#3@26 b3@10]/4", // F#m7b5 B7 Amaj7 B5 G#5
  AA: "[~ e3@5 ~@11 e3@5 ~@6 a4@6 ~@7 c#5@6 b2@6 ~@39 b5@6 ~@3 e6@48 ~@43, ~ [f#2,c#4,a4]@21 ~@13 [b2,f#3,d#4,b4]@12 b3@13 g#3@19 b4@7 g#5@12 [e4,e5] [b4,g#5] b5@49 ~@43, ~@6 e3@11 ~@30 e2@26 g#4@76 ~@43, ~@11 a3@11 [a3,c#4,g#4]@13 ~@12 g#4@20 b3@83 ~@42, ~@9 b2@16 ~@7]/4", // F#m B E Amaj7
})).s("gm_piano").gain(0.16).pan(0.4)

stack(piano)