Strudelify
Pourvu qu'elles soient douces cover art

Ainsi Soit Je

Pourvu qu'elles soient douces

Mylene Farmer

KeyB minorTempo93 bpm
0:00/0:00
// Pourvu qu'elles soient douces — Mylene Farmer
// 93 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 106 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(93/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.

// other · pan flute · "panpipes"
const pan_flute = note(`<
  ~@3
  [~@6 f#6!2 ~ f#6!7]
  ~@61
  [d6 ~ c#6 ~ a5 ~ b5 a5 ~@8]!3
  [d6 ~ c#6 ~ a#5 ~ a#5!2 ~@8]
  [d6 ~ c#6 ~ a5 ~ b5 a5 ~@8]!3
  [d6 ~ c#6 ~ a#5 ~ a#5!2 ~@8]
  ~@33
>`).s("gm_pan_flute").gain(0.4)

// chords · vibraphone · "vibes"
const vibraphone = note("<~@8 A B C B A B C B A B C B A B C B A B C B ~@9 A B C B A B C B A B C B ~@57>".pickRestart({
  A: "[d5,f#5]!5 ~ [d5,f#5]!2 ~ [d5,f#5]!7", B: "[c#5,f#5]!5 ~ [c#5,f#5]!2 ~ [c#5,f#5]!7",
  C: "[b4,d5]!5 ~ [b4,d5]!2 ~ [b4,d5]!7", // Bm
})).s("gm_vibraphone").gain(0.15)

// other · electric guitar muted · "fallleav"
const electric_guitar_muted = note(`<
  ~@12 A B C D A B C D A B C D A B C D ~@9 A B C D A B C D A B C D ~@57
>`.pickRestart({
  A: "~@2 e3 ~ f#3 ~@2 f#3 ~ e3 ~ e3 f#3 ~ f#3 ~", B: "~ e3!3 f#3 ~ f#3 e3 ~@3 e3 f#3 ~ f#3 ~",
  C: "~@2 f3!2 f#3 d3 ~ f3 ~@3 f3 f#3 ~ f#3 ~", D: "~@2 f#3!3 e3 ~ f#3 ~@3 e3 f#3 ~ e3 ~",
})).s("gm_electric_guitar_muted").gain(0.35)

// other · string ensemble 1 · "violons"
const string_ensemble_1 = note(`<
  ~@28 A B C D E B C D ~@13 A B C D E B C D A B C D E B C D ~@5 F ~ G A B C D E B C D A B C D E B C D A B C D E B C D A
  B C D E B C D ~
>`.pickRestart({
  A: "b5 ~ f#5 d5 ~@2 a5 b5 ~ f#5 ~@6",
  B: "[a4,a5] [b4,b5] [a4,a5] [b4,b5] [a4,a5]@2 [b4,b5] [a4,a5] ~ [b4,b5] [a4,a5] [b4,b5] [f#4,f#5] ~@3", // A B A B A B A B …
  C: "b5 ~ g5 d5 ~@2 b5!2 ~ g5 ~@6", D: "[b4,b5] [a#4,a#5] [b4,b5] [c#5,c#6]@5 ~@8",
  E: "b5 ~ f#5 d5 ~@2 b5!2 ~ f#5 ~@6", F: "~@9 b4 a4 b4 f#4@2 ~@2", G: "[b4,b5] [a#4,a#5] [b4,b5] [c#5,c#6]@4 ~@9",
})).s("gm_string_ensemble_1").gain(0.3)

// other · string ensemble 1 · "strings"
const string_ensemble_1_2 = note(`<
  ~@12 A B C D A B C D A B C D A B C D ~@9 A B C D A B C D E F G H ~@16 A B C D A B C I E F G J E F G J E F G J E F G J
  E F G J E F G J E F G J E F G J K
>`.pickRestart({
  A: "b2", B: "a2", C: "g2", D: "f#2", E: "[b2,b3]", F: "[a2,a3]", G: "[g2,g3]", H: "[f#2,f#3]", I: "[f#2,a#3,c#4,f#4]",
  J: "[f#2,f#3,a#3,c#4,f#4]", K: "b1",
})).s("gm_string_ensemble_1").gain(0.25)

// chords · string ensemble 2 · "nappes.."
const string_ensemble_2 = note(`<
  ~@28 A@2 B C A@2 B D@2 ~@12 A@2 B C A@2 B E A@2 B C A@2 B E ~@4 F G H E A@2 B C A@2 B E A@2 B C A@2 B E A@2 B C A@2 B
  E A@2 B C A@2 B E F
>`.pickRestart({
  A: "[b4 a4, [d5,f#5]]/2", B: "[b4,d5]", C: "[a#4,c#5]", D: "[a#4,c#5,f#5]/2", E: "[a#4,c#5,f#5]", F: "[b4,d5,f#5]",
  G: "[a4,d5,f#5]", H: "[b4,d5,g5]",
})).s("gm_string_ensemble_2").gain(0.2)

// chords · string ensemble 2 · "nappes.." · soft notes
const string_ensemble_2_soft = note(`<
  ~@30 A B ~@2 A ~@16 A B ~@2 A ~@3 A B ~@2 A ~@11 A B ~@2 A ~@3 A B ~@2 A ~@3 A B ~@2 A ~@3 A B ~@2 A ~@2
>`.pickRestart({
  A: "g5", B: "f#5",
})).s("gm_string_ensemble_2").gain(0.1)

// bass · slap bass 2 · "slapbass"
const bass = note(`<
  ~@4 A B C D A B E D ~@16 F G H I F G H I J ~@12 F G H I F G H I F G H I F G H I ~@8 F G H I F G H I F G H I F G H I F
  G H I F G H I F G H I F G H I K
>`.pickRestart({
  A: "b2@2 ~@4 a2 b2@2 ~@7", B: "f#2 ~ f#2 ~ f#2 ~ e2 f#2@2 ~@7", C: "g2@3 ~@3 f#2 g2@3 ~@6",
  D: "c#2@3 ~@3 b1 c#2@3 ~@6", E: "g2@3 ~@3 f#2 g2@4 ~@5", F: "b2@2 ~ b2 ~ b2 ~@2 b2 ~@6 b2",
  G: "d3 ~ d3 ~ d3 ~ d3!2 ~@7 d3", H: "g2@2 ~ g2 ~ g2 ~@2 g2 ~@6 g2", I: "f#2 ~ f#2 ~ f#2 ~ f#2!2 ~@7 f#2", J: "f#2",
  K: "b2",
})).s("gm_slap_bass_2").gain(0.4)

// other · piano · "scratch"
const piano = note("<~@56 A ~@11 A ~@3 A ~@3 A ~@3 B@2 ~@2 A ~@3 A@4 C@2 D@2 E@2 F@2 G@2 H I J K>".pickRestart({
  A: "~@9 f5 f5@6", B: "[~@8 f5!6 f5@6 ~@12]/2", C: "[~@9 f5!5 f5@6 ~@12]/2", D: "[~@9 f5 ~ f5!2 ~ f5@7 ~@11]/2",
  E: "[~@2 f5!3 ~ f5!2 ~ f5!5 f5@6 ~@10 f5!2]/2", F: "[~@6 f5!2 ~ f5 ~ f5!3 f5@6 ~@5 f5!4 ~@3]/2",
  G: "[f5!2 ~ f5!11 f5@6 ~@5 f5 ~ f5!2 ~@3]/2", H: "~@6 f5!4 f5@6", I: "~@6 f5!2 ~ f5 ~ f5 ~@4",
  J: "~ f5!4 ~ f5!2 ~ f5 f5@6", K: "f5 ~@15",
})).s("gm_piano").gain(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~@7 A B@3 C B@15 C D B@2 E D B@2 E B@4 C B@7 C D B@2 E D B@2 E D B@2 E D B@2 C F G F G F G F G D B@2 E D B@2 C D B@2 E
  D B@2 C D B@2 E D B@2 C D B@2 E D B@2 C H
>`.pickRestart({
  A: "~@9 x!3 ~ x!3", B: "x!2", C: "x ~@8 x!3 ~ x!3", D: "x ~@6 x!2 ~@7", E: "x ~@7 x ~@2 x ~@4",
  F: "x ~@2 x ~@2 x!2 ~ x!3 ~ x ~@2", G: "x ~@2 x ~@2 x!2 ~ x!3 ~ x!3", H: "x",
})).gain(0.4)

// drums · clap
const clap = s("cp").struct("<~@3 A B@24 ~@3 A ~@3 A B@13 ~@3 A ~@3 A B@48 ~>".pickRestart({
  A: "~@3 x", B: "~ x ~ x",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@3 A B@24 ~@3 A ~@3 A B@13 ~@3 A ~@3 A B@48 ~>".pickRestart({
  A: "~@3 x", B: "~ x ~ x",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@15 A ~@3 A ~@3 A ~@20 A ~@61>".pickRestart({
  A: "~@5 x ~@2",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<~@3 [~@7 x] [~ x ~ x ~ x ~ x]!2 [~ x!3 ~ x ~ x] [~ x ~ x ~ x ~ x]!98 ~>").gain(0.2)

// drums · open hat
const open_hat = s("oh").struct("<~@3 [~@13 x ~@2] [~ x ~@3 x ~@10]!2 [~ x ~ x ~ x ~@10] [~ x ~@3 x ~@10]!98 ~>")
  .gain(0.15)

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

// drums · rim
const rim = s("rim").struct("<~@7 A ~@3 A ~@15 A B@8 ~@4 A ~@7 A B@56 ~>".pickRestart({
  A: "~@3 x", B: "~ x ~ x",
})).gain(0.35)

stack(
  pan_flute, vibraphone, electric_guitar_muted, string_ensemble_1, string_ensemble_1_2, string_ensemble_2,
  string_ensemble_2_soft, bass, piano, kick, clap, snare, low_tom, hihat, open_hat, crash, rim
)

More by Mylene Farmer