Strudelify

Repondez-moi

Cabrel Francis

KeyF♯ majorTempo75 bpm
0:00/0:00
// Repondez-moi — Cabrel Francis
// 75 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 7, 4/4 at bar 8, 2/4 at bar 16, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 88 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 · [...]/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.

// other · synth brass 2 · "Paroles"
const synth_brass_2 = note(`<
  ~@8 A B C D E F G H ~ I J K@2 L@4 M@2 N@2 O@2 P@2 Q@2 R S ~ T B C D E F G H ~ U J V@2 L@4 M@2 N@2 O@2 P@2 Q@2 R S ~ T
  B C W E F G H ~ X J K@2 L@4 ~@3
>`.pickRestart({
  A: "~@15 c#4", B: "a#4@3 a#4@2 a#4@2 a#4 g#4@5 g#4@3", C: "f#4@2 f#4@3 f#4@2 g#4 g#4@4 f#4 f#4@3",
  D: "f#4@2 f#4@2 f#4@2 f#4 f4@5 f4@2 f4@2", E: "d#4@4 d#4 d#4@2 d#4 f4@4 ~@3 d#4",
  F: "d#4@2 d#4 d#4@2 d#4 c#4@6 ~@3 b3", G: "b3 c#4@4 b3 d#4 d#4@5 ~@2 g#3@2", H: "c#4@2 c#4@3 c#4 b3 b3@5 ~@4",
  I: "~@7 c#4 a#4@3 a#4@2 a#4@2 a#4", J: "g#4@5 g#4@3 f#4@2 f#4@3 f#4@2 g#4",
  K: "[g#4@4 f#4 f#4@3 f#4@2 f#4@2 f#4@2 f#4 f4@5 f4@2 f4@2 d#4@4 d#4 d#4@2 d#4]/2",
  L: "[f4@4 ~@3 d#4 d#4@2 d#4 d#4@2 d#4 c#4@6 ~@3 b3!2 c#4@4 b3 d#4 d#4@5 ~@2 g#3@2 c#4@2 c#4@3 c#4 b3 b3@5 ~@12]/4",
  M: "[~@10 f#4 f#4@2 a#4 a#4@6 ~@12]/2", N: "[~@10 g#3 e4@2 f#4 f#4@6 ~@12]/2",
  O: "[~@2 b3@2 f#4@3 f#4 g#4@3 f#4 b4@2 b4 b4@3 a#4@2 a#4!2 f#4 f#4@3 c#4 c#4@5]/2",
  P: "[~@5 d4 f#4!2 f4@2 f4@3 c#4 f4 f4@3 f#4 f#4@5 ~@8]/2",
  Q: "[~@2 f#4@2 f#4@2 g#4 g#4@4 f#4 b4@2 b4 b4@4 a#4!2 f#4@3 f#4!2 c#4 c#4@5]/2", R: "~@5 d4 f#4!2 f4@2 f4 f4@2 f4@3",
  S: "f4@2 f#4 f#4@5 ~@8", T: "~@14 f#4!2", U: "~@6 f#4 g#4 f#4 a#4@2 a#4@2 a#4@2 a#4",
  V: "[g#4@4 f#4 f#4@3 f#4@2 f#4@2 f#4@3 f4@5 f4@2 f4@2 d#4@4 d#4 d#4@2 d#4]/2", W: "f#4@2 f#4@2 f#4@3 f4@5 f4@2 f4@2",
  X: "~@5 c#4 d#4 c#4 a#4@3 a#4@2 a#4@2 a#4",
})).s("gm_synth_brass_2").gain(0.57).pan(0.4)

// other · melodic tom · "Afro Tom"
const melodic_tom = note("<~@69 A B C D E F G H I J K L M N O P Q A ~>".pickRestart({
  A: "[f#3,a#4]@2 a#3 c#4 f#3 f#4 a#3@2 [f#3,a#4]@2 a#3 g#4 f#3 f#4 a#3@2", // F#
  B: "[f#3,f#4]@2 a#3 c#4 f#3 f#4 a#3@2 [f#3,g#4]@2 c#4 f#4 f#3 g#4 a#3@2", // F# F#sus2
  C: "[d#3,f#4]@2 a#3 d#4 d#3 f#4 a#3@2 [d#3,f4]@2 a#3 d#4 d#3 f4 a#3@2", // D#m D#sus2
  D: "[d#3,d#4]@2 a#3!2 d#3 d#4 a#3@2 [d#3,f4]@2 a#3 d#4 d#3 f4 a#3@2", // D# D#sus2
  E: "[c#3,f4]@2 g#3 c#4 c#3 f4 g#3@2 [c#3,d#4]@2 g#3!2 c#3 d#4 g#3@2", // C# C#sus2
  F: "[c#3,c#4]@2 g#3!2 c#3 c#4 g#3@2 [c#3,d#4]@2 g#3 c#4 c#3 d#4 g#3@2", // C# C#sus2
  G: "[d#3,d#4]@2 a#3 f4 d#3 d#4 a#3@2 [b2,b3]@2 f#3 d#4 b2 b3 f#3@2", // D# B
  H: "[b2,b4]@2 f#3 b3 b2 d#4 f#3@2 [b2,b3]@2 f#3 d#4 b2 b3 f#3@2", // B
  I: "[b2,b4]@2 f#3 b3 b2 d#4 f#3@2 [f#3,a#4]@2 a#3 c#4 f#3 f#4 a#3@2", // B F#
  J: "[f#3,a#4]@2 a#3 g#4 f#3 f#4 a#3@2 [f#3,f#4]@2 a#3 c#4 f#3 f#4 a#3@2", // F#
  K: "[f#3,g#4]@2 c#4 f#4 f#3 g#4 a#3@2 [d#3,f#4]@2 a#3 d#4 d#3 f#4 a#3@2", // F#sus2 D#m
  L: "[d#3,f4]@2 a#3 d#4 d#3 f4 a#3@2 [d#3,d#4]@2 a#3!2 d#3 d#4 a#3@2", // D#sus2 D#
  M: "[d#3,f4]@2 a#3 d#4 d#3 f4 a#3@2 [c#3,f4]@2 g#3 c#4 c#3 f4 g#3@2", // D#sus2 C#
  N: "[c#3,d#4]@2 g#3!2 c#3 d#4 g#3@2 [c#3,c#4]@2 g#3!2 c#3 c#4 g#3@2", // C#sus2 C#
  O: "[c#3,d#4]@2 g#3 c#4 c#3 d#4 g#3@2 [d#3,d#4]@2 a#3 f4 d#3 d#4 a#3@2", // C#sus2 D#
  P: "[b2,b3]@2 f#3 d#4 b2 b3 f#3@2 [b2,b4]@2 f#3 b3 b2 d#4 f#3@2", // B
  Q: "[f#3,b4]@2 b3 d4 f#3 f#4 b3@2 [f#3,b4]@2 b3 d4 f#3 f#4 b3@2", // B5
})).s("gm_melodic_tom").gain(0.43)

// other · pad poly · "Polysynth"
const pad_poly = note(`<
  ~@39 A B C D E F G H I J K L M N O P@2 A Q R S T U R S A V W A Q A B C D E F G H I J K L M N O P X A Y
>`.pickRestart({
  A: "[f#3,a#4]@2 a#3 c#4 f#3 f#4 a#3@2 [f#3,a#4]@2 a#3 g#4 f#3 f#4 a#3@2", // F#
  B: "[f#3,f#4]@2 a#3 c#4 f#3 f#4 a#3@2 [f#3,g#4]@2 c#4 f#4 f#3 g#4 a#3@2", // F# F#sus2
  C: "[d#3,f#4]@2 a#3 d#4 d#3 f#4 a#3@2 [d#3,f4]@2 a#3 d#4 d#3 f4 a#3@2", // D#m D#sus2
  D: "[d#3,d#4]@2 a#3!2 d#3 d#4 a#3@2 [d#3,f4]@2 a#3 d#4 d#3 f4 a#3@2", // D# D#sus2
  E: "[c#3,f4]@2 g#3 c#4 c#3 f4 g#3@2 [c#3,d#4]@2 g#3!2 c#3 d#4 g#3@2", // C# C#sus2
  F: "[c#3,c#4]@2 g#3!2 c#3 c#4 g#3@2 [c#3,d#4]@2 g#3 c#4 c#3 d#4 g#3@2", // C# C#sus2
  G: "[d#3,d#4]@2 a#3 f4 d#3 d#4 a#3@2 [b2,b3]@2 f#3 d#4 b2 b3 f#3@2", // D# B
  H: "[b2,b4]@2 f#3 b3 b2 d#4 f#3@2 [b2,b3]@2 f#3 d#4 b2 b3 f#3@2", // B
  I: "[b2,b4]@2 f#3 b3 b2 d#4 f#3@2 [f#3,a#4]@2 a#3 c#4 f#3 f#4 a#3@2", // B F#
  J: "[f#3,a#4]@2 a#3 g#4 f#3 f#4 a#3@2 [f#3,f#4]@2 a#3 c#4 f#3 f#4 a#3@2", // F#
  K: "[f#3,g#4]@2 c#4 f#4 f#3 g#4 a#3@2 [d#3,f#4]@2 a#3 d#4 d#3 f#4 a#3@2", // F#sus2 D#m
  L: "[d#3,f4]@2 a#3 d#4 d#3 f4 a#3@2 [d#3,d#4]@2 a#3!2 d#3 d#4 a#3@2", // D#sus2 D#
  M: "[d#3,f4]@2 a#3 d#4 d#3 f4 a#3@2 [c#3,f4]@2 g#3 c#4 c#3 f4 g#3@2", // D#sus2 C#
  N: "[c#3,d#4]@2 g#3!2 c#3 d#4 g#3@2 [c#3,c#4]@2 g#3!2 c#3 c#4 g#3@2", // C#sus2 C#
  O: "[c#3,d#4]@2 g#3 c#4 c#3 d#4 g#3@2 [d#3,d#4]@2 a#3 f4 d#3 d#4 a#3@2", // C#sus2 D#
  P: "[b2,b3]@2 f#3 d#4 b2 b3 f#3@2 [b2,b4]@2 f#3 b3 b2 d#4 f#3@2", // B
  Q: "[e3,g#4]@2 b3!2 e3 e4 b3@2 [e3,g#4]@2 b3 f#4 e3 e4 b3@2", // E
  R: "[b2,b4]@2 f#3 b3 b2 d#4 f#3@2 [b2,b4]@2 f#3 b3 b2 d#4 f#3@2", // B
  S: "[b2,f#4]@2 b3 d4 b2 f#4 b3@2 [b2,b4]@2 b3 d4 b2 f#4 f#3@2", // B5 B
  T: "[f#3,a#4]@2 a#3 c#4 f#3 f#4 a#3@2 [f#3,a#4]@2 a#3 c#4 f#3 f#4 a#3@2", // F#
  U: "[d3,f#4]@2 a3 d4 d3 f#4 a3@2 [c#3,g#4]@2 g#3 c#4 c#3 d#4 g#3@2", // D C#5
  V: "[d3,f#4]@2 a3 d4 d3 f#4 a3@2 [c#3,g#4]@2 b3 d#4 c#3 g#4 d#4@2", // D C#5
  W: "[b2,f#4]@2 b3 d4 b2 f#4 b3@2 [b2,b4]@2 b3 d4 b2 f#4 b3@2", // B5 B
  X: "[f#3,b4]@2 b3 d4 f#3 f#4 b3@2 [f#3,b4]@2 b3 d4 f#3 f#4 b3@2", Y: "[f#3,a#3,c#4,f#4]",
})).s("gm_pad_poly").gain(0.3)

stack(synth_brass_2, melodic_tom, pad_poly)

More by Cabrel Francis