Strudelify

Fais moi une place

Clerc Julien

KeyF♯ majorTempo120 bpm
0:00/0:00
// Fais moi une place — Clerc Julien
// 120 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 102 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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(`<
  A@3 B A B C@3 D A@2 B A B C@3 D E@2 F G H I H J D A B A B C@3 D A@2 B A B C@3 D E@2 F G H I H J D K L M N O P Q R A B
  A B S T U V W X Y Z K L M N AA P Q R AB L M N AA P AC R K AD M N AA P Q R A@3 AE
>`.pickRestart({
  A: "~@2 f#4 a#4 ~@2 f#4 a#4, f#3@5 ~@3 f#3@5 ~@3, ~ c#4@2 ~@2 c#4@2 ~",
  B: "~@2 d#4 g#4 ~@2 d#4 g#4, b2@5 ~@3 b2@5 ~@3, ~ b3@2 ~@2 b3@2 ~",
  C: "[~@2 f#4 a#4 ~@2 f#4 ~@3 f#4 a#4 ~@2 f#4 ~@3 d#4 g#4 ~@2 d#4 g#4, d#3@5 ~@3 d#3@5 ~@3 c#3@5 ~@3 c#3@5 ~@3 b2@5 ~@3 b2@5 ~@3, ~ d#4@2 ~@2 d#4@2 a#4@3 ~@5 a#4@3 ~@6, ~@9 c#4@2 ~@2 c#4@2 ~@2 b3@2 ~@2 b3@2 ~]/3",
  D: "~@2 f4 g#4 ~@2 f4 g#4, c#3@5 ~@3 c#3@5 ~@3, ~ c#4@2 ~@2 c#4@2 ~",
  E: "[~@3 a#4@2 ~@5 f4 a#4 ~@2 f4 a#4, ~@2 f4@4 ~@6 d#4@4 a#2@5 ~@3 a#2@5 ~@3, ~@2 d#4@2 ~ c4@2 f4@2 d4@2 ~@2 d4@2 ~]/2",
  F: "d#3@7 ~", G: "[f3,f4,g#4,d#5]@3 ~", H: "~@2 f4 a#4 ~@2 f4 a#4, a#2@5 ~@3 a#2@5 ~@3, ~ d4@2 ~@2 d4@2 ~",
  I: "~@2 g#4 d#5 ~@2 g#4 d#5, f3@5 ~@3 f3@5 ~@3, ~ f4@2 ~@2 f4@2 ~",
  J: "~@2 g#4 b4 ~@2 g#4 b4, g#2@5 ~@3 g#2@5 ~@3, ~ d#4@2 ~@2 d#4@2 ~", K: "[f#4,a#4]@4 c#4@2 [f#4,a#4]@9 ~, f#3@15 ~",
  L: "[f#4,a#4]@2 d#4 [f#4,a#4]@2 d#4 [f#4,a#4] d#4, d#3@15 ~", M: "[b2,f#4,b4]@11 ~ [b2,f#4,b4]@3 ~",
  N: "[f#4,a#4] c#4 [f#4,a#4] [f#4,a#4]@2 c#4 [f#4,a#4] c#4, f#3@15 ~", O: "[f#4,a#4]@4 d#4 ~ [f#4,a#4]@9 ~, d#3@15 ~",
  P: "[d4,f4,a#4]@4 d4 ~ [f4,a#4]@9 ~, a#2@15 ~", // A# A#5
  Q: "[f#3,f#4,b4]@4 d#4 ~ [f#4,b4]@4 d#4@2 [b2,f#4,b4]@2 d#4@2, b2@11 ~@5", R: "[c#3,f4,g#4]@15 ~",
  S: "[a#3,c#4,f#4]@2 a#3 ~@2 a#3 [c#4,f#4] [f#2,a#3], f#2@4 f#2@3 ~, ~@3 [c#4,f#4]@2 ~@3", // F# F#5 F# F#5
  T: "[b3,d#4,g#4]@2 b3 [b3,d#4,g#4]@2 b3 [d#4,g#4] b3, b2@3 c#3", // G#m G#5
  U: "[a#3,c#4,f#4]@2 a#3 ~@2 a#3 [c#4,f#4] [f#2,a#3], f#2@4 f#2@3 ~, ~@3 [a#3,c#4,f#4]@2 ~@3", // F# F#5 F#
  V: "[b3,d#4,g#4]@2 b3 f#2 b2 [d#3,b3] [f#3,d#4,g#4] [d#3,b3], b2@3 [b3,d#4,g#4]@2 ~@3", // G#m G#7 G#m
  W: "[f#4,a#4]@2 d#4 ~@2 d#4 [f#4,a#4] [d#3,d#4], d#3@4 d#3@3 ~, ~@3 [f#4,a#4]@2 ~@3", // F# D# F#
  X: "[c#4,f#4,a#4]@2 c#4 ~@2 c#4 [f#4,a#4] [c#3,c#4], c#3@4 c#3@3 ~, ~@3 [f#4,a#4]@2 ~@3", // F# C# F#
  Y: "[b3,d#4,f#4]@2 b3 b2 ~ b3 [d#4,f#4] b3, b2@3 [b3,d#4,f#4]@2 ~@3, ~@2 b2!2", Z: "[c#3,c#4,f4,g#4]",
  AA: "[f#4,a#4]@4 d#4@2 [f#4,a#4]@9 ~, d#3@15 ~", AB: "[f#4,a#4]@4 c#4 ~ [f#4,a#4]@9 ~, f#3@15 ~",
  AC: "[f#3,f#4,b4]@4 d#4 ~ [f#4,b4]@4 d#4 ~ [b2,f#4,b4]@2 d#4@2, b2@11 ~@5", // B5
  AD: "[f#4,a#4]@4 d#4 ~ [f#4,a#4]@4 d#4@2 [f#4,a#4]@2 d#4@2, d#3@15 ~", AE: "[f#3,d#4,f#4,c#5]@3 ~",
})).s("gm_piano").gain(0.2).pan(0.4)

// bass · acoustic bass
const bass = note(`<
  ~@2 A B A B C D E D F A B A B C D E D G H I J K L M N O A B A B C D E D F A B A B C D E D G H I J K L M N O P Q R S T
  U R V A B A B W X W Y Z AA AB AC P Q R S T U R V P Q R S T U R V P Q R S T U R V A@3 AD
>`.pickRestart({
  A: "f#2@7 ~ f#2@7 ~", B: "b2@7 ~ b2@7 ~", C: "d#3@7 ~ d#3@4 ~@2 d#3@2", D: "c#3@7 ~ c#3@4 ~@2 c#3@2",
  E: "b2@7 ~ b2@4 ~@2 b2@2", F: "f#2@7 ~ f#2@4 ~@4", G: "f3@4 f2@2 f3 f2", H: "a#2@7 ~ a#2@4 ~@2 a#2@2", I: "d#3@7 ~",
  J: "~ d#3 c#3 b2@2 ~@2 b2", K: "a#2@3 ~", L: "f3@6 f2 f3", M: "a#2@15 ~", N: "b2@15 ~", O: "c#3@15 ~",
  P: "f#2@11 ~ c#2@4", Q: "d#2@15 ~", R: "b2@11 ~ b2@4", S: "f#2@11 ~ f#3@2 f3@2", T: "d#3@11 ~ d#3@4",
  U: "a#2@11 ~ a#3@2 a#2@2", V: "c#3@9 ~@3 c#2 ~ d#2@2", W: "f#2@4 f#2@3 f#2", X: "b2@3 c#3",
  Y: "b2@3 f#2 b2 d#3 f#3 d#3", Z: "d#3@4 d#3@3 d#3", AA: "c#3@4 c#3@3 c#3", AB: "b2@3 b2 b2@2 b2@2", AC: "c#3",
  AD: "c#2 f#1@11 ~@4",
})).s("gm_acoustic_bass").gain(0.2)

// chords · synth strings 2
const synth_strings_2 = note(`<
  ~@21 A@2 B C D E F ~@19 A@2 B C D E F G H I G H J I K ~@4 L M G M L N O P G H I G H J I K G H I G H J I K G H I G H J
  I K ~@4
>`.pickRestart({
  A: "[~@8 d#5@23 ~, [d#4,f#4,a#4]@31 ~]/2", B: "[a#2,f3,d4,f4,a#4]@15 ~", C: "[f3,f4,g#4,d#5]@15 ~",
  D: "[a#2,a#4,d5]@15 ~", E: "[g#2,g#4,d#5]@15 ~", F: "[c#3,f4,g#4,c#5]@15 ~", G: "[c#4,f#4,a#4]@15 ~",
  H: "[d#4,f#4,a#4]@15 ~", I: "[d#4,f#4,b4]@15 ~", J: "[d4,f4,a#4]@15 ~", K: "[f4,g#4,c#5]@15 ~", L: "[f#4,a#4]@15 ~",
  M: "[d#4,g#4,b4]@15 ~", N: "[a#3,c#4,f#4]@15 ~", O: "[b3,d#4,f#4]@15 ~", P: "[c#4,f4,g#4]@15 ~",
})).s("gm_synth_strings_2").gain(0.2)

// chords · lead 3 calliope
const lead_3_calliope = note("<~@74 A B C D E F G H I J K L M N O P I J K L M N O P ~@4>".pickRestart({
  A: "f#5@11 ~ f#5@4", B: "f5", C: "d#5@11 ~ d#5@4", D: "c#5@15 ~", E: "f#5@14 f5 f#5", F: "f5@14 d#5 f5",
  G: "d#5@14 c#5 d#5", H: "c#5 ~", I: "[f#5,a#5]@11 ~ [f#5,c#6]@4", J: "[f5,a#5]", K: "[d#5,b5]@11 ~ [d#5,d#6]@4",
  L: "[c#5,a#5]@15 ~", M: "[f#5,a#5]@14 [f5,g#5] [f#5,a#5]", N: "[f5,g#5]@14 [d#5,a#5] [f5,g#5]",
  O: "[d#5,f#5]@14 [c#5,f5] [d#5,g#5]", P: "[c#5,f5] ~",
})).s("gm_lead_3_calliope").gain(0.31)

// other · lead 5 charang
const lead_5_charang = note("<~@82 A B C D E F G H ~@12>".pickRestart({
  A: "f#5@11 ~ f#5@4", B: "f5", C: "d#5@11 ~ d#5@4", D: "c#5@15 ~", E: "f#5@14 f5 f#5", F: "f5@14 d#5 f5",
  G: "d#5@14 c#5 d#5", H: "c#5 ~",
})).s("gm_lead_5_charang").gain(0.41)

// drums · hihat
const hihat = s("hh").struct("<~@2 A@17 B@9 A@17 B@9 C@8 A@12 C@24 ~@4>".pickRestart({
  A: "~ x ~ x", B: "x ~@2 x ~@2 x ~", C: "~@2 x ~@2 x ~ x",
})).gain(0.31)

stack(piano, bass, synth_strings_2, lead_3_calliope, lead_5_charang, hihat)

More by Clerc Julien