Strudelify

Caresse sur l'ocean

Bruno Colais-M.S.

KeyG majorTempo120 bpm
0:00/0:00
// Caresse sur l'ocean — Bruno Colais-M.S.
// 120 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 2, 4/4 at bar 2, 2/4 at bar 4, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/159686; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 43 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 · [...]/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 · viola
const viola = note("<A B C D E F@2 G H I@2 J@2 K@2 L M N@5 O P@4 Q@3 R S T@3 U V W X Y@2 Z@2>".pickRestart({
  A: "g4@6 b4 g4", B: "b4@2 a4 g4 a4 ~ f#4@2", C: "g4 a4 e4@2", D: "g4!2 d4@2", E: "d4!2",
  F: "[b3@3 d4!3 d4@4 d4 c4 d4@4]/2", G: "~ g4@3", H: "b4 g4 f#4@4 ~@2", I: "[f#4@2 g4@2 a4@2 c5@6 b4 a4 g4@2]/2",
  J: "[f#4 e4 c4@8 e4@6]/2", K: "[g4@3 e4@2 e4@2 ~]/2", L: "~@2 d4 e4 f#4 g4!2 f#4", M: "g4 f#4 g4 f#4 g4 b4 e4 c4",
  N: "[e4 c4 f#4 d4 f#4 d4 g4@4 g4@4 g4@4 g4@4 f#4@4 g4@8 g4@6]/5", O: "b4 g4 b4@2 a4 g4 a4 ~",
  P: "[f#4@2 g4@2 a4@2 e4@4 g4@2 g4@2 d4@4 d4@4 d4@4 b3@3 d4!3]/4", Q: "[d4@4 d4 c4 d4@4 ~@2 g4@6 b4 g4 f#4@4]/3",
  R: "~ f#4 g4 a4", S: "c5@6 b4 a4", T: "[g4@2 f#4 e4 c4@8 e4@6 g4@6]/3", U: "e4!2", V: "~@4 d4 e4 f#4 g4",
  W: "g4 f#4 g4 f#4 g4 f#4 g4 b4", X: "e4 c4 e4 c4 f#4 d4 f#4 d4", Y: "g4!2", Z: "[f#4 g4@2 ~]/2",
})).s("gm_viola").gain(0.3)

// other · bassoon
const bassoon = note("<A B C@2 D E@2 F G H@2 I@3 ~ J K L@5 M N@2 O@2 P@3 Q R S@2 T ~ U V W X Y Z@2>".pickRestart({
  A: "f#3@6 a3 g3", B: "a3@2 e3 d3 e3 ~ c#3@2", C: "[d3@2 e3@2 e3@6 g3 f#3 e3@2 d3 c#3]/2", D: "d3!2",
  E: "[b2@3 c#3 d3 e3 d3@4 c#3 b2 e3@4]/2", F: "~ a2@3", G: "d3 a2 a2@2 a2!2 ~@2",
  H: "[c#3@2 d3@2 e3@2 g3@6 f#3 e3 d3@2]/2", I: "[c#3 b2 b3@2 b2@6 c#3 d3 e3 d3 f#3@4 e3@4 ~@2]/3",
  J: "~@2 a2 b2 c#3 d3!2 c#3", K: "d3 c#3 d3 c#3 d3 f#3 b2 g2",
  L: "[b2 g2 c#3 a2 c#3 a2 d3@4 b2@4 b2@4 a2@4 a2@4 d3@8 f#3@6]/5", M: "a3 g3 a3@2 e3 d3 e3 ~",
  N: "[c#3@2 d3@2 e3@2 e3@6 g3 f#3 e3@2]/2", O: "[d3 c#3 d3@4 d3@4 b2@3 c#3 d3 e3]/2",
  P: "[d3@4 c#3 b2 e3@4 ~@2 a2@6 d3 a2 a2@2 a2!2]/3", Q: "~ c#3 d3 e3", R: "g3@6 f#3 e3",
  S: "[d3@2 c#3 b2 b3@2 b2@6 c#3 d3 e3 d3]/2", T: "f#3 e3", U: "~@4 a2 b2 c#3 d3", V: "d3 c#3 d3 c#3 d3 c#3 d3 f#3",
  W: "b2 g2 b2 g2 c#3 a2 c#3 a2", X: "d3 b2", Y: "b2 a2", Z: "[a2 d3@2 ~]/2",
})).s("gm_bassoon").gain(0.3)

// other · cello · "Violoncello"
const cello = note("<A B C D E F@2 G H@3 I@2 J@3 K L@5 M N@4 O@3 P Q R@3 S T U V W T X@2>".pickRestart({
  A: "d3@6 d3 e3", B: "g3@2 d3!3 ~ d3@2", C: "g2 b2 a2@2", D: "c2 g2 a2@2", E: "b2!2",
  F: "[g2@3 b2!3 b2@4 b2 a2 b2@4]/2", G: "~ d3@3", H: "[g3 d3 d3@4 d3@4 d3@4 e3@6 g3!2 b3@2]/3",
  I: "[b3!2 b3@2 g2@6 a3@6]/2", J: "[d3@6 g3@4 g3@4 e3@4 d3@4 e3 d3]/3", K: "e3 d3 e3 d3 e3 g3 a2 g2",
  L: "[a2 g2 b2 a2 b2 a2 g3@4 e3@4 e3@4 d3@4 d3@4 g3@8 d3@6]/5", M: "d3 e3 g3@2 d3!3 ~",
  N: "[d3@2 g2@2 b2@2 a2@4 c2@2 g2@2 a2@4 b2@4 b2@4 g2@3 b2!3]/4", O: "[b2@4 b2 a2 b2@4 ~@2 d3@6 g3 d3 d3@4]/3",
  P: "d3!2", Q: "e3@6 g3!2", R: "[b3@2 b3!2 b3@2 g2@6 a3@6 d3@6]/3", S: "g3!2", T: "e3 d3",
  U: "e3 d3 e3 d3 e3 d3 e3 g3", V: "a2 g2 a2 g2 b2 a2 b2 a2", W: "g3 e3", X: "[d3 g3@2 ~]/2",
})).s("gm_cello").gain(0.3)

// other · string ensemble 1 · "Contrabasses"
const string_ensemble_1 = note("<A B C@2 D E@2 F G@3 H@2 I@4 J@5 K L@2 M@2 N@3 O A P@3 Q R S T Q U V@2>".pickRestart({
  A: "g2@6 g2!2", B: "d2@2 d2!3 ~ d2@2", C: "[g2@2 g2@2 d2@6 g2!2 d2@2 d2!2]/2", D: "g2!2",
  E: "[e1@6 g2@4 d2!2 a1@4]/2", F: "~ g2@3", G: "[g2!2 d2@2 d2!2 a1@4 a1@4 g2@6 g2!2 d2@2]/3",
  H: "[d2!2 g2@2 e1@6 e2@6]/2", I: "[d2@6 e1@4 e1@4 g2@4 d2@4 d2@4 d2@4 a2 g2]/4",
  J: "[a2 g2 b2 a2 b2 a2 e1@4 e1@4 e1@4 d2@4 d2@4 g2@8 g2@6]/5", K: "g2!2 d2@2 d2!3 ~",
  L: "[d2@2 g2@2 g2@2 d2@6 g2!2 d2@2]/2", M: "[d2!2 g2@4 g2@4 e1@6]/2", N: "[g2@4 d2!2 a1@4 ~@2 g2@6 g2!2 d2@2 d2!2]/3",
  O: "a1!2", P: "[d2@2 d2!2 g2@2 e1@6 e2@6 d2@6]/3", Q: "e1!2", R: "g2 d2", S: "d2!2", T: "a2 g2 a2 g2 b2 a2 b2 a2",
  U: "e1 d2", V: "[d2 g2@2 ~]/2",
})).s("gm_string_ensemble_1").gain(0.3)

stack(viola, bassoon, cello, string_ensemble_1)