Strudelify
KeyA minorTempo114 bpm
0:00/0:00
// Jewel — Harley Streten
// 114 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5945865; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 93 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(114/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@2 G H I J K L@2 M N O P Q R S T U V H I J K L@2 M N O P Q R S T U V W ~ X ~ Y@2 Z ~ AA ~@11 AB AC AD AE AF
  ~@7 AF ~@3 AG P Q R S T U V AH ~ AI ~ AJ@2 AK AL AM
>`.pickRestart({
  A: "~@4 e6 g6 e6@2, [a2,e3,a3]@15 ~", B: "e6@4 e7 e6@3 e6@4 g6 e6@3, [f2,c3,f3]@15 ~",
  C: "e6@4 g7 a6@3 e6 g6@3 e6@4, [c2,g2,c3]@15 ~", D: "g6@2 e6@2 c7 b6@3 g6@3 g6 a6@4, [d2,a2,d3]@15 ~",
  E: "c7@3 ~ [e6,a6]@4 g6@3 ~ [a6,b6] d7@3, [e3,a3,c4]@15 ~, a6 ~@7 a6 ~@7", // A5 Asus2 Am
  F: "[g6@2 g6@4 g6@2 a6 e6@3 ~@8 e6 e6@3 g6 e6@3 e6@4, [c3,f3,a3]@15 ~ [g2,c3,e3]@15 ~, e6@2 ~ d6@2 ~@3]/2", // F C
  G: "g6 e6@3 b6@4 g6@4 e6 e6@3, [a2,d3,f#3]@15 ~", H: "a5@3 ~ e5@4 a5 c6@3 a5@4, [f1,f2] [c3,f3,a3], g5 ~@15",
  I: "a5@4 ~@2 a5@2 b5 c6@3 d6@3 ~, [f1,f2] [c3,f3,a3], ~@12 c6 ~@3", // F
  J: "e6@4 c6@4 a5@3 ~ e5@3 ~, [a2,e3,a3] [e3,g3,c4], ~@8 c6 ~@3 a5 ~@3", // A5 C
  K: "[d3,f3,a3]@8 ~@4 [c6,d6] [e6,f6] g6@2, d5@11 ~@5, e5 ~@7 [d2,a2,d3]@8", // Dm Csus2 Fmaj7 D5
  L: "[d6@4 a6 c7@3 c7 b6@3 [f6,g6] [d6,e6] c6@2 c7@4 g6@4 e6 d6@3 d6@4, [e3,a3]@15 ~, c3@15 ~ [c3,e4]@15 ~, c4 d4 ~@2]/2", // Fsus2 Dsus2 A5 C
  M: "c6 e6@3 e6 g6@3 g6 a6@3 a6@4, [c3,e3]@15 ~, a3 g3, ~ d6 ~@14", // C
  N: "c6 e6@3 e6 g6@3 g6 a6@3 b6@4, [c3,f3,a3]@15 ~, ~ d6 ~@14", // F
  O: "~@2 [e4,g4] [a2,e4,g4] [g4,b4] [a2,g4,b4] [e4,g4] [a2,e4,g4], ~ a1!3", // Em A7 G Em A7
  P: "[c4,e4] [f2,c4,e4] [a3,c4] [f2,a3,c4] [c4,e4] [f2,c4,e4] [e4,a4] [f2,e4,a4], f1!4", // C Fmaj7 Am F C Fmaj7 A5 Fmaj7
  Q: "~@4 [c2,g4,c5]@2 [g4,c5] ~ [c2,c5,e5]@2 [c5,e5] ~ [c2,e5,g5]@2 [e5,g5] ~, ~@3 c3 ~ c3 ~ c3", // C5 C Em
  R: "[d2,a4,d5]@2 [a4,d5] ~ [d2,c5,e5]@2 [c5,e5] ~ [d2,d5,a5]@2 [d5,a5] ~@5, ~ d3 ~ d3 ~ d3 ~@2", // D5 C D5
  S: "~@4 [a1,a4,e5]@2 [a4,e5] ~ [a1,a4,e5]@2 [a4,e5] ~ a1@2 a2@2, ~@3 a2 ~ a2 ~@2", // A5
  T: "[a4,d5] [f2,a4,d5] ~ f2 [c5,g5] [f2,c5,g5] [e4,a4] [f2,e4,a4], f1!4", // D5 Dm C5 Fsus2 A5 Fmaj7
  U: "c2@2 c3@2 [c2,e4,a4]@2 [e4,a4] ~ [c2,g4,b4]@2 [g4,b4] ~ [c2,c4,e4]@2 [c4,e4] ~, ~@3 c3 ~ c3 ~ c3", // Am A5 Cmaj7 G C
  V: "d2@2 d3@2 [d2,f#4,a4]@2 [f#4,a4] ~ [d2,d4,b4]@2 [d4,b4] ~ [d2,e4,g4]@2 [e4,g4] ~, ~@3 d3 ~ d3 ~ d3", // D F#m G Em7 Em
  W: "a3 b3@2 ~ e4@2 ~@2 a3 b3@2 ~@5, [f2,c3,f3]@15 ~", X: "a4 g4@2 ~ e4@2 ~@2 a4 g4@2 ~@5, [e3,a3,c4] [e3,g3,c4]",
  Y: "[b4 c5@2 ~ e5@2 ~@2 b4 c5@2 ~@17 g6 a6@2 ~, [e3,a3]@27 ~@5, c4 d4 ~@2]/2", // A5
  Z: "a5 g5@2 ~ e5@2 ~@2 a5 g5@2 ~@5, [e3,a3,c4,b4] [e3,g3,c4,g4]", // Am C
  AA: "d5 e5@2 ~ e5@2 ~@2 d5 e5@2 ~ e5@2 ~@2, a2@15 ~", AB: "~@3 [e4,g4]",
  AC: "[c4,e4] [a3,c4] [c4,e4] [e4,a4], [f2,c3,f3]@15 ~", AD: "[e4,b4] [g4,c5] [c5,e5] [e5,g5], [c2,g2,c3]@15 ~",
  AE: "[a4,d5] [c5,e5] [c5,e5]@2, [d2,a2,d3]@15 ~", AF: "[e5,a5]@3 g5 a5@4 g5@3 g5@5, [a2,e3,a3]@15 ~, ~@4 e5 ~@3 e5@8",
  AG: "[a3,c4]@2 [a3,c4] ~ [e4,g4]@2 [a2,e4,g4]@2 [g4,b4]@2 [a2,g4,b4]@2 [e4,g4]@2 [a2,e4,g4]@2, ~ a1!3", // Am Em A7 G Em A7
  AH: "b5 c6@2 ~ e6@2 ~@2 b5 c6@2 ~ e6@2 ~@2, [f2,c3,f3]@15 ~", // F5
  AI: "a5 g5@2 ~ e5@2 ~@2 a5 g5@2 ~@5, [e3,a3,c4] [e3,g3,c4]", // Am C
  AJ: "[b6 c7@2 ~ e7@2 ~@2 b6 c7@2 ~@17 c6@3 b5, [e3,a3]@27 ~@5, c4 d4 ~@2]/2", // A5
  AK: "a5 g5@3 e5 d5@3 c5 b4@3 a4 g4@3, [c3,e3,a3,b4] [c3,e3,g3], ~@2 g4 ~", // Am C
  AL: "g4 a4@3 e4@4 g4 a4@3 e4@4, [a2,c3,f3]@15 ~", AM: "[a2,c3,e3,a4]@15 ~, g4 ~@15",
})).s("gm_piano").gain(0.3)

// chords · piano · soft notes
const piano_soft = note(`<
  ~@40 A B A C D E D F ~ G H I J@3 K L M N O P ~@4 Q R S T U V W ~ Q R S ~@9 X D Y Z AA ~@3
>`.pickRestart({
  A: "~@6 e4 ~", B: "a3 b3@2 ~ e4@2 ~@2 a3 b3@2 ~ e4@2 ~@2, [f2,c3,f3]@15 ~",
  C: "a4 g4@2 ~ e4@2 ~@2 a4 g4@2 ~ e4@2 ~@2, [d3,f3,a3]@15 ~", D: "~@6 e5 ~",
  E: "b4 c5@2 ~ e5@2 ~@2 b4 c5@2 ~@5, e4@11 ~@5", F: "d5 e5@2 ~ e5@2 ~@2 d5 e5@2 ~ e5@2 ~@2, [f3,a3,c4,a4]",
  G: "d5 e5@2 ~ e5@2 ~@2 d5 e5@2 ~ e5@2 ~@2, f2@15 ~", H: "d5 e5@2 ~ e5@2 ~@2 d5 e5@2 ~ e5@2 ~@2, c2@15 ~",
  I: "d5 e5@2 ~ e5@2 ~@2 d5 e5@2 ~ e5@2 ~@2, d2@15 ~",
  J: "[~@8 [c5,e5]@2 ~@18 [a5,c6] a5 ~@2 [c2,g2]@15 ~, [a2,e3]@15 ~ [f2,c3]@15 ~@17, ~@10 [e5,a5]@18 ~ [c5,g5]@18 ~]/3", // C Am C5 A5 F5 A5 C5
  K: "[d2,a2]@15 ~", L: "[e5,a5]@3 g5 a5@4 g5@3 g5@5, [a2,e3]@15 ~, ~@4 e5 ~@3 e5@8", M: "[f2,c3]@7 [c5,e5]",
  N: "[c2,g2,e5,g5]@7 [e5,a5]", O: "[d2,a2,d5,f#5]@15 ~", P: "~ [e4,g4] [g4,b4] ~, [a2,e3,a3]@15 ~",
  Q: "[f2,c3,f3]@7 [c5,e5], [a4,d5]@13 ~@3", R: "~@2 [e4,a4]@2 [c4,e4]@2 [a3,c4] [e5,a5], [c2,g2,c3,d5,g5]@15 ~",
  S: "~ [e4,g4] [g4,b4] [f#4,a4], [d2,a2,d3,d5,f#5]@15 ~", T: "c4 [e4,g4] [g4,b4] [e4,g4], [a2,e3,a3]@15 ~",
  U: "[c4,e4] [a3,c4] [c4,e4] [e4,a4], [f2,c3,f3]@15 ~", V: "[e4,b4] [g4,c5] [c5,e5] [e5,g5], [c2,g2,c3]@15 ~",
  W: "[a4,d5] [c5,e5] [c5,e5]@2, [d2,a2,d3]@15 ~", X: "b5 c6@2 ~ e6@2 ~@2 b5 c6@2 ~ c6 b5@2 ~, [f2,c3,f3]@15 ~",
  Y: "d5 e5@2 ~ e5@2 ~@2 d5 e5@2 ~ e5@2 ~@2, [d3,f3,a3] ~", Z: "~@6 e7 ~",
  AA: "b6 c7@2 ~ e7@2 ~@2 b6 c7@2 ~@5, e4@11 ~@5",
})).s("gm_piano").gain(0.15)

stack(piano, piano_soft)