Strudelify
KeyD♭ majorTempo100 bpm
0:00/0:00
// Le Vent — Brassens Georges
// 100 bpm, 2/4, key Db major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 81 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/2)

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

// other · acoustic guitar steel · "Chitarra 1"
const acoustic_guitar_steel = note(`<
  ~ A@2 B C D@2 A@4 B C D@2 A@6 E F E A@5 E F G D A@2 B C D@2 A@4 B C D@2 A@6 E F E A@5 E F G D A@2 B C D@2 A@4 B C D@2
  A H
>`.pickRestart({
  A: "bb2 f2", B: "gb2 db3", C: "gb3 db3", D: "f2 c3", E: "eb3 bb2", F: "f3 bb2", G: "c3 gb2", H: "bb2 ~@3",
})).s("gm_acoustic_guitar_steel").gain(0.4).pan(0.3)

// chords · acoustic guitar steel · "Chitarra 2"
const acoustic_guitar_steel_2 = note(`<
  ~ A@2 B C D@2 A@4 B C D@2 A@6 E F E G A@4 E F H D A@2 B C D@2 A@4 B C D@2 A@6 E F E G A@4 E F H D A@2 B C D@2 A@4 B C
  D@2 A I
>`.pickRestart({
  A: "~ [f3,bb3,db4] ~ [f3,bb3,db4]", B: "~ [gb3,bb3,db4] ~ [bb3,db4,gb4]", C: "~ [bb3,db4,gb4] ~ [gb3,bb3,db4]",
  D: "~ [f3,a3,c4] ~ [f3,a3,c4]", E: "~ [bb3,eb4,gb4] ~ [bb3,eb4,gb4]", F: "~ [bb3,db4,f4] ~ [bb3,db4,f4]",
  G: "~ [f3,bb3,db4] ~ [f3,a3,c4]", H: "~ [e3,bb3,c4] ~ [e3,bb3,c4]", I: "[f3,bb3,db4] ~@3",
})).s("gm_acoustic_guitar_steel").gain(0.4).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~@17 A ~ A ~@5 A ~@23 A ~ A ~@5 A ~@23>".pickRestart({
  A: "x!3 ~",
})).gain(0.4)

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

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@4 A@6 ~ A@3 ~@2 A B C B C A@4 B C A@4 D E ~@3 A@6 ~ A@3 ~@2 A B C B C A@4 B C A@4 D E ~@3 A@6 ~ A@3 ~@3
>`.pickRestart({
  A: "x!2", B: "~ x ~ x", C: "x!3 ~", D: "x", E: "~ x",
})).gain(0.4)

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

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~ A@3 ~@10 A@2 ~ B C B C ~@4 B C ~@5 D A@3 ~@10 A@2 ~ B C B C ~@4 B C ~@5 D A@3 ~@10 A@2 ~
>`.pickRestart({
  A: "x!2", B: "~@3 x", C: "~ x ~ x", D: "x ~@2 x",
})).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~@24 [~ x ~ x] ~@31 [~ x ~ x] ~@24>").gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@4 A@5 ~@22 A ~@4 A@5 ~@22 A ~@4 A@5 ~@8>".pickRestart({
  A: "~ x ~ x",
})).gain(0.4)

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

stack(acoustic_guitar_steel, acoustic_guitar_steel_2, kick, snare, low_tom, hihat, mid_tom, open_hat, high_tom, splash)

More by Brassens Georges