Strudelify

Les casseuses

Brassens Georges

KeyB♭ majorTempo240 bpm
0:00/0:00
// Les casseuses — Brassens Georges
// 240 bpm, 2/2, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 194 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(240/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@4 B C D@2 E F G H B C I@2 E F J K L M@8 N@8 O P Q R S B C D@2 E F G H B C I@2 E F J K L M@8 N@8 O P Q R S B C D@2 E
  F G H B C I@2 E F J K L M@8 N@8 O P Q R S B C D@2 E F G H B C I@2 E F J K L T@8 U V W X Y@3 Z@2 P Q R S B C D@2 E F G
  H B C I@2 E F J K L AA V AB AC AD AE AF L U V W X Y@3 Z@2 P Q AG AH
>`.pickRestart({
  A: "[~@4 [d3,f3]@3 ~@5 [d3,f3]@3 ~@5 [d3,f3]@3 ~@5 [d3,f3]@3 ~@5 [d3,f3]@3 ~@5 [d3,f3]@3 ~@5 [d3,f3]@3 ~@5 [d3,f3]@3 ~, [bb2,bb3]@63 ~]/4", // Dm Bb
  B: "~@4 [bb2,d3]@3 ~@5 [bb2,d3]@2 a3@2, f3@7 ~ bb3@6 ~@2", C: "~@4 [bb2,d3]@3 ~@5 [bb2,d3]@3 ~, bb3@7 ~ f3@7 ~",
  D: "[~@4 [c3,eb3]@3 ~ ab3@3 ~ [c3,eb3]@3 ~@5 [c3,eb3]@3 ~@5 [c3,eb3,f3]@3 ~, a3@7 ~@5 a3@15 ~@5]/2", // Cm F7
  E: "~@4 [c3,eb3]@3 ~@5 [c3,eb3,ab3]@3 ~, a3@11 ~@5", F: "a3@3 ~ [c3,eb3,f3]@3 ~ g3@3 ~ [c3,eb3,a3]@3 ~",
  G: "[d3,f3,bb3]@3 ~ [d3,f3,bb3]@3 ~@5 [d3,f3,bb3]@3 ~", H: "~@4 [c3,eb3,f3,a3]@3 ~@5 [c3,eb3,f3,a3]@3 ~",
  I: "[~@4 [c3,eb3]@3 ~ ab3@3 ~ [c3,eb3]@3 ~@5 [c3,eb3]@3 ~@5 [c3,eb3,ab3]@3 ~, a3@7 ~@5 a3@15 ~@5]/2", // Cm Ab
  J: "[d3,f3,bb3]@3 ~@13", K: "f3@7 ~ a3@7 ~", L: "c4@3 ~ [e2,g2,c3]@2 c3@3 ~ c3@2 [e2,ab2,c3]@3 ~",
  M: "[f3@3 ~ [f2,a2]@3 ~ db3@4 [e2,a2]@2 e3@2 a3@3 ~ [db2,e2,a2]@2 a2@3 ~ a2@2 [db2,e2,a2]@3 ~@5 [f2,bb2]@3 ~ f3@3 ~ [f2,bb2,d3]@3 ~ c3@3 ~ [a2,c3,f3]@2 e3@3 ~ f3@2 [bb2,e3,g3]@3 ~ a3@3 ~ [a2,c3]@3 ~@5 [f2,g2]@3 ~@5 [g2,b2]@3 ~@5 [g2,b2]@3 ~ a3@4 [c3,e3,g3]@3 ~ f3@3 ~ a3@3 ~ c4@3 ~ [e2,g2,c3]@2 c3@3 ~ c3@2 [e2,ab2,c3]@3 ~, ~@3 db3@29, ~@72 b2@7 ~ d3@7 ~ f3@7 ~@33]/8", // F A5 A Bb5 Bb F Edim Am …
  N: "[f3@3 ~ [f2,a2]@3 ~@7 [e2,a2,e3]@2 a3@3 ~ [db2,e2,a2]@2 a2@3 ~ a2@2 [db2,e2,a2]@3 ~ d3@3 ~ [f2,bb2]@3 ~ f3@3 ~ [f2,bb2,d3]@3 ~ c3@3 ~ [a2,c3,f3]@2 e3@3 ~ f3@2 [a2,c3,g3]@3 ~@5 [c3,f3]@3 ~@5 [c3,f3]@3 ~@6 c3@5 ~ d3@5 eb3@5 [a2,c3]@3 ~@5 [c3,eb3]@3 ~@4 [c3,gb3]@3 ~@5 [c3,gb3]@3 ~, ~ db3@15, ~@64 a3@19 ~@8 bb2@7 ~@3 f3@5 ~ g3@5 a3@16]/8", // F A5 A Bb5 Bb F Am7 F5 …
  O: "[c3,gb3]@3 ~ d3@3 ~ e3@3 ~ gb3@3 ~", P: "~ [g2,b2] ~ [g2,b2], d3", Q: "~ [g2,bb2] ~ [g2,bb2], e3@15 ~",
  R: "~@4 [a2,c3]@3 ~@5 [a2,c3]@3 ~, f3@7 ~ eb3@7 ~", S: "d3@7 ~ c3@7 ~",
  T: "[f3@3 ~ [f2,a2]@3 ~@5 [e2,a2]@2 e3@2 a3@3 ~ [db2,e2,a2]@2 a2@3 ~ a2@2 [db2,e2,a2]@3 ~@5 [f2,bb2]@3 ~ f3@3 ~ [f2,bb2,d3]@3 ~ c3@3 ~ [a2,c3,f3]@2 e3@3 ~ f3@2 [bb2,e3,g3]@3 ~ a3@3 ~ [a2,c3]@3 ~@5 [f2,g2]@3 ~@5 [g2,b2]@3 ~@5 [g2,b2]@3 ~ a3@4 [c3,e3,g3]@3 ~ f3@3 ~ a3@3 ~ c4@3 ~ [e2,g2,c3]@2 c3@3 ~ c3@2 [e2,ab2,c3]@3 ~, ~ db3@15, ~@72 b2@7 ~ d3@7 ~ f3@7 ~@33]/8", // F A5 A Bb5 Bb F Edim Am …
  U: "f3@3 ~ [f2,a2]@3 ~@7 [e2,a2,e3]@2", V: "a3@3 ~ [db2,e2,a2]@2 a2@3 ~ a2@2 [db2,e2,a2]@3 ~",
  W: "d3@3 ~ [f2,bb2]@3 ~ f3@3 ~ [f2,bb2,d3]@3 ~", X: "c3@3 ~ [a2,c3,f3]@2 e3@3 ~ f3@2 [a2,c3,g3]@3 ~",
  Y: "[~@4 [c3,f3]@3 ~@5 [c3,f3]@3 ~@6 c3@5 ~ d3@5 eb3@5 [a2,c3]@3 ~@5 [c3,eb3]@3, a3@19 ~@8 bb2@7 ~@3 f3@5 ~ g3@5]/3", // F5 Am Cm
  Z: "[~@4 [c3,gb3]@3 ~@5 [c3,gb3]@3 ~ [c3,gb3]@3 ~ d3@3 ~ e3@3 ~ gb3@3 ~, a3@19 ~@13]/2", // Cdim
  AA: "f3@3 ~ [f2,a2]@3 ~@5 [e2,a2]@2 e3@2", AB: "~@4 [f2,bb2]@3 ~ f3@3 ~ [f2,bb2,d3]@3 ~",
  AC: "c3@3 ~ [a2,c3,f3]@2 e3@3 ~ f3@2 [bb2,e3,g3]@3 ~", AD: "a3@3 ~ [a2,c3]@3 ~@5 [f2,g2]@3 ~, ~@8 b2@7 ~",
  AE: "~@4 [g2,b2]@3 ~@5 [g2,b2]@3 ~, d3@7 ~ f3@7 ~", AF: "a3@4 [c3,e3,g3]@3 ~ f3@3 ~ a3@3 ~",
  AG: "[a2,c3,f3]@3 ~@5 [e2,bb2,c3]@3 ~@5", AH: "[a2,c3,f3]@3 ~@13",
})).s("gm_electric_guitar_jazz").gain(0.18).pan(1)

// bass · contrabass · "Contrebasse"
const bass = note(`<
  A@3 B A@2 C D E F G H A@2 C D E I J ~ K L M N O P Q R K L M N O I S@2 T U Q V W X A@2 C D E F G H A@2 C D E I J ~ K L
  M N O P Q R K L M N O I S@2 T U Q V W X A@2 C D E F G H A@2 C D E I J ~ K L M N O P Q R K L M N O I S@2 T U Q V W X
  A@2 C D E F G H A@2 C D E I J ~ K L M N O P Q R K L M N O I S@2 T U Q V W X A@2 C D E F G H A@2 C D E I J ~ K L M N O
  P Q R K L M N O I S@2 T U Q V O Y
>`.pickRestart({
  A: "bb2@3 ~@5 f2@3 ~@5", B: "bb2@3 ~ f2@3 ~ g2@3 ~ a2@3 ~", C: "c3@3 ~@5 f2@3 ~@5", D: "c3@3 ~ f2@3 ~ g2@3 ~ ab2@3 ~",
  E: "a2@3 ~@5 c3@3 ~@5", F: "f2@3 ~@5 c3@3 ~@5", G: "bb2@3 ~ bb3@3 ~ a3@3 ~ g3@3 ~", H: "f3@3 ~ eb3@3 ~ d3@3 ~ c3@3 ~",
  I: "f2@3 ~@5 f2@3 ~@5", J: "bb2@3 ~@13", K: "c3@3 ~@5 c3@3 ~@5", L: "f2@3 ~@5 e2@3 ~@5", M: "a2@3 ~@5 a2@3 ~@5",
  N: "bb2@3 ~@5 bb2@3 ~@5", O: "f2@3 ~@5 c2@3 ~@5", P: "f2@3 ~@5 g2@3 ~@5", Q: "g2@3 ~@5 g2@3 ~@5",
  R: "c3@3 ~ bb2@3 ~ a2@3 ~ g2@3 ~", S: "c3@3 ~@5 g2@3 ~@5", T: "d3@3 ~@5 a2@3 ~@5", U: "d3@3 ~@13",
  V: "c3@3 ~@5 c2@3 ~@5", W: "f2@3 ~@5 gb2@3 ~@5", X: "g2@3 ~@5 a2@3 ~@5", Y: "f2@3 ~@13",
})).s("gm_contrabass").gain(0.18).pan(0)

stack(electric_guitar_jazz, bass)

More by Brassens Georges