Strudelify

Equinoxe, Part 5

Jean Michel Jarre

KeyC majorTempo157 bpm
0:00/0:00
// Equinoxe, Part 5 — Jean Michel Jarre
// 157 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 148 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(157/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 · electric bass pick · "PickBass"
const bass = note(`<
  ~@5 A@2 B A@2 B A@2 C D E F G H I J K L G E F M N I J N C O P I J K L G E F M N I J N C O P I J Q R@2 Q R@2 Q S@2 T
  S@2 T R@2 Q R O U V G E W J N C D E F G H I J N I O K X J N R@2 Q R@2 Q R S T S@2 T S R Q R@2 K L G E F M N I O U V G
  E W J N I J K C Y N I J N C O P R@2 Q R@2 Q R@2 Q R@2 Z
>`.pickRestart({
  A: "g2 ~ g2 ~ g3 ~ g3 ~ g2 ~ g2 ~ g3 ~ g3 ~", B: "g2 ~ g2 ~ g3@2 g3 ~ g2 ~ g2 ~ g3@2 g3 ~",
  C: "g2 ~ g2@2 g3@2 g3 ~ g2 ~ g2 ~ g3@2 g3@2", D: "g2 ~ g2 ~ g3 ~ g3@2 f2 ~ f2 ~ f3 ~ f3@2",
  E: "f2@2 f2 ~ f3 ~ f3 ~ f2@2 f2@2 f3 ~ f3 ~", F: "f2 ~ f2@2 f3@2 f3 ~ f2 ~ f2 ~ f3@2 f3@2",
  G: "f2 ~ f2 ~ f3 ~ f3@2 f2 ~ f2 ~ f3 ~ f3@2", H: "f2@2 f2 ~ f3 ~ f3 ~ c2@2 c2@2 c3 ~ c3 ~",
  I: "c2 ~ c2 ~ c3@2 c3 ~ c2 ~ c2 ~ c3@2 c3@2", J: "c2 ~ c2 ~ c3 ~ c3@2 c2 ~ c2 ~ c3 ~ c3@2",
  K: "g2@2 g2 ~ g3 ~ g3 ~ g2@2 g2@2 g3 ~ g3 ~", L: "g2 ~ g2@2 g3@2 g3 ~ f2 ~ f2 ~ f3@2 f3@2",
  M: "f2 ~ f2 ~ f3 ~ f3@2 c2 ~ c2 ~ c3 ~ c3@2", N: "c2@2 c2 ~ c3 ~ c3 ~ c2@2 c2@2 c3 ~ c3 ~",
  O: "g2 ~ g2 ~ g3 ~ g3@2 g2 ~ g2 ~ g3 ~ g3@2", P: "g2@2 g2 ~ g3 ~ g3 ~ c2@2 c2@2 c3 ~ c3 ~",
  Q: "c2@2 c2 ~ c3@3 ~ c2@2 c3@3 ~ c3 ~", R: "c2 ~ c2 ~ c3@3 ~ c2 ~ c3@3 ~ c3 ~",
  S: "f2 ~ f2 ~ f3@3 ~ f2 ~ f3@3 ~ f3 ~", T: "f2@2 f2 ~ f3@3 ~ f2@2 f3@3 ~ f3 ~",
  U: "g2@2 g2 ~ g3 ~ g3 ~ f2@2 f2@2 f3 ~ f3 ~", V: "f2 ~ f2@2 f3@2 f3 ~ f2 ~ f2 ~ f3@2 f3 ~",
  W: "f2 ~ f2@2 f3@2 f3 ~ c2 ~ c2 ~ c3@2 c3@2", X: "g2 ~ g2@2 g3@2 g3 ~ c2 ~ c2 ~ c3@2 c3@2",
  Y: "g2 ~ g2 ~ g3 ~ g3@2 c2 ~ c2 ~ c3 ~ c3@2", Z: "c2@2 c2 ~@13",
})).s("gm_electric_bass_pick").gain(0.3).pan(0.3)

// bass · acoustic bass · "WoodBase"
const bass_2 = note(`<
  A B C A B C A B C A B C A D E F G H I J K L M H F G N O J K O D C P J K L M H F G N O J K O D C P J K O J K O J K O G
  Q R G Q R J K O J C S G H F T K O D E F G H I J K O J C L U K O J K O J K O J Q R G Q R G K O J K L M H F G N O J C S
  G H F T K O J K L D V O J K O D C P J K O J K O J K O J K W
>`.pickRestart({
  A: "g2 ~ g2 ~ g3 ~ g2 ~ g2 ~ g2 ~ g3 ~ g2 ~", B: "g2 ~ g2 ~ g3 ~ g2 ~ g2 ~ g2 ~ g3 ~ g2@2",
  C: "g2 ~ g2 ~ g3 ~ g2@2 g2 ~ g2 ~ g3 ~ g2@2", D: "g2 ~ g2@2 g3@2 g2 ~ g2 ~ g2 ~ g3@2 g2@2",
  E: "g2 ~ g2 ~ g3 ~ g2@2 f2 ~ f2 ~ f3 ~ f2@2", F: "f2@2 f2 ~ f3 ~ f2 ~ f2@2 f2@2 f3 ~ f2 ~",
  G: "f2 ~ f2@2 f3@2 f2 ~ f2 ~ f2 ~ f3@2 f2@2", H: "f2 ~ f2 ~ f3 ~ f2@2 f2 ~ f2 ~ f3 ~ f2@2",
  I: "f2@2 f2 ~ f3 ~ f2 ~ c2@2 c2@2 c3@2 c2 ~", J: "c2 ~ c2@2 c3@2 c2 ~ c2 ~ c2 ~ c3@2 c2@2",
  K: "c2 ~ c2 ~ c3 ~ c2@2 c2 ~ c2 ~ c3@2 c2@2", L: "g2@2 g2 ~ g3 ~ g2 ~ g2@2 g2@2 g3 ~ g2 ~",
  M: "g2 ~ g2@2 g3@2 g2 ~ f2 ~ f2 ~ f3@2 f2@2", N: "f2 ~ f2 ~ f3 ~ f2@2 c2 ~ c2 ~ c3@2 c2@2",
  O: "c2@2 c2 ~ c3 ~ c2 ~ c2@2 c2@2 c3@2 c2 ~", P: "g2@2 g2 ~ g3 ~ g2 ~ c2@2 c2@2 c3 ~ c2 ~",
  Q: "f2 ~ f2 ~ f3 ~ f2@2 f2 ~ f2 ~ f3@2 f2@2", R: "f2@2 f2 ~ f3 ~ f2 ~ f2@2 f2@2 f3@2 f2 ~",
  S: "g2@2 g2 ~ g3 ~ g2 ~ f2@2 f2@2 f3 ~ f2 ~", T: "f2 ~ f2@2 f3@2 f2 ~ c2 ~ c2 ~ c3@2 c2@2",
  U: "g2 ~ g2@2 g3@2 g2 ~ c2 ~ c2 ~ c3@2 c2@2", V: "g2 ~ g2 ~ g3 ~ g2@2 c2 ~ c2 ~ c3 ~ c2@2", W: "c2@2 c2 ~@13",
})).s("gm_acoustic_bass").gain(0.3).pan(0.6)

// chords · synth strings 2 · "SynString2"
const synth_strings_2 = note(`<
  ~@13 A B@3 C D@3 A B@3 C D@3 E F@2 G H@3 A B@3 C D@3 E F@2 G I@3 J@2 K L@2 M N O P@2 O Q@2 R@2 S@2 A B@3 C D@3 A B@3 C
  D@3 E F@2 G I@3 J@2 K L@2 M N O P@2 O Q@2 R@2 S@2 A B@3 C D@3 A B@3 C D@3 E F@2 G I@3 E F@2 G T@7 U@6
>`.pickRestart({
  A: "[b4,d5] ~ [a4,c5]@3 ~ [b4,d5] ~ [a4,c5]@3 ~ [b4,d5] ~ [a4,c5]@2", B: "[~@2 [g4,b4]@5 ~ [f4,a4]@38 ~@2]/3",
  C: "[a4,c5] ~ [g4,b4]@3 ~ [a4,c5] ~ [g4,b4]@3 ~ [a4,c5] ~ [g4,b4]@2", D: "[~@2 [f4,a4]@5 ~ [e4,g4]@38 ~@2]/3",
  E: "[c4,e4]@5 ~ [d4,f4]@2 [d4,f4]@3 ~ [e4,g4]@4", // C Dm Em
  F: "[~@2 [f4,a4]@5 ~ [e4,g4]@5 ~ [g4,b4]@5 ~ [g4,b4]@5 ~ [f4,a4]@2 [f4,a4]@3 ~]/2", // F Em G F
  G: "[e4,g4]@5 ~ [d4,f4]@2 [d4,f4]@3 ~ [d4,f4]@3 ~", // Em Dm
  H: "[[d4,f4] ~ [e4,g4]@5 ~ [d4,f4]@5 ~ [c4,e4]@5 ~ [c4,e4]@27 ~]/3", // Dm Em Dm C
  I: "[[d4,f4] ~ [e4,g4]@5 ~ [d4,f4]@5 ~ [c4,e4]@5 ~ [c4,e4]@26 ~@2]/3", // Dm Em Dm C
  J: "[[g5,a#5]@5 ~ [f5,a5]@5 ~ [e5,g5]@7 ~ [d5,f5] ~ [e5,g5] ~ [d5,f5] ~ [e5,g5] ~ [g5,a#5]@4]/2", // Gm F Em Dm Em Dm Em Gm
  K: "~@2 [f5,a5]@5 ~ [e5,g5]@3 ~ [g4,c5] ~ [g4,c5] ~", // F Em C5
  L: "[[g4,c5]@3 ~ [g4,c5]@3 ~ [g5,a#5]@5 ~ [f5,a5]@5 ~ [e5,g5]@7 ~ [d5,f5] ~ [e5,g5]@2]/2", // C5 Gm F Em Dm Em
  M: "~@4 [g5,a#5]@5 ~ [f5,a5]@5 ~", N: "[e5,g5]@15 ~", O: "[g5,a#5]@5 ~ [f5,a5] ~ [f5,a5]@3 ~ [a5,c6]@4",
  P: "[~@2 [g5,a#5]@5 ~ [a#5,d6]@5 ~ [a5,c6]@5 ~ [f5,a5]@11 ~]/2", // Gm A# Am F
  Q: "[~@2 [g5,a#5]@5 ~ [a#5,d6]@5 ~ [a5,c6]@5 ~ [f5,a5]@5 ~ [e5,g5] ~ [e5,g5]@3 ~]/2", // Gm A# Am F Em
  R: "[[g5,a#5]@5 ~ [f5,a5]@5 ~ [e5,g5]@7 ~ [d5,f5] ~ [e5,g5]@3 ~@3 [g5,a#5]@4]/2", // Gm F Em Dm Em Gm
  S: "[~@2 [f5,a5]@5 ~ [e5,g5]@23 ~]/2", // F Em
  T: "[[d4,f4] ~ [e4,g4]@5 ~ [d4,f4]@5 ~ [c4,e4]@5 ~ e4@11 ~ f4@15 ~@49 f4@12 g4@4, ~@5 c4@15 c4@8, ~@3 e4@3 ~]/7", // Dm Em Dm C
  U: "[c4@2 ~ f4 e4@2, e4 ~, ~ c4@2]/6",
})).s("gm_synth_strings_2").gain(0.36).pan(1)

// other · soprano sax · "SpranoSax"
const soprano_sax = note(`<
  ~@36 A B@3 C D@3 E F@2 G H@3 ~@25 A B@3 C D@3 E F@2 G I@3 ~@25 A B@3 C D@3 E F@2 G J@3 E F@2 G K@3 ~@10
>`.pickRestart({
  A: "b3 ~ a3@3 ~ b3 ~ a3@3 ~ b3 ~ a3@2", B: "[~@2 g3@5 ~ f3@36 ~@4]/3", C: "a3 ~ g3@3 ~ a3 ~ g3@3 ~ a3 ~ g3@2",
  D: "[~@2 f3@5 ~ e3@36 ~@4]/3", E: "c3@5 ~ d3@2 d3@3 ~ e3@4", F: "[~@2 f3@5 ~ e3@5 ~ g3@6 g3@5 ~ f3@2 f3@3 ~]/2",
  G: "e3@5 ~ d3@2 d3@4 d3@4", H: "[d3 ~ e3@5 ~ d3@5 ~ c3@6 c3@27 ~]/3", I: "[~@2 e3@5 ~ d3@5 ~ c3@33 ~]/3",
  J: "[~@2 e3@5 ~ d3@5 ~ c3@31 ~@3]/3", K: "[d3 ~ e3@5 ~ d3@5 ~ c3@6 c3@25 ~@3]/3",
})).s("gm_soprano_sax").gain(0.3).pan(0.8)

// chords · rock organ · "RockOrgan"
const rock_organ = note("<~@51 A@2 B C@3 D E F@2 E G@2 H@2 I@2 ~@23 A@2 B C@3 D E F@2 E J@2 H@2 K@3 ~@39>".pickRestart({
  A: "[[g6,a#6]@5 ~ [f6,a6]@5 ~ [e6,g6]@7 ~ [d6,f6] ~ [e6,g6] ~ [d6,f6] ~ [e6,g6] ~ [g6,a#6]@4]/2", // Gm F Em Dm Em Dm Em Gm
  B: "~@2 [f6,a6]@5 ~ [e6,g6]@3 ~ [g5,c6] ~ [g5,c6] ~", // F Em C5
  C: "[[g5,c6]@3 ~ [g5,c6]@3 ~ [g6,a#6]@5 ~ [f6,a6]@5 ~ [e6,g6]@7 ~ [d6,f6] ~ [e6,g6]@4 ~@2 [g6,a#6]@5 ~ [f6,a6]@5 ~]/3", // C5 Gm F Em Dm Em Gm F
  D: "[e6,g6]@15 ~", E: "[g6,a#6]@5 ~ [f6,a6]@5 ~ [a6,c7]@4",
  F: "[~@2 [g6,a#6]@5 ~ [a#6,d7]@5 ~ [a6,c7]@5 ~ [f6,a6]@11 ~]/2", // Gm A# Am F
  G: "[~@2 [g6,a#6]@5 ~ [a#6,d7]@5 ~ [a6,c7]@5 ~ [f6,a6]@5 ~ [e6,g6]@2 [e6,g6]@3 ~]/2", // Gm A# Am F Em
  H: "[[g6,a#6]@5 ~ [f6,a6]@5 ~ [e6,g6]@7 ~ [d6,f6] ~ [e6,g6]@5 ~ [g6,a#6]@4]/2", I: "[~@2 [f6,a6]@5 ~ [e6,g6]@24]/2",
  J: "[~@2 [g6,a#6]@5 ~ [a#6,d7]@5 ~ [a6,c7]@5 ~ [f6,a6]@5 ~ [e6,g6] ~ [e6,g6]@3 ~]/2", // Gm A# Am F Em
  K: "[~@2 [f6,a6]@5 ~ [e6,g6]@25 ~@15]/3", // F Em
})).s("gm_rock_organ").gain(0.25).pan(0.2)

// chords · synth brass 1 · "SynBrass1"
const synth_brass_1 = note(`<
  ~@13 A B@3 C D@3 A B@3 C D@3 E F@2 G H@3 A B@3 C D@3 E F@2 G I@3 ~@17 A B@3 C D@3 A B@3 C D@3 E F@2 J K@3 ~@17 A B@3 C
  D@3 A B@3 C D@3 E F@2 G I@3 E F@2 G L@7 M@6
>`.pickRestart({
  A: "[b4,d5] ~ [a4,c5]@3 ~ [b4,d5] ~ [a4,c5]@3 ~ [b4,d5] ~ [a4,c5]@2", B: "[~@2 [g4,b4]@5 ~ [f4,a4]@38 ~@2]/3",
  C: "[a4,c5] ~ [g4,b4]@3 ~ [a4,c5] ~ [g4,b4]@3 ~ [a4,c5] ~ [g4,b4]@2", D: "[~@2 [f4,a4]@5 ~ [e4,g4]@38 ~@2]/3",
  E: "[c4,e4]@5 ~ [d4,f4]@2 [d4,f4]@3 ~ [e4,g4]@4", // C Dm Em
  F: "[~@2 [f4,a4]@5 ~ [e4,g4]@5 ~ [g4,b4]@5 ~ [g4,b4]@5 ~ [f4,a4]@2 [f4,a4]@3 ~]/2", // F Em G F
  G: "[e4,g4]@5 ~ [d4,f4]@2 [d4,f4]@3 ~ [d4,f4]@3 ~", // Em Dm
  H: "[[d4,f4] ~ [e4,g4]@5 ~ [d4,f4]@5 ~ [c4,e4]@5 ~ [c4,e4]@27 ~]/3", // Dm Em Dm C
  I: "[[d4,f4] ~ [e4,g4]@5 ~ [d4,f4]@5 ~ [c4,e4]@5 ~ [c4,e4]@26 ~@2]/3", // Dm Em Dm C
  J: "[e4,g4]@5 ~ [d4,f4]@2 [d4,f4]@3 ~ [d4,f4]@4", K: "[~@2 [e4,g4]@5 ~ [d4,f4]@5 ~ [c4,e4]@5 ~ [c4,e4]@26 ~@2]/3",
  L: "[[d4,f4] ~ [e4,g4]@5 ~ [d4,f4]@5 ~ [c4,e4]@5 ~ e4@12 f4@16 ~@48 f4@12 g4@4, ~@5 c4@15 c4@8, ~@3 e4@3 ~]/7", // Dm Em Dm C
  M: "[c4@2 ~ f4 ~@2, e4 ~, ~ c4@2]/6",
})).s("gm_synth_brass_1").gain(0.15).pan(0)

// chords · flute · G Bm G Bm G G5 Bm G …
const flute = note(`<
  ~
  [[g4,b4] d5 ~ g4 [b4,d5] ~@2 [g4,b4,d5] ~@2 g4 [b4,d5] ~@2 [g4,b4,d5] ~]
  [~@8 [g4,b4] [g4,d5] [b4,d5] [g4,b4] [b4,d5] [g4,d5] [g4,b4] [b4,d5]]
  [[b4,d5] [g4,d5] [b4,d5] [g4,b4] ~@12]
  ~@144
>`).s("gm_flute").gain(0.15)

// other · pad halo · "Halo Pad"
const pad_halo = note(`<
  ~@37 A B C@2 D E F ~@5 G H ~ I J ~@2 I K ~@19 A B C@2 D E F ~@5 G H ~ I L ~@2 I L ~@6 I L ~@3 A B C@2 D E F ~ A B C@2
  D E F ~@5 G M@2 N ~@3 G H ~@10
>`.pickRestart({
  A: "~@8 f6!2 c7 ~ a6!2 f6!2", B: "a6!2 f6 ~ c6!2 a5!2 f5!2 a5!2 f5!2 c5!2",
  C: "[f5!2 c5!2 a4!2 f4!2 a4!2 f4!2 c4 c4@8 ~@11]/2", D: "~@8 c6 g6 e6 c6 e6 c6 g5 e5",
  E: "g5 e5 ~ c5 g4 c5 g4 e4 c4 e4 c4 g3 e3 g3 e3 c3", F: "g2 c3 g2 e2 c2 e2 c2 g1 e1 c1@4 ~@3",
  G: "~@4 e5 c5 g4 e4 c4 g4 e4 c4 g3 c4 g3 e3", H: "c3 e3 c3 g2 e2 g2 e2 c2 g1 e1 c1@4 ~@2", I: "~@7 g5!9",
  J: "g5!10 ~@6", K: "g5!12 ~@4", L: "g5!7 ~@9",
  M: "[c3 e3 c3 g2 e2 g2 e2 c2 g1 e1 c1@10 c2@4 ~ e2 g2 e2 g2 c3 e3 c3]/2", N: "e3 g3 c4 g3 c4 e4 g4 c5 e5@5 ~@3",
})).s("gm_pad_halo").gain(0.36)

// other · pad halo · "Halo Pad" · soft notes
const pad_halo_soft = note("<~@52 A B ~@2 A C ~@34 A D ~@2 A D ~@6 A D ~@42>".pickRestart({
  A: "~ g5!6 ~@9", B: "~@10 g5!6", C: "~@12 g5!4", D: "~@7 g5!9",
})).s("gm_pad_halo").gain(0.24)

// other · oboe
const oboe = note(`<
  ~@6
  [~@9 c#4 ~@3 c#4 ~@2]
  [~ c#4 ~@14]
  [~@2 c#4 ~@2 d4 c#4 ~@2 d4 ~ c#4 ~@4]
  ~
  [~@2 d4!14]
  [~@4 d4!12]
  ~@136
>`).s("gm_oboe").gain(0.2).pan(0.4)

// drums · kick
const kick = s("bd").struct("<~@2 [x!2 ~@2 x!2 ~@2]!145 [x!2 ~@6]>").gain(0.25)

// drums · clap
const clap = s("cp").struct("<[~ x ~ x]!147 ~>").gain(0.2)

// drums · open hat
const open_hat = s("oh").struct("<~@13 [x!2 ~@2 x!2 ~@2]!134 [x!2 ~@6]>").gain(0.2)

// drums · crash
const crash = s("cr").struct("<~@8 [~ x ~@2]!139 ~>").gain(0.1)

// drums · ride
const ride = s("rd").struct("<~@8 [~@3 x]!139 ~>").gain(0.25)

// drums · shaker
const shaker = s("sh").struct("<[x!2 ~@2 x!2 ~@2]!147 [x!2 ~@6]>").gain(0.25)

// drums · guiro
const guiro = s("guiro:4").struct("<~@7 [~ x ~ x]!140 ~>").gain(4.19)

stack(
  bass, bass_2, synth_strings_2, soprano_sax, rock_organ, synth_brass_1, flute, pad_halo, pad_halo_soft, oboe, kick,
  clap, open_hat, crash, ride, shaker, guiro
)

More by Jean Michel Jarre