Strudelify
Fresh cover art

All Star Party

Fresh

Kool & The Gang

KeyB minorTempo118 bpm
0:00/0:00
// Fresh — Kool & The Gang
// 118 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 8 "MELODY 2" music box (copy of ch 1 "MELODY 1" piano); ch 4 "SYNBRASS 2" synth brass 1 (copy of ch 3 "SYNBRASS 1" synth brass 1)
// note: Full arrangement: all 106 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(118/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 1 · "SLAPBASS 1"
const bass = note(`<
  ~ A B C D E F G H I B G J I K G L I F M N I O G P I F M N Q F R@8 G S I B G J I F G P I F M N Q F G T G U G V W X G Y
  Z AA AB N AC AD AE AF AG AH AI AJ AK AL AE AM Z AA AB N AC AD AE AF AG AH AI AJ AK AL AE AM I F M N Q F G T AN
>`.pickRestart({
  A: "b1 ~ b1 ~ b1 ~ b1 ~ b1@3 ~ b1 ~ b1 ~", B: "a1 ~ b1 ~ b1 ~@3 b1 ~ b1 ~ a1 ~ a1 ~",
  C: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ a1 ~", D: "f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~",
  E: "b1 ~ b1 ~ b1 ~ b1 ~ b1@2 ~@2 b1 ~ b1 ~", F: "a1 ~ b1 ~ b1 ~@3 b1 ~ b1 ~ a1 ~ a1 d2",
  G: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~", H: "a1 ~ a1 ~ a1 ~ a1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~",
  I: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~@3 b1 ~ b1 ~", J: "f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ a1 ~ c#2 ~",
  K: "a1 ~ b1 ~ b1 ~@3 b1 ~ c#2 ~ d2 ~ a1 ~", L: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ f#1 ~",
  M: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ e1 ~", N: "f#1 ~ f#1 ~ f#1 ~ f#1 ~ e2 f#2 f#1 ~ f#1 ~ f#1 ~",
  O: "a1@2 b1 ~ b1 ~@3 b1 ~ b1 ~ a1 ~ a1 d2", P: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ f#1 ~ f#1 ~",
  Q: "b1 ~ b1 ~ b1 ~ b1 ~ b1@2 ~@4 b1 ~",
  R: "[g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 f#1 b1 ~ b1 ~ b1 ~ b1 ~ b1 ~@3 b1 ~ b1 ~ a1 ~ b1 ~ b1 ~@3 b1 ~ b1 ~ a1 ~ a1 d2 g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ e2 f#2 ~ e2 f#2 ~ f#1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~@3 b1 ~ b1 ~ a1 ~ b1 ~ b1 ~@3 b1 ~ b1 ~ a1 ~ a1 d2, ~@3 [c-1,a#4,d7,d8]@29]/8", // Gm
  S: "a1 ~ a1 ~ a1 ~ a1 ~ a1@2 f#1@2 g1@2 a1 ~", T: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 f#1",
  U: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1@2 f#1@2", V: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ b1@2 a1@2",
  W: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1@2", X: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1@2",
  Y: "f#1 ~ f#1 ~ e2 f#2 f#1 ~ e2 f#2 f#1 ~ e2 f#2 f#1 ~", Z: "b1 ~ [b1,b2] ~ b1 ~ b1 ~ b1 ~ b2 ~ b1 b2 b1 ~",
  AA: "a1 ~ b1 ~ b1 ~@3 b1 ~ [b1,b2] ~ a1 ~ a1 d2", AB: "g1 ~ g1 ~ g1 ~ g1 ~ g1 g2 g1 ~ [g1,g2] ~ e1 ~",
  AC: "b1 ~ b1 ~ b1 b2 b1 ~@2 b2 ~@4 b1 ~, ~@4 b1 ~@3", AD: "a1 ~ b1 ~ b1 ~ b2 ~ b1 b2 b1 ~ a1 ~ a1 d2",
  AE: "g1 ~ g1 ~ g1 ~ g1 ~ g1 e3 [g1,f#3] ~ g1 ~ g1 ~", AF: "a1 g2 a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 f#1",
  AG: "b1 ~ b1 ~ b1 ~ [b1,b2] ~ b1 ~@3 b1 ~ b1 b2", AH: "a1 b2 b1 ~ b1 ~@3 b1 b2 b1 ~ a1 ~ a1 d2",
  AI: "g1 ~ g1 ~ g1 ~ [g1,g2] ~ g1 g2 g1 ~ g1 ~ e1 ~", AJ: "f#1 ~ f#1 ~ f#1 ~ [f#1,a2] ~ e2 [f#2,a2] f#1 ~ f#1 ~ f#1 ~",
  AK: "b1 ~ b1 ~ b1 ~ b1 ~@2 b2 ~@3 b2 b1 ~, ~@4 b1 ~@3", AL: "a1 ~ b1 ~ b1 ~@3 b1 ~ [b1,b2] ~ a1 b2 a1 d2",
  AM: "a1 ~ a1 ~ a1 ~ a1 ~ a1 e2 [a1,f#2] ~ a1 ~ a1 f#1", AN: "b1 ~@3",
})).s("gm_slap_bass_1").gain(0.64)

// chords · synth brass 1 · "SYNBRASS 1"
const synth_brass_1 = note(`<
  ~@33 A B C D E F G H A B C D E F G H A B C D E F G H I J I K L M N O A B C D E F G H A B C D E F G H A B C D E F G H A
  B C D E F G H A B C D E F G H ~
>`.pickRestart({
  A: "~@2 [d4,f#4,b4] ~ f#4 [d4,f#4,b4] ~@2 [d4,f#4,b4] ~@2 [d4,f#4,b4]@2 ~ [d4,f#4,b4] ~", // Bm
  B: "~@2 [d4,f#4,b4] ~@2 [d4,f#4,b4] ~@2 [d4,f#4,b4] ~@2 [d4,f#4,b4]@3 [d4,f#4,b4] ~", // Bm
  C: "~@2 [d4,g4,b4] ~@2 [d4,g4,b4] ~@2 [d4,g4,b4] ~@2 [d4,g4,b4]@2 ~ [d4,g4,b4] ~", // G
  D: "~@2 [e4,a4,c#5] ~ [a4,c#5] [e4,a4,c#5] ~@2 [e4,a4,c#5] ~@2 [e4,a4,c#5]@2 ~ [e4,a4,c#5] ~", // A
  E: "~@2 [d4,f#4,b4] ~@2 [d4,f#4,b4] ~@2 [d4,f#4,b4] ~ f#4 [d4,f#4,b4]@2 ~ [d4,f#4,b4] ~", // Bm
  F: "~@2 [d4,f#4,b4] ~ d4 [d4,f#4,b4] ~@2 [d4,f#4,b4] ~@2 [d4,f#4,b4]@3 [d4,f#4,b4] ~", // Bm
  G: "~@2 [d4,g4,b4] ~ g4 [d4,g4,b4] ~@2 [c4,d4,g4,b4] ~@2 [d4,g4,b4]@2 ~ [d4,g4,b4] ~", // G
  H: "~@2 [e4,a4,c#5] ~ c#5 [e4,a4,c#5] ~@2 [e4,a4,c#5] ~@2 [e4,a4,c#5]@2 ~ [e4,a4,c#5] ~", // A
  I: "~@2 [b4,d5,g5] ~@2 [b4,d5,g5] ~@2 [b4,d5,g5] ~@2 [b4,d5,g5]@3 [b4,d5,g5] ~", // G
  J: "~@2 [c#5,e5,a5] ~@2 [c#5,e5,a5] ~@2 [c#5,e5,a5] ~@2 [c#5,e5,a5]@3 [c#5,e5,a5] ~", // A
  K: "~@2 [a4,c#5,e5] ~@2 [a4,c#5,e5] ~@2 [a4,c#5,e5] ~@2 [a4,c#5,e5]@3 [a4,c#5,e5] ~", // A
  L: "~@2 [b4,d5,g5] ~@2 [b4,d5,g5] ~@2 [b4,d5,g5] ~@2 [b4,d5,g5]@2 ~ [b4,d5,g5] ~", // G
  M: "~@2 [a4,c#5,e5] ~@2 [a4,c#5,e5] ~@2 [a4,c#5,e5] ~@2 [a4,c#5,e5]@2 ~ [a4,c#5,e5] ~", // A
  N: "~@2 [b4,d5,g5] ~@2 [b4,d5,g5] ~@2 [b4,d5,g5] ~@2 [b4,d5,g5] ~@2 [b4,d5,g5] ~", O: "[a#4,d5,f#5,a5]@15 ~",
})).s("gm_synth_brass_1").gain(0.25)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~ A B C D E F G H I J K L J@2 M N O@2 P Q O@2 P Q R S P Q O@2 P Q O@2 P Q O@2 P Q O@2 P Q O@2 P Q R S P Q O@2 T Q U V
  U W U W U X R S P Q O@2 T Q R S P Q O@2 T Q R S P Q O@2 T Q R S P Q O@2 T Q R S P Q O@2 T Q ~
>`.pickRestart({
  A: "~@2 [d4,f#4,b4] ~ f#4 [d4,f#4,b4] ~@2 [d4,f#4,b4] ~@2 [d4,f#4,b4]@2 ~ [d4,f#4,b4] ~", // Bm
  B: "~@2 [d4,f#4,b4] ~@2 [d4,f#4,b4] ~@2 [d4,f#4,b4] ~@2 [d4,f#4,b4]@3 [d4,f#4,b4] ~", // Bm
  C: "~@2 [d4,g4,b4] ~@2 [d4,g4,b4] ~@2 [d4,g4,b4] ~@2 [d4,g4,b4]@2 ~ [d4,g4,b4] ~", // G
  D: "~@2 [e4,a4,c#5] ~ [a4,c#5] [e4,a4,c#5] ~@2 [e4,a4,c#5] ~@2 [e4,a4,c#5]@2 ~ [e4,a4,c#5] ~", // A
  E: "~@2 [d4,f#4,b4] ~@2 [d4,f#4,b4] ~@2 [d4,f#4,b4] ~ f#4 [d4,f#4,b4]@2 ~ [d4,f#4,b4] ~", // Bm
  F: "~@2 [d4,f#4,b4] ~ d4 [d4,f#4,b4] ~@2 [d4,f#4,b4] ~@2 [d4,f#4,b4]@3 [d4,f#4,b4] ~", // Bm
  G: "~@2 [d4,g4,b4] ~ g4 [d4,g4,b4] ~@2 [c4,d4,g4,b4] ~@2 [d4,g4,b4]@2 ~ [d4,g4,b4] ~", // G
  H: "~@2 [e4,a4,c#5] ~ c#5 [e4,a4,c#5] ~@2 [e4,a4,c#5] ~@2 [e4,a4,c#5]@2 ~ [e4,a4,c#5] ~", // A
  I: "~@2 [d4,f#4,b4] ~@2 [d4,f#4,b4] ~@2 [d4,f#4,b4] ~@2 [d4,d#4,f#4,b4]@2 ~ [d4,f#4,b4] ~", // Bm B Bm
  J: "~@2 [d4,f#4,b4] ~@2 [d4,f#4,b4] ~@2 [d4,f#4,b4] ~@2 [d4,f#4,b4]@2 ~ [d4,f#4,b4] ~", // Bm
  K: "~@2 [d4,g4,b4] ~@2 [d4,g4,b4] ~@2 [d4,g4,b4] ~@2 [c4,d4,g4,b4]@2 ~ [d4,g4,b4] ~", // G
  L: "~@2 [e4,a4,c#5] ~ [a4,c#5] [e4,a4,c#5] ~@2 [d#4,e4,a4,c#5] ~ d#4 [e4,a4,c#5]@2 ~ [e4,a4,c#5] ~", // A
  M: "~@2 [d4,g4,b4] ~@2 [d4,g4,b4] ~@2 [d4,g4,b4] ~ d4 [d4,g4,b4]@2 ~ [d4,g4,b4] ~", // G
  N: "~@2 [e4,a4,c#5] ~ [a4,c#5] [e4,a4,c#5] ~@2 [e4,a4,c#5] ~ c#5 [e4,a4,c#5]@2 ~ [e4,a4,c#5] ~", // A
  O: "~@2 [d4,f#4,b4] ~@2 [d4,f#4,b4]!2 ~ [d4,f#4,b4] ~ [d4,f#4,b4] [d4,f#4,b4]@2 ~ [d4,f#4,b4] ~", // Bm
  P: "~@2 [d4,g4,b4] ~@2 [d4,g4,b4]!2 ~ [d4,g4,b4] ~ [d4,g4,b4] [d4,g4,b4]@2 ~ [d4,g4,b4] ~", // G
  Q: "~@2 [e4,a4,c#5] ~@2 [e4,a4,c#5]!2 ~ [e4,a4,c#5] ~ [e4,a4,c#5] [e4,a4,c#5]@2 ~ [e4,a4,c#5] ~", // A
  R: "d5 e5 [d4,f#4,b4] d5 ~ [d4,f#4,b4] [d4,f#4,b4,d5,f#5]@2 [d4,f#4,b4] ~ [d4,f#4,b4,d5] [d4,f#4,b4,e5]@2 d5 [d4,f#4,b4] ~", // Bm
  S: "b4 a4 [d4,f#4,b4] b4 ~ [d4,f#4,b4]!2 ~ [d4,f#4,b4] ~ [d4,f#4,b4] [d4,f#4,b4]@2 ~ [d4,f#4,b4] ~", // Bm
  T: "~@2 [d4,g4,b4] ~@2 [d4,g4,b4]!2 ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [g3,b3,d4]@2 [d4,g4,b4] ~, ~@11 [d4,g4,b4]@2 ~@3", // G
  U: "~@2 [b4,d5,g5] ~@2 [b4,d5,g5] ~@2 [b4,d5,g5] ~@2 [b4,d5,g5] ~@2 [b4,d5,g5] ~", // G
  V: "~@2 [a4,c#5,e5] ~@2 [a4,c#5,e5] ~@2 [a4,c#5,e5] ~@2 [a4,c#5,e5] ~@2 [a4,c#5,e5] ~", // A
  W: "~@2 [c#5,e5,a5] ~@2 [c#5,e5,a5] ~@2 [c#5,e5,a5] ~@2 [c#5,e5,a5] ~@2 [c#5,e5,a5] ~", X: "[a#4,d5,f#5,a5]@3 ~",
})).s("gm_electric_guitar_muted").gain(0.48)

// chords · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
  ~@25 A@2 B C D@2 B E ~@5 F@2 ~@9 G@2 B C D@2 B E H I J K L I H M G@2 B C D@2 B E G@2 B C D@2 B E G@2 B C D@2 B E G@2 B
  C D@2 B E G@2 B C D@2 B E ~
>`.pickRestart({
  A: "[~ e5 ~ d5@3 d5@4 ~@9 b4@2 f#4 ~@4 c#6@2 d6@2 a6@2, f#4@16 b4 a4@4 ~@11, b4@6 b4@7 d5@8 ~@11, d5@3 ~@3 f#5@15 ~@3 b5@4 ~@4, ~@10 d5 e5@10 ~@11]/2",
  B: "[g3,b3,d4,f#6]", C: "[a3,c#4,e4,a5]@7 [b5,c#6,e6] [e5,a5]@7 ~",
  D: "[d5 e5 ~ d5 ~@2 [b4,d5,f#5]@2 ~ d5 e5 ~ d5 ~ b4 ~ a4 b4 ~ f#4 ~@4 b5@2 c#6@2 d6@2 a6@2, [f#3,b3,d4]@31 ~]/2", // Bm
  E: "[a3,c#4,e4]@13 ~@3", // A
  F: "[~@8 a6 ~@3 e6 ~ d6 ~ b5@10 ~@6, ~@9 b6@17 ~@6, ~@5 a6@8 ~@3, ~@11 f#6@2 f#6@14 ~@5, ~@13 e6@2 [d6,e6]@11 ~@6]/2", // Dsus2
  G: "[d5 e5 ~ d5@3 d5@4 ~@9 b4@2 f#4 ~@4 c#6@2 d6@2 a6@2, ~@6 f#5@15 ~@3 b5@4 ~@4, ~@6 b4@10 b4 a4@4 ~@11, ~@10 d5@3 d5@8 ~@11, ~@11 e5@10 ~@11]/2",
  H: "[g4,b4,d5,f#5]", I: "[a4,c#5,e5]", J: "~@3 f#6, [g4,b4,d5,f#5], ~ b5", K: "~@3 b6, [a4,c#5,e5,e6], ~ a6",
  L: "[g4,b4,d5,f#6]", M: "[a#4,d5,f#5,a5]@7 ~",
})).s("gm_epiano1").gain(0.33)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  ~@41 A@2 B C D@2 E F A@2 B C D@2 E G H I J I J K L M A@2 B C D@2 E F A@2 B C D@2 E F A@2 B C D@2 E F A@2 B C D@2 E F
  A@2 B C D@2 E F N
>`.pickRestart({
  A: "[d4,f#4,b4]/2", B: "[d4,g4,b4]", C: "[e4,a4,c#5]@15 ~", D: "[f#4,b4,d5]/2", E: "~@12 f#5@3 ~, [d4,g4,b4]",
  F: "[a4,c#5,e5]@15 ~", G: "~@3 a5, [a4,c#5,e5]@15 ~", H: "[b4,d5,f#5]", I: "[a4,c#5,e5]", J: "[g4,b4,d5]",
  K: "[a4,c#5]", L: "[g4,b4,d5]@15 ~", M: "[a#4,d5,f#5]", N: "[d4,f#4,b4]@13 ~@3",
})).s("gm_string_ensemble_2").gain(0.26)

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

// drums · snare
const snare = s("sd").struct("<[~@3 x] [~ x ~ x]!104 ~>").gain(0.4)

// drums · clap
const clap = s("cp").struct("<[~@3 x] [~ x ~ x]!104 ~>").gain(0.53)

// drums · hihat
const hihat = s("hh").struct("<[~@3 x] [x!8]!104 ~>").gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@3 A ~@3 A ~@7 A ~@7 A ~@3 A ~@3 A ~@7 A ~@7 A ~@3 A ~@3 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A
  ~@3 A ~@4
>`.pickRestart({
  A: "x",
})).gain(0.6)

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

stack(
  bass, synth_brass_1, electric_guitar_muted, epiano1, string_ensemble_2, kick, snare, clap, hihat, crash, tambourine
)

More by Kool & The Gang