Strudelify
Desenchantee cover art

1991 · L'Autre

Desenchantee

Mylene Farmer

KeyB♭ minorTempo127 bpm
0:00/0:00
// Desenchantee — Mylene Farmer
// 127 bpm, 4/4, key A# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 7 "orchestr" named as a string part, played on string ensemble 1 (its piano patch is not one)
// note: Full arrangement: all 154 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(127/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, A@4 for four bars: edit a riff to change every repeat.

// chords · string ensemble 2 · "nappes"
const string_ensemble_2 = note(`<
  ~@9 A@4 B@2 C@2 A@4 B@2 C@2 D E F@2 G E F@2 H I J@2 K@4 L@2 M@8 N@4 O@4 ~@6 B@2 C@2 A@4 B@2 C@2 D E F@2 G E F@2 H I
  J@2 K@4 L@2 P@2 Q@4 R@8 S@2 T@2 P@2 Q@4 U@2 P@2 Q@4 R@8 S@2 P@2 Q@4 R@8 S@2 V
>`.pickRestart({
  A: "[[gb3,eb4] [f3,db4], bb3@31 ~]/4", B: "[[ab3,db4,f4]@3 [bb3,c4,eb4]]/2", C: "[c4 db4, [f3,bb3]]/2",
  D: "[c4,f4,ab4]", E: "[bb3,eb4,g4]", F: "[ab3,db4,f4]/2", G: "bb4 ab4, [c4,f4]", H: "bb4 ab4, c4, f4@7 ~",
  I: "~ bb4, [bb3,eb4,g4]", J: "[db4,f4,ab4]/2", K: "[[db4,f4] [bb3,eb4,g4], bb4@31 ~]/4", L: "[c4,eb4,ab4,c5]/2",
  M: "[db5@3 ~ [ab4,c5]@3 [eb4,ab4,c5], [f4,bb4] ~, ~@3 eb5@4 ~]/4", // Ab Bb5
  N: "[[bb4,db5]@3 [bb4,db5] [ab4,c5]@3 [eb4,ab4,c5], f4 ~, ~@3 eb5@4 ~]/4", // Bbm Ab
  O: "[db5@3 ~ [ab4,c5]@4, [f4,bb4] ~, ~@3 eb5@5]/4", P: "[db5@3 eb5, [f4,bb4]]/2",
  Q: "[c5@3 ~ bb4@3 eb5, [eb4,ab4] f4, ~@3 db5@4 ~]/4", R: "[c5@3 ~@4 eb5, [eb4,ab4] [f4,bb4], ~@3 db5@4 ~]/4",
  S: "[eb4,ab4,c5]/2", T: "[[f4,ab4,db5]@3 [ab4,c5,eb5]]/2", U: "[c5@3 db5, [eb4,ab4]]/2", V: "[f4,bb4,db5]@5 ~@3",
})).s("gm_string_ensemble_2").gain(0.15)

// other · piano · "violons"
const piano = note(`<
  ~ A@8 ~@16 B C D@2 E C D@2 E F G@4 H@2 I@2 ~@18 J@4 K@2 L@6 K@2 M@2 ~ C D@2 E C D@2 E F G@4 H@2 I@2 N@2 O@2 N@2 O@2
  N@2 O@2 N@2 O@2 P@2 N@2 O@2 N@2 O@2 N@2 O@2 N@2 O@2 N@2 O@2 N@2 O@2 N@2 O@2 N@2 O@2 N@2 O@2 N@2 O@2 Q
>`.pickRestart({
  A: "[eb2@12 ab2@3 bb2@13 gb2@3 db2@13 f2@3 bb2@17]/8", B: "ab4", C: "g4", D: "f4/2", E: "bb4 ab4", F: "g4 bb4",
  G: "[ab4@15 db5@13 c5@4]/4", H: "bb4/2", I: "[c5@15 ~]/2", J: "[bb5,bb6]/4", K: "[ab5,ab6]/2", L: "[bb5,bb6]/6",
  M: "[bb5,bb6]/2", N: "[[db5,db6]@3 [eb5,eb6]]/2", O: "[c5,c6]/2", P: "[[db5,db6]@3 [c5,c6]]/2", Q: "[db5,db6]@5 ~@3",
})).s("gm_piano").gain(0.15)

// chords · electric guitar clean · "guitare"
const electric_guitar_clean = note("<~@59 A ~@51 A ~ B ~ C ~ B ~ C ~@34>".pickRestart({
  A: "[f4,ab4,db5] ~@2 [f4,ab4,db5] ~ [f4,ab4,db5] ~@2 [f4,ab4,db5] ~@7", B: "bb5 ~@2 bb4 bb5 ~@2 bb4 f5 ab5 ~ bb5 ~@4",
  C: "ab5 ~@2 ab4 ab5 ~@2 ab4 eb5 gb5 ~ ab5 ~@4",
})).s("gm_electric_guitar_clean").gain(0.41)

// chords · electric guitar clean · "guitare" · soft notes · Db
const electric_guitar_clean_2 = note(`<
  ~@59
  [~@11 [f4,ab4,db5] ~ [f4,ab4,db5] ~@2]
  [[f4,ab4,db5] ~@15]
  ~@50
  [~@11 [f4,ab4,db5] ~ [f4,ab4,db5] ~@2]
  [[f4,ab4,db5] ~@15]
  ~@41
>`).s("gm_electric_guitar_clean").gain(0.2)

// bass · fretless bass · "basse"
const bass = note(`<
  ~@9 A B C D E F C G A B C D E F C G H I J K H I J L M N K O P Q R@2 S T U V W X U Y W X U V Z X U V W AA J AB A B C D
  E F C G A B C D E F C G H I J K H I J L M N K O P Q R@2 S T U V W X U Y W X U V Z X U V W AA J AC U V W X U Y W X U V
  W X U Y W X U V Z X U V W AD U V W X U Y W X U V Z X U V W AD AE
>`.pickRestart({
  A: "eb2 ~ eb2 ~@3 eb2 ~@3 eb2 ~@3 eb2!2", B: "eb2 ~ eb2 ~@3 eb2 ~ ab2 ~ ab2 ~@3 ab2 ~",
  C: "bb2 ~ bb2 ~@3 bb2 ~@3 bb2@2 ~@2 bb2!2", D: "bb2 ~ bb2@2 ~@2 bb2 ~ gb2 ~ gb2@2 ~@2 gb2 ~",
  E: "db2 ~ db2 ~@3 db2 ~@3 db2@2 ~@2 db2!2", F: "db2 ~ db2 ~@3 db2 ~ f2 ~ f2@2 ~@2 f2 ~",
  G: "bb2 ~ bb2@2 ~@2 bb2 ~@3 bb2@2 ~@2 bb2 ~", H: "f2 ~ f2 ~@3 f2@2 ~@2 f2@2 ~@2 f2!2",
  I: "eb2 ~ eb2 ~@3 eb2@2 ~@2 eb2@2 ~@2 eb2 ~", J: "db3 ~ db3 ~@3 db3 ~@3 db3@2 ~@2 db3!2",
  K: "db3 ~ db3 ~@3 db3@2 ~@2 db3@2 ~@2 db3 ~", L: "db3 ~ db3@2 ~@2 db3@2 ~@2 db3@2 ~@2 db3!2",
  M: "f2 ~ f2 ~@3 f2@2 ~@2 f2@2 ~@2 f2 ~", N: "eb2 ~ eb2 ~@3 eb2@2 ~@2 eb2@2 ~@2 eb2!2",
  O: "db3 ~ db3@2 ~@2 db3@2 f2 ~ f2 ~@3 f2 ~", P: "bb2@2 ~@2 bb2 ~@2 f2 ab2 ~ bb2 ~ ab2 ~ f2 ~",
  Q: "bb2 ~@3 bb2 ~@2 f2 ab2 ~ bb2 ~ ab2 ~ f2 ~", R: "eb3 ~@3 eb3 ~@2 bb2 db3 ~ eb3 ~ db3 ~ bb2 ~",
  S: "ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2 ~", T: "ab2 ~ ab2 ~ ab2 ~ ab2 ~ f2 ~ f2@3 ~ f2@2",
  U: "bb2 ~@3 bb2 ~@2 bb2 f2@2 ab2@2 bb2@2 ab2@2", V: "bb2 ~@3 bb2 ~@2 bb2 f2@2 ab2@2 bb2@2 gb2@2",
  W: "ab2 ~@3 ab2 ~@2 ab2 eb2@2 gb2@2 ab2 ~ gb2@2", X: "ab2 ~@3 ab2 ~@2 ab2 eb2@2 gb2@2 ab2 ~ f2@2",
  Y: "bb2 ~@3 bb2 ~@2 bb2 f2@2 ab2 ~ bb2@2 gb2 ~", Z: "ab2@2 ~@2 ab2 ~@2 ab2 eb2@2 gb2@2 ab2 ~ gb2 ~",
  AA: "ab2 ~@3 ab2 ~@2 ab2 eb2@2 gb2 ~ ab2@2 gb2 ~", AB: "db3 ~ db3@2 ~@2 db3 ~ db3 ~ db3@2 ~@2 db3@2",
  AC: "db3 ~ db3 ~@3 db3 ~ f2 ~ f2@2 ~@2 f2 ~", AD: "ab2 ~@3 ab2 ~@2 ab2 eb2@2 gb2@2 ab2 ~ f2 ~", AE: "bb2@9 ~@7",
})).s("gm_fretless_bass").gain(0.36)

// chords · piano
const piano_2 = note(`<
  A@6 B@3 ~ C@4 D@2 ~@2 C@4 D@2 ~ E F G@2 H@4 I J K@4 L@2 M ~ N@2 O@2 P@2 Q@2 R@2 S@2 T@2 U V W@2 X@3 Y@4 Z AA@3 AB@4 AC
  E F G@2 AD@3 ~ I J AE@6 AF@2 N@2 O@2 P@2 Q@2 R@2 S@2 T@2 U V AG@3 ~@7 N@2 O@2 P@2 Q@2 R@2 S@2 T@2 U V N@2 O@2 P@2 Q@2
  R@2 S@2 T@2 U V AH
>`.pickRestart({
  A: "[~@16 [eb3,bb3,eb4]@23 ~ [eb3,ab3,c4] ~ [eb3,ab3,c4]@4 [bb1,bb2,f3,bb3,db4]@23 ~@3 [bb3,db4,gb4] ~ [bb3,db4,gb4]@4 [ab3,db4,f4]@4 ab3 ~ [db4,f4]@12, ~@15 [eb2,gb3]@23 ~@2 [ab1,ab2]@4 ~@28 [gb1,gb2]@2 ~@4 [db2,db3]@18, ~@84 ab3 ~@11]/6", // Eb5 Ab Bbm Gb Db Ebm Ab Gb …
  B: "[~@7 c4 ~@2 c4@2 f3@2 [bb1,bb2,bb3,db4]@23 ~@11, ~@7 f1@6 ~@35, ~@7 bb3@3 ~@4 f3 ~@33, ~@2 eb4 ~@9]/3", // Bbm
  C: "[~@4 [eb3,ab3,c4] [eb3,ab3,c4]@2 [f3,bb3,db4]@11 ~@2 [bb3,db4,gb4] [bb3,db4,gb4]@2 [f3,ab3,db4]@9]/4", // Ab Bbm Gb Db
  D: "[~@4 [bb3,c4,eb4]@3 [f3,bb3,c4]@6 ~@3]/2", E: "[c4,f4,ab4]@5 ~ [f4,ab4]@2, ~@5 c4@3",
  F: "[bb3,eb4,g4]@5 bb3 [bb3,eb4,g4]@2", // Eb
  G: "[[db4,f4]@10 ab4@2 ~@6 db6@4 ab5@9 ~, ab3@9 ~ ab3@17 ~@5, ~@12 db4@15 ~@5, ~@6 db5@3 ~@7, ~@14 f4@13 ~@5]/2", // Db
  H: "[[c4,f4,ab4]@10 ~@2 [f4,ab4]@3 ~ [bb3,eb4,g4]@10 ~@2 [eb4,g4]@3 ~ [ab3,db4,f4]@10 ~@4 f4@8 ~@10, [c5,eb5]@15 ~, ~@10 c4@5 ~@11 bb3@5 ~@11 ab3@12 ~@10, ~@22 db4@5 ~@5]/4", // Fm Eb Db Cm
  I: "[ab4,c5,eb5]", J: "[g4,bb4,eb5]",
  K: "[[f4,ab4,db5]@10 f4@4 [ab4,db5]@4 f4@2 ab4@4 [eb3,ab3,c4] ~ [eb3,ab3,c4]@4 [f3,bb3,db4]@26 ab3@2 bb3@2 ab3@2 f3@2]/4", // Db Db5 Ab Bbm
  L: "[~@6 g3@25 ~, eb3@31 ~]/2", M: "[c3,eb3,ab3]@3 ~",
  N: "[[f3,bb3,db4] ~@3 [f3,bb3,db4]@6 f3@2 bb3 ~ [f3,bb3,db4]@4 f3@2 bb3@2 [bb3,db4]@4 ~@4 db4 ~, ~@22 f3 ~@3 f3@4 ~@2, ~@7 bb3]/2", // Bbm
  O: "[[eb3,ab3,c4] ~@3 [ab3,c4]@6 eb3@2 [eb3,ab3] ~ [eb3,ab3,c4]@4 eb3 ~ [eb3,ab3] ~ [ab3,c4]@4 eb3 ~ ab3@2 c4@2, ~@4 eb3@4 ~@14 eb3@2 ~@4 eb3 ~ eb3 ~]/2", // Ab Ab5 Ab Ab5 Ab
  P: "[[f3,bb3,db4] ~@3 [f3,bb3,db4]@6 f3 ~ [f3,bb3] ~ [f3,bb3,db4]@4 f3@2 bb3 ~ [f3,bb3,db4]@4 ~@2 bb3@2 db4 ~, ~@26 f3@5 ~]/2", // Bbm Bb5 Bbm
  Q: "[[eb3,ab3,c4] ~@3 [ab3,c4]@6 eb3@2 [eb3,ab3] ~ [eb3,ab3,c4]@4 eb3 ~ [eb3,ab3] ~ [ab3,c4]@4 eb3 ~ [eb3,ab3,c4] ~ [eb3,ab3] ~, ~@2 eb3@2 ~@11 c4]/2", // Ab Ab5 Ab Ab5 Ab Ab5
  R: "[[f3,bb3,db4] ~@3 [f3,bb3,db4]@6 f3 ~ [f3,bb3] ~ [f3,bb3,db4]@4 f3 ~ [f3,bb3] ~ [f3,bb3,db4]@4 f3@2 bb3@2 [bb3,db4] ~, ~@28 f3 ~@3]/2", // Bbm Bb5 Bbm Bb5 Bbm
  S: "[[eb3,ab3,c4] ~@3 [eb3,ab3,c4]@6 eb3 ~ ab3 ~ [eb3,ab3,c4]@4 eb3 ~ [eb3,ab3] ~ [eb3,ab3,c4]@4 eb3@2 ab3@2 [ab3,c4]@2, ~@28 eb3 ~ eb3 ~]/2", // Ab Ab5 Ab
  T: "[[f3,bb3,db4] ~@3 [f3,bb3,db4]@6 f3 ~ [f3,bb3] ~ [f3,bb3,db4]@4 f3 ~ [f3,bb3] ~ [bb3,db4]@4 f3@2 bb3@2 [bb3,db4] ~, ~@11 f3 ~@4]/2", // Bbm Bb5 Bbm Bb5 Bbm
  U: "[eb3,c4] ~@3 [ab3,c4]@6 ab4@2 eb5@2 ab5@2, ~ eb3 ~@2", V: "~@2 ab4 ~@3 ab4@3 ~@7",
  W: "[~@11 db5@2 db4@3, [f3,ab3], db4@11 ~@5, ~@9 db6@4 ~@3]/2", // Fm
  X: "[~@18 bb4@6 [eb3,ab3,c4] ~ [eb3,ab3,c4] ~@3 [f3,bb3,db4]@6 f3@2 [f3,bb3,db4]@10, [gb3,bb3,eb4] ~]/3", // Ab Bbm Ebm
  Y: "[~@2 f3@2 bb3@2 db4 ~ [bb3,db4,gb4] ~ [bb3,db4,gb4] ~@3 [f3,ab3,db4]@6 [db4,f4]@16 ~@4 [c4,eb4]@6 [f3,bb3,c4]@17 ~, ~@10 ab3@6 ~@2 ab3@5 ~@9]/4", // Gb Db Cm Fsus4
  Z: "~@2 bb5@3 ~ bb4@2 ~@2 bb3@3 ~@3, [f3,db4]@15 ~, bb3@5 ~@3", // Db
  AA: "[eb4@18 eb4@5 ~ [eb3,ab3,c4] ~ [eb3,ab3,c4] ~@3 [f3,bb3,db4]@6 f3@2 [f3,bb3,db4]@10, [gb3,bb3] ~]/3", // Ab Bbm Gb
  AB: "[~@2 f3@2 bb3@2 db4 ~ [bb4,db5,gb5]@2 [bb3,db4,gb4,bb4,db5,gb5] ~@3 [f3,ab3,db4,f4]@6 db4@16 ~@4 [c4,eb4]@6 [f3,bb3,c4]@17 ~, ~@8 [bb3,db4,gb4] ~@5 [ab4,db5]@16 ~@34, ~@10 ab3@6 ~@2 ab3@5 ~@9, ~@10 f4@5 ~@17]/4", // Gb Db Cm Fsus4 Gb Db5
  AC: "[f3,bb3,db4]@15 ~", // Bbm
  AD: "[[c4,f4,ab4]@10 ~@2 [f4,ab4]@3 ~ [bb3,eb4,g4]@10 ~@2 [eb4,g4]@3 ~ [ab3,db4,f4]@10 ~@4 f4@2, [c5,eb5], ~@10 c4@5 ~@11 bb3@5 ~@11 ab3@6, ~@11 db4]/3", // Fm Eb Db Cm
  AE: "[[f4,ab4,db5]@10 f4@4 [ab4,db5]@4 f4@2 ab4@4 [ab4,c5,eb5] ~ [c5,eb5] ~@3 [f4,bb4,db5]@22 ~@4 [eb4,ab4,c5] ~ [eb4,ab4,c5] ~@3 [eb4,g4,bb4]@4 eb4@2 ~@2 [eb4,g4,bb4]@6 eb4 ~ [eb4,g4,bb4]@4 eb4@2 g4@2 [eb4,g4,bb4]@4 eb4@2 [g4,bb4]@4, ~@13 ab4 ~@34]/6", // Db Db5 Ab Cm Bbm Ab Eb Gm
  AF: "[[c4,eb4,ab4]@4 ~@2 [eb4,ab4]@4 c4@4 [c4,eb4,ab4]@4 c4@2 eb4 ~ [c4,eb4,ab4]@6 ~@4, ~@4 c4@5 ~@23]/2", // Ab Ab5 Ab
  AG: "[[f3,ab3,db4]@10 ~@4 db4@4 db4@2 ab4@2 db5@2 [ab4,c5,eb5]@5 ~ [f4,bb4,db5]@7 ~@11, ~@5 f3@3 ~@16, ~@12 ab3@5 ~@31]/3", // Db Ab Bbm
  AH: "[f3,bb3,db4]@5 ~@3", // Bbm
})).s("gm_piano").gain(0.31)

// other · string ensemble 1 · "orchestr"
const string_ensemble_1 = note("<~@42 A ~@7 A ~@43 A ~@7 A ~@17 A ~@7 A ~@7 A ~@7 A ~@7 A ~>".pickRestart({
  A: "~@2 [ab2,ab3,ab4] ~@5", // Ab
})).s("gm_string_ensemble_1").gain(0.31)

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

// drums · clap
const clap = s("cp").struct("<~@43 A@7 B A@8 ~@36 A@7 B A@8 ~ C D A D A D A D A@8 B A@15 B A@8 ~>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@3 x", D: "x!2 ~ x",
})).gain(0.26)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@9 A@7 B A@3 C A@7 D A@3 E A@3 F A@3 E A G H@3 I H@5 J H@5 I A B A C A@5 B A@3 C A@7 E A@3 B A C A K L C A D A M H@3
  I H@5 J H@5 I H@2 A B A B E A@2 G H@3 I H@5 J H@9 I H@5 J H@6 N
>`.pickRestart({
  A: "x!8", B: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~", C: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", D: "x ~ x ~ x ~ x ~ x ~ x!3 ~@3",
  E: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x!2", F: "x ~ x ~ x ~ x!3 ~ x!3 ~ x ~", G: "x ~ x ~ x!12",
  H: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2", I: "x ~ x!3 ~ x!3 ~ x!3 ~@3", J: "x ~ x!3 ~ x!3 ~ x!3 ~ x ~",
  K: "x ~ x ~ x ~ x ~ x!5 ~@3", L: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~", M: "x!16", N: "x",
})).gain(0.15)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@8 A ~@7 A ~@7 A ~@3 B ~@7 A ~@9 B ~@5 A ~@5 B ~@9 A ~@7 A ~@7 A ~@3 B ~@3 B ~@5 B ~@5 A ~@5 B ~@5 B ~@7 B ~@5 A ~@9
  B ~@5 A ~@7
>`.pickRestart({
  A: "~@15 x", B: "~@7 x",
})).gain(0.15)

// drums · crash
const crash = s("cr").struct(`<
  ~@25 A ~@16 B C ~@6 B C ~@7 A ~@17 A ~@16 B C ~@6 B C ~@7 A ~@9 C ~@6 B C ~@7 D ~@6 B C ~@7 A
>`.pickRestart({
  A: "x", B: "~@7 x", C: "~ x ~@2", D: "x!2 ~@2",
})).gain(0.2)

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

stack(
  string_ensemble_2, piano, electric_guitar_clean, electric_guitar_clean_2, bass, piano_2, string_ensemble_1, kick,
  clap, hihat, open_hat, crash, tambourine
)

More by Mylene Farmer