Strudelify

Every 1's a Winner

Hot Chocolate

KeyF majorTempo120 bpm
0:00/0:00
// Every 1's a Winner — Hot Chocolate
// 120 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 114 bars on a 16-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.

// bass · slap bass 2 · "SLAP BASS"
const bass = note(`<
  ~ A@4 B C A@2 B C A@5 D@3 A E B A B A B A B C A@2 B C A@2 B C A@5 D@3 A E B A B A B A B C A@2 B C A@2 B C A@9 B C A@2
  B C A@2 B A B A B A B C A@2 B C A@2 B C A@2 B C A@2 B C A F ~@8
>`.pickRestart({
  A: "f1!2 f2!2 f1!2 f2!2 f1!2 f2!2 f1!2 f2!2", B: "eb1!2 eb2!2 eb1!2 eb2!2 eb1!2 eb2!2 eb1!2 eb2!2",
  C: "bb1!2 bb2!2 bb1!2 bb2!2 bb1!2 bb2!2 bb1!2 bb2!2",
  D: "[f1!2 f2!2 f1!2 f2!2 [f1,bb2] [f1,c3] f2!2 f1!2 f2!2 f1!2 f2!2 f1!2 f2!2 f1!2 f2!2 f1!2 f2!2 f1!2 f2!2 f1!2 f2!2 f1!2 f2!2 f1!2 f2!2, ~@7 f4@16 ~, ~@15 [c4,eb4]@32 ~, ~ f3@2]/3", // Bb5 F5 Cm
  E: "f1!2 f2!2 f1!2 f2!2 [f1,bb2] [f1,c3] f2!2 f1!2 f2!2", F: "f1!2 f2!2 f1!2 f2!2 f1!2 f2!2 eb1!2 [e1,e2] [f1,f2]",
})).s("gm_slap_bass_2").gain(0.35)

// chords · synth brass 1 · "SYNTHBRASS"
const synth_brass_1 = note(`<
  ~@21 A B A C A B D E ~@18 A B A C A B D E ~@8 F G ~@6 H ~@2 I J ~@2 K ~ L M L N A C D E ~@9 O ~@2 I J ~@2 P Q ~@8
>`.pickRestart({
  A: "[eb4,g4] [bb3,d4,f4] [eb4,g4] [bb3,d4,f4] [eb4,g4] ~@11", B: "[a3,f4] [g3,c4,e4] [a3,f4] [g3,c4,e4] [a3,f4] ~@11",
  C: "[f4,a4] [c4,e4,g4] [f4,a4] [c4,e4,g4] [f4,a4] ~@11", // F C F C F
  D: "[eb4,g4,eb5] [bb3,d4,f4,d5] [eb4,g4,eb5] [bb3,d4,f4,d5] [eb4,g4,eb5] ~@11", E: "~ [bb3,d4,f4,bb4,d5,f5]@3",
  F: "~ [f3,c4,f4,c5,f5]@3", // F5
  G: "[f3,c4,f4,c5,f5]@4 [f3,c4,f4,c5,f5]@4 [c4,c5,c6]@2 [c4,f4,c5,f5] ~ [bb3,eb4,bb4,eb5] [c4,f4,c5,f5] ~@2", // F5 C F5 Eb5 F5
  H: "[c4,f4,f5] ~ [c4,f4,f5] ~ [c4,f4,f5] ~ [c4,f4,f5] ~ [c4,f4,f5] ~ [c4,f4,f5] ~ [c4,f4,f5] ~ [c4,f4,f5] ~", // F5
  I: "~@2 [f4,a4,f5]@2 [c4,f4,c5] ~@3 [f4,a4,f5]@2 [c4,f4,c5] ~@3 [f4,a4,f5,a5]@2", // F F5 F F5 F
  J: "[c4,f4,c5,f5] ~@3 [f4,a4,f5,a5]@2 [c4,f4,c5,f5] ~ [f4,a4,f5,a5]@2 [c4,f4,c5,f5] ~ [bb3,eb4,bb4,eb5] [c4,f4,c5,f5] ~@2", // F5 F F5 F F5 Eb5 F5
  K: "~@7 [g4,g5] [a4,a5] ~ [c5,c6] ~ [f5,f6]@4", L: "g4 f4 g4 f4 g4 ~@11", M: "f4 e4 f4 e4 f4 ~@11",
  N: "a4 g4 a4 g4 a4 ~@11",
  O: "[eb4,bb4,eb5,bb5] [d4,a4,d5,a5] [eb4,bb4,eb5,bb5] [d4,a4,d5,a5] [eb4,bb4,eb5,bb5] ~ [d4,a4,d5,a5] ~ [c4,f4,c5,f5]@4 [c4,eb4,c5,eb5]@4", // Eb5 D5 Eb5 D5 Eb5 D5 F5 Cm
  P: "~@4 [f4,a4,f5,a5]@2 [c4,f4,c5,f5] ~ [f4,a4,f5,a5]@2 [c4,f4,c5,f5] ~ [bb3,eb4,bb4,eb5] [c4,f4,c5,f5] ~@2", // F F5 F F5 Eb5 F5
  Q: "~@4 [f4,a4,f5,a5]@2 [c4,f4,c5,f5] ~ [f4,a4,f5,a5]@2 [c4,f4,c5,f5] ~ [eb2,eb3,bb3,eb4,bb4,eb5] ~ [e2,e3,b3,e4,b4,e5] [f2,f3,c4,f4,c5,f5]", // F F5 F F5 Eb5 E5 F5
})).s("gm_synth_brass_1").gain(0.3)

// chords · synth brass 1 · "SYNTHBRASS" · soft notes
const synth_brass_1_soft = note("<~@24 A ~@25 A ~@27 B ~ C D C E ~@30>".pickRestart({
  A: "a3 g3 a3 g3 a3 ~@11", B: "~@7 g3 a3 ~ c4 ~ f4@4", C: "eb4 [bb3,d4] eb4 [bb3,d4] eb4 ~@11",
  D: "a3 [g3,c4] a3 [g3,c4] a3 ~@11", E: "[a3,f4] [g3,c4,e4] [a3,f4] [g3,c4,e4] [a3,f4] ~@11",
})).s("gm_synth_brass_1").gain(0.1)

// other · marimba · C Bb C Bb C Bb G
const marimba = note(`<
  ~@65
  [[c4,c5]!2 ~ [c4,c5]!2 ~ [bb3,bb4] ~ [c4,c5]!2 ~ [bb3,bb4] [c4,c5] [bb3,bb4] [g3,g4] ~]!7
  ~@42
>`).s("gm_marimba").gain(0.3)

// other · clavinet
const clavinet = note("<~@65 [~@2 f4 ~ eb4 f4 ~ c4 ~@2 eb4 ~@4 c4]!6 [~@2 f4 ~ eb4 f4 ~ c4 ~@2 eb4 ~@5] ~@42>")
  .s("gm_clavinet").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~ [x!2]!104 [x ~@7 x ~@5 x!2] ~@8>").gain(0.5)

// drums · snare
const snare = s("sd").struct("<~ A@3 B A@7 B A@7 B A@9 B A@7 B A@7 B A@9 B A@7 B A@6 C A@17 B A@15 B ~@8>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~ x!2", C: "x!8",
})).gain(0.5)

// drums · hihat
const hihat = s("hh").struct("<~ [x!16]!105 ~@8>").gain(0.25)

// drums · crash
const crash = s("cr").struct("<~@5 A ~@3 A ~@21 A ~@3 A ~@21 A ~@3 A ~@10 A ~@3 A ~@13 A ~@7 A ~@15>".pickRestart({
  A: "x",
})).gain(0.05)

// drums · tambourine
const tambourine = s("tb").struct("<~ [x!4]!104 [x ~@3 x ~@3 x ~@3 x ~ x!2] ~@8>").gain(0.2)

// drums · congas
const congas = s("conga:33").struct("<~@5 [~@6 x!2 ~@8]!101 ~@8>").gain(0.16)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~ [x ~ x!3 ~ x!3 ~ x!3 ~ x!2]!105 ~@8>").gain(0.75)

// drums · cabasa · soft notes
const cabasa_soft = s("cabasa:4").struct("<~ [~ x ~@3 x ~@3 x ~@3 x ~@2]!105 ~@8>").gain(0.5)

stack(
  bass, synth_brass_1, synth_brass_1_soft, marimba, clavinet, kick, snare, hihat, crash, tambourine, congas, cabasa,
  cabasa_soft
)

More by Hot Chocolate