Strudelify

Morrison's jig

Traditional Irish Song

KeyD majorTempo160 bpm
0:00/0:00
// Morrison's jig — Traditional Irish Song
// 160 bpm, 6/8, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5872132; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 65 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(160/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.

// chords · piano
const piano = note(`<
  A B A C D E F G H I J K L M N O P Q R S P T U V P W R X P T Y Z A B A C D E F G H I J K L M N O P Q R S P T U V P W R
  AA AB AC AD AE AF
>`.pickRestart({
  A: "[e2,e4,g4,b4] [e3,g4,b4,e5]", B: "[e2,e4,g4,b4] [d3,d4,f#4,a4]",
  C: "[b4,d5,g5]@5 g5@3 [a4,c#5,f#5]@5 d5@3, g3 f#3", D: "[g4,b4,e5]@5 g4@3 [g4,b4,e5]@5 e5@3, [e2,b2] e3",
  E: "g4@3 b4@2 [e3,e5]@3 b4@3 a4@2 f#4@3, [e2,b2]@5 ~@3 g2@8", F: "[d3,g4,b4,d5] [f#2,f#4,a4,c#5]",
  G: "[e3,f#4,b4,d5,g5]@8 c#3@3 d3@2 [e3,d5]@3, ~@8 [a4,c#5,f#5]@5 ~@3", // Em7 E7 F#m
  H: "[e2,e4,g4,b4]@3 [g2,g4]@2 [b2,b4]@3 e3@3 b2@2 g2@3, ~ [g4,b4,e5]", // Em G B Em
  I: "[e2,e4,g4,b4]@3 [g2,e5]@2 [e3,e4]@3 e2@3 b2@2 [g2,d5]@3, ~@8 [a4,c#5,f#5]@5 ~@3", // Em C E G5 F#m
  J: "e2@3 g2@2 [b2,d5]@3 c#3@3 d3@2 [e3,f#4]@3, [e4,g4,b4]@5 ~@3 [g4,b4,e5]@5 ~@3", // Bm Esus2 Em
  K: "[g3,b4,d5,g5]@3 [g2,g4]@2 [e2,b4,d5,g5]@3 d3@3 a2@2 [f#2,g4,b4,d5]@3, ~@8 [a4,c#5,f#5]@5 ~@3", // G Em7 Gmaj7 F#m
  L: "[e2,e4]@3 [e2,g2,e4,g4]@2 [e2,b2,e4,g4,b4]@3 [g4,b4,e5]@3 e4@2 [g4,b4,e5]@3, ~ [b2,e3]", // E Em E5
  M: "[c#3,g4,b4,e5]@3 [d3,g4,b4,e5]@2 [e3,g4,b4,e5]@3 [g2,f#4,a4,d5]@5 [e2,d4,f#4,a4]@3", // C#m7b5 Em7 Em D
  N: "[d3,f#4,a4,d5] [c#3,d4,f#4,b4]", // D Bm
  O: "[g3,b4,d5,g5]@3 [d3,f#5]@2 [b2,b4,d5,g5]@3 [f#3,a4,c#5,f#5]@3 [b2,e5]@2 [g2,d5]@3", // G D G F#m E5 G5
  P: "[e4,g4,b4] [g4,b4,e5], e2@15 ~", Q: "[c#5,e5,a5] [a4,c#5,e5], e3@15 ~", R: "[e4,g4,b4] [g4,b4,e5], g2@15 ~",
  S: "[c#5,e5,a5] [a4,c#5,e5], d3@15 ~", T: "[c#5,e5,a5] [b4,d5,f#5], a2@15 ~",
  U: "[a4,c#5,e5,g5]@5 f#5@3 [a2,g4,b4,e5]@8, d3 ~", V: "[f#2,e4,g4,b4] [d2,d4,f#4,a4,d5]",
  W: "[c#5,e5,a5]@5 f#5@3 [a4,c#5,e5]@5 c#5@3, e3@15 ~", X: "[c#5,e5,a5]@3 e5@2 f#5@3 [a4,c#5,e5]@5 c#5@3, d3@15 ~",
  Y: "d3@5 b2@3 a2@5 g2@3, [a4,c#5,e5,g5] [a4,c#5,f#5]", Z: "a2@5 e2@3 f#2@3 e2@2 d2@3, [g4,b4,e5] [d4,f#4,a4,d5]",
  AA: "[c#5,e5,a5]@3 e5@2 f#5@3 [g4,b4,e5]@5 f#5@3, f#3@15 ~", // A Em
  AB: "[a4,c#5,e5,g5]@8 ~@3 g3@2 [e3,e5]@3, a3@5 ~@3, ~@8 [b4,e5,g5]@5 ~@3", AC: "[d3,a4,d5,f#5] [b2,d3,g3,b4,d5,g5]",
  AD: "[a4,c#5,e5] [g4,b4,d5], [a2,c#3,e3]@15 ~", // A G A
  AE: "[e4,g4,b4]@3 a4@2 g4@3 [d4,f#4,a4]@3 f#4@2 d4@3, [f#2,a2,d3] [d2,f#2,b2]", AF: "[e2,e3,e4,g4,e5]@15 ~",
})).s("gm_piano").gain(0.3)

stack(piano)