Strudelify
Get Down On It cover art

Something Special

Get Down On It

Kool & The Gang

KeyE minorTempo110 bpm
0:00/0:00
// Get Down On It — Kool & The Gang
// 110 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 134 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(110/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 · synth bass 1 · "SYN BASS 1"
const bass = note(`<
  ~@9 A B C D E@2 F@2 E@2 G@2 H@2 F@2 E@2 G@2 I@2 F@2 E@2 G@2 I@2 F@2 E@2 G@2 H@2 F@2 E@2 G@2 E@2 F@2 E@2 G@2 A B C D A
  B C D E@2 F@2 E@2 G@2 H@2 F@2 E@2 G@2 H@2 F@2 E@2 G@2 E@2 F@2 E@2 G@2 A B C D A B C D E@2 F@2 E@2 G@2 E@2 F@2 E@2 G@2
  E@2 F@2 J@2 G@2 K
>`.pickRestart({
  A: "e2@7 ~ b1@4 c2@4", B: "d2@5 ~@3 a1@4 b1@4", C: "e1@3 ~ b1@2 c2@2", D: "d2@3 ~@5",
  E: "[e2@6 ~@2 b1@2 ~ b1@3 a1@8 ~@2 a1@4 b1@4]/2", F: "[e1@7 ~ b1@2 ~ b1@3 d2@8 ~@2 d2@3 ~ d2@3 ~]/2",
  G: "[e1@7 ~ b1@2 ~ b1@3 d2@8 ~@2 d2@3 ~ d2@2 ~@2]/2", H: "[e2@3 ~@5 b1@2 ~ b1@3 a1@8 ~@2 a1@4 b1@4]/2",
  I: "[e2@5 ~@3 b1@2 ~ b1@3 a1@8 ~@2 a1@4 b1@4]/2", J: "[e2@6 ~@5 b1@3 a1@8 ~@2 a1@4 b1@4]/2", K: "e2@13 ~@3",
})).s("gm_synth_bass_1").gain(0.59)

// chords · brass section · "BRASS 1"
const brass_section = note(`<
  ~@8 A ~@3 B ~@3 B ~@15 B ~@23 C ~@7 D ~@3 B ~@3 B ~@23 B ~@7 D ~@3 B ~@3 B ~@7 B ~@7 B ~@5
>`.pickRestart({
  A: "~@10 [a4,c5,e5,g5]!4 ~@2", B: "~@8 [a4,d5] ~@3 [a4,d5] ~@3", C: "~@4 [a4,d5] ~ [a4,d5] ~",
  D: "~@2 [a4,c5,e5,g5]!4 ~@10", // Am7
})).s("gm_brass_section").gain(0.5)

// chords · brass section · "BRASS 1"
const brass_section_2 = note(`<
  ~@9 A B C D E@2 F@2 G@2 H@2 E@2 I@2 G@2 H@2 E@2 J@2 G@2 K@2 E@2 F@2 G@2 K@2 E@2 L@2 G@2 M@2 E@2 F@2 G@2 M@2 A B C N A
  B C D E@2 J@2 G@2 H@2 E@2 I@2 G@2 K@2 E@2 I@2 G@2 H@2 E@2 J@2 G@2 H@2 A B C N A B C D E@2 J@2 G@2 H@2 E@2 J@2 G@2 H@2
  E@2 J@2 G@2 O@2 P
>`.pickRestart({
  A: "e4@3 ~@5 b3@4 c4@4", B: "d4@3 ~@5 a3@4 b3@4", C: "e3@3 ~@5 b3@4 c4@4", D: "d4 ~@3",
  E: "[~@2 [b4,e5,g5,b5] [a4,d5,f#5,a5] ~ [a4,d5,f#5,a5] [b4,e5,g5,b5] ~ [a4,d5,f#5,a5] ~@2 [d5,f#5,a5] ~@2 [a3,g4,c5,e5,g5]@4 [g4,c5,e5,g5]!2 ~ g4 [g4,c5,e5,g5] ~ [g4,c5,e5,g5]@2 ~@2 [b3,a4,d5,f#5,a5]@4, e4@5 ~@3 b3@2 ~ [b3,a4]@3 ~@10 a3@4 ~@4]/2", // Em D Em D Am7 C Bm7 B7
  F: "[~@2 [b4,e5,g5,b5] [a4,d5,f#5,a5] ~ [a4,d5,f#5,a5] [b4,e5,g5,b5] ~ [b3,a4,f#5]@2 ~ [d5,f#5,a5] ~@2 [d4,g4,c5,e5,g5]@6 ~@4 [d4,a4,c5,e5,g5]@2 ~@2 [d4,a4,c5,e5,g5]@4, e3@4 ~@4 [d5,a5] ~@2 [b3,a4]@3 ~@18]/2", // Em D Em B7 D C Am7 D5 …
  G: "[~@2 [b4,e5,g5,b5] [a4,d5,f#5,a5] ~ [a4,d5,f#5,a5] [b4,e5,g5,b5] ~ [b3,a4,d5,f#5,a5]@2 ~ [a4,d5,f#5,a5] ~@2 [g4,c5,e5,g5]@2 ~@2 [g4,c5,e5,g5]!2 ~ [g4,c5,e5,g5]!2 ~ [g4,c5,e5,g5]@2 ~@2 [b3,a4,d5,f#5,a5]@4, e4@4 ~@7 b3@3 a3@4 ~@6 a3@4 ~@4]/2", // Em D Em Bm7 D C Bm7
  H: "[~@2 [b4,e5,g5,b5] [a4,d5,f#5,a5] ~ [a4,d5,f#5,a5] [b4,e5,g5,b5] ~ [b3,a4,f#5,a5]@2 ~ [b3,a4,a5]@3 [g4,c5,e5,g5]@2 ~@2 [g4,c5,e5,g5]!2 ~ [g4,c5,e5,g5]!2 ~ [d4,a4,c5,e5,g5]@2 ~@2 [d4,a4,c5,e5,g5]@2 ~@2, e3@4 ~@4 d5 ~@2 [d5,f#5] ~@2 d4@6 ~@12]/2", // Em D Em B7 C Am7 D
  I: "[~@2 [b4,e5,g5,b5] [a4,d5,f#5,a5] ~ [a4,d5,f#5,a5] [b4,e5,g5,b5] ~ [b3,a4,f#5]@2 ~ [d5,f#5,a5] ~@2 [d4,g4,c5,e5,g5]@6 ~@4 [d4,a4,c5,e5,g5,a6]@2 ~@2 [d4,a4,c5,e5,g5]@4, e3@4 ~@4 [d5,a5] ~@2 [b3,a4]@3 ~@14 a5@2 ~@2]/2", // Em D Em B7 D C Am7 D5 …
  J: "[~@2 [b4,e5,g5,b5] [a4,d5,f#5,a5] ~ [a4,d5,f#5,a5] [b4,e5,g5,b5] ~ [d5,f#5,a5] ~@2 [d5,f#5,a5] ~@2 [d4,g4,c5,e5,g5]@6 ~@4 [d4,a4,c5,e5,g5]@2 ~@2 [d4,a4,c5,e5,g5]@4, e3@4 ~@4 [b3,a4]@2 ~ [b3,a4]@3 ~@18]/2", // Em D Em D C Am7 B7
  K: "[~@2 [b4,e5,g5,b5] [a4,d5,f#5,a5] ~ [a4,d5,f#5,a5] [b4,e5,g5,b5] ~ [b3,a4,f#5,a5]@2 ~ [b3,a4,a5]@3 [g4,c5,e5,g5]@2 ~@2 [g4,c5,e5,g5]!2 ~ [g4,c5,e5,g5]!2 ~ [d4,a4,c5,e5,g5,a6]@2 ~@2 [d4,a4,c5,e5,g5,a5]@2 ~@2, e3@4 ~@4 d5 ~@2 [d5,f#5] ~@2 d4@6 ~@12]/2", // Em D Em B7 C Am7 D
  L: "[~@2 [b4,e5,g5,b5] [a4,d5,f#5,a5] ~ [a4,d5,f#5,a5] [b4,e5,g5,b5] ~ [b3,a4,f#5]@2 ~ [d5,f#5,a5] ~@2 [d4,g4,c5,e5,g5]@6 ~@4 [d4,a4,c5,e5,g5,a6]@2 ~@2 [d4,a4,c5,e5,g5]@4, e3@4 ~@4 [d5,a5] ~@2 [b3,a4]@3 ~@14 a6@2 ~@2]/2", // Em D Em B7 D C Am7 D5 …
  M: "[~@2 [b4,e5,g5,b5] [a4,d5,f#5,a5] ~ [a4,d5,f#5,a5] [b4,e5,g5,b5] ~ [b3,a4,d5,f#5,a5]@2 ~ [b3,a4,a5]@3 [g4,c5,e5,g5]@2 ~@2 [g4,c5,e5,g5]!2 ~ [g4,c5,e5,g5]!2 ~ [d4,a4,c5,e5,g5]@2 ~@2 [d4,a4,c5,e5,g5]@2 ~@2, e3@4 ~@7 [d5,f#5] ~@2 d4@6 ~@12]/2", // Em D Em Bm7 B7 C Am7 D
  N: "d4@2 ~@2 a6 ~ a6 ~",
  O: "[~@2 [b4,e5,g5,b5] [a4,d5,f#5,a5] ~ [a4,d5,f#5,a5] [b4,e5,g5,b5] ~ [b3,a4,f#5,a5]@2 ~ [b3,a4,a5]@3 [g4,c5,e5,g5]@2 ~@2 [g4,c5,e5,g5]!2 ~ [g4,c5,e5,g5]!2 g5 [d4,a4,c5,e5,g5]@2 ~@2 [d4,a4,c5,e5,g5]@2 ~@2, e3@4 ~@4 d5 ~@2 [d5,f#5] ~@2 d4@6 ~@12]/2", // Em D Em B7 C Am7 D
  P: "[e5,g5,b5]@13 ~@3", // Em
})).s("gm_brass_section").gain(0.37)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@3 A B A B A B C D E F G H I@2 J K L@2 G H I@2 J K L@2 G H I@2 J K L@2 G H I@2 J K L@2 G H I@2 J K L@2 G H I@2 J K
  L@2 C D E F C D E F G H I@2 J K L@2 G H I@2 J K L@2 G H I@2 J K L@2 G H I@2 J K L@2 C D E F C D E F G H I@2 J K L@2 G
  H I@2 J K L@2 G H I@2 J K L@2 ~
>`.pickRestart({
  A: "~@2 [e4,g4,b4] ~ [e4,g4,b4]!2 ~@10", B: "~@2 [e4,g4,c5] [g4,c5] [e4,g4,c5]!2 ~@10",
  C: "~@2 [e4,g4,b4] [g4,b4] [e4,g4,b4]!2 ~@10", D: "~@2 [e4,g4,c5] [g4,c5]!2 [e4,g4,c5] ~@10",
  E: "~@2 [e4,g4,b4] [e4,g4] [g4,b4] [e4,g4,b4] ~@10", // Em G Em
  F: "~@2 [e4,g4,c5] [e4,g4] [e4,g4,c5]!2 ~@4 [e4,g4,c5] ~ [e4,g4,c5]!2 ~@2", // C Em C
  G: "~ e4 [e4,g4,b4]!2 ~ e4 [e4,g4,b4] ~@4 [f#4,a4,d5] ~ f#4 [f#4,a4,d5] ~", // Em D
  H: "~@2 e4 [e4,g4,c5] ~ e4 [e4,g4,c5] ~@2 f#4 [f#4,a4] [f#4,a4,d5] ~ f#4 [f#4,a4] [f#4,a4,d5]", // C F#m D F#m D
  I: "[~@2 e4 [e4,g4,b4] ~@2 [e4,g4,b4]!2 ~@2 [f#4,a4,d5] ~@3 [e4,g4,c5]@4 ~ g4 [e4,g4,c5]!2 ~ e4 [g4,c5] [e4,g4,c5] ~ e4 [g4,c5] [e4,g4,c5] ~@2]/2", // Em D C C5 C C5 C
  J: "~@3 [e4,b4] [e4,g4] ~ [e4,g4,b4] ~@3 [f#4,a4] [f#4,a4,d5]!2 ~@2 [a4,d5]", // E5 Em F#m D D5
  K: "~ e4 g4 [e4,g4,c5] ~ e4 [g4,c5] ~@2 f#4 a4 [f#4,a4,d5] ~ f#4 a4 [f#4,a4,d5]", // C C5 D
  L: "[~@2 [e4,g4,b4]!2 ~ e4 [e4,g4,b4] ~@4 [f#4,a4,d5] ~@2 [e4,g4,c5]@4 e4 [e4,g4,c5] ~ e4 g4 ~@3 e4 ~ [e4,g4,c5] ~@3]/2", // Em D C
})).s("gm_acoustic_guitar_steel").gain(0.5)

// chords · acoustic guitar steel · "STEEL GTR" · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@3 A ~ A ~ A ~ B C D E F ~ G H I J ~@2 F ~ G H I J ~@2 F ~ G H I J ~@2 F ~ G H I J ~@2 F ~ G H I J ~@2 F ~ G H I J
  ~@2 B C D E B C D E F ~ G H I J ~@2 F ~ G H I J ~@2 F ~ G H I J ~@2 F ~ G H I J ~@2 B C D E B C D E F ~ G H I J ~@2 F
  ~ G H I J ~@2 F ~ G H I J ~@3
>`.pickRestart({
  A: "~@3 [e4,g4,b4] ~@12", B: "~@3 e4 ~@12", C: "~@3 e4!2 ~@11", D: "~@3 b4 e4 ~@11", E: "~@3 c5 ~@7 [e4,g4,c5] ~@4",
  F: "~@10 f#4 ~@5", G: "~@5 e4 ~@10", H: "~@2 e4 ~@13", I: "~@9 f#4 ~@4 f#4!2", J: "~@10 f#4 ~@3 f#4 ~",
})).s("gm_acoustic_guitar_steel").gain(0.29)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~ 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 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 B A B A B A B ~
>`.pickRestart({
  A: "~@2 e4 ~@2 d4 ~@2 d4 ~ d4 ~ d4 e4 ~@2", B: "~@2 e4 ~@2 d4 ~@2 d4 ~ d4 ~ e4 ~@3",
})).s("gm_electric_guitar_muted").gain(0.55)

// other · alto sax
const alto_sax = note("<~@20 A ~@39 A ~@15 A ~@23 A ~@15 A ~@7 A ~@7 A ~>".pickRestart({
  A: "~@8 b4@2 b4@2 a4 g4 e4 d4",
})).s("gm_alto_sax").gain(0.54)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@15 B A@7 B A@7 B A@7 B A@7 B A@7 B A@15 B A@7 B A@9 B A@21 B A@7 B A@7 B A@4 ~
>`.pickRestart({
  A: "x!2", B: "x ~ x!2",
})).gain(0.57)

// drums · snare
const snare = s("sd").struct("<A B@7 C B@3 C B@15 C B@31 C B@3 C B@3 C B@19 C B D B@5 C B@7 C B@28 ~>".pickRestart({
  A: "~@11 x!2 ~@3", B: "~ x ~ x", C: "~@4 x ~@7 x ~ x!2", D: "~ x ~@2",
})).gain(0.64)

// drums · clap
const clap = s("cp").struct(`<
  ~@8 A ~@3 A ~@3 A ~@7 A ~@3 A ~@3 A ~@7 A ~@7 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@7 A ~@7 A ~@7 A ~@7 A ~@3 A ~@3 A ~@7
  A ~@7 A ~@5
>`.pickRestart({
  A: "~ x ~ x",
})).gain(0.43)

// drums · hihat
const hihat = s("hh").struct("<~ [x!8]!131 [x!7 ~] ~>").gain(0.57)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@8 A ~@3 A ~@3 A ~@7 A ~@7 A ~@3 B ~@3 A ~@3 B ~@3 A ~@7 A ~@7 A ~@3 A ~@3 A ~@7 A ~@9 C ~@13 A ~@7 A ~@7 A ~@7 A ~@5
>`.pickRestart({
  A: "~@3 x ~@4", B: "~@7 x", C: "~@2 x!2",
})).gain(0.43)

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

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@2 A@6 ~@6 B@3 ~ B@3 ~ B@3 ~ B@2 ~@2 B@3 ~ B@3 ~ B@3 ~ B@3 ~ B@3 A B@2 ~@2 B@3 ~ B@2 ~@10 B@3 A B@3 ~ B@3 ~ B@2 ~@2
  B@2 ~@2 B ~ A ~ B@2 ~@2 B@3 ~@9 B@3 ~ B@3 ~ B@3 ~ B@3 ~ B@3 ~ B@3 ~
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x",
})).gain(0.64)

stack(
  bass, brass_section, brass_section_2, acoustic_guitar_steel, acoustic_guitar_steel_2, electric_guitar_muted, alto_sax,
  kick, snare, clap, hihat, open_hat, crash, tambourine
)

More by Kool & The Gang