Strudelify

Gastibelza

Brassens Georges

KeyA majorTempo120 bpm
0:00/0:00
// Gastibelza — Brassens Georges
// 120 bpm, 6/8, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 2 "Chitarra" electric guitar jazz (copy of ch 1 "Melodie" muted trumpet)
// note: Full arrangement: all 141 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · electric bass pick · "Basso"
const electric_bass_pick = note(`<
  ~@3 A B C D E@3 F G@3 H G@2 I J K@2 L M G@2 E F G@3 H G@2 I J K@2 L M G@2 E F G@3 H G@2 I J K@2 L M G@2 E F G@3 H G@2
  I J K@2 L M G@2 E F G@3 H G@2 I J K@2 L M G@2 E F G@3 H G@2 I J K@2 L M G@2 E F G@3 H G@2 I J K@2 L M G@2 N O P M E Q
  N O R M E@2 I J K@2 L M S T
>`.pickRestart({
  A: "~ [g#3,c#4,e4,b4]", B: "[g#3,c#4,e4,b4] ~", C: "[c#3,f#3,a3,c#4,f#4] ~",
  D: "[d3,f#3,a3,d4,f#4] [e2,b2,e3,g#3,b3,e4]", E: "~@5 [e3,a3,c#4]@3 ~@5 [e3,a3,c#4]@3, a2 e2",
  F: "~@5 [a3,d4,f#4]@3 ~@5 [e3,g#3,d4]@3, e3 e2", G: "~@5 [a3,c#4,f#4]@3 ~@5 [a3,c#4,f#4]@3, a2 e2",
  H: "~@5 [a3,c#4,f#4]@3 ~@5 [e3,g#3,d4]@3, d3 e2", I: "~@5 [f#3,a#3,e4]@3 ~@5 [f#3,a#3,e4]@3, f#2 c#3",
  J: "~@5 [f#3,b3,d4]@3 ~@5 [f#3,b3,d4]@3, b2 f#2", K: "~@5 [f3,b3,c#4]@3 ~@5 [f3,b3,c#4]@3, c#3 g#2",
  L: "~@5 [f#3,a3,c#4]@3 ~@5 [f#3,a3,c#4]@3, f#2 c#3", M: "~@5 [e3,g#3,d4]@3 ~@5 [e3,g#3,d4]@3, e2 b2",
  N: "~@5 [a3,c#4,e4]@3 ~@5 [a3,c#4,e4]@3, e3!2", O: "~@5 [a3,c#4,f4]@3 ~@5 [a3,c#4,f4]@3, f3!2",
  P: "~@5 [a3,d4,f#4]@3 ~@5 [a3,d4,f#4]@3, f#3!2", Q: "~@5 [e3,a3,c#4]@3 ~@5 [e3,a3,c#4]@3, a2 g#2",
  R: "~@5 [a3,c#4,f#4]@3 ~@5 [a3,c#4,f#4]@3, f#3!2", S: "[a2,e3,a3,c#4]@5 ~@3 [e2,e3,g#3,b3]@5 ~@3",
  T: "[a2,e3,a3,c#4]", // A
})).s("gm_electric_bass_pick").gain(0.25)

// drums · snare
const snare = s("sd").struct("<A B C ~@2 D E ~@114 F ~ F ~ F ~ F ~ F ~ F ~@3 F ~@5>".pickRestart({
  A: "~@8 x ~@4 x ~@2", B: "x ~@4 x ~@2 x ~@7", C: "~ x", D: "x ~@4 x ~@2 x ~@4 x ~@2", E: "x ~@7 x ~@4 x ~@2", F: "x",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@3 A B ~@2 C ~@4 C@3 ~ C@3 ~ C@3 ~ C ~@3 C@3 ~ C@3 ~ C@3 ~ C ~@3 C@3 ~ C@3 ~ C@3 ~ C ~@3 C@3 ~ C@3 ~ C@3 ~ C ~@3 C@3
  ~ C@3 ~ C@3 ~ C ~@3 C@3 ~ C@3 ~ C@3 ~ C ~@3 C@3 ~ C@3 ~ C@3 ~ C ~ C ~ C ~ C ~ C ~ C ~ C@3 ~ C@3 ~@2
>`.pickRestart({
  A: "~@8 x ~@2 x ~@4", B: "x ~@2 x ~@12", C: "x",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~ [~@7 x ~@8] ~@3 [~@15 x] ~@135>").gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<[~@15 x] [~@13 x ~ x] ~@3 [~@7 x ~@8] [~@5 x ~ x ~@7 x] ~@134>").gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  A ~@10 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A
  ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@19 B ~
>`.pickRestart({
  A: "x", B: "x ~@4 x ~@5 x ~@4",
})).gain(0.4)

// drums · ride
const ride = s("rd").struct("<~@2 x!2 ~@137>").gain(0.4)

stack(electric_bass_pick, snare, hihat, low_tom, mid_tom, crash, ride)

More by Brassens Georges