Strudelify

A Quoi Je Sers

Mylene Farmer

KeyD minorTempo126 bpm
0:00/0:00
// A Quoi Je Sers — Mylene Farmer
// 126 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 142 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(126/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.

// chords · piano
const piano = note(`<
  ~@42 A B C D@2 B E F@2 B C D@2 B G H I ~@16 A B C D@2 B E F@2 B C D@2 B G H I B C D@2 B E F@2 B C D@2 B G H I J@2 K@2
  J@2 L@2 J@2 K@2 J@2 M N J@2 K@2 J@2 L@2 J@2 K@2 J@2 M N ~@2
>`.pickRestart({
  A: "~@2 f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~", B: "[d4,a4,d5,f5]@15 ~", C: "[g3,d5,g5], b4@7 ~",
  D: "[[a4,c5,e5]@11 ~ [a4,c5,e5]@2 [a3,a4,c5,f5]@18, a3@7 ~@9]/2", E: "[g3,b4,d5,g5]@15 ~",
  F: "[[a3,a4,c5,e5]@13 ~ [a3,a4,c5,f5]@16 ~@2]/2", G: "[g3,b4,d5], g5@7 ~", H: "[a3,a4,d5,e5,a5]@15 ~",
  I: "[a3,a4,db5,e5,a5]", // A
  J: "[[a4,d5,f5]@3 ~ [a4,d5,f5]@3 ~ [a4,d5,f5]@3 ~ [a4,d5,f5] ~ [b4,d5,g5]@4 [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,g5] ~, d4@7 g3@9, ~@15 d5]/2", // Dm G Em
  K: "[[a4,c5,e5]@3 ~ [a4,c5,e5]@3 ~ [a4,c5,e5]@3 ~ [a4,c5,e5] ~ [a4,c5,f5]@3 ~ [a4,c5,a5] ~ [a4,c5,a5] ~ [a4,c5,a5] ~ [a4,c5] ~ [a4,c5] ~ [a4,a5]@2 c5@2, a3@13 ~ a3@17 ~, ~@24 a5@2 a5@2 c5 ~ a5 ~]/2", // Am F Am A
  L: "[[a4,c5,e5]@3 ~ [a4,c5,e5]@3 ~ [a4,c5,e5]@3 ~ [a4,c5,e5] ~ [a4,c5,f5]@3 ~ [a4,c5,a5] ~ [a4,c5,a5] ~ [a4,c5,a5] ~ [a4,c5] ~ [a4,c5] ~ [a4,e5]@2 [a4,c5]@2, a3@13 ~ a3@17 ~, ~@24 g5@2 f5@2 c5 ~@3]/2", // Am F Am A5 Am
  M: "[a4,d5,e5,a5] ~ [a4,d5,e5,a5] ~ [a4,d5,e5,a5] ~ [a4,d5,e5] ~ [a4,d5,e5,a5] ~ [a4,d5,e5,a5] ~ [a4,d5,e5] ~ [a4,d5,e5] ~, a3@15 ~, ~@2 g5 ~@3 g5 ~", // Asus4
  N: "[a4,db5,e5,a5] ~ [a4,db5,e5,a5] ~ [a4,db5,e5,g5] ~ [a4,db5,e5] ~ [a4,db5,e5,a5] ~ [a4,db5,e5,a5] ~ [a4,db5,e5,a5]@4, a3", // A A7 A
})).s("gm_piano").gain(0.3)

// chords · synth strings 1 · "nappes"
const synth_strings_1 = note(`<
  ~@10 A@12 B@4 A@8 C@3 D@4 E@2 F@2 G@6 F@2 H@4 I@2 A@8 C@3 D@4 E@2 F@2 G@6 F@2 H@4 I@2 J@2 K@2 J@2 K@2 J@2 K@2 J@2 L@2
  F@2 G@6 F@2 H@4 I@2 F@2 G@6 F@2 H@4 I@2 ~@2
>`.pickRestart({
  A: "[[db5,f5]@2 [c5,eb5,ab5]@2 [db5,gb5]@2 ~ a4, bb4@7 ~, ~@3 [c5,f5]]/4", // Db Ab Gb5 F5
  B: "[db5@2 [d5,ab5]@2 [eb5,gb5]@2 ~ a4, bb4@7 ~, f5@2 ~ [c5,f5]]/4", C: "[[db5,f5] [c5,eb5,ab5] [db5,gb5], bb4]/3",
  D: "[bb4 a4 db5@2 [d5,ab5]@2 [eb5,gb5]@2, f5@3 ~, c5 bb4@3]/4", // Ddim Ebm
  E: "[[f3,f4] [eb3,eb4] [db3,db4] [c3,c4], [a4,c5,f5]]/2", F: "[[a4,f5] [b4,g5], d5]/2",
  G: "[e5@7 ~@17 [b4,g5]@8 e5@7 [c5,f5]@9, a4@23 ~@9 a4@16, c5@8 d5@11 ~@5, ~@7 f5@17 ~@24]/6", // Em F5
  H: "[e5@7 ~@17 [b4,g5]@8, a4@23 ~@9, c5 d5, ~@7 f5@17 ~@8]/4", I: "[d5 db5, [a4,e5,a5]]/2",
  J: "[[f4,a4] [g4,b4], d5]/2", K: "[[a4,e5]@6 e5 f5@9, c5, ~@3 a4@5]/2", L: "[d5 db5, [a4,e5]]/2",
})).s("gm_synth_strings_1").gain(0.2)

// bass · fretless bass · "basse"
const bass = note(`<
  ~@9 A B C D E B C D E B C D E F G H I B C D E B C D E B C D E F J@2 K L M N O P M N O P M N O P M N O P B C D E B C D
  E B C D E F J@2 K L M N O P M N O P M N O P M N O P M N O P M N O P M N O P M N O P M N O P M N O P M N O P M N O P M
  N O P M N O P M N O P M N O P ~@2
>`.pickRestart({
  A: "~@6 a1 ~", B: "bb2 ~@5 bb2 ~ bb2 ~ bb2 ~@3 bb2@2", C: "c3 ~@5 c3 ~ c3@2 c2 ~@3 f2@2",
  D: "gb2 ~@5 gb2 ~ gb2 ~ gb2 ~@3 gb2@2", E: "f2 ~@5 f2 ~ f2 ~ f2@2 eb2@2 c2 ~", F: "bb2 ~@5 bb2 ~ bb2 ~ bb2@4 d3@2",
  G: "~@6 d3 ~ d3 ~ d3@4 eb3@2", H: "~@6 eb2 ~ eb2 ~ eb2@4 f2@2", I: "~@6 f2 ~ f2 ~ f2 ~@5",
  J: "[~@6 d3 ~ d3 ~ d3@4 eb3@4 ~@4 eb3 ~ eb2 ~ eb2@4 f2@2]/2", K: "~@6 f2 ~ eb2 ~ eb2@4 db2@2",
  L: "~@6 db2 ~ c2 ~ c2@4 ~@2", M: "d3 ~ d3 ~@3 d3 ~@3 d3 ~@3 d3!2", N: "g2 ~ g2 ~@3 g2 ~@3 g2 ~@3 g2 ~",
  O: "a2 ~ a2 ~@3 a2 ~@3 a2 ~@3 a2 ~", P: "~@2 a2 ~@3 a2 ~@3 a2 ~@3 a2 c3",
})).s("gm_fretless_bass").gain(0.64)

// chords · piano · "syn echo" · Dm
const piano_2 = note("<~@140 [[f4,a4,d5] ~@3 [f4,a4,d5] ~@3 [f4,a4,d5] ~@3 [f4,a4,d5] ~@3] [[f4,a4,d5] ~@15]>")
  .s("gm_piano").gain(0.15)

// chords · piano · "syn echo" · soft notes · Dm
const piano_soft = note("<~@141 [~@4 [f4,a4,d5] ~@3 [f4,a4,d5] ~@3 [f4,a4,d5] ~@3]>").s("gm_piano").gain(0.05)

// other · pan flute · "panpipes"
const pan_flute = note("<~@17 A@2 ~@14 A@2 ~@31 A@2 ~@74>".pickRestart({
  A: "[~@2 db4 ~ db4 ~ db4 ~ db4 ~ db4 ~ db4 ~ db4@18]/2",
})).s("gm_pan_flute").gain(0.5)

// chords · synth strings 2 · "strings"
const synth_strings_2 = note(`<
  A@3 B C@2 D B E@2 F@4 G H I@2 F@4 J@4 F@8 K@3 L@4 M@2 N@2 O@6 N@2 P@4 Q@2 F@8 K@3 L@4 M@2 N@2 O@6 N@2 P@4 Q@2 R@2 S@2
  R@2 S@2 R@2 S@2 R@2 T@2 N@2 O@6 N@2 P@4 Q@2 N@2 O@6 N@2 P@4 Q@2 ~@2
>`.pickRestart({
  A: "[d2,d3]/3", B: "[g1,g2]", C: "[a1,a2]/2", D: "[d2,d3]", E: "[[a1,a2]@7 ~]/2",
  F: "[[db4,f4]@2 [c4,eb4,ab4]@2 [db4,gb4]@2 ~ a3, bb3@7 ~, ~@3 [c4,f4]]/4", G: "[bb3,db4,f4]", H: "[ab3,c4,eb4]",
  I: "[[db4,gb4]@2 ~ a3, bb3@3 ~, ~ [c4,f4]]/2", J: "[db4@2 [d4,ab4]@2 [eb4,gb4]@2 ~ a3, bb3@7 ~, f4@2 ~ [c4,f4]]/4",
  K: "[[db4,f4] [c4,eb4,ab4] [db4,gb4], bb3]/3", L: "[bb3 a3 db4@2 [d4,ab4]@2 [eb4,gb4]@2, f4@3 ~, c4 bb3@3]/4",
  M: "[[f2,f3] [eb2,eb3] [db2,db3] [c2,c3], [a3,c4,f4]]/2", N: "[[d3,a3,f4] [g2,b3,g4], d4]/2",
  O: "[e4@7 ~@9 d3@8 [g2,b3,g4]@8 e4@7 [c4,f4]@9, a3@23 ~@9 [a2,a3]@16, [a2,c4]@8 d4@11 ~@5, ~@7 f4@17 ~@24]/6", // G F5 A Am
  P: "[e4@7 ~@9 d3@8 [g2,b3,g4]@8, a3@23 ~@9, [a2,c4] d4, ~@7 f4@17 ~@8]/4", Q: "[d4 db4, [a2,a3,e4]]/2",
  R: "[[d2,d3,f3,a3] [g1,g2,g3,b3], d4]/2", S: "[[a3,e4]@6 e4 f4@9, [a1,a2,c4], ~@3 a3@5]/2",
  T: "[d4 db4, [a3,e4], [a1,a2]@7 ~]/2", // A5 A
})).s("gm_synth_strings_2").gain(0.31)

// other · acoustic guitar nylon · "ACC GUIT"
const acoustic_guitar_nylon = note("<~@2 A B C D A B C D ~@82 A B C D A B C D A B C D A B E@2 ~@34>".pickRestart({
  A: "a4 g4 d4 a4 g4 d4@2 a4", B: "g4@2 d4@2 a4@2 g4@2 d4@7 ~", C: "c4 d4 f4 c4 d4 f4@2 c4", D: "d4 f4 c4 d4 f3@4",
  E: "[a4@2 g4@2 a4@17 ~@11]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.36)

// chords · electric guitar clean · "el guitr"
const electric_guitar_clean = note(`<
  ~@9 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@6 C ~@3 C D ~@2 C ~@3 C E B ~@2 A B ~@2 A B ~@2 A B
  ~@6 C ~@3 C D ~@2 C ~@3 C D ~@18 C ~@3 C D ~@2 C ~@3 C D ~@2 C ~@3 C D ~@2 C ~@3 C D ~@2
>`.pickRestart({
  A: "~@6 [e3,a3,e4] ~", B: "[f3,bb3,f4] ~@7", C: "~@2 [e5,a5] ~ [d5,g5]@3 ~@9", D: "[e5,a5] ~@5 [d5,g5]@3 ~@7",
  E: "[e5,a5] ~@5 [d5,g5]@3 ~@3 [e3,a3,e4]@2 ~@2", // A5 G5 A5
})).s("gm_electric_guitar_clean").gain(0.36)

// other · piano · "finger"
const piano_3 = note("<~@10 A@16 ~@69 A ~@3 A B@7 C ~@34>".pickRestart({
  A: "~@12 bb5 ~@3", B: "~@4 bb5 ~@7 bb5 ~@3", C: "~@4 bb5 ~@7 bb5 ~ bb5 ~",
})).s("gm_piano").gain(0.26)

// drums · kick
const kick = s("bd").struct(`<
  ~@10 A@33 B C B C B C B C B C B C B C B C A@17 B C B C B C B C B C B C B C B D E@7 F B C B C B C B D B C B C B C B C B
  C B C B C B D B C B C B C B C B C B C B C B D ~@2
>`.pickRestart({
  A: "x ~@2 x!3 ~@2", B: "x ~@2 x!2 ~@2 x", C: "x!2 ~ x!2 ~@3", D: "~ x ~ x!2 ~@3", E: "x!2", F: "x!4",
})).gain(0.45)

// drums · rim
const rim = s("rim").struct("<~@10 [~@3 x]!16 ~@66 [x!4]!3 [x!3 ~] [x!4]!3 [x!3 ~] ~@42>").gain(0.2)

// drums · snare
const snare = s("sd").struct("<~@25 A B@16 C B@32 C B@16 ~@3 C ~@3 C B@7 D B@32 ~@2>".pickRestart({
  A: "~@10 x ~ x ~ x!2", B: "~ x ~ x", C: "~@3 x", D: "~@2 x ~@3 x!2",
})).gain(0.4)

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

// drums · hihat
const hihat = s("hh").struct("<~@10 A@83 B A B A B A B A@40 ~@2>".pickRestart({
  A: "x!8", B: "x ~ x ~ x ~ x ~ x ~ x ~@2 x!2 ~",
})).gain(0.15)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@9 A ~@3 A ~@3 B ~@3 A ~@3 B ~@3 A ~@3 B ~@3 C ~@4 D ~@7 B ~@7 B ~@3 A ~@3 B ~@3 C ~@4 D ~@7 B ~@23 E ~@15 F ~@15 G
  ~@2
>`.pickRestart({
  A: "~@3 x", B: "~@5 x!2 ~", C: "~@12 x ~ x!2", D: "~@13 x!2 ~", E: "~@10 x!3 ~@3", F: "~@10 x!2 ~@4",
  G: "~@8 x!4 ~@4",
})).gain(0.3)

// drums · open hat
const open_hat = s("oh").struct("<~@93 A ~ A ~ A ~ A ~@42>".pickRestart({
  A: "~@3 x",
})).gain(0.2)

// drums · high tom
const high_tom = s("ht").struct("<~@139 [~@4 x!4 ~@8] ~@2>").gain(0.35)

// drums · crash
const crash = s("cr").struct(`<
  ~@10 A ~@7 A ~@7 A ~@7 A ~@8 A@2 B ~ A@2 B ~ A@2 B ~ A@5 ~@7 A ~@8 A@2 B ~ A@2 B ~ A@2 B ~ A@6 B ~ A@2 B ~ A@2 B ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3
>`.pickRestart({
  A: "x", B: "x ~@6 x",
})).gain(0.1)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@43
  [x!3 ~ x!3 ~ x!3 ~ x!3 ~]!16
  ~@17
  [x!3 ~ x!3 ~ x!3 ~ x!3 ~]!16
  ~@8
  [x!3 ~ x!3 ~ x!3 ~ x!3 ~]!40
  ~@2
>`).gain(0.1)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct(`<
  ~@43
  [~@3 x ~@3 x ~@3 x ~@3 x]!16
  ~@17
  [~@3 x ~@3 x ~@3 x ~@3 x]!16
  ~@8
  [~@3 x ~@3 x ~@3 x ~@3 x]!40
  ~@2
>`).gain(0.05)

// drums · triangle
const triangle = s("triangles:35").struct(`<
  [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2]!43
  ~@16
  [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2]!17
  ~@16
  [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2]!8
  ~@42
>`).gain(0.86)

// drums · triangle · soft notes
const triangle_soft = s("triangles:35").struct("<[x!4]!43 ~@16 [x!4]!17 ~@16 [x!4]!8 ~@42>").gain(0.43)

stack(
  piano, synth_strings_1, bass, piano_2, piano_soft, pan_flute, synth_strings_2, acoustic_guitar_nylon,
  electric_guitar_clean, piano_3, kick, rim, snare, low_tom, hihat, mid_tom, open_hat, high_tom, crash, tambourine,
  tambourine_soft, triangle, triangle_soft
)

More by Mylene Farmer