Strudelify

Chopin prelude

Michael Lauderback

KeyE♭ majorTempo40 bpm
0:00/0:00
// Chopin prelude — Michael Lauderback
// 40 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/3383901; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 13 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(40/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 · trumpet · "Bb Cornet"
const trumpet = note("<A B C D E F G H E F G H I>".pickRestart({
  A: "eb4@4 eb4@4 eb4@3 d4 c4@4", B: "c4@4 db4@4 c4@3 bb3 ab3@4", C: "b3 c4!3", D: "c4 d4 gb4 d4", E: "eb5!2 d5!2",
  F: "c5@4 d5@4 b4@3 a4 g4@4", G: "c5@4 ab4@4 g4@3 f4 eb4@4", H: "eb4@4 f4@4 eb4@3 d4 c4@4", I: "g4",
})).s("gm_trumpet").gain(0.2)

// other · french horn · "Horn"
const french_horn = note("<A B C D E F G H ~ I G H J>".pickRestart({
  A: "c4!2 b3 c4", B: "eb3 ab3 g3 ab3", C: "f3 bb3 ab3 g3", D: "gb3 b3 d4 b3", E: "eb4!2 d4!2",
  F: "c4@4 d4@4 d4@3 c4 b3@4", G: "c4 ab3 g3!2", H: "ab3!2 g3 eb3", I: "~@11 c4 b3@4", J: "eb4",
})).s("gm_french_horn").gain(0.2)

// other · french horn · "Horn" · soft notes
const french_horn_soft = note("<~@8 [eb4!2 d4!2] [c4@4 d4@4 d4@3 ~@5] ~@3>").s("gm_french_horn").gain(0.15)

// other · trombone
const trombone = note("<A B C D E F G H E F G H I>".pickRestart({
  A: "g3 ab3 g3 eb3", B: "eb3 f3 db3 c3", C: "d3 e3 ab3 g3", D: "d3 g3 c4 g2", E: "c3 c4 b3 bb3", F: "a3 c4 g3 f3",
  G: "eb3 f3 b2 c3", H: "ab2 db3 f3 c3", I: "c3",
})).s("gm_trombone").gain(0.25)

// bass · tuba · "C Tuba"
const bass = note("<A B C D E F G H E F G H I>".pickRestart({
  A: "c3 f2 g2 c3", B: "ab2 db2 eb2 ab2", C: "g2 c2 f2 c3", D: "d2 g2 d2 g1", E: "c2 c3 b2 bb2", F: "a2 ab2 g2 f2",
  G: "eb2 f2 b1 c2", H: "ab1 db2 g1 c2", I: "c2",
})).s("gm_tuba").gain(0.25)

stack(trumpet, french_horn, french_horn_soft, trombone, bass)