Strudelify

Greensleeves

Renaissance Folk Song

KeyF majorTempo120 bpm
0:00/0:00
// Greensleeves — Renaissance Folk Song
// 120 bpm, 3/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 3/4 at bar 2, 2/4 at bar 33) are rendered on a constant 3/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/3172646; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 33 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/3)

// 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 · violin
const violin = note("<~ A B C D E F G H A B C D E I E J K L M N E F G H K L M N E I O P>".pickRestart({
  A: "d4@5 a3@5 ~ d4@5", B: "f4@5 c4@5 ~ f4@5", C: "e4@5 c4@5 ~ g3@5", D: "a3@5 b3@5 ~ c4@5", E: "d4", F: "bb3",
  G: "a3@5 db4@5 ~ e4@5", H: "db4@5 e4@5 ~ a3@5", I: "a3", J: "d4@5 e4@5 ~ f4@5", K: "f4@11 c5@5",
  L: "a4@5 g4@5 ~ f4@5", M: "c4@11 e4@5", N: "c4@5 b3@5 ~ a3@5", O: "d4@5 f4@5 ~ a4@5", P: "d5@11 ~@5",
})).s("gm_violin").gain(0.3)

// other · viola
const viola = note("<~ A B C D E F G H A B C D E I J K L M N O E F G H L M N O E P K Q>".pickRestart({
  A: "a3@5 d4@5 ~ f4@5", B: "f4@11 c4@5", C: "c4@5 g3@5 ~ e3@5", D: "a3@11 c3@5", E: "a3@11 d3@5", F: "bb3@11 d3@5",
  G: "a3@5 a4@11", H: "e4@5 db4@8 a3@3", I: "a3@11 db3@5", J: "d3@5 f3@5 ~ a3@5", K: "d4", L: "a4",
  M: "a4@5 f4@5 ~ c4@5", N: "c4", O: "c3", P: "a3@11 db4@5", Q: "d3@11 ~@5",
})).s("gm_viola").gain(0.3)

// other · cello · "Violoncello"
const cello = note("<~ A B C D E F G H A B C I J K A L B M N O E F G H B M N O P Q E R>".pickRestart({
  A: "d2", B: "f2", C: "c2", D: "c2@5 e2@5 ~ a2@5", E: "d3@5 a2@5 ~ f2@5", F: "bb2@5 f2@5 ~ d2@5", G: "db2@11 e2@5",
  H: "g2@11 f2@2 e2@3", I: "a2@11 c2@5", J: "d2@11 f2@5", K: "a2@11 e2@5", L: "d2@5 f2@5 ~ a2@5", M: "c3", N: "e3",
  O: "a2", P: "d3@5 a2@5 ~ d3@5", Q: "e3@5 db3@5 ~ a2@5", R: "d2@11 ~@5",
})).s("gm_cello").gain(0.3)

stack(violin, viola, cello)