Strudelify

Jungle Funk

Leo P

KeyC minorTempo130 bpm
0:00/0:00
// Jungle Funk — Leo P
// 130 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5467367; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 64 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · baritone sax · "Baritonsaxophon"
const baritone_sax = note(`<
  A B A B A B A B A B A B A B A B ~ C D E D F D G D F D E D F D G H@12 I@2 J K L M L N L M L N L M O N O M O P
>`.pickRestart({
  A: "c2@3 ~ c2@3 ~ c2@3 ~ c2@3 ~", B: "c2@3 ~ c2@2 ~ c2 c2@2 d2@2 eb2@2 f2@2", C: "~@12 eb2 f2 g2@2",
  D: "c2@2 g2 c3 ~@12", E: "~@2 bb2 c3 ~@10 g2@2", F: "~@2 bb2 c3 ~@8 eb2 f2 g2@2", G: "~@2 bb2 c3 ~@12",
  H: "c2@2 g2 c3 ~@8 eb3 b2 g2@2", I: "c2@2 g2 c3 eb3 b2 g2@2 c2@2 g2 c3 eb3 b2 g2@2",
  J: "eb3 b2 g2 c2 eb3 b2 g2 c2 eb3 b2 g2 c2 eb3 b2 g2 c2", K: "c3 bb2 c3 bb2 c3 bb2 c3 bb2 c3 bb2 c3 bb2 c3 bb2 g2@2",
  L: "c2@2 g2 c3 ~@6 eb3 d3 c3 b2 g2 eb2", M: "c2@3 ~@3 eb2@3 ~ g2@2 eb2 ~@3", N: "c2@3 ~@3 eb2@3 ~@3 c3 b2 g2 eb2",
  O: "c2@2 ~@8 eb3 d3 c3 b2 g2 eb2", P: "c2@3 ~ c2 ~ eb2@3 ~ f2 gb2 g2 bb2 c3@2",
})).s("gm_baritone_sax").gain(0.4)

// other · baritone sax · "Baritonsaxophon" · soft notes
const baritone_sax_soft = note("<~@24 A ~ A ~ A ~ A ~ B@12 ~@20>".pickRestart({
  A: "~@3 c3@2 c3@2 c3", B: "~@3 c3@2 c3 ~@2",
})).s("gm_baritone_sax").gain(0.2)

// drums · kick
const kick = s("bd").struct("<[x!4]!16 ~@10 [x!4]!14 ~@8 [x!4]!13 [x ~ x!3 ~ x ~] [x!4] [x ~ x!3 ~ x ~]>").gain(0.3)

// drums · rim
const rim = s("rim").struct("<~@16 [~ x ~ x]!45 [~@2 x!3 ~ x ~] [~ x ~ x] [~@2 x!3 ~ x ~]>").gain(0.3)

// drums · snare
const snare = s("sd").struct("<[~ x ~@2]!16 ~@48>").gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<[~ x ~@6]!16 [x!16]!48>").gain(0.3)

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

stack(baritone_sax, baritone_sax_soft, kick, rim, snare, hihat, tambourine)