Strudelify

Stardust

Tatum Art

KeyC majorTempo120 bpm
0:00/0:00
// Stardust — Tatum Art
// 120 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 42 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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
const piano = note("<A B@8 C@4 D@5 E@4 F@6 G@3 H@6 I@5>".pickRestart({
  A: "~@9 [f#3,c#4,f#4,c#5]@17 ~@2 c#5@3 a4, ~@9 [d3,a3,a4]@23, ~@13 d5@3", // F#5 D5
  B: "[~@26 c8@17 ~@20 e4@17 ~@19 c#5@5 ~@19 a3@3 ~@8 [a3,c4,d4]@23 ~ c4@5 [c4,a4]@5 [g4,a4,c5]@8 ~ g#4@8 ~@17 e7@17 ~@13 f4@5 ~@12 d5@5 ~ g4, ~ f#4@4 f3@3 f4@4 c5@3 f5@2 a5 c6@2 f6 a6 c7@21 g1@50 c5@11 ~ d5@16 [c4,f4]@6 [a3,c4,d4,f4]@8 ~@22 d4@6 [a3,e4,f4]@14 [b4,e5]@13 d4 f4 g#4@2 b4@25 g#2@35 ~@2, ~@4 d3@41 ~@2 [f3,g#3,d#4]@57 f1@2 ~@6 f2@4 a4@2 a3@3 [e4,a4]@9 f2@46 ~ f2@18 [e5,f5]@2 g#5@2 f6 g#6 b6@19 d4@8 g#3@4 f3@6 c4@17 ~, ~@6 a3@18 f7 a7@19 ~@37 e4@24 a4@11 [f3,c5]@18 ~@23 [a3,f4] e3@19 f4@10 g#3@34 d5@28 ~@7, ~@7 c4@37 ~@3 b3@33 [b3,g#4,b4]@24 ~@10 c3@20 [d3,f3]@42 ~@9 f3@36 [f3,g#4]@4 c4@12 [g#3,d4]@17 [e4,c5]@2]/8", // D7 F Am7 F5 Dm7 Fmaj7 E5 Fm7 …
  C: "[~@93 f4@4 ~ f3@8 ~@20 d#4@2, c3@18 e4@2 b3@2 e3@4 a#4@13 a#3@10 ~@14 d3@34 g1@28 [e4,g4]@3, ~@3 e3@9 c5@11 g3@3 e4@6 b4@33 a3@10 [d4,f4]@3 a4@20 [a3,b3,d4]@30, ~@5 g3@10 c4@9 b3@3 b4@2 e5@12 ~@3 e3@23 ~ d4@2 f4@2 a4@3 c5@24 ~@23 g2@6, ~@7 c4 e4@2 g4@15 d4@16 c#3@23 f3@17 [d4,f4]@8 [c4,e4]@10 ~@7 f3@22]/4", // Em Dm Bm7 Dm C
  D: "[~ g4@3 ~@23 e7@2 ~@5 [f3,g#3,b3]@4 ~@10 g#3@5 ~@4 g4@5 g3@2 ~@43 a1@2 ~@6 b4@3 ~@24 a#4 ~@14 c4@3, d4@2 ~@2 a2@22 c7@3 g2@34 ~@3 g2@6 ~ e3@5 e4@32 ~@8 d3 f#4@2 f#3@16 f#4 g4 g#4@4 ~@6 a3@2 c4 d4@2 c#4@6, ~ d2@12 f3 a3@2 c4@14 ~@4 d4@4 [f3,g#3,b3]@5 g4@10 e4@9 ~@7 [e4,a4]@7 [a3,c4]@3 a4@3 e5@2 a5@2 c6@4 e7@20 ~@9 b4@15 c4@7 a4@2 b4@17, ~@5 g4@12 f4 a4 c5@2 f5 a5 c6@2 [f6,a6]@5 ~@8 e4@10 [f3,b3,d4]@15 ~@6 c4@5 g3@17 a7@13 [c5,e5]@5 ~@6 d5@8 a3@20 ~ d3@16, ~@7 d3@2 a3 c4 f4 d3@18 ~ d3@31 [c2,b3,c4,e4]@9 c3@38 ~ [d1,c5,e5]@13 f#4@2 c4@2 e4@17 ~@3 f#3@13]/5", // Fdim A5 Am F Bdim C Cmaj7 C
  E: "[~@14 d3@2 ~@7 d4@4 ~@2 a2@2 d2@2 ~@12 g#4@7 ~@38 c3@3 [f4,a4]@6 ~@21 [d3,a3,c4,d4]@7 f4, d2@9 a3@2 c4@2 d4@3 g2@15 c4@13 a3@8 e4@24 ~ [b3,e4,g#4,b4]@16 f2@11 [a3,a4]@7 [d4,f4]@5 f2@12, ~@2 [a2,a4]@14 g4@5 b3@6 [b3,d4,g4]@4 [f4,a4]@5 d5@17 ~@24 g#3@5 [c4,f4,a4,c5]@3 g#3@9 ~@5 [f4,a4]@3 f3@2 f4@3 c4@12 f3@9, ~@3 f#4@15 ~@2 f3@12 ~@4 [f4,a4]@2 d3@3 [f3,f4,a4]@12 d4@41 ~@5 c5@21 ~@8, ~@7 f#3@11 d3@14 ~ a2@20 ~@4 d3@30 [c#4,c#5]@6 d5@27 ~@8]/4", // F D7 E A Dm A G F …
  F: "[~@18 d3@3 ~@15 b4@2 ~@8 [b6,e7]@11 ~@23 c4@4 ~@19 e4@15 ~@41 f4@3 f4@3 f4@2 ~@4 e4@3 ~@11 g2@7, [a3,c4,d4]@7 e3@14 f2@11 g#3@9 g#5@3 [f6,g#6]@13 g#2@17 d4@10 g2@11 e4@3 c4 c5@19 e2@9 e3@2 g3@3 b3@5 a#3@5 e3@13 f3@12 f4 d4@3 g4@9 [g1,a3]@12, ~@3 f2@12 [e4,a4,c5]@7 e5@36 d4@4 c5@6 d4@2 e4@4 c4@3 g#3@7 c5@10 [g3,g4]@26 ~@3 [e4,g4]@2 b4 e5@12 e4@7 a#3@3 e4@2 g4@2 a#4 d3@21 [c4,e4]@8 ~@10, ~@8 [c4,f4]@15 ~@3 d3@7 b3@25 g#4@2 d5@27 ~@4 e3@29 ~@4 a#4@10 b4@22 a3@9 a4@12 f4@5 ~@10, ~@8 [e4,a4]@4 a3@10 [f4,g#4,b4]@8 f3@4 d4 g#4@3 g#4@2 b4@19 f3@6 g#4@22 ~ c3@32 ~ b2@19 c#3@17 c4@2 a4@3 c5@19 b3@11]/6", // E5 D7 Fm Gsus2 Am G Em C …
  G: "[~@16 d4@2 ~@4 d3@3 ~@25 f3@2 f3@3 f3@4 [f3,g#3]@3 [f3,g#3]@4 [f3,g#3]@3 ~@2 g2@2 [c2,g3]@2 ~@6 c3@3 ~@8 g3@4, ~@5 a3@14 ~ a2@13 [c4,a4]@2 c5 f5@2 a5 c6 f6 [a6,c7]@2 g7@3 g2@13 [b3,d4]@3 c4@4 [b3,d4]@3 [f3,c4] g#3@4 ~@5 [e4,g4]@5 [e4,g4,a4,c5]@2 c3@2 e3 [c5,e5]@7, ~@11 g2@7 [d2,g4]@30 d3@25 ~@3 g2@20, ~@13 [e4,g4]@5 ~@9 d3@2 a3 c4 [a3,f4]@18 ~@3 [a3,e4]@21 c4@23, ~@14 d#4@4 ~@7 c4@4 f3@20 ~@3 b3@3 d#4@18 [b3,e4]@6 [b3,d4]@17]/3", // Fm C5 F Am Bm F5 Em Am7 …
  H: "[~@66 e4@3 a3 f3@5 b3 ~@53 g#3@16 ~@25 [c4,e4,f4]@2 ~@8 a4@7 ~ [f4,a4,b4,d5]@4, f#4@16 e6 f#6@2 [b6,c7] [d7,e7]@27 f3@22 [c4,e4]@6 [e3,g3,d4]@36 g4@34 ~@17 e4@6 f2@4 ~@3 [f4,b4]@12 ~@5, b4@11 c5@3 f#5@35 ~ c4@5 [e4,a4]@3 f4@4 a4@9 ~@11 d3@29 [f3,b3]@9 f4@8 [f3,d4]@16 ~@21 g4@5 a4@8 g#4@14, [c4,e4]@7 e4@14 [a7,b7]@16 b4@6 c#5@6 a3@16 f4@5 ~@11 [f3,a3,c4]@22 a4@9 ~@3 e4@29 ~@15 d4@12 ~@4 d4@17, ~@3 d1@43 d5@6 c5@19 ~@27 g4@8 f4@2 g2@36 ~ [c2,g2,c3,e3,g3,a3,c4]@25 ~@5 g4@5 [e4,g4,c5]@12]/6", // Fmaj7 Bm7b5 Cmaj7 Dsus2 C Em7 Fdim A5 …
  I: "[~@23 b6@2 b6@2 g6 g6@3 ~ b5@2 ~@2 g5 ~@3 e5 ~@2 b4@3 ~@2 g4@2 ~@23 [c#2,c#3,g#3,b3]@6 ~@17 c1@59 ~@5, ~@5 [c1,c2]@26 [e6,g6]@3 [b5,e6]@3 g5 b5@41 g2@64 ~@17, ~@5 e4@23 b6@13 e5@5 b4@4 g4@6 e4@16 [g#2,d#4]@8 [c2,c3,e3,a3,c4,d4]@64 ~@16, ~@5 g4@16 e7@4 e7@55 ~@80, ~@5 [b4,e5]@16 g7@60 ~@79]/5", // C#7 C Em E5 G#5 Am E5
})).s("gm_piano").gain(0.26)

// chords · piano · soft notes
const piano_soft = note(`<
  ~ A@2 ~@3 B@2 C ~ D@3 ~ E F@2 ~ G H@2 I ~ J K L M N@2 ~@2 O@2 ~@2 P Q@2 R@2 ~@2
>`.pickRestart({
  A: "[~@11 a4@34 ~@19]/2", B: "[~@8 c4@8 ~@22 g5@23 ~@3, ~@7 b3@8 ~]/2",
  C: "~@21 f3@7 g2@4, ~@5 g#4@25 ~@2, ~@13 f4@17 ~@2",
  D: "[~@5 e4@12 ~@10 a#4@8 ~@5 d4@3 ~@10 g4@14 ~@3 g2@8 g2@12 ~@6, ~@3 g4@20 g4@11 ~@62, ~@17 a#3@18 ~@61, ~@20 e4@15 ~@18 e4@4 ~@39]/3",
  E: "~@21 g#3@10 ~", F: "[~@17 c5@23 ~@24]/2", G: "~@5 d3@9 ~@18",
  H: "[~@31 f3@30 ~@3, ~@17 d3@4 b3@24 ~@19, ~@20 [g2,g4]@41 ~@3]/2", I: "~@14 d4 ~@17, ~ d3@23 ~@8",
  J: "~@3 f4@3 ~@3 f5@18 ~@5, ~@6 f4@21 ~@5", K: "~@18 f3@5 ~@9", L: "~@12 b5@11 ~@9", M: "~@8 g3@7 ~, ~@4 g4@7 ~@5",
  N: "[~@21 f3@8 ~@9 b3@12 ~@6 a3@5 ~@3, ~@21 d4@27 ~@16, ~@29 f3@8 f3@14 ~@13, ~@33 g2@10 ~@21]/2",
  O: "[~@40 c5@9 ~@15, ~@7 c4@41 ~@16, ~@5 f4@19 ~@8, ~@12 d5@33 ~@19, ~@15 c6@33 ~@16]/2", P: "~ b3@16 ~@15",
  Q: "[~@23 a#4@11 ~@30, ~@5 d3@12 ~@15, ~@11 e3@24 ~@29]/2",
  R: "[~@41 f3@8 ~@15, ~@10 g5@39 ~@15, ~@7 e5@17 ~@8, ~@9 b4@15 ~@8, ~@30 b3@5 g3@13 ~@16]/2",
})).s("gm_piano").gain(0.15)

stack(piano, piano_soft)

More by Tatum Art