Strudelify

Le parapluie

Brassens Georges

KeyC majorTempo150 bpm
0:00/0:00
// Le parapluie — Brassens Georges
// 150 bpm, 4/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: Full arrangement: all 86 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(150/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 · electric guitar jazz · "Guitare"
const electric_guitar_jazz = note(`<
  ~ A B C@4 D@2 E F G H I J K@2 L F@2 L I M@4 N O@4 P Q R@8 S@8 T@5 U@5 V@5 W X@2 Y@8 Z@2 AA AB AC AD@2 AA AE AF@2
>`.pickRestart({
  A: "~@5 [e3,g3,c4]", B: "~ [e3,g3,c#4]@2 [f3,a3,d4]@4 [a3,c4,f4]@4 [f3,a3,d4]@3 [a3,c4,f4]@4 [a3,c4,f4]@6",
  C: "[~@2 [f3,a3,d4]@5 [d#3,f#3,b3]@2 [e3,g3,c4]@4 [g3,c4,e4]@4 [e3,g3,c4]@3 [g3,c4,e4]@10 ~@13 [c3,f3,a3]@4 [f3,a3,c4]@3 [a3,c4,e4]@4 [c4,e4,g4]@4 [a3,c4,e4]@4 [f3,a3,c4]@2 [c3,f3,a3]@2 [a2,c3,f3]@2 ~ [f2,g#2,b2,e3]@13 ~@14]/4", // Dm B C F Am C Am F …
  D: "[~@6 [c3,e3]@5 ~@7 [c3,e3]@5 ~@7 [c3,e3]@5 ~@7 [c3,e3]@5 ~, g2@47 ~]/2", // C
  E: "~@6 [c3,e3]@5 ~@7 [c3,e3]@5 ~, g#2@23 ~", F: "~@6 [c3,d3,f3]@5 ~@7 [c3,d3,f3]@5 ~, a2@23 ~",
  G: "~@6 [c3,d3,f3]@5 ~@7 [d3,f3]@5 ~", H: "~@6 [c3,e3]@5 ~@7 [c3,e3]@5 ~",
  I: "~@6 [d3,f3]@5 ~@7 [d3,f3]@5 ~, a2@11 ~ b2@11 ~", J: "[c3,e3]@5 ~@19",
  K: "[~@6 [c3,e3]@5 ~@7 [c3,e3]@5 ~@7 [e3,g3]@5 ~@7 [c3,e3]@5 ~, g2@47 ~]/2", // C Em C
  L: "~@6 [c3,e3]@5 ~@7 [c3,e3]@5 ~, g2@23 ~", // C
  M: "[[c3,e3]@6 ~@17 c3@5 c#3@2 [f3,a3,d4]@6 [f3,a3,f4]@2 [f3,a3,d4]@3 [a3,c4,f4]@13 ~@2 d4@2 c#4@2 [e3,g3,a3,c4]@6 [g3,a3,c4,e4]@2 [e3,g3,a3,c4]@3 [g3,a3,c4,e4]@13 ~@2 c4@2 c#4@2 [f3,a3,c4,d4]@6]/4", // C Dm F Dm F Am7 Dm7
  N: "[a3,c4,d4,f4]@2 [c4,d4,f4,a4]@3 [a3,c4,d4,f4]@4 [a3,c4,d4,f4]@10 ~ [d#3,f#3,a3,b3]@4", // Dm7 B7
  O: "[[e3,g3,a3,c4]@19 ~@4 c4@5 c#4@2 [f3,a3,d4]@6 [a3,c4,f4]@2 [f3,a3,d4]@3 [a3,c4,f4]@10 ~@2 [a3,c4,f4]@3 d4@2 c#4@2 [e3,g3,a3,c4]@6 [g3,a3,c4,e4]@2 [e3,g3,a3,c4]@3 [g3,a3,c4,e4]@13 ~@2 c4@2 c#4@2 [f3,a3,b3,d4]@6]/4", // Am7 Dm F Dm F Am7 Bm7b5
  P: "[a3,b3,d4,f4]@2 [b3,d4,f4,a4]@3 [a3,b3,d4,f4]@13 ~@2 [d#3,f#3,b3]@4", Q: "[e3,g3,a3,c4] ~@3",
  R: "[~@9 [c3,e3]@5 ~@7 [c3,e3]@5 ~@7 [c3,e3]@5 ~@7 [c3,e3]@5 ~@7 [c3,e3]@5 ~@7 [c3,e3]@5 ~@7 [c3,d3,f3]@5 ~@7 [c3,d3,f3]@5 ~@7 [c3,d3,f3]@5 ~@7 [d3,f3]@5 ~@7 [c3,e3]@5 ~@7 [c3,e3]@5 ~@7 [d3,f3]@5 ~@7 [d3,f3]@5 ~ [c3,e3]@5 ~@16, ~@3 g2@47 ~ g#2@23 ~ a2@23 ~@49 a2@11 ~ b2@11 ~@22]/8", // C Dm7 Dm C Dm C
  S: "[~@9 [c3,e3]@5 ~@7 [c3,e3]@5 ~@7 [e3,g3]@5 ~@7 [c3,e3]@5 ~@7 [c3,e3]@5 ~@7 [c3,e3]@5 ~@7 [c3,d3,f3]@5 ~@7 [c3,d3,f3]@5 ~@7 [c3,d3,f3]@5 ~@7 [c3,d3,f3]@5 ~@7 [c3,e3]@5 ~@7 [c3,e3]@5 ~@7 [d3,f3]@5 ~@7 [d3,f3]@5 ~ [c3,e3]@6 ~@15, ~@3 g2@47 ~ g2@23 ~ a2@23 ~ a2@23 ~ g2@23 ~ a2@11 ~ b2@11 ~@22]/8", // C Em C Dm7 C Dm C
  T: "[~@2 c3@5 c#3@2 [f3,a3,d4]@6 [f3,a3,f4]@2 [f3,a3,d4]@3 [a3,c4,f4]@13 ~@2 d4@2 c#4@2 [e3,g3,a3,c4]@6 [g3,a3,c4,e4]@2 [e3,g3,a3,c4]@3 [g3,a3,c4,e4]@13 ~@2 c4@2 c#4@2 [f3,a3,c4,d4]@6 [a3,c4,d4,f4]@2 [c4,d4,f4,a4]@3 [a3,c4,d4,f4]@4 [a3,c4,d4,f4]@10 ~ [d#3,f#3,a3,b3]@4 [e3,g3,a3,c4]@19 ~@2]/5", // Dm F Dm F Am7 Dm7 B7 Am7
  U: "[~@2 c4@5 c#4@2 [f3,a3,d4]@6 [a3,c4,f4]@2 [f3,a3,d4]@3 [a3,c4,f4]@10 ~@2 [a3,c4,f4]@3 d4@2 c#4@2 [e3,g3,a3,c4]@6 [g3,a3,c4,e4]@2 [e3,g3,a3,c4]@3 [g3,a3,c4,e4]@13 ~@2 c4@2 c#4@2 [f3,a3,b3,d4]@6 [a3,b3,d4,f4]@2 [b3,d4,f4,a4]@3 [a3,b3,d4,f4]@13 ~@2 [d#3,f#3,b3]@4 [e3,g3,a3,c4]@6 ~@15]/5", // Dm F Dm F Am7 Bm7b5 B Am7
  V: "[~@12 [c3,e3]@5 ~@7 [c3,e3]@5 ~@7 [c3,e3]@5 ~@7 [c3,e3]@5 ~@7 [c3,e3]@5 ~@7 [c3,e3]@5 ~@7 [c3,d3,f3]@5 ~@7 [c3,d3,f3]@5 ~@7 [c3,d3,f3]@5 ~@7, ~@6 g2@47 ~ g#2@23 ~ a2@23 ~@19]/5", // C Dm7
  W: "[d3,f3]@5 ~@7 [c3,e3]@5 ~@7", // Dm C
  X: "[[c3,e3]@5 ~@7 [d3,f3]@5 ~@7 [d3,f3]@5 ~ [c3,e3]@5 ~@13, ~@6 a2@11 ~ b2@11 ~@19]/2", // C Dm C
  Y: "[~@12 [c3,e3]@5 ~@7 [c3,e3]@5 ~@7 [e3,g3]@5 ~@7 [c3,e3]@5 ~@7 [c3,e3]@5 ~@7 [c3,e3]@5 ~@7 [c3,d3,f3]@5 ~@7 [c3,d3,f3]@5 ~@7 [c3,d3,f3]@5 ~@7 [c3,d3,f3]@5 ~@7 [c3,e3]@5 ~@7 [c3,e3]@5 ~@7 [d3,f3]@5 ~@7 [d3,f3]@5 ~ [c3,e3]@6 ~@12, ~@6 g2@47 ~ g2@23 ~ a2@23 ~ a2@23 ~ g2@23 ~ a2@11 ~ b2@11 ~@19]/8", // C Em C Dm7 C Dm C
  Z: "[~@5 c3@5 c#3@2 [f3,a3,d4]@6 [f3,a3,f4]@2 [f3,a3,d4]@3 [a3,c4,f4]@13 ~@2 d4@2 c#4@2 [e3,g3,a3,c4]@6]/2", // Dm F Dm F Am7
  AA: "[g3,a3,c4,e4]@2 [e3,g3,a3,c4]@3 [g3,a3,c4,e4]@13 ~@2 c4@2 c#4@2", // Am7
  AB: "[f3,a3,c4,d4]@6 [a3,c4,d4,f4]@2 [c4,d4,f4,a4]@3 [a3,c4,d4,f4]@4 [a3,c4,d4,f4]@9", // Dm7
  AC: "~ [d#3,f#3,a3,b3]@2 [e3,g3,a3,c4]@9", // B7 Am7
  AD: "[~@5 c4@5 c#4@2 [f3,a3,d4]@6 [a3,c4,f4]@2 [f3,a3,d4]@3 [a3,c4,f4]@10 ~@2 [a3,c4,f4]@3 d4@2 c#4@2 [e3,g3,a3,c4]@6]/2", // Dm F Dm F Am7
  AE: "[f3,a3,b3,d4]@6 [a3,b3,d4,f4]@2 [b3,d4,f4,a4]@3 [a3,b3,d4,f4]@13", // Bm7b5
  AF: "[~@2 [d#3,f#3,b3]@4 [e3,g3,a3,c4]@13 ~@2 [d4,g4,c5]@13 ~@14]/2", // B Am7 Csus2
})).s("gm_electric_guitar_jazz").gain(0.41).pan(1)

// bass · contrabass · "Contrebasse"
const bass = note(`<
  A@6 B C@2 D E F G H I C@2 D E F J H K@4 L M@4 L N O@2 P Q R S T U O@2 P Q R V T W X Y@4 X Z@4 AA@2 AB AC AD AE AF AG
  AA@2 AB AC AD AH AF AI@3 AJ AK@4 AJ AL@3
>`.pickRestart({
  A: "[~@21 g3@58 ~@2 g3@58 ~@5]/6", B: "~ f3 g3@3 g2@6 ~@13", C: "[c2,c3]@5 ~@7 [g1,g2]@5 ~@7",
  D: "[c2,c3]@5 ~@7 [c2,c3]@5 ~@7", E: "[f2,f3]@5 ~@7 [f2,f3]@5 ~@7", F: "[f2,f3]@5 ~@7 [g2,g3]@5 ~@7",
  G: "[e2,e3]@5 ~@7 [a1,a2]@5 ~@7", H: "[d2,d3]@5 ~@7 [g2,g3]@5 ~@7", I: "[c2,c3]@5 ~ f3 g3@10 ~@7",
  J: "[e2,e3]@5 ~@7 a2@5 ~@7", // E
  K: "[c2@6 g2@2 a2@5 g2@2 c2@6 g2@2 a2@5 g2@2 d2@6 g2@2 a2@5 g2@2 b1@6 g2@2 a2@5 g2@2 c2@6 g2@2 a2@5 g2@2 b1@6 g2@2 a2@5 g2@2 d2@6]/4",
  L: "g2@2 a2@5 g2@2 g1@6 g2@2 a2@5 g2@2",
  M: "[c2@6 g2@2 a2@5 g2@2 c2@6 g2@2 a2@5 g2@2 d2@6 g2@2 a2@5 g2@2 g1@6 g2@2 a2@5 g2@2 c2@6 g2@2 a2@5 g2@2 b1@6 g2@2 a2@5 g2@2 d2@6]/4",
  N: "c2@3 ~ [c3,g3]@3 ~@5", O: "~@3 [c2,c3]@5 ~@7 [g1,g2]@5 ~@4", P: "~@3 [c2,c3]@5 ~@7 [c2,c3]@5 ~@4",
  Q: "~@3 [f2,f3]@5 ~@7 [f2,f3]@5 ~@4", R: "~@3 [f2,f3]@5 ~@7 [g2,g3]@5 ~@4", S: "~@3 [e2,e3]@5 ~@7 [a1,a2]@5 ~@4",
  T: "~@3 [d2,d3]@5 ~@7 [g2,g3]@5 ~@4", U: "~@3 [c2,c3]@5 ~ f3 g3@10 ~@4", V: "~@3 [e2,e3]@5 ~@7 a2@5 ~@4",
  W: "~@3 c2@6 g2@2 a2@5 g2@2 c2@6", X: "g2@2 a2@5 g2@2 d2@6 g2@2 a2@5 g2@2",
  Y: "[b1@6 g2@2 a2@5 g2@2 c2@6 g2@2 a2@5 g2@2 b1@6 g2@2 a2@5 g2@2 d2@6 g2@2 a2@5 g2@2 g1@6 g2@2 a2@5 g2@2 c2@6 g2@2 a2@5 g2@2 c2@6]/4",
  Z: "[g1@6 g2@2 a2@5 g2@2 c2@6 g2@2 a2@5 g2@2 b1@6 g2@2 a2@5 g2@2 d2@6 g2@2 a2@5 g2@2 g1@6 g2@2 a2@5 g2@2 c2@6 ~@2 [c3,g3]@6 ~@7]/4", // C5
  AA: "~@6 [c2,c3]@5 ~@7 [g1,g2]@5 ~", AB: "~@6 [c2,c3]@5 ~@7 [c2,c3]@5 ~", AC: "~@6 [f2,f3]@5 ~@7 [f2,f3]@5 ~",
  AD: "~@6 [f2,f3]@5 ~@7 [g2,g3]@5 ~", AE: "~@6 [e2,e3]@5 ~@7 [a1,a2]@5 ~", AF: "~@6 [d2,d3]@5 ~@7 [g2,g3]@5 ~",
  AG: "~@6 [c2,c3]@5 ~ f3 g3@10 ~", AH: "~@6 [e2,e3]@5 ~@7 a2@5 ~",
  AI: "[~@6 c2@6 g2@2 a2@5 g2@2 c2@6 g2@2 a2@5 g2@2 d2@6 g2@2 a2@5 g2@2 b1@6 g2@2 a2@5 g2@2 c2@6]/3",
  AJ: "g2@2 a2@5 g2@2 b1@6 g2@2 a2@5 g2@2",
  AK: "[d2@6 g2@2 a2@5 g2@2 g1@6 g2@2 a2@5 g2@2 c2@6 g2@2 a2@5 g2@2 c2@6 g2@2 a2@5 g2@2 d2@6 g2@2 a2@5 g2@2 g1@6 g2@2 a2@5 g2@2 c2@6]/4",
  AL: "[d2@6 g2@2 a2@5 g2@2 g1@6 g2@2 a2@5 g2@2 c2@13 ~@2 [e3,a3]@13 ~@14]/3", // A5
})).s("gm_contrabass").gain(0.41).pan(0)

stack(electric_guitar_jazz, bass)

More by Brassens Georges