Strudelify

Shake That Monkey

Quick Pick

KeyF majorTempo152 bpm
0:00/0:00
// Shake That Monkey — Quick Pick
// 152 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 199 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(152/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 · fretless bass · "FRETLESS"
const bass = note(`<
  ~@4 A@2 B@2 C@2 D E A@2 B@2 C@2 F E G@2 D E C@2 D E H I H J A@2 B@2 K@2 B@2 C@2 D E A@2 B@2 C@2 F E H I H J A@2 B@2 L
  M I N O P J N L M I Q@4 R@8 S@5 ~@4 A@2 B@2 K@2 B@2 T@2 U@2 V@2 W@2 G@2 D E C@2 D E H I H J A@2 B@2 L M I N O P J N L
  M I Q@4 R@8 S@5 X Y Z AA X Y Z AB X Y Z AB Z AB A@2 B@2 C@2 F E AC@2 F E AC@2 F E AC@2 F E X Y Z AA X Y Z AB X Y AD ~
  AE
>`.pickRestart({
  A: "[d2@3 ~@11 c3@4 d3@2 ~@4 f2@2 g2@2 a2@2 ~@2]/2", B: "[d3 ~@6 c3@2 d3 ~@2 f2 g2 a2@2]/2",
  C: "[d2@2 ~@4 d3@2 ~@6 c3@4 d3@2 ~@4 f2@2 g2@2 a2@3 ~]/2", D: "d2@6 d3@4 ~@4 c3 ~",
  E: "c3 ~ d3 ~@5 f2@2 g2 ~ a2@2 ~@2", F: "d2@2 ~@4 d3@4 ~@4 c3 ~",
  G: "[d2@3 ~@3 d3@2 ~@6 c3@4 d3@2 ~@4 f2@2 g2@2 a2@3 ~]/2", H: "c3@7 ~", I: "c3@13 ~ g2@2", J: "c3@7 g2",
  K: "[d2 ~@6 c3@2 d3 ~@2 f2 g2 a2 ~]/2", L: "d3@13 ~ a2!2", M: "d3 ~ d3@2 ~@2 a2!2 d3 ~ d3@3 ~ g2!2",
  N: "c3 ~ c3@2 ~ g2 ~ g2 c3 ~ c3@3 ~ g2@2", O: "d3@14 a2!2", P: "d3 ~ d3@3 ~ a2!2 d3 ~ d3@3 ~ g2@2",
  Q: "[c3 ~ c3@3 ~ a2 ~ c3 ~ c3@3 ~ bb2@30 f2@2 bb2@18]/4", R: "[~@6 f2 bb2@15 f2 c3@7 a2 d3@7 f2 bb2@15 f2 bb2@9]/8",
  S: "[~@6 f2 bb2@15 f2 c3@7 a2 d3@7 ~@2]/5", T: "[d3@6 f3@6 e3@2 d3@17 ~, d2 ~@15]/2", U: "[d3@3 f3@3 e3 d3@7 a2@2]/2",
  V: "[d3@6 f3@6 e3@2 d3@17 ~]/2", W: "[d3@6 f3@6 e3@2 ~@2 c3 ~ d3@4 ~@2 f2@2 g2 ~ a2@2 ~@2, ~@7 d3@2 ~@7]/2",
  X: "f3@15 ~", Y: "e3@15 ~", Z: "d3@14 c3 ~", AA: "c3@2 d3 ~@13", AB: "c3@2 d3@2 ~@6 d2 ~@5",
  AC: "[~@6 d3@2 ~@6 c3@4 d3@2 ~@4 f2@2 g2@2 a2@3 ~]/2", AD: "d3@6 a2 d3", AE: "d3@6 f3@5 ~ e3@2 d3@2",
})).s("gm_fretless_bass").gain(0.41)

// chords · kalimba
const kalimba = note(`<
  A ~ B ~ C ~ D ~ E ~ F ~ G ~ H ~ I ~ H ~@5 J ~ F ~ K@4 C ~ D ~ C ~ D ~ E ~ F ~ G ~ H ~ I ~ H ~ L@4 C ~ D ~ M ~@27 N O P
  Q R S T U V O P W C ~ D ~ E ~ F ~ M ~@3 J ~ F ~ L@4 C ~ D ~ M ~@27 X Y ~@2 Z AA ~@2 Z AA ~@4 AB ~ H ~ I ~ H ~ AC ~ H ~
  AC ~ H ~ AC ~ H ~ X Y ~@2 Z AA ~@2 Z AA ~@2 AD
>`.pickRestart({
  A: "d5 ~ d5 ~@3 f5@6 e5 ~ d5 ~", B: "d5 ~ d5 ~@3 [c5,f5]@6 [b4,e5]@2 [a4,d5] ~",
  C: "[a4,d5] ~ d5 ~@3 [c5,f5]@6 b4@2 d5 ~, ~@12 e5 ~@3", D: "[a4,d5] ~ d5 ~@3 [c5,f5]@6 [b4,e5]@2 d5 ~",
  E: "[a4,d5] ~ [a4,d5] ~@3 [c5,f5]@5 ~ b4@2 d5 ~, ~@12 e5 ~@3", F: "[a4,d5] ~ [a4,d5] ~@3 [c5,f5]@6 [b4,e5]@2 d5 ~",
  G: "[d4,a4] ~ a4 ~@3 [f4,c5]@5 ~ [e4,b4]@2 [d4,a4] ~", H: "[d4,a4] ~ [d4,a4] ~@3 [f4,c5]@6 [e4,b4]@2 [d4,a4] ~",
  I: "[d4,a4] ~ a4@2 ~@2 [f4,c5]@6 [e4,b4]@2 a4@2, ~@2 d4 ~@11 d4 ~", // D5 F5 E5
  J: "d5 ~ [a4,d5] ~@3 [c5,f5]@5 ~ b4@2 d5 ~, ~@12 e5 ~@3", K: "[c3,c4]/4", L: "[c2,c3]/4", M: "a4 ~@15",
  N: "[a4,d5] ~ [a4,d5,e5,a5] ~@3 [c5,f5]@4 ~@2 [b4,e5] ~ [a4,d5] ~, ~@6 [d5,g5] ~@3 [c5,f5]@4 ~@2", // D5 Asus4 F5 E5 D5 G5 F5
  O: "~@2 [e5,a5] ~ [d5,g5] ~ [c5,f5] ~ [d5,g5]@2 [c5,f5] ~ [b4,e5] ~ [c5,f5] ~", // A5 G5 F5 G5 F5 E5 F5
  P: "[a4,d5] ~ [c5,f5]@2 ~@2 [d5,g5]@2 ~@2 [e5,a5]@2 [gb4,b4,e5]@2 [e4,a4,b4,d5,e5] ~, ~@2 [a4,d5] ~@3 [g4,c5,f5]@6 ~@4", // D5 F5 G5 A5 Esus2 Esus4 D5 Csus4
  Q: "~@2 [c5,f5] ~@3 [d5,g5] ~ [c5,f5] ~ [b4,e5]@2 [a4,d5] ~ [a4,b4,d5,e5] ~", // F5 G5 F5 E5 D5 Asus4
  R: "[e4,a4,d5] ~ [a4,b4,d5,e5] ~@3 [d5,g5] ~@3 [b4,e5]@2 [gb4,b4,e5]@2 [a4,b4,d5,e5] ~, ~@3 [g4,c5]@3 ~@2, ~@3 f5 ~@4", // Dsus2 Asus4 G5 E5 Esus2 Asus4 C5
  S: "[c5,f5] ~ [b4,e5] ~ [a4,d5] ~ [b4,e5] ~@3 [a4,d5] ~ [g4,c5] ~ [a4,d5] ~", // F5 E5 D5 E5 D5 C5 D5
  T: "[e4,a4,d5] ~ [a4,c5,d5,f5] ~@3 [d5,g5]@2 ~@2 [e5,a5]@2 [gb4,b4,e5]@2 [c5,f5]@2, ~@6 [g4,c5,f5]@6 ~@2 [a4,d5] ~", // Dsus2 Dm7 G5 A5 Esus2 F5 Csus4 D5
  U: "~@2 [b4,e5]@2 ~@2 [c5,f5] ~ [d5,g5] ~ [c5,f5] ~ [b4,e5] ~ [c5,f5] ~", // E5 F5 G5 F5 E5 F5
  V: "[e4,a4,d5] ~ [a4,d5,e5,a5] ~@3 [c5,f5]@4 ~@2 [b4,e5] ~ [a4,d5] ~, ~@6 [d5,g5] ~@3 [c5,f5]@4 ~@2", // Dsus2 Asus4 F5 E5 D5 G5 F5
  W: "~@2 [c5,f5] ~@3 [d5,g5] ~ [c5,f5] ~ e5@2 [a4,d5] ~ [a4,b4,d5,e5] ~, ~@6 b4 ~", X: "f5 ~ f5@2 ~@2 g5@5 ~ a5 ~@3",
  Y: "a5 ~ a5@2 ~@2 c6@5 ~ a5 ~@3", Z: "f5 ~ f5 ~@3 g5@6 a5@2 ~@2", AA: "a5 ~ a5@2 ~@2 c6@6 a5 ~@3",
  AB: "d4 ~ a4 ~@3 [f4,c5]@5 ~ [e4,b4]@2 [d4,a4] ~", AC: "~ a4 ~ [f4,c5]@3 [e4,b4] a4, ~@2 d4 ~@11 d4 ~",
  AD: "d5@2 ~@2 d5 ~ f5@3 ~ f5@2 e5@2 d5@2",
})).s("gm_kalimba").gain(0.36)

// chords · kalimba · soft notes
const kalimba_soft = note(`<
  ~@2 A ~ B ~ B ~ C ~ C ~ D ~@11 C ~ C ~@5 B ~ B ~ B ~ B ~ C ~ C ~ D ~@11 B ~ B ~@31 E ~ F ~ F ~@3 E ~ B ~ B ~ C ~ C ~@5
  C ~ C ~@5 B ~ B ~@43 D ~@32
>`.pickRestart({
  A: "a4 ~ a4 ~@13", B: "~@2 a4 ~@11 a4 ~", C: "~@14 a4 ~", D: "~@2 d4 ~@13", E: "e4 ~ e4 ~@13", F: "~@2 e4 ~@11 e4 ~",
})).s("gm_kalimba").gain(0.2)

// chords · percussive organ · "GTHARMONIC"
const percussive_organ = note(`<
  ~@15 A ~@4 B C D E ~@4 F@4 ~@20 F@4 ~@4 G@2 H@2 I@2 J@2 K@2 L@2 ~@36 B C D E ~@4 F@4 ~@4 G@2 H@2 I@2 J@2 K@2 L@2 ~@31
  M ~@31
>`.pickRestart({
  A: "~@6 a5 c6 d6 c6 a5 d6 c6 a5 f5 ~", B: "[d6,a6] ~@5 [d6,f6,a6] ~@7 [d6,f6,a6] ~, f6 ~@7",
  C: "~@6 [d6,f6,a6]@5 ~ [e6,g6]@4", D: "[d6,f6,a6]@3 ~@3 [d6,f6,a6]@2 ~@8",
  E: "~@2 [d6,f6,a6]@3 ~@3 [d6,f6,a6]@4 [e6,g6]@3 ~", // Dm Em
  F: "[~@20 [c5,g5,c6] ~ [g5,c6] ~@13 [c5,g5,c6] ~ [g5,c6] ~@13 c6@2 g5@2 c5@2 ~@6, c3@31 ~, ~@16 g3@45 ~@3, ~@11 c5 ~@4 c4@15 ~, ~@19 c5 ~@12]/4", // C5
  G: "[[f4,a4,d5,f5]@31 ~]/2", H: "[[c4,e4,g4,c5,e5]@31 ~, b3 ~@15]/2", I: "[[d4,f4,a4,d5,f5]@31 ~, c4 ~@31]/2",
  J: "[[c4,e4,g4,c5,e5]@31 ~, [b4,d5] ~@15]/2", K: "[[d4,f4,a4,d5,f5]@31 ~, c4@3 ~@29]/2",
  L: "[[c4,e4,g4,c5,e5]@29 ~@3, b3 ~@15]/2", M: "~@4 a4@3 ~@5 a4@3 ~",
})).s("gm_percussive_organ").gain(0.41)

// other · guitar harmonics · "GTHARMONIC"
const guitar_harmonics = note("<~ A@2 ~@86 A@2 ~@10 A@2 ~@96>".pickRestart({
  A: "[~@4 a2@15 ~@13]/2",
})).s("gm_guitar_harmonics").gain(0.41)

// chords · percussive organ · "ORGAN 2"
const percussive_organ_2 = note(`<
  ~@7 A ~@3 B C@2 ~@3 D@2 E@5 ~@6 F@2 ~@3 A ~@3 A ~@3 B C@2 ~@3 D@2 ~@3 F@2 ~@3 G@2 ~@34 A ~@3 A ~@3 A ~ H ~ I@5 ~@6 F@2
  ~@3 G@2 ~@44 A ~@3 A ~@3 A ~@3 A ~@3 A ~@13
>`.pickRestart({
  A: "~ [d4,f4,f5]@3", B: "[d5,a5,c6]", C: "[~@3 c7@3 ~@2]/2", D: "[~@2 [a5,d6]@7 ~@7]/2",
  E: "[~@15 [d5,f5,a5]@21 ~@10 [d5,f5,a5]@24 ~@10]/5", F: "[c4,e5,g5]/2", G: "[~ [d4,f4,f5]@5 ~@2]/2", H: "c7@3 ~",
  I: "[[d5,a5,c6]@15 [d5,a5]@15 ~@16 [d5,f5,a5]@24 ~@10, ~@15 f5@21 ~@44]/5", // D7 D5 Dm
})).s("gm_percussive_organ").gain(0.51)

// drums · kick
const kick = s("bd").struct(`<
  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 C@4 A B A B A B A B A B A B A B A B A B A B C@4 A B A B D C D
  C D E D F D F D F D F D F D F D@3 F@2 D F D F@2 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 C@4 A B A B D
  C D C D E D F D F D F D F D F D F D@3 F@2 D F D F@2 A B A B A G H G A G H G H G 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 G H G A G I ~@2
>`.pickRestart({
  A: "x ~@6 x", B: "x ~@3 x!2 ~@2", C: "x ~@3 x ~@2 x", D: "x!2", E: "x ~@2 x!2 ~@2 x", F: "x ~@2 x!2 ~@3",
  G: "x ~@3 x!2 ~ x", H: "x", I: "x ~@2 x",
})).gain(0.46)

// drums · rim
const rim = s("rim").struct(`<
  A B C D C A E A C A E A C A E A C A E A C A E A C A E A@2 C A@2 C A E A C A E A C A E A C A E A C A E A@2 C A@2 C A E
  A@2 B C@3 A E A C A E A C A E A C A E A C A E A C A E C A B C D C A E A C A E A F G F G H I J A C A E A C A E A@2 C
  A@2 C A E A@2 B C@3 A E A C A E A C A E A C A E A C A E A C A E C@2 A E A C A E C@2 A E C K C@2 A E A C A E A C A E A
  C A E A C A E A C A E A C A E C@2 A L ~@2
>`.pickRestart({
  A: "x!8", B: "x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~", C: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", D: "x!3 ~ x!4",
  E: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~", F: "~ x!2 ~@2 x!2 ~", G: "~ x!2 ~ x!4", H: "x!3 ~ x!2 ~ x", I: "~ x ~ x!5",
  J: "~ x ~ x ~ x ~ x", K: "~@2 x!3 ~ x ~ x ~ x ~ x ~ x ~", L: "x!3 ~ x ~ x ~ x ~ x ~ x ~ x ~",
})).gain(0.26)

// drums · snare
const snare = s("sd").struct(`<
  ~@2 A B C@3 D C@3 D C@6 B C@4 D C@3 D C@3 D C@3 D C@3 D C@3 D C@6 B C@4 D C@3 D C@26 E@2 ~@2 A B C@3 D C@3 D ~@7 C@4 D
  C@3 D C@3 D C@3 D C@26 E@2 C@20 B C@3 B C@3 B C@3 B C@11 F ~@2
>`.pickRestart({
  A: "~@6 x!2", B: "~@2 x ~@3 x!2", C: "~ x ~ x", D: "~@2 x!2 ~@2 x!2", E: "~@3 x", F: "~@2 x ~@4 x",
})).gain(0.51)

// drums · clap
const clap = s("cp").struct("<A@4 ~@56 B@12 A@6 B@2 A@6 B@2 A@4 ~@15 B ~@16 B@12 A@6 B@2 A@6 B@2 ~@47>".pickRestart({
  A: "~ x ~ x", B: "~@3 x",
})).gain(0.51)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@3 A ~@3 B ~@3 B ~@7 A ~@3 B ~@3 C B D B ~@2 E ~ B ~@3 B ~@3 B ~@7 A B D B ~@2 F ~ B ~ B ~ B ~ B ~ B ~ B ~ A ~@3 F ~
  B ~@3 A ~ A ~@3 F ~@3 A ~@3 B ~@3 B ~@7 A ~@3 B ~@3 C B D B ~@2 E ~ B ~ B ~ B ~ B ~ B ~ B ~ A ~@3 F ~ B ~@3 A ~ A ~@3
  F ~@21 A ~@3 A ~@3 A ~@3 A ~@13
>`.pickRestart({
  A: "~@6 x!2", B: "~@3 x", C: "~@12 x ~ x!2", D: "~@5 x!2 ~", E: "~@4 x!3 ~", F: "~@2 x!2",
})).gain(0.41)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct(`<
  ~ A ~@3 A ~@3 A ~@3 A ~ A ~ A ~ A ~ A ~@3 A ~@4 B ~@6 A ~@3 A ~@3 A ~ A ~ A ~ A ~@2 B ~@2 C ~@31 A ~@3 A ~@3 A ~@9 A ~
  A ~@3 A ~@4 B ~@48 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@13
>`.pickRestart({
  A: "~@4 x!2 ~@2", B: "~@13 x ~@2", C: "~@5 x ~@2",
})).gain(0.26)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~ A ~ B ~ A ~@3 A ~@3 A ~ A ~ A ~ A ~ A ~@3 A ~ C ~@5 A ~@3 A ~@3 A ~@3 A ~ A ~ A ~ A ~@5 A ~@3 D ~ D ~ D ~ D ~ D ~ E
  ~@3 F ~ G ~@3 G ~ G ~ H ~@3 A ~ B ~ A ~@3 A ~@3 I ~ I ~ I ~ I ~ A ~@3 A ~ C ~@5 A ~@3 D ~ D ~ D ~ D ~ D ~ E ~@3 F ~ G
  ~@3 G ~ G ~ H ~@17 A ~ J ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@13
>`.pickRestart({
  A: "~@6 x!2", B: "~ x!2 ~", C: "~@4 x!2 ~@2", D: "~@7 x", E: "~@5 x ~@2", F: "~@2 x ~@2 x ~@10", G: "~@5 x ~@2 x ~@7",
  H: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~", I: "~@4 x!4", J: "~@2 x!2 ~@2 x!2",
})).gain(0.26)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@3 A ~@23 B ~@49 C ~@3 C ~ C ~ D ~@5 A ~@23 B ~@25 C ~@3 C ~ C ~ D ~@5 E ~@3 F ~@3 F ~ F ~@23 E ~@3 F ~@5
>`.pickRestart({
  A: "~ x!2 ~@3 x!2", B: "~@3 x ~@4", C: "~ x ~@6", D: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~", E: "~ x ~ x", F: "~@3 x",
})).gain(0.46)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@7 A ~@6 B ~@8 A ~@3 A B ~@2 A ~@7 A ~@7 A ~@3 A ~@3 A ~@17 A ~ A ~@6 C ~@3 D A ~@3 A ~@10 B ~@8 A ~@3 A ~@3 A
  ~@11 A ~@7 A ~@15 A ~@13 A ~@11 A ~@3 A ~@3 A ~ E ~@2
>`.pickRestart({
  A: "x", B: "~@3 x", C: "~@2 x!2", D: "~ x ~@2", E: "~@7 x",
})).gain(0.41)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@149 [~@2 x ~@2 x ~@2 x ~@3 x ~ x ~] ~@49>").gain(0.2)

// drums · vibraslap
const vibraslap = s("vibraslap:0").struct("<~@169 [~ x ~@2] ~@29>").gain(4.21)

stack(
  bass, kalimba, kalimba_soft, percussive_organ, guitar_harmonics, percussive_organ_2, kick, rim, snare, clap, low_tom,
  low_tom_soft, mid_tom, high_tom, crash, crash_soft, vibraslap
)