Strudelify

Le mauvais sujet repenti

Brassens Georges

KeyB♭ majorTempo130 bpm
0:00/0:00
// Le mauvais sujet repenti — Brassens Georges
// 130 bpm, 2/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 167 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(130/2)

// 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 · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  A@4 ~ B@2 C D E@2 F@2 G@2 H I J@2 K L C B@3 C D E@2 F@2 G@2 H I J@2 K L C B@3 C D E@2 F@2 G@2 H I J@2 K L C B@3 C D
  E@2 F@2 G@2 H I J@2 K L C B@3 C D E@2 F@2 G@2 H I J@2 K M@3 N@2 O P Q@2 R@2 S@2 T U V@2 W X O N@3 O P Q@2 R@2 S@2 T U
  V@2 W X O N@3 O P Q@2 R@2 S@2 T U V@2 W X O N@3 O P Q@2 R@2 S@2 T U V@2 W Y@3
>`.pickRestart({
  A: "[c4@4 c4@4 db4@4 eb4@4 db4@4 c4@4 db4@4 eb4@4 f4@4 g4@4 ab4@4 [c4,eb4,ab4,bb4]@7 ~ [bb3,d4,ab4,bb4]@7 ~ [g3,bb3,db4,eb4]@4, ~@12 ab3@14 ~@2 [ab3,c4]@7 ~ [ab3,eb4]@7 ~@21, ~@3 c4@2 ~@11]/4", // Ab Bb7 Eb7 Ab Ab5
  B: "[ab3,c4,eb4] ~ [g3,db4,eb4] ~", C: "[ab3,c4,eb4] ~ [ab3,c4,eb4] ~", D: "[ab3,c4,eb4] ~ [b3,f4,g4] ~",
  E: "[c4,eb4,g4] ~ [b3,f4,g4] ~", F: "[c4,eb4,g4] ~ [c4,eb4,g4] ~", G: "[b3,d4,f4,ab4] ~ [b3,d4,f4,ab4] ~",
  H: "[g3,c4,eb4,g4] ~ [g3,c4,eb4,g4] ~", I: "[g3,c4,eb4] ~ [g3,eb4,g4] ~", J: "[ab3,db4,f4] ~ [ab3,db4,f4] ~",
  K: "[ab3,c4,eb4] ~ [ab3,c4,eb4] [g3,db4,eb4]", L: "~ [ab3,db4,f4]@5 ~ [g3,db4,eb4]@5 ~@4",
  M: "[~ [ab3,db4,f4]@5 ~ [g3,db4,eb4]@5 [ab3,c4,eb4,ab4]@14 ~@2 [a3,c4,eb4,f4,a4]@7 ~@13]/3", // Db Eb7 Ab F7
  N: "[bb3,d4,f4] ~ [a3,eb4,f4] ~", O: "[bb3,d4,f4] ~ [bb3,d4,f4] ~", P: "[bb3,d4,f4] ~ [db4,g4,a4] ~",
  Q: "[d4,f4,a4] ~ [db4,g4,a4] ~", R: "[d4,f4,a4] ~ [d4,f4,a4] ~", S: "[db4,e4,g4,bb4] ~ [db4,e4,g4,bb4] ~",
  T: "[a3,d4,f4,a4] ~ [a3,d4,f4,a4] ~", U: "[a3,d4,f4] ~ [a3,f4,a4] ~", V: "[bb3,eb4,g4] ~ [bb3,eb4,g4] ~",
  W: "[bb3,d4,f4] ~ [bb3,d4,f4] [a3,eb4,f4]", X: "~ [bb3,eb4,g4]@5 ~ [a3,eb4,f4]@5 ~@4",
  Y: "[~ [bb3,eb4,g4]@5 ~ [a3,eb4,f4]@5 [bb3,d4,f4,bb4]@7 ~@9 [a4,eb5,f5]@7 ~@9 [bb4,d5,f5,bb5]@2 ~@2]/3", // Eb F7 Bb F7 Bb
})).s("gm_acoustic_guitar_nylon").gain(0.33).pan(1)

// bass · fretless bass
const bass = note(`<
  A@4 B@8 C@7 D@8 E@8 F@8 G@8 H@8 I@8 J@8 K@8 L@8 M@8 N@8 O@8 P@8 Q@8 R@8 S@8 T@8 U@8 V@4
>`.pickRestart({
  A: "[~@12 ab2@7 ~ eb2@7 ~ ab2@7 ~ c3@7 ~ f2@7 ~ bb2@7 ~ eb2@4]/4",
  B: "[~@12 ab2@7 ~ eb2@7 ~ ab2@7 ~ eb2@7 ~ ab2@7 ~ eb2@7 ~ ab2@7 ~ g2@7 ~ c3@7 ~ g2@7 ~ c3@7 ~ g2@7 ~ c3@7 ~ g2@7 ~ c2@4]/8",
  C: "[~@4 c3@7 ~ f3@7 ~ d3@7 ~ b2@7 ~ g2@7 ~ c3@7 ~ g2@7 ~ eb2@7 ~ c2@7 ~ db3@7 ~ db3@7 ~ bb2@7 ~ bb2@7 ~ eb3@4]/7",
  D: "[~@4 eb3@7 ~ eb2@9 ~@2 eb2@5 ab2@7 ~ eb2@7 ~ ab2@7 ~ eb3@7 ~ ab2@7 ~ eb2@7 ~ ab2@7 ~ eb2@7 ~ ab2@7 ~ eb2@7 ~ ab2@7 ~ g2@7 ~ c3@4]/8",
  E: "[~@4 g2@7 ~ c3@7 ~ g2@7 ~ c3@7 ~ g2@7 ~ c2@7 ~ c3@7 ~ f3@7 ~ d3@7 ~ b2@7 ~ g2@7 ~ c3@7 ~ g2@7 ~ eb2@7 ~ c2@7 ~ db3@4]/8",
  F: "[~@4 db3@7 ~ bb2@7 ~ bb2@7 ~ eb3@7 ~ eb3@7 ~ eb2@9 ~@2 eb2@5 ab2@7 ~ eb2@7 ~ ab2@7 ~ eb3@7 ~ ab2@7 ~ eb2@7 ~ ab2@7 ~ eb2@7 ~ ab2@4]/8",
  G: "[~@4 eb2@7 ~ ab2@7 ~ g2@7 ~ c3@7 ~ g2@7 ~ c3@7 ~ g2@7 ~ c3@7 ~ g2@7 ~ c2@7 ~ c3@7 ~ f3@7 ~ d3@7 ~ b2@7 ~ g2@7 ~ c3@4]/8",
  H: "[~@4 g2@7 ~ eb2@7 ~ c2@7 ~ db3@7 ~ db3@7 ~ bb2@7 ~ bb2@7 ~ eb3@7 ~ eb3@7 ~ eb2@9 ~@2 eb2@5 ab2@7 ~ eb2@7 ~ ab2@7 ~ eb3@7 ~ ab2@4]/8",
  I: "[~@4 eb2@7 ~ ab2@7 ~ eb2@7 ~ ab2@7 ~ eb2@7 ~ ab2@7 ~ g2@7 ~ c3@7 ~ g2@7 ~ c3@7 ~ g2@7 ~ c3@7 ~ g2@7 ~ c2@7 ~ c3@7 ~ f3@4]/8",
  J: "[~@4 d3@7 ~ b2@7 ~ g2@7 ~ c3@7 ~ g2@7 ~ eb2@7 ~ c2@7 ~ db3@7 ~ db3@7 ~ bb2@7 ~ bb2@7 ~ eb3@7 ~ eb3@7 ~ eb2@9 ~@2 eb2@5 ab2@4]/8",
  K: "[~@4 eb2@7 ~ ab2@7 ~ eb3@7 ~ ab2@7 ~ eb2@7 ~ ab2@7 ~ eb2@7 ~ ab2@7 ~ eb2@7 ~ ab2@7 ~ g2@7 ~ c3@7 ~ g2@7 ~ c3@7 ~ g2@7 ~ c3@4]/8",
  L: "[~@4 g2@7 ~ c2@7 ~ c3@7 ~ f3@7 ~ d3@7 ~ b2@7 ~ g2@7 ~ c3@7 ~ g2@7 ~ eb2@7 ~ c2@7 ~ db3@7 ~ db3@7 ~ bb2@7 ~ bb2@7 ~ eb3@4]/8",
  M: "[~@4 eb3@7 ~ eb2@9 ~@2 eb2@5 ab2@7 ~ g2@7 ~ f2@7 ~@9 bb2@7 ~ f2@7 ~ bb2@7 ~ f2@7 ~ bb2@7 ~ f2@7 ~ bb2@7 ~ a2@7 ~ d3@4]/8",
  N: "[~@4 a2@7 ~ d3@7 ~ a2@7 ~ d3@7 ~ a2@7 ~ d2@7 ~ d3@7 ~ g3@7 ~ e3@7 ~ db3@7 ~ a2@7 ~ d3@7 ~ a2@7 ~ f2@7 ~ d2@7 ~ eb3@4]/8",
  O: "[~@4 eb3@7 ~ c3@7 ~ c3@7 ~ f3@7 ~ f3@7 ~ f2@9 ~@2 f2@5 bb2@7 ~ f2@7 ~ bb2@7 ~ f3@7 ~ bb2@7 ~ f2@7 ~ bb2@7 ~ f2@7 ~ bb2@4]/8",
  P: "[~@4 f2@7 ~ bb2@7 ~ a2@7 ~ d3@7 ~ a2@7 ~ d3@7 ~ a2@7 ~ d3@7 ~ a2@7 ~ d2@7 ~ d3@7 ~ g3@7 ~ e3@7 ~ db3@7 ~ a2@7 ~ d3@4]/8",
  Q: "[~@4 a2@7 ~ f2@7 ~ d2@7 ~ eb3@7 ~ eb3@7 ~ c3@7 ~ c3@7 ~ f3@7 ~ f3@7 ~ f2@9 ~@2 f2@5 bb2@7 ~ f2@7 ~ bb2@7 ~ f3@7 ~ bb2@4]/8",
  R: "[~@4 f2@7 ~ bb2@7 ~ f2@7 ~ bb2@7 ~ f2@7 ~ bb2@7 ~ a2@7 ~ d3@7 ~ a2@7 ~ d3@7 ~ a2@7 ~ d3@7 ~ a2@7 ~ d2@7 ~ d3@7 ~ g3@4]/8",
  S: "[~@4 e3@7 ~ db3@7 ~ a2@7 ~ d3@7 ~ a2@7 ~ f2@7 ~ d2@7 ~ eb3@7 ~ eb3@7 ~ c3@7 ~ c3@7 ~ f3@7 ~ f3@7 ~ f2@9 ~@2 f2@5 bb2@4]/8",
  T: "[~@4 f2@7 ~ bb2@7 ~ f3@7 ~ bb2@7 ~ f2@7 ~ bb2@7 ~ f2@7 ~ bb2@7 ~ f2@7 ~ bb2@7 ~ a2@7 ~ d3@7 ~ a2@7 ~ d3@7 ~ a2@7 ~ d3@4]/8",
  U: "[~@4 a2@7 ~ d2@7 ~ d3@7 ~ g3@7 ~ e3@7 ~ db3@7 ~ a2@7 ~ d3@7 ~ a2@7 ~ f2@7 ~ d2@7 ~ eb3@7 ~ eb3@7 ~ c3@7 ~ c3@7 ~ f3@4]/8",
  V: "[~@4 f3@7 ~ f2@9 ~@2 f2@5 bb2@7 ~@9 f2@7 ~@9 bb1@2 ~@2]/4",
})).s("gm_fretless_bass").gain(0.46).pan(0)

stack(acoustic_guitar_nylon, bass)

More by Brassens Georges