Strudelify
Sur ma vie cover art

L'album de sa vie 100 titres

Sur ma vie

Charles Aznavour

KeyC majorTempo56 bpm
0:00/0:00
// Sur ma vie — Charles Aznavour
// 56 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 60 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: The whole transcription plays 15 ms ahead of the beat; the grid follows it, so its parts stay together.
setcpm(56/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, A@4 for four bars: edit a riff to change every repeat.

// chords · trumpet
const trumpet = note("<A ~@3 A B ~@15 C D ~@14 C D ~@16 E F G H I>".pickRestart({
  A: "~@14 [b4,d5,g5]!10", B: "[c5,e5,g5,c6] ~@23",
  C: "c5 ~ c5!4 [c5,e5] ~ [c5,e5]!4 [c5,e5,g5] ~ [c5,e5,g5]!3 [c5,e5] [c5,d#5,g#5]!6", D: "[e5,g5,c6] ~@23",
  E: "[d5,f5] ~ [d5,f5]!4 [d5,f5,a5] ~ [d5,f5,a5]!4 [d5,f5,a5,d6] ~ [f5,a5,d6] [d5,f5,a5,d6]!3 [d5,f5,a5,d6,g6]!6", // Dm
  F: "[d5,f5,a5,d6,g6] ~@23", G: "e5@5 ~ d#5@5 ~, [g5,c6]@7 ~", H: "e5@11 ~ d#5@7 ~ [d#5,g5,c6]!4, [g5,c6]@3 ~",
  I: "[g5,c6,e6]@3 ~", // C
})).s("gm_trumpet").gain(0.17).pan(0.8)

// chords · brass section
const brass_section = note("<A ~@3 B ~@16 C D ~@14 C D ~@16 E F G H I>".pickRestart({
  A: "~@14 [b4,d5,g5]!10", B: "~@14 [g4,b4,g5]!10",
  C: "[c4,e5,g5,c6] ~ [c4,e5,g5,c6]!4 [b3,g5,c6,e6] ~ [b3,g5,c6,e6]!4 [a3,c6,e6,g6,a6] ~ [a3,c6,e6,g6]!4 [g#3,c6,d#6,g#6]!6", // C Cmaj7 Am7 G#
  D: "[c3,e6,g6,c7] ~@23", E: "f4 ~ f4!4 a4 ~ a4!4 d5 ~ d5!4 g5!6", F: "g5 ~@23", G: "c5@11 ~ c5@9 ~@3",
  H: "c5@10 ~@2 c5@6 ~@2 g5!4", I: "g5@3 ~",
})).s("gm_brass_section").gain(0.25).pan(0.2)

// chords · piano
const piano = note(`<
  A B C D E F G F H I@2 J@2 I@2 K L B@2 K M N O B@2 C@2 P Q R S Q T B U V T W O B@2 X Y P Z R AA Q AB B AC AD T AE AF AG
  AH AI@2 AJ
>`.pickRestart({
  A: "~@14 [b4,d5,g5]!10", // G
  B: "[e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~", // C
  C: "[e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~", // Em
  D: "[f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~", // F
  E: "[d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4,d5,g5]!10", // G
  F: "[g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~", // C
  G: "[g4,c5,e5] ~@23", // C
  H: "[g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,e5] ~", // C
  I: "[g4,b4,e5] ~ [g4,b4,e5] ~ [g4,b4,e5] ~ [g4,b4,e5] ~ [g4,b4,e5] ~ [g4,b4,e5] ~ [g4,b4,e5] ~ [g4,b4,e5] ~ [g4,b4,e5] ~ [g4,b4,e5] ~ [g4,b4,e5] ~ [g4,b4,e5] ~", // Em
  J: "[a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~", // F
  K: "[f4,a4,d5] ~ [f4,a4,d5] ~ [f4,a4,d5] ~ [f4,a4,d5] ~ [f4,a4,d5] ~ [f4,a4,d5] ~ [f4,a4,d5] ~ [f4,a4,d5] ~ [f4,a4,d5] ~ [f4,a4,d5] ~ [f4,a4,d5] ~ [f4,a4,d5] ~", // Dm
  L: "[f4,a4,d5] ~ [f4,a4,d5] ~ [f4,a4,d5] ~ [f4,a4,d5] ~ [f4,a4,d5] ~ [f4,a4,d5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~", // Dm F G
  M: "[f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~", // F G
  N: "[c3,c4] [e3,e4] [g3,g4] [g#3,g#4]", O: "[c4,c5] ~@23",
  P: "[c4,f4,a4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~", // F
  Q: "[d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~", // Dm
  R: "[d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~", // Em7
  S: "[d4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~", // G Em7 G Em7 G Em7
  T: "[c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [d4,f4,g4,b4] ~ [d4,f4,g4,b4] ~ [d4,f4,g4,b4] ~ [d4,f4,g4,b4] ~ [d4,f4,g4,b4] ~ [d4,f4,g4,b4] ~", // Dm7 G7
  U: "[e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,a4] ~ [e4,a4] ~ [e4,a4] ~ [e4,g4] ~ [e4,g4] ~ [e4,g4] ~", // Em A5 Em
  V: "[d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~", // Dm Dm7
  W: "[e4,g4,c5] ~@5 [e3,e4]@6 [g3,g4]@6 [g#3,g#4]@6, [c3,c4]@5 ~@19", // C E G G# C
  X: "[d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,g4,b4] ~ [d4,e4,g4,b4] ~", // Em7 G Em7 G Em7
  Y: "[d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~", // Em7 G Em7 G Em7 G
  Z: "[c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~", // Dm7 F Dm7
  AA: "[c#4,e4,g4,a4] ~ [c#4,e4,g4,a4] ~ [c#4,e4,g4,a4] ~ [c#4,e4,g4,a4] ~ [c#4,e4,g4,a4] ~ [c#4,e4,g4,a4] ~ [c#4,e4,g4,a4] ~ [c#4,e4,g4,a4] ~ [c#4,e4,g4,a4] ~ [c#4,e4,g4,a4] ~ [c#4,e4,g4,a4] ~ [c#4,e4,g4,a4] ~", // A7
  AB: "[c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,f4,a4] ~ [c4,d4,f4,a4] ~ [d4,f4,g4,b4] ~ [d4,f4,g4,b4] ~ [d4,f4,g4,b4] ~ [d4,f4,g4,b4] ~ [d4,f4,g4,b4] ~ [d4,f4,g4,b4] ~", // Dm7 F Dm7 G7
  AC: "[e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,a4] ~ [e4,g4,a4] ~ [e4,g4,a4] ~", // C Em A7
  AD: "[c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~", // Dm7
  AE: "[e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~", // C Em
  AF: "[e4,g4,a4] ~ [e4,g4,a4] ~ [e4,g4,a4] ~ [e4,g4,a4] ~ [e4,g4,a4] ~ [e4,g4,a4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~", // A7 Em
  AG: "[c4,d4,f4,a4] ~ [f4,a4]!2 [c4,d4,f4,a4]!3 ~ [f4,a4]!2 [c4,d4,f4,a4]!3 ~ [f4,a4] [c4,d4,f4,a4]!7 [f4,a4] [c4,f4,a4]", // Dm7 F Dm7 F Dm7 F Dm7 F
  AH: "[c4,d4,f4,a4] ~@23", // Dm7
  AI: "[c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,d#4,g4] ~ [c4,d#4,g4] ~ [c4,d#4,g4] ~ [c4,d#4,g4] ~ [c4,d#4,g4] ~ [c4,d#4,g4] ~", // C Cm
  AJ: "[c3,c4,e4,g4,b4]@19 ~@5", // Cmaj7
})).s("gm_piano").gain(0.14).pan(0.7)

// bass · fretless bass
const bass = note(`<
  ~ A B C D E F E@2 G H I J G K L M N O L P Q F R@2 G H S T G K L M N O L P Q F R@2 G H S J G U V W E X Y Z AA X AB AC
  AD AE AF
>`.pickRestart({
  A: "c2@18 ~@4 g2 ~", B: "e2@18 ~@4 e2 ~", C: "f2@18 ~@4 f2 ~", D: "g2@9 ~@2 g2", E: "c2@8 ~@2 g2 ~ c2@8 ~@2 g2 ~",
  F: "c2 ~@21 g2 ~", G: "e2@6 ~@4 b2@2 e2@7 ~@3 b2@2", H: "e2@7 ~@3 b2@2 e2@8 ~@2 e2 ~",
  I: "f2@7 ~@3 c3@2 f2@6 ~@4 c3@2", J: "f2@7 ~@3 c3 ~ f2@7 ~@3 f2 ~", K: "e2@8 ~@2 b2@2 e2@8 ~@2 e2 ~",
  L: "d2@9 ~ a2@2 d2@9 ~ a2@2", M: "d2@4 ~ d2 g2@4 ~ g2", N: "c2@9 ~ g2@2 c2@9 ~ g2@2",
  O: "c2@7 ~@3 g2@2 c2@7 ~@3 c2 ~", P: "d2@9 ~ a2@2 g1@7 ~@3 g2@2", Q: "c2@5 ~ b1@6 a1@5 ~ g#1@5 ~",
  R: "c2@3 ~@7 g2 ~ c2@3 ~@7 g2 ~", S: "f2@2 ~@3 c3 f2@3 ~@2 c3", T: "d2@7 ~@3 a2 ~ d2@7 ~@3 a2 ~",
  U: "a1@8 ~@2 e2@2 a1@9 ~ e2@2", V: "d2@3 ~@2 a1 d2@4 ~ a1", W: "d2@6 ~@4 d2@2 g1@8 ~@2 g1 ~",
  X: "c2@8 ~@2 g2 ~ c2@8 ~@2 c2 ~", Y: "d2@9 ~ a2 ~ d2@8 ~@2 d2@2", Z: "d2@9 ~ a2 ~ g1@9 ~ g2@2",
  AA: "c2@7 ~@3 g2 ~ c2@8 ~@2 g2@2", AB: "d2@5 ~ d2@5 ~ d2@5 ~ d2@4 ~@2", AC: "d2 ~@11", AD: "c2@9 ~ g2@2 d#2@9 ~ g2@2",
  AE: "c2@9 ~ g2 ~ d#2@8 ~@2 g2 ~", AF: "c2@19 ~@5",
})).s("gm_fretless_bass").gain(0.19)

// chords · percussive organ
const percussive_organ = note(`<
  ~ A B C D ~@2 E@2 F@2 G@2 F@2 H@2 I@2 J@2 ~ K I@2 L@2 C M L@2 N@2 O@2 P@2 Q R S@2 T@2 U@2 V W X@2 O@2 Y@2 O@2 Z AA
  AB@3
>`.pickRestart({
  A: "[g3,c4,e4]", B: "[g3,b3,e4]", C: "[a3,c4,f4]", D: "[g3,b3,d4,g4]@3 ~", E: "[c4,e4,g4]/2", F: "[e4,g4,b4]/2",
  G: "[c4,f4,a4]/2", H: "[~@2 c4 g4, d4@47 ~, [f4,a4]@9 b3@2 ~]/2", I: "[g3,c4,e4]/2",
  J: "[~@2 c4 [b3,g4], d4@47 ~, [f4,a4]@3 ~]/2", K: "[e4,g4,c5] ~@23", L: "[g3,b3,e4]/2", M: "[a3,d4,f4]",
  N: "[~@16 g3 ~@7 c4@12 [g3,b3]@12, d4, [f3,a3]@35 ~@13]/2", O: "[g3,b3,c4,e4]/2",
  P: "[~@2 c4 [g3,b3], d4, [f3,a3]@35 ~@13]/2", Q: "c4@5 ~ b3@6 a3@6 [d#3,g#3,c4]@5 ~, [g3,e4]@3 ~",
  R: "[c3,e3,g3] c4 ~@22", S: "[c4,e4,g4,a4]/2", T: "[b3,d4,e4,g4]/2", U: "[~ d4, [c4,f4,a4]]/2", V: "[b3,d4,e4,g4]",
  W: "[a3,c#4,e4,g4]", X: "[~@2 c4 [b3,g4], d4, [a3,f4]@35 ~@13]/2", Y: "[a3@2 c4 [b3,g4], d4, f4@35 ~@13]/2",
  Z: "[a3,c4,d4,f4]@23 ~", AA: "[b3,d4,g4] ~@23",
  AB: "[e4@11 ~ d#4@11 ~ e4@11 ~ d#4@10 ~@2 [c4,e4,b4]@19 ~@5, g4@67 ~@5, c5@23 ~ c5@22 ~@26]/3", // Cmaj7
})).s("gm_percussive_organ").gain(0.07)

// drums · kick
const kick = s("bd").struct("<~ A@5 B A@14 C B A@14 C B A@16 C B A@2 D>".pickRestart({
  A: "x ~@5 x ~@4 x", B: "x ~@10 x", C: "x", D: "x ~@2 x",
})).gain(0.3)

// drums · rim
const rim = s("rim").struct("<~ A@3 B A ~ A@14 ~@2 A@14 ~@2 A@16 ~@2 A@2 ~>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.3)

// drums · snare
const snare = s("sd").struct("<A B@3 C B D B@14 E D B@14 E D B@16 E D B F D>".pickRestart({
  A: "~@20 x!4", B: "~ x ~ x", C: "~@6 x ~@13 x!4", D: "x", E: "~@14 x!10", F: "~@6 x ~@11 x ~ x!4",
})).gain(0.3)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<A ~@3 A ~@16 B ~@15 B ~@17 B ~@4>".pickRestart({
  A: "~@14 x!6 ~@4", B: "~@2 x!5 ~ x!5 ~@11",
})).gain(0.2)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@3 B A C A@14 D C A E A E A E A E A E A E A E D C A F A F A F A F A F A F A F A F D C G H G
>`.pickRestart({
  A: "x!12", B: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!10", C: "x", D: "~@2 x!5 ~ x!5 ~ x!10",
  E: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~", F: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~", G: "x!10 ~@2",
  H: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@3 x!4",
})).gain(0.25)

// drums · open hat
const open_hat = s("oh").struct("<~@24 A ~ A ~ A ~ A ~ A ~ A ~ A ~@23>".pickRestart({
  A: "x",
})).gain(0.05)

// drums · crash
const crash = s("cr").struct("<~@6 A ~@15 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@17 A B C A>".pickRestart({
  A: "x", B: "x ~@4 x!2 ~@4 x", C: "x!2",
})).gain(0.2)

// drums · ride
const ride = s("rd").struct(`<
  ~@23 A B A B A B A B A B A B A B ~@2 C D C D C D C D C D C D C D C D ~@2 D E ~
>`.pickRestart({
  A: "x ~@2 x ~ x!2 ~@2 x!2 ~ x ~@2 x ~ x ~@3 x ~@2", B: "~@3 x ~@2 x ~@2 x!2 ~ x ~@4 x ~@3 x ~@2",
  C: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~", D: "x ~ x!3 ~ x ~ x!3 ~ x ~ x!3 ~ x ~ x!3 ~",
  E: "x ~ x!3 ~ x ~ x!3 ~ x ~ x!3 ~@7",
})).gain(0.2)

stack(trumpet, brass_section, piano, bass, percussive_organ, kick, rim, snare, snare_soft, hihat, open_hat, crash, ride)

More by Charles Aznavour