Strudelify

Jolly Roger's Lagoon

Grant Kirkhope

KeyC majorTempo180 bpm
0:00/0:00
// Jolly Roger's Lagoon — Grant Kirkhope
// 180 bpm, 6/8, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5950636; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 92 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(180/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@5 B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD W AE A B C D E F G AF I J K L M N O AG AH@2 AI AJ
  AH@2 AK AL AM@2 AN AO AM@2 AP AQ AR AS AT AU AV AW AX AY E AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN
>`.pickRestart({
  A: "c3@3 ~@2 [e3,g3]@3 g2@3 ~@2 [e3,g3]@3", B: "f3@3 ~@2 [a3,c4]@3 c3@3 ~@2 [a3,c4]@3",
  C: "d3@3 ~@2 [f#3,a3]@3 a2@3 ~@2 [f#3,a3]@3", D: "g3@3 ~@2 [b3,d4]@3 d3@3 ~@2 [b3,d4]@3",
  E: "e3@3 ~@2 [g#3,b3]@3 b2@3 ~@2 [g#3,b3]@3", F: "a3@3 ~@2 [c4,e4]@3 e3@3 ~@2 [c4,e4]@3",
  G: "f3@3 ~@2 [a3,c4]@3 g3@3 ~@2 [b3,d4]@3", H: "[c3,c4,e4]@8 g2@3 a2@2 b2@3, ~ c4",
  I: "[c3,c5]@3 ~@2 [e3,g3,d5]@3 [g2,e5]@3 d5@2 [e3,g3,c5]@3", J: "[f3,f5]@3 ~@2 [a3,c4,g5]@3 c3@3 ~@2 [a3,c4]@3, ~ a5",
  K: "[d3,d5]@3 ~@2 [f#3,a3,e5]@3 [a2,f#5]@3 e5@2 [f#3,a3,d5]@3", // D F#m7 D
  L: "[g3,g5]@3 ~@2 [b3,d4,a5]@3 d3@3 ~@2 [b3,d4]@3, ~ b5", // G Bm7 Bm
  M: "[e3,e5]@3 ~@2 [g#3,b3,f#5]@3 [b2,g#5]@3 f#5@2 [g#3,b3,e5]@3", // E G#m7 E
  N: "[a3,a5]@3 ~@2 [c4,e4,b5]@3 e3@3 ~@2 [c4,e4]@3, ~ c6", O: "[f3,c6]@3 ~@2 [a3,c4,b5]@3 [g3,c6]@3 ~@2 [b3,d4,d6]@3",
  P: "[c3,c6]@8 c3@3 d3@2 e3@3, ~ c5", Q: "f3@3 ~@2 [c3,f3,a3]@3 f3@3 ~@2 [c3,f3,a3]@3, a5@15 ~",
  R: "e3@3 ~@2 [c3,e3,g3]@3 g2@3 ~@2 [c3,e3,g3]@3, g5@15 ~", S: "d3@3 ~@2 [d3,f3]@3 b2@3 ~@2 [b2,d3,g3]@3, f5 d5",
  T: "c3@3 ~@2 [c3,e3,g3]@3 g2@3 ~@2 [c3,e3,g3]@3, e5@15 ~", U: "a2@3 ~@2 [c3,e3]@3 e3@3 ~@2 [c3,e3]@3, e5@15 ~",
  V: "e3@3 ~@2 [b2,e3,g3]@3 b2@3 ~@2 [b2,e3,g3]@3, g5@15 ~", W: "f3@3 ~@2 [f3,a3,c4]@3 c3@3 ~@2 [f3,a3,c4]@3, f5 c6",
  X: "g3@3 ~@2 [d3,g3,b3]@3 d3@3 ~@2 [d3,g3,b3]@3, b5 g5", // G
  Y: "[f3,f5]@3 ~@2 [c3,f3,a3,e5]@3 [f3,f5]@3 ~@2 [c3,f3,a3,g5]@3", // F Fmaj7 F
  Z: "e3@3 ~@2 [c3,e3,g3]@3 g2@3 ~@2 [c3,e3,g3]@3, e5 c5", // C
  AA: "[d3,d5]@3 ~@2 [d3,f3,c5]@3 [b2,b4]@3 ~@2 [b2,d3,g3,d5]@3", // D Dm7 B G
  AB: "c3@3 ~@2 [c3,e3,g3]@3 g2@3 ~@2 [c3,e3,g3,c5]@3, c5@13 ~@3", // C
  AC: "[a2,e5]@3 ~@2 [c3,e3,d5]@3 [e3,e5]@3 ~@2 [c3,e3,a5]@3", AD: "e3@3 ~@2 [b2,e3,g3]@3 b2@3 ~@2 [b2,e3,g3]@3, g5 e5",
  AE: "g3@3 ~@2 [d3,g3,b3]@3 d3@3 ~@2 [d3,g3,b3]@3, b5 d6", AF: "c3@8 g2@3 a2@2 b2@3", AG: "[c3,c6]@8 g2@3 a2@2 b2@3",
  AH: "d4@3 e4@2 [d3,f#3,f#4]@3 g#1@5 [c3,d#3,c4]@3, d2@5 ~@3 d#4@3 ~@5", // D Cm
  AI: "d2@5 [d3,f#3]@3 d2@5 [d3,f#3,g#4]@3, d4@8 a4@3 ~@5", // D G#m7b5
  AJ: "d2@5 [d3,f#3,g#4]@3 d2@5 [d3,f#3,f#4]@3, a4@3 ~@5 a4@3 ~@5", // G#m7b5 D
  AK: "[d2,d4]@5 [d3,f#3,f#4]@3 d2@5 [d3,f#3,b4]@3, ~@8 a4@3 ~@5", // D Bm
  AL: "d2@5 [d3,f#3,b4]@3 d2@5 [d3,f#3,f#4]@3, a4@3 ~@5 a4@3 ~@5", // Bm D
  AM: "d5@3 e5@2 [d3,f#3,f#5]@3 g#1@5 [c3,d#3,c5]@3, d2@5 ~@3 d#5@3 ~@5", // D Cm
  AN: "d2@5 [d3,f#3]@3 d2@5 [d3,f#3,g#5]@3, d5@8 a5@3 ~@5", // D G#m7b5
  AO: "d2@5 [d3,f#3,g#5]@3 d2@5 [d3,f#3,f#5]@3, a5@3 ~@5 a5@3 ~@5", // G#m7b5 D
  AP: "[d2,d5]@5 [d3,f#3,e5]@3 d2@5 [d3,f#3,e5]@3, ~@8 f#5@3 ~@5", // D
  AQ: "d2@5 [d3,f#3,a5]@3 d2@5 [d3,f#3,d6]@3, f#5@3 ~@5 b5@3 ~@5", // D
  AR: "d#4@3 [g4,a#4]@2 d#4@3 [g4,c5]@3 d#4@2 [g4,a#4]@3, [d#3,g3,a#3] [d#3,g3,c4]", // Gm C5 Gm D# Cm
  AS: "d#4@3 [g4,c5]@2 d#4@3 [g4,a#4]@3 d#4@2 [g4,c5]@3, [d#3,g3,a#3] [d#3,g3,c4]", // C5 Gm C5 D# Cm
  AT: "d#4@3 [g4,d5]@2 d#4@3 [g4,c5]@3 d#4@2 [g4,d5]@3, [d3,d#3,g3,d4] [d3,d#3,g3,c4]", // G5 C5 G5 D#maj7 Cm
  AU: "d#4@3 [g4,c5]@2 d#4@3 [g4,d5]@3 d#4@2 [g4,c5]@3, [d3,d#3,g3,d4] [c3,d#3,g3,c4]", // C5 G5 C5 D#maj7 Cm
  AV: "d#4@3 [g4,a#4]@2 d#4@3 [g4,c5]@3 d#4@2 [g4,a#4]@3, [c3,d#3,g3,a#3] [c3,d#3,g3,c4]", // Gm C5 Gm Cm7 Cm
  AW: "d#4@3 [g4,c5]@2 d#4@3 [g4,a#4]@3 d#4@2 [g4,c5]@3, [c3,d#3,g3,a#3] [a#2,d#3,g3,c4]", // C5 Gm C5 Cm7
  AX: "d#4@3 [g4,d5]@2 d#4@3 [g4,c5]@3 d#4@2 [g4,d5]@3, [g#2,d#3,g3,d4] [g#2,d#3,g3,c4]", // G5 C5 G5 G#maj7
  AY: "d#4@3 [g4,c5]@2 d#4@3 [g4,d5]@3 d#4@2 [g4,c5]@3, [a#2,d#3,g3,d4] [a#2,d#3,g3,c4]", // C5 G5 C5 D#maj7 Cm7
  AZ: "[a3,a5]@3 ~@2 [c#4,e4,b5]@3 [e3,c#6]@3 b5@2 [c#4,e4,a5]@3", // A C#m7 C#m A
  BA: "f#3@3 ~@2 [a#3,c#4]@3 c#3@3 ~@2 [a#3,c#4]@3, a#5@15 ~", // A#m
  BB: "[b3,b5]@3 ~@2 [d#4,f#4,c#6]@3 [f#3,d#6]@3 c#6@2 [d#4,f#4,b5]@3", // B D#m7 D#m B
  BC: "g#3@3 ~@2 [c4,d#4]@3 d#3@3 ~@2 [c4,d#4]@3, c6@15 ~", // Cm
  BD: "[c#4,c#6]@3 ~@2 [e4,g#4,d#6]@3 [g#3,e6]@3 d#6@2 [e4,g#4,c#6]@3", // C# Emaj7 C#m
  BE: "[a3,e6]@3 ~@2 [c#4,e4,f#6]@3 [b3,g#6]@3 ~@2 [d#4,f#4,a6]@3", BF: "[e3,g#6]@8 b2@3 c#3@2 d#3@3, ~ e6",
  BG: "e3@5 [g#3,b3,f#5]@3 g#5@3 f#5@2 [g#3,b3,e5]@3, e5@3 ~@5 d3@5 ~@3", // G#m7 E
  BH: "c#3@5 [c#4,e4,b5]@3 a2@5 [c#4,e4]@3, a5@3 ~@5 c#6@8", // C#m7 C#m
  BI: "f#3@5 [a#3,c#4,g#5]@3 a#5@3 g#5@2 [a#3,c#4,f#5]@3, f#5@3 ~@5 e3@5 ~@3", // A#m7 F#
  BJ: "d#3@5 [d#4,f#4,c#6]@3 b2@5 [d#4,f#4]@3, b5@3 ~@5 d#6@8", // D#m7 D#m
  BK: "g#3@5 [c4,d#4,a#5]@3 c6@3 a#5@2 [c4,d#4,g#5]@3, g#5@3 ~@5 f#3@5 ~@3", // Cm7 G#
  BL: "e3@5 [e4,g#4,d#6]@3 c#3@5 [e4,g#4]@3, c#6@3 ~@5 e6@8", // Emaj7 E
  BM: "a2@5 [c#4,e4,d#6]@3 b2@5 [d#4,f#4,f#6]@3, e6@3 ~@5 e6@3 ~@5", BN: "[e3,e6] [e2,e5]",
})).s("gm_piano").gain(0.4)

stack(piano)