Strudelify

Greensleeves

Traditional

KeyG majorTempo72 bpm
0:00/0:00
// Greensleeves — Traditional
// 72 bpm, 6/8, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/8 at bar 1, 6/8 at bar 2) are rendered on a constant 6/8 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5848156; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 41 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(72/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// 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 B C F G H I J K H I L M ~@8 N O P Q R S T U V W X Y V I L Z>".pickRestart({
  A: "~@5 e4", B: "e4@4 f#4@2 g4@3 a4 g4@2", C: "d4@4 f#4@2 d4@3 e4 f#4@2", D: "e4@4 e4@2 e4@3 d#4 e4@2",
  E: "d#4@2 d#4 f#4@2 e4", F: "g4@3 f#4 e4@2 d#4@3 c#4 d#4@2", G: "e4@2 e4 e4@3", H: "d6@6 d6@3 c#6 b5@2",
  I: "a5@4 f#5@2 d5@3 e5 f#5@2", J: "g5@4 e5@2 e5@3 d#5 e5@2", K: "f#5@2 d#5 b4@3", L: "g5@3 f#5 e5@2 d#5@3 c#5 d#5@2",
  M: "e5@3 e5@2 e5", N: "g4!2", O: "d4!2", P: "e4!2", Q: "b3!2", R: "g3 b3 d4 g3 b3 d4", S: "d4 f#4 a4 d4 f#4 a4",
  T: "c4 e4 g4 b3 d#4 f#4", U: "e4 g4 b4 e5@3", V: "e5@4 f#5@2 g5@3 a5 g5@2", W: "f#5@4 f#5@2 d5@3 e5 f#5@2",
  X: "e5@4 e5@2 e5@3 d#5 e5@2", Y: "d#5@2 d#5 d#5@2 e5", Z: "e5!2",
})).s("gm_violin").gain(0.25)

// other · pizzicato strings
const pizzicato_strings = note("<~@17 A B C D A B E F ~@16>".pickRestart({
  A: "e5 b5!2 b4 b5!2", B: "f#5 b5!2 d5 f#5!2", C: "c5 g5!2 a5 g5 b5", D: "a5 f#5 d#5 b4 f#5 b5",
  E: "f#5 b5!2 a5 f#5!2", F: "g5 e5!2 e5@3",
})).s("gm_pizzicato_strings").gain(0.25)

// chords · piano
const piano = note("<~@9 A B C D E F G H I J K L M N O P Q R S T U R V W X Y Z AA AB AC AD AE>".pickRestart({
  A: "[d5,g5,b5,d6]@11 ~ [d5,g5,b5,d6]@6 [c#5,c#6]@2 [b4,b5]@4, [d2,d3]@23 ~", // G C# B D
  B: "[a4,d5,f#5,a5]@4 [f#4,f#5]@2 [d4,d5]@3 [e4,e5] [f#4,f#5]@2, [c#3,c#4]@11 ~ [b2,b3]@11 ~", // D F# D E F# C# B
  C: "[g4,b4,g5]@4 [e4,e5]@2 [e4,e5]@3 [d#4,d#5] [e4,e5]@2, [g2,g3]@11 ~ [e2,e3]@11 ~", // G E D# E G E
  D: "[f#4,b4,f#5]@8 [d#4,d#5]@4 [b1,b2,b3,b4]@11 ~, [f#2,f#3]@11 ~@13", // B5 D# B F#
  E: "[d5,g5,b5,d6]@11 ~ [d5,g5,b5,d6]@6 [c#5,c#6]@2 [b4,b5]@4, [a1,a2]@23 ~", // G C# B A
  F: "[a4,d5,f#5,a5]@4 [f#4,f#5]@2 [d4,d5]@3 [e4,e5] [f#4,f#5]@2, [a2,a3]@11 ~ [f#2,f#3]@11 ~", // D F# D E F# A F#
  G: "[g4,b4,g5]@3 [f#4,f#5] [e4,e5]@2 [d#4,d#5]@3 [c#4,c#5] [d#4,d#5]@2, [g2,g3]@11 ~ [f#2,f#3]@11 ~", // G F# E D# C# D# G F#
  H: "[b1,d#2,b2,e4,e5]@11 ~ [e4,g4,b4]@8 e5@4, ~@12 [e2,g2,b2,e3]@11 ~", // Emaj7 Em
  I: "[e3,e5]@2 b4 e4 [b3,e5]@2 [g3,e5]@2 b4 e4 [d4,e5]@2, ~ g3 ~@2 b3 ~", // E E5 C Dsus2
  J: "[d3,f#5]@2 b4 f#4 [a3,f#5]@2 [d3,f#5]@2 b4 f#4 [a3,f#5]@2, ~ f#3 ~@2 f#3 ~", // D
  K: "[e3,c5]@2 g4 c4 [b3,c5]@2 [e3,c5]@2 g4 c4 [b3,b4]@2, ~ g3 ~@2 g3 ~", // C Cmaj7 C B
  L: "[b2,d#5]@4 b4@2 d#4@2 [f#3,d#5]@4 [b2,d#3,f#3]@11 ~, ~ d#3 ~ d#5 ~@2", // B D#m B
  M: "e5 d5 [g3,b4]@2 [b3,g5]@2 e5 d5 [b3,b4]@2 [d4,g5]@2, e3 ~@2 g3 ~@2", // G Em B G5
  N: "f#5 e5 [f#3,d5]@2 [a3,a5]@2 f#5 e5 [f#3,d5]@2 [a3,a5]@2, d3 ~@2 d3 ~@2", // D A D A
  O: "b5 f#5 [g3,e5]@2 [b3,b4]@2 f#5 e5 [d#3,e5]@2 [f#3,d#5]@2, e3 ~@2 b2 ~@2", // C B Emaj7 D#m
  P: "e3 g3 [b3,b4] [e3,g3,b3]@2 [e2,g2,b2], [g4,g5]@8 ~@4 [e4,g4,b4,e5]@11 ~", // B Em G Em
  Q: "g5@2 b5@2 d6@2 [d3,g3,b3,d4,g5]@2 ~ [c3,c#4] [b2,b3,d6]@2, [d3,g3,b3,d4]@11 ~@5 b5@4 ~@4", // G C#maj7 Bm G
  R: "d5@2 f#5@2 [f#2,f#3,a5]@2 [d2,d3,d5]@2 ~ [e2,e3] [f#2,f#3,a5]@2, [a2,d3,f#3,a3]@2 ~@2 f#5 ~", // F#m D E F#m D
  S: "e5@2 g5@2 [e2,e3,b5]@2 [e2,e3,e5]@2 ~ [d#2,d#3] [e2,e3,b5]@2, [g2,b2,g3]@2 ~@2 g5 ~", // E5 E D# E5 G
  T: "[b2,b4]@2 ~ [f#2,b2,f#3] [d#2,d#3,f#5]@2 b4@2 d#5@2 f#5@2, ~@4 d#5@4 ~@4 [b1,b2]@11 ~", // B B5 D#m B
  U: "g5@2 b5@2 d6@2 [d3,g3,b3,d4,g5]@2 ~ [c#3,c#4] [b2,b3,d6]@2, [d3,g3,b3,d4]@11 ~@5 b5@4 ~@4", // G C# Bm G
  V: "[g2,b2,g3,c5]@2 ~ [f#2,f#3] [e2,e3,g5]@2 [d#2,d#3,b4]@2 ~ [c#2,c#3] [d#2,d#3,f#5]@2, ~ e5 ~@2 d#5 ~", // Cmaj7 F# Em G#m C# D#m
  W: "[e2,e3]@11 ~ [e2,g2,b2]@8 ~@4, [e5,g5,b5,e6]@5 ~@3", X: "g5@4 a5@2 b5@3 c6 b5@2, [b2,e3,g3]@23 ~",
  Y: "a5@4 f#5@2 d5@3 e5 f#5@2, [a2,d3,f#3]@23 ~", Z: "g5@4 e5@2 e5@3 d#5 e5@2, [b2,e3,g3]@23 ~",
  AA: "f#5@2 d#5 b4@2 e5, [b2,e3,g3]@23 ~", AB: "g5@4 a5@2 b5@3 c6 b5@2, [b3,e4,g4]@23 ~",
  AC: "a5@4 f#5@2 d5@3 e5 f#5@2, [a3,d4,f#4]@23 ~", // D
  AD: "g5@3 f#5 e5@2 d#5@3 c#5 d#5@2, [b3,e4,g4]@11 ~ [b3,d#4,f#4]@11 ~", AE: "e5@11 ~ e5@11 ~, [b3,e4,g4]@23 ~",
})).s("gm_piano").gain(0.3)

// chords · piano · soft notes
const piano_soft = note("<~ A B C D E B F G ~@32>".pickRestart({
  A: "e4 g4 b4 g4 b4 g4, [e3,g3,b3]@11 ~ [e3,g3,b3]@11 ~", B: "d4 f#4 a4 d4 f#4 a4, [d3,f#3,a3]@11 ~ [d3,f#3,a3]@11 ~",
  C: "e4 g4 b4 e4 g4 b4, [e3,g3,b3]@11 ~ [e3,g3,b3]@11 ~", // Em
  D: "b3@4 d#4@4 f#4@4 [b2,d#3,f#3,b3,d#4,f#4]@11 ~, [b2,d#3,f#3]@11 ~@13", // B
  E: "e4 g4 b4 g4 b4 d5, [e3,g3,b3]@11 ~ [e3,g3,b3]@11 ~", F: "e4 g4 b4 b3 d#4 f#4, [e3,g3,b3]@11 ~ [b2,d#3,f#3]@11 ~",
  G: "e4 g4 b4 [e4,g4,b4,e5]@2 ~, [e2,g2,b2]@11 ~ [e2,g2,b2]@11 ~", // Em
})).s("gm_piano").gain(0.15)

stack(violin, pizzicato_strings, piano, piano_soft)

More by Traditional