Strudelify

Don't Stop

Fleetwood Mac

KeyC majorTempo120 bpm
0:00/0:00
// Don't Stop — Fleetwood Mac
// 120 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 96 bars on a 24-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 · "PIANO-1"
const piano = note(`<
  A B C D E D C D F@2 G H G H I J K L G H M H I N O H G H I H G H G H I J K L G H M H I P Q R S H G H G H I P Q R S L G
  H M H I N O L G H T H I N O H G H G H I J K H G H I H G H G H I H G H G U
>`.pickRestart({
  A: "~@11 g2", B: "[g2,c3,e3,g3,c4,e4]@10 [c3,c4] ~@7 f4@2 e4@2 d4@2, ~@5 f3@7, ~@5 f4@4 ~@3, ~@5 a3 ~@6",
  C: "[g3,c4,e4]@7 ~@3 [f3,a3,c4,f4]@12 g2@2, [g2,e3]@5 ~@7, c3 ~@9 c3 ~@13", // C F C
  D: "[g2,e3,g3,c4,e4]@10 [c3,c4] ~@7 f4@2 e4@2 d4@2, c3 ~@9 f3@14, ~@5 f4@4 ~@3, ~@5 a3 ~@6", // C
  E: "[g3,c4,e4]@7 ~@3 c3 ~@3 [c2,c3] ~ [c2,c3] ~ [c2,c3] ~ [c2,c3] ~ [c2,c3] ~, [g2,e3]@5 f4@5 ~@2, c3 ~@9 [f3,a3,c4]@12 g2@2", // C F
  F: "[[g3,c4,e4]@7 ~@3 c3 ~@3 [c2,c3] ~ [c2,c3] ~ [c2,c3] ~ [c2,c3] ~ [c2,c3] ~ [e3,g3]@2 ~@2 c3@2 [e3,c4]@3 ~ c3@2 [a#2,d3,f3,a#3]@3 ~ a#1@2 [d3,f3,a#3]@2 a2 ~ [a#1,g2] ~, [g2,e3]@10 f4@10 ~@4 [c3,c4] ~@3 c2 ~ c3 ~@3 c2 ~@13, c3 ~@9 [f3,a3,c4]@12 g2@17 ~ a#2 ~ a#2 ~@5]/2", // C Em C A# D# C F
  G: "[f2,c3,f3,a3]@3 ~ [f2,c3]@2 [f3,a3]@2 ~@2 [f2,d3]@2 [f2,c3,f3,a3]@3 ~ [f2,c3]@2 [d3,f3,a3]@2 ~@2 [f2,c3] ~, ~@6 [c3,d3] ~@11 c3 ~@5", // F F5 F Dm F F5 Dm F5 …
  H: "[c3,e3,g3]@2 ~@2 c3@2 [e3,c4]@3 ~ c3@2 [a#2,d3,f3,a#3]@3 ~ a#1@2 [d3,f3,a#3]@2 a2 ~ [a#1,g2] ~, c4 ~@3 c2 ~ c3 ~@3 c2 ~@5 a#2 ~ a#2 ~@5", // C A# D#
  I: "[f2,c3,f3,a3]@3 ~ [f2,c3]@2 [f3,a3]@2 ~@2 [f2,d3]@2 [f2,c3,f3,a3]@3 ~ [f2,c3]@2 [d3,f3,a3]@2 ~@2 [f2,c3] ~, ~@6 [c3,d3] ~@11 c3 ~@3 g2@2", // F F5 F Dm F F5 Dm F5 …
  J: "[b2,d3,g3]@3 ~ g2@2 [b2,e3,g3]@3 ~ g2@2 [b2,d3,g3]@3 ~ g2@2 [b2,e3,g3]@3 ~ g2@2", // G Em G Em
  K: "[b2,d3,g3]@4 g2@2 [b2,e3,g3]@3 ~ g2@2 [b2,d3,f3,g3]@4 g2@2 [b2,e3,g3]@3 ~@3", // G Em G7 Em
  L: "[c3,e3,g3]@2 e3 ~ c3@2 [e3,c4]@3 ~ c3@2 [a#2,d3,f3,a#3]@3 ~ a#1@2 [d3,f3,a#3]@2 a2 ~ [a#1,g2] ~, c4 ~@3 c2 ~ c3 ~@3 c2 ~@5 a#2 ~ a#2 ~@5", // C A# D#
  M: "[f2,c3,f3,a3]@3 ~ [f2,c3]@2 [f3,a3]@2 ~@2 [f2,d3]@2 [f2,c3,f3,a3]@3 ~ [f2,c3]@2 [d3,f3]@2 ~@2 [f2,c3] ~, [c4,f4]@19 ~@5, ~@6 [c3,d3] ~@11 [c3,a3] ~@5", // F F5 F Dm F F5 Dm F5 …
  N: "[b2,d3,g3]@3 ~ [g2,b3,d4,g4]@2 [b2,e3,g3]@3 ~ g2@2 [b2,d3,g3,b3,g4]@3 ~ g2@2 [b2,e3,g3]@3 ~ g2@2, ~@12 d4 ~@11", // G Em G Em
  O: "[b2,d3,g3]@4 [g2,b3,d4,g4]@2 [b2,e3,g3]@3 ~ g2@2 [b2,d3,f3,g3]@4 g2@2 [b2,e3,g3]@3 ~@3, [b3,g4] ~@4 [b3,d4,g4]@6 ~, d4 ~@23", // G Em G7 Em G
  P: "[b2,d3,g3,b3,d4]@3 ~ [g2,b3,d4,g4]@2 [b2,e3,g3]@2 g3 ~ g2@2 [b2,d3,g3,b3,g4]@2 g3 ~ g2@2 [b2,e3,g3,b3,d4]@3 ~ g2@2, ~@6 [b3,d4] ~@5 d4 ~@11", // G Em G Em7 Bm
  Q: "[b2,d3,g3,b3,g4]@2 [g3,b3]@2 [g2,b3,d4,g4]@2 [b2,e3,g3]@3 ~ [d3,g3,g4]@2 [g3,b3,d4] ~@5 [g3,b3,d4]@3 ~@3, d4 ~@5 [b3,d4] ~@3 [b3,d4] ~@13", // G Em G5 G Bm
  R: "[b2,d3,g3,b3,d4]@3 ~ [g2,b3,d4,g4]@2 [b2,e3,g3]@3 ~ g2@2 [b2,d3,g3,b3,g4]@3 ~ g2@2 [b2,e3,g3,b3,d4]@3 ~ g2@2, ~@6 [b3,d4] ~@5 d4 ~@11", // G Em G Em7 Bm
  S: "[b2,d3,g3,b3,g4]@3 ~ [g2,b3,d4,g4]@2 [b2,e3,g3]@3 ~ [g2,b3,d4,g4]@2 [b2,d3,f3,g3,b3,d4,g4]@3 ~ g2@2 [b2,e3,g3,b3,d4,g4]@3 ~@3, d4 ~@5 [b3,d4] ~@17", // G Em G G7 Em7 Bm
  T: "[f2,c3,f3,a3]@3 ~@19 [f2,c3] ~, [c4,f4]@19 ~@5", U: "[c2,c3,e3,g3]@5 ~@19",
})).s("gm_piano").gain(0.31).pan(0.8)

// bass · fretless bass · "BASS-2"
const bass = note(`<
  ~@5 A@3 B C D E D E D F G C D E D E D F G E D E D C D E D E D F G C D E D E D F@3 G C D E D E D F@3 G C D E D E D F G
  C D E H E D F G C D E D E D F G E D E D E D E D E D E D E D I
>`.pickRestart({
  A: "[c2@2 ~@2 c2 ~ c2@2 ~@2 c2 ~ c2@2 ~@2 c2 ~ c2@2 ~@2 c2@4 ~@2 c2 ~ c2 ~@3 c2 ~ c2@2 ~@2 c2 ~ c2@2 ~@2 c2@4 ~@2 c2 ~ c2 ~@3 c2 ~ c2 ~@3 c2 ~ c2 ~@3 c2 ~]/3",
  B: "c2@2 ~@2 c2 ~ c2 ~@3 c2 ~ c2 ~@3 c2 ~ c2@2 ~@2 c2 ~", C: "c2@3 ~ c2 ~ c2 ~@3 c2 ~ a#1@2 ~@2 a#1 ~ a1@2 ~@2 g1 ~",
  D: "f1@2 ~@2 f1 ~ f1@2 ~@2 f1 ~ f1@2 ~@2 f1 ~ f1 ~@3 f1 ~",
  E: "c2@3 ~ c2 ~ c2@3 ~ c2 ~ a#1@2 ~@2 a#1 ~ a1@2 ~@2 g1 ~",
  F: "g1@2 ~@2 g1 ~ g1@2 ~@2 g1 ~ g1@2 ~@2 g1 ~ g1 ~@3 g1 ~", G: "g1 ~@3 g1 ~ g1 ~@3 g1 ~ g1 ~@3 g1 ~ g1@2 a1@2 b1@2",
  H: "f1@2 ~@20 f1 ~", I: "[c1,c2]@5 ~@19",
})).s("gm_fretless_bass").gain(0.36)

// chords · string ensemble 2 · "STRG-3"
const string_ensemble_2 = note("<~ A@5 ~@90>".pickRestart({
  A: "[~@72 e5@25 ~@23, e6@49 ~@11, ~@24 c6@73 ~@23, ~@2 g5@2 ~]/5",
})).s("gm_string_ensemble_2").gain(0.18)

// drums · kick
const kick = s("bd").struct(`<
  ~@3 A B C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C
  D C D C D C D C E C D C D C D A F C D C D C D C D C D C D C D C G C G H
>`.pickRestart({
  A: "x!12", B: "x!9 ~@3", C: "x ~@5 x ~@4 x", D: "x ~@4 x!2 ~@4 x", E: "~@3 x!2 ~", F: "x!7 ~ x ~@2 x",
  G: "x ~@4 x!2 ~ x ~@2 x", H: "x",
})).gain(0.31)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@5 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A ~ A B A B A B A C A B A B A B A B A B A B A B A C A C ~
>`.pickRestart({
  A: "x", B: "x!2", C: "x!2 ~ x ~@2",
})).gain(0.15)

// drums · low tom
const low_tom = s("lt").struct("<~@4 A ~@63 A ~@7 A ~@15 A ~ A ~>".pickRestart({
  A: "~@11 x",
})).gain(0.46)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@3 [x!4] [x!3 ~] [x!4]!63 x [x!4]!26 ~>").gain(0.41)

// drums · pedal hat · soft notes
const pedal_hat_soft = s("hh").struct(`<
  ~@5 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A ~ A B A B A B A B A B A B A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "~@11 x", B: "~@5 x ~@5 x",
})).gain(0.26)

// drums · open hat
const open_hat = s("oh").struct("<~@76 x ~@15 x ~ x ~>").gain(0.41)

// drums · mid tom
const mid_tom = s("mt").struct("<~@4 A ~@63 A ~@7 A ~@15 A ~ A ~>".pickRestart({
  A: "~@5 x",
})).gain(0.36)

// drums · crash
const crash = s("cr").struct(`<
  ~@3 A B ~@4 C ~@7 C ~@11 C ~@7 C ~@9 C ~@9 C ~@7 C ~@2 D ~@4 C ~ A E ~@15 D ~ D C
>`.pickRestart({
  A: "~ x ~ x", B: "~@3 x ~@4 x ~@2 x", C: "x", D: "~@3 x!2 ~", E: "~@3 x ~@2 x ~ x ~@3",
})).gain(0.41)

// drums · high tom
const high_tom = s("ht").struct("<~@4 A ~@63 A ~@7 A ~@15 A ~ A ~>".pickRestart({
  A: "~@3 x",
})).gain(0.36)

// drums · ride
const ride = s("rd").struct("<[~@11 x] [x ~@10 x]!4 ~@91>").gain(0.31)

// drums · tambourine
const tambourine = s("tb").struct("<[x ~@5 x ~@4 x ~@5 x ~@6] ~@95>").gain(0.31)

// drums · cowbell
const cowbell = s("cb").struct("<~@4 [x!3 ~] ~@71 [x!2 ~@2] ~@19>").gain(0.36)

stack(
  piano, bass, string_ensemble_2, kick, snare, snare_soft, low_tom, pedal_hat, pedal_hat_soft, open_hat, mid_tom, crash,
  high_tom, ride, tambourine, cowbell
)

More by Fleetwood Mac