Strudelify

Les philistins

Brassens Georges

KeyD majorTempo95 bpm
0:00/0:00
// Les philistins — Brassens Georges
// 95 bpm, 6/8, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 51 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(95/3)

// 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 · "Chitarra"
const acoustic_guitar_nylon = note(`<
  A B@2 C D E F G H C D E F I@2 J K L M N O P Q R M N S C D E F I@2 J K L M N O P T R U N S C D E F V W
>`.pickRestart({
  A: "f#4 g4 f#4 e4 d4 c#4", B: "[[d4,f#4] ~ [b3,d4,f#4]@2 ~ [b3,d4,f#4]@2 ~ [b3,d4,f#4]@2 b4 c#5, b3 ~@4 f#4]/2",
  C: "[f#4,b4] ~ [f#4,b4]@2 c#5 [f#4,b4,d5], d5 ~@2", D: "[g4,b4] ~ [g4,b4]@2 d5 [g4,b4,e5], e5 ~@2",
  E: "[b4,d5] ~ [b4,d5,b5]@2 f#5 [f#4,b4,d5], f#5 ~@2", F: "[f4,g#4] ~ [f4,g#4] [e4,a#4] ~ [e4,a#4,d5], c#5 ~@2",
  G: "[d4,f#4,b4]@2 b4 a5 e5 a5, ~ c#5", H: "g5 d5 g5 [a#4,f#5] b4 c#5, b4 ~",
  I: "[[d4,f#4] ~ [d4,f#4]@2 ~ [d4,f#4]@2 ~ [d4,f#4]@2 e5 [b4,d5,f#5], b4@2 b4 ~@9]/2", // D Bm
  J: "[b4,e5] ~ [b4,e5]@2 g5 [b4,f#5], g5 ~@2", K: "[g4,c#5] ~ [g4,c#5]@2 a5 [a4,c#5,g5], e5 ~@2",
  L: "[a4,d5] ~ [a4,d5,b5]@2 f#5 [f#4,a4,e5], f#5 ~@2", M: "[f#4,b4] ~ [f#4,b4]@2 ~ [f#4,b4,f#5], d5 ~@2",
  N: "[f4,g#4] ~ [f4,g#4]@2 ~ [f4,g#4], c#5@2 c#5 ~@3", O: "[e4,a#4] ~ [e4,a#4]@2 e5 [a#4,c#5,f#5]",
  P: "[b4,e5] ~ [b4,e5]@2 e5 [e4,g4,c#5], g5 ~@2", Q: "[c#4,e4] ~@2 a5@2 [a4,c#5,g5], a4 [c#4,e4] ~",
  R: "[a4,d5] ~ [a4,d5,b5]@2 f#5 [a4,e5], f#5 ~@2", S: "[e4,a#4] ~ [e4,a#4]@2 b4 [e4,a#4,c#5]",
  T: "[c#4,e4] ~ [c#4,e4]@2 a5 [a4,c#5,g5], a4 ~@2", U: "[f#4,b4] ~ [f#4,b4]@2 ~ [f#4,b4,e5], d5 ~@2",
  V: "[d4,f#4] ~ [d4,f#4,b4] [a#4,c#5] ~ [a#4,c#5], b4@2 ~ f#5@3", W: "[b4,d5,f#5,b5] ~",
})).s("gm_acoustic_guitar_nylon").gain(0.41).pan(0)

// bass · acoustic bass · "Basso"
const bass = note(`<
  A B A C D C E F G C D C E B C H I J B K L M I J B K A C D C E B C H I J B K L M I N C K A C D C E O P
>`.pickRestart({
  A: "f#3 g3 f#3 e3 d3 c#3", B: "b2@2 ~ f#2@2 ~", C: "b2@2 ~ b2@2 ~", D: "e2@2 ~ e3@2 ~", E: "c#3@2 ~ f#2@2 ~",
  F: "b2@2 ~ a2@2 ~", G: "g2@2 ~ f#2@2 ~", H: "e2@2 ~ b2@2 ~", I: "a2@2 ~ a2 b2 c#3", J: "d3@2 ~ d3@2 ~",
  K: "c#3@2 ~ c#3@2 ~", L: "f#2@2 ~ f#3@2 ~", M: "e3@2 ~ e3@2 ~", N: "d3@2 ~ a2@2 ~", O: "b2@2 b2 f#2@2 f#2",
  P: "[b1,b2] ~", // B
})).s("gm_acoustic_bass").gain(0.64).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  ~
  [x ~ x ~@2 x]!5
  [~@4 x ~ x ~ x!3 ~]
  [x ~ x ~@2 x]!5
  [~@4 x ~ x ~ x!3 ~]
  [x ~ x ~@2 x]!37
  ~
>`).gain(0.41)

// drums · snare
const snare = s("sd").struct("<~ [~ x]!5 x [~ x]!5 x [~ x]!37 ~>").gain(0.41)

// drums · low tom
const low_tom = s("lt").struct("<~ [~ x]!5 [x ~@4 x ~@6] [~ x]!5 [x ~@4 x ~@6] [~ x]!37 ~>").gain(0.41)

// drums · hihat
const hihat = s("hh").struct("<~@50 x>").gain(0.41)

// drums · mid tom
const mid_tom = s("mt").struct("<~ x!5 ~ x!5 ~ x!37 ~>").gain(0.41)

// drums · splash
const splash = s("cr").struct("<~@50 x>").gain(0.41)

stack(acoustic_guitar_nylon, bass, kick, snare, low_tom, hihat, mid_tom, splash)

More by Brassens Georges