Strudelify
Chronologie, Part 3 cover art

1993 · Chronologie

Chronologie, Part 3

Jean Michel Jarre

KeyB minorTempo75 bpm
0:00/0:00
// Chronologie, Part 3 — Jean Michel Jarre
// 75 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 60 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(75/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 · pad poly
const pad_poly = note("<A@2 B C@2 D E@2 A@2 B C@2 D F@2 G H I J@2 ~@9 G H I J@2 ~ K@3 C@2 D F@2 ~@16>".pickRestart({
  A: "[b3,d4,f#4]/2", B: "b3 a#3, [e4,g4]", C: "[[b3,f#4] [a3,a4], [b4,d5]]/2", D: "g#3 f3, [f4,g#4]",
  E: "[f#3 e3, [c#4,f#4]]/2", F: "[[c#4,f#4], f#3 ~]/2", G: "[b3,d4,f#4] [b3,d4,g4]", H: "[b3,d4,f#4]",
  I: "[b3,e4,g4] [a#3,e4,g4]", J: "[[b3,d4], f#4 ~]/2", K: "[f#4@2 g4@2 ~ a#3, [b3,b4]@5 ~, d4@2 e4]/3",
})).s("gm_pad_poly").gain(0.22)

// other · string ensemble 2
const string_ensemble_2 = note("<A B C D E F G H A I J I K L M N ~@44>".pickRestart({
  A: "b2 b3 ~ b2", B: "b2 b3 ~@2", C: "b2 b3 a#2 a#3", D: "~ b3 ~ b2", E: "~ b3 ~@2", F: "d3 b3 b2 g#3",
  G: "a2 f#3 ~@2", H: "a#2 f#3 f#2 e3", I: "b2 b3 b2 b3", J: "b2 g3 ~ a#2", K: "~ d3 b3 b2", L: "g#3 ~ f3 ~",
  M: "f#2 f#3 ~@2", N: "g2 f#3 f#2 f#3",
})).s("gm_string_ensemble_2").gain(0.28)

// other · synth strings 1
const synth_strings_1 = note("<~@21 A B C B C B C B D ~@13 A B C B C B C B C B C B C B C B E>".pickRestart({
  A: "~@7 b3", B: "b3 a#3!2 b3!2 a#3!2 b3", C: "b3@7 b3", D: "b3@3 ~", E: "b3",
})).s("gm_synth_strings_1").gain(0.3)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@16 A B C B D E F G H I F G H J A B C B D E ~@8 F G H I F G H K L G H K F G M N
>`.pickRestart({
  A: "~ [f#3,b3,d4] ~ [g3,b3,d4]", B: "~ [f#3,b3,d4]!3", C: "~ [g3,b3,e4] ~ [g3,a#3,e4]",
  D: "~ [f3,b3,d4] ~ [f3,b3,c#4]", E: "~ [g3,b3,c#4] ~ [f#3,a#3,c#4]", F: "~ [b2,d3,f#3,b3] ~ [b2,d3,f#3]",
  G: "[a#2,e3,g3]!2 ~@2 [a#2,e3,g3]@2 [a#2,e3,g3]@2", H: "~ [a#2,e3,g3]!2 [a#2,e3,f#3]",
  I: "~@2 [b2,d3,f#3]!2 [b2,d3,f#3]@4", J: "~ [b2,d3,f#3,b3]@2 ~", K: "~@2 [b2,d3,f#3] [b2,d3,f#3]@5",
  L: "~ [b2,d3,f#3,b3] ~ [b2,d3,f#3,b3]", M: "~ [a#2,e3,g3] [a#2,e3,f#3] ~", N: "b2",
})).s("gm_electric_guitar_jazz").gain(0.14)

// other · overdriven guitar
const overdriven_guitar = note("<~@44 A@2 B C D@2 E@2 F@2 G H I J K L>".pickRestart({
  A: "[b3@6 c#4@2 d4@2 f#4@4 b4@8 a4@4 g4@4 f#4 g4]/2", B: "e4@8 d4 c#4 c#4@4 e4@2", C: "d4@6 e4 f#4 c#4@8",
  D: "[f#3 b3 d4 f#4 e4 d4 c#4 d4 g3 c#4 g4 b4 e5 d5 g4@5 c#3 [d3,e3,f#3] [g3,a3,c#4] [d4,e4,f#4] [g4,a4,c#5] [d5,e5] [f#5,g5] b5@4 b5 c#6, ~@26 a5 ~@5]/2", // D A7 D A7 Dsus2 Gmaj7
  E: "[d6@5 c#6 b5 a#5 f#5 c#5 b4 a#4@4 b4@13 ~@4]/2", F: "[b2@3 b2 c#3 d3@2 g2@4 d3@2 c#3@3]/2", G: "c3@5 f#2@3",
  H: "b2 c#3 d3 g3 f#3 d3 c#3 f#3", I: "b2@4 ~@2 b3 a4 f#4 a4 b4@2 d5 c#5 b4@2",
  J: "~ [c#5,d5] [c#5,e5] [d5,e5] [d5,f#5] [e5,f#5] [e5,g5] [f#5,g5] [a5,b5] [b5,c#6] [g5,a5] [e5,f#5] [c#5,d5] [a4,b4] [f#4,g4] [d4,e4]", // Dmaj7 C#m Dsus2 D Esus2 Em Gmaj7 Asus2 …
  K: "c4@4 ~ c#5@3, c#4 ~@15", L: "b4",
})).s("gm_overdriven_guitar").gain(0.32)

// other · string ensemble 2
const string_ensemble_2_2 = note(`<
  ~@8 A@2 B C D E F G H I J I K L M@2 N O M@2 N P Q R S T U V A@2 B C D E F G M@2 N O M@2 N O M@2 N O W@2 X Y
>`.pickRestart({
  A: "b2 b3", B: "e3 a#2", C: "b2@3 b3 d3@2 b2@2", D: "a2@3 b3 f#3@3 a2", E: "g#2@2 f3 c#3", F: "f#3@5 a3 g#3 f#3",
  G: "e3@3 g3 f#3 e3 d3 c#3", H: "b2@3 f#3 g3@3 f#3", I: "b2@3 c#3@2 d3@3", J: "e3 c3", K: "f2 c#2", L: "g2 f#2",
  M: "[b2@3 b2 c#3 d3@2 g2@4 d3@2 c#3@3]/2", N: "c3@5 f#2@3", O: "b2 c#3 d3 g3 f#3 d3 c#3 f#3", P: "b2@3 ~",
  Q: "b2@3 f#3 g3@3 c#3", R: "d3@3 c#3@2 b2@3", S: "e3@3 b3 c4@3 a#3", T: "b3@3 c#3@2 d3@3", U: "f2@4 c#3@3 f#3",
  V: "g3@3 f#3 c#3 e3 d3 c#3", W: "[b2@3 b2 c#3 d3@2 g2@4 b2@2 a#2@3]/2", X: "a2@5 f#2@3", Y: "b2",
})).s("gm_string_ensemble_2").gain(0.56)

// other · string ensemble 2
const string_ensemble_2_3 = note("<~@36 A B C B D E F G ~@16>".pickRestart({
  A: "b2 b3 ~ b2", B: "b2 b3 b2 b3", C: "b2 g3 ~ a#2", D: "~ d3 b3 b2", E: "g#3 ~ f3 ~", F: "f#2 f#3 ~@2",
  G: "g2 f#3 f#2 f#3",
})).s("gm_string_ensemble_2").gain(0.39)

stack(
  pad_poly, string_ensemble_2, synth_strings_1, electric_guitar_jazz, overdriven_guitar, string_ensemble_2_2,
  string_ensemble_2_3
)

More by Jean Michel Jarre