Strudelify

lucky one

ClarSaxPian

KeyE majorTempo130 bpm
0:00/0:00
// lucky one — ClarSaxPian
// 130 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/2756151; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 82 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(130/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@2 B@2 C@2 D E F G H I@3 J@2 K L M@2 N O@2 P@2 Q@2 R@3 S T@2 U@2 V@2 W S X Y Z@2 AA@5 K L M@2 N O@2 P@2 Q@2 R@3 S T@2
  U@2 V@2 W S X AB A B@2 C@2 D AC AD@2
>`.pickRestart({
  A: "[d2,d3,a3,c#4,e4]@3 [d2,a3,d4,f#4]@2 ~@2 d2, ~@5 d4 d4@2, ~@11 d2@3 ~@2", // A D
  B: "[b1,b2,a3,c#4,e4]@3 [b1,a3,c#4,f#4]@2 ~@2 b1, ~@5 c#4 c#4@2, ~@11 b1@3 ~@2", // A F#m
  C: "[e2,e3,b3,d4,f#4]@3 [e2,b3,d4,g4]@2 ~@2 e2, ~@5 d4 d4@2, ~@11 e2@3 ~@2", // Bm Em7
  D: "[g2,g3,b3,d4,f#4]@3 [g2,b3,d4,g4]@2 ~@2 g2, ~@5 d4 d4@2, ~@11 g2@3 ~@2", // Gmaj7 G
  E: "[g2,g3,b3,d4,f#4]@3 [g2,b3,d4,g4]@2 ~ d4 [g2,b3], ~@5 g4 ~@2, ~@11 g2@3 ~@2", // Gmaj7 G
  F: "~@2 d5!2 ~ [a2,d3] a4 f#4, [a2,c#3,e3]@3 [a2,d3,f#3]@2 ~ [a2,d3]@2, ~@2 d5 ~", // D5 A D D5
  G: "g4 f#4 g4 [a2,d3,f#3]@2 [a2,d3] [a2,d3]@2, [a2,c#3,e3]@6 a4@9 ~", // D D5 A
  H: "~@2 d5!2 ~ [a2,c#3] a4 f#4, [a2,c#3,e3]@3 [a2,c#3,f#3]@2 ~ [a2,c#3]@2, ~@2 d5 ~", // A F#m A
  I: "[g4 f#4 g4 [a2,c#3,f#3]@2 [a2,c#3] b3 ~@2 g4 f#4 [b2,d3,g3]@2 [b2,d3] b3 ~@2 g4 f#4 [b2,d3,g3]@2 [b2,d3] [b2,d3]@2, [a2,c#3,e3]@3 a4@3 [a2,c#3]@2 [b2,d3,f#3]@3 ~@3 [b2,d3]@2 [b2,d3,f#3]@3 ~@5, ~@14 a4@4 ~@4 g4@6 ~@2 a4@4 ~@4 g4@9 ~]/3", // F#m A G Bm G Bm A Bm
  J: "[~ d4!2 b3 d4 [b2,d3,d4] b4 ~@2 f#4@2 [b2,d3,g3,e4]@2 [g3,a3,a4] [d3,d4,d5] [b2,e4,e5], [b2,d3,f#3]@3 [b2,d3,g3]@2 ~ [b2,d3]@2 [b2,d3,f#3]@3 ~@5, ~@7 a4@2 ~@7]/2", // Bm Em7 Gsus2 D E5 Bm G Bm
  K: "[d4,d5]@2 d5!2 ~ [a2,d3] a4 f#4, [a2,c#3,e3]@3 [a2,d3,f#3]@2 ~ [a2,d3]@2, ~@2 d5 ~", // D D5 A D D5
  L: "g4 f#4 g4 [a2,d3,f#3,a4]@2 [a2,d3,a3,a4] [d4,d5] [e4,e5], [a2,c#3,e3]@3 ~@3 [a2,d3]@2", // D D5 D E A D5
  M: "[[d4,d5]@2 d5!3 [a2,c#3,a4] a4 ~@2 d5 c#5 d5!2 [a2,c#3,f#5] d5!2, [a2,c#3,e3]@3 [a2,c#3,f#3]@2 ~ [a2,c#3]@2 [a2,c#3,e3]@3 [a2,c#3,f#3]@2 ~ [a2,c#3]@2, ~@7 e5@2 ~@7]/2", // D A F#m A F#m A F#m A
  N: "f#5 d5@2 [b2,d3,g3]@2 [b2,d3] ~ b4, [b2,d3,f#3]@3 ~@3 [b2,d3]@2", // G Bm
  O: "[b4 c#5 d5 [b2,d3,g3]@2 [b2,d3] d5 ~@2 f#5@2 [b2,d3,g3]@2 [b2,d3] [b2,d3]@2, [b2,d3,f#3]@3 f#5@3 [b2,d3]@2 [b2,d3,f#3]@3 ~@5, ~@14 d5@4 ~@4 g5@9 ~]/2", // G Bm G Bm
  P: "[~@2 a4!2 g5!3 ~ d2 [d2,d3,f#5] d2 [d2,d3] d2 [d2,d3] d2 [d2,d3], [b2,d3,g3]@7 g5@2 ~ f#5@4 ~@2]/2", // D G
  Q: "[d2 [d2,d3] [d2,a4] [d2,d3,a4] [d2,g5] [d2,d3,f#5] [d2,e5] [d2,d3] b1 [b1,b2] [b1,c#5] [b1,b2] b1 [b1,b2] b1 [b1,b2,d5], ~@7 c#5@3 ~ c#5@2 e5@2 ~]/2", // D D5 G5 D Dsus2 D B Bsus2 …
  R: "[b1 [b1,b2] b1 [b1,b2] [b1,f#5] [b1,b2,g5] [b1,a5] [b1,b2] e2 [e2,e3,d5] e2 [e2,e3] e2 [e2,e3,d5] [e2,a5] [e2,e3] e2 [e2,e3,d5] e2 [e2,e3] e2 [e2,e3] e2 [e2,e3,b4], b4@2 ~@5 a5@2 ~ d5@2 ~@3 a5@2 ~ d5@2 ~@4]/3", // B B5 Em B7 B E7 E E7 …
  S: "[g2,d5]@2 [g2,g3,b4]@2 [g2,d5]@2 [g2,g3,e5]@2 [g2,f#5]@2 [g2,g3,f#5]@2 [g2,d5]@2 e5 f#5, ~@7 [g2,g3]", // G5 G G5 C Gmaj7 G5 G
  T: "[g2 [g2,g3] [g2,a4] [g2,g3,a4] [g2,g5] [g2,g3,g5] [g2,g5] [g2,g3] d2 [d2,d3,f#5] d2 [d2,d3] d2 [d2,d3] d2 [d2,d3], e5@2 ~@5 g5@2 ~ f#5@4 ~@2]/2", // G Gsus2 G D
  U: "[d2 [d2,d3] [d2,d5] [d2,d3,d5] [d2,a5] [d2,d3] d2 [d2,d3] b1 [b1,b2] [b1,c#5] [b1,b2] b1 [b1,b2] b1 [b1,b2,a5], ~@5 a5@2 c#5@3 ~ c#5@2 b5@2 ~]/2", // D D5 D B Bsus2 B B7
  V: "[b1 [b1,b2] b1 [b1,b2,d5] [b1,f#5] [b1,b2,g5] [b1,a5] [b1,b2] e2 [e2,e3,d5] e2 [e2,e3] e2 [e2,e3,d5] [e2,b5] [e2,e3,a5], b5@2 ~@5 a5@2 ~ d5@2 ~@4]/2", // B Bm B5 Em B7 B E7 E …
  W: "[e2,a5] [e2,e3,d5] e2 [e2,e3] e2 [e2,e3] e2 [e2,e3,b4], ~ d5 ~@2", // A5 E7 E E5
  X: "e5@3 a4 [g2,g5] [g3,f#5] [g2,d5] [g3,e5], [e2,e3] ~", Y: "[d2,f#5] [f#2,a4] [a2,d5] e5 d5@2 ~ a4, ~@6 d3@9 ~",
  Z: "[d2 f#2 [a2,d5] d5@2 c#5 ~@2 b1 [d2,a3,a4] [f#2,d4,d5] [e4,e5] [d4,d5]@2 ~ a4, e5@4 ~@2 d3@9 ~@7 b2@9 ~, ~@6 d5@3 ~@7]/2", // D5 D E D
  AA: "[[b1,d5]@2 [d2,c#5]@2 [f#2,a4]@2 a4@4 f#4@4 ~@2 e2@2 g2@2 b2@2 e3@8 ~@2 e2@2 g2@2 b2@2 e3@8 ~@2 g2@2 b2@2 d3@2 g3@9 ~ g2@2 b2@2 d3@2 ~@2 [d4,a4]@2 [a3,a4]@2 [d4,d5]@2 [e4,e5]@2, ~@6 b2@8 b4@9 ~@7 b4@4 a4@6 ~@6 [d4,a4]@24 g3@9 ~]/5", // Bm Dmaj7 F#m D5 A D E D5
  AB: "[d2,d3,a3,c#4,e4]@3 [d2,a3,d4,f#4]@2 ~@2 d2, d5@4 ~ d4 d4@2, ~@11 d2@3 ~@2", AC: "[b2,d3,g3]@15 ~",
  AD: "[~@2 a4!2 g5!3 ~ d2 [d2,d3,f#5] d2 [d2,d3] d2 [d2,d3] d2 [d2,d3], ~@7 g5@2 ~ f#5@4 ~@2]/2", // D
})).s("gm_piano").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~@2 A@21 B C@15 B A@15 ~ C@15 B D@7 ~@2 C>".pickRestart({
  A: "x ~@4 x!2 ~", B: "x", C: "x!4", D: "x ~@2 x ~@2 x ~",
})).gain(0.23)

// drums · rim
const rim = s("rim").struct("<~@2 A@21 B A@15 C ~@16 A@15 C ~@9 A>".pickRestart({
  A: "x!8", B: "x ~@2 x!5", C: "x",
})).gain(0.23)

// drums · snare
const snare = s("sd").struct("<~@72 A B C D E F E G ~@2>".pickRestart({
  A: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", B: "~@2 x!3 ~ x ~ x ~ x ~ x ~ x!2", C: "~@2 x ~ x ~ x!3 ~ x ~ x ~ x!2",
  D: "x ~ x!5 ~ x ~ x ~ x ~ x!2", E: "x ~@2 x ~@2 x ~@2 x ~ x ~ x ~ x", F: "x ~@2 x ~@2 x ~@2 x!3 ~ x ~ x",
  G: "x!5 ~@3",
})).gain(0.26)

// drums · hihat
const hihat = s("hh").struct("<~@2 A@21 ~ B@15 ~ A@15 ~ B@15 ~ C@7 ~@2 B>".pickRestart({
  A: "~@3 x ~@4", B: "~ x ~ x ~ x ~ x", C: "~ x ~@2",
})).gain(0.23)

stack(piano, kick, rim, snare, hihat)