Strudelify

Vois sur ton chemin

Bruno Coulais

KeyF majorTempo90 bpm
0:00/0:00
// Vois sur ton chemin — Bruno Coulais
// 90 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/2634836; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 47 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(90/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · flute
const flute = note(`<
  ~@2 A B C D E ~ F G F H E ~ I J K L E ~ M N M H E ~ O P Q R S ~ A B C D E ~ F T U H F T U H E
>`.pickRestart({
  A: "a5!3 f5 g5@4", B: "g5!3 e5 f5!2 g5 a5", C: "f5!3 d5 e5 g5 f5 e5", D: "a5 f5 e5 d5 e5@2 db5@2", E: "d5 ~",
  F: "d5@6 d5@2 g5@5 f5 e5@2", G: "f5@4 ~ g5 f5 e5", H: "a5@2 d5@2 ~ e5 d5 db5", I: "a5@6 bb5 a5 g5@8",
  J: "g5@6 a5 g5 f5@8", K: "a5@3 f5 e5 g5 f5 e5", L: "a5@2 e5 db5", M: "d5 g5", N: "f5@6 g5 f5 e5@8", O: "d6 bb5",
  P: "a5 e5", Q: "d5 a5", R: "db6@3 e6", S: "d6", T: "f5@6 g5 f5 e5@4 f5@2 e5@2", U: "d5@4 a5@2 f5@2 g5@5 f5 e5@2",
})).s("gm_flute").gain(0.3)

// other · trumpet · "Bb Trumpet"
const trumpet = note(`<
  ~@6 A B C D E F G H I J K L M N O P O Q M ~ R S T U V W X Y Z AA A B O P O Q O P O Q M
>`.pickRestart({
  A: "d4!4 g4 d4!3", B: "a4 f4 e4 d4 e4 g4 f4 e4", C: "f4 bb3", D: "d4 f4 e4@2", E: "f4 a4 e4@2", F: "f4 e4",
  G: "d4!4 f4 d4!3", H: "~ d4!3 a4 d4 g4 e4", I: "a4!3 f4 g4@4", J: "g4!3 e4 f4!2 g4 a4", K: "f4!3 d4 e4 g4 f4 e4",
  L: "a4 f4 e4 d4 e4@2 db4@2", M: "d4 ~", N: "~@5 g4 f4 e4", O: "d4@6 d4@2 g4@5 f4 e4@2", P: "f4@4 ~ g4 f4 e4",
  Q: "a4@2 d4@2 ~ e4 d4 db4", R: "~ d4!3 ~ eb4!3", S: "~ d4!2 a4 ~ db4!3", T: "~ d4!3 ~ g4!3", U: "~ g4!3 f4@2 e4@2",
  V: "d4", W: "g4 e4", X: "d4@3 a4 g4@4", Y: "g4@3 e4 f4@4", Z: "f4@3 d4 e4@4", AA: "a4@2 e4 db4",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · "Trompette en Si♭"
const trumpet_2 = note("<~@6 A B C D@3 E ~ D F D G H I J K L M N O P Q R S ~@5 T U V C K L M C K L M E>".pickRestart({
  A: "d4 ~ d4 ~", B: "d4@2 ~ g4 a4 g4 f4 e4", C: "d4 bb3", D: "d4 e4", E: "d4 ~", F: "e4 d4", G: "d4@4 ~ g4 f4 e4",
  H: "~ d4!3 g4 d4!3", I: "a4 f4 e4 d4 e4 g4 f4 e4", J: "f4 bb3", K: "d4 f4 e4@2", L: "f4 a4 d4@2", M: "f4 e4",
  N: "d4!4 f4 d4!3", O: "~ d4!3 a4 d4 g4 e4", P: "d4 bb3!3 ~ bb3!3", Q: "~ a3!2 f4 ~ a3 g3 a3", R: "~ a3!3 ~ e4!3",
  S: "~ e4!3 f4@2 e4@2", T: "~@2 e4 db4", U: "d4@4 ~ d4@3", V: "a4 f4 e4 d4 ~ e4 d4 db4",
})).s("gm_trumpet").gain(0.3)

// other · baritone sax · "Saxophone Baryton"
const baritone_sax = note(`<
  A B A B C D A E F G F G H I A B C D A E F G F G J I K L F M A B A B C D A E F G F G F G F G H
>`.pickRestart({
  A: "d3 d2", B: "g2@4 a2@3 a2", C: "d3 e3", D: "f3 g3", E: "d3@2 ~ g3 a3 g3 f3 e3", F: "d2 g2", G: "f2 e2", H: "d2 ~",
  I: "~@4 e3 g3 f3 e3", J: "d2", K: "bb2 g2", L: "d3 a2", M: "a2 ~",
})).s("gm_baritone_sax").gain(0.3)

stack(flute, trumpet, trumpet_2, baritone_sax)