Strudelify

L'Amour toujours

M.Goglio

KeyC minorTempo120 bpm
0:00/0:00
// L'Amour toujours — M.Goglio
// 120 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5877721; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 80 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.

// other · alto sax · "Sassofono contralto"
const alto_sax = note(`<
  ~@4 A B C D A B C E F G H I F G H I J K J@3 K J@2 L M N O P Q R S T U V W X U V Y V Z AA Y V AB V O AC@3 ~ A G H I AD
  G H I AD G H I AD G H D J K J@3 K J@2
>`.pickRestart({
  A: "~@4 g4@2 g4 eb5", B: "d5 ~@3", C: "~@4 c5@2 c5 bb4", D: "c5 ~@3", E: "c5@2 c5 bb4 c5 bb4 c5 bb4",
  F: "g4@2 ~@2 g4@2 g4 eb5", G: "d5@2 ~@2 d5@2 d5 eb5", H: "c5@2 ~@2 c5@2 c5 bb4", I: "c5@2 c5@2 c5 bb4 c5 bb4",
  J: "~ eb4 bb4 eb4 ab4 eb4 g4 eb4", K: "~ d4 bb4 d4 ab4 d4 g4 d4", L: "eb4@3 f4@3 g4@2", M: "d4@3 eb4@3 f4@2",
  N: "eb4", O: "ab4@3 g4@3 ab4@2", P: "bb4@3 ab4@3 g4@2", Q: "f4@3 g4@3 bb4@2", R: "g4", S: "ab4@3 g4@3 eb4@2",
  T: "eb5@3 f5@3 g5@2", U: "d5@3 eb5@3 f5@2", V: "eb5", W: "ab5@3 g5@3 ab5@2", X: "g5@3 f5@3 eb5@2",
  Y: "ab5@3 g5@3 eb5@2", Z: "d5", AA: "c5", AB: "f5", AC: "bb4/3", AD: "g4@4 g4@2 g4 eb5",
})).s("gm_alto_sax").gain(0.3)

// other · alto sax · "Sassofono contralto"
const alto_sax_2 = note(`<
  A B C D E B C F G B C F G B C F G B C F H I H@3 I H@2 J K L M N O G P J K L M N O G P L Q R P L S G T U@3 ~ V W X Y Z
  W X Y Z W X Y Z W X AA H I H@3 I H@2
>`.pickRestart({
  A: "bb4", B: "g4@3 f4, b4", C: "[eb4,g4]", D: "~@3 f4, ab4@3 ~, ~ c5", E: "[g4,eb5]", F: "ab4@3 f4", G: "g4",
  H: "~ eb4 bb4 eb4 ab4 eb4 g4 eb4", I: "~ d4 bb4 d4 ab4 d4 g4 d4", J: "eb4@3 f4@3 g4@2", K: "d4@3 eb4@3 f4@2",
  L: "eb4", M: "ab4@3 g4@3 ab4@2", N: "bb4@3 ab4@3 g4@2", O: "f4@3 g4@3 bb4@2", P: "ab4@3 g4@3 eb4@2", Q: "d4", R: "c4",
  S: "f4", T: "ab3@3 g3@3 ab3@2", U: "bb3/3", V: "~@4 g3@2 g3 eb4", W: "d4@2 ~@2 d4@2 d4 eb4",
  X: "c4@2 ~@2 c4@2 c4 bb3", Y: "c4@2 c4@2 c4 bb3 c4 bb3", Z: "g3@4 g3@2 g3 eb4", AA: "c4 ~@3",
})).s("gm_alto_sax").gain(0.3)

// other · baritone sax · "Sassofono baritono"
const baritone_sax = note(`<
  A B C D E A C D E A C D F G H I F G H I F G H I F G H I F G H I F G H I F G H I F G H I F G H I F G H I F G H I F G H
  I F G H I F G H I F G H I F G H I F G H I
>`.pickRestart({
  A: "g3", B: "b3", C: "c4", D: "ab3", E: "eb3", F: "eb2 eb3 eb2 eb3 eb2 eb3 eb2 eb3", G: "g2 g3 g2 g3 g2 g3 g2 g3",
  H: "c3 c4 c3 c4 c3 c4 c3 c4", I: "ab2 ab3 ab2 ab3 ab2 ab3 ab2 ab3",
})).s("gm_baritone_sax").gain(0.3)

stack(alto_sax, alto_sax_2, baritone_sax)