Strudelify

Get Down Tonight

KC and The Sunshine Band

KeyF majorTempo112 bpm
0:00/0:00
// Get Down Tonight — KC and The Sunshine Band
// 112 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 12 "Acoustic Bass" acoustic bass (copy of ch 11 "Slap Bass 2" slap bass 2); ch 16 "Trumpet" trumpet (copy of ch 15 "Brass 1" brass section)
// note: Full arrangement: all 104 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(112/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
const bass = note(`<
  ~ A B C D A E C F G H G H G H G H I J K L I J K L G H G H G H G H I J K L I J K L G H G H G H G H I J K L I J K L G H
  G H G H G H I J K L I J K L G H G H G H G H I J K L I J K L G H G H G H G H I J K L I J M
>`.pickRestart({
  A: "f1@12 c2 eb2 g2@2", B: "f2@3 eb2@3 c2@8 eb2@2", C: "f2@11 ~ f2 eb2 c2@2", D: "f2@14 eb2 c2",
  E: "f2@3 eb2@2 ~ c2@8 eb2@2", F: "f2@15 ~", G: "f1!2 ~@2 f1!2 ~ f1 f1@2 ~@2 f1@2 ~@2", H: "f1@2 ~@2 f1@2 ~ f1!2 ~@7",
  I: "c2@2 ~@5 c2 c2@2 ~@6", J: "bb1@2 ~@5 bb1 bb1@2 ~@6", K: "f1@2 ~ eb2@2 ~ f2@2 ~@4 f2 eb2 c2@2",
  L: "f1@2 ~ eb2@2 ~ f2@2 ~@2 f2 g2 a2@3 ~", M: "f1 ~ f1!2 ~@12",
})).s("gm_slap_bass_2").gain(0.72)

// other · electric guitar muted · "Muted Gtr"
const electric_guitar_muted = note(`<
  ~ A@16 B C A@2 B C A@10 B C A@2 B C A@10 B C A@2 B C A@10 B C A@2 B C A@10 B C A@2 B C A@10 B C A@2 B C ~
>`.pickRestart({
  A: "eb3!16", B: "c3!16", C: "bb2!16",
})).s("gm_electric_guitar_muted").gain(0.48)

// chords · synth strings 1 · "Syn Strings 1"
const synth_strings_1 = note(`<
  ~ A@16 B@2 C@2 B@2 C@2 D E D E D E D E B@2 C@2 B@2 C@2 D E D E D E D E B@2 C@2 B@2 C@2 D E D E D E D E B@2 C@2 B@2 C@2
  D E D E D E D E B@2 C@2 B@2 C@2 D E D E D E D E B@2 C@2 B@2 F
>`.pickRestart({
  A: "[[bb3,eb4] [a3,c4] [bb3,eb4] [a3,c4] [bb3,eb4] [a3,c4] [bb3,eb4] [a3,c4], f4]/8", // Eb5 Am Eb5 Am Eb5 Am Eb5 Am
  B: "[[g3,c4,eb4] [f3,d4], bb3]/2", C: "[f4@10 eb4@2 f4@13 eb4@2 ~ f4@4, [a3,c4]]/2", D: "[bb3,eb4]", E: "[a3,c4]",
  F: "f4 ~ f4 f4@2 ~@11",
})).s("gm_synth_strings_1").gain(0.48)

// drums · kick
const kick = s("bd").struct("<~ [x!4]!8 [x ~@6 x!2 ~@7]!94 [x ~ x!2 ~@12]>").gain(0.8)

// drums · snare
const snare = s("sd").struct("<~@9 A@15 B A@31 B A@15 B A@15 B A@14 C>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~ x!2", C: "x ~ x!2 ~@12",
})).gain(0.8)

// drums · low tom
const low_tom = s("lt").struct("<~@8 A ~@7 B ~@15 B ~@15 B ~@15 B ~@15 B ~@15 B ~@7>".pickRestart({
  A: "~@8 x!2 ~ x!4 ~", B: "~@14 x!2",
})).gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<[x!4] [x ~ x!3 ~ x!2 ~@2 x!2 ~@2 x!2]!8 [x!15 ~]!94 ~>").gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@8 A ~@7 B ~@15 B ~@15 B ~@15 B ~@15 B ~@15 B ~@7>".pickRestart({
  A: "x ~ x!2 ~ x!2 ~@9", B: "~@12 x!2 ~@2",
})).gain(0.8)

// drums · open hat
const open_hat = s("oh").struct("<~ [~@2 x!2]!8 [~@15 x]!94 ~>").gain(0.8)

// drums · china
const china = s("cr").struct(`<
  ~@9 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@6
>`.pickRestart({
  A: "x",
})).gain(0.8)

// drums · ride bell
const ride_bell = s("rd").struct("<~@17 A@8 ~@8 A@8 ~@8 A@8 ~@8 A@8 ~@8 A@8 ~@8 A@6 ~>".pickRestart({
  A: "~ x ~ x ~ x ~ x",
})).gain(0.8)

// drums · cowbell
const cowbell = s("cb").struct("<~@9 [x!4]!94 [x ~ x!2 ~@12]>").gain(0.8)

stack(
  bass, electric_guitar_muted, synth_strings_1, kick, snare, low_tom, hihat, mid_tom, open_hat, china, ride_bell,
  cowbell
)

More by KC and The Sunshine Band