Strudelify

Apres L'amour

Charles Aznavour

KeyC majorTempo90 bpm
0:00/0:00
// Apres L'amour — Charles Aznavour
// 90 bpm, 3/4, key C 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 (3/4 at bar 1, 4/4 at bar 16) are rendered on a constant 3/4 grid of one bar per cycle
// note: Full arrangement: all 43 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 · [...]/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 · epiano1 · "Left Hand"
const epiano1 = note(`<
  A B C D E D E F G H I J K J L M N O P Q R S T@2 U@2 V W R S X Y Z AA AB@2 AC AD AE AF AG AH AI
>`.pickRestart({
  A: "[b4,d5]@7 ~ [a4,c5]@3 ~ [g4,b4]@7 ~ [f4,a4]@3 ~", B: "[e4,g4]@7 ~ [d4,f4]@3 ~ [c4,e4]@7 ~ [b3,d4]@3 ~",
  C: "~@4 e4@3 ~ d4@3 ~ [c4,e4]@11 ~", D: "[a3,c4]@11 ~ [b3,d4]@11 ~", E: "[c4,e4]@11 ~ [c4,e4]@11 ~",
  F: "[a3,c4]@11 ~ [b3,f4]@11 ~", G: "~@4 [c4,e4]@3 ~ [c4,e4]@3 ~@5 [c4,e4]@3 ~ [c4,e4]@3 ~",
  H: "~@4 [a3,c4]@3 ~ [a3,c4]@3 ~ [g#3,d4]@11 ~", I: "~@4 c4@3 ~ b3@3 ~ [a3,c4]@11 ~", J: "[a3,d4]@11 ~ [g#3,d4]@11 ~",
  K: "[a3,c4]@11 ~ [a3,c4]@11 ~", L: "[a3,c4]@11 ~ [g#3,d4]@11 ~", M: "[a3,c4]@11 ~ [e4,a4]@3 ~@9",
  N: "[d4,a4,d5]@11 ~ a4@4 g4@4 f4@4", O: "e4@4 d4@4 ~@8 d4@7 ~", P: "e4@6 d4@2 c#4@7 ~ c4@7 ~",
  Q: "a3@7 ~ d4@7 ~ b3@7 ~", R: "~@8 d4@7 ~ e4@6 d4@2", S: "c#4@7 ~ c4@7 ~ a3@7 ~",
  T: "[f4@6 a4@2 g#4@7 ~ [e4,a4]@14 ~@2 [e4,g4]@14 ~@2]/2", U: "[[f4,a4]@14 ~@2 [d4,g#4]@14 ~@2 e4@11 d#4@2 e4@3]/2",
  V: "g4@7 ~ [c#4,e4]@7 ~ c4@7 ~", W: "d4@7 ~ d4@7 ~ c4@4 d4@4", X: "d4@7 ~ b3@7 ~ e4@7 ~",
  Y: "d4@7 ~ e4@6 d4@2 c#4@7 ~", Z: "c4@7 ~ a3@7 ~ e4@7 ~", AA: "g#4@7 ~ [e4,a4]@14 ~@2",
  AB: "[[e4,g4]@7 ~ [f4,a4]@7 ~ [d4,g#4]@7 ~]/2", AC: "[e4,c5]@7 ~ [e4,b4]@7 ~ [e4,a4]@4 ~@4", AD: "~@4 [f#4,c5]@7 ~",
  AE: "[d4,f4,g#4]@14 ~@2 [e4,g4,c5]@7 ~", // Ddim C
  AF: "[c5,e5]@3 [d5,f5]@2 [e5,g5]@3 [f5,g#5]@6 [c#5,f5]@2 [g5,a#5]@6 [f5,g#5]@2", // C Dm Em Fm C# Gm Fm
  AG: "[e5,g5]@7 ~ [g#4,c5]@3 [a#4,c#5]@2 [c5,d#5]@3 [c#5,f5]@6 [a#4,c#5]@2", AH: "[d#5,g5]@3 [c#5,f5] [c5,e5]@7 ~",
  AI: "[b5,c6,e6]@23 ~", // Cmaj7
})).s("gm_epiano1").gain(0.57).pan(0.4)

// bass · acoustic bass · "Staff-1"
const bass = note(`<
  A B C D C D C D C E F G F G H C I J K L M N O P Q R K S M T U@2 V W X Y Z AA AB AC AD AE AF
>`.pickRestart({
  A: "c3@3 ~ [g3,c4,e4]@7 ~ a2@3 ~ [e3,a3,c4]@7 ~", B: "d3@3 ~ [f3,a3,c4]@7 ~ g2@3 ~ [f3,g3,b3]@7 ~",
  C: "c3 ~@3 a2 ~@3", D: "d2 ~@3 g2 ~@3", E: "d2@3 ~@9 b2@3 ~ g#2@3 ~ e2@3 ~", F: "a2 ~@3 c3 ~@3", G: "b2 ~@3 e2 ~@3",
  H: "a2 ~@3 b2 ~@3", I: "f2@3 a2@2 d3@3 f3@7 ~ g3@4 g2@4", J: "a2@2 b2@2 c3@7 ~", K: "c#3@7 ~ a2@7 ~ d3@7 ~",
  L: "c3@7 ~ b2@7 ~ g2@7 ~", M: "c3@14 ~@2 c#3@7 ~", N: "a2@7 ~ d3@7 ~ f3@7 ~", O: "g#3@7 ~ e3@7 ~ a2@5 e3@3",
  P: "a3@7 ~ a#2@5 e3@3 a#3@7 ~", Q: "a2@5 f3@3 a3@7 ~ f2@5 c3@3", R: "g#3@7 ~ e3@7 ~ d3@7 ~",
  S: "c3@7 ~ b2@4 g2@4 a2@4 b2@4", T: "a2@7 ~ d3@7 ~ c3@7 ~", U: "[b2@7 ~ g2@7 ~ c3@14 ~@2 c#3@7 ~ a2@7 ~]/2",
  V: "d3@7 ~ f3@7 ~ g#3@7 ~", W: "e3@7 ~ a2@7 ~ [a3,c4,e4]@7 ~", X: "a#2@7 ~ [a#3,c4,e4]@7 ~ a2@7 ~",
  Y: "[a3,c4,f4]@7 ~ f2@7 ~ [g#3,c4,f4]@7 ~", Z: "g2@7 ~ g#2@7 ~ a2@4 ~@4", AA: "~@4 g#2@7 ~",
  AB: "g2@14 ~@2 [c2,c3]@7 ~", AC: "[g3,c4,e4]@7 ~ [c#2,c#3]@7 ~ [g#3,c#4,f4]@7 ~",
  AD: "[c2,c3]@7 ~ [g#3,c4,d#4]@7 ~ [a#1,a#2]@7 ~", AE: "[a#3,c#4,f4]@7 ~ [c2,c3]@14 ~@2", AF: "[a4,e5,g5]@23 ~",
})).s("gm_acoustic_bass").gain(0.68).pan(0.4)

stack(epiano1, bass)

More by Charles Aznavour