Strudelify

Les baricades mysterieuses

Francois Couperin

KeyB♭ majorTempo140 bpm
0:00/0:00
// Les baricades mysterieuses — Francois Couperin
// 140 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 82 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(140/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 · banjo · "Les Barricades Mysterieuses"
const banjo = note(`<
  A@3 B C@3 D@4 B C@3 E@5 F@4 G@4 H@3 B I@3 J@3 K@2 L@2 M@3 B I@3 N@5 O P@8 Q@8 R@4 S T@3 U V ~
>`.pickRestart({
  A: "[~ bb3 ~@5 a3@2 ~@6 a3@2 ~@2 g3@2 ~ bb3 a3, ~@2 d4@3 c4@3 ~@2 d4@3 ~ f4@3 ~@7, ~@3 bb3@4 ~@2 bb3@2 bb3@4 ~@2 a3@2 ~@2 f3@3, ~@6 f4@3 ~@3 c4@3 ~@3 bb3@4 ~@2]/3",
  B: "~@2 bb3@2 ~@2 g3@2 a3@2 eb4@2 d4 [d4,eb4] c4@2, g3@3 ~@5, ~@2 eb4@3 ~@3", // Ebmaj7
  C: "[d4 ~@6 a3@2 ~@6 a3@2 ~@2 g3@2 ~ bb3 a3, ~ bb3@2 bb3@3 f4@3 ~ d4@3 c4@3 ~ a3@2 ~@2 f3@3, ~@2 d4@3 c4@3 ~ bb3@2 bb3@3 f4@3 ~ bb3@4 ~@2]/3",
  D: "[~@2 a3@2 ~@2 f3@4 ~@2 bb3@2 a3@2 bb3 [a3,bb3] ~@12 a3@4 ~@12 a3@4 ~@4 g3@4 ~@2 bb3@2 a3@2, g3@3 ~@2 f3@4 ~ d4@3 c4@3 ~@2 d4@3 ~ f4@3 ~@7, ~@2 bb3@4 ~@3 bb3@2 bb3@4 ~@2 bb3@2 bb3@4 ~@2 a3@2 ~@2 f3@3, ~@14 f4@3 ~@3 c4@3 ~@3 bb3@4 ~@2]/4", // Bbmaj7
  E: "[~@2 a3@2 ~@2 f3@4 ~@2 bb3@2 a3@2 bb3 [a3,bb3] ~@4 d4@4 ~@4 c4@4 ~@4 d4@4 ~@4 c4@4 ~@4 d4@4 ~@4 c4@4 ~@4 bb3@4 ~@4 bb3@2, g3@3 ~@2 f3@4 ~ f4@4 f4@3 ~ f4@4 f4@4 f4@4 f4@4 f4@4 e4@2, ~@2 bb3@4 ~@3 d4@2 ~@2 c4@2 ~@2 d4@2 ~@2 c4@2 ~@2 d4@2 ~@2 c4@2 ~@2 bb3@2 ~@2 bb3@2 ~]/5", // Bbmaj7
  F: "[a3@2 ~@4 a3@4 ~@4 g3@4 ~@4 a3@4 ~@4 g3@4 ~@4 a3@4 ~@4 a3@4 ~@4 g3@2 a3 [g3,a3] g3 [g3,a3] a3 [g3,a3] f3 g3, f4 c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 d4 ~@2, ~ a3@2 ~@2 g3@2 ~@2 a3@2 ~@2 g3@2 ~@2 a3@2 ~@2 a3@2 ~@2 a3@2 ~ eb3@3 ~]/4", // Gsus2
  G: "[f3 a3 ~ a3@2 ~@2 a3@2 ~@2 bb3@2 ~@2 ab3@2 ~@2 g3@2 ~@2 g3@2 ~@2 a3@2 ~@2 bb3, ~ c4@2 eb4@2 d4@2 f4@2 d4@2 eb4@2 eb4@2 d4, ~@5 g3@2 ~@2 bb3@2 ~@2 ab3@2 ~@2 g3@2 ~@2 g3@2 ~@2 a3@2 ~@2 bb3@2 ~]/4",
  H: "[[c4,d4] bb3 c4 ~@11 a3@4 ~@12 a3@4 ~@4 g3@4 ~@2 bb3@2 a3@2, a3 bb3@2 bb3@4 ~@2 bb3@2 bb3@4 ~@2 a3@2 ~@2 f3@3, ~@2 d4@3 c4@3 ~@2 d4@3 c4@3 ~@2 bb3@4 ~@2, ~@6 f4@3 ~@5 f4@3 ~@7]/3", // Csus2
  I: "[d4 ~@6 a3@2 ~@6 a3@2 ~@2 g3@2 ~ bb3 a3, ~ bb3@2 bb3@4 ~@2 bb3@2 bb3@4 ~@2 a3@2 ~@2 f3@3, ~@2 d4@3 ~ f4@3 ~@3 c4@3 ~@3 bb3@4 ~@2, ~@4 c4@3 ~@3 d4@3 ~ f4@3 ~@7]/3",
  J: "[~@2 a3@2 ~@2 f3@4 ~@2 bb3@2 a3@2 bb3 [a3,bb3] ~@4 bb3@4 ~@4 a3@4 ~@4 g3@4 ~@4 gb3@2, g3@3 ~@2 f3@4 ~ d4@4 c4@4 bb3@4 a3@2, ~@2 bb3@4 ~@3 bb3@2 ~@2 bb3@2 ~@2 a3@2 ~@2 g3@2 ~]/3", // Bbmaj7
  K: "[g3 ~@2 eb4@2 ~@2 d4@2 ~@2 c4@2 ~@2 b3, ~ eb4@2 ~@2 eb4@2 ~@2 d4@2 ~@2 c4@2 ~, ~ g4@2 f4@2 eb4@2 d4]/2",
  L: "[c4 ~@2 g3@2 ~@2 f3@2 d4 eb4 d4 c4 bb3 a3 g3, ~ g3@2 ~@2 f3@2 ~@9, ~@2 eb4@4 d4@3 ~@7]/2",
  M: "[bb3 [a3,bb3] ~@12 a3@4 ~@12 a3@4 ~@4 g3@4 ~@2 bb3@2 a3@2, ~ bb3@2 bb3@4 ~@2 bb3@2 bb3@4 ~@2 a3@2 ~@2 f3@3, ~@2 d4@3 c4@3 ~@2 d4@3 c4@3 ~@2 bb3@4 ~@2, ~@6 f4@3 ~@5 f4@3 ~@7]/3", // Bbmaj7
  N: "[~@2 a3@2 ~@2 f3@4 ~@2 bb3@2 a3@2 bb3 [a3,bb3] ~@4 bb3@4 ~@4 bb3@4 ~@4 ab3@4 ~@4 c4@4 ~@4 bb3@4 ~@4 bb3@4 ~@4 c4@4 ~@4 ab3@2, g3@3 ~@2 f3@4 ~ d4@4 eb4@4 c4@3 c4@2 ~@2 c4@2 ~@2 bb3@2 ~@2 c4@2 ~@2 ab3@2 ~, ~@2 bb3@4 ~@3 bb3@2 ~@2 bb3@2 ~@2 bb3@2 ~@3 f4@4 d4@4 eb4@4 eb4@4 d4@2]/5", // Bbmaj7
  O: "~ ab3 ~ bb3@2 ~@2 eb4, eb4@5 eb4@2 ~, ~@2 g3@3 ~ g4@2",
  P: "[~@3 c4@2 ~@2 c4@2 ~@2 c4@2 ~@2 c4@2 ~@2 d4@2 ~@2 d4@2 ~@2 bb3@2 ~@2 bb3@2 ~@2 c4@2 ~@2 c4@2 ~@2 a3@2 ~@2 a3@2 ~@2 bb3@2 ~@2 bb3@2 ~@2 g3@2 ~@2 g3, ~ c4@2 ~@2 c4@2 ~@2 c4@2 ~@2 c4@2 ~@2 d4@2 ~@2 d4@2 ~@2 bb3@2 ~@2 bb3@2 ~@2 c4@2 ~@2 c4@2 ~@2 a3@2 ~@2 a3@2 ~@2 bb3@2 ~@2 bb3@2 ~@2 g3@2 ~@2 g3@2 ~, ~ g4@2 g4@2 g4@2 g4@2 f4@2 f4@2 f4@2 f4@2 eb4@2 eb4@2 eb4@2 eb4@2 d4@2 d4@2 d4@2 d4]/8",
  Q: "[~@3 a3@2 ~@2 a3@2 ~@2 f3@2 ~@2 f3@2 ~@2 g3@2 ~@2 f3@2 ~@2 eb3@2 ~@2 f3@2 ~@2 g3@2 ~@2 eb3@2 ~@2 f3@2 ~@2 f3@2 ~@2 g3@2 ~@2 f3@2 ~@2 eb3@2 ~@2 g3, ~ a3@2 ~@2 a3@2 ~@2 f3@2 ~@2 f3@2 ~@2 g3@2 ~@2 f3@2 ~@2 eb3@2 ~@2 f3@2 ~@2 g3@2 ~@2 eb3@2 ~@2 f3@2 ~@2 f3@2 ~@2 g3@2 ~@2 f3@2 ~@2 eb3@2 ~@2 g3@2 ~, ~ c4@2 c4@2 c4@2 bb3@2 bb3@2 bb3@2 bb3@2 bb3@2 bb3@2 bb3@2 a3@2 bb3@2 bb3@2 bb3@2 bb3@2 bb3]/8",
  R: "[~@6 f3@4 ~@2 bb3@2 a3@2 bb3 [a3,bb3] ~@12 a3@4 ~@12 a3@4 ~@4 g3@4 ~@2 bb3@2 a3@2, ~ f3@2 ~@2 f3@4 ~ d4@3 c4@3 ~@2 d4@3 c4@3 ~@2 bb3@4 ~@2, ~@2 bb3@4 ~@3 bb3@2 bb3@4 ~@2 bb3@2 bb3@4 ~@2 a3@2 ~@2 f3@3, ~@14 f4@3 ~@5 f4@3 ~@7]/4", // Bbmaj7
  S: "~@2 bb3@2 ~@2 g3@2 a3@2 eb4@2 [d4,eb4] d4 c4@2, g3@3 ~@5, ~@2 eb4@3 ~@3", // Ebmaj7
  T: "[d4 ~@6 a3@2 ~@6 a3@2 ~@2 g3@2 ~ bb3 a3, ~ bb3@2 bb3@4 ~@2 bb3@2 bb3@4 ~@2 a3@2 ~@2 f3@3, ~@2 d4@3 c4@3 ~@2 d4@3 c4@3 ~@2 bb3@4 ~@2, ~@6 f4@3 ~@5 f4@3 ~@7]/3",
  U: "~ a3 ~ f3@2 ~ bb3 a3, g3@3 ~@2 f3@3, ~ bb3@2 ~", V: "[d3,f3,bb3]",
})).s("gm_banjo").gain(0.35).pan(1)

// chords · banjo · "Bass Banjo (tubby sound - reverb off)"
const banjo_2 = note("<A@8 B@8 C D E F G@2 H@2 I J K L M@8 N@2 O P Q R M@8 S@4 T@8 U@8 V@2 W@8 X ~>".pickRestart({
  A: "[~ bb2 ~ f2 ~@27 eb3, ~@2 f3@3 f3@2 eb3@2 d3@2 d3@2 c3@2 f3@2 f3@2 f3@2 f3@2 eb3@2 d3@2 d3@2 c3@3, ~@2 bb2 f2 g2 d2 eb2 f2 bb2 f2 bb2 f2 g2 d2 eb2 f2]/8",
  B: "[~@31 eb3, [bb2,d3] f2 bb2 f2 g2 d2 eb2 f2 bb2 f2 bb2 f2 g2 d2 eb2 f2, ~ f3@2 f3@2 f3@2 eb3@2 d3@2 d3@2 c3@2 f3@2 f3@2 f3@2 f3@2 eb3@2 d3@2 d3@2 c3@3]/8", // Bb
  C: "d3 ~@2 a3, bb2 f3, ~ bb3@2 ~", D: "~@3 a3, bb2 f3, ~ bb3@2 ~", E: "~ bb3 ~ f3, bb2 a2",
  F: "~@3 g3, g2 c3, ~ g3@2 ~", G: "~@3 e3, f2 c3, ~ f3@2 ~", H: "[~@5 f3 ~ c2, f2 a2 bb2 c3, ~ f3@2 f3@2 ~@3]/2",
  I: "~ f3 ~ c2, f2 c3", J: "~ g3 ~ d2, g2 d3", K: "~ eb3 ~ c2, eb2 c3", L: "~ f3 ~ bb1, f2 bb2",
  M: "[f2 bb2 ~ f2 ~@27 eb3, ~@2 f3@3 f3@2 eb3@2 d3@2 d3@2 c3@2 f3@2 f3@2 f3@2 f3@2 eb3@2 d3@2 d3@2 c3@3, ~@2 bb2 f2 g2 d2 eb2 f2 bb2 f2 bb2 f2 g2 d2 eb2 f2]/8",
  N: "[~@7 d3, [bb2,d3] f2 g2 d2, ~ f3@2 eb3@2 d3@2 ~]/2", O: "~ eb3 ~ g2, eb2 b2", P: "~ f2 ~ g1, c3 g2",
  Q: "~ c3 ~ d3, c2 d2", R: "~ eb3 e2 c2, eb2 ~",
  S: "[d3 ~@14 f3, bb2 g2 ab2 f2 bb2 g2 ab2 bb2, ~ f3@2 g3@2 eb3@2 ab3@2 f3@2 g3@2 f3@2 ~]/4",
  T: "[eb2@2 ~@29 f3, ~ eb3 e3 c3 f3 eb3 d3 bb2 eb3 d3 c3 a2 d3 c3 bb2 g2, ~@3 bb3@2 bb3@2 bb3@2 ab3@2 ab3@2 ab3@2 ab3@2 g3@2 g3@2 g3@2 g3@2 f3@2 f3@2 f3@2 ~]/8",
  U: "[~@17 c3 ~@7 c3 ~@5 d3, c3 bb2 a2 f2 bb2 d2 eb2 f2 g2 d2 eb2 g2 f2 d2 eb2 f2, ~ eb3@2 eb3@2 eb3@2 eb3@2 d3@2 d3@2 c3@2 d3@2 ~@2 d3@2 c3@2 c3@2 ~@2 d3@2 c3@2 ~]/8",
  V: "[~@7 f2, g2 eb2 f2 eb3, ~ c3@2 d3@2 c3@3]/2",
  W: "[d3 ~@30 eb3, bb2 f2 bb2 f2 g2 d2 eb2 f2 bb2 f2 bb2 f2 g2 d2 eb2 f2, ~ f3@2 f3@2 f3@2 eb3@2 d3@2 d3@2 c3@2 f3@2 f3@2 f3@2 f3@2 eb3@2 d3@2 d3@2 c3@3]/8",
  X: "[bb1,bb2]", // Bb
})).s("gm_banjo").gain(0.4).pan(0)

stack(banjo, banjo_2)