Strudelify

Fuir le bonheur de peur qu'Il ne se sauve

Birkin

KeyC majorTempo86 bpm
0:00/0:00
// Fuir le bonheur de peur qu'Il ne se sauve — Birkin
// 86 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 65 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(86/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 · fretless bass
const bass = note(`<
  A@4 B A@4 B C D@2 E@2 C D@2 E@2 F G@2 H@2 C D@2 E@2 C I@2 E@2 F G@2 H@2 C I@2 E@2 C I@2 E@2 F G@2 H@2 C I@2 E@2 C D@2
  J@2
>`.pickRestart({
  A: "[c2@10 c3@10 d2@10 d3@9 ~ g2@10 g1@10 ~@4]/4", B: "~@15 g2", C: "c2@4 g2 c3@3",
  D: "[g2 c2 d2@4 a2 d3@3 a2 d2 g2@4]/2", E: "[d3@2 g1@6 d2@2 g2@2 c2@10 ~@9 g2]/2", F: "a2@4 e2 a2@3",
  G: "[e2 a1 e2@3 ~ b2 e3@3 b2 e2 f2@4]/2", H: "[c2 f2@4 f2 e2@5 e2@3 a2 b2]/2",
  I: "[g2 c2 d2@4 a2 ~@3 a2 d2 g2@4, ~@7 d3@5 ~@4]/2", J: "[d3 g1@3 d2 g2 c2@6 ~@4]/2",
})).s("gm_fretless_bass").gain(0.31).pan(0.6)

// chords · pad poly
const pad_poly = note("<~@20 A@5 ~@5 B@5 C@5 B@10 C@5 B@5 ~@5>".pickRestart({
  A: "[[e4,a4,c5]@5 [e4,g4,b4]@5 [f4,a4,c5]@5 [e4,a4]@3 g#4@2, ~@15 b4@4 ~]/5", // Am Em F A5
  B: "[[c3,g3]@10 [d3,a3]@10 [g2,b3]@10 e3@9 ~, ~@15 c4@2 ~@3]/5", // C5 D5 G
  C: "[[e4,a4,c5]@5 [e4,g4,b4]@5 [f4,a4,c5]@5 [e4,a4]@3 g#4@2, ~@12 b4@3 ~]/5", // Am Em F A5
})).s("gm_pad_poly").gain(0.15)

// other · lead 7 fifths
const lead_7_fifths = note("<~@35 A B C@3 D E F G@2 D E F G@2 A B C@3 ~@10>".pickRestart({
  A: "e5@2 a4 ~@3 a4 ~@3 e5 ~@3 a4 ~", B: "~@2 e5@2 b4@2 g4 ~@3 g4 ~@3 g4 ~",
  C: "[~@6 g4 ~ c5@2 f4 ~@7 a4 ~@3 a4 ~@3 a4 ~ [e4,a4]@12 [e4,g#4]@8, ~@7 f4@7 ~@10]/3", // A5 E
  D: "e5@2 g4 ~@3 g4 ~@3 c5 ~ e5@2 g4 ~", E: "~@2 g4 ~ f5@2 a4 ~@3 a4 ~@3 d5 ~", F: "f5@2 a4 ~@3 a4 ~ g5@2 b4 ~@3 b4 ~",
  G: "[~@2 g4 ~ g5@2 d5 ~@3 d5 ~ e5 d5 c5@6 ~@12]/2",
})).s("gm_lead_7_fifths").gain(0.1).pan(0.7)

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

// drums · hihat
const hihat = s("hh").struct("<A B C D E A B C D E A@53 F ~>".pickRestart({
  A: "x!4", B: "~ x!3", C: "x ~ x!2", D: "x!2 ~ x", E: "x!2 ~@2", F: "x!3 ~",
})).gain(0.2)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A B C D ~ A B C D ~ A B C E ~ A B C E ~ F B C E ~ A B C E ~ A B C E ~ F B C E ~ A B C E ~ A B C E ~ F B C E ~ A B C
  E ~ A B G ~
>`.pickRestart({
  A: "x", B: "~ x ~@2", C: "~ x", D: "~@15 x", E: "~@7 x", F: "x ~@6 x", G: "~@8 x ~@3 x!2 ~@2",
})).gain(0.15)

stack(bass, pad_poly, lead_7_fifths, kick, hihat, open_hat)

More by Birkin