Strudelify

Chanson pour l'Auvergnat

Brassens Georges

KeyE minorTempo180 bpm
0:00/0:00
// Chanson pour l'Auvergnat — Brassens Georges
// 180 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 5 "** OK **" pad poly (copy of ch 3 "** OK **" accordion)
// note: Full arrangement: all 148 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(180/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 · acoustic bass · "** OK **"
const bass = note(`<
  A@3 B@3 C@3 B@3 D@2 E B@3 C@3 B@3 F@3 G@3 H@3 I J@2 K@2 L M@3 N@3 O@3 P@3 Q@3 R@3 S@3 T@3 U@3 R@3 S@3 V@6 W@3 X@2 Y
  Z@3 AA@3 R@3 AB@3 AC AD@2 AE AF@2 AG@3 AH AI@2 AJ@3 AK AL@2 AG@3 AH AI@2 AM@3 AN@3 AO@3 AP@3 AQ AR@2 AS AT@2 AG@3 AH
  AU@2 AV@2 AW@2
>`.pickRestart({
  A: "[e3@12 b2@12 e3@12 b2@3 ~ c#3@3 ~ d#3@3 ~]/3", B: "[e3 b2 f#3 b2]/3", C: "[f#3@6 b2@6 e3@6 b2@2 c#3 ~ d#3@2]/3",
  D: "[c3@6 f#2@5 ~ b2@2 c3 ~]/2", E: "b2@4 a2@4 g2@2 ~@2 f#2@3 ~",
  F: "[a2@3 d2@3 ~ d3 ~ d3 g2 d3, ~@2 g2 ~, ~@8 g3@3 ~]/3", G: "[e3 c3 d2 g2]/3", H: "[e3 a2 f#2 e3]/3",
  I: "f#3@6 b2 ~", J: "[c#3 ~ d#3@2 e3@6 e2 ~ e3 ~ d3@2]/2", K: "[c3@5 ~ [f#2,f#3]@5 ~ b2 ~ c3 ~]/2",
  L: "b2@2 a2@2 g2 ~ f#2@2", M: "[e2 b2 f#3 b2]/3", N: "[f#3@6 b2@6 e3@6 b2@2 c#3 ~ d#3 ~]/3", O: "[e3 e2 a2 d3]/3",
  P: "[c3 a2 b2 e3@3 b2@3 e3@3]/3", Q: "[b2@3 ~ c#3@3 ~ d#3@3 ~ e3@12 b2@12 f#3@12]/3", R: "[b2 f#3 b2 e3]/3",
  S: "[b2@2 c#3 ~ d#3@2 e3@6 b2@6 f#3@6]/3", T: "[b2@6 c3@6 f#2@5 ~ b2@2 c3 ~ b2@2]/3",
  U: "[a2@4 g2@2 ~@2 f#2@3 ~ e3@12 b2@12 f#3@12]/3",
  V: "[b2@3 a2@3 d2@3 ~ d3 ~ d3 g2 d3 e3@3 c3@3 d2@3, ~@3 g2 ~@4, ~@11 g3@3 ~@10]/6", W: "[g2 e3 a2 f#2]/3",
  X: "[e3@6 f#3@6 b2 ~ c#3 ~]/2", Y: "d#3 e3@3", Z: "[e2 ~ e3 ~ d3@2 c3@5 ~ [f#2,f#3]@5 ~ b2 ~ c3 ~ b2@2]/3",
  AA: "[a2@2 g2 ~ f#2@2 e2@6 b2@6 f#3@6]/3", AB: "[b2@2 c#3 ~ d#3 ~ e3@6 e2@6 a2@6]/3", AC: "d3@3 c3",
  AD: "[a2 b2 e3@3 b2@3]/2", AE: "e3@12 b2@3 ~", AF: "[c#3@3 ~ d#3@3 ~ e3@12 b2@12]/2", AG: "[f#3 b2 f#3 b2]/3",
  AH: "e3@3 b2", AI: "[c#3 ~ d#3@2 e3@6 b2@6]/2", AJ: "[f#3@6 b2@6 c3@6 f#2@5 ~]/3", AK: "b2@2 c3 ~ b2@2 a2@2",
  AL: "[g2@2 ~@2 f#2@3 ~ e3@12 b2@12]/2", AM: "[f#3 b2 a2 d2]/3",
  AN: "[~ d3 ~ d3 g2 d3 e3@3 c3@3, g2 ~@3, ~@2 g3@3 ~@7]/3", AO: "[d2 g2 e3 a2]/3",
  AP: "[f#2@6 e3@6 f#3@6 b2 ~ c#3 ~ d#3@2]/3", AQ: "e3@6 e2 ~", AR: "[e3 ~ d3@2 c3@5 ~ [f#2,f#3]@5 ~]/2",
  AS: "b2 ~ c3 ~ b2@2 a2@2", AT: "[g2 ~ f#2@2 e2@6 b2@6]/2", AU: "[c#3 ~ d#3 ~ e3@6 e2@6]/2",
  AV: "[a2@3 d3@2 ~ c3 a2]/2", AW: "[b2@4 e3@3 ~ b2@3 ~ e2@8 ~@12]/2",
})).s("gm_acoustic_bass").gain(0.31)

// chords · acoustic guitar nylon · "** OK **"
const acoustic_guitar_nylon = note(`<
  A B C A D E F G H A D E I J K A D E F G H A D E L M N O P Q R S T U V H W X K Y Z K AA AB AC Y AD AE AF B H AG B AH F
  AI AJ A B AH F AK AL AA B AH F AI AJ A B AH F AM AN AO AP AQ AR AS AT R AU AV A AW AX AA AY AZ AA BA BB Y AY BC BD BE
  H A BF H F AI E A B H F BG BH AA AB H F AI E A B H F BI BJ AO BK BL BM BN BO BP BQ BR A BS BT AA AB AC AA BA K Y AY AC
  BU BV BW@2
>`.pickRestart({
  A: "~@4 [b3,e4,g4] ~@3 [b3,e4,g4]@2 ~@6", B: "[b3,e4,g4] ~@3 [b3,e4,g4]@2 ~@6 [b3,e4,g4] ~@3",
  C: "[b3,e4,g4]@2 ~@11 c#-1@2 ~", D: "[b3,e4,g4] ~@3 [b3,e4,g4]@2 ~@6 [b3,d#4,f#4] ~@3",
  E: "[b3,d#4,f#4]@2 ~@6 [b3,d#4,f#4] ~@3 [b3,d#4,f#4]@2 ~@2", F: "~@4 [b3,d#4,f#4] ~@3 [b3,d#4,f#4]@2 ~@6",
  G: "[b3,d#4,f#4] ~@3 [b3,d#4,f#4]@2 ~@6 [b3,e4,g4] ~@3", H: "[b3,e4,g4]@2 ~@6 [b3,e4,g4] ~@3 [b3,e4,g4]@2 ~@2",
  I: "~@4 [a3,c4,e4] ~@3 [a3,c4,e4]@3 ~@5", J: "[a3,c4,e4] ~@3 [a3,c4,e4]@3 ~@5 [b3,d#4,f#4] ~@3",
  K: "[b3,d#4,f#4]@3 ~@5 [b3,d#4,f#4] ~@3 [b3,d#4,f#4]@3 ~", L: "~@4 [c4,e4,a4] ~@3 [c4,e4,a4]@3 ~@5",
  M: "[c4,d4,f#4,a4] ~@3 [c4,d4,f#4,a4]@3 ~@5 [d4,g4,b4] ~@3", N: "[d4,g4,b4]@3 ~@5 [d4,g4,b4] ~@3 [d4,g4,b4]@3 ~",
  O: "~@4 [d4,e4,g#4,b4]@2 ~@2 [d4,e4,g#4,b4]@3 ~@5", P: "[c4,e4,a4]@2 ~@2 [c4,e4,a4]@3 ~@5 [c4,f#4,a4]@2 ~@2",
  Q: "[c4,f#4,a4]@3 ~@5 [b3,d4,g4]@2 ~@2 [b3,d4,g4]@3 ~", R: "~@4 [e4,g4,b4]@2 ~@2 [e4,g4,b4]@3 ~@5",
  S: "[e4,a4,c5]@2 ~@2 [e4,a4,c5]@3 ~@5 [d#4,f#4,b4]@2 ~@2", T: "[d#4,f#4,b4]@3 ~@5 [e4,g4,b4]@2 ~@2 [e4,g4,b4]@3 ~",
  U: "~@4 [b3,d#4,f#4]@2 ~@2 [b3,d#4,f#4]@3 ~@5", V: "[b3,d#4,f#4]@2 ~@2 [b3,d#4,f#4]@3 ~@5 [b3,e4,g4] ~@3",
  W: "~@4 [c4,e4,g4] ~@3 [c4,e4,g4]@2 ~@6", X: "[c4,e4,a4] ~@3 [c4,e4,a4]@2 ~@6 [b3,d#4,f#4] ~@3",
  Y: "~@4 [b3,e4,g4] ~@3 [b3,e4,g4]@3 ~@5", Z: "[b3,e4,g4] ~@3 [b3,e4,g4]@3 ~@5 [b3,d#4,f#4] ~@3",
  AA: "~@4 [b3,d#4,f#4] ~@3 [b3,d#4,f#4]@3 ~@5", AB: "[b3,d#4,f#4] ~@3 [b3,d#4,f#4]@3 ~@5 [b3,e4,g4] ~@3",
  AC: "[b3,e4,g4]@3 ~@5 [b3,e4,g4] ~@3 [b3,e4,g4]@3 ~", AD: "[b3,e4,g4] ~@3 [b3,e4,g4]@3 ~@5 [c#4,e4,a4] ~@3",
  AE: "[c#4,e4,a4]@3 ~@5 [d4,f#4,a4] ~@3 [d4,f#4,a4]@3 ~", AF: "g4@3 ~ [c4,e4,g4]@2 ~@2 [b3,d#4,f#4]@3 ~@5",
  AG: "~@9 c#-1@2 ~@5", AH: "[b3,e4,g4]@2 ~@6 [b3,d#4,f#4] ~@3 [b3,d#4,f#4]@2 ~@2",
  AI: "[b3,d#4,f#4] ~@3 [b3,d#4,f#4]@2 ~@6 [b3,d#4,f#4] ~@3", AJ: "[b3,d#4,f#4]@2 ~@6 [b3,e4,g4] ~@3 [b3,e4,g4]@2 ~@2",
  AK: "[a3,c4,e4] ~@3 [a3,c4,e4]@3 ~@5 [a3,c4,e4] ~@3", AL: "[a3,c4,e4]@3 ~@5 [b3,d#4,f#4] ~@3 [b3,d#4,f#4]@3 ~",
  AM: "[c4,e4,a4] ~@3 [c4,e4,a4]@3 ~@5 [c4,d4,f#4,a4] ~@3", AN: "[c4,d4,f#4,a4]@3 ~@5 [d4,g4,b4] ~@3 [d4,g4,b4]@3 ~",
  AO: "~@4 [d4,g4,b4] ~@3 [d4,g4,b4]@3 ~@5", AP: "[d4,e4,g#4,b4]@2 ~@2 [d4,e4,g#4,b4]@3 ~@5 [c4,e4,a4]@2 ~@2",
  AQ: "[c4,e4,a4]@3 ~@5 [c4,f#4,a4]@2 ~@2 [c4,f#4,a4]@3 ~", AR: "~@4 [b3,d4,g4]@2 ~@2 [b3,d4,g4]@3 ~@5",
  AS: "[e4,g4,b4]@2 ~@2 [e4,g4,b4]@3 ~@5 [e4,a4,c5]@2 ~@2", AT: "[e4,a4,c5]@3 ~@5 [d#4,f#4,b4]@2 ~@2 [d#4,f#4,b4]@3 ~",
  AU: "[b3,d#4,f#4]@2 ~@2 [b3,d#4,f#4]@3 ~@5 [b3,d#4,f#4]@2 ~@2", // B
  AV: "[b3,d#4,f#4]@3 ~@5 [b3,e4,g4] ~@3 [b3,e4,g4]@2 ~@2", AW: "[c4,e4,g4] ~@3 [c4,e4,g4]@2 ~@6 [c4,e4,a4] ~@3",
  AX: "[c4,e4,a4]@2 ~@6 [b3,d#4,f#4] ~@3 [b3,d#4,f#4]@3 ~", AY: "[b3,e4,g4] ~@3 [b3,e4,g4]@3 ~@5 [b3,e4,g4] ~@3",
  AZ: "[b3,e4,g4]@3 ~@5 [b3,d#4,f#4] ~@3 [b3,d#4,f#4]@3 ~", BA: "[b3,d#4,f#4] ~@3 [b3,d#4,f#4]@3 ~@5 [b3,d#4,f#4] ~@3",
  BB: "[b3,d#4,f#4]@3 ~@5 [b3,e4,g4] ~@3 [b3,e4,g4]@3 ~", BC: "[b3,e4,g4]@3 ~@5 [c#4,e4,a4] ~@3 [c#4,e4,a4]@3 ~",
  BD: "~@4 [d4,f#4,a4] ~@3 [d4,f#4,a4]@3 ~ g4@3 ~", BE: "[c4,e4,g4]@2 ~@2 [b3,d#4,f#4]@3 ~@5 [b3,e4,g4] ~@3",
  BF: "~@5 c#-1@2 ~@5 [b3,e4,g4] ~@3", BG: "[b3,d#4,f#4] ~@3 [b3,d#4,f#4]@2 ~@6 [a3,c4,e4] ~@3",
  BH: "[a3,c4,e4]@3 ~@5 [a3,c4,e4] ~@3 [a3,c4,e4]@3 ~", BI: "[b3,d#4,f#4] ~@3 [b3,d#4,f#4]@2 ~@6 [c4,e4,a4] ~@3",
  BJ: "[c4,e4,a4]@3 ~@5 [c4,d4,f#4,a4] ~@3 [c4,d4,f#4,a4]@3 ~", // Am D7
  BK: "[d4,g4,b4] ~@3 [d4,g4,b4]@3 ~@5 [d4,e4,g#4,b4]@2 ~@2", // G E7
  BL: "[d4,e4,g#4,b4]@3 ~@5 [c4,e4,a4]@2 ~@2 [c4,e4,a4]@3 ~", BM: "~@4 [c4,f#4,a4]@2 ~@2 [c4,f#4,a4]@3 ~@5",
  BN: "[b3,d4,g4]@2 ~@2 [b3,d4,g4]@3 ~@5 [e4,g4,b4]@2 ~@2", BO: "[e4,g4,b4]@3 ~@5 [e4,a4,c5]@2 ~@2 [e4,a4,c5]@3 ~",
  BP: "~@4 [d#4,f#4,b4]@2 ~@2 [d#4,f#4,b4]@3 ~@5", BQ: "[e4,g4,b4]@2 ~@2 [e4,g4,b4]@3 ~@5 [b3,d#4,f#4]@2 ~@2",
  BR: "[b3,d#4,f#4]@3 ~@5 [b3,d#4,f#4]@2 ~@2 [b3,d#4,f#4]@3 ~", BS: "[b3,e4,g4] ~@3 [b3,e4,g4]@2 ~@6 [c4,e4,g4] ~@3",
  BT: "[c4,e4,g4]@2 ~@6 [c4,e4,a4] ~@3 [c4,e4,a4]@2 ~@2", BU: "~@4 [c#4,e4,a4] ~@3 [c#4,e4,a4]@3 ~@5",
  BV: "[d4,f#4,a4] ~@3 [d4,f#4,a4]@3 ~ g4@3 ~ [c4,e4,g4]@2 ~@2", // D C
  BW: "[[b3,d#4,f#4]@3 ~@5 [b3,e4,g4] ~@4 [g4,b4]@10 ~@9, ~@6 [b3,e4]@5 ~@5]/2", // B Em G E5
})).s("gm_acoustic_guitar_nylon").gain(0.26)

// other · tuba · "** OK **"
const tuba = note(`<
  ~@51 A@2 B C@2 ~ D@2 E F G H@3 B C@2 ~ D@2 ~ I J K@3 L M@2 N O@2 P@3 Q@3 B C@2 ~ D@2 R S T ~@50
>`.pickRestart({
  A: "[~@3 e4@5]/2", B: "~@6 b3 ~ c4@2 b3 ~ a#3 ~ b3@2", C: "[~@2 b3 ~ c4@2 b3 ~ a#3 ~ b3@2 d#4@20]/2",
  D: "[~@2 b3@2 c4@2 b3 ~ a#3 ~ b3@2 e4@20]/2", E: "~@6 b3@2 c4@2 b3 ~ a#3 ~ b3@2",
  F: "d#4@2 c4@2 b3 ~ a#3 ~ [b3,g4]@4 [c4,e4]@4", G: "[d4,f#4] [e4,g4] [f#4,a4] [g4,b4]",
  H: "[[a4,c5] [d#4,b4]@4 ~@2 e4@5]/3", I: "~@2 b3@2 c4@2 b3 ~ g4@2 b3@2 [c4,e4]@4, ~@8 a#3 ~@7",
  J: "[d4,f#4]@4 [e4,g4]@4 [f#4,a4]@3 ~ [g4,b4]@4", K: "[[a4,c5]@4 [b4,d5]@22 ~@2 e4@11 ~ f#3@4 c4@4]/3",
  L: "d4@4 c4@11 ~", M: "[f#3 c4 d4 e3 g3 b3 f#3 a3, ~@3 b3@2 ~@3]/2", N: "c4@4 b3@8 d#3@3 ~",
  O: "[b3 e3 b3 a3@2 ~@3]/2", P: "[~@4 b3@15 ~ g3@4 b3@4 c4@8 a3@8 c4@4]/3",
  Q: "[a3@4 ~@4 f#3@4 g3@4 f#3@4 g3@4 f#3@3 ~ e4@20, ~ b3@6 ~@5]/3", R: "~@2 d#3 e3", S: "[d3,f#3] ~", T: "d#4 d#3 ~@2",
})).s("gm_tuba").gain(0.26)

// other · accordion · "** OK **"
const accordion = note(`<
  ~@100 A@2 B C@2 D E@2 F G H I A@2 B C@2 D E@2 J K L M@3 N O P Q R ~ S T U V@3 B C@2 J E@2 W@2 X ~
>`.pickRestart({
  A: "[~@2 e4@5 ~]/2", B: "~@2 b3 ~ c4@2 b3 ~ a#3 ~ b3@2 ~@2 b3 ~", C: "[c4@2 b3 ~ a#3 ~ b3@2 d#4@20 ~@4]/2",
  D: "~@7 b3", E: "[c4@2 b3 ~ a#3 ~ b3@2 e4@20 ~@4]/2", F: "~@2 b3@2 c4@2 b3 ~ a#3 ~ b3@2 d#4 ~ c4@2",
  G: "b3 ~ a#3 ~ [b3,g4]@4 [c4,e4]@4 [d4,f#4]@4", H: "[e4,g4] [f#4,a4] [g4,b4] [a4,c5]", I: "[d#4,b4]", J: "~@14 b3 ~",
  K: "c4@2 b3 ~ g4@2 b3@2 [c4,e4]@4 [d4,f#4]@4, ~@4 a#3 ~@11", L: "[e4,g4]@4 [f#4,a4]@3 ~ [g4,b4]@4 [a4,c5]@4",
  M: "[[b4,d5]@22 ~@2 e4@11 ~ f#3@4 c4@4 d4@4]/3", N: "c4@11 ~ f#3@4", O: "c4 d4 e3 g3, ~ b3", P: "b3 f#3 a3 c4",
  Q: "b3@8 d#3@3 ~ b3@4", R: "e3 b3 a3@2", S: "b3@15 ~", T: "g3 b3 c4@2", U: "a3@2 c4 a3",
  V: "[~@4 f#3@4 g3@4 f#3@4 g3@4 f#3@3 ~ e4@20 ~@4, b3 ~]/3", W: "[~ d#3 e3 [d3,f#3]@2 ~@2 d#4]/2",
  X: "d#3@2 [e3,b3,e4]@5 ~", // E5
})).s("gm_accordion").gain(0.31)

// drums · kick
const kick = s("bd").struct(`<
  A B ~ A B ~ A B ~ A B ~ A B ~ A B ~ A B ~ A B ~ A B ~ A B ~ A B ~ A B ~ A B ~ A B ~ A B ~ A B ~ C ~ D E ~ D E ~ D E ~
  D E ~ D E ~ D E ~ D E ~ D E ~ D E ~ D E ~ D E ~ D E ~ D E ~ D E ~ D E ~ D E B ~ A B ~ A B ~ A B ~ A B ~ A B ~ A B ~ A
  B ~ A B ~ A B ~ A B ~ A B ~ A B ~ A B ~ A B ~ A B ~ A B D ~
>`.pickRestart({
  A: "x", B: "~ x", C: "x ~@2 x", D: "~ x ~@2", E: "~@3 x",
})).gain(0.2)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B
  C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A
  B C A B C A B C A B C A B C A B C A B C A B C A B C A B C ~
>`.pickRestart({
  A: "~ x!2 ~", B: "x!2 ~ x", C: "x ~ x!2",
})).gain(0.31)

stack(bass, acoustic_guitar_nylon, tuba, accordion, kick, pedal_hat)

More by Brassens Georges