Strudelify

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 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
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: 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: "~@19 [b4,d5,g5]!3 ~ [b4,d5,g5]!3 ~ [b4,d5,g5]!3 ~ [b4,d5,g5]", B: "[c5,e5,g5,c6] ~@31",
  C: "c5 ~@2 c5!3 ~ c5 [c5,e5] ~@2 [c5,e5]!3 ~ [c5,e5] [c5,e5,g5] ~@2 [c5,e5,g5]!3 ~ [c5,e5] [c5,d#5,g#5]!2 ~ [c5,d#5,g#5]!3 ~ [c5,d#5,g#5]", // C G#
  D: "[e5,g5,c6] ~@31", // C
  E: "[d5,f5] ~@2 [d5,f5]!3 ~ [d5,f5] [d5,f5,a5] ~@2 [d5,f5,a5]!3 ~ [d5,f5,a5] [d5,f5,a5,d6] ~@2 [f5,a5,d6] [d5,f5,a5,d6]!2 ~ [d5,f5,a5,d6] [d5,f5,a5,d6,g6]!2 ~ [d5,f5,a5,d6,g6]!3 ~ [d5,f5,a5,d6,g6]", // Dm
  F: "[d5,f5,a5,d6,g6] ~@31", G: "e5@14 ~@2 d#5@13 ~@3, [g5,c6]@29 ~@3",
  H: "e5@14 ~@2 d#5@9 ~@2 [d#5,g5,c6]!3 ~ [d#5,g5,c6], [g5,c6]@25 ~@7", I: "[g5,c6,e6]@25 ~@7",
})).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: "~@19 [b4,d5,g5]!3 ~ [b4,d5,g5]!3 ~ [b4,d5,g5]!3 ~ [b4,d5,g5]", // G
  B: "~@19 [g4,b4,g5]!3 ~ [g4,b4,g5]!3 ~ [g4,b4,g5]!3 ~ [g4,b4,g5]", // G
  C: "[c4,e5,g5,c6] ~@2 [c4,e5,g5,c6]!3 ~ [c4,e5,g5,c6] [b3,g5,c6,e6] ~@2 [b3,g5,c6,e6]!3 ~ [b3,g5,c6,e6] [a3,c6,e6,g6,a6] ~@2 [a3,c6,e6,g6]!3 ~ [a3,c6,e6,g6] [g#3,c6,d#6,g#6]!2 ~ [g#3,c6,d#6,g#6]!3 ~ [g#3,c6,d#6,g#6]", // C Cmaj7 Am7 G#
  D: "[c3,e6,g6,c7] ~@31", E: "f4 ~@2 f4!4 a4 ~@3 a4!4 ~ d5 ~ d5 ~ d5!3 ~ g5!2 ~ g5!4 ~", F: "g5 ~@31",
  G: "c5@15 ~ c5@12 ~@4", H: "c5@14 ~@2 c5@9 ~@2 g5!3 ~ g5", I: "g5@25 ~@7",
})).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: "~@19 [b4,d5,g5]!3 ~ [b4,d5,g5]!3 ~ [b4,d5,g5]!3 ~ [b4,d5,g5]", // G
  B: "[e4,g4,c5] ~@2 [e4,g4,c5] ~ [e4,g4,c5] ~@2 [e4,g4,c5] ~@2 [e4,g4,c5] ~ [e4,g4,c5] ~@2 [e4,g4,c5] ~@2 [e4,g4,c5] ~ [e4,g4,c5] ~@2 [e4,g4,c5] ~@2 [e4,g4,c5] ~ [e4,g4,c5] ~@2", // C
  C: "[e4,g4,b4] ~@2 [e4,g4,b4] ~ [e4,g4,b4] ~@2 [e4,g4,b4] ~@2 [e4,g4,b4] ~ [e4,g4,b4] ~@2 [e4,g4,b4] ~@2 [e4,g4,b4] ~ [e4,g4,b4] ~@2 [e4,g4,b4] ~@2 [e4,g4,b4] ~ [e4,g4,b4] ~@2", // Em
  D: "[f4,a4,c5] ~@2 [f4,a4,c5] ~ [f4,a4,c5] ~@2 [f4,a4,c5] ~@2 [f4,a4,c5] ~ [f4,a4,c5] ~@2 [f4,a4,c5] ~@2 [f4,a4,c5] ~ [f4,a4,c5] ~@2 [f4,a4,c5] ~@2 [f4,a4,c5] ~ [f4,a4,c5] ~@2", // F
  E: "[d4,g4,b4] ~@2 [d4,g4,b4] ~ [d4,g4,b4] ~@2 [d4,g4,b4] ~@2 [d4,g4,b4] ~ [d4,g4,b4] ~@2 [d4,g4,b4] ~@2 [d4,g4,b4,d5,g5]!3 ~ [d4,g4,b4,d5,g5]!3 ~ [d4,g4,b4,d5,g5]!3 ~ [d4,g4,b4,d5,g5]", // G
  F: "[g4,c5,e5] ~@2 [g4,c5,e5] ~ [g4,c5,e5] ~@2 [g4,c5,e5] ~@2 [g4,c5,e5] ~ [g4,c5,e5] ~@2 [g4,c5,e5] ~@2 [g4,c5,e5] ~ [g4,c5,e5] ~@2 [g4,c5,e5] ~@2 [g4,c5,e5] ~ [g4,c5,e5] ~@2", // C
  G: "[g4,c5,e5] ~@31", // C
  H: "[g4,c5,e5] ~@2 [g4,c5,e5] ~ [g4,c5,e5] ~@2 [g4,c5,e5] ~@2 [g4,c5,e5] ~ [g4,c5,e5] ~@2 [g4,c5,e5] ~@2 [g4,c5,e5] ~ [g4,c5,e5] ~@2 [g4,c5,e5] ~@2 [g4,c5,e5] ~ [g4,e5] ~@2", // C
  I: "[g4,b4,e5] ~@2 [g4,b4,e5] ~ [g4,b4,e5] ~@2 [g4,b4,e5] ~@2 [g4,b4,e5] ~ [g4,b4,e5] ~@2 [g4,b4,e5] ~@2 [g4,b4,e5] ~ [g4,b4,e5] ~@2 [g4,b4,e5] ~@2 [g4,b4,e5] ~ [g4,b4,e5] ~@2", // Em
  J: "[a4,c5,f5] ~@2 [a4,c5,f5] ~ [a4,c5,f5] ~@2 [a4,c5,f5] ~@2 [a4,c5,f5] ~ [a4,c5,f5] ~@2 [a4,c5,f5] ~@2 [a4,c5,f5] ~ [a4,c5,f5] ~@2 [a4,c5,f5] ~@2 [a4,c5,f5] ~ [a4,c5,f5] ~@2", // F
  K: "[f4,a4,d5] ~@2 [f4,a4,d5] ~ [f4,a4,d5] ~@2 [f4,a4,d5] ~@2 [f4,a4,d5] ~ [f4,a4,d5] ~@2 [f4,a4,d5] ~@2 [f4,a4,d5] ~ [f4,a4,d5] ~@2 [f4,a4,d5] ~@2 [f4,a4,d5] ~ [f4,a4,d5] ~@2", // Dm
  L: "[f4,a4,d5] ~@2 [f4,a4,d5] ~ [f4,a4,d5] ~@2 [f4,a4,d5] ~@2 [f4,a4,d5] ~ [f4,a4,d5] ~@2 [f4,a4,c5] ~@2 [f4,a4,c5] ~ [f4,a4,c5] ~@2 [g4,b4,d5] ~@2 [g4,b4,d5] ~ [g4,b4,d5] ~@2", // Dm F G
  M: "[f4,a4,c5] ~@2 [f4,a4,c5] ~ [f4,a4,c5] ~@2 [f4,a4,c5] ~@2 [f4,a4,c5] ~ [f4,a4,c5] ~@2 [d4,g4,b4] ~@2 [d4,g4,b4] ~ [d4,g4,b4] ~@2 [d4,g4,b4] ~@2 [d4,g4,b4] ~ [d4,g4,b4] ~@2", // F G
  N: "[c3,c4] [e3,e4] [g3,g4] [g#3,g#4]", O: "[c4,c5] ~@31",
  P: "[c4,f4,a4] ~@2 [c4,f4,a4] ~ [c4,f4,a4] ~@2 [c4,f4,a4] ~@2 [c4,f4,a4] ~ [c4,f4,a4] ~@2 [c4,f4,a4] ~@2 [c4,f4,a4] ~ [c4,f4,a4] ~@2 [c4,f4,a4] ~@2 [c4,f4,a4] ~ [c4,f4,a4] ~@2", // F
  Q: "[d4,f4,a4] ~@2 [d4,f4,a4] ~ [d4,f4,a4] ~@2 [d4,f4,a4] ~@2 [d4,f4,a4] ~ [d4,f4,a4] ~@2 [d4,f4,a4] ~@2 [d4,f4,a4] ~ [d4,f4,a4] ~@2 [d4,f4,a4] ~@2 [d4,f4,a4] ~ [d4,f4,a4] ~@2", // Dm
  R: "[d4,e4,g4,b4] ~@2 [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~@2 [d4,e4,g4,b4] ~@2 [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~@2 [d4,e4,g4,b4] ~@2 [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~@2 [d4,e4,g4,b4] ~@2 [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~@2", // Em7
  S: "[d4,g4,b4] ~@2 [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~@2 [d4,e4,g4,b4] ~@2 [d4,g4,b4] ~ [d4,e4,g4,b4] ~@2 [d4,e4,g4,b4] ~@2 [d4,g4,b4] ~ [d4,g4,b4] ~@2 [d4,e4,g4,b4] ~@2 [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~@2", // G Em7 G Em7 G Em7
  T: "[c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~@2 [d4,f4,g4,b4] ~@2 [d4,f4,g4,b4] ~ [d4,f4,g4,b4] ~@2 [d4,f4,g4,b4] ~@2 [d4,f4,g4,b4] ~ [d4,f4,g4,b4] ~@2", // Dm7 G7
  U: "[e4,g4,b4] ~@2 [e4,g4,b4] ~ [e4,g4,b4] ~@2 [e4,g4,b4] ~@2 [e4,g4,b4] ~ [e4,g4,b4] ~@2 [e4,a4] ~@2 [e4,a4] ~ [e4,a4] ~@2 [e4,g4] ~@2 [e4,g4] ~ [e4,g4] ~@2", // Em A5 Em
  V: "[d4,f4,a4] ~@2 [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~@2", // Dm Dm7
  W: "[e4,g4,c5] ~@7 [e3,e4]@8 [g3,g4]@8 [g#3,g#4]@8, [c3,c4]@7 ~@25", // C E G G# C
  X: "[d4,e4,g4,b4] ~@2 [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~@2 [d4,e4,g4,b4] ~@2 [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~@2 [d4,e4,g4,b4] ~@2 [d4,e4,g4,b4] ~ [d4,g4,b4] ~@2 [d4,e4,g4,b4] ~@2 [d4,g4,b4] ~ [d4,e4,g4,b4] ~@2", // Em7 G Em7 G Em7
  Y: "[d4,e4,g4,b4] ~@2 [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~@2 [d4,e4,g4,b4] ~@2 [d4,g4,b4] ~ [d4,e4,g4,b4] ~@2 [d4,e4,g4,b4] ~@2 [d4,e4,g4,b4] ~ [d4,g4,b4] ~@2 [d4,e4,g4,b4] ~@2 [d4,g4,b4] ~ [d4,g4,b4] ~@2", // Em7 G Em7 G Em7 G
  Z: "[c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~@2 [c4,f4,a4] ~ [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~@2", // Dm7 F Dm7
  AA: "[c#4,e4,g4,a4] ~@2 [c#4,e4,g4,a4] ~ [c#4,e4,g4,a4] ~@2 [c#4,e4,g4,a4] ~@2 [c#4,e4,g4,a4] ~ [c#4,e4,g4,a4] ~@2 [c#4,e4,g4,a4] ~@2 [c#4,e4,g4,a4] ~ [c#4,e4,g4,a4] ~@2 [c#4,e4,g4,a4] ~@2 [c#4,e4,g4,a4] ~ [c#4,e4,g4,a4] ~@2", // A7
  AB: "[c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~@2 [c4,f4,a4] ~ [c4,d4,f4,a4] ~@2 [d4,f4,g4,b4] ~@2 [d4,f4,g4,b4] ~ [d4,f4,g4,b4] ~@2 [d4,f4,g4,b4] ~@2 [d4,f4,g4,b4] ~ [d4,f4,g4,b4] ~@2", // Dm7 F Dm7 G7
  AC: "[e4,g4,c5] ~@2 [e4,g4,c5] ~ [e4,g4,c5] ~@2 [e4,g4,c5] ~@2 [e4,g4,c5] ~ [e4,g4,c5] ~@2 [e4,g4,b4] ~@2 [e4,g4,b4] ~ [e4,g4,b4] ~@2 [e4,g4,a4] ~@2 [e4,g4,a4] ~ [e4,g4,a4] ~@2", // C Em A7
  AD: "[c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~@2", // Dm7
  AE: "[e4,g4,c5] ~@2 [e4,g4,c5] ~ [e4,g4,c5] ~@2 [e4,g4,c5] ~@2 [e4,g4,c5] ~ [e4,g4,c5] ~@2 [e4,g4,b4] ~@2 [e4,g4,b4] ~ [e4,g4,b4] ~@2 [e4,g4,b4] ~@2 [e4,g4,b4] ~ [e4,g4,b4] ~@2", // C Em
  AF: "[e4,g4,a4] ~@2 [e4,g4,a4] ~ [e4,g4,a4] ~@2 [e4,g4,a4] ~@2 [e4,g4,a4] ~ [e4,g4,a4] ~@2 [e4,g4,b4] ~@2 [e4,g4,b4] ~ [e4,g4,b4] ~@2 [e4,g4,b4] ~@2 [e4,g4,b4] ~ [e4,g4,b4] ~@2", // A7 Em
  AG: "[c4,d4,f4,a4] ~@2 [f4,a4]!2 [c4,d4,f4,a4] ~ [c4,d4,f4,a4]!2 ~@2 [f4,a4]!2 [c4,d4,f4,a4] ~ [c4,d4,f4,a4]!2 ~@2 [f4,a4] [c4,d4,f4,a4]!2 ~ [c4,d4,f4,a4]!3 ~ [c4,d4,f4,a4]!2 [f4,a4] ~ [c4,f4,a4]", // Dm7 F Dm7 F Dm7 F Dm7 F
  AH: "[c4,d4,f4,a4] ~@31", // Dm7
  AI: "[c4,e4,g4] ~@2 [c4,e4,g4] ~ [c4,e4,g4] ~@2 [c4,e4,g4] ~@2 [c4,e4,g4] ~ [c4,e4,g4] ~@2 [c4,d#4,g4] ~@2 [c4,d#4,g4] ~ [c4,d#4,g4] ~@2 [c4,d#4,g4] ~@2 [c4,d#4,g4] ~ [c4,d#4,g4] ~@2", // C Cm
  AJ: "[c3,c4,e4,g4,b4]@13 ~@3", // 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 K L M N O P Q R S F T@2 G H U V K L M N O P Q R S F T@2 G H U J K W X Y Z AA AB AC AD AE AF
  AG AH AI AJ
>`.pickRestart({
  A: "c2@24 ~@5 g2@2 ~", B: "e2@24 ~@5 e2@2 ~", C: "f2@24 ~@5 f2 ~@2", D: "g2@24 ~@5 g2@3",
  E: "c2@11 ~@2 g2 ~@2 c2@11 ~@2 g2 ~@2", F: "c2 ~@28 g2 ~@2", G: "e2@8 ~@5 b2@2 ~ e2@10 ~@3 b2@2 ~",
  H: "e2@10 ~@3 b2@2 ~ e2@11 ~@2 e2@2 ~", I: "f2@10 ~@3 c3@2 ~ f2@8 ~@5 c3@2 ~", J: "f2@9 ~@4 c3@2 ~ f2@9 ~@4 f2@2 ~",
  K: "e2@8 ~@5 b2@2 ~ e2@9 ~@4 b2@2 ~", L: "e2@11 ~@2 b2@2 ~ e2@10 ~@3 e2@2 ~", M: "d2@12 ~ a2@2 ~ d2@13 a2@2 ~",
  N: "d2@10 ~@3 d2@3 g2@10 ~@3 g2@2 ~", O: "c2@12 ~ g2@3 c2@12 ~ g2@3", P: "c2@10 ~@3 g2@2 ~ c2@9 ~@4 c2@2 ~",
  Q: "d2@12 ~ a2@2 ~ d2@11 ~@2 a2@2 ~", R: "d2@12 ~ a2@2 ~ g1@9 ~@4 g2@2 ~", S: "c2@7 ~ b1@8 a1@7 ~ g#1@7 ~",
  T: "c2@4 ~@9 g2 ~@2 c2@4 ~@9 g2 ~@2", U: "f2@6 ~@7 c3@2 ~ f2@8 ~@5 c3@2 ~", V: "d2@9 ~@4 a2@2 ~ d2@9 ~@4 a2@2 ~",
  W: "a1@11 ~@2 e2@2 ~ a1@12 ~ e2@2 ~", X: "d2@9 ~@4 a1@2 ~ d2@10 ~@3 a1@2 ~", Y: "d2@9 ~@4 d2@2 ~ g1@11 ~@2 g1@2 ~",
  Z: "c2@10 ~@3 g2@2 ~ c2@11 ~@2 g2@2 ~", AA: "c2@11 ~@2 g2@2 ~ c2@10 ~@3 c2@2 ~",
  AB: "d2@12 ~ a2@2 ~ d2@11 ~@2 d2@2 ~", AC: "d2@12 ~ a2@2 ~ g1@13 g2@2 ~", AD: "c2@9 ~@4 g2@2 ~ c2@10 ~@3 g2@2 ~",
  AE: "c2@12 ~ g2@2 ~ c2@10 ~@3 c2@2 ~", AF: "d2@7 ~ d2@7 ~ d2@7 ~ d2@6 ~@2", AG: "d2 ~@15",
  AH: "c2@12 ~ g2@2 ~ d#2@12 ~ g2@2 ~", AI: "c2@12 ~ g2@2 ~ d#2@11 ~@2 g2@2 ~", AJ: "c2@13 ~@3",
})).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: "[~@32 c4@15 ~ b3@11 ~@5, d4@63 ~, [f4,a4]@47 g4@16 ~]/2", I: "[g3,c4,e4]/2",
  J: "[~@32 c4@15 ~ g4@16, d4@63 ~, [f4,a4]@47 b3@16 ~]/2", K: "[g4,c5] ~@15, e4 ~@31", L: "[g3,b3,e4]/2",
  M: "[a3,d4,f4]", N: "[~@21 g3 ~@10 c4@16 [g3,b3]@16, d4, [f3,a3]@47 ~@17]/2", O: "[g3,b3,c4,e4]/2",
  P: "[~@2 c4 [g3,b3], d4, [f3,a3]@47 ~@17]/2", Q: "c4@7 b3@8 ~ a3@8 [d#3,g#3,c4]@7 ~, [g3,e4]@3 ~",
  R: "[c3,e3,g3]@2 c4 ~@29", 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]@47 ~@17]/2", Y: "[a3@2 c4 [b3,g4], d4, f4@47 ~@17]/2",
  Z: "[a3,c4,d4,f4]@31 ~", AA: "[b3,d4,g4] ~@31",
  AB: "[e4@15 ~ d#4@15 ~ e4@15 ~ d#4@13 ~@3 [c4,e4,b4]@26 ~@6, g4@89 ~@7, c5@31 ~ c5@29 ~@35]/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 ~@15 x ~@12 x ~@2", B: "x ~@28 x ~@2", 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: "~@26 x ~ x!3 ~", B: "~ x ~ x", C: "~@8 x ~@17 x ~ x!3 ~", D: "x", E: "~@18 x ~ x!3 ~ x!3 ~ x!3 ~",
  F: "~@8 x ~@15 x ~ x ~ x!3 ~",
})).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: "~@18 x ~ x!3 ~ x!2 ~@6", B: "~@2 x ~ x!3 ~ x ~ x ~ x!3 ~ x ~@15",
})).gain(0.2)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@3 B A C A@9 D A@4 E C A F A F A F A F A G A F A F E C A H A H A H A H A H A H A H A H E C I J I
>`.pickRestart({
  A: "x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2",
  B: "x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~ x!3 ~ x!3 ~ x!3 ~", C: "x",
  D: "x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~ x ~@2",
  E: "~@2 x ~ x!3 ~ x ~ x ~ x!3 ~ x ~ x ~ x!3 ~ x!3 ~ x!3 ~",
  F: "x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~ x!2 ~@2 x ~ x ~@2 x ~@2",
  G: "x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~ x!2 ~@2 x ~@2 x ~ x ~@2",
  H: "x ~ x ~ x!2 ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2",
  I: "x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@7",
  J: "x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@4 x ~ x!3 ~",
})).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 ~@12 x ~@2 x ~@12 x ~@2", C: "x!2",
})).gain(0.2)

// drums · ride
const ride = s("rd").struct(`<
  ~@23 A B C B C B C B C B C B C B ~@2 D E D E D E D E D E D E D E D E ~@2 E F ~
>`.pickRestart({
  A: "x ~@3 x ~@2 x!2 ~@3 x!2 ~@2 x ~@3 x ~ x ~@5 x ~@3", B: "~@4 x ~@3 x ~@3 x!2 ~@2 x ~@5 x ~@5 x ~@3",
  C: "x ~@3 x ~ x ~ x ~@3 x!2 ~@2 x ~@3 x ~ x ~@5 x ~@3",
  D: "x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x!3 ~@2 x ~@2",
  E: "x ~ x ~ x!2 ~@2 x ~ x ~ x!2 ~@2 x ~ x ~ x!2 ~@2 x ~ x ~ x!2 ~@2",
  F: "x ~ x ~ x!2 ~@2 x ~ x ~ x!2 ~@2 x ~ x ~ x!2 ~@10",
})).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