Strudelify

Moonchild

King Crimson

KeyA minorTempo78 bpm
0:00/0:00
// Moonchild — King Crimson
// 78 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 48 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(78/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/2 spreads a riff over 2 bars.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · pad bowed · "Bow Pad"
const pad_bowed = note("<~ A B A B A B A B A B A B ~@8 A B A B A B@3 A B A B A B A B ~@8 C@2 ~>".pickRestart({
  A: "c4 b3", B: "a3@7 ~ e3@8", C: "[~ b3@2 ~, c4 ~]/2",
})).s("gm_pad_bowed").gain(0.32).pan(0.7)

// other · synth strings 2 · "Synth Strings"
const synth_strings_2 = note("<A B@2 C@2 ~@5 A B@2 ~@7 A D@4 E F@3 G@2 ~@13 A G@2 ~>".pickRestart({
  A: "~@13 e3@3", B: "[a3@4 e4@15 e3@5 f3@5 e3@3]/2", C: "[a3@4 e4@15 e3@5 f3@6 ~@2]/2",
  D: "[a3@12 e4@45 ~@12 e4@6 a4@14 c5@25 ~@2 b4@4 a4@11 e4@34 ~@3 d4@10 e4@12 ~@2]/4",
  E: "~@2 a3@10 e3@21 ~@3 c3@6 d3@5 ~", F: "[c3@37 ~ g2@8 a2@40 g2@8 a2@41 e3@9]/3", G: "[a3@4 e4@15 ~@13]/2",
})).s("gm_synth_strings_2").gain(0.13).pan(0.9)

// other · ocarina
const ocarina = note("<~ A@8 ~@12 A@16 ~@8 B@3>".pickRestart({
  A: "[~ a4@31]/8", B: "[~ a4@8 ~@3]/3",
})).s("gm_ocarina").gain(0.22)

// chords · electric guitar jazz · "Jazz Guitar"
const electric_guitar_jazz = note(`<
  ~ A B C D E F G H I J K L M@2 N O P Q R@2 E F G H I J K S T U V W X Y Z AA AB AC AD@2 AE@2 AF@2 ~@3
>`.pickRestart({
  A: "~@43 g#3@3 ~@2, ~@2 a3@18 ~@6 g#3@17 ~@5, ~@7 c4@9 ~@3 a4@4 ~, ~@15 e4@18 ~@4 e4@9 ~@2",
  B: "~@13 [e4,a4]@7 d3@5 f#3 f#3@5 ~@8 a4@5 ~@4, ~@2 g3@17 ~@19 e4@5 ~@5, ~@8 c4@11 ~@13 c4@11 ~@5", // A5
  C: "~@3 a3 ~@11 [e4,a4]@7 ~@5 g3 ~@10 [c4,e4,a4]@6 ~@4, ~@14 c4@7 ~@7 g#3@17 ~@3", // A5 Am
  D: "~@13 [e4,a4]@5 ~@20 e4@5 ~@5, ~@2 g3@16 ~@7 f#3@16 ~@7, ~@37 c4@6 ~@5", // A5
  E: "~@7 c4@7 ~@24 a4@5 g#3@4 ~, ~ a3@18 ~@6 a2@18 ~@5, ~@3 a4@18 ~@10 g#3@12 ~@5, ~@14 [c4,e4]@18 ~@5 [c4,e4]@8 ~@3", // C
  F: "~@13 [e4,a4]@8 g#4 g4 g#4 ~@13 [e4,a4]@7 ~@4, ~ g3@18 ~@6 f#3@17 ~@6, ~@7 c4@13 ~@4 a4@13 ~@11", // A5
  G: "~@12 [e4,a4]@2 g#3 ~, ~ a3@18 ~@5 g#3@17 ~@7, ~@7 c4@18 ~@5 c4@14 ~@4, ~@2 e4@3 ~@3, ~@13 a4@18 ~@17", // A5
  H: "~@17 c4@3 ~@7 e4@9 ~ a4@5 ~@6, [g3,c4]@18 ~@6 f#3@17 ~@7, ~@11 e4@9 ~@16 e4@6 ~@6, ~@4 a4@3 ~@9", // C5
  I: "~@19 a3@5 g#3 ~@12 [e4,a4]@7 ~@4, a3@18 ~@7 g#3@18 ~@5, ~@7 c4@18 ~@6 c4@12 ~@5, ~@13 [e4,a4]@18 ~@17", // A5
  J: "~@13 [e4,a4]@6 g3@3 ~@6 e4@9 ~ a4@5 ~@5, ~ g3@18 ~@7 f#3@16 ~@6, ~@7 c4@15 ~@15 e4@5 ~@6", // A5
  K: "~@2 a3 ~@17 a3@3 ~@9 e4@6 [e4,a4]@6 c4 ~@3, ~@4 c4@9 d3@9 ~@2, ~@7 [e4,a4]@9 ~@8", // A5
  L: "~@8 a4@5 ~ a4@6 c4@2 ~@17 e4@5 ~@4, ~@2 g3@18 ~@6 f#3@17 ~@5, ~@13 e4@9 ~@4 c4@12 c4@5 ~@5, ~@29 a4@15 ~@4",
  M: "[~@2 d4 ~@11 [a4,d5]@5 ~ d3@3 ~@18 a#3 ~@7 a4@3 ~@2 c4@3 ~ g#3 ~@7 b3@2 ~ [a#3,g4] g#3 ~@2 a3 ~@11 [e4,a4]@5 ~@6, ~@8 d4@11 ~@4 a#3@2 ~ g3@12 e4@9 e4@10 e4@3 ~@36, ~@24 b3@13 b3@10 ~@2 a3@9 ~ g3@2 g3@10 a3@2 ~@6 c4@11 ~@6, ~@49 c4@5 ~@7 b3@5 ~@6 e3@17 ~@7, ~@52 a4@5 ~@3 g4@3 ~ g4@5 ~@27]/2", // D5 D# A5
  N: "c#4@3 ~@10 d5@2 d5@3 ~@13 e4@6 b3 ~@2 a#3 ~@4 f4 ~@2, ~@4 d4@14 ~@7 g3@13 b3@10, ~@13 a4@5 ~@7 b3@12 e4@6 d3@5",
  O: "f3!2 a3@5 ~@12 c4@4 ~ b3@3 ~@15 d3@4 d4@2, c4@18 ~@10 c4@13 ~@7, ~@7 a3@18 ~@6 a3@10 ~@7, ~@13 e4@18 ~@6 e4@11",
  P: "~ d5@11 d5@6 d3@4 a#3@2 a#3 ~@5 e4@6 ~@4 a#3 ~@5 b3@2, ~ d4@17 ~@6 g3@16 ~@8, ~@25 b3@11 e4@12",
  Q: "~@6 e4@3 ~ g#3 ~@2 b3@5 b3@2 ~ a#3 g#3 a3@2 ~@12 a4@5 a3 a#3 ~@4, a3@10 ~ g3@11 ~@3 a3@17 ~@6, e4@6 ~@25 e4@10 ~@7, ~ [c4,a4]@9 ~@38", // F
  R: "[~ [f4,a4,d5]@9 ~ d4@2 d4@2 ~@10 b3@12 ~@3 a#3 ~@8 f3 f3@2 ~@8 e4@2 c4 ~@17 c4@5 ~ e4@10, d4@10 ~@14 g3@17 ~@9 a3@12 a3@18 ~@16, ~@25 a#3 ~@11 e4@15 f3@18 ~@3 f3@15 ~@8, ~@63 [c4,e4]@18 ~@4 c4@4 ~@7]/2", // Dm C
  S: "~@8 a4@5 ~ a4@6 c4@2 ~@17 e4@5 ~@4, ~@2 g3@18 ~@6 f#3@17 ~@5, ~@13 e4@9 ~@4 c4@12 c4@5 ~@5, ~@29 a4@14 ~@5",
  T: "~@26 c4@5 ~@11 g#3@3 ~@3, ~@3 a3@18 ~@4 g#3@17 ~@6, ~@13 e4@18 ~@6 [e4,a4]@9 ~@2, ~@13 c4@13 ~@5 c4@14 ~@3, ~@7 a4@9 ~@8", // A5
  U: "~@18 g3@3 ~@3 b3 ~@11 e4@6 d3@4 a3@2, ~ g3@17 ~@6 f#3@5 ~ f#3@11 ~@7, ~@6 c4@15 ~@4 c4@18 ~@5, ~@12 e4@8 ~@7 e4@9 ~@12, ~@13 a4@8 ~@27",
  V: "~@9 a4@2 ~, a3@3 ~ g#3@3 ~, ~@4 e4@6 c4@5 ~, ~@13 a4@18 ~@17",
  W: "~@13 [e4,a4]@6 c4 ~@5 g3 ~@2 e4@9 [e4,a4]@6 g3@5, ~ g3@18 ~@6 f#3@17 ~@6, ~@7 c4@12 ~@5 c4@18 ~@6", // A5
  X: "c4 c4@6 ~@30 a4@6 ~@5, ~ a3 ~@5 c4@12 c4@18 ~@11, ~@13 [e4,a4]@18 e4@12 ~@5, ~@4 g#3@3 ~", // A5
  Y: "~@13 a4 a4@4 c4@2 ~@17 [e4,a4]@5 ~@6, ~ g3@18 ~@6 f#3@6 f#3@11 ~@6, ~@7 c4@11 ~@30, ~@12 e4@8 ~@8 e4@9 ~@11", // A5
  Z: "~@13 a4 ~@4 a3@5 g#3@2 ~@12 a4 a4@5 ~@5, ~ a3@17 ~@7 g#3@17 ~@6, ~@7 c4@18 ~@23, ~@13 e4@18 ~@5 e4@6 ~@6, ~@7 a4@9 ~@8",
  AA: "~@16 c4@4 g3 ~@3 c4@4 ~@8 a4@5 ~@7, g3@9 ~@3 f#3@8 ~@4, ~@4 c4@12 ~@12 c4@13 ~@7, ~@8 e4@12 ~@11 e4@10 ~@7, ~@3 a4@2 ~@7",
  AB: "~@12 d5@5 ~ d3@3 a#3 ~ b3 e4@5 ~ e4@6 e4@9 b3@2 d#4, [f4,a4]@9 ~@3 b3@8 ~@4", // F
  AC: "[c4,e4,a4]@6 e4@3 ~@3 b3@6 [b3,d4]@3 ~@16 a4@5 a3 a#3 [b3,c4] c#4 d4@2, ~@25 [a3,c4]@17 ~@6, ~@6 e4 ~", // Am Bm Cmaj7 Am
  AD: "[~@13 d5@5 d3@4 a#3@2 b3 ~@6 e4@5 ~@3 a#3 ~@8 c4 ~@12 e4@11 b3@3 ~@10 e4@11, d4@17 ~@8 b3@11 b3@12 ~ [f3,a3,c4]@18 ~@8 c4@14 ~@7, ~ f4@17 ~@19 e4@18 ~@17 e4@13 ~@11, ~@79 a3@11 ~@6]/2", // F
  AE: "[~@13 d5@4 ~ f4 ~@6 a#3 ~@5 e4@5 ~@3 a#3 ~@3 g3@3 ~@3 [a3,c4]@6 [e4,a4]@2 ~ g#3 ~@2 g3@6 [b3,d4]@3 g#3 a3@2 e4@6 ~@5 a4@6 ~@6, ~ d4@18 ~@6 [g3,b3]@16 ~@5 b3@2 ~@11 g3@2 ~@12 [a3,c4]@18 ~@5, ~@2 d5@11 ~@4 c#5@2 ~@28 c4@2 a4@5 ~@25 e4@11 ~@6, ~@6 a4@12 ~@18 e4@12 e4@7 ~@5 b3@6 ~@30]/2", // Am A5 Bm G Am
  AF: "[~@13 d5@4 ~ d3@3 ~ b3@3 d3 a#3 ~@4 e4@5 ~@6 d3@5 ~ f3@2 a3@11 ~ [c4,e4]@18 ~@16, ~ d4@16 ~@19 b3@12 c4@14 ~@34, ~@7 a4@10 ~@20 e4@18 ~@6 a3@18 ~@17, ~@25 f3@9 ~@14]/2", // C
})).s("gm_electric_guitar_jazz").gain(0.4).pan(0.9)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@38 [~@5 x] ~@9>").gain(0.56)

// drums · mid tom
const mid_tom = s("mt").struct("<~@14 A ~@3 A ~@19 A ~@3 A ~@5>".pickRestart({
  A: "~@3 x!2 ~@11",
})).gain(0.32)

// drums · high tom
const high_tom = s("ht").struct("<~@13 A B A C A B A C ~@16 A B A C A B A ~@4>".pickRestart({
  A: "~ x!2 ~ x!2 ~ x", B: "x!3 ~@5 x!5 ~@3", C: "x!5 ~@3 x!5 ~@3",
})).gain(0.32)

// drums · ride
const ride = s("rd").struct("<~@8 A ~@3 B C ~ C ~ C ~ C ~ D@7 E@8 F C ~ C ~ C ~ C ~@4>".pickRestart({
  A: "~@7 x ~@5 x ~@10 x ~@2 x ~@2 x ~@5 x ~@11", B: "x ~@6 x ~@5 x ~@5 x ~@5 x ~@2 x ~@2 x ~@5 x ~@10",
  C: "~ x!2 ~ x!2 ~ x", D: "~@2 x ~ x ~ x ~ x!3 ~@5", E: "~@2 x ~ x ~ x ~ x!3 ~ x ~@3", F: "x!3 ~ x!2 ~@6",
})).gain(0.56)

// drums · crash
const crash = s("cr").struct("<~@36 [~@3 x ~@2 x!4 ~@2] ~@11>").gain(0.4)

// drums · triangle
const triangle = s("triangles:30").struct("<~@14 [~@5 x] ~@33>").gain(4.88)

// drums · triangle
const triangle_2 = s("triangles:35").struct("<~@16 A ~ B ~@21 A ~ B ~@5>".pickRestart({
  A: "~@41 x ~@6", B: "~@7 x",
})).gain(4.88)

stack(
  pad_bowed, synth_strings_2, ocarina, electric_guitar_jazz, pedal_hat, mid_tom, high_tom, ride, crash, triangle,
  triangle_2
)

More by King Crimson