Strudelify

Lucky Sevens

Cade Lively

KeyA majorTempo160 bpm
0:00/0:00
// Lucky Sevens — Cade Lively
// 160 bpm, 7/8, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5274177; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 104 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(160/3.5)

// 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(`<
  ~@8 A B A B A B A B A B A B A B A B C D C D C D C D E F E F E F E F A B A B A B A B A B A B A B A B C D C D C D C D E
  F E F E F E F A B A B A B A B A B A B A B A B C D C D C D C D E F E F E F E F
>`.pickRestart({
  A: "[c2,c4,e4,g4,a#4]@3 ~@4 [f2,c4,e4]@3 ~@4 f2@3 c3@3 ~ f3@3, ~@7 [c4,f4,g#4]@5", // C7 Fmaj7 Fm
  B: "[c2,c4,e4,g4,a#4]@3 ~@4 [f2,c4,e4]@3 ~@4 a#1@3 f2@3 ~ a#2@3, ~@7 [c4,f4,g#4]@5", // C7 Fmaj7 Fm
  C: "[a1,a3,c4,e4,g4]@3 ~@4 [e2,a3,c4]@3 ~@4 d2@3 a2@3 ~ d3@3, ~@7 [a3,c4,d4,f#4]@5", // Am7 Am D7
  D: "[a1,a3,c4,e4,g4]@3 ~@4 [e2,a3,c4]@3 ~@4 g1@3 d2@3 ~ g2@3, ~@7 [a3,c4,d4,f#4]@5", // Am7 Am D7
  E: "[c2,c4,e4,g4,a#4]@3 ~@4 [c2,c4,e4]@3 ~@4 d#2@3 d2@2 ~@2 c#2@2 ~, ~@7 [c4,f4,g#4]@5", // C7 C Fm
  F: "[c2,c4,e4,g4,a#4]@3 ~@4 [c2,c4,e4]@3 ~@4 a1@3 a#1@2 ~@2 b1@2 ~, ~@7 [c4,f4,g#4]@5", // C7 C Fm
})).s("gm_piano").gain(0.06)

// bass · acoustic bass
const bass = note(`<
  [c2@3 ~@4 c3@3 ~@5 g2@2 f2@3 ~ c#2@3, ~@7 f2 ~@4]!24
  [a1@3 ~@4 a2@3 ~@5 e2@2 d2@3 ~ c2@3, ~@7 d2 ~@4]!8
  [c2@3 ~@4 c3@3 ~@5 g2@2 f2@3 ~ c#2@3, ~@7 f2 ~@4]!24
  [a1@3 ~@4 a2@3 ~@5 e2@2 d2@3 ~ c2@3, ~@7 d2 ~@4]!8
  [c2@3 ~@4 c3@3 ~@5 g2@2 f2@3 ~ c#2@3, ~@7 f2 ~@4]!24
  [a1@3 ~@4 a2@3 ~@5 e2@2 d2@3 ~ c2@3, ~@7 d2 ~@4]!8
  [c2@3 ~@4 c3@3 ~@5 g2@2 f2@3 ~ c#2@3, ~@7 f2 ~@4]!8
>`).s("gm_acoustic_bass").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~@4 A@34 B C A@30 B C A@30 B C>".pickRestart({
  A: "x ~@13 x ~@2 x ~@6", B: "~@17 x ~@6", C: "x ~@6 x ~@16",
})).gain(0.15)

// drums · rim
const rim = s("rim").struct("<~@4 A@34 B C A@30 B C A@30 B C>".pickRestart({
  A: "~@7 x ~@13 x ~@2", B: "~@7 x ~@4", C: "~@7 x ~@16",
})).gain(0.15)

// drums · snare
const snare = s("sd").struct("<~@4 A@34 B C A@30 B C A@30 B C>".pickRestart({
  A: "~ x", B: "x ~ x!2 ~ x ~ x ~ x!2 ~ x ~@11", C: "x ~@13 x!2 ~ x!7",
})).gain(0.15)

// drums · crash
const crash = s("cr").struct("<~@24 A ~@7 A ~@7 A ~@31 A ~@31>".pickRestart({
  A: "x",
})).gain(0.15)

// drums · ride
const ride = s("rd").struct("<~@4 A@20 B A@7 B A@5 ~@2 B A@29 ~@2 B A@29 ~@2>".pickRestart({
  A: "x ~@2 x ~@3 x ~@2 x ~@3 x ~@2 x ~@3 x ~@2", B: "~@3 x ~@3 x ~@2 x ~@3 x ~@2 x ~@3 x ~@2",
})).gain(0.15)

// drums · cowbell
const cowbell = s("cb").struct("<~@2 [x ~@6 x ~@6 x ~@9]!2 ~@100>").gain(0.15)

stack(piano, bass, kick, rim, snare, crash, ride, cowbell)