Strudelify

Le Grand Pan

Brassens Georges

KeyD majorTempo220 bpm
0:00/0:00
// Le Grand Pan — Brassens Georges
// 220 bpm, 2/2, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 220 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(220/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
const electric_guitar_jazz = note(`<
  A@4 B C D E F G H I J C D E F K L M N O P@2 Q R@2 S N T U V W X Y Z AA@3 AB AC@7 AD@8 AE AF AG AH AI AJ AK@2 AL AM AN
  AO@5 AP@8 AQ@8 AR Q R@2 S N T U V W X Y Z AA@3 AS@8 AD@8 AE AF AG AH AI AJ AK@2 AL AM AN AO@5 AP@8 AQ@8 AR Q R@2 S N T
  U V W X Y Z AA@3 AS@8 AD@8 AE AF AG AH AI AJ AK@2 AL AM AN AT@8 AU AV AW AX AY@2 AZ BA BB BC BD BE BF BG BH BI@2 BJ
>`.pickRestart({
  A: "~@4 [b2,d3,f#3]@3 ~@5 [b2,d3,f#3]@3 ~", B: "b2@3 ~ [d2,f#2,b2]@3 ~ d3@3 ~ [f#2,b2,d3]@2 d3@2",
  C: "b2@3 ~ [d2,f#2,b2]@3 ~@5 [f#2,b2]@3 ~, ~@8 d3@7 ~", D: "e3@3 ~ [g2,c3]@2 e3@2 g3@3 ~ [c3,e3,g3]@3 ~",
  E: "c3@3 ~ [g2,c3,e3]@3 ~ g3@3 ~ [g2,c3,g3]@3 ~", F: "f#3@3 ~ [f#2,a#2,f#3]@2 c#3@2 d3@3 ~ [f#2,a#2,e3]@3 ~",
  G: "d3@3 ~ [d2,f#2]@3 ~@5 [d2,f#2]@3 ~, ~@8 b2@7 ~", H: "c#3@3 ~ [f2,g2,c#3]@3 ~ g#2@3 ~ [f2,a#2]@2 b2@2",
  I: "c#3@3 ~ [e2,f#2,a#2]@3 ~ g2@3 ~ [e2,f#2]@3 ~", J: "b2@3 ~ [d2,f#2,b2]@3 ~ d3@3 ~ d3@2 [f#2,b2,d3]@2",
  K: "d3@3 ~ f#2@3 ~ b2@3 ~ [f#2,b2,d3]@3 ~", L: "~@4 [a2,c#3]@2 e3@2 d3@3 ~ [e2,f#2,c#3]@3 ~, f#3@3 ~@5",
  M: "~@4 [d2,f#2]@3 ~@5 [d2,f#2,b2]@3 ~, b2@5 ~@3", N: "e3@3 ~ [g2,b2,e3]@3 ~ e3@3 ~ [g2,b2,e3]@3 ~",
  O: "e3@3 ~ [g2,b2]@3 ~ e3@3 ~ [g2,b2,f#3]@3 ~", // G Gmaj7
  P: "[~@4 [g2,b2]@3 ~ f#3@3 ~ [g2,b2]@3 ~@5 [g2,c#3]@3 ~@5 [g2,a2]@3 ~, g3@7 ~@5 e3@11 ~@9]/2", // G Gdim Gsus2
  Q: "d3@3 ~ [f#2,a2,c#3]@3 ~ b2@3 ~ [f#2,a2,c#3]@3 ~", // F#m
  R: "[~@4 [f#2,a2]@3 ~ c#3@3 ~ [f#2,a2]@3 ~@5 [f#2,a2,c#3]@3 ~ d3@3 ~ [f#2,a2,e3]@3 ~, d3@7 ~@5 b2@7 ~@13]/2", // F#m F#m7
  S: "f#3@3 ~ [a2,b2,d#3]@3 ~@5 [a2,b2]@3 ~", T: "~@4 [g2,b2]@3 ~@5 [g2,b2]@3 ~, e3@11 ~@5",
  U: "~@4 [g2,b2]@2 f#3@2 g3@3 ~ [g2,b2,f#3]@3 ~, e3@3 ~@5", V: "~@4 [g2,b2]@3 ~@5 [g2,b2]@3 ~, e3@7 ~@9",
  W: "d3@3 ~ [f#2,b2]@3 ~ d3@3 ~ [f#2,b2,e3]@3 ~", X: "f#3@3 ~ [b2,d3,b3]@3 ~ f#3@3 ~ [f#2,b2,e3]@3 ~",
  Y: "~@4 [g#2,b2]@3 ~@5 [e2,a#2]@3 ~, d3@7 ~ c#3@7 ~", Z: "[d2,f#2,b2]@3 ~@5 b2@3 ~ d3@2 e3@2",
  AA: "[~@4 [a2,d3]@3 ~ b3@3 ~ [d3,f#3]@3 ~@5 [d3,f#3]@3 ~ d4@3 ~ [d3,f#3,b3]@2 a3@5 ~ [a2,d3]@3 ~@5 [a2,d3,a3]@3 ~, f#3@7 ~@5 a3@11 ~@13 f#3@7 ~@5]/3", // D5 D Bm D5
  AB: "~@4 [g2,c3]@3 ~ g3@3 ~ [g2,c3,f#3]@2 e3@2, e3@7 ~@9", // C5 C
  AC: "[~@4 [d2,f#2]@3 ~ f#3@3 ~ g2@3 ~@5 [e2,g2]@3 ~ g3@3 ~ [f#2,a#2]@3 ~@5 [f#2,a#2]@3 ~ e3@3 [c#3,e3,a3]@2 g3@3 [b2,d3,f#3]@3 ~@5 b2@3 ~ d3@2 e3@2 ~@4 [a2,d3]@3 ~ b3@3 ~ [d3,f#3]@3 ~@5 [d3,f#3]@3 ~ d4@3 ~ [d3,f#3,b3]@2 a3@2 ~@4 [a2,d3]@3 ~ a3@3 ~ [g2,c3,e3]@4, b2@7 ~@5 c3@96 ~@4, ~@28 c#3@11 ~@25 f#3@7 ~@5 a3@11 ~@9 f#3@7 ~@9]/7", // D Em F# A Bm D5 D Bm …
  AD: "[~@4 g2@3 ~ g3@3 ~ [g2,f#3]@2 e3@2 ~@4 [f#2,b2]@3 ~@5 [b2,d3,f#3]@3 ~@5 [e2,a2]@3 ~@5 [c#2,e2]@3 ~@5 [d2,f#2]@3 ~@5 [d2,f#2]@3 ~@5 [e2,g2]@3 ~@5 [e2,g2,a2]@3 ~ d3@3 ~ [a2,e3]@3 ~ f#3@3 ~ [a2,d3,g3]@3 ~@5 [a2,c#3]@3 ~ a3@3 ~ [a2,d3]@3 ~@5 [a2,d3]@3 ~ d3@3 [a2,d3,e3]@2 f#3@3, ~ c3@2 c3@29, ~@16 d3@11 ~@5 c#3@7 ~ a2@7 ~ b2@19 ~@29 e3@7 ~@5 f#3@11 ~@9]/8", // Gmaj7 B5 Bm A5 C#m D Em A7 …
  AE: "~@4 [a2,c#3]@3 ~@5 [g2,a2]@3 ~, e3@7 ~@9", AF: "d3@3 ~ [a2,d3,e3]@3 ~ f#3@3 ~ [a2,d3,g3]@3 ~",
  AG: "~@4 [a2,c#3]@3 ~ a3@3 ~ [a2,c#3,g3]@3 ~, e3@7 ~@9", AH: "~@4 [a2,d3]@3 ~ a2@3 ~ [f#2,a#2]@3 ~, f#3@7 ~@9",
  AI: "f#3@3 ~ [a#2,c#3,e3]@3 ~@5 f#2@3 ~", AJ: "b2@3 ~ [d2,f#2,b2]@3 ~ c#3@3 ~ [f#2,b2,d3]@3 ~",
  AK: "[~@4 [e2,a#2]@3 ~ f#3@3 ~ [f#2,b2]@3 ~@5 [f#2,b2]@3 ~ b2@3 [d2,f#2,a#2]@2 b2@3, c#3@7 ~@5 d3@11 ~@9]/2", // Edim B5 Daug
  AL: "d3@3 ~ [e2,a#2,c#3]@3 ~@5 [f#2,b2]@3 ~", AM: "g3@3 ~ [g2,b2,e3]@3 ~ f#3@3 ~ [b2,e3,g3]@3 ~",
  AN: "~@4 [b2,d3]@2 b3@2 f#3@3 ~ [b2,e3]@3 ~, f#3@3 ~@5", // Bm E5
  AO: "[~@4 g2@3 ~@5 [e2,a#2]@3 ~@5 [d2,f#2]@3 ~ [d3,f#3,b3]@3 ~@5 b2@3 ~ [d2,f#2,b2]@3 ~ d3@3 ~ [f#2,b2,d3]@2 d3@2 b2@3 ~ [d2,f#2,b2]@3 ~@5 [f#2,b2]@3 ~ e3@3 ~ g2@2 e3@2 g3@3 ~ [c3,e3,g3]@3 ~, d3@7 ~ c#3@7 ~ b2@7 ~@33 d3@7 ~@17, ~ c3@16 c3@2 ~]/5", // Edim D Bm B5 C
  AP: "[c3@4 [g2,e3]@3 ~ g3@3 ~ [g2,g3]@3 ~ f#3@3 ~ [f#2,a#2,f#3]@2 c#3@2 d3@3 ~ [f#2,a#2,e3]@3 ~ d3@3 ~ [d2,f#2]@3 ~@5 [d2,f#2]@3 ~ c#3@3 ~ [f2,g2,c#3]@3 ~ g#2@3 ~ [f2,a#2]@2 b2@2 c#3@3 ~ [e2,f#2,a#2]@3 ~ g2@3 ~ [e2,f#2]@3 ~ b2@3 ~ [d2,f#2,b2]@3 ~ d3@3 ~ d3@2 [f#2,b2,d3]@2 b2@3 ~ [d2,f#2,b2]@3 ~@5 [f#2,b2]@3 ~ e3@3 ~ g2@2 e3@2 g3@3 ~ [c3,e3,g3]@3 ~, ~ c3@2 c3@26 c3@2 ~, ~@40 b2@7 ~@57 d3@7 ~@17]/8", // C G F# F#7 D Gm7b5 A#5 F#7 …
  AQ: "[c3@4 [g2,e3]@3 ~ g3@3 ~ [g2,g3]@3 ~ f#3@3 ~ [f#2,a#2,f#3]@2 c#3@2 d3@3 ~ [f#2,a#2,e3]@3 ~ d3@3 ~ f#2@3 ~ b2@3 ~ [f#2,b2,d3]@3 ~@5 [a2,c#3]@2 e3@2 d3@3 ~ [e2,f#2,c#3]@3 ~@5 [d2,f#2]@3 ~@5 [d2,f#2,b2]@3 ~ e3@3 ~ [g2,b2,e3]@3 ~ e3@3 ~ [g2,b2,e3]@3 ~ e3@3 ~ [g2,b2]@3 ~ e3@3 ~ [g2,b2,f#3]@3 ~@5 [g2,b2]@3 ~ f#3@3 ~ [g2,b2,e3]@4, ~ c3@2 c3@29, ~@48 f#3@6 ~@10 b2@10 ~@38 g3@7 ~@9]/8", // C G F# F#7 Bm A F#7 D …
  AR: "~@4 [g2,c#3]@3 ~@5 [g2,a2]@3 ~", // Gdim Gsus2
  AS: "[~@4 g2@3 ~ g3@3 ~ [g2,f#3]@2 e3@2 ~@4 [d2,f#2]@3 ~ f#3@3 ~ g2@3 ~@5 [e2,g2]@3 ~ g3@3 ~ [f#2,a#2]@3 ~@5 [f#2,a#2]@3 ~ e3@3 [c#3,e3,a3]@2 g3@3 [b2,d3,f#3]@3 ~@5 b2@3 ~ d3@2 e3@2 ~@4 [a2,d3]@3 ~ b3@3 ~ [d3,f#3]@3 ~@5 [d3,f#3]@3 ~ d4@3 ~ [d3,f#3,b3]@2 a3@2 ~@4 [a2,d3]@3 ~ a3@3 ~ [g2,c3,e3]@4, e3@7 ~@9 b2@7 ~@21 c#3@11 ~@25 f#3@7 ~@5 a3@11 ~@9 f#3@7 ~@9, ~ c3@2 c3@4 c3@24 ~]/8", // Gmaj7 D Em F# A Bm D5 D …
  AT: "[~@4 g2@3 ~@5 [e2,a#2]@3 ~ [d2,f#2,b2]@7 ~@5 [e2,g2,a2]@3 ~ f#3@3 ~ [a2,d3,f#3]@3 ~ f#3@3 ~ [a2,d3,f#3]@3 ~@5 [a2,d3]@3 ~ g3@3 [d3,f#3,a3]@2 b3@3 ~@4 [b2,d#3]@3 ~@5 [b2,d#3,g3]@3 ~ f#3@3 ~ [g2,b2,e3]@3 ~@5 [g2,b2,e3]@3 ~ d3@3 ~ [f#2,b2,d3]@3 ~ d3@3 ~ [f#2,b2,d3]@3 ~@5 [f#2,b2]@3 ~ e3@3 [b2,d3,f#3]@2 g3@3, d3@7 ~ c#3@7 ~@33 f#3@7 ~@9 a3@11 ~@37 d3@7 ~@9, ~ c3@31]/8", // Edim Bm A7 D D5 D B Baug …
  AU: "~@4 [a#2,c#3]@3 ~@5 [a#2,c#3,e3]@3 ~, f#3@11 ~@5", AV: "d3@3 ~ [f#2,a#2]@3 ~@5 [f#2,a#2]@3 ~, ~@4 c#3@11 ~",
  AW: "~@4 [g2,b2]@3 ~ d3@3 ~ [g2,b2]@3 ~", AX: "a2@3 ~ [g2,c#3]@3 ~ e3@3 ~ [c#3,e3,a3]@3 ~",
  AY: "[~@4 [a2,d3]@3 ~@5 [a2,d3]@3 ~@5 [a2,d3]@3 ~@5 d3@3 ~, f#3@23 ~@9]/2", // D5
  AZ: "f#3@3 ~ [a2,d3,f#3]@3 ~ f#3@3 ~ [a2,d3,g3]@3 ~", BA: "~@4 e3@3 ~ b3@3 ~ [c3,e3,c4]@3 ~, a3@7 ~@9, ~ c3@2 ~",
  BB: "~@4 [b2,d#3]@3 ~ a3@3 ~ [b2,d#3,g3]@3 ~, b3@7 ~@9", BC: "f#3@3 ~ [g2,b2]@3 ~@5 [g2,b2]@3 ~, ~@4 e3@7 ~@5",
  BD: "d3@3 ~ b2@2 c#3@2 d3@3 ~ [b2,e3]@3 ~", BE: "~@4 [b2,d3]@3 ~ g3@3 ~ [b2,d3,a3]@3 ~, f#3@7 ~@9",
  BF: "~@4 [a#2,c#3]@3 ~ f#3@3 ~ [a#2,c#3,e3]@3 ~, g3@7 ~@9", // A#m A#dim
  BG: "d3@3 ~ [f#2,a#2]@3 ~@5 [f#2,b2]@2 c#3@2, ~@4 c#3@7 ~@5", BH: "~@4 [g2,b2]@7 ~ b2@2 c#3@2, d3@11 ~@5",
  BI: "[~@8 e3@3 ~ [e2,a2,c#3]@11 ~ a2@3 ~ c#3@3 ~, d3@7 ~@25, ~@4 [g2,b2]@7 ~@13 [c#2,e2]@7 ~]/2", // A G C#m
  BJ: "[d2,f#2,b2]@11 ~@5", // Bm
})).s("gm_electric_guitar_jazz").gain(0.41).pan(0.9)

// bass · contrabass
const bass = note(`<
  A@5 B C D E A F G H B C D E A E I J@3 K L@2 M I J@3 N A O P Q L R@2 S T U V W L@3 S T X H Y L Z L Z L Z M AA A AB O AB
  AC O P AD A B C D E A F G H B C D E A E I J@3 K L@2 M I J@3 N A O P Q L R@2 S T U V W L@3 S T X H Y L Z L Z L Z M AA A
  AB O AB AC O P AD A B C D E A F G H B C D E A E I J@3 K L@2 M I J@3 N A O P Q L R@2 S T U V W L@3 S T X H Y L Z L Z L
  Z M AA A AB O AB AC O P Y L R AE N A O AF@2 AG AH L AI R AJ AE N AE@2 AK AB AL AM@2 AN
>`.pickRestart({
  A: "b2@3 ~@5 f#2@3 ~@5", B: "b2@3 ~@5 f#2@3 ~ b2@3 ~", C: "c3@3 ~@5 g2@3 ~@5", D: "c3@3 ~@5 g2@3 ~ c3@3 ~",
  E: "c#3@3 ~@5 f#2@3 ~@5", F: "c#3@3 ~@5 c#2@3 ~@5", G: "f#2@3 ~ e2@3 ~ d2@3 ~ c#2@3 ~", H: "b1@3 ~@5 f#2@3 ~@5",
  I: "b2@3 ~ a2@3 ~ g2@3 ~ f#2@3 ~", J: "e2@3 ~@5 b1@3 ~@5", K: "e2@3 ~ a1@3 ~ b1@3 ~ c#2@3 ~", L: "d2@3 ~@5 a1@3 ~@5",
  M: "d2@3 ~@5 f#2@3 ~@5", N: "e2@3 ~@5 e2@3 ~@5", O: "b2@3 ~@5 b2@3 ~@5", P: "f2@3 ~@5 f#2@3 ~@5", Q: "b1@3 ~@13",
  R: "d2@3 ~@5 d2@3 ~@5", S: "c2@3 ~@5 c2@3 ~@5", T: "b1@3 ~@5 b1@3 ~@5", U: "c2@3 ~@5 e2@3 ~@5",
  V: "f#2@3 ~@5 c#2@3 ~@5", W: "b1@3 ~ a#1@3 ~ b1@3 ~ c#2@3 ~", X: "a1@3 ~@5 a1@3 ~@5",
  Y: "b2@3 ~ a1@3 ~ b1@3 ~ c#2@3 ~", Z: "c#2@3 ~@5 a1@3 ~@5", AA: "a#2@3 ~ f#2@3 ~ g#2@3 ~ a#2@3 ~",
  AB: "f#2@3 ~@5 f#2@3 ~@5", AC: "b2@3 ~@5 e2@3 ~@5", AD: "b2@3 ~@5 b1@3 ~@5", AE: "f#2@3 ~@5 b1@3 ~@5",
  AF: "a#2@3 ~@5 f#2@3 ~@5", AG: "g2@3 ~@5 g2@3 ~@5", AH: "a2@3 ~@5 a2@3 ~@5", AI: "d2@3 ~ a1@3 ~ b1@3 ~ c#2@3 ~",
  AJ: "a2@3 ~@5 e2@3 ~@5", AK: "c#2@3 ~@5 c#2@3 ~ f#1@3 ~", AL: "g2@7 ~@9", AM: "[g2@7 ~@5 a2@11 ~ a1@7 ~]/2",
  AN: "b1@11 ~@5",
})).s("gm_contrabass").gain(0.41).pan(0.2)

stack(electric_guitar_jazz, bass)

More by Brassens Georges