Strudelify

Life Uncommon

Jewel

KeyA majorTempo100 bpm
0:00/0:00
// Life Uncommon — Jewel
// 100 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 113 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/4)

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

// chords · piano · "Track-2"
const piano = note(`<
  ~@15 A@2 B@3 C D E F@2 G H I@4 J K@3 L M N O@2 P Q R S T U V@2 W X Y@2 Z@2 AA@2 A@2 B@3 C D E F@2 G H I@4 J K@3 L M N
  AB@3 AC AD AE AF@2 AG AH AI AJ@2 AK AL AM AK AN AD AE AO@2 AP AI AJ@2 AK ~@7
>`.pickRestart({
  A: "[~@2 c#4@2 [a3,b3,c#4]@2 c#4@2 [a3,c#4]@2 b3@4 a3@4 f#3@2 [a3,e4]@3 ~@5 [a3,e4]@3 ~]/2", // A A5
  B: "[~@4 [a3,d4,f#4]@3 ~@3 c#4@2 [a3,e4]@2 [a3,f#4]@4 e4@2 [a3,b3,e4]@3 ~@3 c#4@2 c#4@2 [a3,f#4]@4 [a3,e4]@2 [a3,b3,e4]@2 f#4@2 c#4@2 b3@2 b3 a3@3]/3", // D A5 D Asus2 D A5 Asus2
  C: "[f#3,b3]@2 a3@2 [a3,d4,f#4]@3 ~@5 [a3,d4,e4]@3 ~", D: "~@4 [a3,d4,e4]@3 ~ c#4@2 d4@4 c#4@2",
  E: "[a3,c#4] d4 c#4@5 ~@5 [a3,b3,e4]@3 ~", // A Asus2
  F: "[~@4 [a3,c#4,e4]@3 ~ d4@2 c#4@2 c#4@2 [g#3,c#4]@4 [g#3,b3]@4 b3@2 g#3@3 ~ [g#3,b3,e4]@3 ~]/2", // A C#5 G#m E
  G: "~@4 [g#3,b3,e4]@2 g#3@2 c#4@2 b3@2 a3@3 ~", H: "~@4 [a3,c#4,e4]@3 ~@5 [a3,c#4,e4]@3 ~",
  I: "[~@4 [a3,c#4,e4]@2 a3@2 [a3,c#4]@2 [c#4,e4]@4 [a3,d4,f#4]@4 [a3,d4,f#4]@7 ~ [a3,d4,e4]@4 [g#3,b3,e4]@4 [g#3,b3]@4 [g#3,b3]@2 [a3,d4]@3 ~ [f#3,c#4]@2 [f#3,b3]@4 [f#3,a3]@5 ~@5 [a3,d4,e4]@3 ~]/4", // A C#m D Asus4 E G#m D5 F#5 …
  J: "[a3,c#4,e4]@7 ~@5 [a3,b3,e4]@3 ~", // A Asus2
  K: "[[a3,d4]@3 ~ [a3,d4,f#4]@2 [a3,d4,f#4]@4 [a3,c#4,e4]@4 [g#3,b3,e4]@4 [g#3,b3]@4 [e3,b3]@4 [e3,b3]@2 [a3,c#4]@2 [a3,c#4]@4 [a3,c#4]@4 [a3,c#4]@2 [a3,c#4]@2 [f#3,b3]@2 [e3,a3]@2 [f#3,b3]@2]/3", // D5 D A E G#m E5 A B5 …
  L: "[e3,a3]@5 ~ [c#4,a4]!2 [c#4,a4]@2 [b3,g#4]@2 [g#3,f#4] [g#3,e4]@2 c#4", // A5 F#m E G#7 C#m
  M: "[f#3,b3]@2 a3@4 a3@2 [f#3,a3]@2 [f#3,c#4]@4 d4 c#4", N: "[g#3,b3]@7 ~@5 [a3,b3,e4]@3 ~",
  O: "[[g#3,b3,e4]@5 ~ a3@2 d4@2 c#4@2 c#4@2 [e3,b3]@4 a3@2 [a3,c#4,e4]@3 ~@3 c#4@4 c#4@2]/2", // E E5 A
  P: "[f#3,b3] a3 f#3 [f#3,a3]@2 f#3@2 e3", Q: "[a3,b3]@2 [a3,c#4]@4 [a3,c#4]@7 ~ a3!2",
  R: "[b3,g#4] a3@3 a3 f#3 [a3,e4]@4 a3@2 [f#3,b3]@2 a3@2", S: "~@2 [a3,b3]@4 c#4@2 [a3,c#4] b3 a3@5 ~",
  T: "[f#3,b3]@2 a3@4 [f#3,a3,e4]@7 ~ a3@2", U: "[a3,b3]@2 b3@2 c#4@2 [a3,c#4]@7 ~ a3!2",
  V: "[[e3,a3]@2 b3@2 b3@2 [e3,g#3,b3]@4 c#4@4 [g#3,b3,d4]@4 c#4@2 b3@2 a3@5 ~ [g#3,b3,e4]@2 a3@2]/2", // A5 E G#dim E
  W: "[a3,d4,e4]@3 ~ d4@2 [a3,d4,e4]@4 e4@4 f#4@2", X: "[a3,d4,e4]@5 ~ e4@2 [a3,d4,f#4]@2 e4@2 e4@2 f#4@2",
  Y: "[[a3,c#4,e4]@7 ~ [e4,c#5]@2 [d4,b4]@2 [c#4,a4]@2 [b3,g#4]@9 ~ c#4@3 ~ e4@2 f#4@2]/2", // A C#m G F#m E
  Z: "[[a3,c#4,e4]@7 ~ [e4,c#5]@2 [d4,b4]@2 [c#4,a4]@2 [b3,g#4]@9 ~@5 [a3,b3,e4]@3 ~]/2", // A C#m G F#m E Asus2
  AA: "[[g#3,b3,e4]@7 a3 c#4@2 c#4@2 b3@2 a3 [e3,b3]@3 a3@2 [a3,b3,e4]@3 ~@5 [a3,b3,e4]@3 ~]/2", // E E5 Asus2
  AB: "[[g#3,b3,e4]@5 ~ a3@2 d4@2 e4@4 [a3,d4,f#4]@4 [a3,d4,f#4]@5 ~@5 [a3,d4,e4]@2 [b3,e4,g#4]@4 [b3,e4,g#4]@4 f#4@2 [b3,e4,g#4]@3 ~ g#4@2 b4@2]/3", // E D Asus4 E
  AC: "a4@3 ~ [c#4,e4]@3 ~@5 [b3,e4]@3 ~", AD: "~@4 [c#4,e4,a4]@3 ~@5 [b3,e4,a4]@3 ~",
  AE: "[d4,f#4,a4]@3 ~ [d4,f#4,a4]@2 [d4,f#4,a4]@3 g#4 f#4@2 f#4@2 g#4 f#4", // D
  AF: "[[g#3,b3,e4] [g#3,b3,e4]@2 [g#3,b3,e4]@2 e4 c#4 [a3,c#4,f#4]@2 e4 c#4 [a3,c#4,f#4]@2 e4 c#4 [a3,c#4,f#4]]/2", // E F#m
  AG: "[a3,c#4,f#4]@2 [a3,c#4,e4]@4 [c#4,a4]!2 [c#4,a4]@2 [b3,g#4]@2 [a3,f#4] e4@2 c#4", // F#m A F#m E D
  AH: "[f#3,b3]@2 a3@4 a3@2 [f#3,a3]@2 c#4@4 d4 b3", AI: "[g#3,b3,e4]@7 ~@5 [a3,b3,e4]@3 ~",
  AJ: "[[g#3,b3,e4]@3 ~@3 e3@2 d4@3 ~ c#4@2 [e3,b3]@4 [e3,a3]@5 ~ [a3,c#4,e4]@3 ~ [a3,d4,f#4]@3 ~]/2", // E E5 A5 A D
  AK: "[a3,c#4,e4]@15 ~", AL: "[a3,d4,f#4]@15 ~", AM: "e4@15 ~", AN: "b3@15 ~",
  AO: "[[g#3,b3,e4]@2 [g#3,b3,e4]@4 [g#3,b3,e4]@4 e4@2 c#4@2 [a3,c#4,f#4]@4 [a3,c#4,e4]@3 ~ [c#4,a4]!2 [c#4,a4]@2 [b3,g#4]@2 [a3,f#4] e4@2 c#4]/2", // E F#m A F#m E D
  AP: "[g#3,b3]@2 a3@3 ~ a3@2 [f#3,a3]@2 c#4@3 ~ d4 c#4", // G#m F#m
})).s("gm_piano").gain(0.72)

// bass · acoustic bass · "Track-3"
const bass = note(`<
  ~ A@12 B ~ C D E@2 C D F G C H@2 E I E J K L E@2 M@2 N O P Q R S T U V W X Y Z AA AB AC AD AE AF AE AG AH AI AJ AK@2
  AL AM AN AO AN AP AQ E J K L E@2 M@2 N O P Q R S T U V W X Y Z AA AB AC AR AS AT AU AV AS AT AW AX AY AC AZ BA I BB@2
  BC@2 ~@2
>`.pickRestart({
  A: "[a3@31 ~]/2", B: "a3@15 ~", C: "d3@2 d3@5 ~ d3@2 d3@5 ~", D: "e3@2 e3@5 ~ e3@2 e3@5 ~",
  E: "a2@2 a2@5 ~ a2@2 a2@5 ~", F: "a2@2 a2@5 ~ g#2@2 g#2@5 ~", G: "f#2@2 f#2@5 ~ f#2@2 f#2@4 e2@2",
  H: "e2@2 e2@5 ~ e2@2 e2@5 ~", I: "a2@15 ~", J: "a2@2 a2@5 ~ a2@2 a2@4 a2@2", K: "d2@2 d2@5 ~ d2@2 a2@4 a2@2",
  L: "d2 d2@2 d2@2 d2@2 d2", M: "d2@2 d2@5 ~ d2@2 d2@5 ~", N: "a2@5 ~ a2@2 a2@2 a2@4 e2@2", O: "a2 a2@2 e2 a2!2 b1 c#2",
  P: "e2 e2@2 e2!2 e2@2 b2", Q: "e2 e2@2 e2!2 e2@2 e2", R: "a2 a2@2 a2!2 a2@2 a2", S: "a2 a2@2 e2 a2!4",
  T: "d2@5 ~ d2@4 a2@4 d2@2", U: "e2@2 e2@4 b2@2 e2@3 ~ e2@3 ~", V: "a2@5 ~ a2@4 a2@4 e2@2", W: "a2@5 ~ a2@4 a2@4 a2@2",
  X: "d2@5 ~ d2@4 d2@4 b1@2", Y: "e2@5 ~ e2@4 e2@4 e2@2", Z: "a2 a2@2 a2 g#2 g#2@2 g#2", AA: "f#2 f#2@2 f#2!3 b1 c#2",
  AB: "d2!7 a1", AC: "e2@5 ~ e2@2 e2@2 e2@4 e2@2", AD: "e2@2 e2@4 e2@2 e2@3 ~ e2@3 ~", AE: "a2@5 ~ a2@4 b1@4 c#2@2",
  AF: "d2@5 ~ d2@4 e2@2 f#2@2 e2@2", AG: "d2@5 ~ d2@2 d2@2 e2@2 f#2@2 e2@2", AH: "a2@5 ~ a2@2 a2@2 b1@4 c#2@2",
  AI: "d2@5 ~ d2@2 d2@2 e2@2 f#2@2 a2 b2", AJ: "a2@5 ~ a2@4 c#2@4 d2@2",
  AK: "[e2@5 ~ e2@2 e2@2 e2@4 e3@4 d3@2 c#3@2 b2@2 b2@2 a2@4 b1@2]/2", AL: "d2@5 ~ d2@2 d2@2 d2@4 d2@2",
  AM: "d2@2 d2@4 d2@2 b2@3 ~ d2@2 e2@2", AN: "a2@5 ~ a2@2 a2@2 g#2@2 f#2@3 ~", AO: "e2@5 ~ e2@2 e2@3 ~ b2@2 e3@2",
  AP: "e2@5 ~ e2@2 c#2@2 e2@2 f#2@3 ~", AQ: "g#2@15 ~", AR: "g#2 a2 b2 c#3 b2 a2 g#2 e2",
  AS: "d2@5 ~ d2@2 d2@2 a2@4 d2@2", AT: "e2@5 ~ e2@2 e2@2 b1@4 e2@2", AU: "a2@5 ~ a2@2 a2@2 e2@2 a2@2 b2@2",
  AV: "c#3 d3 e3 d3@2 c#3 a2!2", AW: "a2@5 ~ a2@2 g#2@5 ~ g#2@2", AX: "f#2@5 ~ f#2@2 c#2@2 f#2@4 c#2@2",
  AY: "d2@5 ~ d2@2 d2@2 d2@4 a2@2", AZ: "d3@2 d3@2 c#3@2 c#3@2 b2@5 ~ e2@2", BA: "a2@5 ~ a2@2 e2 f#2 a2@2 f#2@3 ~",
  BB: "[d2@31 ~]/2", BC: "[a2@31 ~]/2",
})).s("gm_acoustic_bass").gain(0.72)

stack(piano, bass)

More by Jewel