Strudelify

Yes We Can Can

The Pointer Sisters

KeyC majorTempo90 bpm
0:00/0:00
// Yes We Can Can — The Pointer Sisters
// 90 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 11 "SYNBRASS 1" synth brass 1 (copy of ch 9 "BRASS 1" brass section)
// note: Full arrangement: all 85 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(90/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.

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@5 A B A C D A E B C F G H I J K L B K M N J K O J P C M K O Q R S T U V W X Y E Z AA AB E Y E AC E AC AA AC A AC AD
  AE AF AG AH AI AF AE A AC AJ AK AJ AL AM AJ AK AJ@2 AN AO AL AK AJ A AC AJ AK
>`.pickRestart({
  A: "~@3 c4 ~@4 c4 ~@3 c4 ~@4 [a#3,c4] ~@3 [g3,c4] ~@2", B: "~@3 c4 ~@4 c4 ~@3 c4 ~@2 g3 ~ [a#3,c4] ~@3 c4 ~@2",
  C: "~@2 c4 ~@3 c4 ~@4 c4 ~@3 c4 ~@4 c4 ~@3", D: "~@3 c4 ~@4 c4 ~@3 c4 ~@2 a#3 ~ c4 ~@3 c4 ~@2",
  E: "~@3 c4 ~@4 c4 ~@3 c4 ~@4 c4 ~@3 c4 ~@2", F: "f4@2 d#4 ~ g4@7 ~@13",
  G: "~@2 a#4@2 ~ g4@2 ~ f4 ~@2 d#4@6 ~ c4 ~ d#4 ~@3", H: "~@2 g4 f4 ~ d#4 f4@2 d#4 c4@2 a#3 c4@7 ~ d#4 ~@3",
  I: "~@3 c4 ~@4 c4 ~@3 c4 ~@2 g3 ~ [a#3,c4] ~@3 [g3,c4] ~@2", J: "~@2 c4 ~@3 c4 ~@4 c4 ~@3 [g3,c4] ~ a#3 ~@2 c4 ~@3",
  K: "~@2 c4 ~@3 c4 ~@4 c4 ~@3 c4 ~ a#3 ~@2 c4 g3 ~@2", L: "c4 ~@4 c4 ~@3 c4 ~@4 c4 ~@3 c4 ~@2 g3 ~@2",
  M: "c4 ~@4 c4 ~@3 c4 ~@4 c4 g3 ~ a#3 c4 ~@5", N: "~@3 c4 ~@4 c4 ~@3 c4 ~@4 [a#3,c4] ~@3 c4 ~@2",
  O: "c4 ~@4 c4 ~@3 c4 ~@4 c4 ~@3 c4 ~@5", P: "c4 ~@4 c4 ~@3 c4 ~@4 c4 ~@3 [a#3,c4] ~@2 g3 ~@2",
  Q: "~@2 c4 a#3 ~@2 c4 ~@2 a#3 ~ c4 ~@3 c4 ~@4 c4 ~@3", R: "c4 ~@4 c4 ~@3 c4 ~@4 c4 g3 ~@2 c4 ~@5",
  S: "~@2 c4 ~@3 c4 ~@4 c4 ~@3 c4 ~ [a#3,d#4] ~@2 [a#3,c4,d#4] [g3,c4] ~@2", // D#5 Cm7 C5
  T: "~@3 [g3,c4] ~@4 [a3,c4] ~@3 [g3,c4] ~@4 [a3,c4]@2 ~@2 [g3,a#3,c4,d#4] ~@2", // C5 Am C5 Am Cm7
  U: "~@3 [g3,c4] ~@4 [g3,c4] ~@3 [g3,c4] ~@2 [a#3,d#4] ~ [g3,c4] ~@3 [a3,a#3,c4,d#4] ~@2", // C5 D#5 C5 Adim
  V: "~@3 [g3,c4] ~@4 [g3,c4] ~@3 [g3,c4] ~@4 [g3,c4]@4 [a3,a#3,c4,d#4] ~ [g3,c4]", // C5 Adim C5
  W: "~@3 [g3,c4] ~@4 [g3,c4] ~@3 [g3,c4] ~@4 [g3,c4] ~@6", X: "~@3 c4 ~@4 c4 ~@3 c4 ~@4 a#3 ~@2 a#3 g3 ~@2",
  Y: "~@3 c4 ~@4 c4 ~@3 c4 ~@4 [g3,c4] ~@2 g3 [a#3,c4] ~@2", Z: "~@3 c4 ~@4 c4 ~@3 c4 ~@4 g3 ~@2 g3 a#3 ~@2",
  AA: "~@3 c4 ~@3 c4 ~@4 c4 ~@4 c4 ~@3 c4 ~@2", AB: "c4 ~@2 c4 ~@4 c4 ~@3 c4 ~@4 [a#3,c4] ~@2 a#3 [g3,c4] ~@2",
  AC: "~@3 c4 ~@4 c4 ~@3 c4 ~@4 [a#3,c4] ~@2 a#3 [g3,c4] ~@2", // A#sus2 C5
  AD: "~@3 [g3,c4] ~@3 c4 [g3,c4] ~@2 e3 [g3,c4] ~@4 [g3,c4]@3 e3 [a3,c4] ~ [g3,c4]", // C5 Am C5
  AE: "~@3 [g3,c4] ~@4 [g3,c4] ~@3 [g3,c4] ~@4 [g3,c4]@3 e3 [a3,c4] ~@2", // C5 Am
  AF: "~@3 [g3,c4] ~@4 [g3,c4] ~@3 [g3,c4] ~@4 [g3,c4]@3 e3 [a3,c4] ~ [g3,c4]", // C5 Am C5
  AG: "~@3 [g3,c4] ~@4 [g3,c4] ~@3 [g3,c4] ~@2 [g3,c4] ~@2 c4@3 g3 ~@2, ~@9 a3 ~@2", // C5
  AH: "~@3 [g3,c4] ~@4 [g3,c4] ~@3 [g3,c4] ~@4 [g3,c4]@2 ~ g3 [a3,c4] ~ [g3,c4]", // C5 Am C5
  AI: "~@3 [g3,c4] ~@4 [g3,c4] ~@3 [g3,c4] ~@4 [g3,c4]@2 e3 ~ [a3,c4] ~@2", // C5 Am
  AJ: "~@3 c4 ~@4 c4 ~@3 c4 ~@4 c4 ~@3 [a#3,c4] ~@2", AK: "~@3 c4 ~@4 c4 ~@3 c4 ~@4 c4 ~@3 [g3,c4] ~@2",
  AL: "~@2 c4 ~@3 c4 ~@4 c4 ~@3 c4 ~@4 c4 a#3 ~@2", AM: "c4 ~@4 c4 ~@3 c4 ~@4 c4 ~@3 c4 ~@2 a#3 ~ c4",
  AN: "~@2 c4 ~@3 c4 ~@4 c4 ~@3 [g3,c4] ~@4 c4 ~@3", AO: "~@3 [a#3,c4] ~@4 c4 ~@3 c4 ~@4 c4 ~@3 [a#3,c4] ~@2",
})).s("gm_electric_guitar_muted").gain(0.22).pan(0.4)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  A B C D C E F G C H I B C B I D J K I G I D I D I D I D I D I D L D I D C G F G L G F D M D M D I D F D F D N O P D P
  O F Q I G I K G C G D C G M G F D F G M G L K G C R
>`.pickRestart({
  A: "~@18 g1 ~ a1 c2 ~ a1", B: "c2 ~@2 c2 ~@4 c2 ~@3 c2 ~@5 g1@2 a1 c2@2 a1",
  C: "c2 ~@2 c2 ~@4 a1 c2@2 a1 c2@2 ~@4 g1@2 a1 c2@2 a1", D: "c2 ~@2 c2 ~@4 c2 ~@3 c2 ~@5 g1@2 a1 c2 ~ a1",
  E: "c2 ~@2 c2@2 ~@3 c2 ~@3 c2 ~@5 g1@2 a1 c2 ~ a1", F: "c2 ~@2 c2 ~@4 a1 c2@2 a1 c2@2 ~@4 g1@2 a1 c2 ~ a1",
  G: "c2 ~@2 c2 ~@4 c2 ~@3 c2 ~@5 g1 ~ a1 c2 ~ a1", H: "c2 ~@2 c2 ~@4 c2 ~@3 c2 ~@5 g1 ~ a1 c2@2 a1",
  I: "c2 ~@2 c2 ~@4 a1 c2@2 a1 c2 ~@5 g1@2 a1 c2 ~ a1", J: "c2 ~@2 c2 ~@4 a1 c2@2 a1 c2 ~@11",
  K: "~@3 c2 ~@4 c2 ~@3 c2 ~@5 g1@2 a1 c2 ~ a1", L: "c2 ~@2 c2 ~@4 a1 c2@2 a1 c2 ~@5 g1@2 a1 c2@2 a1",
  M: "c2 ~@2 c2 ~@4 a1 c2@2 a1 c2 ~@5 g1 ~ a1 c2 ~ a1", N: "c2 ~@2 c2 ~@4 a1 c2 ~ a1 c2@2 ~@4 g1@2 a1 c2 ~ a1",
  O: "c2 ~@2 c2 ~@4 c2 ~@3 c2@2 ~@4 g1@2 a1 c2 ~ a1", P: "c2 ~@2 c2 ~@4 a1 c2@2 a1 c2@2 ~@4 g1 ~ a1 c2 ~ a1",
  Q: "c2 ~@2 c2 ~@4 c2 ~@3 c2@2 ~@4 g1 ~ a1 c2 ~ a1", R: "c2 ~@2 c2 ~@4 c2 ~@3 c2 ~@5 g1 ~ a1 c2 ~@2",
})).s("gm_fretless_bass").gain(0.44)

// chords · rock organ · "ORGAN 3"
const rock_organ = note("<~@80 A B C D@2>".pickRestart({
  A: "~@22 [e4,f4,g4] ~, ~@17 [g2,a2]@2 [e3,f3]@2 [b3,c4,d4]@2 ~, ~@9 [b2,c3,d3] [g3,a3] ~", // Em Gsus2 Fmaj7 Bm Gsus2
  B: "[g4,a#4,c5,e5]@17 ~ [g4,a#4,d5,f5]@5 ~", C: "[g4,a#4,c5,e5]@17 ~ [a#4,d5,f5]@6",
  D: "[[c5,e5]@11 ~ [a#4,c5,e5] ~@2 [a#4,c5,e5]@26 ~ [a#4,c5,e5] ~@2 [g4,a#4,e5] ~@2, ~@42 g4@2 ~ c5@2 ~]/2", // C C7 Edim
})).s("gm_rock_organ").gain(0.22).pan(0.8)

// chords · rock organ · "ORGAN 3" · soft notes
const rock_organ_soft = note("<~@80 A ~ B C@2>".pickRestart({
  A: "~@17 [e2,f2] ~@6", B: "~@18 g4@5 ~", C: "[g4@41 ~@7, a#4@11 ~@37]/2",
})).s("gm_rock_organ").gain(0.11).pan(0.8)

// chords · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
  ~@20 A B C ~@2 D E ~@2 F G@2 ~@3 H I ~@8 J K ~@2 F G@2 ~@3 H I ~@8 F G@2 ~@3 H I L M L M L M L M ~@4
>`.pickRestart({
  A: "~@23 e4", B: "a4@8 g4@4 a#4@3 e4@5 c4 d4@3", C: "e4@2 c4 d4@2 c4 e4@3 c4@2 d4 c4@2 e4@4 ~@6",
  D: "[e4,g4]@10 ~ [e4,g4]@6 [f4,a4]@4 [c4,e4]@3", E: "[e4,g4]@12 [f4,a4]@2 [e4,g4]@3 ~@7",
  F: "~@3 [d#4,g4,a#4]@2 [d4,f4,a4]@7 [c4,e4,g4]@3 [a3,c4,e4]@3 ~@6", // D# Dm C Am
  G: "[~@3 [d#4,g4,a#4]@2 [d4,f4,a4]@6 [c4,e4,g4]@10 [a3,d4,f4]@2 [g3,c4,e4]@3 ~@22]/2", // D# Dm C Dm C
  H: "~@2 [e3,a#3,c4]@3 [f3,d4] [g3,c4,e4]@2 e3 [f3,d4]@2 [e3,c4] [g3,c4,e4]@6 [f3,a#3,d4]@2 e3 [g3,e4]@3, ~@2 a#3 ~@2 c4", // C7 Dm C Dm C A# C
  I: "~@9 [e3,a#3,c4]@2 [f3,d4] [g3,c4,e4]@2 e3 [f3,d4]@2 e3 [g3,e4]@6, ~@14 a#3@3 c4@7", // C7 Dm C Dm C
  J: "[e4,g4]@9 ~@2 [e4,g4]@6 [f4,a4]@4 [c4,e4]@3", K: "[e4,g4]@11 [f4,a4]@3 [e4,g4]@2 ~@8",
  L: "~@2 [e3,g3,c4] [f3,a3,d4]@2 [e3,c4] [a#3,e4]@2 [e3,c4] [f3,a3,d4]@2 [e3,c4] [a#3,e4]@6 [f3,a3,d4]@2 [e3,c4] [a#3,e4]@2 ~, ~@5 g3@4 ~@2 g3@7 ~@2 g3@3 ~", // C Dm C A#dim C Dm C A#dim …
  M: "[g3,a#3,e4]@2 [e3,g3,c4] [f3,a3,d4]@2 [g3,a#3,e4]@3 [e3,c4] [f3,a3,d4]@2 [e3,c4] [a#3,e4]@2 [e3,c4] [f3,a3,d4]@2 [e3,c4] [a#3,e4]@5 ~, ~@11 g3@4 ~@2 g3@6 ~", // Edim C Dm Edim C Dm C A#dim …
})).s("gm_epiano1").gain(0.27).pan(0.7)

// other · distortion guitar · "DISTORTION"
const distortion_guitar = note("<~@64 [~@18 d#5@5 ~] ~@20>").s("gm_distortion_guitar").gain(0.44).pan(0)

// other · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note("<~@37 A B C D ~@16 E F G H@2 I@3 ~@20>".pickRestart({
  A: "c4 ~@2 c4@2 ~ a#3@4 ~ f3 ~@2 d#3@9 ~", B: "f3 ~@2 f3@2 ~ d#3@2 c3 ~@2 c3@7 g2 ~@5",
  C: "~@6 c4 ~ a#3 ~@2 c4 ~@2 a#4@7 g4 ~@2", D: "~@3 [c4,g4]@2 ~ f4@2 ~@3 c4@7 ~@6",
  E: "f4@5 ~ c5 ~ a#4 ~@2 d#4 ~@6 c5 ~@2 a#4@2 d#4, ~@14 c4@7 ~@3", F: "c4@11 ~@7 c5@2 a#4 ~@2 d#5",
  G: "~@2 d#5@9 ~@4 d#5@2 ~ d5 ~ c5 ~@2 a#4",
  H: "[~@2 c5@6 ~ a#4 ~@2 a#4 g4 f4 d#4@2 ~ c4@3 d#4 ~ c4@4 d#4 ~@10 g4 f4 ~ d#4 g4 f4 d#4 ~@3]/2",
  I: "[c4@3 a#3 ~ g3 a#3 ~@2 c4 ~@2 d#4@2 ~ d4 ~@2 a#3@2 ~ c4 ~ c4@4 a#3 ~@4 g3@2 ~ a#3 g3@2 ~ a#3 ~@2 d#4 ~ c4 a#3 ~ g3@4 a#3 ~@2 c4 ~@4 c4@9 ~@4]/3",
})).s("gm_electric_guitar_jazz").gain(0.33).pan(0.3)

// other · electric guitar jazz · "JAZZ GTR" · soft notes
const electric_guitar_jazz_2 = note("<~@39 A B ~@16 C ~@3 D E F G ~@20>".pickRestart({
  A: "~@11 g3 ~@12", B: "~@6 c4@2 d#4 ~@2 g3@7 ~@6", C: "~@22 g4 ~", D: "~@21 c4 ~@2", E: "~@11 g3 ~@2 g3 ~@3 c4@2 ~@4",
  F: "~@17 g3 ~@6", G: "~@8 a#3 ~@15",
})).s("gm_electric_guitar_jazz").gain(0.11).pan(0.3)

// chords · brass section · "BRASS 1" · Am Gm F Edim C Gm F Edim …
const brass_section = note(`<
  ~@81
  [~@3 [c4,e4,a4]@2 [d4,g4,a#4] ~@2 [d4,g4,a#4] [c4,f4,a4] ~@2 [a#3,e4,g4] ~@2 [g3,c4,e4] ~@8]
  [~@2 [c4,e4,g4]@3 [d4,g4,a#4] ~@2 [c4,f4,a4] ~@2 [a#3,e4,g4]@6 [g3,c4,e4] [a#3,d4,f4]@2 [c4,e4,g4] [a#3,d4,f4]@2 [g3,c4,e4]]
  [~@3 [d4,g4]@2 [e4,a4] [g4,c5]@2 [e4,a4] [d4,g4]@2 [e4,a4] [g4,c5] ~@2 [g4,c5] ~@2 [d4,g4]@2 a4 [g4,c5] ~@2, ~@10 e4 ~]
  [[g4,c5] ~@2 [d4,g4]@2 [g4,c5] ~@2 [e4,a4] ~@2 [d4,g4] [g4,c5] ~ [e4,a4] [d4,g4]@2 [e4,a4] [g4,c5] ~@2 [g4,c5] ~@2]
>`).s("gm_brass_section").gain(0.38).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  ~
  [x ~@2 x ~@4 x ~@2 x!2 ~@10 x]!64
  [~@3 x ~@4 x ~@2 x!2 ~@10 x]!2
  [x ~@2 x ~@4 x ~@2 x!2 ~@10 x]!17
  [x ~@2 x ~@4 x ~@2 x!2 ~@11]
>`).gain(0.44)

// drums · snare
const snare = s("sd").struct(`<
  ~
  [~ x ~ x]!15
  [~@2 x ~@3 x ~@10 x ~@6]
  [~ x ~ x]!47
  [~@2 x ~@3 x ~@10 x ~@6]
  [~ x ~ x]!19
  [~@2 x ~@3 x!2]
>`).gain(0.44)

// drums · hihat
const hihat = s("hh").struct("<~ A@15 B A@23 B A@23 B A@16 ~@4>".pickRestart({
  A: "x!8", B: "x!6 ~@2",
})).gain(0.33)

// drums · low tom
const low_tom = s("lt").struct("<~@16 [~@17 x ~@5 x] ~@23 [~@17 x ~@6] ~@23 [~@17 x ~@5 x] ~@20>").gain(0.33)

// drums · mid tom
const mid_tom = s("mt").struct("<~@16 [~@18 x ~ x!2 ~@2] ~@23 [~@18 x ~ x ~@2 x] ~@23 [~@20 x!2 ~@2] ~@20>").gain(0.38)

// drums · high tom
const high_tom = s("ht").struct("<~@16 [~@3 x] ~@23 [~@7 x] ~@23 [~@3 x] ~@20>").gain(0.44)

// drums · crash
const crash = s("cr").struct("<~@17 A ~@23 A ~@23 A ~@15 B ~ C ~>".pickRestart({
  A: "x", B: "x ~@2 x", C: "~@3 x",
})).gain(0.27)

// drums · ride
const ride = s("rd").struct("<~@81 [~ x!5 ~ x] [x!8] [x!6 ~ x] [x!6 ~@2]>").gain(0.27)

stack(
  electric_guitar_muted, bass, rock_organ, rock_organ_soft, epiano1, distortion_guitar, electric_guitar_jazz,
  electric_guitar_jazz_2, brass_section, kick, snare, hihat, low_tom, mid_tom, high_tom, crash, ride
)

More by The Pointer Sisters