Strudelify

Preliminary Art Form

C418

KeyG majorTempo104 bpm
0:00/0:00
// Preliminary Art Form — C418
// 104 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5821265; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 79 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(104/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.

// chords · piano · "Piano #1"
const piano = note(`<
  A@3 B C D@3 E@2 F G H I J K L@2 F G M@2 N O P D F G Q I J K L@2 R S M@2 D@4 T@2 U@2 V@2 W@2 X@2 Y V@3 U T@3 U@2 V Z AA
  AB X@2 AC AD V AE AF AG AH@2 AI@2 AJ
>`.pickRestart({
  A: "g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~",
  B: "[c4,g4] ~ [c4,g4] ~ [c4,g4] ~ [c4,g4] ~ [c4,g4] ~ [c4,g4] ~ [c4,g4] ~ [c4,g4] ~", // C5
  C: "[c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~", // C
  D: "[c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~", // Cmaj7
  E: "[e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~", // Em
  F: "[e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~, ~ a5 g5@2", // Em
  G: "[e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~, b5 d6 g5 g6", // Em
  H: "[d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~, e6@15 ~", // Em7
  I: "[d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~", // Em7
  J: "[e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~, ~ a5 g5@2", // Am7
  K: "[e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~ [e4,g4,a4,c5] ~, b5 d6 g5 g6", // Am7
  L: "[[d4,g4,a4] ~ [d4,g4,a4] ~ [d4,g4,a4] ~ [d4,g4,a4] ~ [d4,g4,a4] ~ [d4,g4,a4] ~ [d4,g4,a4] ~ [d4,g4,a4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~, e6@11 ~ b6@11 ~ a6@8]/2", // Dsus4 Em
  M: "[[e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~, e6@11 ~ b6@11 ~ a6@8]/2", // Em Cmaj7
  N: "[c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~, ~ a5 g5@2", // Cmaj7
  O: "[c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~, b5 d6 g5 g6", // Cmaj7
  P: "[c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~ [c4,e4,g4,b4] ~, e6@11 ~@5", // Cmaj7
  Q: "[d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~, e6@11 ~@5", // Em7
  R: "[e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~, b5 e5", // Em
  S: "[e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~ [e4,g4,a4,b4] ~, g5@2 c6 g6", // Em
  T: "[e4,g4,b4,c5,e5] ~ [e4,g4,b4,c5,e5] ~ [e4,g4,b4,c5,e5] ~ [e4,g4,b4,c5,e5] ~ [e4,g4,b4,c5,e5] ~ [e4,g4,b4,c5,e5] ~ [e4,g4,b4,c5,e5] ~ [e4,g4,b4,c5,e5] ~", // Cmaj7
  U: "[e4,g4,b4,e5] ~ [e4,g4,b4,e5] ~ [e4,g4,b4,e5] ~ [e4,g4,b4,e5] ~ [e4,g4,b4,e5] ~ [e4,g4,b4,e5] ~ [e4,g4,b4,e5] ~ [e4,g4,b4,e5] ~", // Em
  V: "[e4,g4,a4,b4,e5] ~ [e4,g4,a4,b4,e5] ~ [e4,g4,a4,b4,e5] ~ [e4,g4,a4,b4,e5] ~ [e4,g4,a4,b4,e5] ~ [e4,g4,a4,b4,e5] ~ [e4,g4,a4,b4,e5] ~ [e4,g4,a4,b4,e5] ~", // Em
  W: "[d4,e4,g4,b4,d5] ~ [d4,e4,g4,b4,d5] ~ [d4,e4,g4,b4,d5] ~ [d4,e4,g4,b4,d5] ~ [d4,e4,g4,b4,d5] ~ [d4,e4,g4,b4,d5] ~ [d4,e4,g4,b4,d5] ~ [d4,e4,g4,b4,d5] ~", // Em7
  X: "[e4,g4,a4,c5,e5] ~ [e4,g4,a4,c5,e5] ~ [e4,g4,a4,c5,e5] ~ [e4,g4,a4,c5,e5] ~ [e4,g4,a4,c5,e5] ~ [e4,g4,a4,c5,e5] ~ [e4,g4,a4,c5,e5] ~ [e4,g4,a4,c5,e5] ~", // Am7
  Y: "[d4,g4,a4,d5] ~ [d4,g4,a4,d5] ~ [d4,g4,a4,d5] ~ [d4,g4,a4,d5] ~ [d4,g4,a4,d5] ~ [d4,g4,a4,d5] ~ [d4,g4,a4,d5] ~ [d4,g4,a4,d5] ~", // Dsus4
  Z: "[e4,g4,a4,b4,e5] ~ [e4,g4,a4,b4,e5,b5] ~ [e4,g4,a4,b4,e5,b5] ~ [e4,g4,a4,b4,e5,b5] ~ [e4,g4,a4,b4,e5,b5] ~ [e4,g4,a4,b4,e5,b5] ~ [e4,g4,a4,b4,e5,b5] ~ [e4,g4,a4,b4,e5,b5] ~", // Em
  AA: "[d4,e4,g4,b4,d5,e5,b5] ~ [d4,e4,g4,b4,d5,e5,b5] ~ [d4,e4,g4,b4,d5,e5,b5] ~ [d4,e4,g4,b4,d5,e5,b5] ~ [d4,e4,g4,b4,d5,e5,b5] ~ [d4,e4,g4,b4,d5,e5,b5] ~ [d4,e4,g4,b4,d5,e5,b5] ~ [d4,e4,g4,b4,d5,e5,b5] ~", // Em7
  AB: "[d4,e4,g4,b4,d5,e5,c6] ~ [d4,e4,g4,b4,d5,e5,c6] ~ [d4,e4,g4,b4,d5,e5,c6] ~ [d4,e4,g4,b4,d5,e5,c6] ~ [d4,e4,g4,b4,d5,e5,b5] ~ [d4,e4,g4,b4,d5,e5,b5] ~ [d4,e4,g4,b4,d5,e5,b5] ~ [d4,e4,g4,b4,d5,e5,b5] ~", // Cmaj7 Em7
  AC: "[d4,g4,a4,d5] ~ [d4,g4,a4,d5] ~ [d4,g4,a4,d5,d6] ~ [d4,g4,a4,d5] ~ [d4,g4,a4,d5,b5] ~ [d4,g4,a4,d5] ~ [d4,g4,a4,d5,g6] ~ [d4,g4,a4,d5] ~", // Dsus4 G Dsus4
  AD: "[e4,g4,a4,b4,e5,e6] ~ [e4,g4,a4,b4,e5] ~ [e4,g4,a4,b4,e5] ~ [e4,g4,a4,b4,e5] ~ [e4,g4,a4,b4,e5,d6] ~ [e4,g4,a4,b4,e5] ~ [e4,g4,a4,b4,e5] ~ [e4,g4,a4,b4,e5] ~", // Em Em7 Em
  AE: "[e4,g4,a4,b4,e5] ~ [e4,g4,a4,b4,e5] ~ [e4,g4,a4,b4,e5] ~ [e4,g4,a4,b4,e5] ~ [e4,g4,a4,b4,e5] ~ [e4,g4,a4,b4,e5,b5] ~ [e4,g4,a4,b4,e5,b5] ~ [e4,g4,a4,b4,e5,b5] ~", // Em
  AF: "[e4,g4,b4,e5,b5] ~ [e4,g4,b4,e5,b5] ~ [e4,g4,b4,e5,b5] ~ [e4,g4,b4,e5,b5] ~ [e4,g4,b4,e5,b5] ~ [e4,g4,b4,e5,b5] ~ [e4,g4,b4,e5,b5] ~ [e4,g4,b4,e5,b5] ~", // Em
  AG: "[e4,g4,b4,c5,e5,b5] ~ [e4,g4,b4,c5,e5,b5] ~ [e4,g4,b4,c5,e5,b5] ~ [e4,g4,b4,c5,e5,b5] ~ [e4,g4,b4,c5,e5,b5] ~ [e4,g4,b4,c5,e5,b5] ~ [e4,g4,b4,c5,e5,b5] ~ [e4,g4,b4,c5,e5,b5] ~", // Cmaj7
  AH: "[b5,e6] ~ [b5,e6] ~ [b5,e6] ~ [b5,e6] ~ [b5,e6] ~ [b5,e6] ~ [b5,e6] ~ [b5,e6] ~", // E5
  AI: "[[b5,e6] ~ [b5,e6] ~ [b5,e6] ~ [b5,e6] ~ [b5,e6] ~ [b5,e6] ~ [b5,e6] ~ [b5,e6] ~ [b5,e6] ~ [b5,e6] ~ [b5,e6] ~ [b5,e6] ~ [b5,e6] ~ [b5,e6] ~ [b5,e6] ~ [b5,e6] ~, ~ c5@2 d5@2 b4@2 g5@2 e5 ~@6]/2", // E5
  AJ: "[b5,e6] ~", // E5
})).s("gm_piano").gain(0.25)

// chords · piano · "Piano #1" · soft notes
const piano_soft = note("<~@42 A@2 B@2 C@2 D@2 E@4 C@4 A@2 B@2 C F ~@2 E@2 G H C I ~@7>".pickRestart({
  A: "g5 ~ g5 ~ g5 ~ g5 ~ g5 ~ g5 ~ g5 ~ g5 ~",
  B: "[c5,g5] ~ [c5,g5] ~ [c5,g5] ~ [c5,g5] ~ [c5,g5] ~ [c5,g5] ~ [c5,g5] ~ [c5,g5] ~", // C5
  C: "b5 ~ b5 ~ b5 ~ b5 ~ b5 ~ b5 ~ b5 ~ b5 ~",
  D: "[e5,b5] ~ [e5,b5] ~ [e5,b5] ~ [e5,b5] ~ [e5,b5] ~ [e5,b5] ~ [e5,b5] ~ [e5,b5] ~", // E5
  E: "[f5,c6] ~ [f5,c6] ~ [f5,c6] ~ [f5,c6] ~ [f5,c6] ~ [f5,c6] ~ [f5,c6] ~ [f5,c6] ~", F: "b5 ~@15",
  G: "[f5,c6] ~ [f5,c6] ~ f5 ~ [f5,c6] ~ f5 ~ [f5,c6] ~ f5 ~ [f5,c6] ~", // F5
  H: "f5 ~ [f5,c6] ~ [f5,c6] ~ [f5,c6] ~ f5 ~ [f5,c6] ~ [f5,c6] ~ [f5,c6] ~", I: "b5 ~ b5 ~ b5 ~ b5 ~ b5 ~@7",
})).s("gm_piano").gain(0.15)

// chords · piano · "Piano #2"
const piano_2 = note(`<
  A B C@4 D@2 C@2 E@4 F@4 E@4 G@4 H@4 I@4 J@4 C@4 K@4 L@4 M@4 N@4 K@4 O@4 M@4 N@4 C@3 P Q
>`.pickRestart({
  A: "~@5 b5 ~@9 c5", B: "~@5 b5 ~@5 c5 ~@4", C: "~ d5 ~ g5 ~ b5 ~ g5 ~ c5 ~ d5 ~ g5 ~ c5",
  D: "[~ d5 ~ g5 ~ b5 ~ g5 ~ c5 ~ d5 ~ g5 ~ c5 ~ d5 ~ g5 ~ b5 ~ g5 ~ c5 ~ d5 ~ g5 ~ c5, [c3,e3,g3]@15 ~]/2", // C
  E: "[~@47 c5 ~@13 g5@2 c5, [a2,e3,a3]@31 c5@8 g5@4 d5@5 c5@8 d5 c5@6 ~, ~ d5@8 c5@4 g5@4 d5@8 c5@4 g5@4 d5@8 c5@4 g5@4 d5@6 g5@4 d5@5, ~@3 g5@4 g5@4 d5@4 c5@8 g5@4 d5@5 b4@32, ~@5 b5@14 g5@2 b5@14 g5@2 b5@14 g5@2 b5@11]/4", // A5
  F: "[~@47 c5 ~@13 g5@2 c5, [f2,c3,f3,a3]@31 c5@8 g5@4 d5@5 c5@8 d5 c5@6 ~, ~ d5@8 c5@4 g5@4 d5@8 c5@4 g5@4 d5@8 c5@4 g5@4 d5@6 g5@4 d5@5, ~@3 g5@4 g5@4 d5@4 c5@8 g5@4 d5@5 b4@32, ~@5 b5@14 g5@2 b5@14 g5@2 b5@14 g5@2 b5@11]/4", // F
  G: "[~@61 [g5,g6]@2 [c5,c6], [g2,c3,e3,g3]@31 [c5,c6]@10 [c5,c6]@6 [c5,c6]@10 [c5,c6]@6 ~, ~ [d5,d6]@8 [c5,c6]@4 [g5,g6]@4 [d5,d6]@8 [c5,c6]@4 [g5,g6]@6 [g5,g6]@4 [g5,g6]@6 [g5,g6]@6 [g5,g6]@4 [g5,g6]@6 ~@3, ~@3 [g5,g6]@4 [g5,g6]@4 [d5,d6]@4 [c5,c6]@8 [g5,g6]@4 [d5,d6]@6 [d5,d6]@10 [d5,d6]@6 [d5,d6]@10 [d5,d6]@5, ~@5 [b5,b6]@14 [g5,g6]@2 [b5,b6]@16 [b5,b6]@16 [b5,b6]@11]/4", // G C D C G D C G …
  H: "[~@47 c5 ~@13 [g5,g6]@2 [c5,c6], [a2,e3,a3]@31 [c5,c6]@8 [g5,g6]@4 [d5,d6]@4 c6@2 d5@2 [g5,g6]@2 [b5,b6]@11, ~ [d5,d6]@8 [c5,c6]@4 [g5,g6]@4 [d5,d6]@8 [c5,c6]@4 [g5,g6]@4 [d5,d6]@8 [c5,c6]@4 [g5,g6]@3 c5@7 [g5,g6]@4 [d5,d6]@5, ~@3 [g5,g6]@4 [g5,g6]@4 [d5,d6]@4 [c5,c6]@8 [g5,g6]@4 [d5,d6]@5 b4@32, ~@5 [b5,b6]@14 [g5,g6]@2 [b5,b6]@14 [g5,g6]@2 [b5,b6]@12 d6@7 d5 [c5,c6]@6 ~]/4", // G C A5 C G D G B …
  I: "[~@47 c5 ~@13 [g5,g6]@2 [c5,c6], [f2,c3,f3,a3]@31 [c5,c6]@8 [g5,g6]@4 [d5,d6]@4 c6@2 d5@2 [g5,g6]@2 [b5,b6]@11, ~ [d5,d6]@8 [c5,c6]@4 [g5,g6]@4 [d5,d6]@8 [c5,c6]@4 [g5,g6]@4 [d5,d6]@8 [c5,c6]@4 [g5,g6]@3 c5@7 [g5,g6]@4 [d5,d6]@5, ~@3 [g5,g6]@4 [g5,g6]@4 [d5,d6]@4 [c5,c6]@8 [g5,g6]@4 [d5,d6]@5 b4@32, ~@5 [b5,b6]@14 [g5,g6]@2 [b5,b6]@14 [g5,g6]@2 [b5,b6]@12 d6@7 d5 [c5,c6]@6 ~]/4", // G C F C G D G B …
  J: "[~@61 [g5,g6]@2 [c5,c6], [a2,e3,a3,b3]@31 [c5,c6]@8 [g5,g6]@4 [d5,d6]@4 [c5,c6]@4 [g5,g6]@2 [b5,b6]@4 [c5,c6]@2 [d5,d6]@5, ~ [d5,d6]@8 [c5,c6]@4 [g5,g6]@4 [d5,d6]@8 [c5,c6]@4 [g5,g6]@4 [d5,d6]@8 [c5,c6]@4 [g5,g6]@3 c4@16, ~@3 [g5,g6]@4 [g5,g6]@4 [d5,d6]@4 [c5,c6]@8 [g5,g6]@4 [d5,d6]@5 g4@32, ~@5 [b5,b6]@14 [g5,g6]@2 [b5,b6]@14 [g5,g6]@2 [b5,b6]@12 [d5,d6]@6 [g5,g6] d4@8]/4", // G C Asus2 C G D C G …
  K: "[~@61 g5@2 c5, [c3,e3,g3,c4]@31 c5@10 c5@6 c5@10 c5@6 ~, ~ d5@8 c5@4 g5@4 d5@8 c5@4 g5@6 g5@4 g5@6 g5@6 g5@4 g5@6 ~@3, ~@3 g5@4 g5@4 d5@4 c5@8 g5@4 d5@6 d5@10 d5@6 d5@10 d5@5, ~@5 b5@14 g5@2 b5@16 b5@16 b5@11]/4", // C
  L: "[~@61 g5@2 c5, [a2,e3,a3]@31 c5@10 c5@6 c5@10 c5@6 ~, ~ d5@8 c5@4 g5@4 d5@8 c5@4 g5@6 g5@4 g5@6 g5@6 g5@4 g5@6 ~@3, ~@3 g5@4 g5@4 d5@4 c5@8 g5@4 d5@6 d5@10 d5@6 d5@10 d5@5, ~@5 b5@14 g5@2 b5@16 b5@16 b5@11]/4", // A5
  M: "[~@61 g5@2 c5, c3@23 g5 f3@27 g5@2 b5@11, f3@16 g3@23 g5@2 c5@2 d5@2 g5@2 c5@8 g5@4 d5@5, a3@3 g5@2 b5@4 c5@2 d5@2 g5@2 c5@2 d5@2 g5@2 b5@4 c5@2 d5@2 g5@2 c5@2 d5@2 g5@2 b5@12 d5@8 c5@6 ~, ~ d5@6 g5 a3@24 e3@32]/4",
  N: "[~@61 g5@2 c5, [a2,e3]@23 g5 d4@27 g5@2 b5@11, b3@9 c5@2 d5@2 g5@2 c5@2 d5@2 g5@2 b5@11 b3@32, a3@3 g5@2 b5@11 b3@9 c5@2 d5@2 g5@2 c5@4 g5@2 b5@12 d5@8 c5@6 ~, ~ d5@6 g5 a3@25 d5@6 g5@2 c5@2 d5@2 g5@2 c5@8 g5@4 d5@5]/4", // A5
  O: "[~@61 g5@2 c5, [a2,e3]@25 c5@2 d5@2 g5@2 c5@2 d5@2 g5@2 b5@12 d5@8 c5@6 ~, a3@9 c5@2 d5@2 g5@2 c5@4 g5@2 b5@11 e3@32, ~ d5@6 g5 g3@9 d5@6 g5 g3@27 g5@2 b5@11, ~@3 g5@2 b5@11 a3@23 g5@2 c5@2 d5@2 g5@2 c5@8 g5@4 d5@5]/4", // A5
  P: "~ d5 ~ g5 ~ b5 ~ [g5,b5] ~ [c5,b5] ~ [d5,c6] ~ [g5,d6] ~ [c5,d6]", Q: "e6 ~",
})).s("gm_piano").gain(0.25)

stack(piano, piano_soft, piano_2)

More by C418