Strudelify

Allo ! maman, bobo

Alain Souchon

KeyE minorTempo60 bpm
0:00/0:00
// Allo ! maman, bobo — Alain Souchon
// 60 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: ch 2 "Basse" named as a bass, played on electric bass finger (its piano patch is not one); ch 3 "AcGuitr" named as a guitar, played on electric guitar clean (its piano patch is not one); ch 5 "GuitHaw" named as a guitar, played on electric guitar clean (its piano patch is not one)
// note: Full arrangement: all 50 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(60/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.

// bass · electric bass finger · "Basse"
const bass = note(`<
  ~ A B C D E F G H I J K L K M E N O P Q R K S T U V W V X Y Z K AA K AB AC AD AE AF AG AH K AI K AJ K AK AL@2 ~
>`.pickRestart({
  A: "g2@13 ~ g2@2 b2@13 ~ b2@2", B: "c3@7 g2 c3@4 c3@2 b2@2", C: "a2@14 a2@2 b2@13 ~@3", D: "e3@7 ~ d3@4 e4@2 ~@2",
  E: "g2@7 ~ g2@7 g2", F: "c3@7 ~ c3@7 ~", G: "g2@7 d2 g2@7 ~", H: "c3@7 ~ c3@4 c3@2 b2@2", I: "a2@7 a2 b2@4 b3@4",
  J: "~@6 e3@2 d3@5 ~ d3@2 g2@8 g3@7 ~", K: "a2@13 ~ a2@2 b2@13 ~ b2@2", L: "e2@13 ~ e2@2 e2@10 e3@6",
  M: "e2@13 ~ e2 ~ e2@4 e3@4 d3@6 f2@2, ~@24 e3 ~@7", N: "c3@12 d4@8 c4@9 ~@3", O: "g2@14 ~@2 g2@13 ~ g2@2",
  P: "c3@7 g2 c3@6 b2@2", Q: "a2@13 ~ a2@2 b2@8 b3@8", R: "e3@3 e3 ~@3 d3 g3@5 d3 g3 d3",
  S: "e2@14 b2@2 e3@6 b2@4 e2@3 ~ e2@2", T: "a2@13 ~ a2@2 b2@13 ~ b2 ~", U: "e2@7 e2 e2@4 e3@2 d3@2",
  V: "g2@7 ~ g2@6 g3@2", W: "c3@7 ~ c3@3 d4@3 c4@2", X: "c3@7 ~ c3@6 b2@2", Y: "a2@6 a3@2 b2@5 b3@2 d#3",
  Z: "e3@6 e3@2 d3@8 g2@10 d2@2 g2@3 ~", AA: "e2@14 b1@2 e2@13 ~ e2@2", AB: "e2@12 b2@3 ~ b2@8 e3@4 d3@4",
  AC: "g2@5 a3@3 g3@5 ~@2 g2", AD: "c3@10 g3@2 d4@4 c4@10 g3@3 ~ c3 ~", AE: "g2@14 d2 g2",
  AF: "c3@10 d4@5 ~ c4@9 ~@3 c3@4", AG: "a2@7 a2 b2@3 b3@4 ~", AH: "e3@6 e3@2 d3@5 ~ d3@2 g2@8 g3@6 g2@2",
  AI: "e2@14 e3@2 e2@9 ~ e2@6", AJ: "e2@14 b1@2 e2@6 e3@4 b2@3 ~ g#2@2", AK: "e2@10 b2@3 ~ e3@2 e3@6 b2@4 e2@4 e2 ~",
  AL: "[a2@13 ~ a2@2 b2@14 ~ b2@2 e2@11 b2@4 ~ e3@2 e3 ~@12]/2",
})).s("gm_electric_bass_finger").gain(0.3)

// bass · electric bass finger · "Basse" · soft notes
const bass_soft = note("<~@3 A B C D E F ~ G ~@4 C H C ~@2 I ~@4 C F C F ~@6 J ~@2 K L ~@10>".pickRestart({
  A: "~@15 b2", B: "~@14 e3@2 ~@12 d4@3 ~", C: "~@7 d2 ~@8", D: "~@7 g2 ~@7 c3", E: "~@15 g2", F: "~@7 g2 ~@8",
  G: "e3@6 ~@24 g2 ~", H: "~@28 g3@2 c3 ~", I: "~@8 d3@5 ~@19", J: "~@26 d3@3 ~@3", K: "~@6 g3 ~", L: "~@15 d#3",
})).s("gm_electric_bass_finger").gain(0.2)

// chords · electric guitar clean · "AcGuitr"
const electric_guitar_clean = note(`<
  ~ A@3 B C@2 D@2 E F@2 G H I J K@3 L M N O P Q R S@2 T@2 U V@2 W X Y Z@3 AA AB AC AD AE AF AG AH@2 AI@2
>`.pickRestart({
  A: "[b3@4 ~@10 d3@2 ~@14 d4 ~@15 c4@2 ~@12 c4@2 ~@2 a3 ~@11 a3@2 [c4,d4] ~@13 f#3@2 b3 ~, ~@4 g3@7 ~ g3@6 d3@7 ~ d3@5 ~@3 e3@6 ~@2 e3@7 ~ e3@6 e3@4 ~@2 e3@4 e3@7 ~ e3@5 ~@3 d#3@6 ~@2 d#3@4 ~@2, ~@6 b3@24 ~@2 c4@13 ~@3 c4@6 ~@10 c4@6 ~@10 b3@13 ~@3, ~@16 d4@4 g3@7 ~ g3@7 ~ g3@7 ~ g3@7 ~ g3@5 ~ g3@4 ~@6 a3@7 ~@9 f#3@6 ~@6, ~@22 d4@7 ~@9 d4@7 ~@9 d4@5 ~@11 d4@7 ~@9 d#4@7 ~@3]/3", // Csus2
  B: "~@12 g3@3 ~ [f#3,a3]@4 g3@4 [d3,f#3]@3 ~ [c3,e3]@2 ~@2, b3@15 ~@17, ~@2 e3@7 ~ e3@6 ~@16, ~@4 g3@7 ~@21, ~@6 d4@7 ~@19", // F#m D C
  C: "[b3@4 ~@10 b3 ~@15 d4 ~@23 d4@4 e3@2 ~@2 e3@2, ~@4 g3@6 d3@6 b3@4 g3@7 ~ g3@7 ~ g3@7 ~ g3@7 ~ g3@11 ~, ~@6 d4@16 d4@7 ~@3 c4@6 d4@7 ~@3 c4@7 ~@5 c4@4, ~@12 g3@5 ~ d3@7 ~ d3@6 ~@2 e3@7 ~ e3@7 ~ e3@7 ~@7]/2",
  D: "[~@13 d3 d4 d3 ~@7 c4 ~@3 d4@2 e3 c4 e3, b3@12 g3@7 ~ g3@15 ~ g3@7 ~ g3@7 ~ g3@11 ~, ~@4 g3@6 d3@7 ~ d3@7 ~@9 e3@7 ~ e3@7 ~ e3@6 ~@8, ~@6 d4@9 ~ d4@11 ~@11 d4@7 ~@19, ~@22 b3@9 ~ c4@7 ~@9 c4@6 ~@10]/2",
  E: "~@12 a3@3 ~@7 d#4@4 ~@2 f#3@2 b3 ~, c4@13 ~@3 b3@13 ~@3, ~@2 e3@7 ~ e3@5 ~@3 d#3@7 ~ d#3@4 ~@2, ~@4 a3@7 ~@9 f#3@7 ~@5, ~@6 d4@7 ~@19",
  F: "[b3@2 ~@2 g3@2 b3@2 ~@4 f#3@2 d4 ~@29 g3@2 c4 ~@7 d#4@4 ~@2 f#3@2 d#4 ~, ~@2 e3@6 a3@7 ~ b3@4 g3@7 ~ g3@7 ~ g3@7 ~@9 f#3@6 ~@6, ~@10 d3@7 ~ d3@7 ~ d3@5 ~@3 e3@7 ~ e3@6 ~@2 d#3@7 ~ d#3@4 ~@2, ~@22 d4@7 ~@3 c4@6 d4@7 ~@3 b3@4 ~@12]/2",
  G: "b3@2 ~@4 f#3@4 e3@2 ~@2 e3@2 b3@2 ~@8 e3@2 b3@2 e3 ~, ~@2 e3@7 ~@3 f#3@8 g3@7 ~@5, ~@4 g3@11 ~@3 e3@7 ~@7, ~@11 f#3@4 ~",
  H: "g3@2 ~@10 g3@2 c4 ~ b3@2 ~@4 d#4@4 ~@2 f#3@3 ~, c4@13 ~@19, ~@2 e3@7 ~ e3@5 ~@3 d#3@7 ~ d#3@4 ~@2, ~@4 g3@7 ~@9 f#3@7 ~@5, ~@6 d4@7 ~@19",
  I: "~@6 b3@2 ~@4 g3@7 ~ g3@2 b3@2 f#3@2 ~@2 f#3@2 d4 ~, e3@9 ~@17 d3@6, ~@2 f#3@11 ~@19, ~@4 g3@6 ~@14 a3@7 ~",
  J: "[g3,b3]@2 ~@20 a3@4 d3@2 ~@2 d3 ~, ~@4 g3@6 d3@7 ~ d3@7 ~@7, ~@3 d4@13, ~@3 a3 b3 ~@2 b3, ~@14 g3@5 ~ g3@11 ~", // G
  K: "[g3@2 ~@8 e3@2 ~@2 e3@2 ~@6 d4@4 e3@2 c4@2 e3@2 ~@6 g3@4 ~@6 b3@4 ~@12 d4@6 ~@4 e3@3 ~ e3@2 ~@6 d4@4 e3@2 c4@2 e3 ~, c4@11 ~ c4@4 c4@7 ~@9 b3@4 a3@9 ~ a3@7 ~ b3@10 e3@2 ~@16 e3@7 ~@7, ~@2 e3@4 d4@7 ~@21 d3@7 ~ d3@7 ~@9 a3@9 ~@3 c4@9 ~ c4@10 ~@6, ~@4 g3@15 ~ g3@16 ~@8 g3@7 ~ g3@7 ~ g3@23 ~ g3@11 ~]/3",
  L: "~@6 d4@4 ~@2 g3@2 c4 ~ f#3@2 ~@4 d#4@4 ~@2 f#3@3 ~, g3@12 ~@8 f#3@7 ~@5, c4@7 ~@9 b3@12 ~@4, ~@2 e3@7 ~ e3@5 ~@3 d#3@7 ~ d#3@4 ~@2, ~@2 a3@5 ~@9",
  M: "b3@2 ~@2 g3@2 b3@2 ~@6 f#3 ~ g3@2 ~@10 d4@2 d3@2, ~@2 e3@6 a3@4 d4@4 ~@4 g3@4 d3@5 ~@3, ~@10 d3@7 ~ d3@4 b3@4 g3@6",
  N: "~@6 d4@4 e3@2 c4@2 e3@2 ~@6 d#4@4 d#3@2 f#3@2 d#3 ~, c4@4 g3@11 ~ b3@4 f#3@6 ~@6, ~@2 e3@7 ~@9 d#3@7 ~@7",
  O: "~@7 e3 ~@5 e3 ~ e3, f#3@9 ~ f#3@9 ~@3 f#3@8 ~@2, ~@2 e3@12 ~@4 e3@7 ~@7, ~@4 b3@12 b3@11 ~ b3@4, ~@3 g3@5 ~@2 g3@4 ~@2",
  P: "g3 ~@2 d4@2 e3 c4 e3 ~@3 d#4@2 ~ f#3 b3, c4@7 ~@9 b3@4 ~@12, ~@2 e3@7 ~@9 d#3@7 ~ d#3@4 ~@2, ~@2 g3@5 ~@3 f#3@3 ~@3",
  Q: "~@3 b3@3 ~@3 e3 b3 e3 ~@2 f#3 d4, e3@9 ~@17 d3@6, ~@2 f#3@9 ~@3 f#3@10 ~@8, ~@4 g3@5 ~@3 g3@8 ~@4 a3@7 ~",
  R: "~@5 d3 b3 d3 ~@3 b3@2 d3 ~ d3, b3@4 g3@13 ~@3 g3@12, ~@2 d3@7 ~@9 d3@7 ~@7, ~@6 d4@9 ~ a3@6 ~@6 b3@4",
  S: "[~@5 e3 ~ e3 ~@3 c4@2 e3 c4 e3 b3 ~@4 d3 ~@7 d3 b3 ~, c4@4 g3@7 ~ g3@7 ~ g3@17 ~ g3@10 a3@12 ~@4, ~@2 e3@7 ~@9 e3@7 ~@9 d3@7 ~@3 d4@8 d3@4 ~@8, ~@6 c4@10 d4@6 ~@14 a3@10 d3@4 g3@11 ~@3, ~@54 d4@9 ~]/2",
  T: "[~@6 d4@4 e3@2 c4@2 e3@2 ~@8 e3@4 ~@2 e3@3 ~@11 a3@2 c4 ~ b3@2 ~@4 d#4@4 ~@2 f#3@2 b3@2, c4@9 ~@7 c4@6 d4@6 c4@17 ~@7 f#3@6 ~@6, ~@2 e3@7 ~@9 e3@6 ~@10 e3@4 e4@7 ~@19, ~@4 g3@15 ~ g3@11 ~@5 a3@6 e3@6 ~@2 d#3@7 ~ d#3@5 ~]/2",
  U: "~@4 g3@2 b3@2 ~@2 d3@2 d4@2 d3@2 ~@2 d3@2 g3@2 b3@2 ~@4 d3@2 g3 ~, b3@5 ~@3 a3@7 ~ b3@4 ~@6 b3@4 ~@2, ~@2 e3@7 ~@13 [d3,g3]@7 ~@3", // G5
  V: "[~@12 c4@2 e3@2 ~@6 d#4@4 d#3@2 ~@2 d#3 ~@7 f#3@4 e3@2 ~@2 e3@2 b3@2 ~@4 f#3@4 ~@2 f#3@2 b3@2, c4@10 a3@5 ~ b3@4 f#3@6 ~@2 f#3@7 ~ g3@11 ~@3 e3@7 ~ e3@6, ~@2 e3@4 e4@5 ~@21 b3@4 ~@28, ~@4 a3@4 e3@5 ~@5 d#3@7 ~@9 e3@7 ~@3 f#3@7 ~ g3@9 ~@3]/2",
  W: "~@6 d4@4 e3@2 c4@2 e3@2 b3@4 ~@2 d#4@6 f#3@3 ~, c4@7 ~@25, ~@2 e3@7 ~@23, ~@2 g3@5 ~@3 f#3@3 ~@3",
  X: "~@6 b3@2 ~@2 e3@2 ~@2 e3@2 b3@4 g3@3 ~@5 f#3@2 a3 ~, e3@9 ~@17 d3@6, ~@2 f#3@10 g3@4 ~@8 a3@5 ~@3",
  Y: "~@14 g3@2 ~@10 d3@4 d4 ~, b3@4 ~@2 d4@14 a3@11 ~, ~@2 d3@7 ~@3 a3@4 d3@9 ~@7, ~@18 g3@9 ~@5, ~@22 d4@7 ~@3",
  Z: "[~@5 e3 ~ e3 ~@3 c4@2 e3 d4 e3 b3 ~@4 d3 b3@2 ~@5 d3 d4 d3 ~@5 e3 ~@5 d4@2 e3 c4 e3, d4@16 d4@6 ~@26 d4@11 ~@5 c4@13 ~@3 c4@9 ~@7, ~@2 e3@7 ~@9 e3@7 ~@9 d3@7 ~@9 d3@7 ~@9 e3@7 ~@5 e3@4 e3@7 ~@7, ~@4 g3@7 ~ g3@6 ~@2 g3@15 ~ a3@8 ~@8 a3@12 ~@6 d4@9 ~@17, ~@6 c4@10 ~@22 g3@14 ~@2 g3@13 ~ g3@7 ~ g3@7 ~ g3@11 ~]/3",
  AA: "~@5 e3 a3 e3 ~@6 f#3 b3, c4@15 ~ b3@4 ~@12, ~@2 e3@7 ~@9 d#3@7 ~ d#3@5 ~, ~@4 a3@7 ~@9 f#3@7 ~@5, ~@6 d4@9 ~@7 d#4@7 ~@3",
  AB: "~@4 g3@2 b3@2 ~@2 d3@2 d4@3 ~@7 b3@4 d3@2 b3@3 ~, b3@5 ~@3 a3@8 b3@4 g3@11 ~, ~@2 e3@6 ~@10 d3@7 ~@7",
  AC: "~@10 e3@2 a3@2 e3@2 ~@12 f#3@3 ~, c4@15 ~ b3@4 ~@12, ~@2 e3@8 ~@8 d#3@7 ~ d#3@4 ~@2, ~@2 a3@3 ~@5 f#3@3 ~@3, ~@6 e4@8 ~@8 d#4@7 ~@3",
  AD: "~@3 g3@2 ~@2 e3 ~@2 f#3 ~@2 e3 b3 e3, b3@2 f#3@3 ~ g3@2 b3@6 ~@2, ~@2 e3@7 ~ e3@4 ~@2 g3@4 ~@2 g3@8 ~@2, ~@18 e3@7 ~@7",
  AE: "g3 ~@4 e3 g3 e3 ~@3 d#4@2 ~ f#3 b3, c4@15 ~ b3@4 ~@12, ~@2 e3@7 ~@9 d#3@7 ~ d#3@5 ~, ~@4 g3@7 ~@9 f#3@6 ~@6, ~@6 d4@7 ~@19",
  AF: "[g3,b3] ~@4 e3 ~ e3 g#3 ~@4 e3 g#3 e3, ~@2 e3@7 ~@3 b3@4 ~@4 g#3@7 ~@5, ~@4 g3@9 ~@5 e3@7 ~@7, ~@6 e4@9 ~@7 e4@9 ~", // G
  AG: "~@10 e3@2 g3@2 e3@2 ~@6 d#4@4 d#3@2 ~@2 d#3 ~, c4@15 ~ b3@4 ~@12, ~@2 e3@7 ~@9 d#3@7 ~@7, ~@4 g3@7 ~@9 f#3@6 ~@2 f#3@4, ~@3 d4@4 ~@9",
  AH: "[~@6 f#3@4 e3@2 ~@2 e3@2 ~@10 e3@2 d4@2 ~@6 a3@6 ~@2 a3@2 c4 ~ b3@2 ~@2 f#3@2 ~@7 f#3@3, [f#3,b3]@4 g3@11 ~ b3@4 g3@11 ~ c4@13 ~@19, ~@2 e3@7 ~@3 f#3@6 e3@7 ~@5 e3@4 e3@7 ~ e3@6 ~@2 d#3@8 ~ d#3@4 ~, ~@22 f#3@9 ~@33]/2", // B5
  AI: "[~@12 e3@2 f#3@3 ~@2 g3@16 ~@29, ~ e3@7 e4@26 ~@30, ~@3 g3@9 ~@5 e3@18 ~@29, ~@3 b3@14 ~@15]/2",
})).s("gm_electric_guitar_clean").gain(0.2)

// chords · electric guitar clean · "AcGuitr" · soft notes
const electric_guitar_clean_2 = note(`<
  ~ A ~@2 B C D E ~ D F G H I J C K L M N ~@3 G O ~@2 P@2 ~ Q R ~ S T U ~ V ~ W X Y ~@3 Z ~ AA@2 ~
>`.pickRestart({
  A: "~@2 d3@7 ~ d3@3 ~@19", B: "~@14 d4 ~@5 e3@4 ~@8", C: "~@2 d3@7 ~@23", D: "~@14 c4 ~@17", E: "~ d3@3 ~@12",
  F: "~@30 d4 ~", G: "~@6 a3 ~@25", H: "f#3 ~@15", I: "e3 ~@29 d#4 ~",
  J: "~@18 e3@6 e3 ~@7, ~@10 e3@7 ~@15, ~@14 f#3@9 ~@9", K: "~@14 d4@2 ~@2 e3@7 ~@7", L: "~@18 d3@11 ~ d3 ~",
  M: "~@6 a3 ~@25, ~@2 e3@7 ~@23", N: "~@15 b3", O: "~@5 e3@4 ~@7", P: "[~@15 g3@2 ~@15, ~@30 d3 ~@33]/2",
  Q: "~@16 f#3 ~@15", R: "a3 ~@31", S: "~@18 d#3@7 ~ d#3@4 b3@2", T: "~@4 g3@2 ~@12 e3@3 ~ e3@2 ~@8",
  U: "~@4 g3@6 d3@5 ~@13 g3@4", V: "~@14 d3@3 ~@15", W: "g3 ~@15", X: "~@14 d3@3 ~@13 d3@2", Y: "~@30 d#4 ~",
  Z: "g3 ~@31", AA: "[~@6 e4@6 ~@19 b3@2 ~@31]/2",
})).s("gm_electric_guitar_clean").gain(0.15)

// chords · electric guitar clean · "GuitHaw"
const electric_guitar_clean_3 = note(`<
  ~ A B@2 C D E F G@2 H ~@3 I J K F L@2 M ~@3 N O P@2 Q R@2 ~@3 S D T@4 U V W X Y Z@5
>`.pickRestart({
  A: "b4@2 b4 ~ b4@9 ~ b4@2 d5 ~ d5 ~ d5@12",
  B: "[e5@4 ~@2 e5@16 ~@6 c5@2 b4@2 c5@2 ~@4 e5@10 ~@6 e5@4 f#5@5 ~, ~@4 b4@20 e5@12 c5@11 ~ d#5@16, ~@22 g4@4 d5@5 ~@3 a4@13 ~@3 b4@14]/2",
  C: "~@5 e5 ~ e5 ~@4 e5 ~ c5@2, g5@6 f#5@11 ~ a5@13 ~, ~@2 e5@7 ~@3 g5@4 b5@15 ~, ~@5 g5 ~@2, ~@11 f#5@2 d5@2 ~",
  D: "b4 d5", E: "~@3 e5@10 ~@3, e5@2 b4@11 ~@3, ~ g4@12 ~@3", F: "b4@13 ~ b4@2 d5@16",
  G: "[e5@23 ~ e5@2 ~@4 b4@3 ~@5 e5@7 ~@3 d#5@15 ~, ~@26 d5@4 ~@6 a4@11 ~@17, ~@14 c5@9 ~@9]/2",
  H: "~@2 b4@2 g5@3 ~@3 a4@2 d5@2 a4@2 d5@8 ~@8, e5@7 ~ f#5@6 ~@18",
  I: "~@6 f#5@13 ~@9 e5 ~ d5@2, ~@4 g5@10 ~@5 b5@12 ~, ~@21 a5@10 ~, ~@24 g5@7 ~, ~@25 f#5@6 ~", J: "~@7 d5, b4",
  K: "e5@11 d5@3 g4@2",
  L: "[~@4 c5@2 ~@22 c5@2 ~@6 a4@11 ~@7 e5@4 f#5@5 ~, e5@2 ~ e5@21 d#5@7 ~, ~@2 g4@24 d5@4 b4@5 ~@29, ~@16 c5@7 ~@9]/2",
  M: "~@2 e5 b4 ~ a4 d5 a4 ~@3 g5@5, g5@4 f#5@3 ~ d5@8",
  N: "g5@3 ~@3 f#5@14 ~@6 f#5@2 e5@2 d5 ~, ~@4 g5@6 ~@10 b5@9 ~@3, ~@22 a5@9 ~, ~@24 g5@5 ~@3", O: "b4@7 b4 d5@8",
  P: "[b4 ~@13 b4 g4 b4!2 b4@6 d5@8, e5@4 b4@23 ~@37, ~@2 g4@23 ~@2 g4@2 ~@35, ~@6 e5@29 ~@29]/2",
  Q: "~@12 e5@19 ~, e5@11 ~@21, ~@4 c5@7 ~@21, ~@6 b4@25 ~",
  R: "[e5@4 ~@2 e5@10 ~@10 f#5@5 ~@5 e5@3 ~@5 d5@2 f#5@2 b4@16, ~@4 b4@9 ~@3 d#5@15 ~@33, ~@18 b4@23 ~ a4@9 ~@13, ~@22 e5@9 ~@9 f#5@5 ~@19]/2",
  S: "~@14 g5@6 ~@8 d5 ~ d5@2, e5@24 g5@7 ~, ~@5 f#5@5 b5@5 ~, ~@22 a5@9 ~, ~@26 f#5@5 ~",
  T: "[~@14 b4 e5 ~@7 g4 ~@11 e5@8 g4 ~@2 c5 b4 c5@5 ~@2 e5 ~@5 f#5@2 b4, e5@4 c5@4 ~@24 d5@25 ~ d5@4 g4@4 g4@19 ~@21 a4@6 ~@6 e5@9 ~, ~@2 g4@23 ~ g4@19 ~@3 g5@15 ~ e5@5 ~@19 e5@21 ~@3 d#5@15 ~, ~@6 e5@23 ~@15 b4@16 b4@4 ~@4 b4@20 ~@2 d5@4 ~@14 c5@4 ~@4 b4@9 ~@3]/4",
  U: "~@4 e5@2 g5 ~@5 d5@2 f#5 ~ b4@16, g5@5 ~@3 f#5@4 ~@20, ~@2 b4@7 ~ a4@6 ~@16", V: "c5@16 ~ d#4@9 e4@3 f#4 ~@2",
  W: "~@13 e5@17 f#4 ~, ~ e4@30 ~, ~@7 f#4@18 ~@7, ~@5 b4@11", X: "a4@2 a4@2 a4@2 a4@10 ~@5 b5@9 ~@2, ~ b4",
  Y: "~@4 b4@2 e5@9 ~@3 [e5,g#5]@6 [f#5,a5]@4 [g#5,b5]@4, e5 ~@7, ~ g4@6 ~@9", // E F#m G#m
  Z: "[~@20 d#5@3 e5@3 d#5@5 ~ e5@2 ~@2 e5@2 ~@12 e5@4 ~@6 e5@4 ~@6 g5@10 ~@7 e5@4 d#5@4 ~@6 g4@2 ~ b4@29 ~@27, a5@33 ~@7, ~@16 f#5@15 ~@7 g5@30 c5@11 ~ d#5@7 ~@10 e5@36 ~@27, ~@18 b4@14 ~@2 b4@19 ~ b4@9 ~ a4@6 ~@14 f#5@11 ~@65, ~@33 b4@6 ~@2 b4@8 ~@31]/5",
})).s("gm_electric_guitar_clean").gain(0.25).pan(0.8)

// chords · electric guitar clean · "GuitHaw" · soft notes
const electric_guitar_clean_4 = note(`<
  ~@2 A ~@6 B C ~@3 D E ~@3 F@2 G ~@2 H ~@3 I J K ~@4 L@2 ~@3 M ~ N ~ O ~@3 P@2
>`.pickRestart({
  A: "~@2 g4@7 ~ g4@11 ~@11", B: "~@14 e5 ~@12 b4@3 b4@2, ~@10 b4@3 ~@3, ~@23 f#5@9", C: "~@6 b4@3 ~@23",
  D: "~@2 e5@17 ~@13", E: "d5@27 ~@5", F: "[~@18 b4@19 ~@15 g4@11 ~]/2", G: "a4 ~", H: "~@2 e5@7 ~ e5@10 ~@12",
  I: "~@3 g4@6 ~ g4@21 ~", J: "~@3 a4@13 ~@16", K: "g5 ~@3", L: "[~@14 g4 ~@15 b4@8 ~@3 c5 ~@22]/2", M: "~@7 e5 ~@24",
  N: "~@28 f#4 ~@3", O: "~@6 d#5 ~@25", P: "[~@22 g4@15 ~@27]/2",
})).s("gm_electric_guitar_clean").gain(0.15).pan(0.8)

// chords · piano · "Choeurs"
const piano = note("<~@11 A B@2 C ~@6 D E F@2 ~@6 G@3 H ~@6 I@3 J K@4 ~>".pickRestart({
  A: "[c4,e4]@16 [b3,d#4]@15 ~", B: "[~@6 e4@2 ~@8 [a3,c4]@8 f#4@4 d#4@3 ~, [g3,b3]@15 ~@9 b3@8, ~@8 g4@15 ~@9]/2",
  C: "[g3,e4]@5 ~@3", D: "~@12 e4@3 ~ b3@15 ~, c4@16 d#4@11 ~@5", E: "~@3 e4 g4@2 e4 d4, [g3,b3]@31 ~",
  F: "[~@8 e4@7 ~ d#4@12 f#4@4 e4@23 ~@9, [a3,c4]@8 b3@19 ~@5]/2", // Am
  G: "[g4@15 ~ f#4@12 ~@4 f#4@11 ~ e4@4 ~@8 e4@8 ~@6 e4@6 ~@4 d#4@7 ~ d#4@6 ~@2, ~@16 b3@46 ~@2 [a3,c4]@16 [b3,f#4]@15 ~, ~@16 g3@15 ~@17, ~@4 e3@3 ~@5, ~@3 g4@2 ~]/3", // Am B5
  H: "[g3,e4]@11 ~@5", // C
  I: "[~@16 d#4@8 ~@20 e4@4 ~@16 [a3,c4]@15 ~ [b3,d#4,f#4]@15 ~, ~@8 b3@23 ~@17, ~@24 f#4@19 ~@5 g4@32 ~@16, ~@32 [e3,g3]@31 ~@33]/3", // Am B Em
  J: "g3@15 ~@9 g#4@7 ~, [b3,e4]@31 ~, ~@8 g#3@7 ~", // E5
  K: "[~@8 g4@7 ~ e4@8 d#4@6 ~@2 a3 ~@31 [a3,c4,e4]@15 ~ f#4@15 ~@2 g3@27 ~@4, [a3,c4,a4]@16 f#4@27 ~ e4@19 ~@65, ~@16 b3@15 ~ [g3,b3]@30 ~@18 b3@44 ~@4, ~@32 e3@16 g4@31 ~@49]/4", // Am G
})).s("gm_piano").gain(0.15).pan(0.2)

// chords · piano · "Choeurs" · soft notes
const piano_soft = note("<~@11 A@2 ~ B ~@6 C@2 ~ D ~@6 E ~ F G ~@6 H ~ I ~@3 J K ~>".pickRestart({
  A: "[a3@15 ~@17 d4@12 ~@8 e4@10 ~@2, ~@28 f#4@15 ~@21]/2", B: "b3@5 ~@3",
  C: "[~@2 a3@14 f#4@2 ~@12 g4 ~@33, a4@13 ~@11 f#4@19 ~@21]/2", D: "~@8 g3@15 ~@9", E: "[a3,c4]@16 ~@8 d#4@5 ~@3",
  F: "e4 ~@7", G: "b3@11 ~@5", H: "[a3,c4,e4,a4]@15 ~@11 d#4 ~@5", I: "e4 ~ e4@12 ~@18", J: "~@16 d#4@15 ~",
  K: "~ e4@27 ~@4",
})).s("gm_piano").gain(0.1).pan(0.2)

// chords · piano · "SynStrg"
const piano_2 = note("<~@9 A B C D E F ~@4 G H I@4 ~@4 J K L M@2 N ~@4 O P Q R@2 S@2 T@2 U ~>".pickRestart({
  A: "~@16 [d#4,f#4,b4]@15 ~", B: "[g4,b4]@4 f#4@3 ~ b4@7 ~", C: "[e4,a4,c5]@15 ~ [f#4,b4]@15 ~",
  D: "f#4@16 ~@6 e5@5 ~ d5@4, ~@16 g4@15 ~", E: "[a4,c5]@15 ~ [d#4,f#4,b4]@14 ~@2", F: "b4@5 ~@3",
  G: "[e4,g4,c5] [d#4,f#4,b4]", H: "[e4,g4,b4] [f#4,a4] [g4,b4]@2, ~@8 d4@23 ~",
  I: "[[e4,c5]@15 ~ d#4@14 ~@30 d5@3 ~@17 [d#4,f#4]@15 ~ e4@23 ~@9, ~@16 b4@47 ~@17 b4@40 ~@8, ~@16 f#4@32 g4@15 ~@65, ~@32 e4@47 ~@49]/4", // C D#m
  J: "[g4,c5]@15 ~ [d#4,f#4,b4]@15 ~", K: "[e4,g4,b4]@8 [f#4,a4]@7 ~ [g4,b4]@16", L: "[e4,a4,c5]@15 ~ [d#4,f#4,b4]@16",
  M: "[f#4@10 ~@6 d5@12 g4@3 ~@17 [d#4,f#4,b4]@14 ~@2, e4@47 ~@17, b4@31 ~@33, ~@10 g4@17 ~@37]/2", N: "g4@11 ~@5",
  O: "[e4,g4,c5]@15 ~ b4@6 a4@10, ~@16 [d#4,f#4]@15 ~", P: "[e4,g4,b4]@8 [f#4,a4]@8 g4@8 g4@4 g4@3 ~, ~ d4@3, ~ b4",
  Q: "[e4,a4,c5]@15 ~ d#4@14 ~@2", // Am
  R: "[g4@9 ~ f#4@4 ~@14 d5@4 [a4,c5]@16 [d#4,f#4,b4]@15 ~, e4@47 ~@17, b4@31 ~@33, ~@14 g4@17 ~@33]/2", // Am B
  S: "[[g4,b4]@16 d5@8 e5@4 d5@3 ~ [a4,c5]@15 ~@9 d#5@6 ~@2, e4@47 ~ [d#4,f#4,b4]@15 ~, ~ [g#4,b4] ~@2]/2", // G Am B G#m
  T: "[f#4@8 ~@8 e5@7 ~ d5@7 ~ [a4,c5]@15 ~ [d#4,f#4,b4]@16, e4@47 ~@17, b4 ~, ~@8 g4@23 ~@33]/2", // Am B
  U: "~ f#4@7 g4@24, ~ [e4,b4]@31", // E5
})).s("gm_piano").gain(0.2).pan(0.7)

// chords · piano · "SynStrg" · soft notes
const piano_soft_2 = note("<~@9 A B C D@2 E ~@6 F G H I ~@4 J K ~@2 L M ~@6 N ~@5 O ~@2>".pickRestart({
  A: "[e4,g4,c5] ~", B: "e4@7 ~ a4@7 ~ g4@16, ~@8 d4@23 ~", C: "~@8 d#4@7 ~", D: "[e4@47 ~@17, b4@7 ~@9]/2",
  E: "[e4,g4]@5 ~@3", F: "a4@15 ~@17", G: "~@24 e5@3 ~@5", H: "[a4,c5]@15 ~@17", I: "g4@23 ~@9", J: "e4@15 ~@17",
  K: "~@8 d4@23 ~", L: "[a4,c5]@7 ~@9", M: "[e4,b4]@11 ~@5", N: "~@16 [f#4,b4]@15 ~", O: "~@25 d#5@6 ~",
})).s("gm_piano").gain(0.1).pan(0.7)

// drums · kick
const kick = s("bd").struct("<~@9 A B A@4 ~@4 C D A@4 ~@4 A E A@4 ~@2 F ~ C E A@6 G H ~>".pickRestart({
  A: "x ~@6 x!2 ~@6 x", B: "x ~@3 x ~@2 x!2 ~@7", C: "x ~@6 x!2 ~@7", D: "x ~@2 x!2 ~@2 x!2 ~@7",
  E: "x ~@3 x ~@2 x!2 ~@5 x ~", F: "x", G: "x ~@13 x ~ x ~@14 x", H: "~ x ~@15 x ~ x ~@12",
})).gain(0.25)

// drums · rim
const rim = s("rim").struct("<~@11 A@4 ~@6 A@4 ~@6 A@4 ~@6 A@6 B C ~>".pickRestart({
  A: "~ x ~ x", B: "~@8 x ~@16 x ~@6", C: "~@5 x ~@10",
})).gain(0.25)

// drums · hihat
const hihat = s("hh").struct("<A B@10 C@4 B@6 C@4 B@6 C@4 B@6 C@6 D E ~>".pickRestart({
  A: "~ x ~@6 x ~@8 x ~@6 x ~@7", B: "~ x ~ x", C: "x!16",
  D: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x ~ x ~ x ~ x",
  E: "~ x ~ x ~@2 x ~ x ~ x ~ x ~ x ~@2 x ~ x ~@12",
})).gain(0.25)

// drums · ride
const ride = s("rd").struct("<~@14 A ~@2 B ~@3 B ~@3 B ~@24>".pickRestart({
  A: "~ x", B: "x",
})).gain(0.25)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<A B@10 ~@4 B@6 ~@4 B@6 ~@4 B@6 ~@9>".pickRestart({
  A: "~@12 x!4", B: "x!16",
})).gain(1.26)

stack(
  bass, bass_soft, electric_guitar_clean, electric_guitar_clean_2, electric_guitar_clean_3, electric_guitar_clean_4,
  piano, piano_soft, piano_2, piano_soft_2, kick, rim, hihat, ride, cabasa
// … 1 more lines

More by Alain Souchon